From 36be8c15b5abb9bf6220e67c191010bdbd039e07 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Thu, 2 Jan 2020 19:01:40 +0800 Subject: [PATCH 01/17] =?UTF-8?q?try:=20balances,=20staking,=20support=20-?= =?UTF-8?q?=20compile=20=E2=9C=94=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile => .maintain/Dockerfile | 0 {ci => .maintain/ci}/script.sh | 0 CONTRIBUTING.adoc | 62 - Cargo.lock | 8597 ++++++++--------- Cargo.toml | 33 +- bin/node/cli/Cargo.toml | 140 + {node => bin/node}/cli/bin/main.rs | 35 +- bin/node/cli/browser-demo/.gitignore | 1 + bin/node/cli/browser-demo/README.md | 9 + bin/node/cli/browser-demo/build.sh | 3 + bin/node/cli/browser-demo/favicon.png | Bin 0 -> 10338 bytes bin/node/cli/browser-demo/index.html | 39 + bin/node/cli/browser-demo/ws.js | 148 + {node => bin/node}/cli/build.rs | 20 +- .../node}/cli/doc/shell-completion.adoc | 0 bin/node/cli/res/flaming-fir.json | 111 + {node => bin/node}/cli/src/browser.rs | 61 +- bin/node/cli/src/chain_spec.rs | 403 + bin/node/cli/src/cli.rs | 208 + {node => bin/node}/cli/src/factory_impl.rs | 158 +- {node => bin/node}/cli/src/lib.rs | 20 +- bin/node/cli/src/service.rs | 640 ++ bin/node/runtime/Cargo.toml | 125 + {node => bin/node}/runtime/build.rs | 5 +- {node => bin/node}/runtime/src/constants.rs | 39 +- bin/node/runtime/src/impls.rs | 364 + bin/node/runtime/src/lib.rs | 786 ++ boot-conf/icefrog/example.json | 17 - boot-conf/testnet/1.json | 6 - boot-conf/testnet/2.json | 6 - boot-conf/testnet/3.json | 6 - boot-conf/testnet/4.json | 6 - boot-conf/testnet/5.json | 6 - boot-conf/testnet/alice.json | 9 - boot-conf/testnet/bob.json | 9 - core/cli/Cargo.toml | 47 - core/cli/src/error.rs | 64 - core/cli/src/execution_strategy.rs | 36 - core/cli/src/informant.rs | 84 - core/cli/src/informant/display.rs | 154 - core/cli/src/lib.rs | 1121 --- core/cli/src/params.rs | 1036 -- core/cli/src/traits.rs | 44 - core/ethash/Cargo.toml | 29 - core/ethash/src/dag.rs | 52 - core/ethash/src/lib.rs | 360 - core/ethash/src/miller_rabin.rs | 149 - core/fly-client/Cargo.toml | 13 - core/fly-client/src/lib.rs | 1 - core/merkle-mountain-range/Cargo.toml | 21 - core/merkle-mountain-range/src/common.rs | 131 - core/merkle-mountain-range/src/lib.rs | 17 - .../merkle-mountain-range/src/merkle_proof.rs | 80 - core/merkle-mountain-range/src/mmr.rs | 159 - core/merkle-mountain-range/src/tests/mod.rs | 73 - .../src/tests/support.rs | 41 - core/merkle-patricia-trie/Cargo.toml | 31 - core/merkle-patricia-trie/benches/trie.rs | 99 - core/merkle-patricia-trie/src/db.rs | 52 - core/merkle-patricia-trie/src/error.rs | 38 - core/merkle-patricia-trie/src/lib.rs | 75 - core/merkle-patricia-trie/src/nibbles.rs | 185 - core/merkle-patricia-trie/src/node.rs | 92 - core/merkle-patricia-trie/src/proof.rs | 52 - core/merkle-patricia-trie/src/tests.rs | 658 -- core/merkle-patricia-trie/src/trie.rs | 1057 -- core/sr-eth-primitives/Cargo.toml | 48 - core/sr-eth-primitives/src/encoded.rs | 12 - core/sr-eth-primitives/src/error.rs | 52 - core/sr-eth-primitives/src/header.rs | 510 - core/sr-eth-primitives/src/lib.rs | 22 - core/sr-eth-primitives/src/pow.rs | 311 - core/sr-eth-primitives/src/receipt.rs | 202 - frame/balances/Cargo.toml | 37 + {srml => frame}/balances/src/lib.rs | 426 +- {srml => frame}/balances/src/mock.rs | 129 +- {srml => frame}/balances/src/tests.rs | 463 +- frame/staking/Cargo.toml | 54 + frame/staking/reward-curve/Cargo.toml | 17 + frame/staking/reward-curve/src/lib.rs | 425 + frame/staking/reward-curve/src/log.rs | 70 + frame/staking/reward-curve/tests/test.rs | 44 + frame/staking/src/inflation.rs | 7 + frame/staking/src/lib.rs | 1810 ++++ frame/staking/src/migration.rs | 88 + {srml => frame}/staking/src/mock.rs | 423 +- frame/staking/src/slashing.rs | 824 ++ frame/staking/src/tests.rs | 2559 +++++ frame/support/Cargo.toml | 24 + {srml => frame}/support/src/lib.rs | 10 +- node/cli/Cargo.toml | 137 - node/cli/res/icefrog.json | 250 - node/cli/src/chain_spec.rs | 357 - node/cli/src/cli.rs | 212 - node/cli/src/service.rs | 321 - node/executor/Cargo.toml | 17 - node/executor/src/lib.rs | 30 - node/primitives/Cargo.toml | 20 - node/primitives/src/lib.rs | 66 - node/rpc-client/Cargo.toml | 16 - node/rpc-client/src/main.rs | 66 - node/rpc/Cargo.toml | 18 - node/rpc/src/lib.rs | 61 - node/runtime/Cargo.toml | 116 - node/runtime/src/impls.rs | 125 - node/runtime/src/lib.rs | 629 -- scripts/build-only-wasm.sh | 29 - scripts/docker/build_image.sh | 141 - scripts/docker/builder/init.Dockerfile | 9 - scripts/init.sh | 12 - srml/balances/Cargo.toml | 40 - srml/eth-backing/Cargo.toml | 60 - srml/eth-backing/src/lib.rs | 350 - srml/eth-backing/src/mock.rs | 208 - srml/eth-backing/src/tests.rs | 277 - srml/eth-relay/Cargo.toml | 49 - srml/eth-relay/src/lib.rs | 336 - srml/eth-relay/src/mock.rs | 70 - srml/eth-relay/src/tests.rs | 173 - srml/im-online/Cargo.toml | 43 - srml/im-online/src/lib.rs | 634 -- srml/im-online/src/mock.rs | 174 - srml/im-online/src/tests.rs | 326 - srml/kton/Cargo.toml | 44 - srml/kton/src/lib.rs | 628 -- srml/kton/src/mock.rs | 149 - srml/kton/src/tests.rs | 262 - srml/staking/Cargo.toml | 54 - srml/staking/src/inflation.rs | 50 - srml/staking/src/lib.rs | 2032 ---- srml/staking/src/tests.rs | 4135 -------- srml/support/Cargo.toml | 24 - types/icefrog.json | 132 - 133 files changed, 14101 insertions(+), 25471 deletions(-) rename Dockerfile => .maintain/Dockerfile (100%) rename {ci => .maintain/ci}/script.sh (100%) delete mode 100644 CONTRIBUTING.adoc create mode 100644 bin/node/cli/Cargo.toml rename {node => bin/node}/cli/bin/main.rs (66%) create mode 100644 bin/node/cli/browser-demo/.gitignore create mode 100644 bin/node/cli/browser-demo/README.md create mode 100755 bin/node/cli/browser-demo/build.sh create mode 100644 bin/node/cli/browser-demo/favicon.png create mode 100644 bin/node/cli/browser-demo/index.html create mode 100644 bin/node/cli/browser-demo/ws.js rename {node => bin/node}/cli/build.rs (82%) rename {node => bin/node}/cli/doc/shell-completion.adoc (100%) create mode 100644 bin/node/cli/res/flaming-fir.json rename {node => bin/node}/cli/src/browser.rs (76%) create mode 100644 bin/node/cli/src/chain_spec.rs create mode 100644 bin/node/cli/src/cli.rs rename {node => bin/node}/cli/src/factory_impl.rs (71%) rename {node => bin/node}/cli/src/lib.rs (74%) create mode 100644 bin/node/cli/src/service.rs create mode 100644 bin/node/runtime/Cargo.toml rename {node => bin/node}/runtime/build.rs (89%) rename {node => bin/node}/runtime/src/constants.rs (63%) create mode 100644 bin/node/runtime/src/impls.rs create mode 100644 bin/node/runtime/src/lib.rs delete mode 100644 boot-conf/icefrog/example.json delete mode 100644 boot-conf/testnet/1.json delete mode 100644 boot-conf/testnet/2.json delete mode 100644 boot-conf/testnet/3.json delete mode 100644 boot-conf/testnet/4.json delete mode 100644 boot-conf/testnet/5.json delete mode 100644 boot-conf/testnet/alice.json delete mode 100644 boot-conf/testnet/bob.json delete mode 100644 core/cli/Cargo.toml delete mode 100644 core/cli/src/error.rs delete mode 100644 core/cli/src/execution_strategy.rs delete mode 100644 core/cli/src/informant.rs delete mode 100644 core/cli/src/informant/display.rs delete mode 100644 core/cli/src/lib.rs delete mode 100644 core/cli/src/params.rs delete mode 100644 core/cli/src/traits.rs delete mode 100644 core/ethash/Cargo.toml delete mode 100644 core/ethash/src/dag.rs delete mode 100644 core/ethash/src/lib.rs delete mode 100644 core/ethash/src/miller_rabin.rs delete mode 100644 core/fly-client/Cargo.toml delete mode 100644 core/fly-client/src/lib.rs delete mode 100644 core/merkle-mountain-range/Cargo.toml delete mode 100644 core/merkle-mountain-range/src/common.rs delete mode 100644 core/merkle-mountain-range/src/lib.rs delete mode 100644 core/merkle-mountain-range/src/merkle_proof.rs delete mode 100644 core/merkle-mountain-range/src/mmr.rs delete mode 100644 core/merkle-mountain-range/src/tests/mod.rs delete mode 100644 core/merkle-mountain-range/src/tests/support.rs delete mode 100644 core/merkle-patricia-trie/Cargo.toml delete mode 100644 core/merkle-patricia-trie/benches/trie.rs delete mode 100644 core/merkle-patricia-trie/src/db.rs delete mode 100644 core/merkle-patricia-trie/src/error.rs delete mode 100644 core/merkle-patricia-trie/src/lib.rs delete mode 100644 core/merkle-patricia-trie/src/nibbles.rs delete mode 100644 core/merkle-patricia-trie/src/node.rs delete mode 100644 core/merkle-patricia-trie/src/proof.rs delete mode 100644 core/merkle-patricia-trie/src/tests.rs delete mode 100644 core/merkle-patricia-trie/src/trie.rs delete mode 100644 core/sr-eth-primitives/Cargo.toml delete mode 100644 core/sr-eth-primitives/src/encoded.rs delete mode 100644 core/sr-eth-primitives/src/error.rs delete mode 100644 core/sr-eth-primitives/src/header.rs delete mode 100644 core/sr-eth-primitives/src/lib.rs delete mode 100644 core/sr-eth-primitives/src/pow.rs delete mode 100644 core/sr-eth-primitives/src/receipt.rs create mode 100644 frame/balances/Cargo.toml rename {srml => frame}/balances/src/lib.rs (70%) rename {srml => frame}/balances/src/mock.rs (63%) rename {srml => frame}/balances/src/tests.rs (69%) create mode 100644 frame/staking/Cargo.toml create mode 100644 frame/staking/reward-curve/Cargo.toml create mode 100644 frame/staking/reward-curve/src/lib.rs create mode 100644 frame/staking/reward-curve/src/log.rs create mode 100644 frame/staking/reward-curve/tests/test.rs create mode 100644 frame/staking/src/inflation.rs create mode 100644 frame/staking/src/lib.rs create mode 100644 frame/staking/src/migration.rs rename {srml => frame}/staking/src/mock.rs (51%) create mode 100644 frame/staking/src/slashing.rs create mode 100644 frame/staking/src/tests.rs create mode 100644 frame/support/Cargo.toml rename {srml => frame}/support/src/lib.rs (94%) delete mode 100644 node/cli/Cargo.toml delete mode 100644 node/cli/res/icefrog.json delete mode 100644 node/cli/src/chain_spec.rs delete mode 100644 node/cli/src/cli.rs delete mode 100644 node/cli/src/service.rs delete mode 100644 node/executor/Cargo.toml delete mode 100644 node/executor/src/lib.rs delete mode 100644 node/primitives/Cargo.toml delete mode 100644 node/primitives/src/lib.rs delete mode 100644 node/rpc-client/Cargo.toml delete mode 100644 node/rpc-client/src/main.rs delete mode 100644 node/rpc/Cargo.toml delete mode 100644 node/rpc/src/lib.rs delete mode 100644 node/runtime/Cargo.toml delete mode 100644 node/runtime/src/impls.rs delete mode 100644 node/runtime/src/lib.rs delete mode 100755 scripts/build-only-wasm.sh delete mode 100755 scripts/docker/build_image.sh delete mode 100644 scripts/docker/builder/init.Dockerfile delete mode 100755 scripts/init.sh delete mode 100644 srml/balances/Cargo.toml delete mode 100644 srml/eth-backing/Cargo.toml delete mode 100644 srml/eth-backing/src/lib.rs delete mode 100644 srml/eth-backing/src/mock.rs delete mode 100644 srml/eth-backing/src/tests.rs delete mode 100644 srml/eth-relay/Cargo.toml delete mode 100644 srml/eth-relay/src/lib.rs delete mode 100644 srml/eth-relay/src/mock.rs delete mode 100644 srml/eth-relay/src/tests.rs delete mode 100644 srml/im-online/Cargo.toml delete mode 100644 srml/im-online/src/lib.rs delete mode 100644 srml/im-online/src/mock.rs delete mode 100644 srml/im-online/src/tests.rs delete mode 100644 srml/kton/Cargo.toml delete mode 100644 srml/kton/src/lib.rs delete mode 100644 srml/kton/src/mock.rs delete mode 100644 srml/kton/src/tests.rs delete mode 100644 srml/staking/Cargo.toml delete mode 100644 srml/staking/src/inflation.rs delete mode 100644 srml/staking/src/lib.rs delete mode 100644 srml/staking/src/tests.rs delete mode 100644 srml/support/Cargo.toml delete mode 100644 types/icefrog.json diff --git a/Dockerfile b/.maintain/Dockerfile similarity index 100% rename from Dockerfile rename to .maintain/Dockerfile diff --git a/ci/script.sh b/.maintain/ci/script.sh similarity index 100% rename from ci/script.sh rename to .maintain/ci/script.sh diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc deleted file mode 100644 index 1ecfb1c9d..000000000 --- a/CONTRIBUTING.adoc +++ /dev/null @@ -1,62 +0,0 @@ -= Contributing - -The `Darwinia` project is an **OPENISH Open Source Project** - -== What? - -Individuals making significant and valuable contributions are given commit-access to a project to contribute as they see fit. A project is more like an open wiki than a standard guarded open source project. - -== Rules - -There are a few basic ground-rules for contributors (including the maintainer(s) of the project): - -. **No `--force` pushes** or modifying the master branch history in any way. If you need to rebase, ensure you do it in your own repo. -. **Non-master branches**, prefixed with a short name moniker (e.g. `gav-my-feature`) must be used for ongoing work. -. **All modifications** must be made in a **pull-request** to solicit feedback from other contributors. -. A pull-request *must not be merged until CI* has finished successfully. -. Contributors should adhere to the https://wiki.parity.io/Substrate-Style-Guide[house coding style]. - - -== Merge Process - -Merging pull requests once CI is successful: - -. A PR needs to be reviewed and approved by project maintainers unless: - - it does not alter any logic (e.g. comments, dependencies, docs), then it may be tagged https://github.com/darwinia-network/darwinia/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+label%3AA2-insubstantial[`insubstantial`] and merged by its author once CI is complete. - - it is an urgent fix with no large change to logic, then it may be merged after a non-author contributor has approved the review once CI is complete. - -. Once a PR is ready for review please add the https://github.com/darwinia-network/darwinia/pulls?q=is%3Apr+is%3Aopen+label%3AA0-pleasereview[`pleasereview`] label. Generally PRs should sit with this label for 48 hours in order to garner feedback. It may be merged before if all relevant parties had a look at it. -. PRs that break the external API must be tagged with https://github.com/darwinia-network/darwinia/labels/B2-breaksapi[`breaksapi`], when it changes the SRML or consensus of running system with https://github.com/darwinia-network/darwinia/labels/B3-breaksconsensus[`breaksconsensus`] -. No PR should be merged until all reviews' comments are addressed. - -*Reviewing pull requests*: - -When reviewing a pull request, the end-goal is to suggest useful changes to the author. Reviews should finish with approval unless there are issues that would result in: - -. Buggy behavior. -. Undue maintenance burden. -. Breaking with house coding style. -. Pessimization (i.e. reduction of speed as measured in the projects benchmarks). -. Feature reduction (i.e. it removes some aspect of functionality that a significant minority of users rely on). -. Uselessness (i.e. it does not strictly add a feature or fix a known issue). - -*Reviews may not be used as an effective veto for a PR because*: - -. There exists a somewhat cleaner/better/faster way of accomplishing the same feature/fix. -. It does not fit well with some other contributors' longer-term vision for the project. - -== Helping out - -We use https://github.com/darwinia-network/darwinia/labels[labels] to manage PRs and issues and communicate state of a PR. Please familiarize yourself with them. Furthermore we are organizing issues in https://github.com/darwinia-network/darwinia/milestones[milestones]. Best way to get started is to a pick a ticket from the current milestone tagged https://github.com/darwinia-network/darwinia/issues?q=is%3Aissue+is%3Aopen+label%3AQ2-easy[`easy`] or https://github.com/darwinia-network/darwinia/issues?q=is%3Aissue+is%3Aopen+label%3AQ3-medium[`medium`] and get going or https://github.com/darwinia-network/darwinia/issues?q=is%3Aissue+is%3Aopen+label%3AX1-mentor[`mentor`] and get in contact with the mentor offering their support on that larger task. - -== Releases - -Declaring formal releases remains the prerogative of the project maintainer(s). - -== Changes to this arrangement - -This is an experiment and feedback is welcome! This document may also be subject to pull-requests or changes by contributors where you believe you have something valuable to add or change. - -== Heritage - -These contributing guidelines are modified from the "OPEN Open Source Project" guidelines for the Level project: https://github.com/Level/community/blob/master/CONTRIBUTING.md \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index cf3658100..9bb92b0b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,7574 +4,7379 @@ 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.1 (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.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-cipher-trait", + "byteorder 1.3.2", + "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.6 (registry+https://github.com/rust-lang/crates.io-index)", + "const-random", ] [[package]] name = "aho-corasick" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" dependencies = [ - "memchr 2.2.1 (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.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" [[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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2", + "syn 1.0.11", +] + +[[package]] +name = "async-std" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf6039b315300e057d198b9d3ab92ee029e31c759b7f1afae538145e6f18a3e" +dependencies = [ + "async-task", + "broadcaster", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils 0.7.0", + "futures-core", + "futures-io", + "futures-timer 2.0.2", + "kv-log-macro", + "log", + "memchr", + "mio", + "mio-uds", + "num_cpus", + "once_cell 1.2.0", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "async-task" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d22dc86693d375d2733b536fd8914bea0fa93adf4b1e6bcbd9c7c500cb62d920" +dependencies = [ + "crossbeam-utils 0.7.0", ] [[package]] name = "atty" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" 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 = "autocfg" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" [[package]] name = "backtrace" version = "0.3.40" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea" 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.48 (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" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" dependencies = [ - "byteorder 1.3.2 (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.2", ] [[package]] name = "base64" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.2 (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.2 (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.2", + "serde", ] [[package]] name = "bindgen" -version = "0.47.3" +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.26.4 (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)", - "hashbrown 0.1.8 (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.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", + "peeking_take_while", + "proc-macro2 0.4.30", + "quote 0.6.13", + "regex", + "shlex", + "which", ] [[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.4 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.12", + "constant_time_eq", ] [[package]] name = "blake2b_simd" version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b83b7baab1e671718d78204225800d6b170e648188ac7dc992e9d6bddf87d0c0" dependencies = [ - "arrayref 0.3.5 (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.4 (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.2 (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.2", + "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", +] + +[[package]] +name = "broadcaster" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07a1446420a56f1030271649ba0da46d23239b3a68c73591cea5247f15a788a0" dependencies = [ - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview", + "futures-core-preview", + "futures-sink-preview", + "futures-util-preview", + "parking_lot 0.9.0", + "slab", ] [[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.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d6c2c5b58ab920a4f5aeaaca34b4488074e8cc7596af94e6f8c6ff247c60245" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (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)", + "memchr", ] [[package]] name = "bumpalo" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad807f2fc2bf185eeb98ff3a901bd46dc5ad58163d0fa4577ba0d25674d71708" [[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.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" [[package]] name = "bytes" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" dependencies = [ - "byteorder 1.3.2 (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.2", + "either", + "iovec", ] +[[package]] +name = "bytes" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10004c15deb332055f7a4a208190aed362cf9a7c2f6ab70a305fba50e1105f38" + [[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" - -[[package]] -name = "cast" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "4964518bd3b4a8190e832886cdc0da9794f12e8e6c1613a9e90ff331c4c8724b" [[package]] name = "cc" version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52a465a666ca3d838ebbf08b241383421412fe7ebb463527bba275526d89f76" dependencies = [ - "jobserver 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jobserver", + "num_cpus", ] [[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 = "chrono" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31850b4a4d6bae316f7a09e691c944c28299298837edc0a03f755618c23cbc01" dependencies = [ - "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer", + "num-traits", + "serde", + "time", ] [[package]] name = "clang-sys" -version = "0.26.4" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81de550971c976f176130da4b2978d3b524eaa0fd9ac31f3ceb5ae1231fb4853" dependencies = [ - "glob 0.2.11 (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", + "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.13 (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.48 (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 = "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.56 (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.33 (registry+https://github.com/rust-lang/crates.io-index)", + "log", + "web-sys", ] [[package]] name = "const-random" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b641a8c9867e341f3295564203b1c250eb8ce6cb6126e007941f78c4d2ed7fe" dependencies = [ - "const-random-macro 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)", + "const-random-macro", + "proc-macro-hack", ] [[package]] name = "const-random-macro" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c750ec12b83377637110d5a57f5ae08e895b06c4b16e2bdbf1a94ef717428c59" dependencies = [ - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack", + "rand 0.7.2", ] [[package]] name = "constant_time_eq" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "core-foundation" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -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)", -] - -[[package]] -name = "core-foundation-sys" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120" [[package]] name = "cranelift-bforest" -version = "0.46.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd05aac8cefcde54ce26178df8f36cb1f518ac691db650e7d2440c2b6b41c4dc" dependencies = [ - "cranelift-entity 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.46.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c63d9b6ff8a94f98deabab21880d7fd54996e0e16be687b6f80a3b6bdd9c188d" dependencies = [ - "cranelift-bforest 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen-meta 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen-shared 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.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)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "log", + "serde", + "smallvec 1.1.0", + "target-lexicon", + "thiserror", ] [[package]] name = "cranelift-codegen-meta" -version = "0.46.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cb3df51c2c07d719d02869bfac6cabd8d82ee308d5b29ca62e6528723cc33a4" dependencies = [ - "cranelift-codegen-shared 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen-shared", + "cranelift-entity", ] [[package]] name = "cranelift-codegen-shared" -version = "0.46.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "758f9426b2e22bf83fc1a6b231a9d53cd4830751883c7f0e196ebb3c210467b3" [[package]] name = "cranelift-entity" -version = "0.46.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff064733df8b98f453060264a8790393d1e807aca6942706b42f79a4f7aae9ed" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "cranelift-frontend" -version = "0.46.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1eaafb5fa623dcbe19a28084a8226d7a1b17184a949c1a1f29a46b479867998d" dependencies = [ - "cranelift-codegen 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen", + "log", + "smallvec 1.1.0", + "target-lexicon", ] [[package]] name = "cranelift-native" -version = "0.46.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90033dbd7293f6fad4cf9dcd769cd621d60df22b1c5a11799e86359b7447a51d" dependencies = [ - "cranelift-codegen 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "raw-cpuid 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen", + "raw-cpuid", + "target-lexicon", ] [[package]] name = "cranelift-wasm" -version = "0.46.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54cb82a1071f88822763a583ec1a8688ffe5e2cda02c111d4483dd4376ed14d8" dependencies = [ - "cranelift-codegen 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-frontend 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.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)", - "wasmparser 0.39.3 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "log", + "serde", + "thiserror", + "wasmparser", ] [[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)", -] - -[[package]] -name = "criterion" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "atty 0.2.13 (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.1 (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.10 (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.44 (registry+https://github.com/rust-lang/crates.io-index)", - "tinytemplate 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.9 (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" -dependencies = [ - "byteorder 1.3.2 (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)", + "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.3.9" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acec9a3b0b3559f15aee4f90746c4e5e293b701c0f7d3925d24e01645267b68c" dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.0", ] [[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 0.7.0", ] [[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.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg", + "cfg-if", + "crossbeam-utils 0.7.0", + "lazy_static", + "memoffset", + "scopeguard 1.0.0", ] [[package]] name = "crossbeam-queue" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6", ] [[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 0.7.0", ] [[package]] name = "crossbeam-utils" version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" dependencies = [ - "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)", + "cfg-if", + "lazy_static", ] [[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", + "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)", -] - -[[package]] -name = "csv" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.4 (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" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", + "subtle 1.0.0", ] [[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)", -] - -[[package]] -name = "ctor" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "sct", ] [[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 = "ctrlc" version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7dfd2d8b4c82121dfdff120f818e09fc4380b0b7e17a742081a89b94853e87f" dependencies = [ - "nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "nix", + "winapi 0.3.8", ] [[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.2 (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.2", + "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.2 (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.2", + "digest", + "rand_core 0.5.1", + "subtle 2.2.2", + "zeroize 1.1.0", ] [[package]] name = "darwinia-balances" -version = "0.2.0" -dependencies = [ - "darwinia-support 0.2.0", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-timestamp 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-transaction-payment 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "darwinia-cli" -version = "0.1.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.13 (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.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "exit-future 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-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)", - "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)", - "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rpassword 4.0.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.44 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "structopt 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-header-metadata 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keyring 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-network 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-panic-handler 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-service 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-state-machine 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-telemetry 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "tempdir 0.3.7 (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)", -] - -[[package]] -name = "darwinia-eth-backing" -version = "0.2.0" -dependencies = [ - "darwinia-balances 0.2.0", - "darwinia-eth-relay 0.2.0", - "darwinia-kton 0.2.0", - "darwinia-staking 0.3.0", - "darwinia-support 0.2.0", - "ethabi 9.0.1 (git+https://github.com/darwinia-network/ethabi.git?branch=with_no_std)", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.4.4 (git+https://github.com/darwinia-network/parity-common.git)", - "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-eth-primitives 0.2.0", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-staking-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-session 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-timestamp 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-phragmen 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "darwinia-eth-relay" -version = "0.2.0" -dependencies = [ - "ethash 0.4.0", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "merkle-patricia-trie 0.1.0", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.4.4 (git+https://github.com/darwinia-network/parity-common.git)", - "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-eth-primitives 0.2.0", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "darwinia-kton" -version = "0.2.0" +version = "0.3.0" dependencies = [ - "darwinia-balances 0.2.0", - "darwinia-support 0.2.0", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-timestamp 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "darwinia-support", + "frame-support", + "frame-system", + "pallet-timestamp", + "pallet-transaction-payment", + "parity-scale-codec", + "safe-mix", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "darwinia-staking" -version = "0.3.0" +version = "2.0.0" dependencies = [ - "darwinia-balances 0.2.0", - "darwinia-kton 0.2.0", - "darwinia-support 0.2.0", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-staking-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-authorship 0.1.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-session 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-timestamp 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-phragmen 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "darwinia-support", + "frame-support", + "frame-system", + "pallet-authorship", + "pallet-balances", + "pallet-session", + "pallet-staking-reward-curve", + "pallet-timestamp", + "parity-scale-codec", + "safe-mix", + "serde", + "sp-core", + "sp-io", + "sp-keyring", + "sp-phragmen", + "sp-runtime", + "sp-staking", + "sp-std", + "substrate-test-utils", ] [[package]] name = "darwinia-support" version = "0.2.0" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "frame-support", + "parity-scale-codec", + "sp-runtime", + "sp-std", ] [[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.15.0" +version = "0.99.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2159be042979966de68315bce7034bb000c775f22e3e834e1c52ff78f041cae8" dependencies = [ - "lazy_static 1.4.0 (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.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] -[[package]] -name = "difference" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[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.1 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2", + "quick-error", ] [[package]] name = "doc-comment" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "ed25519-dalek" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -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)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "clear_on_drop", + "curve25519-dalek 2.0.0", + "rand 0.7.2", + "sha2", ] [[package]] name = "either" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" [[package]] name = "elastic-array" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "580f3768bd6465780d063f5b8213a2ebd506e139b345e4a81eb301ceae3d61e1" dependencies = [ - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "heapsize", ] [[package]] name = "env_logger" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" dependencies = [ - "atty 0.2.13 (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.1 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "atty", + "humantime", + "log", + "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.13 (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.1 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "atty", + "humantime", + "log", + "regex", + "termcolor", ] [[package]] name = "environmental" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34f8467a0284de039e6bd0e25c14519538462ba5beb548bb1f03e645097837a8" [[package]] name = "erased-serde" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beee4bc16478a1b26f2e80ad819a52d24745e292f521a63c16eea5f74b7eb60" 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)", -] - -[[package]] -name = "ethabi" -version = "9.0.1" -source = "git+https://github.com/darwinia-network/ethabi.git?branch=with_no_std#f2a21987d51a42e1876786461d4465647f6bc38c" -dependencies = [ - "ethereum-types 0.8.0 (git+https://github.com/darwinia-network/parity-common.git)", - "rustc-hex 2.0.1 (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.44 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ethash" -version = "0.4.0" -dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ethereum-types 0.8.0 (git+https://github.com/darwinia-network/parity-common.git)", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.1 (git+https://github.com/darwinia-network/parity-common.git)", - "rlp 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ethbloom" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.3.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.2.3 (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 = "ethbloom" -version = "0.8.1" -source = "git+https://github.com/darwinia-network/parity-common.git#df9eebad700c076c13afe053a6c368a8926d94ff" -dependencies = [ - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.5.1 (git+https://github.com/darwinia-network/parity-common.git)", - "impl-codec 0.4.2 (git+https://github.com/darwinia-network/parity-common.git)", - "impl-rlp 0.2.1 (git+https://github.com/darwinia-network/parity-common.git)", - "impl-serde 0.2.3 (git+https://github.com/darwinia-network/parity-common.git)", - "tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ethereum-types" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ethbloom 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ethereum-types-serialize 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ethereum-types" -version = "0.8.0" -source = "git+https://github.com/darwinia-network/parity-common.git#df9eebad700c076c13afe053a6c368a8926d94ff" -dependencies = [ - "ethbloom 0.8.1 (git+https://github.com/darwinia-network/parity-common.git)", - "fixed-hash 0.5.1 (git+https://github.com/darwinia-network/parity-common.git)", - "impl-codec 0.4.2 (git+https://github.com/darwinia-network/parity-common.git)", - "impl-rlp 0.2.1 (git+https://github.com/darwinia-network/parity-common.git)", - "impl-serde 0.2.3 (git+https://github.com/darwinia-network/parity-common.git)", - "primitive-types 0.6.1 (git+https://github.com/darwinia-network/parity-common.git)", - "uint 0.8.2 (git+https://github.com/darwinia-network/parity-common.git)", -] - -[[package]] -name = "ethereum-types-serialize" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc", + "libc", ] [[package]] name = "exit-future" -version = "0.1.4" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.1", ] [[package]] name = "faerie" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f902f2af041f6c7177a2a04f805687cdc71e69c7cbef059a2755d8923f4cd7a8" dependencies = [ - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "goblin 0.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 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)", - "scroll 0.9.2 (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.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow", + "goblin", + "indexmap", + "log", + "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.40 (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.6 (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.11 (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.6", + "quote 1.0.2", + "syn 1.0.11", + "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.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa" 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", ] [[package]] name = "finality-grandpa" -version = "0.9.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4106eb29c7e092f4a6ce6e7632abbbfdf85d94e63035d3790d2d16eeae83d3f4" dependencies = [ - "futures 0.1.29 (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)", - "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "log", + "num-traits", + "parity-scale-codec", + "parking_lot 0.9.0", ] [[package]] name = "fixed-hash" -version = "0.3.2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3367952ceb191f4ab95dd5685dc163ac539e36202f9fcfd0cb22f9f9c542fefc" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "fixed-hash" -version = "0.5.1" -source = "git+https://github.com/darwinia-network/parity-common.git#df9eebad700c076c13afe053a6c368a8926d94ff" -dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.1 (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.2", + "libc", + "rand 0.7.2", + "rustc-hex", + "static_assertions", ] [[package]] -name = "fixed-hash" -version = "0.5.2" +name = "fixedbitset" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 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)", - "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" [[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)", - "futures 0.1.29 (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.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "crc32fast", + "futures 0.1.29", + "libc", + "libz-sys", + "miniz_oxide", + "tokio-io", ] [[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" +name = "fork-tree" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec", ] [[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "frame-executive" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "sp-io", + "sp-runtime", + "sp-std", +] [[package]] -name = "fork-tree" +name = "frame-metadata" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "parity-scale-codec", + "serde", + "sp-core", + "sp-std", +] + +[[package]] +name = "frame-support" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "bitmask", + "frame-metadata", + "frame-support-procedural", + "impl-trait-for-tuples", + "log", + "once_cell 0.2.4", + "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" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support-procedural-tools", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", +] + +[[package]] +name = "frame-support-procedural-tools" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support-procedural-tools-derive", + "proc-macro-crate", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", +] + +[[package]] +name = "frame-support-procedural-tools-derive" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", +] + +[[package]] +name = "frame-system" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "impl-trait-for-tuples", + "parity-scale-codec", + "safe-mix", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-version", +] + +[[package]] +name = "frame-system-rpc-runtime-api" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "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 = "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.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f16056ecbb57525ff698bb955162d0cd03bee84e6241c27ff75c08d8ca5987" dependencies = [ - "futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-executor 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.1 (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.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcae98ca17d102fd8a3603727b9259fcf7fa4239b603d2142926189bc8999b86" dependencies = [ - "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.1 (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-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview", + "futures-sink-preview", ] [[package]] name = "futures-core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79564c427afefab1dfb3298535b21eda083ef7935b4f0ecbfcb121f0aec10866" [[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.11.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "num_cpus", ] [[package]] name = "futures-executor" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e274736563f686a837a0568b478bdabfeaec2dca794b5649b04e2fe1627c231" dependencies = [ - "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-executor-preview" -version = "0.3.0-alpha.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "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)", - "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core", + "futures-task", + "futures-util", + "num_cpus", ] [[package]] name = "futures-io" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "futures-io-preview" -version = "0.3.0-alpha.19" -source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e676577d229e70952ab25f3945795ba5b16d63ca794ca9d2c860e5595d20b5ff" [[package]] name = "futures-macro" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e7c56c15537adb4f76d0b7a76ad131cb4d2f4f32d3b0bcabcbe1c7c5e87764" dependencies = [ - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-preview" -version = "0.3.0-alpha.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -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)", - "futures-executor-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-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)", + "proc-macro-hack", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] name = "futures-sink" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "171be33efae63c2d59e6dbba34186fe0d6394fb378069a76dfd80fdcffd43c16" [[package]] name = "futures-sink-preview" version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f148ef6b69f75bb610d4f9a2336d4fc88c4b5b67129d1a340dd0fd362efeec" [[package]] name = "futures-task" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bae52d6b29cf440e298856fec3965ee6fa71b06aa7495178615953fd669e5f9" [[package]] name = "futures-timer" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "878f1d2fc31355fa02ed2372e741b0c17e58373341e6a122569b4623a14a7d33" dependencies = [ - "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)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview", + "futures-util-preview", + "pin-utils", ] +[[package]] +name = "futures-timer" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6" + [[package]] name = "futures-util" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0d66274fb76985d3c62c886d1da7ac4c0903a8c9f754e8fe0f35a6a6cc39e76" dependencies = [ - "futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-macro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (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 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", ] [[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", + "futures-sink-preview", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "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)", - "futures-io-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (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)", + "byteorder 1.3.2", ] [[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.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7db7ca94ed4cd01190ceee0d8a8052f08a247aa1b469a7f68c6a3b71afcf407" 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.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.56 (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.2 (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.0 (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.2", + "fallible-iterator", + "indexmap", + "stable_deref_trait", ] -[[package]] -name = "glob" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[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.6 (registry+https://github.com/rust-lang/crates.io-index)", - "bstr 0.2.8 (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.1 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", ] [[package]] name = "goblin" -version = "0.0.24" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3081214398d39e4bd7f2c1975f0488ed04614ffdd976c6fc7a0708278552c0da" +dependencies = [ + "log", + "plain", + "scroll", +] + +[[package]] +name = "grafana-data-source" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" 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.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "async-std", + "chrono", + "derive_more", + "futures-timer 2.0.2", + "futures-util", + "hyper 0.13.1", + "lazy_static", + "log", + "parking_lot 0.9.0", + "serde", + "serde_json", + "tokio 0.2.6", ] [[package]] name = "h2" version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" +dependencies = [ + "byteorder 1.3.2", + "bytes 0.4.12", + "fnv", + "futures 0.1.29", + "http 0.1.21", + "indexmap", + "log", + "slab", + "string", + "tokio-io", +] + +[[package]] +name = "h2" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9433d71e471c1736fd5a61b671fc0b148d7a2992f666c958d03cd8feb3b88d1" dependencies = [ - "byteorder 1.3.2 (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.0 (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.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.3", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.0", + "indexmap", + "log", + "slab", + "tokio 0.2.6", + "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.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bae29b6653b3412c2e71e9d486db9f9df5d701941d86683005efb9f2d28e3da" 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)", + "byteorder 1.3.2", + "scopeguard 0.3.3", ] +[[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", ] [[package]] name = "heapsize" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[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.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f629dc602392d3ec14bfc8a09b5e644d7ffd725102b48b81e59f90f2633621d7" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] -[[package]] -name = "hex" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "hex" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "023b39be39e3a2da62a94feb433e91e8bcd37676fbc8bea371daf52b7a769a3e" [[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", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b708cc7f06493459026f53b9a61a7a121a5d1ec6238dee58ea4941132b30156b" 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.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.3", + "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", + "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.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.5.3", + "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.2 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error", ] [[package]] name = "hyper" -version = "0.10.16" +version = "0.12.35" source = "registry+https://github.com/rust-lang/crates.io-index" -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.11.1 (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)", +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", + "net2", + "rustc_version", + "time", + "tokio 0.1.22", + "tokio-buf", + "tokio-executor 0.1.9", + "tokio-io", + "tokio-reactor", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", + "want 0.2.0", ] [[package]] name = "hyper" -version = "0.12.35" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bf49cfb32edee45d890537d9057d1b02ed55f53b7b6a30bae83a38c9231749e" 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.4 (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.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.3", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.2.1", + "http 0.2.0", + "http-body 0.3.1", + "httparse", + "itoa", + "log", + "pin-project", + "time", + "tokio 0.2.6", + "tower-service", + "want 0.3.0", ] [[package]] name = "hyper-rustls" version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719d85c7df4a7f309a77d145340a063ea929dcb2e025bae46a80345cffec2952" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "ct-logs 0.6.0 (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)", - "rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-rustls 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki-roots 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "ct-logs", + "futures 0.1.29", + "hyper 0.12.35", + "rustls", + "tokio-io", + "tokio-rustls", + "webpki", + "webpki-roots 0.17.0", ] [[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.11 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "impl-codec" -version = "0.4.2" -source = "git+https://github.com/darwinia-network/parity-common.git#df9eebad700c076c13afe053a6c368a8926d94ff" -dependencies = [ - "parity-scale-codec 1.1.0 (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.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "impl-rlp" -version = "0.2.1" -source = "git+https://github.com/darwinia-network/parity-common.git#df9eebad700c076c13afe053a6c368a8926d94ff" -dependencies = [ - "rlp 0.4.4 (git+https://github.com/darwinia-network/parity-common.git)", -] - -[[package]] -name = "impl-rlp" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rlp 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "impl-serde" -version = "0.2.3" -source = "git+https://github.com/darwinia-network/parity-common.git#df9eebad700c076c13afe053a6c368a8926d94ff" -dependencies = [ - "serde 1.0.104 (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-trait-for-tuples" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9d" dependencies = [ - "proc-macro2 1.0.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] name = "indexmap" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg", ] [[package]] name = "integer-sqrt" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903" [[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.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f4b06b21db0228860c8dfd17d2106c49c7c6bd07477a4036985347d84def04" [[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.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" [[package]] name = "jobserver" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b1d42ef453b30b7387e113da1c83ab1605d90c5b4e0eb8e96d016ed3b8c160" dependencies = [ - "getrandom 0.1.13 (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)", + "getrandom", + "libc", + "log", ] [[package]] name = "js-sys" version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "367647c532db6f1555d7151e619540ec5f713328235b8c062c6b4f63e84adfe3" dependencies = [ - "wasm-bindgen 0.2.56 (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)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-pubsub 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)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (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", + "jsonrpc-core", + "jsonrpc-pubsub", + "log", + "serde", + "serde_json", + "url 1.7.2", ] [[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.44 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "log", + "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.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] name = "jsonrpc-http-server" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d83d348120edee487c560b7cdd2565055d61cda053aa0d0ef0f8b6a18429048" 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.9.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", + "net2", + "parking_lot 0.9.0", + "unicase", ] [[package]] name = "jsonrpc-pubsub" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3453625f0f0f5cd6d6776d389d73b7d70fcc98620b7cbb1cbbb1f6a36e95f39a" 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.9.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", + "parking_lot 0.9.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.1 (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", + "tokio 0.1.22", + "tokio-codec", + "unicase", ] [[package]] name = "jsonrpc-ws-server" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b34faa167c3ac9705aeecb986c0da6056529f348425dbe0441db60a2c4cc41d1" 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.9.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", + "parking_lot 0.9.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-hash" -version = "0.4.1" -source = "git+https://github.com/darwinia-network/parity-common.git#df9eebad700c076c13afe053a6c368a8926d94ff" -dependencies = [ - "primitive-types 0.6.1 (git+https://github.com/darwinia-network/parity-common.git)", - "tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "keccak-hasher" -version = "0.15.2" +name = "kernel32-sys" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 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)", + "winapi 0.2.8", + "winapi-build", ] [[package]] -name = "kernel32-sys" -version = "0.2.2" +name = "kv-log-macro" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c54d9f465d530a752e6ebdc217e081a7a614b48cb200f6f0aee21ba6bc9aabb" 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)", + "log", ] [[package]] name = "kvdb" -version = "0.1.0" -source = "git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d#b0317f649ab2c665b7987b8475878fc4d2e1f81d" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b2f251f01a7224426abdb2563707d856f7de995d821744fd8fa8e2874f69e3" dependencies = [ - "elastic-array 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", + "elastic-array", + "parity-bytes", ] [[package]] name = "kvdb-memorydb" -version = "0.1.0" -source = "git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d#b0317f649ab2c665b7987b8475878fc4d2e1f81d" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "296c12309ed36cb74d59206406adbf1971c3baa56d5410efdb508d8f1c60a351" dependencies = [ - "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb", + "parking_lot 0.9.0", ] [[package]] name = "kvdb-rocksdb" -version = "0.1.4" -source = "git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d#b0317f649ab2c665b7987b8475878fc4d2e1f81d" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3f82177237c1ae67d6ab208a6f790cab569a1d81c1ba02348e0736a99510be3" dependencies = [ - "elastic-array 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", - "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.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rocksdb 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "elastic-array", + "fs-swap", + "interleaved-ordered", + "kvdb", + "log", + "num_cpus", + "owning_ref", + "parking_lot 0.9.0", + "regex", + "rocksdb", ] -[[package]] -name = "language-tags" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[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 = "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.48 (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.13.1" 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)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core-derive 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-deflate 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-dns 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-floodsub 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-identify 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-kad 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-mdns 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-mplex 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-noise 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-ping 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-plaintext 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-secio 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-tcp 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-uds 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-wasm-ext 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-websocket 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-yamux 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multiaddr 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multihash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "8fab3090cd3af0f0ff5e6c2cc0f6fe6607e9f9282680cf7cd3bdd4cda38ea722" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.29", + "lazy_static", + "libp2p-core", + "libp2p-core-derive", + "libp2p-deflate", + "libp2p-dns", + "libp2p-floodsub", + "libp2p-identify", + "libp2p-kad", + "libp2p-mdns", + "libp2p-mplex", + "libp2p-noise", + "libp2p-ping", + "libp2p-plaintext", + "libp2p-secio", + "libp2p-swarm", + "libp2p-tcp", + "libp2p-uds", + "libp2p-wasm-ext", + "libp2p-websocket", + "libp2p-yamux", + "parity-multiaddr 0.6.0", + "parity-multihash 0.2.0", + "parking_lot 0.9.0", + "smallvec 0.6.13", + "tokio-codec", + "tokio-executor 0.1.9", + "tokio-io", + "wasm-timer", ] [[package]] name = "libp2p-core" version = "0.13.1" 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)", - "bytes 0.4.12 (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)", - "failure 0.1.6 (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)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libsecp256k1 0.3.3 (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.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multiaddr 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multihash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)", - "rw-stream-sink 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.7.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.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "4a3def059145c191b6975e51784d5edc59e77e1ed5b25402fccac704dd7731f3" +dependencies = [ + "asn1_der", + "bs58 0.3.0", + "bytes 0.4.12", + "ed25519-dalek", + "failure", + "fnv", + "futures 0.1.29", + "lazy_static", + "libsecp256k1", + "log", + "multistream-select", + "parity-multiaddr 0.6.0", + "parity-multihash 0.2.0", + "parking_lot 0.9.0", + "protobuf", + "quick-error", + "rand 0.7.2", + "ring", + "rw-stream-sink", + "sha2", + "smallvec 0.6.13", + "tokio-executor 0.1.9", + "tokio-io", + "unsigned-varint", + "untrusted", + "void", + "wasm-timer", + "zeroize 1.1.0", ] [[package]] name = "libp2p-core-derive" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1eeb2704ac14c60f31967e351ed928b848526a5fc6db4104520020665012826f" dependencies = [ - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13", + "syn 0.15.44", ] [[package]] name = "libp2p-deflate" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef2b0bf5d37692ac90e2bffa436bec26c0b0def6c0cab7ea85ff67a353d58aaa" dependencies = [ - "flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2", + "futures 0.1.29", + "libp2p-core", + "tokio-io", ] [[package]] name = "libp2p-dns" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3175fb0fc9016c95c8517a297bbdb5fb6bfbd5665bacd2eb23495d1cbdeb033" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-dns-unofficial 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "libp2p-core", + "log", + "tokio-dns-unofficial", ] [[package]] name = "libp2p-floodsub" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c11b95281e8cb87eb83c204b3ca4988fa665ed9351199b5bcc323056f49816" dependencies = [ - "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "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.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bs58 0.3.0", + "bytes 0.4.12", + "cuckoofilter", + "fnv", + "futures 0.1.29", + "libp2p-core", + "libp2p-swarm", + "protobuf", + "rand 0.6.5", + "smallvec 0.6.13", + "tokio-io", ] [[package]] name = "libp2p-identify" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4e4b0b4bcf410f77361b08335022d5705df34970dc1744ff58d4bb902309547" 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)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.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-multiaddr 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-timer 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "libp2p-core", + "libp2p-swarm", + "log", + "parity-multiaddr 0.6.0", + "protobuf", + "smallvec 0.6.13", + "tokio-codec", + "tokio-io", + "unsigned-varint", + "wasm-timer", ] [[package]] name = "libp2p-kad" version = "0.13.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.4.12 (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.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.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-multiaddr 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multihash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (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.2.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.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "7fd25360fc12b23edb1ed13f73426325a38d32e0927a46fec26ddb6873d7644d" +dependencies = [ + "arrayvec 0.5.1", + "bytes 0.4.12", + "either", + "fnv", + "futures 0.1.29", + "libp2p-core", + "libp2p-swarm", + "log", + "parity-multiaddr 0.6.0", + "parity-multihash 0.2.0", + "protobuf", + "rand 0.7.2", + "sha2", + "smallvec 0.6.13", + "tokio-codec", + "tokio-io", + "uint", + "unsigned-varint", + "void", + "wasm-timer", ] [[package]] name = "libp2p-mdns" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4c2e225a7dfc571c3ad77a0a5ecccc9537afe42d72289ac9f19768567cd677d" dependencies = [ - "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)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.3.0 (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)", - "parity-multiaddr 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.5 (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.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "data-encoding", + "dns-parser", + "futures 0.1.29", + "libp2p-core", + "libp2p-swarm", + "log", + "net2", + "parity-multiaddr 0.6.0", + "rand 0.6.5", + "smallvec 0.6.13", + "tokio-io", + "tokio-reactor", + "tokio-udp", + "void", + "wasm-timer", ] [[package]] name = "libp2p-mplex" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2fe584816d993dc0f893396521a3c93191d78a6f28a892b150baa714a12c3e5" 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)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.13.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.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "fnv", + "futures 0.1.29", + "libp2p-core", + "log", + "parking_lot 0.8.0", + "tokio-codec", + "tokio-io", + "unsigned-varint", ] [[package]] name = "libp2p-noise" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a30ec2640262a7ad6b1a8b28f6cd8281e620a6802f700adf9ff26e61487c333a" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "curve25519-dalek 1.2.3 (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)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)", - "snow 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (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)", + "bytes 0.4.12", + "curve25519-dalek 1.2.3", + "futures 0.1.29", + "lazy_static", + "libp2p-core", + "log", + "protobuf", + "rand 0.7.2", + "ring", + "snow", + "tokio-io", + "x25519-dalek", + "zeroize 1.1.0", ] [[package]] name = "libp2p-ping" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b975ad345eb9bb29ddc64670664a50a8ab3e66e28357abb0f83cfc0a9ca2d78" 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)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-swarm 0.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-multiaddr 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (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.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "libp2p-core", + "libp2p-swarm", + "log", + "parity-multiaddr 0.6.0", + "rand 0.7.2", + "tokio-io", + "void", + "wasm-timer", ] [[package]] name = "libp2p-plaintext" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4fe82189f5c20e8f0a11deaa04d492703c501cefd2428ad68f4f64aefab76f" 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)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rw-stream-sink 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "libp2p-core", + "log", + "protobuf", + "rw-stream-sink", + "tokio-io", + "void", ] [[package]] name = "libp2p-secio" version = "0.13.0" 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)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (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.33 (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.13.1 (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)", - "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)", - "rw-stream-sink 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "twofish 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "7ee09e259ceb7633a52fd17f187bedf94e3545b1746487beedbd3a0a07d99817" +dependencies = [ + "aes-ctr", + "bytes 0.4.12", + "ctr", + "futures 0.1.29", + "hmac", + "js-sys", + "lazy_static", + "libp2p-core", + "log", + "parity-send-wrapper", + "protobuf", + "rand 0.6.5", + "ring", + "rw-stream-sink", + "sha2", + "tokio-codec", + "tokio-io", + "twofish", + "untrusted", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", ] [[package]] name = "libp2p-swarm" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd55bc9f5f9eac2bb1ff24ca3c8a655810a566ac38c7a6ee1f30aced5a62905b" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (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.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "libp2p-core", + "smallvec 0.6.13", + "tokio-io", + "void", + "wasm-timer", ] [[package]] name = "libp2p-tcp" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234a7093d05651ab5630db926a4a42ca8978a65bab8c27c2ce2b66b200c76989" 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)", - "get_if_addrs 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ipnet 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "get_if_addrs", + "ipnet", + "libp2p-core", + "log", + "tokio-io", + "tokio-tcp", + "tokio-timer", ] [[package]] name = "libp2p-uds" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e2fe0648967da3e56e4a55055c857c8c48326b66be0047d0e04c8ca60d34630" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "libp2p-core", + "log", + "tokio-uds", ] [[package]] name = "libp2p-wasm-ext" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f7b8f2bd81fb356e81352d4513856bc21215ecf91502aa1f55b6449642a9acf" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-send-wrapper 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "js-sys", + "libp2p-core", + "parity-send-wrapper", + "tokio-io", + "wasm-bindgen", + "wasm-bindgen-futures", ] [[package]] name = "libp2p-websocket" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d74d4fc229ad7e8d1a973178786bdcd5dadbdd7b9822c4477c8687df6f82f66" 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)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rw-stream-sink 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "soketto 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-rustls 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki-roots 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "libp2p-core", + "log", + "rw-stream-sink", + "soketto", + "tokio-codec", + "tokio-io", + "tokio-rustls", + "url 2.1.0", + "webpki-roots 0.18.0", ] [[package]] name = "libp2p-yamux" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1913eb7dd6eb5515957b6f1770296f6921968db87bc9b985f0e974b6657e1003" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "yamux 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "libp2p-core", + "log", + "tokio-io", + "yamux", ] [[package]] name = "librocksdb-sys" -version = "5.18.3" +version = "6.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a0785e816e1e11e7599388a492c61ef80ddc2afc91e313e61662cce537809be" dependencies = [ - "bindgen 0.47.3 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "glob 0.2.11 (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", + "libc", ] [[package]] name = "libsecp256k1" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df6edf84fd62aad1c93932b39324eaeda3912c1d26bc18dfaee6293848e49a50" dependencies = [ - "arrayref 0.3.5 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.0 (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.2", + "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.48 (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.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" dependencies = [ - "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3", ] [[package]] name = "lock_api" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff" dependencies = [ - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.0.0", ] [[package]] name = "lock_api" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57b3997725d2b60dbec1297f6c2e2957cc383db1cebd6be812163f969c7d586" dependencies = [ - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.0.0", ] [[package]] name = "log" -version = "0.3.9" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", ] [[package]] -name = "log" -version = "0.4.8" +name = "lru" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d8f669d42c72d18514dfca8115689c5f6370a17d980cb5bd777a67f404594c8" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "hashbrown 0.5.0", ] [[package]] -name = "lru-cache" -version = "0.1.2" +name = "lru" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0609345ddee5badacf857d4f547e0e5a2e987db77085c24cd887f73573a04237" dependencies = [ - "linked-hash-map 0.5.2 (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 = "malloc_size_of_derive" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e37c5d4cd9473c5f4c9c111f033f15d4df9bd378fdf615944e360a4f55a05f0b" dependencies = [ - "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.11 (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.6", + "syn 1.0.11", + "synstructure", ] [[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.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" [[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.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dabfe0a8c69954ae3bcfc5fc14260a85fb80e1bf9f86a155f668d10a67e93dd" 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.2.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" - -[[package]] -name = "merkle-patricia-trie" -version = "0.1.0" -dependencies = [ - "criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "ethereum-types 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak-hash 0.4.1 (git+https://github.com/darwinia-network/parity-common.git)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.4.4 (git+https://github.com/darwinia-network/parity-common.git)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "uuid 0.7.4 (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.2 (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" -dependencies = [ - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2", + "keccak", + "rand_core 0.4.2", + "zeroize 1.1.0", ] [[package]] name = "miniz_oxide" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f3f74f726ae935c3f514300cc6773a0c9492abc5e972d42ba0c0ebb88757625" 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", + "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", + "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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04b9f127583ed176e163fb9ec6f3e793b87e21deedd5734a69386a18a0151" + [[package]] name = "multistream-select" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc3ef54aab1b2e37e911bcb99e376dbe4c1e0710afcdb8428608e4f993b39c47" 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)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "log", + "smallvec 0.6.13", + "tokio-io", + "unsigned-varint", ] [[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)", -] - -[[package]] -name = "native-tls" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -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.26 (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.53 (registry+https://github.com/rust-lang/crates.io-index)", - "schannel 0.1.16 (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)", + "rand 0.3.23", ] [[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.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.48 (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 = "0.4.6" +version = "0.5.0" dependencies = [ - "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)", - "ctrlc 3.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "darwinia-balances 0.2.0", - "darwinia-cli 0.1.0", - "exit-future 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb-memorydb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", - "libp2p 0.13.1 (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-rpc 2.0.0", - "node-runtime 0.2.0", - "parity-scale-codec 1.1.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.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-contracts 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-finality-tracker 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-im-online 0.1.0", - "srml-indices 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-timestamp 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-transaction-payment 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "structopt 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-basic-authorship 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-build-script-utils 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-chain-spec 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client-db 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-babe 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-finality-grandpa 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-finality-grandpa-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keyring 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keystore 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-network 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-offchain 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-rpc 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-service 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-service-test 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-telemetry 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-transaction-pool 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "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)", - "transaction-factory 0.0.1 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "vergen 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", + "clear_on_drop", + "console_error_panic_hook", + "console_log", + "ctrlc", + "frame-support", + "frame-system", + "futures 0.1.29", + "futures 0.3.1", + "hex-literal", + "js-sys", + "jsonrpc-core", + "kvdb-memorydb", + "libp2p", + "log", + "node-executor", + "node-primitives", + "node-rpc", + "node-runtime 2.0.0 (git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402)", + "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.6.5", + "rand 0.7.2", + "sc-authority-discovery", + "sc-basic-authority", + "sc-chain-spec", + "sc-cli", + "sc-client", + "sc-client-api", + "sc-client-db", + "sc-consensus-babe", + "sc-finality-grandpa", + "sc-keystore", + "sc-network", + "sc-offchain", + "sc-rpc", + "sc-service", + "sc-service-test", + "sc-telemetry", + "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", + "tokio 0.1.22", + "vergen", + "wasm-bindgen", + "wasm-bindgen-futures", ] [[package]] name = "node-executor" version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "node-runtime 0.2.0", - "substrate-executor 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "node-primitives", + "node-runtime 2.0.0 (git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402)", + "parity-scale-codec", + "sc-executor", + "sp-core", + "sp-io", + "sp-state-machine", + "sp-trie", + "trie-root", ] [[package]] name = "node-primitives" version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-serializer 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "sp-core", + "sp-runtime", ] [[package]] name = "node-rpc" version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "node-primitives 2.0.0", - "node-runtime 0.2.0", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-contracts-rpc 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system-rpc 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-transaction-payment-rpc 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-transaction-pool 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "jsonrpc-core", + "node-primitives", + "node-runtime 2.0.0 (git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402)", + "pallet-contracts-rpc", + "pallet-transaction-payment-rpc", + "sc-client", + "sp-runtime", + "sp-transaction-pool", + "substrate-frame-rpc-system", ] [[package]] -name = "node-rpc-client" +name = "node-runtime" 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", - "substrate-rpc 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "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-rpc-runtime-api", + "pallet-democracy", + "pallet-elections-phragmen", + "pallet-finality-tracker", + "pallet-grandpa", + "pallet-im-online", + "pallet-indices", + "pallet-membership", + "pallet-nicks", + "pallet-offences", + "pallet-randomness-collective-flip", + "pallet-session", + "pallet-staking", + "pallet-staking-reward-curve", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-treasury", + "pallet-utility", + "parity-scale-codec", + "rustc-hex", + "safe-mix", + "serde", + "sp-api", + "sp-authority-discovery", + "sp-block-builder", + "sp-consensus-babe", + "sp-core", + "sp-inherents", + "sp-keyring", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", + "sp-transaction-pool", + "sp-version", + "substrate-wasm-builder-runner", ] [[package]] name = "node-runtime" -version = "0.2.0" +version = "2.0.0" +dependencies = [ + "darwinia-balances", + "darwinia-staking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-rpc-runtime-api", + "integer-sqrt", + "node-primitives", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-collective", + "pallet-contracts", + "pallet-contracts-rpc-runtime-api", + "pallet-finality-tracker", + "pallet-grandpa", + "pallet-im-online", + "pallet-indices", + "pallet-membership", + "pallet-nicks", + "pallet-offences", + "pallet-randomness-collective-flip", + "pallet-session", + "pallet-staking-reward-curve", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-treasury", + "pallet-utility", + "parity-scale-codec", + "rustc-hex", + "safe-mix", + "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-transaction-factory" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "darwinia-balances 0.2.0", - "darwinia-eth-backing 0.2.0", - "darwinia-eth-relay 0.2.0", - "darwinia-kton 0.2.0", - "darwinia-staking 0.3.0", - "integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "node-primitives 2.0.0", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-staking-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-version 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-authority-discovery 0.1.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-authorship 0.1.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-babe 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-contracts 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-contracts-rpc-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-executive 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-finality-tracker 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-grandpa 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-im-online 0.1.0", - "srml-indices 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-offences 1.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-randomness-collective-flip 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-session 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-sudo 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system-rpc-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-timestamp 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-transaction-payment 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-transaction-payment-rpc-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-utility 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-authority-discovery-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-block-builder-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keyring 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-offchain-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-session 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-transaction-pool-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-wasm-builder-runner 1.0.4 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "log", + "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.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e657a6ec97f9a3ba46f6f7034ea6db9fcd5b71d25ef1074b7bc03da49be0e8e" [[package]] name = "nom" version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" dependencies = [ - "memchr 2.2.1 (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.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9c3f34cdd24f334cb265d9bf8bfa8a241920d026916785747a92f0e55541a1a" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg", + "num-integer", + "num-traits", ] [[package]] name = "num-integer" version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg", + "num-traits", ] [[package]] name = "num-rational" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2885278d5fe2adc2f75ced642d52d879bffaceb5a2e0b1d4309ffdfb239b454" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num-bigint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg", + "num-bigint", + "num-integer", + "num-traits", ] [[package]] name = "num-traits" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c81ffc11c212fa327657cb19dd85eb7419e163b5b076bede2bdb5c974c07e4" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg", ] [[package]] name = "num_cpus" version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72" dependencies = [ - "hermit-abi 0.1.5 (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 = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "532c29a261168a45ce28948f9537ddd7a5dd272cc513b3017b1e82a88f962c37" dependencies = [ - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1", ] [[package]] name = "once_cell" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d584f08c2d717d5c23a6414fc2822b71c651560713e54fa7eace675f758a355e" + +[[package]] +name = "once_cell" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891f486f630e5c5a4916c7e16c4b24a53e78c860b646e9f8e005e4f16847bfed" [[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.26" +name = "owning_ref" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" 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.53 (registry+https://github.com/rust-lang/crates.io-index)", + "stable_deref_trait", ] [[package]] -name = "openssl-probe" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "pallet-authority-discovery" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "pallet-session", + "parity-scale-codec", + "serde", + "sp-application-crypto", + "sp-authority-discovery", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] [[package]] -name = "openssl-sys" -version = "0.9.53" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "pallet-authorship" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.48 (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)", + "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 = "output_vt100" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "pallet-babe" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "hex-literal", + "pallet-session", + "pallet-timestamp", + "parity-scale-codec", + "serde", + "sp-consensus-babe", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", + "sp-timestamp", +] + +[[package]] +name = "pallet-balances" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support", + "frame-system", + "parity-scale-codec", + "safe-mix", + "serde", + "sp-runtime", + "sp-std", ] [[package]] -name = "owning_ref" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "pallet-collective" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "safe-mix", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-contracts" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "parity-wasm", + "pwasm-utils", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-sandbox", + "sp-std", + "wasmi-validation", +] + +[[package]] +name = "pallet-contracts-rpc" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "pallet-contracts-rpc-runtime-api", + "parity-scale-codec", + "serde", + "sp-blockchain", + "sp-core", + "sp-rpc", + "sp-runtime", +] + +[[package]] +name = "pallet-contracts-rpc-runtime-api" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "parity-scale-codec", + "sp-api", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-democracy" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "safe-mix", + "serde", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-elections-phragmen" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "sp-phragmen", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-finality-tracker" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "parity-scale-codec", + "serde", + "sp-finality-tracker", + "sp-inherents", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-grandpa" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "pallet-finality-tracker", + "pallet-session", + "parity-scale-codec", + "serde", + "sp-core", + "sp-finality-grandpa", + "sp-runtime", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-im-online" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +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", +] + +[[package]] +name = "pallet-indices" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "safe-mix", + "serde", + "sp-core", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-membership" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-nicks" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-offences" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-runtime", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-randomness-collective-flip" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "safe-mix", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-session" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "pallet-timestamp", + "parity-scale-codec", + "safe-mix", + "serde", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", + "sp-trie", +] + +[[package]] +name = "pallet-staking" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "safe-mix", + "serde", + "sp-io", + "sp-keyring", + "sp-phragmen", + "sp-runtime", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-staking-reward-curve" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", +] + +[[package]] +name = "pallet-sudo" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-timestamp" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "parity-scale-codec", + "serde", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-timestamp", +] + +[[package]] +name = "pallet-transaction-payment" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "pallet-transaction-payment-rpc-runtime-api", + "parity-scale-codec", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-transaction-payment-rpc" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "pallet-transaction-payment-rpc-runtime-api", + "parity-scale-codec", + "serde", + "sp-blockchain", + "sp-core", + "sp-rpc", + "sp-runtime", +] + +[[package]] +name = "pallet-transaction-payment-rpc-runtime-api" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-support", + "parity-scale-codec", + "serde", + "sp-api", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-treasury" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "pallet-balances", + "parity-scale-codec", + "serde", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-utility" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "parity-bytes" -version = "0.1.0" -source = "git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d#b0317f649ab2c665b7987b8475878fc4d2e1f81d" +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.5 (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.2 (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.2", + "bytes 0.4.12", + "data-encoding", + "parity-multihash 0.1.3", + "percent-encoding 1.0.1", + "serde", + "unsigned-varint", + "url 1.7.2", ] [[package]] name = "parity-multiaddr" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82afcb7461eae5d122543d8be1c57d306ed89af2d6ff7f8b0f5a3cc8f7e511bc" dependencies = [ - "arrayref 0.3.5 (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.2 (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.2.0 (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)", - "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "bs58 0.3.0", + "byteorder 1.3.2", + "bytes 0.4.12", + "data-encoding", + "parity-multihash 0.2.0", + "percent-encoding 2.1.0", + "serde", + "unsigned-varint", + "url 2.1.0", ] [[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.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.0 (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", ] [[package]] name = "parity-multihash" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c70cad855872dd51ce6679e823efb6434061a2c1782a1686438aabf506392cdd" 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.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.0 (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", ] [[package]] name = "parity-scale-codec" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9f9d99dae413590a5f37e43cd99b94d4e62a244160562899126913ea7108673" 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.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[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.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "570093f39f786beea92dcc09e45d8aae7841516ac19a50431953ac82a0e8f85c" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "malloc_size_of_derive 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)", + "cfg-if", + "malloc_size_of_derive", + "winapi 0.3.8", ] [[package]] name = "parity-wasm" -version = "0.40.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "parking_lot" -version = "0.6.4" +version = "0.41.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.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" [[package]] name = "parking_lot" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" 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.1.5", + "parking_lot_core 0.4.0", ] [[package]] name = "parking_lot" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" dependencies = [ - "lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.5.0 (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 0.2.0", + "parking_lot_core 0.5.0", + "rustc_version", ] [[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.2 (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_core" -version = "0.3.1" -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.5.6 (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)", + "lock_api 0.3.2", + "parking_lot_core 0.6.2", + "rustc_version", ] [[package]] name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" 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)", + "libc", + "rand 0.6.5", + "rustc_version", + "smallvec 0.6.13", + "winapi 0.3.8", ] [[package]] name = "parking_lot_core" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c" 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)", + "cfg-if", + "cloudabi", + "libc", + "rand 0.6.5", + "redox_syscall", + "rustc_version", + "smallvec 0.6.13", + "winapi 0.3.8", ] [[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 = "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.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] name = "pbkdf2" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" dependencies = [ - "byteorder 1.3.2 (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.2", + "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 = "pin-utils" -version = "0.1.0-alpha.4" +name = "petgraph" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" +dependencies = [ + "fixedbitset", +] [[package]] -name = "pkg-config" -version = "0.3.17" +name = "pin-project" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b90146c7216e4cb534069fb91366de4ea0ea353105ee45ed297e2d1619e469" +dependencies = [ + "pin-project-internal", +] [[package]] -name = "plain" -version = "0.2.3" +name = "pin-project-internal" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44ca92f893f0656d3cba8158dd0f2b99b94de256a4a54e870bd6922fcc6c8355" +dependencies = [ + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", +] [[package]] -name = "ppv-lite86" -version = "0.2.6" +name = "pin-project-lite" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0af6cbca0e6e3ce8692ee19fb8d734b641899e07b68eb73e9bbbd32f1703991" [[package]] -name = "pretty_assertions" -version = "0.6.1" +name = "pin-utils" +version = "0.1.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -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)", -] +checksum = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" [[package]] -name = "primitive-types" -version = "0.6.1" -source = "git+https://github.com/darwinia-network/parity-common.git#df9eebad700c076c13afe053a6c368a8926d94ff" -dependencies = [ - "fixed-hash 0.5.1 (git+https://github.com/darwinia-network/parity-common.git)", - "impl-codec 0.4.2 (git+https://github.com/darwinia-network/parity-common.git)", - "impl-rlp 0.2.1 (git+https://github.com/darwinia-network/parity-common.git)", - "impl-serde 0.2.3 (git+https://github.com/darwinia-network/parity-common.git)", - "uint 0.8.2 (git+https://github.com/darwinia-network/parity-common.git)", -] +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 = "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.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0253db64c26d8b4e7896dd2063b516d2a1b9e0a5da26b5b78335f236d1e9522" 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.2.3 (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", + "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.5 (registry+https://github.com/rust-lang/crates.io-index)", + "toml", ] [[package]] name = "proc-macro-error" -version = "0.2.6" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c98547ceaea14eeb26fcadf51dc70d01a2479a7839170eae133721105e4428" dependencies = [ - "proc-macro2 1.0.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-error-attr", + "proc-macro2 1.0.6", + "quote 1.0.2", + "rustversion", + "syn 1.0.11", +] + +[[package]] +name = "proc-macro-error-attr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2bf5d493cf5d3e296beccfd61794e445e830dfc8070a9c248ad3ee071392c6c" +dependencies = [ + "proc-macro2 1.0.6", + "quote 1.0.2", + "rustversion", + "syn 1.0.11", + "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.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[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.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e470a8dc4aeae2dee2f335e8f533e2d4b347e1434e5671afc49b054592f27" dependencies = [ - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0", +] + +[[package]] +name = "prost" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d14b1c185652833d24aaad41c5832b0be5616a590227c1fbff57c616754b23" +dependencies = [ + "byteorder 1.3.2", + "bytes 0.4.12", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb788126ea840817128183f8f603dce02cb7aea25c2a0b764359d8e20010702e" +dependencies = [ + "bytes 0.4.12", + "heck", + "itertools", + "log", + "multimap", + "petgraph", + "prost", + "prost-types", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e7dc378b94ac374644181a2247cebf59a6ec1c88b49ac77f3a94b86b79d0e11" +dependencies = [ + "failure", + "itertools", + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + +[[package]] +name = "prost-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de482a366941c8d56d19b650fac09ca08508f2a696119ee7513ad590c8bac6f" +dependencies = [ + "bytes 0.4.12", + "prost", ] [[package]] name = "protobuf" version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40361836defdd5871ff7e84096c6f6444af7fc157f8ef1789f54f147687caa20" [[package]] name = "pwasm-utils" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f7a12f176deee919f4ba55326ee17491c8b707d0987aed822682c821b660192" dependencies = [ - "byteorder 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)", - "parity-wasm 0.40.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2", + "log", + "parity-wasm", ] [[package]] name = "quick-error" version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" [[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.6 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6", ] [[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)", -] - -[[package]] -name = "rand" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -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.3.1 (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", + "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.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412" dependencies = [ - "getrandom 0.1.13 (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", + "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.13 (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.56 (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", + "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)", -] - -[[package]] -name = "rand_xoshiro" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "raw-cpuid" -version = "6.1.0" +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.48 (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.11.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque", + "crossbeam-queue 0.2.1", + "crossbeam-utils 0.7.0", + "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.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d" dependencies = [ - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (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.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "failure", + "rand_os", + "redox_syscall", + "rust-argon2", ] [[package]] name = "regex" version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" dependencies = [ - "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.6 (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" -dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", ] [[package]] name = "regex-syntax" version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" [[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.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6747f8da1f2b1fabbee1aaa4eb8a11abf9adef0bf58a41cee45db5d59cecdfac" dependencies = [ - "cc 1.0.48 (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.33 (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 = "git+https://github.com/darwinia-network/parity-common.git#df9eebad700c076c13afe053a6c368a8926d94ff" -dependencies = [ - "rustc-hex 2.0.1 (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" -dependencies = [ - "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rlp_derive" -version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-common.git#df9eebad700c076c13afe053a6c368a8926d94ff" -dependencies = [ - "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)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "lazy_static", + "libc", + "spin", + "untrusted", + "web-sys", + "winapi 0.3.8", ] [[package]] name = "rocksdb" -version = "0.11.0" +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 5.18.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "librocksdb-sys", ] [[package]] name = "rpassword" version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59f0e97173c514b9036cd450c195a6483ba81055c6fa0f1bff3ab563f47d44a" 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.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf" dependencies = [ - "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2b_simd 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.1", + "blake2b_simd", + "crossbeam-utils 0.6.6", ] [[package]] name = "rustc-demangle" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" [[package]] name = "rustc-hex" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "403bb3a286107a04825a5f82e1270acc1e14028d3d554d7a1e08914549575ab8" [[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 = "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.9 (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.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rw-stream-sink" -version = "0.1.2" -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)", - "tokio-io 0.1.12 (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" - -[[package]] -name = "safe-mix" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.1", + "log", + "ring", + "sct", + "webpki", ] [[package]] -name = "safemem" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "same-file" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "schannel" -version = "0.1.16" +name = "rustversion" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a0538bd897e17257b0128d2fd95c2ed6df939374073a36166051a79e2eb7986" 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)", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] -name = "schnorrkel" -version = "0.8.5" +name = "rw-stream-sink" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9cbe61c20455d3015b2bb7be39e1872310283b8e5a52f5b242b0ac7581fe78" 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.0 (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)", + "bytes 0.4.12", + "futures 0.1.29", + "tokio-io", ] [[package]] -name = "scopeguard" -version = "0.3.3" +name = "ryu" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" [[package]] -name = "scopeguard" +name = "safe-mix" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "scroll" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7bf422d23a88c16d5090d455f182bc99c60af4df6a345c63428acf5129e347" dependencies = [ - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "scroll_derive 0.9.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version", ] [[package]] -name = "scroll_derive" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "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)", - "syn 0.15.44 (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" -dependencies = [ - "ring 0.16.9 (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" -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)", -] - -[[package]] -name = "security-framework-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "core-foundation-sys 0.6.2 (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" -dependencies = [ - "semver-parser 0.7.0 (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" - -[[package]] -name = "send_wrapper" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "serde" -version = "1.0.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "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" +name = "sc-authority-discovery" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "bytes 0.4.12", + "derive_more", + "futures 0.3.1", + "futures-timer 2.0.2", + "libp2p", + "log", + "parity-scale-codec", + "prost", + "prost-build", + "sc-client-api", + "sc-keystore", + "sc-network", + "serde_json", + "sp-authority-discovery", + "sp-blockchain", + "sp-core", + "sp-runtime", +] + +[[package]] +name = "sc-basic-authority" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "futures 0.3.1", + "log", + "parity-scale-codec", + "sc-block-builder", + "sc-client", + "sc-client-api", + "sc-telemetry", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-transaction-pool", + "tokio-executor 0.2.0-alpha.6", +] + +[[package]] +name = "sc-block-builder" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "proc-macro2 1.0.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-core", + "sp-runtime", + "sp-state-machine", ] [[package]] -name = "serde_json" -version = "1.0.44" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "sc-chain-spec" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "itoa 0.4.4 (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)", + "impl-trait-for-tuples", + "sc-chain-spec-derive", + "sc-network", + "sc-telemetry", + "serde", + "serde_json", + "sp-core", + "sp-runtime", ] [[package]] -name = "sha-1" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "sc-chain-spec-derive" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" 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)", + "proc-macro-crate", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] -name = "sha1" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "sha2" +name = "sc-cli" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "ansi_term 0.12.1", + "app_dirs", + "atty", + "clap", + "derive_more", + "env_logger 0.7.1", + "fdlimit", + "futures 0.3.1", + "lazy_static", + "log", + "names", + "regex", + "rpassword", + "sc-client-api", + "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", + "time", + "tokio 0.2.6", +] + +[[package]] +name = "sc-client" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "derive_more", + "fnv", + "futures 0.3.1", + "hash-db", + "hex-literal", + "kvdb", + "log", + "parity-scale-codec", + "parking_lot 0.9.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-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", + "sp-version", + "tracing", +] + +[[package]] +name = "sc-client-api" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "derive_more", + "fnv", + "futures 0.3.1", + "hash-db", + "hex-literal", + "kvdb", + "log", + "parity-scale-codec", + "parking_lot 0.9.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-transaction-pool", + "sp-trie", + "sp-version", +] + +[[package]] +name = "sc-client-db" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "hash-db", + "kvdb", + "kvdb-memorydb", + "kvdb-rocksdb", + "linked-hash-map", + "log", + "parity-scale-codec", + "parking_lot 0.9.0", + "sc-client", + "sc-client-api", + "sc-executor", + "sc-state-db", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-runtime", + "sp-state-machine", + "sp-trie", +] + +[[package]] +name = "sc-consensus-babe" version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -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)", -] - -[[package]] -name = "sha3" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -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)", -] - -[[package]] -name = "shell32-sys" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -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)", -] - -[[package]] -name = "slab" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "slog" -version = "2.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "erased-serde 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "slog-async" -version = "2.3.0" -source = "git+https://github.com/paritytech/slog-async#107848e7ded5e80dc43f6296c2b96039eb92c0a5" -dependencies = [ - "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.6 (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" -dependencies = [ - "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "erased-serde 0.3.9 (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.44 (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" -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)", -] - -[[package]] -name = "slog_derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "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)", - "syn 0.15.44 (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" -dependencies = [ - "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "smallvec" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "snow" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "derive_more", + "fork-tree", + "futures 0.1.29", + "futures 0.3.1", + "futures-timer 0.4.0", + "log", + "merlin", + "num-bigint", + "num-rational", + "num-traits", + "parity-scale-codec", + "parking_lot 0.9.0", + "pdqselect", + "rand 0.7.2", + "sc-client", + "sc-client-api", + "sc-consensus-slots", + "sc-consensus-uncles", + "sc-keystore", + "sc-telemetry", + "schnorrkel", + "sp-api", + "sp-application-crypto", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-core", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-timestamp", + "sp-version", +] + +[[package]] +name = "sc-consensus-slots" +version = "0.8.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "arrayref 0.3.5 (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.9 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.1", + "futures-timer 2.0.2", + "log", + "parity-scale-codec", + "parking_lot 0.9.0", + "sc-client-api", + "sc-telemetry", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-inherents", + "sp-runtime", ] [[package]] -name = "soketto" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "sc-consensus-uncles" +version = "0.8.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "flate2 1.0.13 (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)", - "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.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "log", + "sc-client-api", + "sp-authorship", + "sp-consensus", + "sp-core", + "sp-inherents", + "sp-runtime", ] [[package]] -name = "sourcefile" -version = "0.1.4" -source = "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" - -[[package]] -name = "sr-api" +name = "sc-executor" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api-proc-macro 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-version 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-state-machine 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "sr-api-proc-macro" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "derive_more", + "lazy_static", + "libsecp256k1", + "log", + "parity-scale-codec", + "parity-wasm", + "parking_lot 0.9.0", + "sc-executor-common", + "sc-executor-wasmi", + "sc-executor-wasmtime", + "sp-core", + "sp-externalities", + "sp-io", + "sp-panic-handler", + "sp-runtime-interface", + "sp-serializer", + "sp-trie", + "sp-version", + "sp-wasm-interface", + "wasmi", +] + +[[package]] +name = "sc-executor-common" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" 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.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "log", + "parity-scale-codec", + "sp-core", + "sp-runtime-interface", + "sp-serializer", + "sp-wasm-interface", + "wasmi", ] [[package]] -name = "sr-arithmetic" +name = "sc-executor-wasmi" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-debug-derive 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "log", + "parity-scale-codec", + "parity-wasm", + "sc-executor-common", + "sp-core", + "sp-externalities", + "sp-runtime-interface", + "sp-wasm-interface", + "wasmi", ] [[package]] -name = "sr-eth-primitives" -version = "0.2.0" -dependencies = [ - "ethbloom 0.8.1 (git+https://github.com/darwinia-network/parity-common.git)", - "ethereum-types 0.8.0 (git+https://github.com/darwinia-network/parity-common.git)", - "fixed-hash 0.5.1 (git+https://github.com/darwinia-network/parity-common.git)", - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-codec 0.4.2 (git+https://github.com/darwinia-network/parity-common.git)", - "impl-rlp 0.2.1 (git+https://github.com/darwinia-network/parity-common.git)", - "keccak-hash 0.4.1 (git+https://github.com/darwinia-network/parity-common.git)", - "keccak-hasher 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.1 (git+https://github.com/darwinia-network/parity-common.git)", - "rlp 0.4.4 (git+https://github.com/darwinia-network/parity-common.git)", - "rlp_derive 0.1.0 (git+https://github.com/darwinia-network/parity-common.git)", - "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "triehash 0.8.1 (git+https://github.com/darwinia-network/parity-common.git)", -] - -[[package]] -name = "sr-io" +name = "sc-executor-wasmtime" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libsecp256k1 0.3.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.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-externalities 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-runtime-interface 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-state-machine 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-trie 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "sr-primitives" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "cranelift-native", + "cranelift-wasm", + "log", + "parity-scale-codec", + "parity-wasm", + "sc-executor-common", + "sp-core", + "sp-externalities", + "sp-runtime-interface", + "sp-wasm-interface", + "wasmi", + "wasmtime-environ", + "wasmtime-jit", + "wasmtime-runtime", +] + +[[package]] +name = "sc-finality-grandpa" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -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.0 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-arithmetic 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-application-crypto 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "sr-sandbox" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "finality-grandpa", + "fork-tree", + "futures 0.1.29", + "futures 0.3.1", + "futures-timer 2.0.2", + "log", + "parity-scale-codec", + "parking_lot 0.9.0", + "rand 0.7.2", + "sc-client", + "sc-client-api", + "sc-keystore", + "sc-network", + "sc-network-gossip", + "sc-telemetry", + "serde_json", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-finality-grandpa", + "sp-finality-tracker", + "sp-inherents", + "sp-runtime", +] + +[[package]] +name = "sc-keystore" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "wasmi 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "hex", + "parking_lot 0.9.0", + "rand 0.7.2", + "serde_json", + "sp-application-crypto", + "sp-core", + "subtle 2.2.2", ] [[package]] -name = "sr-staking-primitives" +name = "sc-network" +version = "0.8.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "bitflags", + "bytes 0.4.12", + "derive_more", + "either", + "erased-serde", + "fnv", + "fork-tree", + "futures 0.1.29", + "futures 0.3.1", + "futures-timer 0.4.0", + "libp2p", + "linked-hash-map", + "linked_hash_set", + "log", + "lru 0.4.3", + "parity-scale-codec", + "parking_lot 0.9.0", + "rand 0.7.2", + "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-runtime", + "tokio-io", + "unsigned-varint", + "void", + "zeroize 1.1.0", +] + +[[package]] +name = "sc-network-gossip" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "futures 0.1.29", + "futures 0.3.1", + "futures-timer 0.4.0", + "libp2p", + "log", + "lru 0.1.17", + "parking_lot 0.9.0", + "sc-network", + "sp-runtime", ] [[package]] -name = "sr-std" +name = "sc-offchain" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" - -[[package]] -name = "sr-version" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "bytes 0.4.12", + "fnv", + "futures 0.1.29", + "futures 0.3.1", + "futures-timer 2.0.2", + "hyper 0.12.35", + "hyper-rustls", + "log", + "num_cpus", + "parity-scale-codec", + "parking_lot 0.9.0", + "rand 0.7.2", + "sc-client-api", + "sc-keystore", + "sc-network", + "sp-api", + "sp-core", + "sp-offchain", + "sp-runtime", + "threadpool", +] + +[[package]] +name = "sc-peerset" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "srml-authority-discovery" -version = "0.1.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-session 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-application-crypto 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "futures 0.3.1", + "libp2p", + "log", + "serde_json", ] [[package]] -name = "srml-authorship" -version = "0.1.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "srml-babe" +name = "sc-rpc" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-staking-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-session 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-timestamp 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "srml-balances" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "futures 0.3.1", + "hash-db", + "jsonrpc-core", + "jsonrpc-pubsub", + "log", + "parity-scale-codec", + "parking_lot 0.9.0", + "sc-client", + "sc-client-api", + "sc-executor", + "sc-keystore", + "sc-rpc-api", + "serde_json", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-rpc", + "sp-runtime", + "sp-session", + "sp-state-machine", + "sp-transaction-pool", + "sp-version", +] + +[[package]] +name = "sc-rpc-api" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keyring 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "srml-contracts" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "derive_more", + "futures 0.3.1", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "jsonrpc-pubsub", + "log", + "parity-scale-codec", + "parking_lot 0.9.0", + "serde", + "serde_json", + "sp-core", + "sp-rpc", + "sp-transaction-pool", + "sp-version", +] + +[[package]] +name = "sc-rpc-server" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.40.3 (registry+https://github.com/rust-lang/crates.io-index)", - "pwasm-utils 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-sandbox 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "wasmi-validation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core", + "jsonrpc-http-server", + "jsonrpc-pubsub", + "jsonrpc-ws-server", + "log", + "serde", + "serde_json", + "sp-runtime", ] [[package]] -name = "srml-contracts-rpc" +name = "sc-service" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -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)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-contracts-rpc-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-rpc-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "srml-contracts-rpc-runtime-api" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "derive_more", + "exit-future", + "futures 0.1.29", + "futures 0.3.1", + "grafana-data-source", + "lazy_static", + "log", + "parity-multiaddr 0.5.0", + "parity-scale-codec", + "parking_lot 0.9.0", + "sc-chain-spec", + "sc-client", + "sc-client-api", + "sc-client-db", + "sc-executor", + "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-core", + "sp-io", + "sp-runtime", + "sp-session", + "sp-transaction-pool", + "sysinfo", + "target_info", + "tokio-executor 0.1.9", + "tokio-timer", + "tracing", +] + +[[package]] +name = "sc-service-test" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "env_logger 0.7.1", + "fdlimit", + "futures 0.1.29", + "futures 0.3.1", + "log", + "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 = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "log", + "parity-scale-codec", + "parking_lot 0.9.0", + "sp-core", ] [[package]] -name = "srml-executive" +name = "sc-telemetry" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.29", + "futures 0.3.1", + "futures-timer 2.0.2", + "libp2p", + "log", + "parking_lot 0.9.0", + "rand 0.7.2", + "serde", + "slog", + "slog-json", + "slog-scope", + "take_mut", + "tokio-io", + "void", +] + +[[package]] +name = "sc-tracing" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "erased-serde", + "grafana-data-source", + "log", + "parking_lot 0.9.0", + "sc-telemetry", + "serde", + "serde_json", + "slog", + "tracing-core", ] [[package]] -name = "srml-finality-tracker" +name = "sc-transaction-graph" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "derive_more", + "futures 0.3.1", + "log", + "parking_lot 0.9.0", + "serde", + "sp-core", + "sp-runtime", + "sp-transaction-pool", ] [[package]] -name = "srml-grandpa" +name = "sc-transaction-pool" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-staking-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-finality-tracker 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-session 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-finality-grandpa-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "derive_more", + "futures 0.3.1", + "log", + "parity-scale-codec", + "parking_lot 0.9.0", + "sc-client-api", + "sc-transaction-graph", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-runtime", + "sp-transaction-pool", ] [[package]] -name = "srml-im-online" -version = "0.1.0" +name = "schnorrkel" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eacd8381b3c37840c9c9f40472af529e49975bdcbc24f83c31059fd6539023d3" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-staking-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-authorship 0.1.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-session 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-application-crypto 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-offchain 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "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 = "srml-indices" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keyring 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] +name = "scopeguard" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" [[package]] -name = "srml-metadata" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] +name = "scopeguard" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" [[package]] -name = "srml-offences" -version = "1.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "scroll" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb2332cb595d33f7edd5700f4cbf94892e680c7f0ae56adab58a35190b66cb1" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-staking-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-balances 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "scroll_derive", ] [[package]] -name = "srml-randomness-collective-flip" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "scroll_derive" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8584eea9b9ff42825b46faf46a8c24d2cff13ec152fa2a50df788b87c07ee28" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] -name = "srml-session" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "sct" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-staking-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-timestamp 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-trie 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "ring", + "untrusted", ] [[package]] -name = "srml-sudo" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "semver-parser", ] [[package]] -name = "srml-support" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "bitmask 0.5.0 (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)", - "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)", - "parity-scale-codec 1.1.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)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-metadata 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support-procedural 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-state-machine 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "srml-support-procedural" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "srml-support-procedural-tools 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", -] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] -name = "srml-support-procedural-tools" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "srml-support-procedural-tools-derive 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", -] +name = "send_wrapper" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eddf2e8f50ced781f288c19f18621fa72a3779e3cb58dbf23b07469b0abeb4" [[package]] -name = "srml-support-procedural-tools-derive" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "serde" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" dependencies = [ - "proc-macro2 1.0.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive", ] [[package]] -name = "srml-system" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "serde_derive" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-version 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] -name = "srml-system-rpc" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "serde_json" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c575e0cc52bdd09b47f330f646cf59afc586e9c4e3ccd6fc1f625b8ea1dad7" 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)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system-rpc-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-transaction-pool 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "itoa", + "ryu", + "serde", ] [[package]] -name = "srml-system-rpc-runtime-api" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "sha-1" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "block-buffer", + "digest", + "fake-simd", + "opaque-debug", ] [[package]] -name = "srml-timestamp" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] +name = "sha1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" [[package]] -name = "srml-transaction-payment" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "sha2" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-transaction-payment-rpc-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "block-buffer", + "digest", + "fake-simd", + "opaque-debug", ] [[package]] -name = "srml-transaction-payment-rpc" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "sha3" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" 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)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-transaction-payment-rpc-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-rpc-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "block-buffer", + "byte-tools", + "digest", + "keccak", + "opaque-debug", ] [[package]] -name = "srml-transaction-payment-rpc-runtime-api" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "shell32-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "winapi 0.2.8", + "winapi-build", ] [[package]] -name = "srml-utility" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] +name = "shlex" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" [[package]] -name = "stable_deref_trait" -version = "1.1.1" +name = "slab" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] -name = "static_assertions" -version = "0.2.5" +name = "slog" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99" +dependencies = [ + "erased-serde", +] [[package]] -name = "static_assertions" -version = "1.1.0" +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", +] [[package]] -name = "stream-cipher" -version = "0.3.2" +name = "slog-scope" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c44c89dd8b0ae4537d1ae318353eaf7840b4869c536e31c41e963d1ea523ee6" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "arc-swap", + "lazy_static", + "slog", ] [[package]] -name = "string" -version = "0.2.1" +name = "slog_derive" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a945ec7f7ce853e89ffa36be1e27dce9a43e82ff9093bf3461c30d5da74ed11b" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] -name = "string-interner" -version = "0.7.1" +name = "smallvec" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "maybe-uninit", ] [[package]] -name = "strsim" -version = "0.8.0" +name = "smallvec" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44e59e0c9fa00817912ae6e4e6e3c4fe04455e75699d06eedc7d85917ed8e8f4" [[package]] -name = "structopt" -version = "0.3.5" +name = "snow" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb767eee7d257ba202f0b9b08673bc13b22281632ef45267b19f13100accd2f" dependencies = [ - "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "structopt-derive 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "rand_core 0.5.1", + "ring", + "rustc_version", + "subtle 2.2.2", ] [[package]] -name = "structopt-derive" -version = "0.3.5" +name = "soketto" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bceb1a3a15232d013d9a3b7cac9e5ce8e2313f348f01d4bc1097e5e53aa07095" dependencies = [ - "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-error 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.1", + "bytes 0.4.12", + "flate2", + "futures 0.1.29", + "http 0.1.21", + "httparse", + "log", + "rand 0.6.5", + "sha1", + "smallvec 0.6.13", + "tokio-codec", + "tokio-io", ] [[package]] -name = "strum" -version = "0.15.0" +name = "sourcefile" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" [[package]] -name = "strum_macros" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "sp-api" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "heck 0.3.1 (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)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec", + "sp-api-proc-macro", + "sp-core", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-version", ] [[package]] -name = "substrate-application-crypto" +name = "sp-api-proc-macro" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "blake2-rfc", + "proc-macro-crate", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] -name = "substrate-authority-discovery-primitives" +name = "sp-application-crypto" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-std", ] [[package]] -name = "substrate-basic-authorship" +name = "sp-arithmetic" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "futures-preview 0.3.0-alpha.19 (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.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-block-builder 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-telemetry 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-transaction-pool 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "serde", + "sp-debug-derive", + "sp-std", ] [[package]] -name = "substrate-bip39" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "sp-authority-discovery" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" 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.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec", + "sp-api", + "sp-application-crypto", + "sp-runtime", + "sp-std", ] [[package]] -name = "substrate-block-builder" +name = "sp-authorship" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-block-builder-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-state-machine 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "parity-scale-codec", + "sp-inherents", + "sp-runtime", + "sp-std", ] [[package]] -name = "substrate-block-builder-runtime-api" +name = "sp-block-builder" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "parity-scale-codec", + "sp-api", + "sp-inherents", + "sp-runtime", + "sp-std", ] [[package]] -name = "substrate-build-script-utils" +name = "sp-blockchain" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "derive_more", + "log", + "lru 0.4.3", + "parity-scale-codec", + "parking_lot 0.9.0", + "sp-block-builder", + "sp-consensus", + "sp-runtime", + "sp-state-machine", +] [[package]] -name = "substrate-chain-spec" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "sp-consensus" +version = "0.8.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "impl-trait-for-tuples 0.1.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.44 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-chain-spec-derive 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-network 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-telemetry 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "derive_more", + "futures 0.3.1", + "futures-timer 0.4.0", + "libp2p", + "log", + "parity-scale-codec", + "parking_lot 0.9.0", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-version", ] [[package]] -name = "substrate-chain-spec-derive" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "sp-consensus-babe" +version = "0.8.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec", + "schnorrkel", + "sp-api", + "sp-application-crypto", + "sp-consensus", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-timestamp", ] [[package]] -name = "substrate-cli" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -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.13 (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.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "exit-future 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-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)", - "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)", - "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rpassword 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "structopt 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-header-metadata 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keyring 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-network 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-panic-handler 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-service 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-state-machine 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-telemetry 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "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)", -] - -[[package]] -name = "substrate-client" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "derive_more 0.15.0 (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)", - "futures-preview 0.3.0-alpha.19 (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.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-version 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-block-builder 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-executor 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-header-metadata 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keyring 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-state-machine 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-telemetry 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-trie 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "substrate-client-db" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", - "kvdb-memorydb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", - "kvdb-rocksdb 0.1.4 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", - "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.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-executor 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-header-metadata 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-state-db 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-state-machine 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-trie 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "substrate-consensus-babe" +name = "sp-core" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fork-tree 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 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)", - "merlin 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-bigint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.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.2 (registry+https://github.com/rust-lang/crates.io-index)", - "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-version 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-babe 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-application-crypto 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-block-builder-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-slots 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-uncles 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-header-metadata 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keystore 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-telemetry 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "substrate-consensus-babe-primitives" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "base58", + "blake2-rfc", + "byteorder 1.3.2", + "ed25519-dalek", + "hash-db", + "hash256-std-hasher", + "hex", + "impl-serde", + "lazy_static", + "libsecp256k1", + "log", + "num-traits", + "parity-scale-codec", + "parking_lot 0.9.0", + "primitive-types", + "rand 0.7.2", + "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" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "schnorrkel 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-application-crypto 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-slots 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] -name = "substrate-consensus-common" +name = "sp-externalities" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.13.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.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-version 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "environmental", + "sp-std", + "sp-storage", ] [[package]] -name = "substrate-consensus-slots" +name = "sp-finality-grandpa" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 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.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-telemetry 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "parity-scale-codec", + "serde", + "sp-api", + "sp-application-crypto", + "sp-runtime", + "sp-std", ] [[package]] -name = "substrate-consensus-uncles" +name = "sp-finality-tracker" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-authorship 0.1.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "parity-scale-codec", + "sp-inherents", + "sp-std", ] [[package]] -name = "substrate-debug-derive" +name = "sp-inherents" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "proc-macro2 1.0.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "parity-scale-codec", + "parking_lot 0.9.0", + "sp-core", + "sp-std", ] [[package]] -name = "substrate-executor" +name = "sp-io" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "cranelift-codegen 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-frontend 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-native 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-wasm 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.15.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.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.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.40.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-version 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-externalities 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-panic-handler 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-runtime-interface 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-serializer 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-trie 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-wasm-interface 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime-environ 0.2.0 (git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6)", - "wasmtime-jit 0.2.0 (git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6)", - "wasmtime-runtime 0.2.0 (git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6)", -] - -[[package]] -name = "substrate-externalities" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "environmental 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives-storage 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "hash-db", + "libsecp256k1", + "log", + "parity-scale-codec", + "sp-core", + "sp-externalities", + "sp-runtime-interface", + "sp-state-machine", + "sp-std", + "sp-trie", ] [[package]] -name = "substrate-finality-grandpa" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "finality-grandpa 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fork-tree 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.19 (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.0 (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.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "srml-finality-tracker 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-finality-grandpa-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-header-metadata 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keystore 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-network 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-telemetry 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-finality-grandpa-primitives" +name = "sp-keyring" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-application-crypto 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "lazy_static", + "sp-core", + "sp-runtime", + "strum", ] [[package]] -name = "substrate-header-metadata" +name = "sp-offchain" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "lru-cache 0.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)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "sp-api", + "sp-runtime", ] [[package]] -name = "substrate-inherents" +name = "sp-panic-handler" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "backtrace", + "log", ] [[package]] -name = "substrate-keyring" +name = "sp-phragmen" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "strum 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "strum_macros 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "serde", + "sp-runtime", + "sp-std", ] [[package]] -name = "substrate-keystore" +name = "sp-rpc" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hex 0.3.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.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-application-crypto 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "subtle 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "sp-core", ] [[package]] -name = "substrate-network" +name = "sp-runtime" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "erased-serde 0.3.9 (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 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.13.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-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (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.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (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.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-block-builder 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-header-metadata 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-peerset 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-offchain" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -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)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper-rustls 0.17.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.11.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (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.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keystore 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-network 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-offchain-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-transaction-pool 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-offchain-primitives" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "paste", + "rand 0.7.2", + "serde", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-inherents", + "sp-io", + "sp-std", +] + +[[package]] +name = "sp-runtime-interface" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "environmental", + "parity-scale-codec", + "primitive-types", + "sp-externalities", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-wasm-interface", + "static_assertions", ] [[package]] -name = "substrate-panic-handler" +name = "sp-runtime-interface-proc-macro" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "Inflector", + "proc-macro-crate", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] -name = "substrate-peerset" +name = "sp-sandbox" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.13.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)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec", + "sp-core", + "sp-io", + "sp-std", + "wasmi", ] [[package]] -name = "substrate-phragmen" +name = "sp-serializer" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "serde", + "serde_json", ] [[package]] -name = "substrate-primitives" +name = "sp-session" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -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.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ed25519-dalek 0.9.1 (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.0 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-serde 0.2.3 (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.3 (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.10 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.1 (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.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-debug-derive 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-externalities 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives-storage 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-runtime-interface 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "tiny-bip39 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.5.0 (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.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-primitives-storage" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "sp-api", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "sp-staking" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" 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)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-debug-derive 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "parity-scale-codec", + "sp-runtime", + "sp-std", ] [[package]] -name = "substrate-rpc" +name = "sp-state-machine" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "futures-preview 0.3.0-alpha.19 (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.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.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-version 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-executor 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keystore 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-rpc-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-rpc-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-session 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-state-machine 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-transaction-pool 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "substrate-rpc-api" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +dependencies = [ + "hash-db", + "log", + "num-traits", + "parity-scale-codec", + "parking_lot 0.9.0", + "rand 0.7.2", + "sp-core", + "sp-externalities", + "sp-panic-handler", + "sp-trie", + "trie-db", + "trie-root", +] + +[[package]] +name = "sp-std" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.19 (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.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.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 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_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-version 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-rpc-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-transaction-graph 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", -] - -[[package]] -name = "substrate-rpc-primitives" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" + +[[package]] +name = "sp-storage" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "impl-serde", + "serde", + "sp-debug-derive", + "sp-std", ] [[package]] -name = "substrate-rpc-servers" +name = "sp-timestamp" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-http-server 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-pubsub 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-ws-server 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)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "impl-trait-for-tuples", + "parity-scale-codec", + "sp-api", + "sp-inherents", + "sp-runtime", + "sp-std", ] [[package]] -name = "substrate-runtime-interface" +name = "sp-transaction-pool" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "environmental 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "static_assertions 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-externalities 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-runtime-interface-proc-macro 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-wasm-interface 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "derive_more", + "futures 0.3.1", + "log", + "parity-scale-codec", + "serde", + "sp-api", + "sp-runtime", ] [[package]] -name = "substrate-runtime-interface-proc-macro" +name = "sp-trie" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" 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.6 (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.11 (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 = "substrate-serializer" +name = "sp-version" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-serde", + "parity-scale-codec", + "serde", + "sp-runtime", + "sp-std", ] [[package]] -name = "substrate-service" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "exit-future 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-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)", - "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.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 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_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-application-crypto 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-chain-spec 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client-db 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-executor 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-keystore 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-network 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-offchain 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-rpc 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-rpc-servers 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-session 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-telemetry 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-transaction-pool 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-transaction-pool-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "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-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-service-test" +name = "sp-wasm-interface" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-network 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-service 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-trait-for-tuples", + "wasmi", ] [[package]] -name = "substrate-session" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +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 = [ - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "generic-array", ] [[package]] -name = "substrate-state-db" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "string" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "bytes 0.4.12", ] [[package]] -name = "substrate-state-machine" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "string-interner" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd710eadff449a1531351b0e43eb81ea404336fa2f56c777427ab0e32a4cf183" 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.10 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (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.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-externalities 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-panic-handler 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-trie 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "trie-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-root 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] -name = "substrate-telemetry" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -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-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.13.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.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.2 (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-async 2.3.0 (git+https://github.com/paritytech/slog-async)", - "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)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-transaction-graph" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] +name = "structopt" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884ae79d6aad1e738f4a70dff314203fd498490a63ebc4d03ea83323c40b7b72" dependencies = [ - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.19 (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)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "clap", + "structopt-derive", ] [[package]] -name = "substrate-transaction-pool" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "structopt-derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a97f829a34a0a9d5b353a881025a23b8c9fd09d46be6045df6b22920dbd7a93" dependencies = [ - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 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)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-transaction-graph 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-transaction-pool-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "heck", + "proc-macro-error", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] -name = "substrate-transaction-pool-runtime-api" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "strum" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6138f8f88a16d90134763314e3fc76fa3ed6a7db4725d6acf9a3ef95a3188d22" dependencies = [ - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "strum_macros", ] [[package]] -name = "substrate-trie" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "strum_macros" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0054a7df764039a6cd8592b9de84be4bec368ff081d203a7d5371cbfa8e65c81" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "memory-db 0.15.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "trie-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-root 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "heck", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] -name = "substrate-wasm-builder-runner" -version = "1.0.4" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "substrate-bip39" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be511be555a3633e71739a79e4ddff6a6aaa6579fa6114182a51d72c3eb93c5" +dependencies = [ + "hmac", + "pbkdf2", + "schnorrkel", + "sha2", +] + +[[package]] +name = "substrate-build-script-utils" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" [[package]] -name = "substrate-wasm-interface" +name = "substrate-frame-rpc-system" version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "frame-system-rpc-runtime-api", + "futures 0.3.1", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "log", + "parity-scale-codec", + "sc-client", + "serde", + "sp-blockchain", + "sp-core", + "sp-runtime", + "sp-transaction-pool", ] +[[package]] +name = "substrate-test-utils" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" + +[[package]] +name = "substrate-wasm-builder-runner" +version = "1.0.4" +source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" + [[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 = "0.15.44" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" dependencies = [ - "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)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", ] [[package]] name = "syn" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff0acdb207ae2fe6d5976617f887eb1e35a2ba52c13c7234c790960cdad9238" +dependencies = [ + "proc-macro2 1.0.6", + "quote 1.0.2", + "unicode-xid 0.2.0", +] + +[[package]] +name = "syn-mid" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd3937748a7eccff61ba5b90af1a20dbf610858923a9192ea0ecb0cb77db1d0" dependencies = [ - "proc-macro2 1.0.6 (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.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] name = "synstructure" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" dependencies = [ - "proc-macro2 1.0.6 (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.11 (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.6", + "quote 1.0.2", + "syn 1.0.11", + "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.8.1" +version = "0.9.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)", - "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "6f4c118a7a38378f305a9e111fcb2f7f838c0be324bfb31a77ea04f7f6e684b4" [[package]] name = "target_info" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "tempdir" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -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)", -] +checksum = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe" [[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.2 (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.2", + "redox_syscall", + "remove_dir_all", + "winapi 0.3.8", ] [[package]] name = "termcolor" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" dependencies = [ - "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wincolor", ] [[package]] name = "textwrap" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f357d1814b33bc2dc221243f8424104bfe72dbe911d5b71b3816a2dff1c977e" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2e25d25307eb8436894f727aba8f65d07adf02e5b35a13cebed48bd282bfef" dependencies = [ - "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] name = "thread_local" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" 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.11.1 (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.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1c5676413eaeb1ea35300a0224416f57abc3bd251657e0fafc12c47ff98c060" 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)", - "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)", - "sha2 0.8.0 (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" -dependencies = [ - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "failure", + "hashbrown 0.1.8", + "hmac", + "once_cell 0.1.8", + "pbkdf2", + "rand 0.6.5", + "sha2", ] [[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.2" +name = "tokio" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (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.9", + "tokio-fs", + "tokio-io", + "tokio-reactor", + "tokio-sync 0.1.7", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", + "tokio-udp", + "tokio-uds", ] [[package]] name = "tokio" -version = "0.1.22" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1bef565a52394086ecac0a6fa3b8ace4cb3a138ee1d96bd2b93283b56824e3" 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.11.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.3", + "fnv", + "memchr", + "pin-project-lite", ] [[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.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" 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.12 (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.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "tokio-executor 0.1.9", ] [[package]] name = "tokio-dns-unofficial" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82c65483db54eb91b4ef3a9389a3364558590faf30ce473141707c0e16fda975" dependencies = [ - "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)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "futures-cpupool", + "lazy_static", + "tokio 0.1.22", ] [[package]] name = "tokio-executor" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6df436c42b0c3330a82d855d2ef017cd793090ad550a6bc2184f4b933532ab" +dependencies = [ + "crossbeam-utils 0.6.6", + "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 = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (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.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "tokio-io", + "tokio-threadpool", ] [[package]] name = "tokio-io" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" 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", ] [[package]] name = "tokio-reactor" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6732fe6b53c8d11178dcb77ac6d9682af27fc6d4cb87789449152e5377377146" dependencies = [ - "crossbeam-utils 0.6.6 (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.11.1 (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.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6", + "futures 0.1.29", + "lazy_static", + "log", + "mio", + "num_cpus", + "parking_lot 0.9.0", + "slab", + "tokio-executor 0.1.9", + "tokio-io", + "tokio-sync 0.1.7", ] [[package]] name = "tokio-rustls" version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2fa53ac211c136832f530ccb081af9af891af22d685a9493e232c7a359bc2" 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)", - "rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "iovec", + "rustls", + "tokio-io", + "webpki", ] [[package]] name = "tokio-sync" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d06554cce1ae4a50f42fba8023918afa931413aded705b560e29600ccf7c6d76" +dependencies = [ + "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 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv", + "futures-core-preview", + "futures-util-preview", ] [[package]] name = "tokio-tcp" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" 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.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.11 (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.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c32ffea4827978e9aa392d2f743d973c1dfa3730a2ed3f22ce1e6984da848c" dependencies = [ - "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (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.11.1 (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.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque", + "crossbeam-queue 0.1.2", + "crossbeam-utils 0.6.6", + "futures 0.1.29", + "lazy_static", + "log", + "num_cpus", + "slab", + "tokio-executor 0.1.9", ] [[package]] name = "tokio-timer" version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1739638e364e558128461fc1ad84d997702c8e31c2e6b18fb99842268199e827" dependencies = [ - "crossbeam-utils 0.6.6 (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.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6", + "futures 0.1.29", + "slab", + "tokio-executor 0.1.9", ] [[package]] -name = "tokio-tls" -version = "0.2.1" +name = "tokio-udp" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f02298505547f73e60f568359ef0d016d5acd6e830ab9bc7c4a5b3403440121b" 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.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "log", + "mio", + "tokio-codec", + "tokio-io", + "tokio-reactor", ] [[package]] -name = "tokio-udp" -version = "0.1.5" +name = "tokio-uds" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" 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.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "iovec", + "libc", + "log", + "mio", + "mio-uds", + "tokio-codec", + "tokio-io", + "tokio-reactor", ] [[package]] -name = "tokio-uds" -version = "0.2.5" +name = "tokio-util" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930" 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.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.3", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "tokio 0.2.6", ] [[package]] name = "toml" version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d1404644c8b12b16bfcffa4322403a91a451584daaaa7c28d3152e6cbc98cf" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] -name = "traitobject" -version = "0.1.0" +name = "tower-service" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" [[package]] -name = "transaction-factory" -version = "0.0.1" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +name = "tracing" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6de6a8590a29d3f401eab60470c699efa0adf7b4f0352055bf24df2b69849b40" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-block-builder-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-cli 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", - "substrate-service 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)", + "cfg-if", + "tracing-attributes", + "tracing-core", ] [[package]] -name = "trie-db" -version = "0.15.2" +name = "tracing-attributes" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04cfd395def5a60236e187e1ff905cb55668a59f29928dec05e6e1b1fd2ac1f3" dependencies = [ - "elastic-array 0.10.3 (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)", - "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)", + "quote 1.0.2", + "syn 1.0.11", ] [[package]] -name = "trie-root" -version = "0.15.2" +name = "tracing-core" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fb511ac6ca1d031c5cfc26d8c38da9d88e91d2bd5b38b60cf8dc1b8b5c211f" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", ] [[package]] -name = "triehash" -version = "0.8.1" -source = "git+https://github.com/darwinia-network/parity-common.git#df9eebad700c076c13afe053a6c368a8926d94ff" +name = "trie-db" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784a9813d23f18bccab728ab039c39b8a87d0d6956dcdece39e92f5cffe5076e" +dependencies = [ + "elastic-array", + "hash-db", + "hashbrown 0.6.3", + "log", + "rand 0.6.5", +] + +[[package]] +name = "trie-root" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b779f7c1c8fe9276365d9d5be5c4b5adeacf545117bb3f64c974305789c5c0b" dependencies = [ - "hash-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.4.4 (git+https://github.com/darwinia-network/parity-common.git)", + "hash-db", ] [[package]] name = "try-lock" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[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.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-cipher-trait", + "byteorder 1.3.2", + "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.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.2", ] -[[package]] -name = "typeable" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "typenum" version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "uint" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "uint" -version = "0.8.2" -source = "git+https://github.com/darwinia-network/parity-common.git#df9eebad700c076c13afe053a6c368a8926d94ff" -dependencies = [ - "byteorder 1.3.2 (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.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 1.1.0 (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.2 (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.0.1 (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" -dependencies = [ - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2", + "crunchy", + "rustc-hex", + "static_assertions", ] [[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.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b561e267b2326bb4cebfc0ef9e68355c7abe6c6f522aeac2f5bf95d56c59bdcf" dependencies = [ - "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.1.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" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "tokio-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.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61" 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)", -] - -[[package]] -name = "uuid" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (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 = "walkdir" -version = "2.2.9" +name = "want" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" dependencies = [ - "same-file 1.0.5 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "log", + "try-lock", ] [[package]] name = "want" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" 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)", + "log", + "try-lock", ] [[package]] name = "wasi" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" [[package]] name = "wasm-bindgen" version = "0.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99de4b68939a880d530aed51289a7c7baee154e3ea8ac234b542c49da7134aaf" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" version = "0.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b58e66a093a7b7571cb76409763c495b8741ac4319ac20acc2b798f6766d92ee" dependencies = [ - "bumpalo 2.6.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.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)", + "bumpalo", + "lazy_static", + "log", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83420b37346c311b9ed822af41ec2e82839bfe99867ec6c54e2da43b7538771c" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "futures 0.1.29", + "js-sys", + "wasm-bindgen", + "web-sys", ] [[package]] name = "wasm-bindgen-macro" version = "0.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a80f89daea7b0a67b11f6e9f911422ed039de9963dce00048a653b63d51194bf" dependencies = [ - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro-support 0.2.56 (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.56" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f9dbc3734ad6cff6b76b75b7df98c06982becd0055f651465a08f769bca5c61" dependencies = [ - "proc-macro2 1.0.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", + "wasm-bindgen-backend", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" version = "0.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d907984f8506b3554eab48b8efff723e764ddbf76d4cd4a3fe4196bc00c49a70" [[package]] name = "wasm-bindgen-webidl" version = "0.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f85a3825a459cf6a929d03bacb54dca37a614d43032ad1343ef2d4822972947d" 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.6 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.56 (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", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", + "wasm-bindgen-backend", + "weedle", ] [[package]] name = "wasm-timer" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa3e01d234bb71760e685cfafa5e2c96f8ad877c161a721646356651069e26ac" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)", - "send_wrapper 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29", + "js-sys", + "send_wrapper", + "tokio-timer", + "wasm-bindgen", + "web-sys", ] [[package]] name = "wasmi" -version = "0.5.1" +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.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.40.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi-validation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "errno", + "libc", + "memory_units", + "num-rational", + "num-traits", + "parity-wasm", + "wasmi-validation", ] [[package]] name = "wasmi-validation" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea78c597064ba73596099281e2f4cfc019075122a65cdda3205af94f0b264d93" dependencies = [ - "parity-wasm 0.40.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm", ] [[package]] name = "wasmparser" version = "0.39.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c702914acda5feeeffbc29e4d953e5b9ce79d8b98da4dbf18a77086e116c5470" [[package]] name = "wasmtime-debug" -version = "0.2.0" -source = "git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6#71dd73d672deb325664e3c9cd4ee7acebed5fb95" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5008729ad53f75020f28fa0d682269335d6f0eac0b3ffafe31f185b2f33aca74" dependencies = [ - "cranelift-codegen 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-wasm 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "faerie 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "gimli 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmparser 0.39.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime-environ 0.2.0 (git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6)", + "anyhow", + "cranelift-codegen", + "cranelift-entity", + "cranelift-wasm", + "faerie", + "gimli", + "more-asserts", + "target-lexicon", + "thiserror", + "wasmparser", + "wasmtime-environ", ] [[package]] name = "wasmtime-environ" -version = "0.2.0" -source = "git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6#71dd73d672deb325664e3c9cd4ee7acebed5fb95" -dependencies = [ - "base64 0.10.1 (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.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-wasm 0.46.1 (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)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.6 (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.0 (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)", - "log 0.4.8 (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.0 (registry+https://github.com/rust-lang/crates.io-index)", - "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "zstd 0.4.28+zstd.1.4.3 (registry+https://github.com/rust-lang/crates.io-index)", +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3947662a0b8e05b1418465e64f16de9114f9fec18cc3f56e0ed5aa7737b89d0" +dependencies = [ + "base64 0.11.0", + "bincode", + "cranelift-codegen", + "cranelift-entity", + "cranelift-wasm", + "directories", + "errno", + "file-per-thread-logger", + "indexmap", + "lazy_static", + "libc", + "log", + "more-asserts", + "rayon", + "serde", + "sha2", + "spin", + "thiserror", + "toml", + "wasmparser", + "winapi 0.3.8", + "zstd", ] [[package]] name = "wasmtime-jit" -version = "0.2.0" -source = "git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6#71dd73d672deb325664e3c9cd4ee7acebed5fb95" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed7922689461a7b5bd0d9c7350cac526c8a520a23b3ffd7f5b446ac51dfc51f" dependencies = [ - "cranelift-codegen 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-frontend 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-wasm 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.6 (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.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmparser 0.39.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime-debug 0.2.0 (git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6)", - "wasmtime-environ 0.2.0 (git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6)", - "wasmtime-runtime 0.2.0 (git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6)", + "anyhow", + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "cranelift-wasm", + "more-asserts", + "region", + "target-lexicon", + "thiserror", + "wasmparser", + "wasmtime-debug", + "wasmtime-environ", + "wasmtime-runtime", + "winapi 0.3.8", ] [[package]] name = "wasmtime-runtime" -version = "0.2.0" -source = "git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6#71dd73d672deb325664e3c9cd4ee7acebed5fb95" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "781d6bb8b346efaa3dc39746386957cd79b8d841e8652ed9b02d77bcf64fb514" dependencies = [ - "cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-wasm 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.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)", - "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)", - "region 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime-environ 0.2.0 (git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "cranelift-codegen", + "cranelift-entity", + "cranelift-wasm", + "indexmap", + "lazy_static", + "libc", + "memoffset", + "more-asserts", + "region", + "thiserror", + "wasmtime-environ", + "winapi 0.3.8", ] [[package]] name = "web-sys" version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fb60433d0dc12c803b9b017b3902d80c9451bab78d27bc3210bf2a7b96593f1" dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.33 (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.56 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-webidl 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow", + "js-sys", + "sourcefile", + "wasm-bindgen", + "wasm-bindgen-webidl", ] [[package]] name = "webpki" version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7e664e770ac0110e2384769bcc59ed19e329d81f555916a6e072714957b81b4" dependencies = [ - "ring 0.16.9 (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.0 (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.0 (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" -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.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (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" -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.2 (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.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki", ] [[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 = "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.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" 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 = "wincolor" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", + "winapi-util", ] [[package]] name = "ws" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c51a2c47b5798ccc774ffb93ff536aec7c4275d722fd9c740c83cdd1af1f2d94" dependencies = [ - "byteorder 1.3.2 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sha-1 0.8.1 (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.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2", + "bytes 0.4.12", + "httparse", + "log", + "mio", + "mio-extras", + "rand 0.7.2", + "sha-1", + "slab", + "url 2.1.0", ] [[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 = "xdg" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" [[package]] name = "yamux" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2758f29014c1cb7a6e74c1b1160ac8c8203be342d35b73462fc6a13cc6385423" 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)", - "nohash-hasher 0.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)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures 0.1.29", + "log", + "nohash-hasher", + "parking_lot 0.9.0", + "quick-error", + "rand 0.7.2", + "tokio-codec", + "tokio-io", ] [[package]] name = "zeroize" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "zeroize" -version = "0.10.1" -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.6 (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.11 (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.6", + "quote 1.0.2", + "syn 1.0.11", + "synstructure", ] [[package]] name = "zstd" -version = "0.4.28+zstd.1.4.3" +version = "0.5.1+zstd.1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5d978b793ae64375b80baf652919b148f6a496ac8802922d9999f5a553194f" dependencies = [ - "zstd-safe 1.4.13+zstd.1.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "zstd-safe", ] [[package]] name = "zstd-safe" -version = "1.4.13+zstd.1.4.3" +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.13+zstd.1.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "zstd-sys", ] [[package]] name = "zstd-sys" -version = "1.4.13+zstd.1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cc 1.0.48 (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.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" -"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.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" -"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 atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" -"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" -"checksum backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea" -"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.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.47.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df683a55b54b41d5ea8ebfaebb5aa7e6b84e3f3006a78f010dadc9ca88469260" -"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.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b83b7baab1e671718d78204225800d6b170e648188ac7dc992e9d6bddf87d0c0" -"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 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.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8d6c2c5b58ab920a4f5aeaaca34b4488074e8cc7596af94e6f8c6ff247c60245" -"checksum bumpalo 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad807f2fc2bf185eeb98ff3a901bd46dc5ad58163d0fa4577ba0d25674d71708" -"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.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" -"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -"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 cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0" -"checksum cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)" = "f52a465a666ca3d838ebbf08b241383421412fe7ebb463527bba275526d89f76" -"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 chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "31850b4a4d6bae316f7a09e691c944c28299298837edc0a03f755618c23cbc01" -"checksum clang-sys 0.26.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6ef0c1bcf2e99c649104bd7a7012d8f8802684400e03db0ec0af48583c6fa0e4" -"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 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.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7b641a8c9867e341f3295564203b1c250eb8ce6cb6126e007941f78c4d2ed7fe" -"checksum const-random-macro 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c750ec12b83377637110d5a57f5ae08e895b06c4b16e2bdbf1a94ef717428c59" -"checksum constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120" -"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.46.1 (registry+https://github.com/rust-lang/crates.io-index)" = "18c97588946d3e5fe11f8e34ebf8cc65fd3fda50f3ffa2e80c98b2748058f00f" -"checksum cranelift-codegen 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3255935da50302bcb0f7109f2fef27f44b46f1c797dfa7db971379261023adcd" -"checksum cranelift-codegen-meta 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd57265ef5e6ff253c378b6261ed8c2e6cb1b15e91624540dbd09b1e5a40e9ca" -"checksum cranelift-codegen-shared 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c093398d21f9493ab29445191362592ef621f497e56a8efb15bdf80471978b7a" -"checksum cranelift-entity 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e915fa58d2a75e3c4b768b7e4760282889915c3fcd9ccb2ad2b3ebec99654a78" -"checksum cranelift-frontend 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)" = "46963952cda267bd0177b3f036e50038cd56e7b4c5b09a455b02df727e0f2a16" -"checksum cranelift-native 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7ba8a2d69ddd4729199a321bc2f4020e1969a088b468ed6a29dc7a69350be76e" -"checksum cranelift-wasm 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5a802357a6a016bf4c1dcdc6d73a650640eb3b613cc098a1a044a6c3731ca264" -"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-plot 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76f9212ddf2f4a9eb2d401635190600656a1f88a932ef53d06e7fa4c7e02fb8e" -"checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" -"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.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" -"checksum crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" -"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" -"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.1 (registry+https://github.com/rust-lang/crates.io-index)" = "37519ccdfd73a75821cac9319d4fce15a81b9fcf75f951df5b9988aa3a0af87d" -"checksum csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9b5cadb6b25c77aeff80ba701712494213f4a8418fcda2ee11b6560c3ad0bf4c" -"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 ctrlc 3.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7dfd2d8b4c82121dfdff120f818e09fc4380b0b7e17a742081a89b94853e87f" -"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.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a141330240c921ec6d074a3e188a7c7ef95668bb95e7d44fa0e5778ec2a7afe" -"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 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d07e8b8a8386c3b89a7a4b329fdfa4cb545de2545e9e2ebbc3dd3929253e426" -"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 elastic-array 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)" = "580f3768bd6465780d063f5b8213a2ebd506e139b345e4a81eb301ceae3d61e1" -"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.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "34f8467a0284de039e6bd0e25c14519538462ba5beb548bb1f03e645097837a8" -"checksum erased-serde 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3beee4bc16478a1b26f2e80ad819a52d24745e292f521a63c16eea5f74b7eb60" -"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 ethabi 9.0.1 (git+https://github.com/darwinia-network/ethabi.git?branch=with_no_std)" = "" -"checksum ethbloom 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3932e82d64d347a045208924002930dc105a138995ccdc1479d0f05f0359f17c" -"checksum ethbloom 0.8.1 (git+https://github.com/darwinia-network/parity-common.git)" = "" -"checksum ethereum-types 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b054df51e53f253837ea422681215b42823c02824bde982699d0dceecf6165a1" -"checksum ethereum-types 0.8.0 (git+https://github.com/darwinia-network/parity-common.git)" = "" -"checksum ethereum-types-serialize 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1873d77b32bc1891a79dad925f2acbc318ee942b38b9110f9dbc5fbeffcea350" -"checksum exit-future 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d8013f441e38e31c670e7f34ec8f1d5d3a2bd9d303c1ff83976ca886005e8f48" -"checksum faerie 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "875d78b92b2a4d9e1e2c7eeccfa30a327d2ee6434db3beb8fd6fd92f41898bc4" -"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.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa" -"checksum file-per-thread-logger 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8505b75b31ef7285168dd237c4a7db3c1f3e0927e7d314e670bc98e854272fe9" -"checksum finality-grandpa 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "34754852da8d86bc509715292c73140a5b678656d0b16132acd6737bdb5fd5f8" -"checksum fixed-hash 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d1a683d1234507e4f3bf2736eeddf0de1dc65996dc0164d57eba0a74bcf29489" -"checksum fixed-hash 0.5.1 (git+https://github.com/darwinia-network/parity-common.git)" = "" -"checksum fixed-hash 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3367952ceb191f4ab95dd5685dc163ac539e36202f9fcfd0cb22f9f9c542fefc" -"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 fork-tree 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum fs-swap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "921d332c89b3b61a826de38c61ee5b6e02c56806cade1b0e5d81bd71f57a71bb" -"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.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b6f16056ecbb57525ff698bb955162d0cd03bee84e6241c27ff75c08d8ca5987" -"checksum futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fcae98ca17d102fd8a3603727b9259fcf7fa4239b603d2142926189bc8999b86" -"checksum futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "d5e5f4df964fa9c1c2f8bddeb5c3611631cacd93baf810fc8bb2fb4b495c263a" -"checksum futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "79564c427afefab1dfb3298535b21eda083ef7935b4f0ecbfcb121f0aec10866" -"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-executor 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e274736563f686a837a0568b478bdabfeaec2dca794b5649b04e2fe1627c231" -"checksum futures-executor-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "75236e88bd9fe88e5e8bfcd175b665d0528fe03ca4c5207fabc028c8f9d93e98" -"checksum futures-io 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e676577d229e70952ab25f3945795ba5b16d63ca794ca9d2c860e5595d20b5ff" -"checksum futures-io-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "f4914ae450db1921a56c91bde97a27846287d062087d4a652efc09bb3a01ebda" -"checksum futures-macro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "52e7c56c15537adb4f76d0b7a76ad131cb4d2f4f32d3b0bcabcbe1c7c5e87764" -"checksum futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "3b1dce2a0267ada5c6ff75a8ba864b4e679a9e2aa44262af7a3b5516d530d76e" -"checksum futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "171be33efae63c2d59e6dbba34186fe0d6394fb378069a76dfd80fdcffd43c16" -"checksum futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "86f148ef6b69f75bb610d4f9a2336d4fc88c4b5b67129d1a340dd0fd362efeec" -"checksum futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0bae52d6b29cf440e298856fec3965ee6fa71b06aa7495178615953fd669e5f9" -"checksum futures-timer 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "878f1d2fc31355fa02ed2372e741b0c17e58373341e6a122569b4623a14a7d33" -"checksum futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d66274fb76985d3c62c886d1da7ac4c0903a8c9f754e8fe0f35a6a6cc39e76" -"checksum futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8d" -"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.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e7db7ca94ed4cd01190ceee0d8a8052f08a247aa1b469a7f68c6a3b71afcf407" -"checksum gimli 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "162d18ae5f2e3b90a993d202f1ba17a5633c2484426f8bcae201f86194bacd00" -"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 goblin 0.0.24 (registry+https://github.com/rust-lang/crates.io-index)" = "e3fa261d919c1ae9d1e4533c4a2f99e10938603c4208d56c05bec7a872b661b0" -"checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" -"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 heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" -"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" -"checksum hermit-abi 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f629dc602392d3ec14bfc8a09b5e644d7ffd725102b48b81e59f90f2633621d7" -"checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" -"checksum hex 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "023b39be39e3a2da62a94feb433e91e8bcd37676fbc8bea371daf52b7a769a3e" -"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-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" -"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-rustls 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)" = "719d85c7df4a7f309a77d145340a063ea929dcb2e025bae46a80345cffec2952" -"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 (git+https://github.com/darwinia-network/parity-common.git)" = "" -"checksum impl-codec 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" -"checksum impl-rlp 0.2.1 (git+https://github.com/darwinia-network/parity-common.git)" = "" -"checksum impl-rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8f7a72f11830b52333f36e3b09a288333888bf54380fd0ac0790a3c31ab0f3c5" -"checksum impl-serde 0.2.3 (git+https://github.com/darwinia-network/parity-common.git)" = "" -"checksum impl-serde 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "58e3cae7e99c7ff5a995da2cf78dd0a5383740eda71d98cf7b1910c301ac69b8" -"checksum impl-trait-for-tuples 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9d" -"checksum indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2" -"checksum integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903" -"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.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f4b06b21db0228860c8dfd17d2106c49c7c6bd07477a4036985347d84def04" -"checksum itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" -"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" -"checksum jobserver 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b1d42ef453b30b7387e113da1c83ab1605d90c5b4e0eb8e96d016ed3b8c160" -"checksum js-sys 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)" = "367647c532db6f1555d7151e619540ec5f713328235b8c062c6b4f63e84adfe3" -"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.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2d83d348120edee487c560b7cdd2565055d61cda053aa0d0ef0f8b6a18429048" -"checksum jsonrpc-pubsub 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3453625f0f0f5cd6d6776d389d73b7d70fcc98620b7cbb1cbbb1f6a36e95f39a" -"checksum jsonrpc-server-utils 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "95b7635e618a0edbbe0d2a2bbbc69874277c49383fcf6c3c0414491cfb517d22" -"checksum jsonrpc-ws-server 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b34faa167c3ac9705aeecb986c0da6056529f348425dbe0441db60a2c4cc41d1" -"checksum keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" -"checksum keccak-hash 0.4.1 (git+https://github.com/darwinia-network/parity-common.git)" = "" -"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 kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)" = "" -"checksum kvdb-memorydb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)" = "" -"checksum kvdb-rocksdb 0.1.4 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)" = "" -"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 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.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fab3090cd3af0f0ff5e6c2cc0f6fe6607e9f9282680cf7cd3bdd4cda38ea722" -"checksum libp2p-core 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4a3def059145c191b6975e51784d5edc59e77e1ed5b25402fccac704dd7731f3" -"checksum libp2p-core-derive 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1eeb2704ac14c60f31967e351ed928b848526a5fc6db4104520020665012826f" -"checksum libp2p-deflate 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef2b0bf5d37692ac90e2bffa436bec26c0b0def6c0cab7ea85ff67a353d58aaa" -"checksum libp2p-dns 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3175fb0fc9016c95c8517a297bbdb5fb6bfbd5665bacd2eb23495d1cbdeb033" -"checksum libp2p-floodsub 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92c11b95281e8cb87eb83c204b3ca4988fa665ed9351199b5bcc323056f49816" -"checksum libp2p-identify 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b4e4b0b4bcf410f77361b08335022d5705df34970dc1744ff58d4bb902309547" -"checksum libp2p-kad 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7fd25360fc12b23edb1ed13f73426325a38d32e0927a46fec26ddb6873d7644d" -"checksum libp2p-mdns 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c4c2e225a7dfc571c3ad77a0a5ecccc9537afe42d72289ac9f19768567cd677d" -"checksum libp2p-mplex 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2fe584816d993dc0f893396521a3c93191d78a6f28a892b150baa714a12c3e5" -"checksum libp2p-noise 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a30ec2640262a7ad6b1a8b28f6cd8281e620a6802f700adf9ff26e61487c333a" -"checksum libp2p-ping 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5b975ad345eb9bb29ddc64670664a50a8ab3e66e28357abb0f83cfc0a9ca2d78" -"checksum libp2p-plaintext 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4fe82189f5c20e8f0a11deaa04d492703c501cefd2428ad68f4f64aefab76f" -"checksum libp2p-secio 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7ee09e259ceb7633a52fd17f187bedf94e3545b1746487beedbd3a0a07d99817" -"checksum libp2p-swarm 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cd55bc9f5f9eac2bb1ff24ca3c8a655810a566ac38c7a6ee1f30aced5a62905b" -"checksum libp2p-tcp 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "234a7093d05651ab5630db926a4a42ca8978a65bab8c27c2ce2b66b200c76989" -"checksum libp2p-uds 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1e2fe0648967da3e56e4a55055c857c8c48326b66be0047d0e04c8ca60d34630" -"checksum libp2p-wasm-ext 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3f7b8f2bd81fb356e81352d4513856bc21215ecf91502aa1f55b6449642a9acf" -"checksum libp2p-websocket 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d74d4fc229ad7e8d1a973178786bdcd5dadbdd7b9822c4477c8687df6f82f66" -"checksum libp2p-yamux 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1913eb7dd6eb5515957b6f1770296f6921968db87bc9b985f0e974b6657e1003" -"checksum librocksdb-sys 5.18.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d19778314deaa7048f2ea7d07b8aa12e1c227acebe975a37eeab6d2f8c74e41b" -"checksum libsecp256k1 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b0885ff5b8070cdafbf65b3d098a0b7daf4925a18a704d3c503996443b799cc2" -"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.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" -"checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff" -"checksum lock_api 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e57b3997725d2b60dbec1297f6c2e2957cc383db1cebd6be812163f969c7d586" -"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-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -"checksum mach 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "86dd2487cdfea56def77b88438a2c915fb45113c5319bfe7e14306ca4cd0b0e1" -"checksum malloc_size_of_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e37c5d4cd9473c5f4c9c111f033f15d4df9bd378fdf615944e360a4f55a05f0b" -"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.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" -"checksum memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" -"checksum memory-db 0.15.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5dabfe0a8c69954ae3bcfc5fc14260a85fb80e1bf9f86a155f668d10a67e93dd" -"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.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6f3f74f726ae935c3f514300cc6773a0c9492abc5e972d42ba0c0ebb88757625" -"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 multistream-select 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fc3ef54aab1b2e37e911bcb99e376dbe4c1e0710afcdb8428608e4f993b39c47" -"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.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce" -"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -"checksum nohash-hasher 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4e657a6ec97f9a3ba46f6f7034ea6db9fcd5b71d25ef1074b7bc03da49be0e8e" -"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" -"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-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2885278d5fe2adc2f75ced642d52d879bffaceb5a2e0b1d4309ffdfb239b454" -"checksum num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c81ffc11c212fa327657cb19dd85eb7419e163b5b076bede2bdb5c974c07e4" -"checksum num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72" -"checksum ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" -"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 opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" -"checksum openssl 0.10.26 (registry+https://github.com/rust-lang/crates.io-index)" = "3a3cc5799d98e1088141b8e01ff760112bbd9f19d850c124500566ca6901a585" -"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" -"checksum openssl-sys 0.9.53 (registry+https://github.com/rust-lang/crates.io-index)" = "465d16ae7fc0e313318f7de5cecf57b2fbe7511fd213978b457e1c96ff46736f" -"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.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)" = "" -"checksum parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "045b3c7af871285146300da35b1932bb6e4639b66c7c98e85d06a32cbc4e8fa7" -"checksum parity-multiaddr 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "82afcb7461eae5d122543d8be1c57d306ed89af2d6ff7f8b0f5a3cc8f7e511bc" -"checksum parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df3a17dc27848fd99e4f87eb0f8c9baba6ede0a6d555400c850ca45254ef4ce3" -"checksum parity-multihash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c70cad855872dd51ce6679e823efb6434061a2c1782a1686438aabf506392cdd" -"checksum parity-scale-codec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f9f9d99dae413590a5f37e43cd99b94d4e62a244160562899126913ea7108673" -"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.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "570093f39f786beea92dcc09e45d8aae7841516ac19a50431953ac82a0e8f85c" -"checksum parity-wasm 0.40.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1e39faaa292a687ea15120b1ac31899b13586446521df6c149e46f1584671e0f" -"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" -"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" -"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" -"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" -"checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c" -"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" -"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 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 ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" -"checksum pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" -"checksum primitive-types 0.6.1 (git+https://github.com/darwinia-network/parity-common.git)" = "" -"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-macro-error 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aeccfe4d5d8ea175d5f0e4a2ad0637e0f4121d63bd99d356fb1f39ab2e7c6097" -"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.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9c9e470a8dc4aeae2dee2f335e8f533e2d4b347e1434e5671afc49b054592f27" -"checksum protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40361836defdd5871ff7e84096c6f6444af7fc157f8ef1789f54f147687caa20" -"checksum pwasm-utils 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d473123ba135028544926f7aa6f34058d8bc6f120c4fcd3777f84af724280b3" -"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"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.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412" -"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 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "30a9d219c32c9132f7be513c18be77c9881c7107d2ab5569d205a6a0f0e6dc7d" -"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.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d" -"checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" -"checksum regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9" -"checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" -"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.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6747f8da1f2b1fabbee1aaa4eb8a11abf9adef0bf58a41cee45db5d59cecdfac" -"checksum rlp 0.4.4 (git+https://github.com/darwinia-network/parity-common.git)" = "" -"checksum rlp 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3a44d5ae8afcb238af8b75640907edc6c931efcfab2c854e81ed35fa080f84cd" -"checksum rlp_derive 0.1.0 (git+https://github.com/darwinia-network/parity-common.git)" = "" -"checksum rocksdb 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f1651697fefd273bfb4fd69466cc2a9d20de557a0213b97233b22b5e95924b5e" -"checksum rpassword 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d59f0e97173c514b9036cd450c195a6483ba81055c6fa0f1bff3ab563f47d44a" -"checksum rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf" -"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" -"checksum rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "403bb3a286107a04825a5f82e1270acc1e14028d3d554d7a1e08914549575ab8" -"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 rw-stream-sink 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9cbe61c20455d3015b2bb7be39e1872310283b8e5a52f5b242b0ac7581fe78" -"checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" -"checksum safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f7bf422d23a88c16d5090d455f182bc99c60af4df6a345c63428acf5129e347" -"checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" -"checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421" -"checksum schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "87f550b06b6cba9c8b8be3ee73f391990116bf527450d2556e9b9ce263b9a021" -"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 scroll 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2f84d114ef17fd144153d608fba7c446b0145d038985e7a8cc5d08bb0ce20383" -"checksum scroll_derive 0.9.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8f1aa96c45e7f5a91cb7fabe7b279f02fea7126239fc40b732316e8b6a2d0fcb" -"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.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 serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)" = "48c575e0cc52bdd09b47f330f646cf59afc586e9c4e3ccd6fc1f625b8ea1dad7" -"checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" -"checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" -"checksum sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d" -"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 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-async 2.3.0 (git+https://github.com/paritytech/slog-async)" = "" -"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.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9eff3b513cf2e0d1a60e1aba152dc72bedc5b05585722bb3cebd7bcb1e31b98f" -"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" -"checksum smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44e59e0c9fa00817912ae6e4e6e3c4fe04455e75699d06eedc7d85917ed8e8f4" -"checksum snow 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "afb767eee7d257ba202f0b9b08673bc13b22281632ef45267b19f13100accd2f" -"checksum soketto 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bceb1a3a15232d013d9a3b7cac9e5ce8e2313f348f01d4bc1097e5e53aa07095" -"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 sr-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum sr-api-proc-macro 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum sr-arithmetic 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum sr-io 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum sr-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum sr-sandbox 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum sr-staking-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum sr-std 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum sr-version 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-authority-discovery 0.1.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-authorship 0.1.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-babe 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-balances 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-contracts 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-contracts-rpc 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-contracts-rpc-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-executive 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-finality-tracker 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-grandpa 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-indices 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-metadata 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-offences 1.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-randomness-collective-flip 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-session 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-sudo 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-support 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-support-procedural 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-support-procedural-tools 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-support-procedural-tools-derive 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-system 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-system-rpc 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-system-rpc-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-timestamp 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-transaction-payment 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-transaction-payment-rpc 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-transaction-payment-rpc-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum srml-utility 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c19be23126415861cb3a23e501d34a708f7f9b2183c5252d690941c2e69199d5" -"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.5 (registry+https://github.com/rust-lang/crates.io-index)" = "30b3a3e93f5ad553c38b3301c8a0a0cec829a36783f6a0c467fc4bf553a5f5bf" -"checksum structopt-derive 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea692d40005b3ceba90a9fe7a78fa8d4b82b0ce627eebbffc329aab850f3410e" -"checksum strum 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e5d1c33039533f051704951680f1adfd468fd37ac46816ded0d9ee068e60f05f" -"checksum strum_macros 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "47cd23f5c7dee395a00fa20135e2ec0fffcdfa151c56182966d7a3261343432e" -"checksum substrate-application-crypto 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-authority-discovery-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-basic-authorship 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3be511be555a3633e71739a79e4ddff6a6aaa6579fa6114182a51d72c3eb93c5" -"checksum substrate-block-builder 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-block-builder-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-build-script-utils 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-chain-spec 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-chain-spec-derive 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-cli 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-client 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-client-db 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-consensus-babe 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-consensus-common 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-consensus-slots 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-consensus-uncles 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-debug-derive 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-executor 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-externalities 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-finality-grandpa 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-finality-grandpa-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-header-metadata 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-inherents 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-keyring 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-keystore 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-network 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-offchain 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-offchain-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-panic-handler 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-peerset 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-phragmen 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-primitives-storage 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-rpc 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-rpc-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-rpc-primitives 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-rpc-servers 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-runtime-interface 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-runtime-interface-proc-macro 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-serializer 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-service 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-service-test 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-session 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-state-db 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-state-machine 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-telemetry 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-transaction-graph 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-transaction-pool 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-transaction-pool-runtime-api 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-trie 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-wasm-builder-runner 1.0.4 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum substrate-wasm-interface 2.0.0 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"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 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -"checksum syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "dff0acdb207ae2fe6d5976617f887eb1e35a2ba52c13c7234c790960cdad9238" -"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.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7975cb2c6f37d77b190bc5004a2bb015971464756fde9514651a525ada2a741a" -"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.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" -"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" -"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.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c1c5676413eaeb1ea35300a0224416f57abc3bd251657e0fafc12c47ff98c060" -"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.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4574b75faccaacddb9b284faecdf0b544b80b6b294f3d062d325c5726a209c20" -"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" -"checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" -"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" -"checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" -"checksum tokio-dns-unofficial 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "82c65483db54eb91b4ef3a9389a3364558590faf30ce473141707c0e16fda975" -"checksum tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "ca6df436c42b0c3330a82d855d2ef017cd793090ad550a6bc2184f4b933532ab" -"checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" -"checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" -"checksum tokio-reactor 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6732fe6b53c8d11178dcb77ac6d9682af27fc6d4cb87789449152e5377377146" -"checksum tokio-rustls 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1df2fa53ac211c136832f530ccb081af9af891af22d685a9493e232c7a359bc2" -"checksum tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d06554cce1ae4a50f42fba8023918afa931413aded705b560e29600ccf7c6d76" -"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" -"checksum tokio-threadpool 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "f0c32ffea4827978e9aa392d2f743d973c1dfa3730a2ed3f22ce1e6984da848c" -"checksum tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1739638e364e558128461fc1ad84d997702c8e31c2e6b18fb99842268199e827" -"checksum tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c" -"checksum tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f02298505547f73e60f568359ef0d016d5acd6e830ab9bc7c4a5b3403440121b" -"checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" -"checksum toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "01d1404644c8b12b16bfcffa4322403a91a451584daaaa7c28d3152e6cbc98cf" -"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" -"checksum transaction-factory 0.0.1 (git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop)" = "" -"checksum trie-db 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d0b62d27e8aa1c07414549ac872480ac82380bab39e730242ab08d82d7cc098a" -"checksum trie-root 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0b779f7c1c8fe9276365d9d5be5c4b5adeacf545117bb3f64c974305789c5c0b" -"checksum triehash 0.8.1 (git+https://github.com/darwinia-network/parity-common.git)" = "" -"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" -"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.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "082df6964410f6aa929a61ddfafc997e4f32c62c22490e439ac351cec827f436" -"checksum uint 0.8.2 (git+https://github.com/darwinia-network/parity-common.git)" = "" -"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.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b561e267b2326bb4cebfc0ef9e68355c7abe6c6f522aeac2f5bf95d56c59bdcf" -"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 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.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61" -"checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" -"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 walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e" -"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" -"checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" -"checksum wasm-bindgen 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)" = "99de4b68939a880d530aed51289a7c7baee154e3ea8ac234b542c49da7134aaf" -"checksum wasm-bindgen-backend 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)" = "b58e66a093a7b7571cb76409763c495b8741ac4319ac20acc2b798f6766d92ee" -"checksum wasm-bindgen-futures 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)" = "83420b37346c311b9ed822af41ec2e82839bfe99867ec6c54e2da43b7538771c" -"checksum wasm-bindgen-macro 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)" = "a80f89daea7b0a67b11f6e9f911422ed039de9963dce00048a653b63d51194bf" -"checksum wasm-bindgen-macro-support 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)" = "4f9dbc3734ad6cff6b76b75b7df98c06982becd0055f651465a08f769bca5c61" -"checksum wasm-bindgen-shared 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)" = "d907984f8506b3554eab48b8efff723e764ddbf76d4cd4a3fe4196bc00c49a70" -"checksum wasm-bindgen-webidl 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)" = "f85a3825a459cf6a929d03bacb54dca37a614d43032ad1343ef2d4822972947d" -"checksum wasm-timer 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "aa3e01d234bb71760e685cfafa5e2c96f8ad877c161a721646356651069e26ac" -"checksum wasmi 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f31d26deb2d9a37e6cfed420edce3ed604eab49735ba89035e13c98f9a528313" -"checksum wasmi-validation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6bc0356e3df56e639fc7f7d8a99741915531e27ed735d911ed83d7e1339c8188" -"checksum wasmparser 0.39.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c702914acda5feeeffbc29e4d953e5b9ce79d8b98da4dbf18a77086e116c5470" -"checksum wasmtime-debug 0.2.0 (git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6)" = "" -"checksum wasmtime-environ 0.2.0 (git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6)" = "" -"checksum wasmtime-jit 0.2.0 (git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6)" = "" -"checksum wasmtime-runtime 0.2.0 (git+https://github.com/CraneStation/wasmtime.git?rev=71dd73d6)" = "" -"checksum web-sys 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)" = "2fb60433d0dc12c803b9b017b3902d80c9451bab78d27bc3210bf2a7b96593f1" -"checksum webpki 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d7e664e770ac0110e2384769bcc59ed19e329d81f555916a6e072714957b81b4" -"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 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.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9" -"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 xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" -"checksum yamux 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2758f29014c1cb7a6e74c1b1160ac8c8203be342d35b73462fc6a13cc6385423" -"checksum zeroize 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4090487fa66630f7b166fba2bbb525e247a5449f41c468cc1d98f8ae6ac03120" -"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.4.28+zstd.1.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f4e716acaad66f2daf2526f37a1321674a8814c0b37a366ebe6c97a699f85ddc" -"checksum zstd-safe 1.4.13+zstd.1.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bfe4d3b26a0790201848865663e8ffabf091e126e548bc9710ccfa95621ece48" -"checksum zstd-sys 1.4.13+zstd.1.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fadc8ebe858f056ab82dffb9d93850b841603bdf663db7cf5e3dbd7f34cc55b2" +version = "1.4.15+zstd.1.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89719b034dc22d240d5b407fb0a3fe6d29952c181cff9a9f95c0bd40b4f8f7d8" +dependencies = [ + "cc", + "glob", + "libc", +] diff --git a/Cargo.toml b/Cargo.toml index 4235f09e7..c8668d9f1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,27 +1,12 @@ -[profile.release] -panic = 'unwind' - [workspace] members = [ - "core/cli", - "core/ethash", -# "core/merkle-mountain-range", -# "core/fly-client", - "core/sr-eth-primitives", - "core/merkle-patricia-trie", - - "node/cli", - "node/executor", - "node/primitives", - "node/rpc", - "node/rpc-client", - "node/runtime", - - "srml/balances", - "srml/eth-relay", - "srml/eth-backing", - "srml/im-online", - "srml/kton", - "srml/staking", - "srml/support", + "bin/node/cli", + "bin/node/runtime", + "frame/balances", + "frame/staking", + "frame/support", ] + +[profile.release] +# Substrate runtime requires unwinding. +panic = "unwind" diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml new file mode 100644 index 000000000..0624bae9d --- /dev/null +++ b/bin/node/cli/Cargo.toml @@ -0,0 +1,140 @@ +[package] +name = "node-cli" +version = "0.5.0" +authors = ["Darwinia Network "] +description = "Darwinia node implementation in Rust." +build = "build.rs" +edition = "2018" +default-run = "darwinia" + +[badges] +travis-ci = { repository = "paritytech/substrate", branch = "master" } +maintenance = { status = "actively-developed" } +is-it-maintained-issue-resolution = { repository = "paritytech/substrate" } +is-it-maintained-open-issues = { repository = "paritytech/substrate" } + +[[bin]] +name = "darwinia" +path = "bin/main.rs" +required-features = ["cli"] + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +# third-party dependencies +codec = { package = "parity-scale-codec", version = "1.0.6" } +serde = { version = "1.0.102", features = ["derive"] } +futures01 = { package = "futures", version = "0.1.29" } +futures = { version = "0.3.1", features = ["compat"] } +hex-literal = "0.2.1" +jsonrpc-core = "14.0.3" +log = "0.4.8" +rand = "0.7.2" +structopt = "=0.3.7" + +# primitives +sp-authority-discovery = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-consensus-babe = { version = "0.8", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +grandpa-primitives = { version = "2.0.0", package = "sp-finality-grandpa", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-core = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-runtime = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-timestamp = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-finality-tracker = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-inherents = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-keyring = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-io = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-consensus = { version = "0.8", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +# client dependencies +sc-client-api = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-client = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-chain-spec = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-transaction-pool = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-transaction-pool = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-network = { version = "0.8", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-consensus-babe = { version = "0.8", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +grandpa = { version = "2.0.0", package = "sc-finality-grandpa", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-client-db = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-offchain = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-rpc = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-basic-authority = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-service = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-telemetry = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-authority-discovery = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +# frame dependencies +pallet-indices = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-timestamp = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-contracts = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +frame-system = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-balances = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-transaction-payment = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +frame-support = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-im-online = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-authority-discovery = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +# node-specific dependencies +node-runtime = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +node-rpc = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +node-primitives = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +node-executor = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +# CLI-specific dependencies +tokio = { version = "0.1.22", optional = true } +sc-cli = { version = "2.0.0", optional = true, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +ctrlc = { version = "3.1.3", features = ["termination"], optional = true } +node-transaction-factory = { version = "2.0.0", optional = true, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +# WASM-specific dependencies +libp2p = { version = "0.13.0", default-features = false, optional = true } +clear_on_drop = { version = "0.2.3", features = ["no_cc"], optional = true } # Imported just for the `no_cc` feature +console_error_panic_hook = { version = "0.1.1", optional = true } +console_log = { version = "0.1.2", optional = true } +js-sys = { version = "0.3.22", optional = true } +wasm-bindgen = { version = "0.2.45", optional = true } +wasm-bindgen-futures = { version = "0.3.22", optional = true } +kvdb-memorydb = { version = "0.1.1", optional = true } +rand6 = { package = "rand", version = "0.6", features = ["wasm-bindgen"], optional = true } # Imported just for the `wasm-bindgen` feature + +[dev-dependencies] +sc-keystore = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-consensus-babe = { version = "0.8", features = ["test-helpers"], git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-service-test = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +futures = "0.3.1" +tempfile = "3.1.0" + +[build-dependencies] +sc-cli = { version = "2.0.0", package = "sc-cli", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +build-script-utils = { version = "2.0.0", package = "substrate-build-script-utils", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +structopt = "=0.3.7" +vergen = "3.0.4" + +[features] +default = ["cli"] +browser = [ + "clear_on_drop", + "console_error_panic_hook", + "console_log", + "js-sys", + "libp2p", + "wasm-bindgen", + "wasm-bindgen-futures", + "kvdb-memorydb", + "rand/wasm-bindgen", + "rand6" +] +cli = [ + "sc-cli", + "node-transaction-factory", + "tokio", + "ctrlc", + "sc-service/rocksdb", + "node-executor/wasmi-errno", +] +wasmtime = [ + "cli", + "node-executor/wasmtime", + "sc-cli/wasmtime", + "sc-service/wasmtime", +] diff --git a/node/cli/bin/main.rs b/bin/node/cli/bin/main.rs similarity index 66% rename from node/cli/bin/main.rs rename to bin/node/cli/bin/main.rs index 4ce38527f..338fbd081 100644 --- a/node/cli/bin/main.rs +++ b/bin/node/cli/bin/main.rs @@ -18,45 +18,40 @@ #![warn(missing_docs)] -use std::cell::RefCell; +use futures::channel::oneshot; +use futures::{future, FutureExt}; +use sc_cli::VersionInfo; -use darwinia_cli::VersionInfo; -use futures::sync::oneshot; -use futures::{future, Future}; +use std::cell::RefCell; // handles ctrl-c struct Exit; -impl darwinia_cli::IntoExit for Exit { - type Exit = future::MapErr, fn(oneshot::Canceled) -> ()>; +impl sc_cli::IntoExit for Exit { + type Exit = future::Map, fn(Result<(), oneshot::Canceled>) -> ()>; fn into_exit(self) -> Self::Exit { // can't use signal directly here because CtrlC takes only `Fn`. let (exit_send, exit) = oneshot::channel(); let exit_send_cell = RefCell::new(Some(exit_send)); ctrlc::set_handler(move || { - if let Some(exit_send) = exit_send_cell - .try_borrow_mut() - .expect("signal handler not reentrant; qed") - .take() - { + if let Some(exit_send) = exit_send_cell.try_borrow_mut().expect("signal handler not reentrant; qed").take() { exit_send.send(()).expect("Error sending exit notification"); } - }) - .expect("Error setting Ctrl-C handler"); + }).expect("Error setting Ctrl-C handler"); - exit.map_err(drop) + exit.map(|_| ()) } } -fn main() -> Result<(), darwinia_cli::error::Error> { +fn main() -> Result<(), sc_cli::error::Error> { let version = VersionInfo { - name: "Darwinia IceFrog Node", + name: "Substrate Node", commit: env!("VERGEN_SHA_SHORT"), version: env!("CARGO_PKG_VERSION"), - executable_name: "darwinia", - author: "Darwinia Network ", - description: "Darwinia poc-1 node", - support_url: "https://github.com/darwinia-network/darwinia/issues/new", + executable_name: "substrate", + author: "Parity Technologies ", + description: "Generic substrate node", + support_url: "https://github.com/paritytech/substrate/issues/new", }; node_cli::run(std::env::args(), Exit, version) diff --git a/bin/node/cli/browser-demo/.gitignore b/bin/node/cli/browser-demo/.gitignore new file mode 100644 index 000000000..0c6117d9f --- /dev/null +++ b/bin/node/cli/browser-demo/.gitignore @@ -0,0 +1 @@ +pkg \ No newline at end of file diff --git a/bin/node/cli/browser-demo/README.md b/bin/node/cli/browser-demo/README.md new file mode 100644 index 000000000..2ff1cc54f --- /dev/null +++ b/bin/node/cli/browser-demo/README.md @@ -0,0 +1,9 @@ +# How to run this demo + +```sh +cargo install wasm-pack # If necessary + +wasm-pack build --target web --out-dir ./browser-demo/pkg --no-typescript --release ./.. -- --no-default-features --features "browser" + +xdg-open index.html +``` diff --git a/bin/node/cli/browser-demo/build.sh b/bin/node/cli/browser-demo/build.sh new file mode 100755 index 000000000..c16100794 --- /dev/null +++ b/bin/node/cli/browser-demo/build.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env sh +wasm-pack build --target web --out-dir ./browser-demo/pkg --no-typescript --release ./.. -- --no-default-features --features "browser" +python -m SimpleHTTPServer 8000 diff --git a/bin/node/cli/browser-demo/favicon.png b/bin/node/cli/browser-demo/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8a4548ce34dfa220f612080820cfde778a39cb8f GIT binary patch literal 10338 zcmYLP1yoaS+(wZQfk{a_5mcmyv>+u2qR5bj(d7VXk&w|jQbIxLPKhB5DS^?QA~Be> zGziGpzKj3wJKu9I=j@F4zQ5;ve)Zn>E>cVL2@Mq+6$uFmjk?-nZ4#18f){_3q`)_D zIm|2x$>n3MXF4jp|8W2QeLg-uetv!d0RcflK_MX_VPRnr5fKOg(F;6y@IXvVOdNoO zxP*j+q@<*jl$1088EF|AnTHP_$^wwPz@tZxgej~>gnm} z128Z!Ff=eUG&BNWY;0^|YyvZZ!CuI668y0eJoTwX?Ici?fT1iz@&(H#c`TcMo?D0G^(nZ{ED| zdgJxh>n#9pZ*LzTA739|KVLrp@7}%h_xDHmBLWbJfPjF&z`&rOpx~h3kl^5ukdV;O z(6G?3@UZZR@bHL;h{(vusK}`3sAyz#G!lu7iHV7giH(bmjf;zmkB?7CNJvabe4m*3 z{{8!;q@?8JF(<4>F)0B z>FMq5?d$FB@9P`r?;ji(7#tiN8XO!R8X6fM9vvAO9UU1P9UUJVn;0LToR|QvsmaOd zsi_~+(=$JQ0N2l%nc1H|=VoW;=jMQGVSXOFu&{{5E-qr178h|#OTTcqVf>&8^?Rx3{)-wzqe8cJ_96_xJV=_64TdJb+BN zWTYh5ft@eU`+KYNcD5M{XM?7``7t`@lo-?TqSWw8gC-HkVTpdIuznK{@L`HO%;X5( z5npN=E#+pjd4(c{(Js@-utc}8IBqBXov{8J_{6U^N!lLFkfj7X+1Fy7)$nv6ImVJx z?szijH$G>mSslenblh}AbvmYNFFMuu+U?xF-Dm5u5_I5ROAA7tIsQ2E6d|K5sIz3o$M{LPA|;*R$&mtt|s+o)K?&I~!SYvz&J zUjGn_sjC7^uk`#E;;Xr=-rLo|&?ll9?E9Uu(VJyPzH$BsT7&NGlLW6TR_SA&1=Hth zH8Lf7gWmae?sYz$?uc)d5dX5%++|DERP^5_&yI&);?}a0md`rJgIP==`wy$!v|#5c z&PU@1@^-S5*fhaDO>_Vkv{5(3*Cv`tK>c25fgh(yJ8=3!h%%D1ycF^bWcTT#@|8 z-)Tz2MKd0Ldz^G$1?7bGt;T#B60MjA<6Zc1=3kZ>m@KuSu(?x?<82xa9Q;AErED;w zyTu~iV6?Jgn<3iNnpJ<%N#3t@5v+M?f_LV56HWV`prv&-4)+-PDS%@`+qRQYcl{Ps zPLiMDcrs09FDO6)BPG!!%ryYCh&LY+fCHHupIijy~r}< zAD8;VY8TXy>PTNoj$4g2;qB1WLnb|kqx|;CVqKSEP2Q)G$ko3>H-0*IEU1)c(kVTY z`r_lC4}Zx|4D&L?cz&-I%w?enme1tvsMmYz?s-7Vb%XOItVPGO*z@VS+Mq;X`?wn| zad@{v6gqQF-fJdR$r1nVXvA$IS1)yn1(RRqAOx(Jm4L$Tg60jSnj8f!zB|eOnT8bIQ!mi=P?1()@I&* zOct9!6~1Ek-iT($r;vHIVNB2YTZDzl=fddy7Au0q&WMdte>-IKOJ&DuaJ6drr^Raq zSkvRL2AGLM;l?Wf|I;lQu4W8Gd(Xsf;xFzUnPJXkc8#igt6Ue_6d$Gp(dWA7hNTcvXf2m>OAJxw3PMweYvTYuO3RHmQD4iG7xToc z3Cu-aNpHyzn;@gG&aKumM(=??$YPP&43== z-J_r-ig=)MnPL;r{pNy1Q9Xz0%e3{Y2F%xH-%oamRD5!8rnBUXO`!d_WglwA^O5T+ z&j`muuj83ASAIr z{u6YDe`V*Ue!1pL@T%W^nMvKz_j{kLU>t<(K59S_wuR%|+)Ky=w?R{W)Ke{0_7~-M zLH)me*SifGe%&^~=+JsUaXF!|fqg(|odmZ+Mzas{^dfuhaYf0#iuWD5Jm0Fbh9lx9 z#mgB8#i@?gtf?JfKm)*VLK#vb%&2K~7E`kJE+>d|Tm2#?M$vURmUX)q*MP{t&Xn&r zw1H9M5-+%EudZwJvv6;{>k8eM))9n`ZpMEExv?=zPj-?VCwczU+eS)tX4Tm(o%A$(cELHx zsEws~$`57#yey??x~Evu^$pC7+T#DIYAk{-XL57Ys6~-j<&k3Uw=;g_(T`qMe|N)q z^eYFhI2;MZnlQV^h2kD;Q!3$Uxbwg&Lv^1C0Nw0}jjDU~KqV!eMP09zyfP}3E zraWBw0p|5R>3jwRuo!{F3UK6Apt&N%?H2yU3flg)4^4zrb!o zX2L-FSnL#odt_oX3iP&5={w%q;5NosK@TTYSW_>58GZ5!G=l~T$=SQp9ejW$&WP}Y zm~WXhg3;9&>R>%yY63ExdFBU^$YrKC86_oe?cG*zxlOz)iQYm^Rn-AB%8yG z)n*Q|^sKDch)zS&1~y$!#YhPF=XO@^P8k+tZVEYMwrZEx9uTuw=KZ0C8T!@ccZ_FP z2N+1+-OY{FDoq@HNxof9m(TFz><`am223(g%ac*nnbQAsiVe&%liM*7D405LHBwm2obNuo@ zc22Mm*Y(QtZ~PORR8~AO@)28+PyZUimthUkC!LSToCY{Ib7CBHY^r{1NIJnDBgfY= zx`L-X`^0al!b|tU>+#AQsD99(EkLuXBI@3{gn#n*?Lm$tPddz1!45S(+tbCk86;| z@OONiC{M^q_!px;8SiJ%lsIjL)a!lCOdN#8)Pv!~LHUS2o`b#ATsv*MAj{F7J7t_x z&6R9MKR|sbPdZ5AW%ReI1I;fe`@PElTKSn!dr1FhP}P>3IyHo5r(P)x>hDT>5!9de z8@Obmfb3Y%1H#H5H7*`VJ&`sXCd1H?{%tLJviJS{&D%(g%P>L!BoPBPN9u?f5`F)$ zL>5klKWQ&6f=$^p42$q#W*s(;{+do^IZ_(st_x;1?tWDkLCeab!u^2 z&)mX;Mj{%M+&n+?*7Y^o6N*_D!g#}rsnu^%2eI@#Y$Jov>ujPlUHIUkS6L#snNKjf z-hxDE<`=*n%hlb_P_d?YsUEjf_jduUZQ?EM>6LfTB(d4uazpil5mKcerzO4!-Bxuo z{Iy#@^~WRqDv+(e7S@DRT#!iyf~g%^xL4@XhTF%~IPF&5ztUL;^Y>eBA^BH-SMn3X zCz%Wvw;lr95h-09=#%J79=w4kjO|*h$FD#)HlmAB2kXI%WT5M-8`84B`9*`~aV?^(keUP2oy7TRE`)8|@aMN@)Ip5pHk3p6~-V?0sQ6JAb3BjF<&S{ zjXjelPp=iD;bfff3a{wc%yzS5?=(E*Kf3&p>$T~>P)iPx?T&6XJ|BNaN zezd57S8i|oKMI_|?J4_+-x^>lG_I+A4Y6Mk;VkTajIHiow16duH<r1S+d5iSMp8kekul)g>V zo^;v@D^e{x&wm&mF}QSwa{`DT)m-@7Y*k3*pB$p66u{J=PV-@wUSU6+w#uKk25lKZ z#$p};C*kk)f!$qvW}p!nIdS)qI45(b3ppGRl;T_H3w`IBez|%PmzqjEfk3rj5j&9qU?7EoZZQVed@X zk!v1)ZBkMU9XF8wzOUVQLi!8**Dr)t@NoO6n6JmL!;K0-sfk#B%{Z?&12<`4c8nS> znf*9K?C+YmFUKf$xF1)IgryKk3=0S5-F`TDtl5ImK z7JHbwt(v{*O{P1hA!B(*-viWjorqlo1t8)juWcx%jwqpC3tRWAMD&aoXiOcH^i2Dt zwNL2TcP<+-FM-)iYREW@)?8=lcSPuuMr`Bby?Mj(ApR@+T*x zxk!mBqt68gyA-e?{%};G_u%iAXOTu1QR{t}o47o+X*5$aA^+~Xj zdE|rod<0~m$f%wn6H;2i*_wJu*|;dr7#~^GWkTS#>OWQJxQkPM%}cbYm-^OIOa>tA z2@$K`ojV#;K`ruc`3!y)*lrJ}I`h_`OGE7LQ9L4EHxmSP zlAHuDLG}M`w)U@=X^6GW&z+rE@KOm7;gpEoQ;H?c<02}H zO`rZ6p;sp1%?|hK$^H0%7SqW5O_EiI+a^b^RepGmSN2A55JV{IHmTEQ)l21==wD7= z$zjy?I$bm+tZ5S=)Tt=1}hv&o0(7>d8$J?8pX+ob=(xmYl| zMNX)}=w{TVU5a2t)?T;=s%#T7g#M1vjfDIAboiJ=B#A!i5+mN?Z)Uj2aj_Uc8A=4D zt_t17I6ij$1rf+j8VCzE`g?Pa-kY(I4;Z+dNf>=TKuQP5^FpYsz9mPb)F4 z_~1Bs62juii;}xs+|D@46N&)&Jg1!862Ea5E1pum4~BzQzdc^Lef4g?iL{54d1)ekjGW%G=kBN{{>7f(A@AESh zws(It?_Z?=@)bg_7yUbeX&01L*zh%S-usEgU#i~kP1397xT$#5yLkk$JGVZoiYX#N6wTjDe0+<= zDqK1>Vw-h4P`qMIu3F~{|F+*ng?dDY*Sl|+4=2Nu+N&-)P25E37wk$$vOe{uxO(KH{M>V*J+k@h7LVHO8S(6?VA$k-hW- z)!xT~|B=Hhvk|a}#j5n$U({yCr>@4Ae_B2x!rfL`X5@+WS%4KUXSJV)%=3e23ErjF&4oT3II(28 zilyjGnL7?~tI|W>`%W&u4I{!zIouE5W?GxweB~Wp(eHt*s)f!)dR}T}DKljpTx+<) z*8|b#>7>(TtDBnW0?NVg16~z$qs6BM`AHb`5s}0v?SU`!14Mf!Xv}y^Rqy3b)2aD+ z)ASYatg4RdN%$2w=Q-Ckg!ysKF29e)?L-dL``(sEIcYP0&~>as#g9eVp}>}48t_H? z1MA~(zc_?~`yQW9W$(37GApS@k4#z-SnEFe?+K}W2b);VjK{0jC28YSCln-BF22zE zgp_nH@ox_;AJpDm;)eUe)c;%tSj0!oQ{t%9vY!I8 z`CQb2pzf4kV5-;i&^uRI>yg1fqc7_o{>AFQovw&o7nyMGc)AB7r&ZVo6_!^335fw~ z)5sAnp~Q~)e9Bq1=a+4uOkN}NOE{1Y_vCfB(mrr17t~cHfchXpzM(R5?&M_hhx&e$ zOWirE+dma9VRZi7yDTljKL29#gNfiUG6=A!fB43ylW@muFEb^%Ji1Mu#rR$n0vLjj z5INmooLwK>QVHbuNqpjXZB^^0P%%h0S3~~_(vPgJvfwE zI-C$7aJ6Fkz}$mN)cCf+X4{GzHOyqWIbY9zQQD+@V%=-m_OJiw3%yCjQZ6daxDmQi@*}hl#aTA3`tqL~8eA}EQe!+`xl-GoeeW0C)fbudU=5#2R`V^2@^57+drNm*UV*Rj5*M~cACs;27*+6qTy_~E*30| zqbTPqbez?^W0S3vjf+?K?rC_%0~MfS7aPr*G8R|-P5xqrWFPNTU15d_-yakO3Xz8; z%`U|aV!Rf>f~tiz^c^46G2zH_iwVV1YNBFOYngvSL5lb?pP@x|!Qe#C_6g*+vCXup z{unxfs)<~YUoR1{%b#$9SH6q_HYv#y(cg{l{xF6*V9c?>Bw9zsLERp?6A?sNrcRlYr&fNT{! z215#S8n2At+q1AYfm4`W(Yy}$mh~d&6;son5iXBEuMsdg(eI;{p-@$g<_c4!wPeMcg|MGg+Mf+#He`bkB0JK?yOdM)^>*-wWlKS~ZY^}CxTk=m+XrO$n#1d=KGAr}9DCGkX;n~cL zDF_M`q}N)K*tu=;Ql^lX zO*^w2q1caWX{NV__76zh{g^m~!e8g0&Hz?ehw%qmeXyNd__k&6?lVBMAa0kN*EhiI zpV!hPN9g_O#4Ler5x`s`H_I5B=SR3S__#%4d>}|w-d=}`106ZJ&79qO^#Bw(aY5(@ zlYQ2IgyOv?m+6l9M;z1+ZVL4ZQ{w|W<#}}aj4w=WsRr8RIQaDVnCA9D43tHkbL3k4 z;|=i2qNv#;+V5c53oBEHLZqzPM6q$q<%%>|)YTSBwyOQpa2~k#0B^=$*6Ecsd)A@H zooc@Zf(Cih68~7LNXlQGd#rI1Y6$OK0WXyEme7s_~KB=N(@`=eq zzYzbu6%3r{x=!p*KBPpr{HM0l*ai} zIxOfWkwl%ElRH83T3A`>vmc#b!nyf{lq5%H&TrdyJUsw4Ee!D-Tup-xPcGXTedy4F z(0kWp`JG`F|4X#LfZ|&C;M-!NT73?xfx8r6*~#ugJdlTu4!Z`BzWNW6BWx$6o$~do zE|WX!1JB6Cv9LquJ(T;m`4)zM|_~#mMGJ9-mtW|6|hKTHr%Hto$LtM zWBQKu>YUsZ`Yw!&wpS-`McjX&(H-FFJ;&>Ek4jfnW5uw-w*itk2b|cF0lDaJfdw%V z%~i3H6ElH(7ksuKS7q|$zRM?_HS1w{H8Jq#?ox&4Y2=MXW{gTLqX%|^YkkjN8)Xzn zdJ^0v->S)oF7P@fISIWJ?elf+!@{~xNlvO4L%A!RV2^yrFsCmz0~(dRlIx0$vj7N; zY0L{0g(DNz(#hH{%tN{iy6R1%)mkXY;{KG{pFb-5)GEh-GQkB& zx&jfu4{V*Sq0T>=vO*@m0HP=z#acB z8oz&y6p;m_qRm}oBbdH4zY!Y$nYY$k?%Jj|%D9^)ve{6?8kS`Cp^ZCRvA%=!Vy00% zDZv3S2Rs|n7>;YC9E6oe??-Fxs!60 zScE(sGsk9_2mj%jxlN zbW2lKz;~6dD|f0L0x90?TAa@#HIO}^k+wCg*c>U3ZEgBHF)H3feO>v+(QSO2S~u^1 zYs8J~A}?>J>1gbM*!O6fstcv<%L_3U)Gj*$xuF6UEZJ{DL|iH_p%{q@D~3M2gg`)O zN3$d|mW$L20ge~zrvi)yn1~9?K(440E-ixG4nGO=1(=1%MEs=To>gTc-xklF3>>Oq zgB}t{aG>7ijI!&(v|Q)k>myRckXq5Ez!c;6s)l%{Bb1KB5EbJ1LTlEou5<0qe^zW* z2y(S2+u@mxs|;JFiHI!c8{@bn-M_YNmm4owka3EM0Vm4!z`IxFsV}<}tlY`OfmJ-}<4~#C%tg;VaDcg59pyYHfOUbyeuwzW2E zg;`@kNfyAW`lD>(0L{&@pyFn5ZaUdH?UF*U%iPiT+>#CbVtCU(5xM}8kLy>Xw5G?q+ z=hO$LJ~osa53#is%tIu3edF+91j7VN?>*qAOxmKQg(9{Ictd=sJTJjQv@%#~2@L$> za1La6{QAgPc2VKmK*MVX4t$^}Qfp59-LdlIj$clfI{(N(P}{q0G2-=R%^NkAs2Amf zl~#C*TE*=jG~6a$&lk?M9!@0UNjt#QZgC?2d+U~t#*9ADb3~CYbKzcXOM> zkA2Oy&4tvpKWYL7{IsB&eO7?QB#NClnuE^Q+rE>oM^gZnhG&}tH=n_eU>w&F5r|jN z&)S>4Rajd^21HicpWl%WGY?(S-W24olWU%oE}Le>3JaF#^CRUWn17ykjP<}#-(#X5 zZ6CjX!J9rILttow&%CTmd4RsEHE>Gemslzw7k;P;)7p)oVksZ4oj z6yqEBqrS+rd_4c)?~QA-%jKAfUd@KIRhb3jdR@(!=wy_c35+n#+jzHDU#~B@SG8(m zIqHsHlTp=pNh*J=!I4`heW_`Mf#t*|lSZje!&0PfrM^J<22=3Ub9ueM)Z0O2WjVkv PrbyIPG#^(enFsw3U`DIs literal 0 HcmV?d00001 diff --git a/bin/node/cli/browser-demo/index.html b/bin/node/cli/browser-demo/index.html new file mode 100644 index 000000000..cf107e645 --- /dev/null +++ b/bin/node/cli/browser-demo/index.html @@ -0,0 +1,39 @@ + + + + + Substrate node + + + + + diff --git a/bin/node/cli/browser-demo/ws.js b/bin/node/cli/browser-demo/ws.js new file mode 100644 index 000000000..fa7a499a8 --- /dev/null +++ b/bin/node/cli/browser-demo/ws.js @@ -0,0 +1,148 @@ +// Copyright 2019 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 . + +export default () => { + return { + dial: dial, + listen_on: (addr) => { + let err = new Error("Listening on WebSockets is not possible from within a browser"); + err.name = "NotSupportedError"; + throw err; + }, + }; +} + +/// Turns a string multiaddress into a WebSockets string URL. +// TODO: support dns addresses as well +const multiaddr_to_ws = (addr) => { + let parsed = addr.match(/^\/(ip4|ip6|dns4|dns6)\/(.*?)\/tcp\/(.*?)\/(ws|wss|x-parity-ws\/(.*)|x-parity-wss\/(.*))$/); + let proto = 'wss'; + if (parsed[4] == 'ws' || parsed[4] == 'x-parity-ws') { + proto = 'ws'; + } + let url = decodeURIComponent(parsed[5] || parsed[6] || ''); + if (parsed != null) { + if (parsed[1] == 'ip6') { + return proto + "://[" + parsed[2] + "]:" + parsed[3] + url; + } else { + return proto + "://" + parsed[2] + ":" + parsed[3] + url; + } + } + + let err = new Error("Address not supported: " + addr); + err.name = "NotSupportedError"; + throw err; +} + +// Attempt to dial a multiaddress. +const dial = (addr) => { + let ws = new WebSocket(multiaddr_to_ws(addr)); + let reader = read_queue(); + + return new Promise((resolve, reject) => { + // TODO: handle ws.onerror properly after dialing has happened + ws.onerror = (ev) => reject(ev); + ws.onmessage = (ev) => reader.inject_blob(ev.data); + ws.onclose = () => reader.inject_eof(); + ws.onopen = () => resolve({ + read: (function*() { while(ws.readyState == 1) { yield reader.next(); } })(), + write: (data) => { + if (ws.readyState == 1) { + ws.send(data); + return promise_when_ws_finished(ws); + } else { + return Promise.reject("WebSocket is closed"); + } + }, + shutdown: () => {}, + close: () => ws.close() + }); + }); +} + +// Takes a WebSocket object and returns a Promise that resolves when bufferedAmount is 0. +const promise_when_ws_finished = (ws) => { + if (ws.bufferedAmount == 0) { + return Promise.resolve(); + } + + return new Promise((resolve, reject) => { + setTimeout(function check() { + if (ws.bufferedAmount == 0) { + resolve(); + } else { + setTimeout(check, 100); + } + }, 2); + }) +} + +// Creates a queue reading system. +const read_queue = () => { + // State of the queue. + let state = { + // Array of promises resolving to `ArrayBuffer`s, that haven't been transmitted back with + // `next` yet. + queue: new Array(), + // If `resolve` isn't null, it is a "resolve" function of a promise that has already been + // returned by `next`. It should be called with some data. + resolve: null, + }; + + return { + // Inserts a new Blob in the queue. + inject_blob: (blob) => { + if (state.resolve != null) { + var resolve = state.resolve; + state.resolve = null; + + var reader = new FileReader(); + reader.addEventListener("loadend", () => resolve(reader.result)); + reader.readAsArrayBuffer(blob); + } else { + state.queue.push(new Promise((resolve, reject) => { + var reader = new FileReader(); + reader.addEventListener("loadend", () => resolve(reader.result)); + reader.readAsArrayBuffer(blob); + })); + } + }, + + // Inserts an EOF message in the queue. + inject_eof: () => { + if (state.resolve != null) { + var resolve = state.resolve; + state.resolve = null; + resolve(null); + } else { + state.queue.push(Promise.resolve(null)); + } + }, + + // Returns a Promise that yields the next entry as an ArrayBuffer. + next: () => { + if (state.queue.length != 0) { + return state.queue.shift(0); + } else { + if (state.resolve !== null) + throw "Internal error: already have a pending promise"; + return new Promise((resolve, reject) => { + state.resolve = resolve; + }); + } + } + }; +}; diff --git a/node/cli/build.rs b/bin/node/cli/build.rs similarity index 82% rename from node/cli/build.rs rename to bin/node/cli/build.rs index cb3a3bd34..44bbe8c5d 100644 --- a/node/cli/build.rs +++ b/bin/node/cli/build.rs @@ -14,11 +14,10 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use std::{env, fs, path::Path}; - -use darwinia_cli::{CoreParams, NoCustom}; -use structopt::{clap::Shell, StructOpt}; -use vergen::{generate_cargo_keys, ConstantsFlags}; +use std::{fs, env, path::Path}; +use structopt::{StructOpt, clap::Shell}; +use sc_cli::{NoCustom, CoreParams}; +use vergen::{ConstantsFlags, generate_cargo_keys}; fn main() { build_shell_completion(); @@ -42,15 +41,12 @@ fn build_completion(shell: &Shell) { Some(dir) => dir, }; let path = Path::new(&outdir) - .parent() - .unwrap() - .parent() - .unwrap() - .parent() - .unwrap() + .parent().unwrap() + .parent().unwrap() + .parent().unwrap() .join("completion-scripts"); fs::create_dir(&path).ok(); - CoreParams::::clap().gen_completions("darwinia", *shell, &path); + CoreParams::::clap().gen_completions("substrate-node", *shell, &path); } diff --git a/node/cli/doc/shell-completion.adoc b/bin/node/cli/doc/shell-completion.adoc similarity index 100% rename from node/cli/doc/shell-completion.adoc rename to bin/node/cli/doc/shell-completion.adoc diff --git a/bin/node/cli/res/flaming-fir.json b/bin/node/cli/res/flaming-fir.json new file mode 100644 index 000000000..1e7d4424b --- /dev/null +++ b/bin/node/cli/res/flaming-fir.json @@ -0,0 +1,111 @@ +{ + "name": "Flaming Fir", + "id": "flaming-fir", + "properties": { + "tokenDecimals": 15, + "tokenSymbol": "FIR" + }, + "bootNodes": [ + "/ip4/35.246.224.91/tcp/30333/p2p/QmSk5HQbn6LhUwDiNMseVUjuRYhEtYj4aUZ6WfWoGURpdV", + "/ip4/35.246.224.91/tcp/30334/ws/p2p/QmSk5HQbn6LhUwDiNMseVUjuRYhEtYj4aUZ6WfWoGURpdV", + "/ip4/35.246.210.11/tcp/30333/p2p/QmWv9Ww7znzgLFyCzf21SR6tUKXrmHCZH9KhebeH4gyE9f", + "/ip4/35.246.210.11/tcp/30334/ws/p2p/QmWv9Ww7znzgLFyCzf21SR6tUKXrmHCZH9KhebeH4gyE9f", + "/ip4/35.198.110.45/tcp/30333/p2p/QmTtcYKJho9vFmqtMA548QBSmLbmwAkBSiEKK3kWKfb6bJ", + "/ip4/35.198.110.45/tcp/30334/ws/p2p/QmTtcYKJho9vFmqtMA548QBSmLbmwAkBSiEKK3kWKfb6bJ", + "/ip4/35.198.114.154/tcp/30333/p2p/QmQJmDorK9c8KjMF5PdWiH2WGUXyzJtgTeJ55S5gggdju6", + "/ip4/35.198.114.154/tcp/30334/ws/p2p/QmQJmDorK9c8KjMF5PdWiH2WGUXyzJtgTeJ55S5gggdju6" + ], + "telemetryEndpoints": [ + ["wss://telemetry.polkadot.io/submit/", 0] + ], + "protocolId": "fir2", + "consensusEngine": null, + "genesis": { + "raw": [ + { + "0x8f9a319405d14f3953657373696f6e204b65794f776e6572343a73657373696f6e3a6b6579730a299be621974fd19374a88f1dddd8442b21db25d2c923907dda6af815b657fe": "0xf26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663", + "0xd368b9d9bb1cc910c9a2b8e5d0f5f2fc": "0xf6ffc06ff28623000000000000000000", + "0x8f9a319405d14f3953657373696f6e204b65794f776e6572343a73657373696f6e3a6b6579731143fa96e07eb73af3db3a1b057d18899f864e6fc5d2f905f9296ca641565564": "0x9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12", + "0x8f9a319405d14f3953657373696f6e204b65794f776e6572343a73657373696f6e3a6b65797397dddc7aba561f16ac00da4bae75ab812aa7b81418bebdab74425f0d6aa31cee": "0x547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65", + "0xbde3e43a2a348359d103d64bc95928146bdd9ae3490e26da38d2e4d19c137507": "0x0000a0dec5adc9353600000000000000", + "0x8f9a319405d14f3953657373696f6e204b65794f776e6572343a73657373696f6e3a6b65797340944475c781bbdc9726766a78b1964888e039600b1c865c62586ab8f98c171e": "0x547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65", + "0xf186665804ca50670311307912458ce448d82cb96e7e4fe71df38c283a8720f4": "0x9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d120f0000c16ff286230f0000c16ff2862300", + "0x50a63a871aced22e88ee6466fe5aa5d9": "0x9ee5e5bdc0ec239eb164f865ecc345ce4c88e76ee002e0f7e318097347471809", + "0xaf837bb0dec545e1b97d62ed037898d1": "0x1000299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106", + "0xe026dd082e3158e72eb7c985fc8bac4f": "0x80700000", + "0xb49a6659ec27619e87dd18e11b6838c0": "0x00", + "0x7c79972b34b7e51bdd5f168ba3accd35fbec396be75dfad19dd1121327f1a1ad": "0x000168655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde7800", + "0x8f9a319405d14f3953657373696f6e204b65794f776e6572343a73657373696f6e3a6b65797399a2fc4b1339e668345bac7e1aadd1a834b90939a4ea40b64f30433a1d475817": "0x9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12", + "0xbc3717660105a864bd63dcd430de64128d58bd0917fa8dd75aee827cf086e19c": "0x0000c16ff28623000000000000000000", + "0x8f9a319405d14f3953657373696f6e204b65794f776e6572343a73657373696f6e3a6b6579732c1312343dce08149336968907c27cc602536aaf7a2b105d6fa07058a3803d31": "0xf26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663", + "0x72143961950b9317e15506626c4524c4": "0x1000299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106", + "0x9651d20f401bfac47731a01d6eba33b4": "0x00000000", + "0x8f9a319405d14f3953657373696f6e204b65794f776e6572343a73657373696f6e3a6b657973dc4036f96ca26a30da6d8637ca1431896c1069bf172c419e98dc08109e7b23b5": "0x68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78", + "0xf14d23a9d4492a1efc9194e257b3c3d9": "0x00000000", + "0x90e2849b965314409e8bc00011f3004f": "0x04000000", + "0x52b963fbdb3d6e1b03808fc20071f07f": "0x004e0c00", + "0x87e6cbd186029472cea8c1748f99126b": "0x00000000", + "0x717a2ee9c64ad3424e10e4461ec08296": "0x0000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000008700000000000000af0000000000000001000000000000000100000000000000040000000000010010000000004000000020000000", + "0xeecb67c20ca6cc8ba4d4434687f61309": "0x103919132b851ef0fd2dae42a7e734fe547af5a6b809006100f48944d7fae8e8ef01000000000000005633b70b80a6c8bb16270f82cca6d56b27ed7b76c8fd5af2986a25a4788ce44001000000000000007932cff431e748892fa48e10c63c17d30f80ca42e4de3921e641249cd7fa3c2f01000000000000009becad03e6dcac03cee07edebca5475314861492cdfc96a2144a67bbe96993320100000000000000", + "0x154ebcb2c318b2e1c23e43e65aea27cd1348c4c5157502d7669a31c7635019cc": "0x9e42241d7cd91d001773b0b616d523dd80e13c6c2cab860b1234ef1b9ffc1526", + "0x633daafcb669e97549c1b9d65660881016f969040bc16171709159437c31294a": "0x0ff6ffc06ff286230ff6ffc06ff2862300", + "0xfacbe054606f2488121046f9c5539d98": "0x00", + "0x0c41b62474c49057a4476d0b96853c6d44e9c86c5fa130b0da3831c5eef546a0": "0x00", + "0xc1bc13c775b3406279618b05c28523cb": "0x00", + "0xf4adb4c4f708c4b753657373696f6e204e6578744b657973343a73657373696f6e3a6b657973711590f60a214f6f06502eb29dd14f55aa04e72e2fa12c098ba4fa5a00c57fa9": "0x7932cff431e748892fa48e10c63c17d30f80ca42e4de3921e641249cd7fa3c2f482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e", + "0x75f6361fd25fec35714be80f2d9870af8c92e73cb6d299ba4774f5b0ad842275": "0x00", + "0x579ab55d37b1220812be3c3df29d4858": "0x00000000", + "0x4e62513de81454ce76df887573f7f98b101eb4585b1485a222b7db599f4e93e2": "0x047374616b696e67200000c16ff28623000000000000000000ffffffff0f", + "0xa902f1f0ef97177b8df9f9fd413768e7": "0x00000000", + "0x8f9a319405d14f3953657373696f6e204b65794f776e6572343a73657373696f6e3a6b657973be035f25cd43adc80f1dcf505f5ffd158d1592ab3719f354a256a4c3b7571934": "0x547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65", + "0x1ba14d232d3c301a93e35f55e3d7aef2d98dbb9cc0ce48f457b81b421e0f704d": "0x0000c16ff28623000000000000000000", + "0x2dce29f1a768624dc5343063cb77f77d": "0x07000000", + "0xa978690c6b811e943721dbb6cb9b6246": "0x0000000000000000", + "0x8b4621d5f16433d6024b5a31547c59ee24e749e051dbb4bc7e64502f2a4f62fb": "0x66bc1e5d275da50b72b15de072a2468a5ad414919ca9054d2695767cf650012f", + "0x8cb577756012d928f17362e0741f9f2c": "0x01000000", + "0xc63b8a0db7e72fd87c88d8dcf4777b883f86728613c57148c4e5cdceb05b7a1a": "0x0001f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c26630168655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78", + "0x637414312dac3b280120bf15b4f66cee": "0x00000000", + "0xbf18c0c65fb39f32ee7c8016685c0a6056f8f924192efb2655be9a692d0b03b6": "0x00", + "0x3a636f6465": "0x0061736d01000000019f022660037f7f7f017f60027f7f017f60027f7f0060017f0060057f7f7f7f7f0060037f7f7f0060047f7f7f7f0060017f017e60057f7f7f7f7f017f60067f7f7f7f7f7f0060047f7f7f7f017f60017e0060067f7f7f7f7f7f017f60087f7f7f7f7f7f7f7f017f6000017f60077f7f7f7f7f7f7f017f60017f017f60027f7f017e60000060037e7f7f017f60047f7f7e7e0060077f7f7e7e7f7f7f0060087f7f7f7f7f7e7e7f0060057f7f7f7e7e0060077f7f7f7e7e7f7f0060037f7e7e0060057f7f7e7e7f0060077f7e7e7f7f7f7f0060067f7f7e7e7f7f0060077f7f7f7f7f7e7e0060047f7f7f7f017e6000017e60077f7f7f7e7e7e7f0060067f7f7f7e7e7f0060037f7e7f0060047f7e7e7f0060057f7e7e7e7e0060067f7e7e7e7e7f0002af082803656e760e6578745f626c616b65325f323536000503656e761f6578745f6765745f616c6c6f63617465645f6368696c645f73746f72616765000803656e76176578745f636c6561725f6368696c645f73746f72616765000603656e76146578745f6765745f73746f726167655f696e746f000803656e76166578745f6b696c6c5f6368696c645f73746f72616765000203656e76156578745f7365745f6368696c645f73746f72616765000903656e76196578745f6765745f616c6c6f63617465645f73746f72616765000003656e760f6578745f7365745f73746f72616765000603656e760c6578745f74776f785f313238000503656e76116578745f636c6561725f73746f72616765000203656e76126578745f737232353531395f766572696679000a03656e760e6578745f7072696e745f75746638000203656e760d6578745f7072696e745f6e756d000b03656e76166578745f6368696c645f73746f726167655f726f6f74000003656e76106578745f636c6561725f707265666978000203656e76166578745f73616e64626f785f6d656d6f72795f6e6577000103656e761b6578745f73616e64626f785f6d656d6f72795f74656172646f776e000303656e76176578745f73616e64626f785f696e7374616e7469617465000c03656e76126578745f73616e64626f785f696e766f6b65000d03656e761d6578745f73616e64626f785f696e7374616e63655f74656172646f776e000303656e76106578745f73746f726167655f726f6f74000303656e76186578745f73746f726167655f6368616e6765735f726f6f74000003656e76126578745f656432353531395f766572696679000a03656e76166578745f73616e64626f785f6d656d6f72795f676574000a03656e76166578745f73616e64626f785f6d656d6f72795f736574000a03656e760d6578745f7072696e745f686578000203656e76106578745f69735f76616c696461746f72000e03656e76156578745f6c6f63616c5f73746f726167655f676574000a03656e76216578745f6c6f63616c5f73746f726167655f636f6d706172655f616e645f736574000f03656e76116578745f6e6574776f726b5f7374617465001003656e76106578745f737232353531395f7369676e000803656e76166578745f7375626d69745f7472616e73616374696f6e000103656e76156578745f6c6f63616c5f73746f726167655f736574000403656e76146578745f656432353531395f67656e6572617465000603656e76146578745f737232353531395f67656e6572617465000603656e76236578745f626c616b65325f3235365f656e756d6572617465645f747269655f726f6f74000603656e760a6578745f6d616c6c6f63001003656e76086578745f66726565000303656e76176578745f737232353531395f7075626c69635f6b657973000103656e760b6578745f74776f785f3634000503fd04fb0410100303000010101112030205001202060001010201021303070c0a0200060101011001010101010201060305030001010001010800010001010101010102030203030202020202020203020202020202020202020202020202020502020202050304050205010205020202140303020e02020303030202020201020102020405020202020202020202030202150101160509021706030505180602030202020205050505000314141212030212120501030303030303030303030303030303020202020202020502020202051202020303120e050502020502141406060505050502020205171919120503020302031a02020202021b020303030203140303051c1905050202020502050201010303020202020503020203020202060605030302020302020202020202021d0206030302020303030205020503030302020202020312020206020202030202050205060202051206090606060606060606060606060606060606060606060606061e02020203030203021f1203020302020505020203030302020203030202030303050510120202020202120202030202031010020202040302060202020303030203030202010a020202020202030b03030202030202020202020202020220030321060202020102010602030505020202030302021111021111050202111111021111110511031111111111111111030303030202020202020202030214020204020303020202020302020202020a0101010101010102010101010102010105020102050503050202010101050501010205050405220202020505040202050303030302020204020201050102060501050606050501040405050505060303010101000000002323242424250407017001de01de0105030100120619037f01418080c0000b7f004188b1c6000b7f004188b1c6000b078d0518066d656d6f72790200195f5f696e6469726563745f66756e6374696f6e5f7461626c6501000a5f5f646174615f656e6403010b5f5f686561705f62617365030209686173685f7465737400300c436f72655f76657273696f6e008c0412436f72655f657865637574655f626c6f636b008d0415436f72655f696e697469616c697a655f626c6f636b008f04114d657461646174615f6d657461646174610090041c426c6f636b4275696c6465725f6170706c795f65787472696e7369630094041b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b00950420426c6f636b4275696c6465725f696e686572656e745f65787472696e736963730096041c426c6f636b4275696c6465725f636865636b5f696e686572656e747300980418426c6f636b4275696c6465725f72616e646f6d5f736565640099042b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e009a04214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b6572009c041e4772616e6470614170695f6772616e6470615f617574686f726974696573009e0415426162654170695f636f6e66696775726174696f6e009f0421417574686f72697479446973636f766572794170695f617574686f72697469657300a0041a417574686f72697479446973636f766572794170695f7369676e00a1041c417574686f72697479446973636f766572794170695f76657269667900a2041d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e636500a30411436f6e7472616374734170695f63616c6c00a4042153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b65797300a50409a403010041010bdd013d4c5147e50448495ea201a401fd02ff0280038103820383038403850386038703880389038a038b038c038d038e038f0390039103920393039403950396039703d801ca04d0048605d2048205e604d804e204d4044f8c05d10497059405393a3b8901644155565758595a5b6160636566678a018b018d018e01900192014e4d9d03be04b301be01a701bf01a801b601c001bb01f20262ad03ac03d901b103a203a403d503d403d6039c039b03c403da01a202a002db01a402a904a804dc01b204dc02db02dd01dd02ba04b904de01bf04b603b503df01b703c802c702e001cb02d903d803e101b602b702d802d702e201e302e202e301e402e703e603e401ea0389048804e501a702a602e601b201e701a302cd02ef03f003c902b402b502b902b802ca02bb04d202d102d002cf02ce02cc02f303d902ac04de02e802e702e502f602f402f702f302f502a303a603a503b003af03ae03d703e903e803f403f203f103ee03ed03ec03eb038a04af04ae04ad04ab04aa04b304bd04bc04c304c204c104c004cc04ce04cb04c904c704c804cf04e104d5049505980596050ac3c540fb040600200010290b0600200010240b06002000102b0b0600200010250b0a00200020012002102d0b2801017f0240200210242203450d002003200020022001200120024b1b109a051a200010250b20030b06002000102f0b1c01017f0240200010242201450d002001410020001099051a0b20010bfa0202017f037e230041206b220224002001ad42adfed5e4d485fda8d8007e42c3007c210302400240024002400240200141084b0d00200141014b0d0120010d02420021040c030b0240200141104b0d00200241106a2000290000200385420042adfed5e4d485fda8d8004200109f05200241186a29030020022903107c200120006a41786a2900008521040c040b200120006a41786a2900002105200321040340200029000020048542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e2003852103200041086a2100200442cf829ebbefefde82147c2104200141786a220141084b0d000b200320058521040c030b0240200141034b0d00200120006a417e6a33000042108620003300008420038521040c030b200120006a417c6a35000042208620003500008420038521040c020b200031000021040b200420038521040b20022004420042adfed5e4d485fda8d8004200109f05200241086a290300210420022903002103200241206a2400200420037c0b0a00418080c0001032000b5b02017f037e230041306b220124002000290208210220002902102103200029020021042001420437031020014201370204200120043703182001200141186a36020020012003370328200120023703202001200141206a103e000b870301067f230041306b2202240020012802002103024002402001280204220441037422050d00410021060c010b200341046a2107410021060340200728020020066a2106200741086a2107200541786a22050d000b0b024002400240024002400240200141146a2802000d00200621070c010b024020040d0041ac80c000410041001034000b024002402006410f4b0d002003280204450d010b200620066a220720064f0d010b4101210541002107200241086a21060c010b2007417f4c0d01200241086a2106024020070d0041012105410021070c010b200710282205450d020b200241003602102002200736020c200220053602082002200241086a360214200241186a41106a200141106a290200370300200241186a41086a200141086a29020037030020022001290200370318200241146a41bc80c000200241186a10350d0220002006290200370200200041086a200641086a280200360200200241306a24000f0b1036000b200741011037000b41d480c0004133200241186a418881c0001038000b6c01017f230041306b2203240020032002360204200320013602002003411c6a41023602002003412c6a41013602002003420237020c200341e883c000360208200341013602242003200341206a360218200320033602282003200341046a360220200341086a2000103e000bbd0801087f230041c0006b22032400200341246a2001360200200341346a200241146a2802002204360200200341033a00382003412c6a2002280210220520044103746a36020020034280808080800437030820032000360220410021062003410036021820034100360210200320053602302003200536022802400240024002400240200228020822070d0020022802002108200228020422092004200420094b1b220a450d0141012104200020082802002008280204200128020c1100000d04200841086a210241012106034002402005280200200341086a200541046a280200110100450d00410121040c060b2006200a4f0d02200241046a210020022802002101200541086a2105200241086a210241012104200641016a2106200328022020012000280200200328022428020c110000450d000c050b0b20022802002108200228020422092002410c6a2802002205200520094b1b220a450d0041012104200020082802002008280204200128020c1100000d03200741106a2105200841086a21024101210603402003200541786a28020036020c2003200541106a2d00003a003820032005417c6a28020036020841002101410021040240024002400240200541086a2802000e0400010203000b2005410c6a2802002100410121040c020b02402005410c6a2802002207200328023422044f0d0041002104200328023020074103746a22072802044102470d0220072802002802002100410121040c020b41a089c000200720041034000b4100210420032802282207200328022c460d002003200741086a3602284100210420072802044102470d0020072802002802002100410121040b2003200036021420032004360210024002400240024002400240024020052802000e0404010006040b20032802282200200328022c470d010c050b200541046a2802002200200328023422044f0d01200328023020004103746a22002802044102470d04200028020028020021040c030b2003200041086a36022820002802044102470d03200028020028020021040c020b41a089c000200020041034000b200541046a28020021040b410121010b2003200436021c2003200136021802400240200541706a2802004101460d0020032802282204200328022c460d042003200441086a3602280c010b200541746a2802002204200328023422004f0d04200328023020044103746a21040b02402004280200200341086a200441046a280200110100450d00410121040c050b2006200a4f0d01200241046a210020022802002101200541246a2105200241086a210241012104200641016a2106200328022020012000280200200328022428020c110000450d000c040b0b0240200920064d0d00410121042003280220200820064103746a22052802002005280204200328022428020c1100000d030b410021040c020b41f087c0001032000b41b089c000200420001034000b200341c0006a240020040b05001031000b0e0041a6f4c500412210e70400000b810101017f230041c0006b220424002004200136020c2004200036020820042003360214200420023602102004412c6a41023602002004413c6a41033602002004420237021c200441b8c2c200360218200441043602342004200441306a3602282004200441106a3602382004200441086a360230200441186a4188afc000103e000bb10101037f0240024002400240200028020022002802042203200028020822046b2002490d00200028020021030c010b200420026a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102821030c010b200028020020032004102c21030b2003450d012000200436020420002003360200200028020821040b2000200420026a360208200320046a20012002109a051a41000f0b200441011037000b1031000ba70401047f230041106b220224002000280200210002400240024002400240024002402001418001490d002002410036020c2001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c040b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c030b0240200028020822032000280204470d00200341016a22042003490d06200341017422052004200520044b1b22044100480d060240024020030d002004102821030c010b200028020020032004102c21030b2003450d022000200436020420002003360200200028020821030b200028020020036a20013a00002000200028020841016a3602080c030b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010c010b200441011037000b0240024020002802042204200028020822036b2001490d00200028020021040c010b200320016a22052003490d03200441017422032005200320054b1b22034100480d030240024020040d002003102821040c010b200028020020042003102c21040b2004450d022000200336020420002004360200200028020821030b2000200320016a360208200420036a2002410c6a2001109a051a0b200241106a240041000f0b200341011037000b1031000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41bc80c000200241086a10352101200241206a240020010b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420237020c2002418486c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a419486c000103e000b0d00200035020041012001103f0b4702017f017e230041206b2202240020012902002103200241146a20012902083702002002200337020c20022000360208200241f883c0003602042002410136020020021040000bd40203027f017e037f230041306b22032400412721040240024020004290ce005a0d00200021050c010b412721040340200341096a20046a2206417c6a200020004290ce0080220542f0b17f7e7ca7220741ffff037141e4006e220841017441ba84c0006a2f00003b00002006417e6a2008419c7f6c20076a41ffff037141017441ba84c0006a2f00003b00002004417c6a2104200042ffc1d72f5621062005210020060d000b0b02402005a7220641e3004c0d00200341096a2004417e6a22046a2005a7220741ffff037141e4006e2206419c7f6c20076a41ffff037141017441ba84c0006a2f00003b00000b024002402006410a480d00200341096a2004417e6a22046a200641017441ba84c0006a2f00003b00000c010b200341096a2004417f6a22046a200641306a3a00000b2002200141b8aec6004100200341096a20046a412720046b10422104200341306a240020040b6601017f230041c0006b220124002001200036020c200141346a410136020020014201370224200141b0aec6003602202001410536023c2001200141386a36023020012001410c6a360238200141106a200141206a10332001280210200128021810e70400000b0d0042c8dfc497e99ce988eb000be00501057f024002402001450d00412b418080c4002000280200220641017122011b2107200120056a21080c010b200541016a210820002802002106412d21070b0240024020064104710d00410021020c010b4100210902402003450d002003210a200221010340200920012d000041c00171418001466a2109200141016a2101200a417f6a220a0d000b0b200820036a20096b21080b410121010240024020002802084101460d00200020072002200310430d012000280218200420052000411c6a28020028020c1100000f0b02402000410c6a280200220920084b0d00200020072002200310430d012000280218200420052000411c6a28020028020c1100000f0b0240024020064108710d00200920086b210941002101024002400240410120002d0030220a200a4103461b0e0402000100020b20092101410021090c010b20094101762101200941016a41017621090b200141016a210103402001417f6a2201450d0220002802182000280204200028021c280210110100450d000b41010f0b41012101200041013a003020004130360204200020072002200310430d01200920086b210941002101024002400240410120002d0030220a200a4103461b0e0402000100020b20092101410021090c010b20094101762101200941016a41017621090b200141016a2101024003402001417f6a2201450d0120002802182000280204200028021c280210110100450d000b41010f0b2000280204210a41012101200028021820042005200028021c28020c1100000d01200941016a2109200028021c210320002802182100034002402009417f6a22090d0041000f0b410121012000200a2003280210110100450d000c020b0b2000280204210a41012101200020072002200310430d00200028021820042005200028021c28020c1100000d00200941016a2109200028021c210320002802182100034002402009417f6a22090d0041000f0b410121012000200a2003280210110100450d000b0b20010b5401017f024002402001418080c400460d0041012104200028021820012000411c6a2802002802101101000d010b024020020d0041000f0b2000280218200220032000411c6a28020028020c11000021040b20040b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420237020c200241cc86c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41dc86c000103e000b8307010c7f200028021021030240024002400240200028020822044101460d0020030d012000280218200120022000411c6a28020028020c11000021030c030b2003450d010b0240024020020d00410021020c010b200120026a2105200041146a28020041016a21064100210720012103200121080340200341016a210902400240024020032c0000220a417f4a0d000240024020092005470d004100210b200521030c010b20032d0001413f71210b200341026a220921030b200a411f71210c0240200a41ff0171220a41df014b0d00200b200c41067472210a0c020b0240024020032005470d004100210d2005210e0c010b20032d0000413f71210d200341016a2209210e0b200d200b41067472210b0240200a41f0014f0d00200b200c410c7472210a0c020b02400240200e2005470d004100210a200921030c010b200e41016a2103200e2d0000413f71210a0b200b410674200c411274418080f0007172200a72220a418080c400470d020c040b200a41ff0171210a0b200921030b02402006417f6a2206450d00200720086b20036a21072003210820052003470d010c020b0b200a418080c400460d00024002402007450d0020072002460d0041002103200720024f0d01200120076a2c00004140480d010b200121030b2007200220031b21022003200120031b21010b20040d002000280218200120022000411c6a28020028020c1100000f0b4100210902402002450d002002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b0240200220096b200028020c2206490d002000280218200120022000411c6a28020028020c1100000f0b410021074100210902402002450d00410021092002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b200920026b20066a210a024002400240410020002d0030220320034103461b0e0402000100020b200a21074100210a0c010b200a4101762107200a41016a410176210a0b200741016a2103024003402003417f6a2203450d0120002802182000280204200028021c280210110100450d000b41010f0b2000280204210941012103200028021820012002200028021c28020c1100000d00200a41016a2103200028021c210a20002802182100034002402003417f6a22030d0041000f0b20002009200a280210110100450d000b41010f0b20030bcd0801067f230041f0006b220424002004200336020c20042002360208410121052001210602402001418102490d00410020016b2107418002210803400240200820014f0d00200020086a2c000041bf7f4c0d0041002105200821060c020b2008417f6a21064100210520084101460d01200720086a21092006210820094101470d000b0b200420063602142004200036021020044100410520051b36021c200441b8aec600419287c00020051b3602180240024002400240200220014b22080d00200320014b0d00200220034b0d01024002402002450d0020012002460d00200120024d0d01200020026a2c00004140480d010b200321020b200420023602202002450d0220022001460d02200141016a210903400240200220014f0d00200020026a2c000041404e0d040b2002417f6a210820024101460d0420092002462106200821022006450d000c040b0b20042002200320081b360228200441306a41146a4103360200200441c8006a41146a4104360200200441d4006a4104360200200442033702342004419887c0003602302004410136024c2004200441c8006a3602402004200441186a3602582004200441106a3602502004200441286a360248200441306a41b087c000103e000b200441e4006a4104360200200441c8006a41146a4104360200200441d4006a4101360200200441306a41146a410436020020044204370234200441c087c0003602302004410136024c2004200441c8006a3602402004200441186a3602602004200441106a36025820042004410c6a3602502004200441086a360248200441306a41e087c000103e000b200221080b024020082001460d00410121060240024002400240200020086a22092c00002202417f4a0d0041002105200020016a220621010240200941016a2006460d00200941026a210120092d0001413f7121050b2002411f712109200241ff017141df014b0d01200520094106747221010c020b2004200241ff0171360224200441286a21020c020b4100210020062107024020012006460d00200141016a210720012d0000413f7121000b200020054106747221010240200241ff017141f0014f0d0020012009410c747221010c010b41002102024020072006460d0020072d0000413f7121020b20014106742009411274418080f00071722002722201418080c400460d020b2004200136022441012106200441286a21022001418001490d00410221062001418010490d0041034104200141808004491b21060b200420083602282004200620086a36022c200441306a41146a4105360200200441ec006a4104360200200441e4006a4104360200200441c8006a41146a4106360200200441d4006a4107360200200442053702342004418888c000360230200420023602582004410136024c2004200441c8006a3602402004200441186a3602682004200441106a3602602004200441246a3602502004200441206a360248200441306a41b088c000103e000b41f087c0001032000b100020012000280200200028020410450b6c01037f230041206b22022400024020002001104b0d002001411c6a280200210320012802182104200242043703182002420137020c2002419889c00036020820042003200241086a10350d00200041046a2001104b2101200241206a240020010f0b200241206a240041010bd90a02077f017e410121020240200128021841272001411c6a2802002802101101000d0041022103024002400240024002402000280200220241776a2200411e4d0d00200241dc00470d010c020b41f40021040240024020000e1f05010202000202020202020202020202020202020202020202030202020203050b41f20021040c040b41ee0021040c030b02400240024002400240024002402002104a0d00024002400240024002400240200241808004490d00200241808008490d0120024190fc476a4190fc0b490d0a200241e28b746a41e28d2c490d0a2002419fa8746a419f18490d0a200241dee2746a410e490d0a200241feffff0071419ef00a460d0a200241a9b2756a4129490d0a200241cb91756a410a4d0d0a410121030c0e0b20024180fe0371410876210541d095c000210041002106200241ff017121040340200041026a2107200620002d000122036a2108024020002d000022002005460d00200020054b0d092008210620072100200741a296c000470d010c090b20082006490d02200841a5024b0d03200641a296c0006a2100024003402003450d012003417f6a210320002d00002106200041016a210020062004470d000c0c0b0b2008210620072100200741a296c000470d000c080b0b20024180fe0371410876210541819bc000210041002106200241ff017121040340200041026a2107200620002d000122036a2108024020002d000022002005460d00200020054b0d072008210620072100200741c79bc000470d010c070b20082006490d03200841a6014b0d04200641c79bc0006a2100024003402003450d012003417f6a210320002d00002106200041016a210020062004470d000c0b0b0b2008210620072100200741c79bc000470d000c060b0b200620081044000b200841a502103c000b200620081044000b200841a601103c000b200241017267410276410773ad4280808080d0008421090c040b200241ffff0371210441ed9cc00021034101210002400340200341016a21080240024020032d0000220641187441187522074100480d00200821030c010b20084185a0c000460d02200741ff007141087420032d0001722106200341026a21030b200420066b22044100480d032000410173210020034185a0c000470d000c030b0b41f087c0001032000b200241ffff0371210441c798c0002103410121000340200341016a21080240024020032d0000220641187441187522074100480d00200821030c010b200841819bc000460d05200741ff007141087420032d0001722106200341026a21030b200420066b22044100480d0120004101732100200341819bc000470d000b0b4101210320004101710d030b200241017267410276410773ad4280808080d0008421090b410321030c020b41f087c0001032000b0b200221040b03402003210641dc0021004101210241012103024002400240024020060e0401020300010b024002400240024002402009422088a741ff01710e06050403020100050b200942ffffffff8f60834280808080c000842109410321030c060b200942ffffffff8f608342808080803084210941f5002100410321030c050b200942ffffffff8f608342808080802084210941fb002100410321030c040b20042009a72206410274411c7176410f712203413072200341d7006a2003410a491b210002402006450d002009427f7c42ffffffff0f83200942808080807083842109410321030c040b200942ffffffff8f6083428080808010842109410321030c030b200942ffffffff8f6083210941fd002100410321030c020b20012802184127200128021c2802101101000f0b41002103200421000b20012802182000200128021c280210110100450d000b0b20020b950201017f024002402000418010490d00024002400240024002400240200041808004490d002000410c7641706a2201418002490d0141a8a0c00020014180021034000b200041067641606a220141df074b0d01200141f08bc0006a2d0000220141c9004b0d0220014103744180a1c0006a21010c060b200141d093c0006a2d00004106742000410676413f7172220141ff034b0d02200141d0a5c0006a2d0000220141394b0d03200141037441d0a9c0006a21010c050b4188a0c000200141e0071034000b4198a0c000200141ca001034000b41b8a0c00020014180041034000b41c8a0c0002001413a1034000b200041037641f8ffffff017141d889c0006a21010b200129030042012000413f71ad86834200520baf0201037f23004180016b2202240002400240024002400240200128020022034110710d002000280200210420034120710d012004ad41012001103f21000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000b20024180016a240020000f0b20044180011044000b20044180011044000b0d00200035020041012001103f0b1c00200128021841a1aec000410b2001411c6a28020028020c1100000b1c00200128021841acaec000410e2001411c6a28020028020c1100000b6901037f230041206b220224002001411c6a280200210320012802182104200241086a41106a2000280200220141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820042003200241086a10352101200241206a240020010b5e01017f230041306b220224002002200136020c20022000360208200241246a410136020020024201370214200241b0aec6003602102002410436022c2002200241286a3602202002200241086a360228200241106a41f8aec000103e000b140020002802002001200028020428020c1101000bc30501077f410021040240024020024103712205450d00410420056b2205450d00200220032005200520034b1b22046a210641002105200141ff017121072004210820022109024003400240200620096b41034b0d0041002107200141ff0171210603402008450d04200920076a210a2008417f6a2108200741016a2107200a2d0000220a2006470d000b2005200a200141ff01714641016a4101716a20076a417f6a21050c020b200520092d0000220a2007476a2105200a2007460d012005200941016a2d0000220a2007476a2105200a2007460d012005200941026a2d0000220a2007476a2105200a2007460d012005200941036a2d0000220a2007476a21052008417c6a2108200941046a2109200a2007470d000b0b410121090c010b200141ff017121070240024020034108490d002004200341786a220a4b0d00200741818284086c210502400340200220046a220941046a2802002005732208417f73200841fffdfb776a7120092802002005732209417f73200941fffdfb776a7172418081828478710d01200441086a2204200a4d0d000b0b200420034b0d010b200220046a2109200220036a2102200320046b2108410021050240024003400240200220096b41034b0d0041002107200141ff0171210203402008450d04200920076a210a2008417f6a2108200741016a2107200a2d0000220a2002470d000b200a200141ff01714641016a41017120056a20076a417f6a21050c020b200520092d0000220a2007476a2105200a2007460d012005200941016a2d0000220a2007476a2105200a2007460d012005200941026a2d0000220a2007476a2105200a2007460d012005200941036a2d0000220a2007476a21052008417c6a2108200941046a2109200a2007470d000b0b41012109200520046a21050c020b41002109200520076a20046a21050c010b200420031044000b20002005360204200020093602000b2601017f200028020022012802002001280204200028020428020020002802082802001046000b850804057f017e017f017e02400240024002402002450d00410020016b410020014103711b2103200241796a4100200241074b1b210441002105034002400240200120056a2d000022064118744118752207417f4a0d0042808080801021080240200641e681c0006a2d0000417e6a220941024d0d0042808080808020210a0c070b0240024002400240024020090e03000102000b200541016a22062002490d024200210a0c090b4200210a200541016a220920024f0d08200120096a2d0000210902400240200641a07e6a2206410d4b0d000240024020060e0e0002020202020202020202020201000b200941e0017141a001460d0242808080808020210a0c0c0b02402009411874411875417f4c0d0042808080808020210a0c0c0b200941ff017141a001490d0142808080808020210a0c0b0b02402007411f6a41ff0171410b4b0d0002402009411874411875417f4c0d0042808080808020210a0c0c0b200941ff017141c001490d0142808080808020210a0c0b0b0240200941ff017141bf014d0d0042808080808020210a0c0b0b0240200741fe017141ee01460d0042808080808020210a0c0b0b2009411874411875417f4c0d0042808080808020210a0c0a0b42002108200541026a220620024f0d09200120066a2d000041c00171418001460d020c070b4200210a200541016a220920024f0d07200120096a2d0000210902400240200641907e6a220641044b0d000240024020060e050002020201000b200941f0006a41ff01714130490d0242808080808020210a0c0b0b02402009411874411875417f4c0d0042808080808020210a0c0b0b200941ff0171419001490d0142808080808020210a0c0a0b0240200941ff017141bf014d0d0042808080808020210a0c0a0b02402007410f6a41ff017141024d0d0042808080808020210a0c0a0b2009411874411875417f4c0d0042808080808020210a0c090b200541026a220620024f0d07200120066a2d000041c00171418001470d0642002108200541036a220620024f0d08200120066a2d000041c00171418001460d01428080808080e000210a42808080801021080c080b42808080808020210a4280808080102108200120066a2d000041c00171418001470d070b200641016a21050c010b0240200320056b4103710d000240200520044f0d000340200120056a220641046a280200200628020072418081828478710d01200541086a22052004490d000b0b200520024f0d010340200120056a2c00004100480d022002200541016a2205470d000c040b0b200541016a21050b20052002490d000b0b20002001360204200041086a2002360200200041003602000f0b428080808080c000210a42808080801021080c010b420021080b2000200a2008842005ad84370204200041013602000b02000ba20401077f230041306b220324000240024020020d00410021040c010b200341286a210502400240024002400340024020002802082d0000450d00200028020041e4afc0004104200028020428020c1100000d050b2003410a3602282003428a808080103703202003200236021c200341003602182003200236021420032001360210200341086a410a200120021052024002400240024020032802084101470d00200328020c210403402003200420032802186a41016a2204360218024002402004200328022422064f0d00200328021421070c010b200328021422072004490d00200641054f0d072003280210200420066b22086a22092005460d04200920052006109c05450d040b200328021c22092004490d0220072009490d0220032006200341106a6a41176a2d0000200328021020046a200920046b10522003280204210420032802004101460d000b0b2003200328021c3602180b200028020841003a0000200221040c010b200028020841013a0000200841016a21040b2000280204210920002802002106024020044520022004467222070d00200220044d0d03200120046a2c000041bf7f4c0d030b200620012004200928020c1100000d04024020070d00200220044d0d04200120046a2c000041bf7f4c0d040b200120046a2101200220046b22020d000b410021040c040b20064104103c000b20012002410020041046000b20012002200420021046000b410121040b200341306a240020040bf90101017f230041106b220224002002410036020c0240024002402001418001490d002001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c020b200220013a000c410121010c010b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010b20002002410c6a200110562101200241106a240020010b6001017f230041206b2202240020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41ccafc000200241086a10352101200241206a240020010b0d0020002802002001200210560b800201017f230041106b22022400200028020021002002410036020c0240024002402001418001490d002001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c020b200220013a000c410121010c010b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010b20002002410c6a200110562101200241106a240020010b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41ccafc000200241086a10352101200241206a240020010bdb0302047f057e230041d0006b2205240041012106024020002d00040d0020002d000521070240200028020022082d00004104710d0041012106200828021841caafc00041e8afc000200741ff017122071b4102410320071b2008411c6a28020028020c1100000d014101210620002802002208280218200120022008411c6a28020028020c1100000d01410121062000280200220828021841b9a8c40041022008411c6a28020028020c1100000d0120032000280200200428020c11010021060c010b0240200741ff01710d0041012106200828021841ebafc00041032008411c6a28020028020c1100000d01200028020021080b41012106200541013a00172005200541176a360210200829020821092008290210210a200541346a41b0afc000360200200520082902183703082008290220210b2008290228210c200520082d00303a00482008290200210d2005200c3703402005200b3703382005200a370328200520093703202005200d3703182005200541086a360230200541086a2001200210560d00200541086a41b9a8c400410210560d002003200541186a200428020c1101000d00200528023041c8afc0004102200528023428020c11000021060b200041013a0005200020063a0004200541d0006a240020000bf30202047f057e230041d0006b2203240041012104024020002d00080d00200028020421050240200028020022062d00004104710d0041012104200628021841caafc00041f1afc00020051b4102410120051b2006411c6a28020028020c1100000d0120012000280200200228020c11010021040c010b024020050d0041012104200628021841f2afc00041022006411c6a28020028020c1100000d01200028020021060b41012104200341013a00172003200341176a3602102006290208210720062902102108200341346a41b0afc00036020020032006290218370308200629022021092006290228210a200320062d00303a00482006290200210b2003200a3703402003200937033820032008370328200320073703202003200b3703182003200341086a3602302001200341186a200228020c1101000d00200328023041c8afc0004102200328023428020c11000021040b200020043a00082000200028020441016a360204200341d0006a240020000b6401027f230041206b220224002001411c6a280200210320012802182101200241086a41106a200041106a290200370300200241086a41086a200041086a2902003703002002200029020037030820012003200241086a10352100200241206a240020000bb50f020d7f017e230041206b220324004101210402400240200228021841222002411c6a2802002802101101000d000240024020010d00410021050c010b200020016a21062000210741002105410021080240034020072109200741016a210a02400240024020072c0000220b417f4a0d0002400240200a2006470d004100210c200621070c010b20072d0001413f71210c200741026a220a21070b200b411f7121040240200b41ff0171220b41df014b0d00200c200441067472210b0c020b0240024020072006470d004100210d2006210e0c010b20072d0000413f71210d200741016a220a210e0b200d200c41067472210c0240200b41f0014f0d00200c2004410c7472210b0c020b02400240200e2006470d004100210b200a21070c010b200e41016a2107200e2d0000413f71210b0b200c4106742004411274418080f0007172200b72220b418080c400470d020c040b200b41ff0171210b0b200a21070b4102210a024002400240024002400240200b41776a220c411e4d0d00200b41dc00470d010c020b41f400210e02400240200c0e1f05010202000202020202020202020202020202020202020202030202020203050b41f200210e0c040b41ee00210e0c030b02400240200b104a0d00024002400240024002400240024002400240200b41808004490d00200b41808008490d01200b4190fc476a4190fc0b490d09200b41e28b746a41e28d2c490d09200b419fa8746a419f18490d09200b41dee2746a410e490d09200b41feffff0071419ef00a460d09200b41a9b2756a4129490d09200b41cb91756a410a4d0d090c0e0b200b4180fe0371410876210f41d095c000210c410021040340200c41026a210d2004200c2d0001220a6a210e0240200c2d0000220c200f460d00200c200f4b0d08200e2104200d210c200d41a296c000470d010c080b200e2004490d02200e41a5024b0d03200441a296c0006a210c02400340200a450d01200a417f6a210a200c2d00002104200c41016a210c2004200b41ff0171470d000c0b0b0b200e2104200d210c200d41a296c000470d000c070b0b200b4180fe0371410876210f41819bc000210c410021040340200c41026a210d2004200c2d0001220a6a210e0240200c2d0000220c200f460d00200c200f4b0d06200e2104200d210c200d41c79bc000470d010c060b200e2004490d03200e41a6014b0d04200441c79bc0006a210c02400340200a450d01200a417f6a210a200c2d00002104200c41016a210c2004200b41ff0171470d000c0a0b0b200e2104200d210c200d41c79bc000470d000c050b0b2004200e1044000b200e41a502103c000b2004200e1044000b200e41a601103c000b200b41ffff0371210e41ed9cc000210a4101210c02400340200a41016a210d02400240200a2d00002204411874411875220f4100480d00200d210a0c010b200d4185a0c000460d02200f41ff0071410874200a2d0001722104200a41026a210a0b200e20046b220e4100480d03200c410173210c200a4185a0c000470d000c030b0b41f087c0001032000b200b41ffff0371210e41c798c000210a4101210c0340200a41016a210d02400240200a2d00002204411874411875220f4100480d00200d210a0c010b200d41819bc000460d04200f41ff0071410874200a2d0001722104200a41026a210a0b200e20046b220e4100480d01200c410173210c200a41819bc000470d000b0b200c4101710d050b200b41017267410276410773ad4280808080d0008421104103210a0c020b41f087c0001032000b0b200b210e0b2003200136020420032000360200200320053602082003200836020c0240024020082005490d0002402005450d0020052001460d00200520014f0d01200020056a2c000041bf7f4c0d010b02402008450d0020082001460d00200820014f0d01200020086a2c000041bf7f4c0d010b2002280218200020056a200820056b200228021c28020c110000450d01410121040c060b20032003410c6a3602182003200341086a36021420032003360210200341106a1053000b0340200a210c4101210441dc0021054101210a024002400240024002400240200c0e0402010500020b02400240024002402010422088a741ff01710e06050302010006050b201042ffffffff8f60834280808080308421104103210a41f50021050c070b201042ffffffff8f60834280808080208421104103210a41fb0021050c060b200e2010a7220c410274411c7176410f71220a413072200a41d7006a200a410a491b21050240200c450d002010427f7c42ffffffff0f832010428080808070838421100c050b201042ffffffff8f60834280808080108421100c040b201042ffffffff8f608321104103210a41fd0021050c040b4100210a200e21050c030b4101210a0240200b418001490d004102210a200b418010490d0041034104200b41808004491b210a0b200a20086a21050c040b201042ffffffff8f60834280808080c0008421100b4103210a0b20022802182005200228021c2802101101000d050c000b0b200820096b20076a210820062007470d000b0b2005450d0020052001460d00200520014f0d02200020056a2c000041bf7f4c0d020b410121042002280218200020056a200120056b200228021c28020c1100000d0020022802184122200228021c28021011010021040b200341206a240020040f0b20002001200520011046000bc00201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d0020002d0000210420034120710d012004ad42ff018341012001103f21000c020b20002d00002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000b20024180016a240020000f0b20044180011044000b20044180011044000b0b0020002802002001104b0b800201027f230041106b2202240020012802184198b0c00041092001411c6a28020028020c1100002103200241003a0005200220033a0004200220013602002002200036020c200241a1b0c000410b2002410c6a41f8afc000105c21012002200041046a36020c200141acb0c00041092002410c6a41b8b0c000105c1a20022d00042101024020022d0005450d00200141ff0171210041012101024020000d0020022802002201411c6a28020028020c210020012802182103024020012d00004104710d00200341eeafc0004102200011000021010c010b200341f0afc0004101200011000021010b200220013a00040b200241106a2400200141ff01714100470bb50201027f230041106b2202240002400240200028020022002d00004101460d00200128021841e0e2c50041042001411c6a28020028020c11000021010c010b2002200128021841e4e2c50041042001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041016a36020c20022002410c6a4188b0c000105d1a20022d00082101024020022802042203450d00200141ff0171210041012101024020000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d0041012101200028021841f4afc00041012000411c6a28020028020c1100000d010b2002280200220128021841c8a4c60041012001411c6a28020028020c11000021010b200220013a00080b200141ff017141004721010b200241106a240020010b1c00200128021841b8aec60041052001411c6a28020028020c1100000b040041000b02000b02000b9e10020a7f017e23004180016b2202240002400240024020012802042203200128020022046b41e100490d000240024003402001200441206a3602002001280208220341186a280200210520032802102106200241e0006a41186a22034200370300200241e0006a41106a22074200370300200241e0006a41086a220842003703002002420037036020044120200241e0006a1000200241106a41186a22092003290300370300200241106a41106a220a2007290300370300200241106a41086a220b2008290300370300200220022903603703102002410036026020062005200241106a4120200241e0006a10012106024020022802602205417f460d0020022005360258200220053602542002200636025020012802082201280218210320012802102101200241e0006a41186a22074200370300200241e0006a41106a22084200370300200241e0006a41086a220942003703002002420037036020044120200241e0006a1000200241306a41186a2007290300370300200241306a41106a2008290300370300200241306a41086a20092903003703002002200229036037033020012003200241306a41201002200241086a2002280258360200200220022903503703000c050b20012001280200220441206a3602002001280208220541186a2802002106200528021021052003420037030020074200370300200842003703002002420037036020044120200241e0006a100020092003290300370300200a2007290300370300200b2008290300370300200220022903603703102002410036026020052006200241106a4120200241e0006a10012106024020022802602205417f470d0020012001280200220441206a3602002001280208220541186a2802002106200528021021052003420037030020074200370300200842003703002002420037036020044120200241e0006a100020092003290300370300200a2007290300370300200b2008290300370300200220022903603703102002410036026020052006200241106a4120200241e0006a1001210620022802602205417f470d0320012001280200220441206a3602002001280208220541186a2802002106200528021021052003420037030020074200370300200842003703002002420037036020044120200241e0006a100020092003290300370300200a2007290300370300200b2008290300370300200220022903603703102002410036026020052006200241106a4120200241e0006a1001210720022802602203417f470d0220012802042203200128020022046b41e0004b0d010c040b0b20022005360258200220053602542002200636025020012802082201280218210320012802102101200241e0006a41186a22074200370300200241e0006a41106a22084200370300200241e0006a41086a220942003703002002420037036020044120200241e0006a1000200241306a41186a2007290300370300200241306a41106a2008290300370300200241306a41086a20092903003703002002200229036037033020012003200241306a41201002200241086a2002280258360200200220022903503703000c030b20022003360258200220033602542002200736025020012802082201280218210320012802102101200241e0006a41186a22074200370300200241e0006a41106a22084200370300200241e0006a41086a220942003703002002420037036020044120200241e0006a1000200241306a41186a2007290300370300200241306a41106a2008290300370300200241306a41086a20092903003703002002200229036037033020012003200241306a41201002200241086a2002280258360200200220022903503703000c020b20022005360258200220053602542002200636025020012802082201280218210320012802102101200241e0006a41186a22074200370300200241e0006a41106a22084200370300200241e0006a41086a220942003703002002420037036020044120200241e0006a1000200241306a41186a2007290300370300200241306a41106a2008290300370300200241306a41086a20092903003703002002200229036037033020012003200241306a41201002200241086a2002280258360200200220022903503703000c010b024020042003460d0003402001200441206a3602002001280208220341186a280200210720032802102103200241e0006a41186a22084200370300200241e0006a41106a22094200370300200241e0006a41086a220a42003703002002420037036020044120200241e0006a1000200241106a41186a2008290300370300200241106a41106a2009290300370300200241106a41086a200a290300370300200220022903603703102002410036026020032007200241106a4120200241e0006a10012107024020022802602203417f460d0020022003360258200220033602542002200736025020012802082201280218210320012802102101200241e0006a41186a22074200370300200241e0006a41106a22084200370300200241e0006a41086a220942003703002002420037036020044120200241e0006a1000200241306a41186a2007290300370300200241306a41106a2008290300370300200241306a41086a20092903003703002002200229036037033020012003200241306a41201002200241086a2002280258360200200220022903503703000c030b200128020022042001280204470d000b0b200041003602000c010b200241e0006a41086a2002220141086a280200220336020020022001290200220c370360200020043602002000200c3702042000410c6a20033602000b20024180016a24000b950201057f230041e0026b22012400024020002802082202200028020c460d00200141b0016a4101722103200141d8016a210403402000200241b0016a36020820022d00002105200141b0016a200241016a41af01109a051a20054103460d01200141016a200141b0016a41af01109a051a200120053a00b0012003200141016a41af01109a051a02400240200541014b0d000240024020050e020001000b024020012802b801450d0020012802b401102a0b20012d00c0014105490d0220012802e801450d0220012802e401102a0c020b2004106a0c010b200128029802450d00200128029402102a0b20002802082202200028020c470d000b0b02402000280204450d002000280200102a0b200141e0026a24000baa0b01057f02402000280200220141124b0d00024002400240024002400240024002400240024002400240024020010e13000d0d010d0d020304050607080d090d0a0b0c000b0240200041086a280200220141054b0d0002400240024020010e06101000100102100b200041106a280200450d0f2000410c6a280200102a0f0b200041106a280200450d0e2000410c6a280200102a0f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d002001280200102a0b0240200141106a280200450d002001410c6a280200102a0b200141186a2101200241686a22020d000b0b200041106a280200450d0d200028020c102a0f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d002001280200102a0b2001410c6a2101200241746a22020d000b0b200041106a280200450d0c200028020c102a0f0b02402000410c6a2802002201450d0020002802042203200141f0006c6a2104034002402003410c6a2802002202450d0020032802042101200241246c210203400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a280200102a0c030b2001410c6a280200450d02200141086a280200102a0c020b2001410c6a280200450d01200141086a280200102a0c010b200141086a280200450d00200141046a280200102a0b200141246a21012002415c6a22020d000b0b200341f0006a21010240200341086a280200450d002003280204102a0b2001210320012004470d000b0b200041086a280200450d0b2000280204102a0f0b0240200041086a2d00002201410c4b0d0020014106470d0b200041106a280200450d0b2000410c6a280200102a0f0b200041106a280200450d0a2000410c6a280200102a0f0b200041086a280200450d092000280204102a0f0b200041086a2d0000417f6a220141074b0d08024002400240024020010e08000c0c0c0c010203000b2000410c6a2201280200106a2001280200102a0f0b2000410c6a2201280200106a2001280200102a0f0b2000410c6a2201280200106a2001280200102a0f0b2000410c6a2201280200106a2001280200102a0f0b20002d0004417f6a220141024b0d0702400240024020010e03000102000b2000410c6a280200450d09200041086a280200102a0f0b200041086a2201280200106a2001280200102a0f0b2000410c6a2201280200106a2001280200102a0f0b20002d0004417f6a220141024b0d0602400240024020010e03000102000b2000410c6a280200450d08200041086a280200102a0f0b200041086a2201280200106a2001280200102a0f0b2000410c6a2201280200106a2001280200102a0f0b200041086a280200417f6a220141014b0d050240024020010e020001000b200041106a280200450d062000410c6a280200102a0f0b200041106a280200450d052000410c6a280200102a0f0b20002d00044104490d042000410c6a280200450d04200041086a280200102a0c040b200041086a280200450d032000280204102a0f0b200041086a2d0000417e6a220141024b0d0202400240024020010e03000102000b200041106a280200450d042000410c6a280200102a0f0b200041346a280200450d03200041306a280200102a0f0b200041306a280200450d022000412c6a280200102a0f0b02402000280204220141024b0d00024020010e03030003030b200041086a2201280200106a2001280200102a0f0b2000412c6a2201280200106a2001280200102a0f0b02402000410c6a280200450d00200041086a280200102a0b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d002001280200102a0b2001410c6a2101200241746a22020d000b0b200041186a280200450d002000280214102a0f0b0b960301097f230041106b2202240002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002006450d0020042d0001210720012003417e6a22063602042001200441026a3602002006450d0020042d0002210820012003417d6a22063602042001200441036a3602002006450d0020042d0003210620012003417c6a3602042001200441046a360200200241086a2001106c20022802080d022001280204200228020c2204490d022004417f4c0d0302400240024020040d004101210341010d010c050b2004102e2203450d0120012802042004490d03200320012802002004109a0521092001280204220a2004490d062001200a20046b3602042001200128020020046a3602002009450d040b20002004360208200020033602042000410c6a2004360200200020074108742005722008411074722006411874723602000c060b200441011037000b200041003602040c040b2003102a0b200041003602040c020b1036000b2004200a1044000b200241106a24000bcf0201067f0240024020012802042202450d00200128020022032d0000210420012002417f6a2205360204410121062001200341016a3602000240200441037122074103460d0002400240024020070e03000102000b20044102762107410021060c040b41012106024020050d000c040b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d03200141fcff03714102762107410021060c030b20054103490d01200341036a2d0000210620032f0001210720012002417c6a3602042001200341046a3602002007200641107472410874200472220141027621072001418080044921060c020b0240200441034d0d000c020b20054104490d012003280001210720012002417b6a3602042001200341056a36020020074180808080044921060c010b410121060b20002007360204200020063602000baf04010a7f230041d0006b2202240020022001106c0240024002400240024020022802000d00200128020422034160712204417f4c0d022002280204210502400240200341057622060d00410121070c010b200410282207450d040b02402005450d00410021080340200241003a00482008220941016a21082001280204417f6a21034100210402400240024003402003417f460d01200241286a20046a2001280200220a2d00003a0000200120033602042001200a41016a3602002002200441016a220a3a00482003417f6a2103200a2104200a4120470d000b200241086a41186a2204200241286a41186a290300370300200241086a41106a220a200241286a41106a290300370300200241086a41086a220b200241286a41086a2903003703002002200229032837030820062009470d020240200941017422032008200320084b1b220641ffffff3f712006470d002006410574220341004e0d020b1031000b0240200441ff0171450d00200241003a00480b200041003602002006450d052007102a0c050b0240024020090d002003102821070c010b200720094105742003102c21070b2007450d070b200720094105746a22032002290308370000200341186a2004290300370000200341106a200a290300370000200341086a200b29030037000020082005470d000b0b2000200636020420002007360200200041086a20053602000c010b200041003602000b200241d0006a24000f0b1036000b200441011037000b200341011037000b9203010a7f200041086a220228020021034100210420024100360200024002402003450d004100210541002106410021044100210702400340024002402004450d00200741057421080340200720034f0d062001200028020022096b2008460d02200920086a220a20014120109c05450d020240200620076a220b20034f0d00200920056a20086a2209200a290000370000200941186a200a41186a290000370000200941106a200a41106a290000370000200941086a200a41086a290000370000200841206a2108200741016a22072003490d010c050b0b41c4b2c000200b20031034000b200028020020074105746a21080340200720034f0d0520012008460d01200820014120109c05450d01200841206a2108200741016a22072003490d000b410021040c030b200541606a21052006417f6a2106200441016a2104200741016a22072003490d000b0b2004450d00200320074d0d00200028020020074105746a220820044105746b2008200320076b410574109b051a0b2002200320046b3602000f0b41e8b1c000200720031034000bfe0203017f017e0b7f024002400240024020012802082202ad42187e2203422088a70d002003a72204417f4c0d00200128020021050240024020040d00410421060c010b200410282206450d020b0240024020020d00410021070c010b2005200241186c6a210841002107200621010340200541086a2802002204417f4c0d02200528020021090240024020040d004101210a4100210b0c010b2004210b20041028220a450d050b200a20092004109a05210a200541146a2802002209417f4c0d022005410c6a280200210c0240024020090d004100210d4101210e0c010b2009210d20091028220e450d060b200e200c2009109a05210c200141146a2009360200200141106a200d3602002001410c6a200c360200200141086a2004360200200141046a200b3602002001200a360200200141186a2101200741016a2107200541186a22052008470d000b0b2000200736020820002002360204200020063602000f0b1036000b200441041037000b200441011037000b200941011037000bc90a03027f017e1c7f230041f0006b22022400024002400240024002400240024020012802082203ad42f0007e2204422088a70d002004a72205417f4c0d00200128020021060240024020050d00410421070c010b200510282207450d020b0240024020030d00410021080c010b2006200341f0006c6a2109410021082007210a0340200241c0006a41086a220b200641186a290000370300200241c0006a41106a220c200641206a290000370300200241c0006a41186a220d200641286a290000370300200241206a41086a220e200641386a29000037030020062900102104200241206a41106a220f200641c0006a290000370300200241206a41186a2210200641c8006a290000370300200241186a2211200641e8006a290000370300200241106a2212200641e0006a290000370300200241086a2213200641d8006a290000370300200220043703402002200629003037032020022006290050370300200628020c2214ad42247e2204422088a70d022004a72201417f4c0d0220062802002115200628020421160240024020010d00410421170c010b200110282217450d050b0240024020140d00410021180c010b201441246c211941002105410021180340024002400240024002400240201620056a22012d00000e050001020304000b2002200141146a2900003703602002200141196a290000370065200141056a2f0000200141076a2d000041107472211a200141106a280000211b2001410c6a280000211c200141086a280000211d200141016a280000211e4100211f0c040b200141106a280200221b417f4c0d08200141086a2802002120200141016a280000211e4101211f0240201b0d004100211c4101211d41012020201b109a051a0c040b201b211c201b1028221d450d0b201d2020201b109a051a0c030b200141106a280200221b417f4c0d07200141086a280200211f200141016a280000211e02400240201b0d004100211c4101211d0c010b201b211c201b1028221d450d0c0b201d201f201b109a051a4102211f0c020b200141106a280200221b417f4c0d06200141086a280200211f200141016a280000211e02400240201b0d004100211c4101211d0c010b201b211c201b1028221d450d0c0b201d201f201b109a051a4103211f0c010b2001410c6a280200221c417f4c0d05200141046a280200210102400240201c0d004101211a4100211d0c010b201c211d201c1028221a450d0c0b201a2001201c109a052201411874211e2001410876211a4104211f0b201720056a2201201f3a0000200141076a201a4110763a0000200141056a201a3b0000200141106a201b3600002001410c6a201c360000200141086a201d360000200141016a201e360000200141146a20022903603702002001411c6a200241e0006a41086a290300370200201841016a21182019200541246a2205470d000b0b200a2017360204200a410c6a2018360200200a41086a2014360200200a2002290340370210200a41186a200b290300370200200a2015360200200a2002290320370230200a41206a200c290300370200200a41286a200d290300370200200a41386a200e290300370200200a41c0006a200f290300370200200a41c8006a2010290300370200200a41e8006a2011290300370200200a41e0006a2012290300370200200a41d8006a2013290300370200200a2002290300370250200841016a2108200a41f0006a210a200641f0006a22062009470d000b0b200020083602082000200336020420002007360200200241f0006a24000f0b1036000b200541041037000b200141041037000b201b41011037000b201b41011037000b201b41011037000b201c41011037000b890203017f017e077f02400240024020012802082202ad420c7e2203422088a70d002003a72204417f4c0d00200128020021050240024020040d00410421060c010b200410282206450d020b0240024020020d00410021070c010b20052002410c6c6a210841002107200621040340200541086a2802002201417f4c0d02200528020021090240024020010d004101210a0c010b20011028220a450d050b200a20092001109a052109200441086a2001360200200441046a2001360200200420093602002004410c6a2104200741016a21072005410c6a22052008470d000b0b2000200736020820002002360204200020063602000f0b1036000b200441041037000b200141011037000bd70201037f024020002802082201450d002000280200220020014188016c6a2102200041f8006a2100034002400240200041887f6a22012d00002203410e4b0d00024002400240024020030e0f050505050500050501050205030505050b200041907f6a2d00004101470d042000419c7f6a280200450d04200041987f6a280200102a0c040b2000418c7f6a2d00004103470d030240200041947f6a280200450d00200041907f6a280200102a0b200041a07f6a280200450d032000419c7f6a280200102a0c030b2000418c7f6a2802000d02200041947f6a280200450d02200041907f6a280200102a0c020b200041907f6a2d00004105490d01200041b87f6a280200450d01200041b47f6a280200102a0c010b200041907f6a280200450d002000418c7f6a280200102a0b0240200141fc006a280200450d002000280200102a0b20004188016a210020014188016a2002470d000b0b0baf04010a7f230041d0006b2202240020022001106c0240024002400240024020022802000d00200128020422034160712204417f4c0d022002280204210502400240200341057622060d00410121070c010b200410282207450d040b02402005450d00410021080340200241003a00482008220941016a21082001280204417f6a21034100210402400240024003402003417f460d01200241286a20046a2001280200220a2d00003a0000200120033602042001200a41016a3602002002200441016a220a3a00482003417f6a2103200a2104200a4120470d000b200241086a41186a2204200241286a41186a290300370300200241086a41106a220a200241286a41106a290300370300200241086a41086a220b200241286a41086a2903003703002002200229032837030820062009470d020240200941017422032008200320084b1b220641ffffff3f712006470d002006410574220341004e0d020b1031000b0240200441ff0171450d00200241003a00480b200041003602002006450d052007102a0c050b0240024020090d002003102821070c010b200720094105742003102c21070b2007450d070b200720094105746a22032002290308370000200341186a2004290300370000200341106a200a290300370000200341086a200b29030037000020082005470d000b0b2000200636020420002007360200200041086a20053602000c010b200041003602000b200241d0006a24000f0b1036000b200441011037000b200341011037000b8a06030a7f037e017f23004190016b2202240020022001106c0240024002400240024020022802000d00200128020441216e220341216c2204417f4c0d01200228020421050240024020040d00410121060c010b200410282206450d030b02402005450d0041002107034020012802042208450d05200128020022092d0000210420012008417f6a220a3602042001200941016a360200200441014b0d054100210b0240024020040e020100010b41002104200241003a0088012008417e6a210803400240200a2004470d00200441ff0171450d08200241003a0088010c080b200241e8006a20046a200920046a220b41016a2d00003a0000200120083602042001200b41026a3602002002200441016a220b3a0088012008417f6a2108200b2104200b4120470d000b200241c8006a41186a200241e8006a41186a290300370300200241c8006a41106a200241e8006a41106a290300370300200241c8006a41086a200241e8006a41086a290300370300200220022903683703484101210b0b200741016a2108200241286a41186a200241c8006a41186a290300220c370300200241286a41106a200241c8006a41106a290300220d370300200241286a41086a200241c8006a41086a290300220e370300200241086a41086a2209200e370300200241086a41106a220a200d370300200241086a41186a220f200c37030020022002290348220c3703282002200c370308024020032007470d000240200741017422042008200420084b1b2203ad42217e220c422088a70d00200ca722044100480d000240024020070d002004102821060c010b2006200741216c2004102c21060b20060d01200441011037000b1031000b2006200741216c6a2204200b3a000020042002290308370001200441096a2009290300370000200441116a200a290300370000200441196a200f2903003700002008210720082005470d000b0b2000200336020420002006360200200041086a20053602000c040b200041003602000c030b1036000b200441011037000b200041003602002003450d002006102a0b20024190016a24000bc902010a7f230041106b22022400200241086a2001106c0240024020022802080d00024020012802042203417f4c0d00200228020c210402400240024020030d00410121050c010b200310282205450d010b02402004450d004100210641002107034002400240024020012802042208450d00200741016a21092001280200220a2d0000210b20012008417f6a3602042001200a41016a36020020072003460d010c020b200041003602002003450d072005102a0c070b024020062009200620094b1b22034100480d000240024020070d002003102821050c010b200520072003102c21050b20050d01200341011037000b1031000b200520076a200b3a0000200641026a21062009210720042009470d000b0b2000200336020420002005360200200041086a20043602000c030b200341011037000b1036000b200041003602000b200241106a24000b990a02137f017e230041e0006b22022400200241086a2001106c0240024020022802080d000240200128020441246e220341246c2204417f4c0d00200228020c210502400240024020040d00410421060c010b200410282206450d010b02400240024020050d00410021040c010b2002412d6a2107200241cb006a220841056a21094100210a4100210b0340024002402001280204220c450d002001280200220d2d000021042001200c417f6a220e3602042001200d41016a360200200441064b0d00024002400240024002400240024020040e0700070107030402000b20022001106c20022802000d0620012802042002280204220c490d06200c417f4c0d0c024002400240200c0d004101210441010d010c090b200c102e2204450d012001280204200c490d0620042001280200200c109a05210f2001280204220d200c490d072001200d200c6b36020420012001280200200c6a360200200f450d080b200241206a41086a200241386a41086a290200370300200220022902383703202004410876210f4104210d200c210e201041ffffff0771200441187472221021110c080b200c41011037000b41002104200241003a0058200c417e6a210c03400240200e2004470d00200441ff0171450d07200241003a00580c070b200241386a20046a200d20046a220f41016a2d00003a00002001200c3602042001200f41026a3602002002200441016a220f3a0058200c417f6a210c200f2104200f4120470d000b2002200829000037032020022009290000370025200228004721122002280043210e200228003f210c2002280238211120022f013c210420022d003e210f200741026a200241356a41026a2d00003a0000200720022f00353b00002004200f41107472210f4100210d0c060b200241386a2001106b200228023c220c450d04200228024421122002280240210e200228023821114101210d0c050b200241386a2001106b200228023c220c450d03200228024421122002280240210e200228023821114102210d0c040b200241386a2001106b200228023c220c450d02200228024421122002280240210e200228023821114103210d0c030b2004102a0c010b200c200d1044000b200041003602000240200b450d002006210403400240024020042d0000220141034b0d0002400240024020010e0404000102040b2004410c6a280200450d03200441086a280200102a0c030b2004410c6a280200450d02200441086a280200102a0c020b2004410c6a280200450d01200441086a280200102a0c010b200441086a280200450d00200441046a280200102a0b200441246a2104200a415c6a220a0d000b0b2003450d072006102a0c070b200241106a41086a2213200241206a41086a290300370300200220022903203703100240200b2003470d0002400240200341016a22042003490d00200341017422142004201420044b1b2204ad42247e2215422088a70d002015a7221441004e0d010b1031000b0240024020030d002014102821060c010b2006200341246c2014102c21060b2006450d03200421030b2006200b41246c6a220420123600102004200e36000c2004200c3600082004200f3b0005200420113600012004200d3a0000200441076a200f4110763a0000200420022903103700142004411c6a2013290300370000200a41246a210a200b41016a2204210b20042005470d000b0b2000200336020420002006360200200041086a20043602000c040b201441041037000b200441041037000b1036000b200041003602000b200241e0006a24000bb906020c7f047e230041b0016b2202240020022001106c02400240024002400240024020022802000d00200128020441286e220341286c2204417f4c0d02200228020421050240024020040d00410821060c010b200410282206450d040b02402005450d00410021070340200241003a00a8012007220841016a210720012802042109417f210a4100210402400240024002400240034020092004460d0120024188016a20046a2001280200220b2d00003a000020012009200a6a3602042001200b41016a3602002002200441016a220c3a00a801200a417f6a210a200c2104200c4120470d000b200241e8006a41186a220420024188016a41186a290300370300200241e8006a41106a220a20024188016a41106a290300370300200241e8006a41086a220d20024188016a41086a29030037030020022002290388013703682009200c6b220c41074d0d01200b290001210e2001200b41096a3602002001200c41786a360204200241286a41086a200d290300220f370300200241286a41106a200a2903002210370300200241286a41186a20042903002211370300200241086a41086a220a200f370300200241086a41106a220c2010370300200241086a41186a2209201137030020022002290368220f3703282002200f37030820032008470d04200841017422042007200420074b1b2203ad42287e220f422088a70d0c200fa722044100480d0c20080d022004102821060c030b200441ff0171450d00200241003a00a8010b200241286a41186a200241c8006a41186a290300370300200241286a41106a200241c8006a41106a290300370300200241286a41086a200241c8006a41086a29030037030020022002290348370328200041003602002003450d062006102a0c060b2006200841286c2004102c21060b2006450d070b2006200841286c6a22042002290308370300200a290300210f200c2903002110200929030021112004200e370320200441186a2011370300200441106a2010370300200441086a200f37030020072005470d000b0b2000200336020420002006360200200041086a20053602000c010b200041003602000b200241b0016a24000f0b1036000b200441081037000b200441081037000b1031000bf80404097f027e027f017e230041d0006b2202240020022001106c024002400240024002400240024020022802000d00200128020441306e220341306c2204417f4c0d01200228020421050240024020040d00410821060c010b200410282206450d030b02402005450d00410021070340200128020422084110490d07200741016a21092001280200220a41086a290000210b200a290000210c2001200a41106a3602002001200841706a220d36020441002104200241003a00482008416f6a210803400240200d2004470d00200441ff0171450d09200241003a00480c090b200241286a20046a200a20046a220e41106a2d00003a0000200120083602042001200e41116a3602002002200441016a220e3a00482008417f6a2108200e2104200e4120470d000b200241086a41186a2208200241286a41186a290300370300200241086a41106a220e200241286a41106a290300370300200241086a41086a220a200241286a41086a29030037030020022002290328370308024020032007470d00200741017422042009200420094b1b2203ad42307e220f422088a70d07200fa722044100480d070240024020070d002004102821060c010b2006200741306c2004102c21060b2006450d060b2006200741306c6a2204200b3703082004200c37030020042002290308370310200441186a200a290300370300200441206a200e290300370300200441286a20082903003703002009210720092005470d000b0b2000200336020420002006360200200041086a20053602000c060b200041003602000c050b1036000b200441081037000b200441081037000b1031000b200041003602002003450d002006102a0b200241d0006a24000ba40303087f017e017f230041d0046b22022400200241086a2001106c02400240024002400240024020022802080d00200128020441a0026e220341a0026c2204417f4c0d02200228020c21050240024020040d00410821060c010b200410282206450d040b024002402005450d004100210741002104410021080340200241b0026a2001107a2002290398034203510d02200841016a2109200241106a200241b0026a41a002109a051a024020082003470d0020072009200720094b1b2203ad42a0027e220a422088a70d09200aa7220b4100480d090240024020080d00200b102821060c010b20062004200b102c21060b2006450d080b200620046a200241106a41a002109a051a200741026a2107200441a0026a21042009210820052009470d000b0b2000200336020420002006360200200041086a20053602000c020b2000410036020002402008450d0020064198016a210903402009106a200941a0026a2109200441e07d6a22040d000b0b2003450d012006102a0c010b200041003602000b200241d0046a24000f0b1036000b200441081037000b200b41081037000b1031000bae0c04047f017e097f067e23004180066b22022400200241286a2001106c02400240024002400240024020022802280d000240200228022c2203450d0003402003417f6a22030d000b0b20012802042203450d01200128020022042d0000210520012003417f6a3602042001200441016a36020002400240200541ff00714103470d0020054118744118754100480d01420221060c060b200042033703680c060b20024198046a200110a50120022d0098044102460d02200241f0036a41206a20024198046a41206a280200360200200241f0036a41186a20024198046a41186a290300370300200241f0036a41106a20024198046a41106a290300370300200241f0036a41086a20024198046a41086a29030037030020022002290398043703f00341002103200241003a00c00220012802042107417f2105024002400240034020072003460d0120024180026a20036a200128020022082d00003a00002001200720056a3602042001200841016a3602002002200341016a22043a00c0022005417f6a210520042103200441c000470d000b200241c0056a41386a220320024180026a41386a290300370300200241c0056a41306a220920024180026a41306a290300370300200241c0056a41286a220a20024180026a41286a290300370300200241c0056a41206a220b20024180026a41206a290300370300200241c0056a41186a220c20024180026a41186a290300370300200241c0056a41106a220d20024180026a41106a290300370300200241c0056a41086a220e20024180026a41086a29030037030020022002290380023703c005200441ff017141c000490d0520024180056a41386a220f200329030037030020024180056a41306a2009290300220637030020024180056a41286a200a290300221037030020024180056a41206a200b290300221137030020024180056a41186a200c290300221237030020024180056a41106a200d290300221337030020024180056a41086a200e2903002214370300200220022903c005221537038005200241c0046a41306a2006370300200241c0046a41286a2010370300200241c0046a41206a2011370300200241c0046a41186a2012370300200241c0046a41106a2013370300200241c0046a41086a2014370300200241c0046a41386a200f290300370300200220153703c00420072004460d05200831000121112001200720056a3602042001200841026a360200201150450d01420021060c020b200341ff0171450d04200241003a00c0020c040b2007417f6a2004460d03200831000221122001200841036a3602002001200720046b417e6a36020442022011420f838622104204540d034201210620124208862011844204882010420c882211420120114201561b7e221120105a0d030b200241206a2001106c20022802200d0220022802242105200241086a2001109f012002290308a70d02200241086a41106a290300211320022903102112200241e8026a41206a200241f0036a41206a280200360200200241e8026a41186a200241f0036a41186a290300370300200241e8026a41106a200241f0036a41106a290300370300200241e8026a41086a200241f0036a41086a29030037030020024194036a200241c0046a41086a2903003702002002419c036a200241c0046a41106a290300370200200241a4036a200241c0046a41186a290300370200200241ac036a200241c0046a41206a290300370200200241b4036a200241e8046a290300370200200241bc036a200241f0046a290300370200200241c4036a200241f8046a290300370200200220022903f0033703e802200220022903c00437028c0320024180026a200241e8026a41e800109a051a0c030b200042033703680c040b200042033703680c030b420221060b20024198016a20024180026a41e800109a051a024020064202520d00200042033703680c020b200241306a20024198016a41e800109a051a0b200241e8026a2001108101024020022802e8024113460d002000200241306a41e800109a0522034188016a201337030020034180016a201237030020034190016a2005360200200341f8006a2011370300200320103703702003200637036820034198016a200241e8026a418801109a051a0c010b200042033703680b20024180066a24000bfb1002147f037e230041c0026b22022400200241086a2001106c0240024020022802080d000240200128020441c4006e220341c4006c2204417f4c0d00200228020c210502400240024020040d00410421060c010b200410282206450d010b024002402005450d0020024198026a410772210741002108034002400240024002400240024020012802042209450d002001280200220a2d0000210420012009417f6a220b3602042001200a41016a360200200441014b0d000240024020040e020001000b200b41034d0d01200a280001210c20012009417b6a3602042001200a41056a360200200241d4016a41026a200241d8016a41026a2d00003a0000200241b8016a41086a200241f8016a41086a290200370300200241b8016a41106a200241f8016a41106a290200370300200241b8016a41186a200241f8016a41186a2d00003a000020024198016a41086a20024198026a41086a29010037030020024198016a41106a20024198026a41106a29010037030020024198016a41186a20024198026a41186a290100370300200220022f00d8013b01d401200220022902f8013703b801200220022901980237039801200220022f01f4013b0196014100210d0c030b4100210e200241003a00b8022009417e6a210d03400240200b200e2204470d000240200441ff0171450d00200241003a00b8020b4102210d0c040b20024198026a20046a200a20046a220e41016a2d00003a00002001200d3602042001200e41026a3602002002200441016a220e3a00b802200d417f6a210d200e4120470d000b200241f4016a41026a220f20022d009a023a0000200241d8016a41086a2210200741086a290000370300200241d8016a41106a2211200741106a290000370300200241d8016a41186a2212200741186a2d00003a0000200220022f0198023b01f401200220072900003703d801200b200e460d01200228009b022113200a200e6a220a41016a2d0000210b2001200d3602042001200a41026a360200200b41014b0d014100211402400240200b0e020100010b4100210d200241003a00b802200e20096b41026a210b200920046b417c6a210403400240200b200d6a0d00200d41ff0171450d04200241003a00b8020c040b20024198026a200d6a200a200d6a220e41026a2d00003a0000200120043602042001200e41036a3602002002200d41016a220e3a00b8022004417f6a2104200e210d200e4120470d000b200241f8016a41186a20024198026a41186a290300370300200241f8016a41106a20024198026a41106a290300370300200241f8016a41086a20024198026a41086a29030037030020022002290398023703f801410121140b20024198016a41186a200241f8016a41186a29030037030020024198016a41106a200241f8016a41106a29030037030020024198016a41086a200241f8016a41086a290300370300200241d4016a41026a200f2d00003a0000200241b8016a41086a2010290300370300200241b8016a41106a2011290300370300200241b8016a41186a20122d00003a0000200220022903f80137039801200220022f01f4013b01d401200220022903d8013703b8014101210d201421152013210c0c020b20024192016a41026a200241d4016a41026a2d00003a0000200241f8006a41086a200241b8016a41086a290300370300200241f8006a41106a200241b8016a41106a290300370300200241f8006a41186a200241b8016a41186a2d00003a0000200241d8006a41086a20024198016a41086a290300370300200241d8006a41106a20024198016a41106a290300370300200241d8006a41186a20024198016a41186a290300370300200220022f01d4013b019201200220022903b8013703782002200229039801370358200220022f0196013b01560c020b4102210d0b20024192016a41026a2204200241d4016a41026a2d00003a0000200241f8006a41086a220a200241b8016a41086a290300370300200241f8006a41106a220b200241b8016a41106a290300370300200241f8006a41186a2209200241b8016a41186a2d00003a0000200241d8006a41086a220f20024198016a41086a290300370300200241d8006a41106a221020024198016a41106a290300370300200241d8006a41186a221120024198016a41186a290300370300200220022f01d4013b019201200220022903b8013703782002200229039801370358200220022f0196013b0156200d4102460d00200841016a210e200241d2006a41026a221220042d00003a0000200241386a41086a2213200a290300370300200241386a41106a220a200b290300370300200241386a41186a220b20092d00003a0000200241186a41086a2209200f290300370300200241186a41106a220f2010290300370300200241186a41186a22102011290300370300200220022f0192013b01522002200229037837033820022002290358370318200220022f01563b011620032008470d02024020084101742204200e2004200e4b1b2203ad42c4007e2216422088a70d002016a7220441004e0d020b1031000b200041003602002003450d082006102a0c080b0240024020080d002004102821060c010b2006200841c4006c2004102c21060b2006450d030b2006200841c4006c6a2204200d3a00002004200c360004200441036a20122d00003a0000200420022f01523b0001200b2d0000210d200a29030021162013290300211720022903382118200420153a002120042018370008200441106a2017370000200441186a2016370000200441206a200d3a00002004413a6a2010290300370000200441326a200f2903003700002004412a6a200929030037000020042002290318370022200420022f01163b0042200e2108200e2005470d000b0b2000200336020420002006360200200041086a20053602000c040b200441041037000b200441041037000b1036000b200041003602000b200241c0026a24000baf04010a7f230041d0006b2202240020022001106c0240024002400240024020022802000d00200128020422034160712204417f4c0d022002280204210502400240200341057622060d00410121070c010b200410282207450d040b02402005450d00410021080340200241003a00482008220941016a21082001280204417f6a21034100210402400240024003402003417f460d01200241286a20046a2001280200220a2d00003a0000200120033602042001200a41016a3602002002200441016a220a3a00482003417f6a2103200a2104200a4120470d000b200241086a41186a2204200241286a41186a290300370300200241086a41106a220a200241286a41106a290300370300200241086a41086a220b200241286a41086a2903003703002002200229032837030820062009470d020240200941017422032008200320084b1b220641ffffff3f712006470d002006410574220341004e0d020b1031000b0240200441ff0171450d00200241003a00480b200041003602002006450d052007102a0c050b0240024020090d002003102821070c010b200720094105742003102c21070b2007450d070b200720094105746a22032002290308370000200341186a2004290300370000200341106a200a290300370000200341086a200b29030037000020082005470d000b0b2000200636020420002007360200200041086a20053602000c010b200041003602000b200241d0006a24000f0b1036000b200441011037000b200341011037000bb005020c7f037e230041f0006b2202240020022001106c0240024002400240024020022802000d00200128020441246e220341246c2204417f4c0d02200228020421050240024020040d00410421060c010b200410282206450d040b02402005450d00410021070340200241003a00682007220841016a210720012802042109417f210a410021040240024002400240034020092004460d01200241c8006a20046a2001280200220b2d00003a000020012009200a6a3602042001200b41016a3602002002200441016a220c3a0068200a417f6a210a200c2104200c4120470d000b200241286a41186a2204200241c8006a41186a290300370300200241286a41106a220a200241c8006a41106a290300370300200241286a41086a220d200241c8006a41086a290300370300200220022903483703282009200c6b220c4104490d01200b28000121092001200b41056a3602002001200c417c6a360204200241086a41086a220c200d290300370300200241086a41106a220b200a290300370300200241086a41186a220a20042903003703002002200229032837030820032008470d030240200841017422042007200420074b1b2203ad42247e220e422088a70d00200ea7220441004e0d030b1031000b200441ff0171450d00200241003a00680b200041003602002003450d052006102a0c050b0240024020080d002004102821060c010b2006200841246c2004102c21060b2006450d070b2006200841246c6a22042002290308370200200c290300210e200b290300210f200a290300211020042009360220200441186a2010370200200441106a200f370200200441086a200e37020020072005470d000b0b2000200336020420002006360200200041086a20053602000c010b200041003602000b200241f0006a24000f0b1036000b200441041037000b200441041037000be60403087f017e017f230041f0016b22022400200241086a2001106c02400240024002400240024020022802080d00200128020441f0006e220341f0006c2204417f4c0d02200228020c21050240024020040d00410421060c010b200410282206450d040b024002402005450d00410021074100210841002109034020024180016a2001107f200228028401450d02200941016a2104200241106a20024180016a41f000109a051a024020092003470d0020072004200720044b1b2203ad42f0007e220a422088a70d09200aa7220b4100480d090240024020090d00200b102821060c010b20062008200b102c21060b2006450d080b200620086a200241106a41f000109a051a200741026a2107200841f0006a21082004210920052004470d000b0b2000200336020420002006360200200041086a20053602000c020b2000410036020002402009450d00200620086a210120062107034002402007410c6a2802002209450d0020072802042104200941246c210903400240024020042d0000220841034b0d0002400240024020080e0404000102040b2004410c6a280200450d03200441086a280200102a0c030b2004410c6a280200450d02200441086a280200102a0c020b2004410c6a280200450d01200441086a280200102a0c010b200441086a280200450d00200441046a280200102a0b200441246a21042009415c6a22090d000b0b200741f0006a21040240200741086a280200450d002007280204102a0b2004210720012004470d000b0b2003450d012006102a0c010b200041003602000b200241f0016a24000f0b1036000b200441041037000b200b41041037000b1031000b9f0a03077f037e057f230041d0026b2202240041002103200241003a00c8022001280204417f6a210402400240024003402004417f460d01200241a8026a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c8022004417f6a21042005210320054120470d000b200241e8006a41086a200241a8026a41086a290300370300200241e8006a41106a200241a8026a41106a290300370300200241e8006a41186a200241a8026a41186a290300370300200220022903a80237036820022001106c2002280200450d01200041003602040c020b0240200341ff0171450d00200241003a00c8020b200041003602040c010b2002280204210641002104200241003a00c80220012802042107417f21030240034020072004460d01200241a8026a20046a200128020022082d00003a00002001200720036a3602042001200841016a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241a8016a41086a200241a8026a41086a2903002209370300200241a8016a41106a200241a8026a41106a290300220a370300200241a8016a41186a200241a8026a41186a290300220b37030020024188016a41086a200937030020024188016a41106a200a37030020024188016a41186a200b370300200220022903a80222093703a801200220093703880141002104200241003a00c802200720056b210c200720036a210303400240200c2004470d000240200441ff0171450d00200241003a00c8020b200041003602040c030b200241a8026a20046a200820046a220541016a2d00003a0000200120033602042001200541026a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241e8016a41086a200241a8026a41086a2903002209370300200241e8016a41106a200241a8026a41106a290300220a370300200241e8016a41186a200241a8026a41186a290300220b370300200241c8016a41086a22042009370300200241c8016a41106a2203200a370300200241c8016a41186a2205200b370300200220022903a80222093703e801200220093703c801200241a8026a20011076024020022802a8022201450d00200241c8006a41086a2208200241e8006a41086a290300370300200241c8006a41106a2207200241e8006a41106a290300370300200241c8006a41186a220c200241e8006a41186a290300370300200241286a41086a220d20024188016a41086a290300370300200241286a41106a220e20024188016a41106a290300370300200241286a41186a220f20024188016a41186a29030037030020022002290368370348200220022903880137032820022902ac022109200241086a41186a22102005290300370300200241086a41106a22052003290300370300200241086a41086a22032004290300370300200220022903c801370308200020093702082000200136020420002006360200200041106a2002290348370200200041186a2008290300370200200041206a2007290300370200200041286a200c290300370200200041306a2002290328370200200041386a200d290300370200200041c0006a200e290300370200200041c8006a200f290300370200200041e8006a2010290300370200200041e0006a2005290300370200200041d8006a2003290300370200200041d0006a20022903083702000c020b200041003602040c010b0240200441ff0171450d00200241003a00c8020b200041003602040b200241d0026a24000b9505020c7f017e230041b0056b22022400200241086a2001106c0240024002400240024020022802080d0020012802044190016e22034190016c2204417f4c0d02200228020c21050240024020040d00410821060c010b200410282206450d040b02402005450d00200241a0036a410472210741002108410021044100210903400240024002402001280204220a450d002001280200220b2d0000210c2001200a417f6a3602042001200b41016a360200200c41014b0d004113210a024002400240200c0e020100010b200241a8046a200110810120022802a8044113460d02200241a0036a200241a8046a418801109a051a2001280204220c4104490d012001280200220a280000210d2001200c417c6a3602042001200a41046a36020020022802a003210a2002419c026a2007418401109a051a200a4113460d0220024198016a2002419c026a418401109a051a200a4114460d020b200941016a210c200241146a20024198016a418401109a051a20092003470d0302402008200c2008200c4b1b2203ad4290017e220e422088a70d00200ea7220b41004e0d030b1031000b200241a0036a106a0b2000410036020002402009450d00200621010340024020012802004113460d002001106a0b20014190016a2101200441f07e6a22040d000b0b2003450d052006102a0c050b0240024020090d00200b102821060c010b20062004200b102c21060b2006450d070b200620046a2209200a360200200941046a200241146a418401109a051a20094188016a200d360200200841026a210820044190016a2104200c21092005200c470d000b0b2000200336020420002006360200200041086a20053602000c010b200041003602000b200241b0056a24000f0b1036000b200441081037000b200b41081037000bf3910107087f017e067f087e087f017e017f230041f0096b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200200541144b0d16200141046a210720050e150102030405060708090a0b0c0d0e0f101112131415010b200041133602000c4c0b02402006450d0020042d0001210620012003417e6a22083602042001200441026a360200200641054b0d004101210902400240024002400240024020060e06510001020304510b20022001106c20022802000d05200128020420022802042204490d052004417f4c0d1e02400240024020040d00410121050c010b2004102e2205450d0120072802002004490d06200520012802002004109a051a200128020422032004490d212001200320046b3602042001200128020020046a3602000b2005450d062004ad220a422086200a84210a410221090c510b200441011037000b20084108490d042004290002210a2001200341766a36020420012004410a6a360200410321090c4f0b200241086a2001106c20022802080d032001280204200228020c2204490d032004417f4c0d1c02400240024020040d00410121050c010b2004102e2205450d0120072802002004490d04200520012802002004109a051a200128020422032004490d202001200320046b3602042001200128020020046a3602000b2005450d042004ad220a422086200a84210a410421090c4f0b200441011037000b200241206a2001106c20022802200d02200728020041186e220b41186c2204417f4c0d1b2002280224210c0240024020040d00410421050c010b200410282205450d1f0b0240200c450d004100210d41002106410021080340200241186a2001106c02400240024020022802180d002001280204200228021c2204490d002004417f4c0d2002400240024020040d004101210e0c010b2004102e220e450d3920072802002004490d01200e20012802002004109a051a200128020422032004490d262001200320046b3602042001200128020020046a3602000b200241106a2001106c024020022802100d00200128020420022802142203490d002003417f4c0d22024002400240024020030d004101210f0c010b2003102e220f450d0120072802002003490d02200f20012802002003109a051a200128020422092003490d2a2001200920036b3602042001200128020020036a3602000b200841016a21092008200b470d06200d2009200d20094b1b220bad42187e220a422088a70d55200aa7221041004e0d050c550b200341011037000b200f102a0b2004450d010b200e102a0b02402008450d002005210103400240200141046a280200450d002001280200102a0b0240200141106a280200450d002001410c6a280200102a0b200141186a2101200641686a22060d000b0b200b0d050c060b0240024020080d002010102821050c010b200520062010102c21050b2005450d240b200520066a2208200e360200200841146a2003ad220a3e02002008410c6a200a422086200fad84370200200841046a2004ad220a422086200a84370200200d41026a210d200641186a210620092108200c2009470d000b0b2005450d02200cad422086200bad84210a410521090c4d0b200241306a2001106c20022802300d012007280200410c6e220e410c6c2204417f4c0d1a2002280234210f0240024020040d00410421050c010b200410282205450d220b024002400240200f450d004100210841002103410021090340200241286a2001106c20022802280d032001280204200228022c2204490d032004417f4c0d1e0240024020040d004101210d0c010b2004102e220d450d3720072802002004490d03200d20012802002004109a051a200128020422062004490d272001200620046b3602042001200128020020046a3602000b200941016a210602402009200e470d0020082006200820064b1b220ead420c7e220a422088a70d50200aa7220b4100480d500240024020090d00200b102821050c010b20052003200b102c21050b2005450d280b200520036a2209200d360200200941086a2004360200200941046a2004360200200841026a21082003410c6a210320062109200f2006470d000b0b2005450d03200fad422086200ead84210a410621090c4e0b200d102a0b02402009450d002005210103400240200141046a280200450d002001280200102a0b2001410c6a2101200341746a22030d000b0b200e450d010b2005102a0b200041133602000c4b0b02402006450d0020012003417e6a3602042001200441026a3602000b200041133602000c4a0b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241386a2001109e012002290338a70d002002290340210a20004102360200200041086a200a370300200041106a200241e8086a41f800109a051a0c4a0b200041133602000c490b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241e0076a2001107e20022802e00722010d130b200041133602000c480b02402006450d0020012003417e6a3602042001200441026a3602000b200041133602000c470b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541024b0d00024002400240024020050e03000102000b200241e8086a200110a50120022d00e8084102460d0320024184096a290200210a200241fc086a2902002111200241e8086a41106a2802002107200241f4086a2802002104200241f0086a280200210320022802ec08210520022802e8082106200241c8006a2001109f0120022802480d03200241c8006a41106a290300211241012101200229035021130c020b200241e8086a200110a50120022d00e8084102460d02200241e0076a41086a20024180096a290300370300200241e0076a41106a20024188096a2802003602002002200241e8086a41106a2903003703e007200241f4086a2802002104200241e8086a41086a280200210320022802ec08210520022802e8082106200241f8006a2001109f012002290378a70d02200241f8006a41106a29030021122002290380012113200241e0006a2001109f012002290360a70d02200241e0006a41106a290300211420022903682115200241a8056a41106a200241e0076a41106a280200360200200241a8056a41086a200241e0076a41086a290300370300200220022903e00722163703a805200241b4056a290200210a20022902ac0521112016a7210741022101420021160c010b200241e8086a200110a50120022d00e8084102460d0120024184096a290200210a200241fc086a2902002111200241e8086a41106a22092802002107200241f4086a2802002104200241e8086a41086a2208280200210320022802ec08210520022802e8082106200241e8086a200110a50120022d00e8084102460d01200241e0076a41206a220d200241e8086a41206a280200360200200241e0076a41186a220e200241e8086a41186a290300370300200241e0076a41106a2009290300370300200241e0076a41086a2008290300370300200220022903e8083703e00720024190016a2001109f01200229039001a70d0120024190016a41106a29030021172002290398012118200241e8076a2903002112200241f0076a2903002115200e2903002114200d350200211620022903e0072113410321010b20004105360200200041e0006a2017370200200041d8006a2018370200200041c8006a2014370200200041c0006a2015370200200041386a2012370200200041306a2013370200200041286a200a370200200041206a2011370200200041d0006a20163702002000411c6a2007360200200041186a2004360200200041146a2003360200200041106a20053602002000410c6a2006360200200041086a2001360200200041e8006a200229038806370300200041f0006a20024188066a41086a290300370300200041f8006a20024188066a41106a29030037030020004180016a20024188066a41186a2903003703000c470b200041133602000c460b2006450d4120042d0001210520012003417e6a22193602042001200441026a3602002005410c4b0d41410421104100211a4100211b02400240024002400240024002400240024002400240024020050e0d0001024e030405060708090a0b000b200241e0076a200110a50120022d00e0074102460d4c200241ec076a290200211120024180086a280200210b200241ff076a2d00002108200241fe076a2d0000210d200241fd076a2d0000210c200241f9076a2800002104200241f5076a280000210f200241f4076a2d0000210e20022902e407210a20022802e0072106200241a8016a2001109f0120022903a801a70d4c20072802002203450d4c200241b8016a290300211320022903b0012112200128020022052d0000210920012003417f6a360204410121102001200541016a36020020094103492201450d4c200441807e71410020011b211b2004410020011b211a0c4d0b200241c0016a2001109f0120022903c001a70d4b200241d0016a290300211120022903c801210a410221104100211b0c4c0b200241d8016a2001109f0120022903d801a70d4a200241e8016a290300211120022903e001210a410321104100210c4100211a4100211b0c4b0b200241f0016a2001109f0120022903f001a70d4920024180026a290300211120022903f801210a410521104100211b0c4a0b20024188026a2001106c2002280288020d48200728020041246e221c41246c2204417f4c0d19200228028c02211d0240024020040d00410421060c010b200410282206450d240b0240201d450d0041232105200241f0076a211e41002107410021040340200241e0076a200110a501024020022d00e00722094102470d00201c450d4b2006102a0c4b0b200441016a2103201e290300210a20022903e807211120022d008308210820022d008208210d20022d008108210e20022800fd07210f20022800f907210b20022d00f807210c20022802e407211020022d00e307211b20022d00e207211920022d00e107211f02402004201c470d0020072003200720034b1b221cad42247e2212422088a70d4d2012a722204100480d4d0240024020040d002020102821060c010b20062005415d6a2020102c21060b2006450d270b200620056a220420083a0000200441656a2208200a370008200820113700002004417f6a200d3a00002004417e6a200e3a00002004417a6a200f360000200441766a200b360000200441756a200c3a0000200441616a2010360000200441606a201b3a00002004415f6a20193a00002004415e6a201f3a00002004415d6a20093a0000200741026a2107200541246a210520032104201d2003470d000b0b2006450d48201dad422086201cad84210a42002111410621104100211b0c490b410721104100211b0c480b2019450d4620042d0002210920012003417d6a3602042001200441036a360200200941034f0d46410821104100211b0c470b200241e0076a200110a50120022d00e0074102460d45200241f9076a280000221a41807e71211b200241ec076a290200211120024180086a280200210b200241ff076a2d00002108200241fe076a2d0000210d200241fd076a2d0000210c200241f5076a280000210f200241f4076a2d0000210e20022902e407210a20022802e0072106410921100c460b20024190026a2001106c2002280290020d442002280294022106410a21104100211b0c450b410b21104100211b0c440b410c21104100211b0c430b200241e0076a2001106d20022802e0072206450d4120022902e407210a42002111410d21104100211b0c420b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241e8086a200110e80120022d00e8084101460d00200241e0076a200241e8086a41017241e000109a051a20024198026a2001106c2002280298020d002001280204200228029c022204490d002004417f4c0d12024002400240024020040d004101210341010d010c040b2004102e2203450d0120072802002004490d02200320012802002004109a052105200128020422062004490d212001200620046b3602042001200128020020046a3602002005450d030b20024188066a200241e0076a41e000109a051a200241a8056a20024188066a41e000109a051a2000410c6a2004360200200041086a20043602002000200336020420004107360200200041106a200241a8056a41e000109a051a20004180016a20024188076a41106a290300370300200041f8006a20024188076a41086a290300370300200041f0006a2002290388073703000c470b200441011037000b2003102a0b200041133602000c440b2006450d3e20042d0001210520012003417e6a221d3602042001200441026a360200200541104b0d3e410e211a4100211c024002400240024002400240024002400240024002400240024002400240024020050e11000102030405060708090a0b0c4d0d0e0f000b200241e0076a200110810120022802e0074113460d4d200241e8086a200241e0076a418801109a051a41880110282206450d382006200241e8086a418801109a052104200241a0026a2001109f01024020022903a002a7450d002004106a2004102a0c4e0b200241b0026a290300210a2004411876211c20022903a8022211422088a7211f2011a7211b4101211a0c4c0b200241b8026a2001106c20022802b8020d4c20022802bc022206411876211c4102211a0c4a0b200241c0026a2001106c20022802c0020d4b20072802002204450d4b20022802c4022106200128020022052d0000210320012004417f6a3602042001200541016a360200200341ff0071220d41064b0d4b2006411876211c200341077621084103211a0c480b200241c8026a2001106c20022802c8020d4a20072802002204450d4a20022802cc022106200128020022052d0000210320012004417f6a3602042001200541016a360200200341ff0071220d41064b0d4a2006411876211c200341077621084104211a0c470b201d4104490d492004280002210620012003417a6a3602042001200441066a3602002006411876211c4105211a0c470b200241e0076a200110810120022802e0074113460d48200241e8086a200241e0076a418801109a051a41880110282206450d342006200241e8086a418801109a05411876211c4106211a0c460b200241e0076a200110810120022802e0074113460d47200241e8086a200241e0076a418801109a051a41880110282206450d342006200241e8086a418801109a05411876211c4107211a0c450b200241e0076a200110810120022802e0074113460d46200241e8086a200241e0076a418801109a051a41880110282206450d342006200241e8086a418801109a05411876211c4108211a0c440b41002105200241003a0088092003417e6a2109417d21060340024020092005470d00200541ff0171450d47200241003a0088090c470b200241e8086a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a0088092006417f6a21062007210520074120470d000b200241b0056a2205200241f1086a290000370300200241a8056a41106a200241f9086a290000370300200241bf056a220620024180096a290000370000200220022900e908220a3703a805200320076b2203417e6a4104490d4520022d00ac05210920022f01aa05210d200241b5056a330000211120023500b105211220052d0000211b20022f01ae05211a200241bd056a3100002113200241bb056a330000211620023500b705211820022d00e80821082006280000210f20022d00ad05211c20022d00a905211020022800c305210b20022d00be05210e200420076a220441026a280000210c20012003417a6a22053602042001200441066a220736020020054104490d45200d2009411074722106200aa7210d200728000021192001200341766a36020420012004410a6a36020020182016201342108684422086844208862012201142208684221142ffffffffffff3f83221242288884210a2012421886201a201b41107472ad42ffffff078384a7211b2011420888a7211f4109211a0c440b41002105200241003a0088092003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d46200241003a0088090c460b200241e8086a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a0088092003417f6a21032006210520064120470d000b200241b0056a200241f1086a290000370300200241bf056a220120024180096a290000370000200241a8056a41106a200241f9086a290000370300200220022900e90822113703a80520022f01aa0520022d00ac0541107472210620022901ae052212422088a7211f20022d00e80821082001280000210f200241b6056a290100210a20022d00ad05211c20022d00a905211020022800c305210b20022d00be05210e2011a7210d2012a7211b410a211a0c430b200241d0026a2001106c20022802d0020d4320022802d4022206411876211c410b211a0c410b200241e8026a2001106c20022802e8020d4220022802ec022106200241e0026a2001106c20022802e0020d4220022802e402211b200241d8026a2001106c20022802d8020d4220022802dc02211f2006411876211c410c211a0c410b41002105200241003a0088092003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d43200241003a0088090c430b200241e8086a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a0088092003417f6a21032006210520064120470d000b200241b0056a200241f1086a290000370300200241bf056a220120024180096a290000370000200241a8056a41106a200241f9086a290000370300200220022900e90822113703a80520022f01aa0520022d00ac0541107472210620022901ae052212422088a7211f20022d00e80821082001280000210f200241b6056a290100210a20022d00ad05211c20022d00a905211020022800c305210b20022d00be05210e2011a7210d2012a7211b410d211a0c400b41002105200241003a0088092003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d42200241003a0088090c420b200241e8086a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a0088092003417f6a21032006210520064120470d000b200241b0056a2201200241f1086a290000370300200241a8056a41106a200241f9086a290000370300200241bf056a220420024180096a290000370000200220022900e90822123703a80520023500b705200241bb056a330000200241bd056a310000421086844220868442088620023500b105200241b5056a33000042208684221142288884210a201142188620023301ae0520013100004210868484a7211b20022f01aa0520022d00ac054110747221062011420888a7211f20022d00e80821082004280000210f20022d00ad05211c20022d00a905211020022800c305210b20022d00be05210e2012a7210d410f211a0c3f0b41002105200241003a0088092003417e6a21092003417d6a21060340024020092005470d00200541ff0171450d41200241003a0088090c410b200241e8086a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a0088092006417f6a21062007210520074120470d000b200241b0056a200241f1086a290000370300200241b8056a200241f9086a290000370300200241bf056a220520024180096a290000370000200220022900e908220a3703a805200241d8076a41046a20022d00ac053a0000200241e8066a41046a200241b5056a2f00003b01002002200a3e02d807200220022800b1053602e8062003417e6a2007460d3f20022d00e808210820022800ad05211c2005290000211120022900b705210a200420076a220441026a2d00002109200120063602042001200441036a360200200941064b0d3f20024190076a200241e8066a41046a2f01003b0100200220022802d807220d3602d007200220022802e80636028c072002201c360288072002200a37019207200a423888201142088684a7210e4110211a20022f01d207200241d8076a41046a2d00004110747221062011422088a7210b2002290089072212422088a7211f20024191076a290000210a20022d00d10721102011a7210f2012a7211b0c3e0b4111211a0c3d0b200241e0076a200110e90120022d00e0074105470d0d200041133602000c420b200241e0076a200110e90120022d00e0074105470d0d200041133602000c410b2006450d3720042d0001210520012003417e6a3602042001200441026a360200200541094b0d37024002400240024002400240024002400240024020050e0a00010203040506070809000b200241e0076a2001107520022802e0072204450d40200241e8076a280200210520022802e4072103200241f0026a2001106c024020022802f002450d0020030d400c410b0240200728020022094104490d0020022802f402210620012802002208280000210720012009417c6a220d3602042001200841046a360200200d4110490d002008410c6a29000021122008290004211320012009416c6a3602042001200841146a360200410121010c3f0b20030d3f0c400b200241e0076a2001107520022802e0072204450d3f200241e8076a280200210520022802e4072103200241f8026a2001106c024020022802f802450d002003450d400c3f0b0240200728020022094104490d0020022802fc02210620012802002208280000210720012009417c6a220d3602042001200841046a360200200d4110490d002008410c6a29000021122008290004211320012009416c6a3602042001200841146a360200410221010c3e0b20030d3e0c3f0b20024190036a2001106c2002280290030d3e2002280294032104200241e0076a200110a50120022d00e0074102460d3e20024188066a41086a200241f8076a29030037030020024188066a41106a20024180086a2802003602002002200241e0076a41106a29030037038806200241ec076a2802002107200241e0076a41086a280200210620022802e407210520022802e007210320024188036a2001106c2002280288030d3e200228028c03210920024180036a2001106c2002280280030d3e20024198066a280200210820024190066a29030021122002290388062113200228028403ad210a42002111410321010c3c0b20024198036a2001106c2002280298030d3d41042101200228029c0321040c3b0b200241a0036a2001106c20022802a0030d3c4105210120022802a40321040c3a0b200241e0076a200110a50120022d00e0074102460d3b20024188066a41086a200241f8076a29030037030020024188066a41106a20024180086a2802003602002002200241e0076a41106a29030037038806200241e0076a41086a290300211620022903e0072118200241b0036a2001109f0120022903b003a70d3b200241b0036a41106a290300211120022903b803210a200241a8036a2001106c20022802a8030d3b20022802ac032108200241a8056a41106a20024188066a41106a280200360200200241a8056a41086a20024188066a41086a290300370300200220022903880622173703a8052018422088a721032016422088a72106200241b4056a290200211220022902ac0521132017a721072018a721042016a72105410621010c390b200241c8036a2001106c20022802c8030d3a4107210120022802cc0321040c380b200241e0076a200110a50120022d00e0074102460d39200241fc076a2902002112200241f4076a2902002113200241f0076a2802002107200241ec076a280200210641082101200241e0076a41086a280200210520022802e407210320022802e00721040c370b200241d0036a2001106c20022802d0030d384109210120022802d40321040c360b200241d8036a2001106c20022802d8030d37410a210120022802dc0321040c350b2006450d3320042d0001210520012003417e6a3602042001200441026a360200200541034b0d33024002400240024020050e0400010203000b41002105200241003a0080082003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d38200241003a0080080c380b200241e0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a0080082003417f6a21032006210520064120470d000b200241a8056a41106a200241f1076a290000370300200241b0056a200241e0076a41096a290000220a370300200241bf056a2201200241e0076a41186a290000370000200241e8066a41096a200a370000200241e8066a41106a200241b7056a290000370000200220022d00e007220d3a00e806200220022900e1073700e9062001280000210f20022800c305210b20022800ef06220c411876211020022800eb062201411876210820022d00ff06211b20022900f706211220022800f306211a20022d00ea06211920022d00e906211f4101211c0c350b41002105200241003a0080082003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d37200241003a0080080c370b200241e0076a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a0080082003417f6a21032006210520064120470d000b200241b0056a200241e9076a290000370300200241bf056a2204200241e0076a41186a290000370000200241a8056a41106a200241f1076a290000370300200220022900e107220a3703a80520022f01aa0520022d00ac0541107472210120022901ae052211a7220c41187621102011422088a7211a20022d00e007210d2004280000210f200241b6056a290100211220022d00ad05210820022d00a905211920022800c305210b20022d00be05211b200aa7211f4102211c0c340b41002105200241003a008008410220036b21092003417d6a210603400240200920056a0d00200541ff0171450d36200241003a0080080c360b200241e0076a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a0080082006417f6a21062007210520074120470d000b200241b0056a200241e9076a290000370300200241b8056a200241f1076a290000370300200241bf056a2205200241f8076a290000370000200220022900e107220a3703a805200241d8076a41046a20022d00ac053a0000200241e8066a41046a200241b5056a2f00003b01002002200a3e02d807200220022800b1053602e80620022d00e007210d20022800ad0521082005290000211320022900b705211241002105200241003a008008200420076a2109200720036b41026a210303400240200320056a0d00200541ff0171450d36200241003a0080080c360b200241e0076a20056a200920056a220441026a2d00003a0000200120063602042001200441036a3602002002200541016a22043a0080082006417f6a21062004210520044120470d000b200241bf056a2201200241f8076a290000370000200241a8056a41106a200241f1076a290000370300200241a8056a41086a2203200241e9076a290000370300200220022900e10722163703a80520022d00e007210420012800002109200241bb056a3300002111200241bd056a3100002118200241b5056a330000210a2003310000211720022801aa05210620022d00a905210520022800c305210e20022d00be05210720023500b705211520023500b105211420023301ae052121200241d0076a41046a2201200241d8076a41046a2d00003a0000200220022802d8073602d007200220083602880720024188076a41086a200241e8066a41046a2f01003b0100200220022802e80636028c0720022012370192072002419a076a20133701002014200a422086842214421886202120174210868484210a201520112018421086844220868442088620144228888421112012423888201342088684a7211b2008410876210c20022f01d20720012d00004110747221012013422088a7210b2002290091072112200228008d07211a20022d008c07211020022d00d107211920022d00d007211f2016a721032013a7210f4103211c0c330b200241e0076a2001106d20022802e0072201450d3320022802e407220c411876211020014118762108200241e8076a280200211a4104211c0c320b024002402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241e0036a2001106c20022802e003450d010b200041133602000c3f0b20022802e40321012000410d36020020002001360204200041086a200241e8086a418001109a051a0c3e0b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241e8036a2001106c20022802e8030d00200128020420022802ec032204490d002004417f4c0d0b024002400240024020040d00410121030c010b2004102e2203450d0120072802002004490d02200320012802002004109a051a200128020422052004490d1b2001200520046b3602042001200128020020046a3602000b2003450d02200020033602042000410e360200200041086a2004ad220a422086200a84370200200041106a200241e8086a41f800109a051a0c400b200441011037000b2003102a0b200041133602000c3d0b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541024b0d0002400240024020050e03000102000b200241f0036a2001109f0120022903f003a70d0220024180046a290300210a20022903f8032111200241e0076a200110a50120022d00e0074102460d02200241fc076a2902002112200241f4076a2902002113200241f0076a2802002101200241ec076a2802002104200241e8076a280200210320022802e407210520022802e0072106410121070c310b20024188046a2001106c2002280288040d0141022107200228028c0421060c300b20024190046a2001106c2002280290040d004103210720022802940421060c2f0b200041133602000c3c0b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541044b0d0002400240024002400240024002400240024020050e050001020607000b200241e8086a200110ea0120022d00d8094102460d08200241e8076a20024198096a290300370300200241f0076a200241a0096a29030037030020022002290390093703e0072002418c096a280200210b20024184096a2802002104200241fd086a2800002108200241f9086a280000210d200228028809211b20022d008309210520022d008209210620022d008109210f20022d00f808210e20022903f008210a20022903e8082111200241d8096a2903002113200241b8096a2903002116200241c5096a2800002101200241c1096a280000210320022903d009211820022903b009211720022802cc09210720022d00cb09210c20022d00ca09211f20022d00c909211c20022d00c009211d20022903a8092112410121220c020b200241a0046a2001109e0120022903a004a70d0720022903a804210a20024198046a2001106c2002280298040d072001280204200228029c042204490d072004417f4c0d1002400240024020040d00410121090c010b2004102e2209450d0120072802002004490d08200920012802002004109a051a200128020422032004490d202001200320046b3602042001200128020020046a3602000b2009450d082004ad22114220862011842111200241e0076a41106a200241e8086a41106a290300370300200241e0076a41086a200241e8086a41086a290300370300200220022903e8083703e007410221220c350b200441011037000b200241e8086a200110a50120022d00e8084102460d06200241f4086a290200210a20024188096a280200210420024187096a2d0000210520024186096a2d0000210620024185096a2d0000210f20024181096a2800002108200241fd086a280000210d200241fc086a2d0000210e20022902ec08211120022802e8082109200241c8046a2001109f0120022903c804a70d06200241d8046a290300211320022903d0042116200241b8046a2001109e0120022903b804a70d0620022903c0042112200241b0046a2001106c20022802b0040d06200128020420022802b404220b490d06200b417f4c0d0f02400240200b0d004101211b41010d010c080b200b102e221b450d022007280200200b490d03201b2001280200200b109a05210320012802042207200b490d1f20012007200b6b36020420012001280200200b6a3602002003450d070b200241f0076a2013370300200220163703e8072002200b3602e007410321220b0c320b200b41011037000b201b102a0c030b200241f8046a2001109f0120022903f804a70d0220024188056a290300210a2002290380052111200241e8046a2001109e0120022903e804a70d0220022903f004211241002103200241003a0088092007280200417f6a21040240024002400240024003402004417f460d01200241e8086a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a0088092004417f6a21042005210320054120470d000b20024190076a200241e8086a410e6a290100221337030020024198076a200241e8086a41166a2204290100370300200241a0076a20024186096a2f01003b0100200241e8066a410e6a2013370100200241e8066a41166a20042f01003b0100200220022d00e80822103a00e806200220022800e9083600e906200220022d00ed083a00ed06200220022901ee0822133701ee062002201337038807200228019e072108200228019a07210d200241e0046a2001106c20022802e0040d07200128020420022802e404220b490d07200b417f4c0d10200b0d01410121040c020b200341ff0171450d06200241003a0088090c060b200b102e2204450d012007280200200b490d0220042001280200200b109a051a20012802042203200b490d1e20012003200b6b36020420012001280200200b6a3602000b2004450d04200220113703e007200220123703f0072002200a3703e807200241f7066a290000210a20022900ef06211120022d00ff06210e20022800eb06210920022d00ea06211a20022d00e906211941042122200b211b0c310b200b41011037000b2004102a0c020b41002105200241003a0088092003417e6a21092003417d6a21060340024020092005470d00200541ff0171450d03200241003a0088090c030b200241e8086a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a0088092006417f6a21062007210520074120470d000b2003417e6a2007460d01200241f7086a290000210a20022900ef08211120022d00e808211020022d00e908211920022d00ea08211a20022800eb08210920022d00ff08210e200228028009210d2002280284092108200420076a220c41026a2d0000211f200120063602042001200c41036a360200201f41014b0d014100210f02400240201f0e020100010b41002104200241003a008809200720036b41036a2106200320076b417c6a210303400240200620046a0d00200441ff0171450d04200241003a0088090c040b200241e8086a20046a200c20046a220541036a2d00003a0000200120033602042001200541046a3602002002200441016a22053a0088092003417f6a21032005210420054120470d000b200241b0056a200241f1086a290000370300200241b8056a200241f9086a290000370300200241bf056a220120024180096a290000370000200220022900e90822123703a805200241d8076a41046a20022d00ac053a0000200241e8066a41046a2203200241b5056a2f00003b0100200220123e02d807200220022800b1053602e80620022d00e808210620022800ad05211b2001290000211320022900b705211220022802e806210b20022800d907210420022d00d8072105200220032f01003b0188074101210f0b200241ea076a2013370100200241f6076a200241ce076a2f01003b0100200220022f0188073b01e007200220123701e207200220022801ca073601f207410521220c2e0b2009102a0b200041133602000c3b0b2006450d2a20042d0001210520012003417e6a3602042001200441026a360200200541024b0d2a0240024002400240024020050e03000102000b200241e0076a200110810120022802e0074113470d020c2e0b200241e8086a200110a5014102210120022d00e8084102460d2d200241a8056a41106a20024188096a280200360200200241a8056a41086a20024180096a2903003703002002200241e8086a41106a29030022123703a80520022903e8082213422088a72103200241e8086a41086a2903002216422088a72105200241b4056a290200210a20022902ac0521112013a721042012a721062016a721070c020b200241e8086a200110a50120022d00e8084102460d2c20024184096a290200210a200241fc086a2902002111200241f8086a2802002106200241f4086a2802002105200241f0086a280200210720022802ec08210320022802e8082104200241e0076a200110810120022802e0074113460d2c200241e8086a200241e0076a418801109a051a41880110282209450d1b2009200241e8086a418801109a051a410321010c010b200241e8086a200241e0076a418801109a051a41880110282204450d192004200241e8086a418801109a051a410121010b2000200136020420004111360200200041246a200a3702002000411c6a20113702002000412c6a2009360200200041186a2006360200200041146a2005360200200041106a20073602002000410c6a2003360200200041086a2004360200200041306a20024188066a41d800109a051a0c3a0b2006450d2820042d0001210520012003417e6a22063602042001200441026a36020020050d2820064104490d282004280002210b20012003417a6a3602042001200441066a360200200241a0056a2001106c20022802a0050d28200128020420022802a4052205490d282005417f4c0d060240024020050d004101210c41010d010c2a0b2005102e220c450d2520072802002005490d28200c20012802002005109a052104200128020422032005490d1a2001200320056b3602042001200128020020056a3602002004450d290b20024198056a2001106c2002280298050d262007280200410c6e220f410c6c2204417f4c0d06200228029c0521100240024020040d004104210e0c010b20041028220e450d1b0b0240024002400240024002402010450d00410021084100210341002109034020024190056a2001106c2002280290050d0320012802042002280294052204490d032004417f4c0d0d0240024020040d004101210d0c010b2004102e220d450d2b20072802002004490d03200d20012802002004109a051a200128020422062004490d232001200620046b3602042001200128020020046a3602000b200941016a210602402009200f470d0020082006200820064b1b220fad420c7e220a422088a70d3f200aa7221b4100480d3f0240024020090d00201b1028210e0c010b200e2003201b102c210e0b200e450d240b200e20036a2209200d360200200941046a2004ad220a422086200a84370200200841026a21082003410c6a21032006210920102006470d000b0b200e450d2b200c450d2d200728020022034104490d0220012802002207280000210820012003417c6a22043602042001200741046a36020020044104490d032007280004210d2001200341786a22093602042001200741086a36020041002104200241003a00a809200341776a2103034020092004460d05200241e8086a20046a200720046a220641086a2d00003a0000200120033602042001200641096a3602002002200441016a22063a00a8092003417f6a210320062104200641c000470d000b200241e0076a41386a2201200241e8086a41386a290300370300200241e0076a41306a2204200241e8086a41306a290300370300200241e0076a41286a2203200241e8086a41286a290300370300200241e0076a41206a2207200241e8086a41206a290300370300200241e0076a41186a2209200241e8086a41186a290300370300200241e0076a41106a221b200241e8086a41106a290300370300200241e0076a41086a221a200241e8086a41086a290300370300200220022903e8083703e007200641ff017141c000490d2a20024188066a41386a2206200129030037030020024188066a41306a2004290300220a37030020024188066a41286a2003290300221137030020024188066a41206a2007290300221237030020024188066a41186a2009290300221337030020024188066a41106a201b290300221637030020024188066a41086a201a2903002218370300200220022903e007221737038806200241a8056a41306a200a370300200241a8056a41286a2011370300200241a8056a41206a2012370300200241a8056a41186a2013370300200241a8056a41106a2016370300200241a8056a41086a2018370300200241a8056a41386a2006290300370300200220173703a805200c450d2d20024188076a41386a2201200241a8056a41386a29030037030020024188076a41306a2204200241a8056a41306a29030037030020024188076a41286a2203200241a8056a41286a29030037030020024188076a41206a2206200241a8056a41206a29030037030020024188076a41186a2207200241a8056a41186a29030037030020024188076a41106a2209200241a8056a41106a29030037030020024188076a41086a221b200241a8056a41086a290300370300200220022903a80537038807200041246a200d360200200041206a20083602002000411c6a2010360200200041186a200f360200200041146a200e360200200041106a20053602002000410c6a2005360200200041086a200c3602002000200b36020420004112360200200041286a200229038807370200200041306a201b290300370200200041386a2009290300370200200041c0006a2007290300370200200041c8006a2006290300370200200041d0006a2003290300370200200041d8006a2004290300370200200041e0006a200129030037020020004180016a200241e8066a41186a290300370300200041f8006a200241e8066a41106a290300370300200041f0006a200241e8066a41086a290300370300200041e8006a20022903e8063703000c3e0b200d102a0b02402009450d00200e210103400240200141046a280200450d002001280200102a0b2001410c6a2101200341746a22030d000b0b200f450d29200e102a0c290b02402005450d00200c102a0b02402010450d002010410c6c2104200e210103400240200141046a280200450d002001280200102a0b2001410c6a2101200441746a22040d000b0b200f450d2a200e102a0c2a0b02402005450d00200c102a0b02402010450d002010410c6c2104200e210103400240200141046a280200450d002001280200102a0b2001410c6a2101200441746a22040d000b0b200f450d29200e102a0c290b200441ff0171450d25200241003a00a8090c250b02402006450d0020012003417e6a3602042001200441026a3602000b200041133602000c380b02402006450d0020012003417e6a3602042001200441026a3602000b200041133602000c370b200041133602000c360b200041086a20022902e4073702002000200136020420004103360200200041106a200241e8086a41f800109a051a0c350b20024188066a41206a200241e0076a41206a290300220a37030020024188066a41186a200241e0076a41186a290300221137030020024188066a41106a200241e0076a41106a290300221237030020024188066a41086a200241e0076a41086a2903002213370300200220022903e00722163703880620004109360200200020163702042000410c6a2013370200200041146a20123702002000411c6a2011370200200041246a200a3702002000412c6a200241e8086a41dc00109a051a0c340b20024188066a41206a200241e0076a41206a290300220a37030020024188066a41186a200241e0076a41186a290300221137030020024188066a41106a200241e0076a41106a290300221237030020024188066a41086a200241e0076a41086a2903002213370300200220022903e0072216370388062000410a360200200020163702042000410c6a2013370200200041146a20123702002000411c6a2011370200200041246a200a3702002000412c6a200241e8086a41dc00109a051a0c330b1036000b200420031044000b200420031044000b200441041037000b200420031044000b200320091044000b201041041037000b200441041037000b200420061044000b200b41041037000b200441041037000b202041041037000b200420061044000b200420051044000b200420031044000b200b20071044000b200b20031044000b41880141081037000b41880141081037000b200520031044000b200441041037000b200420061044000b201b41041037000b200441011037000b200441011037000b41880141081037000b41880141081037000b41880141081037000b41880141081037000b200441011037000b200541011037000b02402005450d00200c102a0b02402010450d002010410c6c2104200e210103400240200141046a280200450d002001280200102a0b2001410c6a2101200441746a22040d000b0b200f450d02200e102a0c020b2005450d010b200c102a0b200041133602000c100b200041133602000c0f0b20024188066a41106a221e200241e0076a41106a29030037030020024188066a41086a2220200241e0076a41086a290300370300200220022903e00737038806200041346a200b360200200041306a201b3602002000412c6a2004360200200020053a002b200020063a002a2000200f3a0029200041256a2008360000200041216a200d360000200041206a200e3a0000200041186a200a370200200041106a20113700002000410c6a20093600002000201a3a000b200020193a000a200020103a0009200041086a20223a000020004110360200200041d0006a2012370200200041e9006a2003360000200041ed006a2001360000200041f4006a2007360200200041f8006a201837020020004180016a20133702002000200c3a00732000201f3a00722000201c3a0071200041e8006a201d3a0000200041d8006a2017370200200041e0006a2016370200200041386a200229038806370200200041c0006a2020290300370200200041c8006a201e2903003702000c0e0b2000410f360200200041386a200a370200200041306a2011370200200041286a2012370200200041206a20133702002000411c6a2001360200200041186a2004360200200041146a2003360200200041106a20053602002000410c6a2006360200200041086a2007360200200041c0006a200241e8086a41c800109a051a0c0d0b2000200e3600412000200936003d200020053a0027200020033a0026200020043a0025200020193a00072000201f3a00062000200d3a00052000201c3a00042000410c360200200041346a20113700002000412c6a200a3700002000413c6a20073a0000200041286a2006360000200041216a200b3600002000411d6a200f3600002000411c6a201b3a0000200041146a2012370000200041106a201a3600002000410c6a2010411874200c41ffffff077172360000200041086a2008411874200141ffffff07717236000020004180016a200241a0096a290300370300200041f8006a20024198096a290300370300200041f0006a200241e8086a41286a290300370300200041e8006a20024188096a290300370300200041e0006a200241e8086a41186a290300370300200041d8006a200241e8086a41106a290300370300200041d0006a200241e8086a41086a290300370300200041c8006a20022903e8083703000c0c0b200041133602000c0b0b2000410b360200200041c0006a2011370200200041386a200a370200200041286a2012370200200041206a2013370200200041346a2009360200200041306a20083602002000411c6a2007360200200041186a2006360200200041146a2005360200200041106a20033602002000410c6a2004360200200041086a2001360200200041c8006a20022903e808370300200041d0006a200241e8086a41086a290300370300200041d8006a200241e8086a41106a290300370300200041e0006a200241e8086a41186a290300370300200041e8006a200241e8086a41206a290300370300200041f0006a200241e8086a41286a290300370300200041f8006a200241e8086a41306a29030037030020004180016a200241e8086a41386a2903003703000c0a0b2004102a0b200041133602000c080b4100211f4200210a0c010b4100211f4200210a0b200020093a0029200020103a000b2000200d3a000a200020083a000920004108360200200041186a200a370200200041346a4100360200200041306a20193602002000412c6a200c360200200041256a200b360000200041216a200f360000200041206a200e3a0000200041086a201a3a00002000410c6a201c411874200641ffffff077172360200200041106a201fad422086201bad84370200200041386a20024188066a41d000109a051a0c050b200041133602000c040b200041133602000c030b200020083a002b2000200d3a002a2000200c3a0029200020093a000920004106360200200041386a2013370200200041306a2012370200200041186a2011370200200041106a200a3702002000412c6a200b360200200041216a200f360000200041206a200e3a00002000410c6a2006360200200041086a20103a0000200041256a201b201a41ff017172360000200041c0006a200241e8086a41c800109a051a0c020b1031000b20004100360200200041106a200a3702002000410c6a2005360200200041086a2009360200200041186a200241e8086a41f000109a051a0b200241f0096a24000bf602010b7f230041106b22022400200241086a2001106c0240024002400240024020022802080d0020012802042203417c712204417f4c0d02200228020c210502400240200341027622060d00410421070c010b200410282207450d040b02402005450d0041002108410021094100210403400240024002402001280204220a4104490d00200441016a21032001280200220b280000210c2001200a417c6a3602042001200b41046a36020020042006470d02024020082003200820034b1b220641ffffffff03712006470d002006410274220a41004e0d020b1031000b200041003602002006450d052007102a0c050b0240024020040d00200a102821070c010b20072009200a102c21070b2007450d070b200720096a200c360200200841026a2108200941046a21092003210420052003470d000b0b2000200636020420002007360200200041086a20053602000c010b200041003602000b200241106a24000f0b1036000b200441041037000b200a41041037000bbf0701107f230041f0006b22032400200341206a2001200228020c22041102000240024020032802200d002000410036020820004201370200200120022802001103002002280204450d012001102a0c010b200341c8006a41106a200341206a41106a290300370300200341c8006a41086a200341206a41086a290300370300200341c8006a41186a200341206a41186a290300370300200341c8006a41206a200341206a41206a280200360200200341086a200341d4006a290200370300200341106a200341dc006a290200370300200341186a200341e4006a290200370300200320032903203703482003200329024c370300200341c8006a2001200228021022051102000240417f2003280248220641016a220720072006491b220641ffffff3f712006470d0020064105742207417f4c0d004101210841012109024002402007450d00200710282209450d010b20092003290300370000200941186a200341186a220a290300370000200941106a200341106a220b290300370000200941086a200341086a220c290300370000200341206a200120041102000240024020032802200d002006210d0c010b200341c8006a41047221074120210e410121080340200341c8006a41206a200341206a41206a280200360200200341c8006a41186a220f200341206a41186a290300370300200341c8006a41106a2210200341206a41106a290300370300200341c8006a41086a2211200341206a41086a29030037030020032003290320370348200c200741086a290000370300200b200741106a290000370300200a200741186a29000037030020032007290000370300200f200a2903003703002010200b2903003703002011200c290300370300200320032903003703480240024020082006460d002006210d0c010b200341206a2001200511020002402006417f2003280220220d41016a22122012200d491b6a220d2006490d0020064101742212200d2012200d4b1b220d41ffffff3f71200d470d00200d41057422124100480d000240024020060d002012102821090c010b200920064105742012102c21090b20090d01201241011037000b1031000b2009200e6a22062003290348370000200641186a200f290300370000200641106a2010290300370000200641086a2011290300370000200341206a20012004110200200e41206a210e200841016a2108200d210620032802200d000b0b2001200228020011030002402002280204450d002001102a0b200020083602082000200d360204200020093602000c020b200741011037000b1036000b200341f0006a24000bad08040c7f017e057f037e23004180016b22022400024002400240200141086a220328020022042001410c6a2802002205460d002001280210220628020021072006280208220841014b210903402003200441206a220a360200200241e0006a41186a200441186a290000370300200241e0006a41106a200441106a290000370300200241e0006a41086a200441086a29000037030020022004290000370360410021040240024020090d0020080e020401040b2008210b0340200b410176220c20046a220d20042007200d4105746a200241e0006a4120109c054101481b2104200b200c6b220b41014b0d000b0b200720044105746a200241e0006a4120109c050d02200a2104200a2005470d000b0b20004100360208200042013702002001280204450d012001280200102a0c010b200241c0006a41086a2204200241e0006a41086a290300370300200241c0006a41106a220b200241e0006a41106a290300370300200241c0006a41186a220c200241e0006a41186a29030037030020022002290360220e3703002002200e370340024041201028220f450d00200f2002290340370000200f41186a200c290300370000200f41106a200b290300370000200f41086a2004290300370000200128020421102001280200211102400240200a2005470d0041012112410121130c010b41012112410121130340200628020821032006280200210702400340200241e0006a41186a2208200a41186a290000370300200241e0006a41106a2209200a41106a290000370300200241e0006a41086a2201200a41086a2900003703002002200a290000370360200a41206a210a4100210402400240200341014b0d0020030e020301030b2003210b0340200b410176220c20046a220d20042007200d4105746a200241e0006a4120109c054101481b2104200b200c6b220b41014b0d000b0b200720044105746a200241e0006a4120109c050d01200a2005470d000c030b0b200241c0006a41086a2001290300220e370300200241c0006a41106a20092903002214370300200241c0006a41186a20082903002215370300200220022903602216370340200241186a220b2015370300200241106a220c2014370300200241086a220d200e37030020022016370300024020132012470d000240201241016a22042012490d00201241017422072004200720044b1b221341ffffff3f712013470d00201341057422044100480d000240024020120d0020041028210f0c010b200f20124105742004102c210f0b200f0d01200441011037000b1031000b200f20124105746a22042002290300370000200441186a200b290300370000200441106a200c290300370000200441086a200d290300370000201241016a2112200a2005470d000b0b02402010450d002011102a0b20002012360208200020133602042000200f3602000c010b412041011037000b20024180016a24000bce0401057f23004180016b2202240002400240024020012802042203200128020022046b41e100490d0003402001200441206a360200200241206a2004108601024020022802602204450d00200241206a21010c030b20012001280200220441206a360200200241206a2004108601024020022802602204450d00200241206a21010c030b20012001280200220441206a360200200241206a2004108601024020022802602204450d00200241206a21010c030b20012001280200220441206a360200200241206a2004108601024020022802602204450d00200241206a21010c030b20012802042203200128020022046b41e0004b0d000b0b024020042003460d0003402001200441206a360200200241206a2004108601024020022802602204450d00200241206a21010c030b200128020022042001280204470d000b0b200041003602400c010b20002001290300370300200041386a200141386a290300370300200041306a200141306a290300370300200041286a200141286a290300370300200041206a200141206a290300370300200041186a200141186a290300370300200041106a200141106a290300370300200041086a200141086a290300370300200241086a2203200141cc006a290200370300200241106a2205200141d4006a290200370300200241186a2206200141dc006a2802003602002002200141c4006a2902003703002000200436024020002002290300370244200041cc006a2003290300370200200041d4006a2005290300370200200041dc006a20062802003602000b20024180016a24000bf00c030c7f017e067f230041a0026b22022400024002400240411010282203450d002003410029008ab740370000200341086a4100290092b7403700002002429080808080023702e401200220033602e0012002200241e0016a3602a0012001200241a0016a10c80120022802e001210320022802e8012101200241f8006a41186a22044200370300200241f8006a41106a22054200370300200241f8006a41086a220642003703002002420037037820032001200241f8006a1000200241d8006a41186a2004290300370300200241d8006a41106a2005290300370300200241d8006a41086a200629030037030020022002290378370358024020022802e401450d0020022802e001102a0b200241003602e001200241d8006a4120200241e0016a1006210420022802e0012205417f460d012004450d012002200536029c01200220043602980141002103200241003a0038024002400340024020052003470d002002410036029c01200341ff0171450d02200241003a00380c020b200241186a20036a200420036a22012d00003a00002002200141016a360298012002200341016a22013a00382001210320014120470d000b200241f8006a41086a2206200241186a41086a2207290300370300200241f8006a41106a2208200241186a41106a2209290300370300200241f8006a41186a220a200241186a41186a220b290300370300200220022903183703782002200520016b36029c01200241186a20024198016a10d40120022802382203450d00200241e0016a41186a220c200a290300370300200241e0016a41106a220a2008290300370300200241e0016a41086a220d2006290300370300200241e0016a41286a22062007290300370300200241e0016a41306a22072009290300370300200241e0016a41386a2208200b290300370300200220022903783703e00120022002290318370380022002413c6a2802002101200241186a41286a2209290300210e200241a0016a41086a200d290300370300200241a0016a41106a200a290300370300200241a0016a41186a200c290300370300200241a0016a41206a220a200229038002370300200241a0016a41286a220b2006290300370300200241a0016a41306a220c2007290300370300200241a0016a41386a220d2008290300370300200220022903e0013703a001200241186a20024198016a106d20022802180d012001450d002003102a0b41c4d1c3004133200241a0016a419cd9c3001038000b200241f8006a41086a220f200241186a41086a2210280200360200200241e0016a41086a2211200241a0016a41086a290300370300200241e0016a41106a2212200241a0016a41106a290300370300200241e0016a41186a2213200241a0016a41186a290300370300200241e0016a41206a2214200a2903003703002006200b2903003703002007200c2903003703002008200d29030037030020022002290318370378200220022903a0013703e00120102011290300370300200241186a41106a2012290300370300200241186a41186a2013290300370300200241186a41206a201429030037030020092006290300370300200241186a41306a2007290300370300200241186a41386a2008290300370300200241086a41086a200f280200360200200220022903e001370318200220022903783703082005450d022004102a0c020b411041011037000b410021030b200241e0016a41086a2204200241186a41086a290300370300200241e0016a41106a2205200241186a41106a290300370300200241e0016a41186a2206200241186a41186a290300370300200241e0016a41206a2207200241186a41206a290300370300200241e0016a41286a2208200241186a41286a290300370300200241e0016a41306a2209200241186a41306a290300370300200241e0016a41386a220a200241186a41386a290300370300200220022903183703e001200241a0016a41086a220b200241086a41086a280200360200200220022903083703a00102402003450d00200020022903e00137030020002001360244200041c8006a200e370200200041386a200a290300370300200041306a2009290300370300200041286a2008290300370300200041206a2007290300370300200041186a2006290300370300200041106a2005290300370300200041086a2004290300370300200041d8006a200b280200360200200041d0006a20022903a0013702000b20002003360240200241a0026a24000bb00705077f037e097f017e017f23004180016b22022400024002400240200141086a220328020022042001410c6a2802002205460d0020012802102106200241f4006a2107034020032004220841206a2204360200200841086a2903002109200841106a290300210a2008290300210b200241e0006a41186a200841186a290300370300200241e0006a41106a200a370300200241e0006a41086a20093703002002200b3703600240200aa720062802004d0d002001280214220c2007460d002007290000200c290000520d030b20052004470d000b0b20004100360208200042083702002001280204450d012001280200102a0c010b200241086a2204200241e0006a41086a290300370300200241106a2203200241e0006a41106a290300370300200241186a2207200241e0006a41186a29030037030020022002290360220a3703202002200a3703000240024002400240024041201028220d450d00200d2002290300370300200d41186a2007290300370300200d41106a2003290300370300200d41086a20042903003703002001280204210e2001280200210f200541606a2008460d03200841206a2110200541606a2111200241f4006a21014101211241012113200d21140340200c2001460d042010210802400340200241e0006a41186a2204200841186a290300370300200241e0006a41106a2203200841106a290300220a370300200241e0006a41086a2207200841086a290300370300200220082903003703600240200aa720062802004d0d002001290000200c290000520d020b2005200841206a2208470d000c070b0b200241206a41086a2007290300220a370300200241206a41106a20032903002209370300200241206a41186a2004290300220b3703002002200229036022153703202004200b370300200320093703002007200a37030020022015370360024020132012470d00201241016a22132012490d04201241017422102013201020134b1b221341ffffff3f712013470d04201341057422104100480d040240024020120d002010102821140c010b201420124105742010102c21140b2014450d030b200841206a2110201420124105746a22162002290360370300201641186a2004290300370300201641106a2003290300370300201641086a2007290300370300201241016a211220112008470d000c050b0b412041081037000b201041081037000b1031000b4101211241012113200d21140b0240200e450d00200f102a0b2000201236020820002013360204200020143602000b20024180016a24000bed0704067f017e0a7f027e230041f0006b22032400200341206a2001200228020c22041102000240024020032802200d002000410036020820004208370200200120022802001103002002280204450d012001102a0c010b200341c8006a41106a200341206a41106a290300370300200341c8006a41086a200341206a41086a290300370300200341c8006a41186a200341206a41186a290300370300200341c8006a41206a200341206a41206a280200360200200341086a200341d4006a290200370300200341106a200341dc006a290200370300200341186a200341e4006a290200370300200320032903203703482003200329024c370300200341c8006a2001200228021022051102000240024002400240417f2003280248220641016a220720072006491b2208ad42287e2209422088a70d002009a72206417f4c0d000240024020060d004108210a4108210b0c010b20061028220a450d02200a210b0b200a2003290300370300200a41186a200341186a220c290300370300200a41106a200341106a220d290300370300200a41086a200341086a290300370300200b4201370320200341206a200120041102000240024020032802200d004101210e0c010b200341c8006a410472210641c800210f4101210e0340200341c8006a41206a200341206a41206a280200360200200341c8006a41186a2210200341206a41186a290300370300200341c8006a41106a2211200341206a41106a290300370300200341c8006a41086a2212200341206a41086a29030037030020032003290320370348200341086a2207200641086a290200370300200d200641106a290200370300200c200641186a290200370300200320062902003703002010200c2903003703002011200d29030037030020122007290300370300200320032903003703480240200e2008470d00200341206a200120051102002008417f2003280220220741016a221320132007491b6a22072008490d06200841017422132007201320074b1b2213ad42287e2209422088a70d062009a722074100480d060240024020080d0020071028210a0c010b200a200841286c2007102c210a0b200a450d05200a210b201321080b200b200f6a221341606a2207200329034837030020122903002109201129030021142010290300211520134201370300200741186a2015370300200741106a2014370300200741086a2009370300200341206a20012004110200200f41286a210f200e41016a210e20032802200d000b0b2001200228020011030002402002280204450d002001102a0b2000200e360208200020083602042000200b3602000c040b1036000b200641081037000b200741081037000b1031000b200341f0006a24000b02000bef0101057f230041c0006b220524000240024020030d00200041003602000c010b2003280208210620032802002103200541206a41186a22074200370300200541206a41106a22084200370300200541206a41086a220942003703002005420037032020044120200541206a1000200541186a2007290300370300200541106a2008290300370300200541086a200929030037030020052005290320370300200541003602202003200620054120200541206a10012104024020052802202203417f460d002000200336020420002004360200200041086a20033602000c010b200041003602000b200541c0006a24000baf0201027f23004190016b2203240020032002108c010240024020032d000022024102470d00200041003a00000c010b200341e0006a200341286a290300370300200341e8006a200341306a290300370300200341d8006a41186a200341386a290300370300200341d8006a41206a200341c0006a290300370300200341d8006a41286a200341c8006a290300370300200341d8006a41306a200341d0006a2802003602002003200341206a29030037035802402002450d00200041003a00000c010b2003411c6a2802002102200341186a28020021042000200329026c370001200041013a0000200041196a20034184016a290200370000200041116a200341fc006a290200370000200041096a200341d8006a411c6a2902003700002002450d002004102a0b20034190016a24000bd60201057f230041d0016b220224000240411710282203450d00200341002900f1d8433700002003410f6a4100290080d943370000200341086a41002900f9d84337000020024297808080f00237027c200220033602782001200241f8006a108f01200228028001210320022802782101200241186a22044200370300200241106a22054200370300200241086a22064200370300200242003703002001200320021000200241d8006a41186a2004290300370300200241d8006a41106a2005290300370300200241d8006a41086a2006290300370300200220022903003703580240200228027c450d002002280278102a0b2002200241d8006a10960220022d00002103200241f8006a200241017241d700109a051a0240024020034102470d00200041023a00000c010b200020033a0000200041016a200241f8006a41d700109a051a0b200241d0016a24000f0b411741011037000b870102017f037e230041e0006b22032400200341086a2002108c010240024020032d000822024102470d00420021040c010b2002410173ad2104200341186a2903002105200341106a290300210620020d00200341246a280200450d00200341206a280200102a0b2000200637030820002004370300200041106a2005370300200341e0006a24000b940201057f230041d0006b220224000240411710282203450d00200341002900f1d8433700002003410f6a4100290080d943370000200341086a41002900f9d84337000020024297808080f002370224200220033602202001200241206a108f012002280228210320022802202101200241306a41186a22044200370300200241306a41106a22054200370300200241306a41086a220642003703002002420037033020012003200241306a1000200241186a2004290300370300200241106a2005290300370300200241086a20062903003703002002200229033037030002402002280224450d002002280220102a0b2002412041014100410010032103200241d0006a24002003417f470f0b411741011037000b952801057f02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141046a2202280200200141086a22032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0120012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00003a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0220012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00013a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0320012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00023a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0420012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00033a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0520012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00043a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0620012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00053a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0720012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00063a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0820012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00073a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0920012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00083a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0a20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00093a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0b20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d000a3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0c20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d000b3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0d20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d000c3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0e20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d000d3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0f20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d000e3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1020012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d000f3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1120012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00103a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1220012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00113a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1320012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00123a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1420012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00133a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1520012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00143a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1620012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00153a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1720012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00163a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1820012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00173a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1920012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00183a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1a20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00193a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1b20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d001a3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1c20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d001b3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1d20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d001c3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1e20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d001d3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1f20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d001e3a000002400240200228020020032802002202460d00200128020021040c010b200241016a22042002490d21200241017422052004200520044b1b22054100480d210240024020020d002005102821040c010b200128020020022005102c21040b2004450d2020012004360200200141046a2005360200200141086a28020021020b2003200241016a360200200420026a20002d001f3a00000f0b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200541011037000b1031000b3802017f017e230041106b2203240020032002109101200329030021042000200341086a29030037030820002004370300200341106a24000bf40202057f027e230041d0006b2202240002400240411410282203450d00200341002900cfe140370000200341106a41002800dfe140360000200341086a41002900d7e14037000020024294808080c002370224200220033602202001200241206a108f012002280228210320022802202101200241306a41186a22044200370300200241306a41106a22054200370300200241306a41086a220642003703002002420037033020012003200241306a1000200241186a2004290300370300200241106a2005290300370300200241086a20062903003703002002200229033037030002402002280224450d002002280220102a0b2002410036023020024120200241306a100621030240024020022802302201417f470d0042002107420021080c010b20014110490d02200341086a2900002108200329000021072003102a0b2000200737030020002008370308200241d0006a24000f0b411441011037000b41c4d1c3004133200241306a419cd9c3001038000bbc200b067f017e0d7f067e047f037e017f027e0d7f027e067f230041c0046b22022400200241186a42003703002002420037031020024200370308200128020821032001280200210402400240200128020422050d00200421010c010b2005210620042101034020012802880b21012006417f6a22060d000b0340200420042f01064102746a41880b6a28020021042005417f6a22050d000b0b200241106a21072002413c6a20042f0106360200200241206a41186a4100360200200241346a2004360200200220033602402002410036023020024200370328200220013602242002410036022020024188016a200241206a109301024002400240024020022903a80122084202510d00200241bc016a210920024188016a412c6a210a20024188016a410472210b200241e5016a210c20024188016a41086a2103200241e8026a412c6a210d200241e8026a41106a210e200241b8016a210f200241d0016a21100340200241e8006a41186a220620024188016a41186a2201290300370300200241e8006a41106a221120024188016a41106a2204290300370300200241e8006a41086a22122003290300370300200241c8006a41086a2213200c41086a290000370300200241c8006a41106a2214200c41106a290000370300200241c8006a41186a2215200c41186a29000037030020022002290388013703682002200c290000370348200f29030021162010290300211720022903b001211820022903c801211920022903c001211a20022903d801211b20022802e001211c20022d00e401211d20022d008502210520024188026a41186a200629030037030020024188026a41106a201129030037030020024188026a41086a20122903003703002002200229036837038802200241a8026a41186a22122015290300370300200241a8026a41106a221e2014290300370300200241a8026a41086a221f2013290300370300200220022903483703a8020240024002402005ad42ff0183200820085022061b4201520d0020024188016a20024188026a4200201820061b4200201620061b10940120042903002120200229039001211820022d00a00121062002290388012121200241086a41106a221129030021082002290310211602400240024002400240024020022903084201510d0020214200510d022016201856200820205620082020511b0d04202020087d2018201654ad7d2121201820167d21220c010b20214200510d02427f200820207c201620187c22182016542213ad7c22162013201620085420162008511b22131b2121427f201820131b21220b420121080c030b427f200820207c201620187c22182016542213ad7c22162013201620085420162008511b22131b2121427f201820131b2122420021080c020b202020087d2018201654ad7d200820207d2016201854ad7d20182016562020200856202020085122131b22141b2121201820167d201620187d20141b21222018201658202020085820131bad21080c010b200820207d2016201854ad7d2121201620187d2122420021080b201120213703002002202237031020022008370308200641ff01710d010b024002400240201d41ff0171222341014622060d00200541ff01710d00201c201aa772450d010b20024188016a20024188026a108c010240024020022d0088012211417f6a221341014b0d00024020130e020002000b20110d0420022802a401450d0420022802a001102a0c040b200241c8026a41086a200941086a290200370300200241c8026a41106a200941106a290200370300200241c8026a41186a200941186a290200370300200220092902003703c80220042903002124200229039001212520022802dc01212620022802b801212720022802b401212820022802b001212920022802ac01212a20022802a801212b20022802a401212c20022802a001212d0c020b4102212820110d0120022802a401450d0120022802a001102a0c010b201ba7210402400240201b422088a722050d00200421010c010b2005210620042101034020012802ec0321012006417f6a22060d000b0340200420042f01064102746a41ec036a28020021042005417f6a22050d000b0b2002201c3602a801200241003602a001200241003602980120024200370390012002200136028c0120024100360288012002200436029c01200220042f01063602a40120024188016a1095010c020b4102212e02400240024002400240024002400240024020284102460d00202b417f4c0d0102400240202b0d004100212f410121300c010b202b212f202b10282230450d030b2030202d202b109a051a2001200241c8026a41186a2903003703002004200241c8026a41106a2903003703002003200241c8026a41086a290300370300200220022903c802370388012028410146212e202b2131202a2132202521332024213420292135202721360b200241b8036a41186a22372001290300370300200241b8036a41106a22382004290300370300200241b8036a41086a22392003290300370300200241a0046a41086a221d201f290300370300200241a0046a41106a2214201e290300370300200241a0046a41186a2215201229030037030020022002290388013703b803200220022903a8023703a004200541ff0171450d030c020b1036000b202b41011037000b202e4102460d0120302031100420060d0320024188026a109601202f450d022030102a0c020b202e4102460d00200d20022903b803370200200d41086a2039290300370200200d41106a2038290300370200200d41186a2037290300370200200220333703e80220022036360290032002202e36028c032002203536028803200220323602840320022031360280032002202f3602fc02200220303602f802200220343703f0022035213a2033212020342121203221110c030b2006450d004108211120024188016a20024188026a109701109801213a200e41086a20024188016a41086a280200360200200e200229038801370200200d20022903a004370100200d41086a200241a0046a41086a290300370100200d41106a2014290300370100200d41186a2015290300370100427f21202002427f3703f0022002427f3703e80220024108360284034100212e2002410036028c032002203a36028803427f21210c020b20284102460d020240202c0d004100212c0c030b202d102a0c020b4108211120024188016a20024188026a109701109801213a200e41086a20024188016a41086a280200360200200e200229038801370200200d20022903a004370100200d41086a200241a0046a41086a290300370100200d41106a2014290300370100200d41186a2015290300370100427f21202002427f3703f0022002427f3703e80220024108360284034100212e2002410036028c032002203a360288030240202f450d002030102a427f21200b427f21210b0240201a4201520d00200220193703e802200220173703f00220192120201721210b02402023450d00200d20022903a802370000200d41186a2012290300370000200d41106a201e290300370000200d41086a201f2903003700000b0240201c450d0010980121054101212e2002410136028c0320022005360290030b201ba7210502400240201b422088a722120d00200521060c010b2012211320052106034020062802ec0321062013417f6a22130d000b0340200520052f01064102746a41ec036a28020021052012417f6a22120d000b0b20052f010621122002201c3602d803200220123602d403200241003602d003200220053602cc03200241003602c803200242003703c003200220063602bc03200241003602b80320024188016a200241b8036a10990102402002280288014101470d00200228028003211320022802f802211c0340200241e0036a41186a200b41186a2902002208370300200241e0036a41106a200b41106a290200221b370300200241e0036a41086a200b41086a29020022163703002002200b29020022183703e00320022802ac01210520022802b001211e20022802b401210620024180046a41186a200837030020024180046a41106a201b37030020024180046a41086a20163703002002201837038004200142003703002004420037030020034200370300200242003703880120024180046a412020024188016a10002015200129030037030020142004290300370300201d200329030037030020022002290388013703a0042002410036028801201c2013200241a0046a412020024188016a1001211f02402002280288012212417f460d00201120126b21112012450d00201f102a0b0240024020050d00200142003703002004420037030020034200370300200242003703880120024180046a412020024188016a10002015200129030037030020142004290300370300201d200329030037030020022002290388013703a004201c2013200241a0046a412010020c010b200142003703002004420037030020034200370300200242003703880120024180046a412020024188016a10002015200129030037030020142004290300370300201d200329030037030020022002290388013703a004201c2013200241a0046a4120200520061005201120066a2111201e450d002005102a0b20024188016a200241b8036a1099012002280288014101460d000b20022011360284030b200241b8036a1095012037200241c8026a41186a2903003703002038200241c8026a41106a2903003703002039200241c8026a41086a290300370300200220022903c8023703b8030240024020284102460d00200a20022903b803370200200a41086a2039290300370200200a41106a2038290300370200200a41186a20372903003702002002202537038801200220273602b001200220283602ac01200220293602a8012002202a3602a4012002202c36029c012002202d36029801200220263602d40120022024370390012002202b3602a001410121040240202b200228028003470d0002400240202d20022802f8022201460d00202d2001202b109c050d02202a2011470d020c010b202a2011470d010b200a200d4120109c050d0020252020852024202185844200520d002029203a470d0002402028202e470d004100210420284101470d012027200228029003460d010b410121040b0240202c450d00202d102a0b20044102460d002004450d010b2003200241e8026a41d000109a051a200241003a00880120024188026a20024188016a109a010c020b20022802fc02450d0120022802f802102a0c010b201ba7210402400240201b422088a722050d00200421010c010b2005210620042101034020012802ec0321012006417f6a22060d000b0340200420042f01064102746a41ec036a28020021042005417f6a22050d000b0b2002201c3602a801200241003602a001200241003602980120024200370390012002200136028c0120024100360288012002200436029c01200220042f01063602a40120024188016a1095010b20024188016a200241206a10930120022903a80122084202520d000b20022903082108200241206a109b012008500d010c020b200241206a109b010b02402002290310200241186a29030084500d0041f4b5c0001032000b20022903084200520d00200220073602880120024188016a109c010c010b200220073602880120024188016a109d010b200241c0046a24000bf90503087f017e017f23004180026b2202240002400240024020012802202203450d0020012003417f6a36022020012802082104200128020c2203200128020422052f01064f0d01200241186a2206200520034105746a220741206a290000370300200241106a2208200741186a290000370300200241086a2209200741106a2900003703002002200741086a290000370300200241206a2005200341e0006c6a41e8026a41e000109a051a2001200341016a36020c200120043602082001200536020420024180016a41186a200629030037030020024180016a41106a200829030037030020024180016a41086a2009290300370300200220022903003703800120024180016a41206a200241206a41e000109a051a200020024180016a418001109a051a0c020b200042023703200c010b2001280200210702400240200528020022030d002004ad210a410021030c010b200741016a210720053301044220862004ad84210a0b2005102a200aa7210402400240200a422088a7220620032f01064f0d00200321050c010b034002400240200328020022050d002004ad210a410021050c010b200741016a210720033301044220862004ad84210a0b2003102a200aa7210420052103200a422088a7220620052f01064f0d000b0b200241186a2208200520064105746a220341206a290000370300200241106a2209200341186a290000370300200241086a220b200341106a2900003703002002200341086a290000370300200241206a2005200641e0006c6a41e8026a41e000109a051a200641027420056a418c0b6a280200210302402007417f6a2205450d00034020032802880b21032005417f6a22050d000b0b2001410036020c20012004360208200120033602042001410036020020024180016a41186a200829030037030020024180016a41106a200929030037030020024180016a41086a200b290300370300200220022903003703800120024180016a41206a200241206a41e000109a051a200020024180016a418001109a051a0b20024180026a24000ba90703067f027e017f230041a0016b220424000240024002400240411410282205450d00200541002900cfe140370000200541106a41002800dfe140360000200541086a41002900d7e14037000020044294808080c002370224200420053602202001200441206a108f012004280228210520042802202106200441306a41186a22074200370300200441306a41106a22084200370300200441306a41086a220942003703002004420037033020062005200441306a1000200441186a2007290300370300200441106a2008290300370300200441086a20092903003703002004200429033037030002402004280224450d002004280220102a0b2004410036023020044120200441306a100621050240024020042802302206417f470d004200210a4200210b0c010b20064110490d02200541086a290000210b2005290000210a2005102a0b0240200242ffffe883b1de1656200342005220035022051b0d00200a200b844200520d0020004200370300200041013a0018200041106a4200370300200041086a42003703000c040b4101210602402002428080e983b1de1654410020051b0d00411410282205450d0341002106200541002900cfe140370000200541106a41002800dfe140360000200541086a41002900d7e14037000020044294808080c002370224200420053602202001200441206a108f012004280228210520042802202107200441306a41186a22084200370300200441306a41106a22094200370300200441306a41086a220c42003703002004420037033020072005200441306a1000200441186a2008290300370300200441106a2009290300370300200441086a200c2903003703002004200429033037030002402004280224450d002004280220102a0b200441204101410041001003417f470d002001109302200441e8006a2003370300200441e0006a200237030041002106200441306a41086a41003a0000200441396a2001290000370000200441c1006a200141086a290000370000200441c9006a200141106a290000370000200441d1006a200141186a290000370000200441023a003041014100200441306a10cc010b200120022003108f02200041106a200b20037d200a200254ad7d2003200b7d2002200a54ad7d200a200256200b200356200b2003511b22051b3703002000200a20027d2002200a7d20051b370308200020063a001820002005ad3703000c030b411441011037000b41c4d1c3004133200441306a419cd9c3001038000b411441011037000b200441a0016a24000bb00101037f230041306b2201240020012000109901024020012802004101470d000340024020012802242202450d002001280228450d002002102a0b2001200010990120012802004101460d000b0b02402000280204220241f8b9c000460d00200228020021032002102a2003450d00200328020021002003102a2000450d00024020002802002202450d0003402000102a2002210020022802002203210220030d000b0b2000102a0b200141306a24000b870201057f230041d0006b220124000240411710282202450d00200241002900f1d8433700002002410f6a4100290080d943370000200241086a41002900f9d84337000020014297808080f002370224200120023602202000200141206a108f012001280228210220012802202100200141306a41186a22034200370300200141306a41106a22044200370300200141306a41086a220542003703002001420037033020002002200141306a1000200141186a2003290300370300200141106a2004290300370300200141086a20052903003703002001200129033037030002402001280224450d002001280220102a0b200141201009200141d0006a24000f0b411741011037000ba60603037f017e017f230041c0006b22022400200241206a41086a220342003703002002420037032041d8fec5004117200241206a1008200241086a2003290300370300200220022903203703002002410036022020024110200241206a1006210302400240024002400240024020022802202204417f470d00420121050c010b024020030d00420121050c010b20044108490d01200329000021052003102a200542017c21050b200241206a41086a220342003703002002420037032041d8fec5004117200241206a1008200241086a2003290300370300200220022903203703002002200537032020024110200241206a41081007412010282203450d0120032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003412041c000102c2201450d0220012005370020200241206a41186a22034200370300200241206a41106a22044200370300200241206a41086a220642003703002002420037032020014128200241206a1000200241186a2003290300370300200241106a2004290300370300200241086a200629030037030020022002290320370300413710282203450d03200342bac6a1cbc68dd9aff300370000200342f4dec98bf6ac999de400370008200341e5cc85ab073600102003413a3a0016200341ece8013b001420032002290300370017200320022f01083b001f2003200228010a360021200320022f010e3b0025200320022d00103a0027200320022d00113a0028200320022d00123a0029200320022d00133a002a200320022d00143a002b200320022d00153a002c200320022d00163a002d200320022d00173a002e200320022d00183a002f200320022d00193a0030200320022d001a3a0031200320022d001b3a0032200320022d001c3a0033200320022d001d3a0034200320022d001e3a0035200320022d001f3a0036200041ed93c40041c593c4006b410f6a36020820004137360204200020033602002001102a200241c0006a24000f0b41c4d1c3004133200241206a419cd9c3001038000b412041011037000b41c00041011037000b413741011037000ba70101047f230041206b22002400200041106a41086a220142003703002000420037031041d9efc200410d200041106a1008200041086a200129030037030020002000290310370300410021022000410036021020004110200041106a100621010240024020002802102203417f460d002001450d0020034104490d01200128000021022001102a0b200041206a240020020f0b41c4d1c3004133200041106a419cd9c3001038000bdd0605057f047e017f017e047f23004190016b2202240002400240024020012802202203450d0020012003417f6a36022020012802082104200128020c2203200128020422052f01064f0d01200241e0006a41186a200520034105746a220641206a2900002207370300200241e0006a41106a200641186a2900002208370300200241e0006a41086a200641106a29000022093703002002200641086a290000220a370360200241306a41086a20052003410c6c6a220641f0026a280200220b360200200641e8026a290200210c2001200341016a36020c20012004360208200120053602042002200c3703302000200a3702042000410c6a2009370200200041146a20083702002000411c6a2007370200200041246a200c3702002000412c6a200b360200200041013602000c020b200041003602000c010b2001280200210602400240200528020022030d002004ad210c410021030c010b200641016a210620053301044220862004ad84210c0b2005102a200ca7210402400240200c422088a7220b20032f01064f0d00200321050c010b034002400240200328020022050d002004ad210c410021050c010b200641016a210620033301044220862004ad84210c0b2003102a200ca7210420052103200c422088a7220b20052f01064f0d000b0b200241306a41186a220d2005200b4105746a220341206a290000370300200241306a41106a220e200341186a290000370300200241306a41086a220f200341106a2900003703002002200341086a290000370330200241d0006a41086a22102005200b410c6c6a220341f0026a2802003602002002200341e8026a290200370350200b41027420056a41f0036a280200210302402006417f6a2205450d00034020032802ec0321032005417f6a22050d000b0b2001410036020c200120043602082001200336020420014100360200200241e0006a41186a200d290300220c370300200241e0006a41106a200e2903002207370300200241e0006a41086a200f290300220837030020024188016a201028020022033602002000200229033022093702042000410c6a2008370200200041146a20073702002000411c6a200c370200200041246a2002290350220c3702002000412c6a2003360200200220093703602002200c37038001200041013602000b20024190016a24000ba70201057f230041d0006b220224000240411710282203450d00200341002900f1d8433700002003410f6a4100290080d943370000200341086a41002900f9d84337000020024297808080f002370224200220033602202000200241206a108f012002280228210320022802202100200241306a41186a22044200370300200241306a41106a22054200370300200241306a41086a220642003703002002420037033020002003200241306a1000200241186a2004290300370300200241106a2005290300370300200241086a20062903003703002002200229033037030002402002280224450d002002280220102a0b2002200110e203024020012d00000d002001411c6a280200450d00200141186a280200102a0b200241d0006a24000f0b411741011037000bca0201067f230041b0016b22012400200141086a2000109301024020012903284202510d000340200128026021022001280258210302400240200128025c22040d00200321050c010b2004210620032105034020052802ec0321052006417f6a22060d000b0340200320032f01064102746a41ec036a28020021032004417f6a22040d000b0b200120023602a801200141003602a001200141003602980120014200370390012001200536028c0120014100360288012001200336029c01200120032f01063602a40120014188016a109501200141086a200010930120012903284202520d000b0b02402000280204220341f8b9c000460d00200328020021042003102a2004450d00200428020021052004102a2005450d00024020052802002203450d0003402005102a2003210520032802002204210320040d000b0b2005102a0b200141b0016a24000bcf0204017f017e027f037e230041206b2201240042002102200141106a41086a220342003703002001420037031041ace1c0004116200141106a1008200141086a2003290300370300200120012903103703002001410036021020014110200141106a1006210302400240024020012802102204417f470d00420021050c010b20044110490d01200341086a2900002105200329000021022003102a0b2000280200220341086a290300210620032903002107200141106a41086a220342003703002001420037031041ace1c0004116200141106a1008200141086a2003290300370300200120012903103703002001427f200520067c200220077c22062002542203ad7c22022003200220055420022005511b22031b3703182001427f200620031b37031020014110200141106a41101007200141206a24000f0b41c4d1c3004133200141106a419cd9c3001038000bd00204017f017e027f037e230041206b2201240042002102200141106a41086a220342003703002001420037031041ace1c0004116200141106a1008200141086a2003290300370300200120012903103703002001410036021020014110200141106a1006210302400240024020012802102204417f470d00420021050c010b20044110490d01200341086a2900002105200329000021022003102a0b2000280200220341086a290300210620032903002107200141106a41086a220342003703002001420037031041ace1c0004116200141106a1008200141086a20032903003703002001200129031037030020014200200520067d2002200754ad7d2206200220077d2207200256200620055620062005511b22031b37031820014200200720031b37031020014110200141106a41101007200141206a24000f0b41c4d1c3004133200141106a419cd9c3001038000bb50404057f017e017f017e0240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a3602000240200441037122064103460d00024002400240024020060e03000102000b2004410276ad21070c020b41012106024020050d000c050b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d04200141fcff0371410276ad21070c010b410121060240200541034f0d000c040b200341036a2d0000210520032f0001210820012002417c6a3602042001200341046a3602002008200541107472410874200472220141808004490d032001410276ad21070b410021060c020b02402004410276220841044b0d000240024020080e050002020201000b20054104490d022003350001210720012002417b6a3602042001200341056a36020020074280808080045421060c030b20054108490d01200329000121072001200241776a3602042001200341096a3602002007428080808080808080015421060c020b200841046a220541084b0d002002417e6a2102200341026a2103410021044200210741012106034002402002417f470d000c030b2003417f6a310000210920012002360204200120033602002002417f6a2102200341016a210320092004410374413871ad862007842107200441016a220441ff01712005490d000b2007427f412820084103746b413871ad885821060c010b410121060b2000200737030820002006ad3703000bde0506067f017e017f017e017f017e230041206b220224000240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240200541037122074103460d0002400240024020070e03000102000b2005410276ad21080c040b410121072006450d0220042d0001210620012003417e6a3602042001200441026a3602002006410874200572220141ffff0371418002490d02200141fcff0371410276ad21080c030b4101210720064103490d01200441036a2d0000210620042f0001210920012003417c6a3602042001200441046a3602002009200641107472410874200572220141808004490d012001410276ad21080c020b024020054102762209410c4b0d0002400240024020090e0d00030303010303030303030302000b20064104490d052004350001210820012003417b6a3602042001200441056a36020020084280808080045421074200210a0c060b20064108490d04200429000121082001200341776a3602042001200441096a3602002008428080808080808080015421074200210a0c050b20064110490d03200441096a290000210a2004290001210820012003416f6a3602042001200441116a360200200a428080808080808080015421070c040b200941046a220641104b0d022003417e6a2103200441026a21044100210541012107200241186a210b420021084200210a03402003417f460d01200241106a2004417f6a3100004200200541037441f80071109d0520012003360204200120043602002003417f6a2103200441016a2104200b290300200a84210a20022903102008842108200541016a220541ff01712006490d000b2002427f427f41e80020094103746b41f80071109e052008200229030058200a200241086a290300220c58200a200c511b21070c030b0c020b4200210a410021070c010b410121070b20002008370308200041106a200a37030020002007ad370300200241206a24000b9e0701037f02400240024002400240024020002802002202413f4b0d0002400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d06200041017422042003200420034b1b22044100480d060240024020000d002004102821030c010b200128020020002004102c21030b2003450d0220012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a20024102743a00000f0b200241808001490d032002418080808004490d020c010b200441011037000b0240024002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102821030c010b200128020020022004102c21030b2003450d0120012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a00002000280200210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d05200241017422002004200020044b1b22004100480d050240024020020d002000102821020c010b200128020020022000102c21020b2002450d0220012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b200441011037000b200041011037000b024002400240200141046a2802002203200141086a28020022006b4104490d00200128020021030c010b200041046a22042000490d03200341017422002004200020044b1b22004100480d030240024020030d002000102821030c010b200128020020032000102c21030b2003450d0120012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20024102744102723600000f0b200041011037000b024002400240200141046a2802002203200141086a28020022006b4102490d00200128020021030c010b200041026a22042000490d02200341017422002004200020044b1b22004100480d020240024020030d002000102821030c010b200128020020032000102c21030b2003450d0120012003360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200320006a20024102744101723b00000f0b200041011037000b1031000bac0903017f017e057f230041e0006b220224000240024002400240024002400240024002400240024020002903002203423f560d0002400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d0b200041017422052004200520044b1b22054100480d0b0240024020000d002005102821040c010b200128020020002005102c21040b2004450d0220012004360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200420006a2003a74102743a00000c080b200342808001540d062003428080808004540d054108200379a741037622056b4104490d0402400240200141046a280200200141086a2802002204460d00200128020021060c010b200441016a22072004490d0a200441017422062007200620074b1b22074100480d0a0240024020040d002007102821060c010b200128020020042007102c21060b2006450d0220012006360200200141046a2007360200200141086a28020021040b200141086a2207200441016a360200200620046a411320054102746b3a0000200220002903002203370308200541786a2104200141046a2106034002400240200628020020072802002200460d00200128020021050c010b200041016a22052000490d0b200041017422082005200820054b1b22084100480d0b0240024020000d002008102821050c010b200128020020002008102c21050b2005450d042001200536020020062008360200200728020021000b2007200041016a360200200520006a2003a73a000020034208882103200441016a22002004492105200021042005450d000b20022003370308200350450d030c070b200541011037000b200741011037000b200841011037000b200241286a41146a4108360200200241346a4109360200200241106a41146a41033602002002200241086a360240200241f8b9c00036024420024203370214200241c8afc6003602102002410936022c200242043703582002420137024c20024180bac0003602482002200241286a3602202002200241c8006a3602382002200241c4006a3602302002200241c0006a360228200241106a4188bac000103e000b41dcb9c0001032000b024002400240200141046a2802002204200141086a28020022006b4104490d00200128020021040c010b200041046a22052000490d05200441017422002005200020054b1b22004100480d050240024020040d002000102821040c010b200128020020042000102c21040b2004450d0120012004360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200420006a2003a74102744102723600000c020b200041011037000b02400240200141046a2802002204200141086a28020022006b4102490d00200128020021040c010b200041026a22052000490d03200441017422002005200020054b1b22004100480d030240024020040d002000102821040c010b200128020020042000102c21040b2004450d0220012004360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200420006a2003a74102744101723b00000b200241e0006a24000f0b200041011037000b1031000bbf0202027f017e23004180016b220224002000280200210002400240024002400240200128020022034110710d002000290300210420034120710d01200441012001103f21000c020b20002903002104410021000340200220006a41ff006a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000c010b410021000340200220006a41ff006a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000b20024180016a240020000f0b20034180011044000b20034180011044000b800a03017f027e057f230041e0006b2202240002400240024002400240024002400240024002400240200028020022002903002203423f56200041086a290300220442005220045022051b0d0002400240200141046a280200200141086a2802002200460d00200128020021050c010b200041016a22052000490d0b200041017422062005200620054b1b22064100480d0b0240024020000d002006102821050c010b200128020020002006102c21050b2005450d0220012005360200200141046a2006360200200141086a28020021000b200141086a200041016a360200200520006a2003a74102743a00000c080b20034280800154410020051b0d06200342808080800454410020051b0d05411020047920037942c0007c20044200521ba741037622066b4104490d0402400240200141046a280200200141086a2802002205460d00200128020021070c010b200541016a22082005490d0a200541017422072008200720084b1b22084100480d0a0240024020050d002008102821070c010b200128020020052008102c21070b2007450d0220012007360200200141046a2008360200200141086a28020021050b200141086a2208200541016a360200200720056a413320064102746b3a0000200029030021032002200041086a290300220437030820022003370300200641706a2105200141046a2107034002400240200728020020082802002200460d00200128020021060c010b200041016a22062000490d0b200041017422092006200920064b1b22094100480d0b0240024020000d002009102821060c010b200128020020002009102c21060b2006450d042001200636020020072009360200200828020021000b2008200041016a360200200620006a2003a73a00002003420888200442388684210320044208882104200541016a22002005492106200021052006450d000b2002200337030020022004370308200320048450450d030c070b200641011037000b200841011037000b200941011037000b200241286a41146a4108360200200241346a410a360200200241106a41146a410336020020022002360240200241a8bbc00036024420024203370214200241c8afc6003602102002410a36022c200242043703582002420137024c20024180bac0003602482002200241286a3602202002200241c8006a3602382002200241c4006a3602302002200241c0006a360228200241106a41b8bbc000103e000b418cbbc0001032000b024002400240200141046a2802002205200141086a28020022006b4104490d00200128020021050c010b200041046a22062000490d05200541017422002006200020064b1b22004100480d050240024020050d002000102821050c010b200128020020052000102c21050b2005450d0120012005360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200520006a2003a74102744102723600000c020b200041011037000b02400240200141046a2802002205200141086a28020022006b4102490d00200128020021050c010b200041026a22062000490d03200541017422002006200020064b1b22004100480d030240024020050d002000102821050c010b200128020020052000102c21050b2005450d0220012005360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200520006a2003a74102744101723b00000b200241e0006a24000f0b200041011037000b1031000b810605027f027e017f027e027f230041a0016b220224002000280200210002400240024002400240024002400240200128020022034110710d00200041086a29030021042000290300210520034120710d0220054290ce005441002004501b450d012005a72103412721000c060b200041086a2903002105200029030021044180012100024003402000450d01200241206a20006a417f6a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a210020044204882005423c8684220420054204882205844200520d000b0b20004181014f0d0220014101419087c0004102200241206a20006a41800120006b104221000c060b41272100200241186a21060340200241106a200520044290ce00420010a0052002200229031022072006290300220842f0b17f427f109f05200241206a20006a2203417c6a200520022903007ca7220941ffff037141e4006e220a41017441ba84c0006a2f00003b00002003417e6a200a419c7f6c20096a41ffff037141017441ba84c0006a2f00003b0000200542ffc1d72f56210320044200522109200450210a2000417c6a2100200721052008210420032009200a1b0d000c040b0b4180012100024003402000450d01200241206a20006a417f6a2005a7410f712203413072200341376a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b0b20004181014f0d0120014101419087c0004102200241206a20006a41800120006b104221000c040b20004180011044000b20004180011044000b2007a721030b02400240200341e3004a0d00200321090c010b200241206a2000417e6a22006a2003200341ffff037141e4006e2209419c7f6c6a41ffff037141017441ba84c0006a2f00003b00000b024002402009410a480d00200241206a2000417e6a22006a200941017441ba84c0006a2f00003b00000c010b200241206a2000417f6a22006a200941306a3a00000b2001410141b8aec6004100200241206a20006a412720006b104221000b200241a0016a240020000bf40601067f230041f0006b21020240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a2206360204410121072001200441016a360200200541f001490d0a200541847e6a220541034b0d0420050e0401020803010b200041023a00000f0b20064102490d0320042f0001210520012003417d6a3602042001200441036a360200200541ef014b0d04200041023a00000f0b20064104490d042004280001210520012003417b6a3602042001200441056a36020041012107200541ffff034b0d07200041023a00000f0b41002105200241003a00682003417f6a21062003417e6a210302400340024020062005470d000240200541ff0171450d00200241003a00680b410121010c020b200241c8006a20056a200420056a220741016a2d00003a0000200120033602042001200741026a3602002002200541016a22073a00682003417f6a21032007210520074120470d000b200241c6006a20022d004a3a0000200241306a200241d7006a290000370300200241386a200241df006a290000370300200241c0006a200241e7006a2d00003a0000200220022f01483b01442002200229004f370328200228004b2105410021010b200241246a41026a2203200241c4006a41026a2d00003a0000200241086a41086a2207200241286a41086a290300370300200241086a41106a2204200241286a41106a290300370300200241086a41186a2206200241286a41186a2d00003a0000200220022f01443b0124200220022903283703082001450d05200041023a00000f0b200041023a00000f0b200041023a00000f0b410121070c030b200041023a00000f0b0240200641044f0d00200041023a00000f0b200041023a000020012003417b6a3602042001200441056a3602000f0b200241286a41026a20032d00003a0000200241c8006a41086a2007290300370300200241c8006a41106a2004290300370300200241c8006a41186a20062d00003a0000200220022f01243b012820022002290308370348410021070b200020073a0000200020022f01283b0001200041046a2005360200200041086a2002290348370200200041036a2002412a6a2d00003a0000200041106a200241c8006a41086a290300370200200041186a200241c8006a41106a290300370200200041206a200241c8006a41186a2802003602000bb30801037f0240024002400240024002400240024020002d00004101460d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d08200241017422042003200420034b1b22044100480d080240024020020d002004102821030c010b200128020020022004102c21030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41ff013a0000200041016a2001108f010f0b0240024002400240200041046a280200220241ffff034b0d00200241ef014b0d03200141046a280200200141086a2802002200460d01200128020021030c020b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0a200041017422042003200420034b1b22044100480d0a0240024020000d002004102821030c010b200128020020002004102c21030b2003450d0520012003360200200141046a2004360200200141086a28020021000b200141086a2204200041016a360200200320006a41fd013a000002400240200141046a2802002203200428020022006b4104490d00200128020021030c010b200041046a22042000490d0a200341017422002004200020044b1b22004100480d0a0240024020030d002000102821030c010b200128020020032000102c21030b2003450d0620012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20023600000f0b200041016a22032000490d08200041017422042003200420034b1b22044100480d080240024020000d002004102821030c010b200128020020002004102c21030b2003450d0520012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a20023a00000f0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d07200041017422042003200420034b1b22044100480d070240024020000d002004102821030c010b200128020020002004102c21030b2003450d0520012003360200200141046a2004360200200141086a28020021000b200141086a2204200041016a360200200320006a41fc013a000002400240200141046a2802002203200428020022006b4102490d00200128020021030c010b200041026a22042000490d07200341017422002004200020044b1b22004100480d070240024020030d002000102821030c010b200128020020032000102c21030b2003450d0620012003360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200320006a20023b00000f0b200441011037000b200441011037000b200041011037000b200441011037000b200441011037000b200041011037000b1031000bd80402097f017e230041106b22052400024002400240200128020041016a220641004c0d0020012006360200200141046a2106200141086a28020021070240024003402006280200220841086a210920082f0106220a41057421064100210b0240024003402006450d01200220094120109c05220c450d02200641606a2106200b41016a210b200941206a2109200c417f4a0d000b200b417f6a210a0b2007450d022007417f6a21072008200a4102746a41880b6a21060c010b0b2008200b41e0006c6a22094198036a2106200941e8026a210d2009419c036a2802002107024003402006280200220841086a210920082f0106220a41057421064100210b0240024003402006450d01200420094120109c05220c450d02200641606a2106200b41016a210b200941206a2109200c417f4a0d000b200b417f6a210a0b024020070d004100210c0c030b2007417f6a21072008200a4102746a41ec036a21060c010b0b4101210c0240200841e8026a200b410c6c6a2206280200220b0d00410021060c010b20062802082209417f4c0d040240024020090d0020054200370300410121060c010b200910282206450d0620054100360204200520093602000b200520093602042006200b2009109a051a2005290300210e0b02400240200d2d005d450d0020064100200c1b21060c010b200c450d010b2000200e370204200020063602000c010b20002001280210200220032004200141146a28020028020c1104000b20012001280200417f6a360200200541106a24000f0b41b8b8c0004118200541086a41e0b8c0001038000b1036000b200941011037000bfc0202097f037e230041206b220324000240200128020041016a220441004c0d0020012004360200200141046a2105200141086a28020021060240024003402005280200220741086a210820072f0106220941057421054100210a0240024003402005450d01200220084120109c05220b450d02200541606a2105200a41016a210a200841206a2108200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200720094102746a41880b6a21050c010b0b2007200a41e0006c6a22054190036a290300210c20054188036a290300210d20054180036a290300210e0240200541c5036a2d00000d00200ea721054201210e2005450d010c020b200e4202520d010b200320012802102002200141146a280200280214110500200341106a290300210c200128020021042003290308210d2003290300210e0b20012004417f6a360200200041106a200c3703002000200d3703082000200e370300200341206a24000f0b41b8b8c0004118200341186a41e0b8c0001038000bd70501037f024002400240024002400240024020002d00004101460d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d07200241017422042003200420034b1b22044100480d070240024020020d002004102821030c010b200128020020022004102c21030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41003a00000c010b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d06200241017422042003200420034b1b22044100480d060240024020020d002004102821030c010b200128020020022004102c21030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41013a0000200041016a2001108f010b024020002d00214101460d0002400240200141046a280200200141086a2802002200460d00200128020021020c010b200041016a22022000490d06200041017422032002200320024b1b22034100480d060240024020000d002003102821020c010b200128020020002003102c21020b2002450d0420012002360200200141046a2003360200200141086a28020021000b200141086a200041016a360200200220006a41003a00000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102821030c010b200128020020022004102c21030b2003450d0420012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41013a0000200041226a2001108f010f0b200441011037000b200441011037000b200341011037000b200441011037000b1031000bbf0501047f200141046a2802002102200141086a28020021030240024002400240024002400240200028020022040d000240024020022003460d00200128020021020c010b200341016a22022003490d07200341017422042002200420024b1b22044100480d070240024020030d002004102821020c010b200128020020032004102c21020b2002450d0320012002360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200220036a41003a00000c010b0240024020022003460d00200128020021020c010b200341016a22022003490d06200341017422052002200520024b1b22054100480d060240024020030d002005102821020c010b200128020020032005102c21020b2002450d0320012002360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200220036a41013a000020042001108f010b200141046a2802002102200141086a28020021030240200028020422040d000240024020022003460d00200128020021000c010b200341016a22002003490d06200341017422022000200220004b1b22024100480d060240024020030d002002102821000c010b200128020020032002102c21000b2000450d0420012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000f0b0240024020022003460d00200128020021000c010b200341016a22002003490d05200341017422022000200220004b1b22024100480d050240024020030d002002102821000c010b200128020020032002102c21000b2000450d0420012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41013a000020042001108f010f0b200441011037000b200541011037000b200241011037000b200241011037000b1031000b860a05037f047e057f027e047f230022022103200241c0016b41607122022400200141186a220429000021052004200229039801370000200129001021062001200229039001370010200129000821072001200229038801370008200241003a00800120012900002108200120022903800137000020022005370378200220063703702002200737036820022008370360200141206a2d0000210420024180016a41176a2209200537000020024180016a41106a220a200229007137030020024180016a41086a220b2002290069370300200220022900613703800102402008a741ff01714101460d0020004200370300200324000f0b200241186a41176a2009290000370000200241186a41106a200a290300370300200241186a41086a200b2903003703002002200229038001370318200220043a0037200241386a200241186a10ac012002410036028001200241386a412020024180016a1006210c02400240200228028001220d417f460d002002200d36025c2002200c3602582002200241d8006a109f012002290300a70d01200228025c2204450d01200241106a290300210e2002290308210f20022004417f6a220a36025c20022002280258221041016a220b36025820102d0000220441014b0d01410021110240024020040e020100010b4100210403400240200a2004470d002002410036025c0c040b2002201020046a41026a360258200441016a2209210420094120470d000b2002200a20096b220a36025c41012111201020096a41016a210b0b200a450d012002200a417f6a220a36025c2002200b41016a360258200b2d0000220941014b0d01410021040240024020090e020100010b41002104200241003a00a00103400240200a2004470d002002410036025c200441ff0171450d04200241003a00a0010c040b20024180016a20046a200b20046a220941016a2d00003a00002002200941026a3602582002200441016a22093a00a0012009210420094120470d000b200241e0006a41086a20024180016a41086a290300370300200241e0006a41106a20024180016a41106a290300370300200241e0006a41186a20024180016a41186a29030037030020022002290380013703602002200a20096b36025c410121040b20024180016a41186a2209200241e0006a41186a220a29030037030020024180016a41106a220b200241e0006a41106a221029030037030020024180016a41086a2212200241e0006a41086a2213290300370300200220022903603703800120114102460d01200a20092903003703002010200b2903003703002013201229030037030020022002290380013703600240200d450d00200c102a0b20024180016a41186a200241e0006a41186a2209290300220537030020024180016a41106a200241e0006a41106a220a290300220837030020024180016a41086a200241e0006a41086a220b29030022063703002002200229036022073703800120092005370300200a2008370300200b200637030020022007370360200120043a000020012007370001200141096a2006370000200141116a2008370000200141196a2005370000200041306a200e370300200041286a200f3703002000420137030020002002290318370008200041106a200241186a41086a290300370000200041186a200241186a41106a290300370000200041206a200241186a41186a290300370000200324000f0b41c9b4c00041dd001050000b41c4d1c3004133200241b8016a419cd9c3001038000bfc0101057f230041306b220224000240411210282203450d00200341002900c1ae44370000200341106a41002f00d1ae443b0000200341086a41002900c9ae4437000020024292808080a0023702042002200336020020012002108f012002280208210320022802002101200241106a41186a22044200370300200241106a41106a22054200370300200241106a41086a220642003703002002420037031020012003200241106a1000200041186a2004290300370000200041106a2005290300370000200041086a20062903003700002000200229031037000002402002280204450d002002280200102a0b200241306a24000f0b411241011037000b910a03037f047e0c7f230022022103200241c0016b41607122022400200141186a220429000021052004200229039801370000200129001021062001200229039001370010200129000821072001200229038801370008200241003a00800120012900002108200120022903800137000020022005370378200220063703702002200737036820022008370360200141206a2d0000210420024180016a41176a2209200537000020024180016a41106a220a200229007137030020024180016a41086a220b2002290069370300200220022900613703800102402008a741ff01714101460d0020004100360220200324000f0b200241086a41176a2009290000370000200241086a41106a200a290300370300200241086a41086a200b2903003703002002200229038001370308200220043a0027200241286a200241086a10ae012002410036028001200241286a412020024180016a1006210c024002400240200228028001220d417f460d002002200d36024c2002200c360248200241d0006a200241c8006a106d2002280250220e450d022002280254210f200228024c2204450d01200241d8006a280200211020022004417f6a220a36024c20022002280248221141016a220b36024820112d0000220441014b0d01410021120240024020040e020100010b4100210403400240200a2004470d002002410036024c0c040b2002201120046a41026a360248200441016a2209210420094120470d000b2002200a20096b220a36024c41012112201120096a41016a210b0b200a450d012002200a417f6a220a36024c2002200b41016a360248200b2d0000220941014b0d01410021040240024020090e020100010b41002104200241003a00a00103400240200a2004470d002002410036024c200441ff0171450d04200241003a00a0010c040b20024180016a20046a200b20046a220941016a2d00003a00002002200941026a3602482002200441016a22093a00a0012009210420094120470d000b200241e0006a41086a20024180016a41086a290300370300200241e0006a41106a20024180016a41106a290300370300200241e0006a41186a20024180016a41186a29030037030020022002290380013703602002200a20096b36024c410121040b20024180016a41186a2209200241e0006a41186a220a29030037030020024180016a41106a220b200241e0006a41106a221129030037030020024180016a41086a2213200241e0006a41086a2214290300370300200220022903603703800120124102460d02200a20092903003703002011200b2903003703002014201329030037030020022002290380013703600240200d450d00200c102a0b20024180016a41186a200241e0006a41186a2209290300220537030020024180016a41106a200241e0006a41106a220a290300220837030020024180016a41086a200241e0006a41086a220b29030022063703002002200229036022073703800120092005370300200a2008370300200b200637030020022007370360200120043a000020012007370001200141096a2006370000200141116a2008370000200141196a2005370000200041286a20103602002000200f3602242000200e36022020002002290308370000200041086a200241086a41086a290300370000200041106a200241086a41106a290300370000200041186a200241086a41186a290300370000200324000f0b41c9b4c00041dd001050000b200f450d00200e102a0b41c4d1c3004133200241d0006a419cd9c3001038000bfc0101057f230041306b220224000240411210282203450d0020034100290095ae44370000200341106a41002f00a5ae443b0000200341086a410029009dae4437000020024292808080a0023702042002200336020020012002108f012002280208210320022802002101200241106a41186a22044200370300200241106a41106a22054200370300200241106a41086a220642003703002002420037031020012003200241106a1000200041186a2004290300370000200041106a2005290300370000200041086a20062903003700002000200229031037000002402002280204450d002002280200102a0b200241306a24000f0b411241011037000bfe0703037f047e0a7f23002202210320024180036b41607122022400200141186a220429000021052004200229039802370000200129001021062001200229039002370010200129000821072001200229038802370008200241003a0080022001290000210820012002290380023700002002200537039801200220063703900120022007370388012002200837038001200141206a2d0000210420024180026a41176a2209200537000020024180026a41106a220a20022900910137030020024180026a41086a220b20022900890137030020022002290081013703800202402008a741ff01714101460d00200041073a0040200324000f0b200241186a41176a2009290000370000200241186a41106a200a290300370300200241186a41086a200b2903003703002002200229038002370318200220043a0037200241e0006a200241186a10b0012002410036028002200241e0006a412020024180026a1006210c0240200228028002220d417f460d002002200d36023c2002200c36023820024180026a200241386a10b101024020022d00a1024102460d00200241d8016a41206a220420024180026a41206a2d00003a0000200241d8016a41186a220920024180026a41186a220e290300370300200241d8016a41106a220a20024180026a41106a220f290300370300200241d8016a41086a220b20024180026a41086a221029030037030020022002290380023703d80120024180016a200241a2026a41c100109a051a0240200d450d00200c102a0b200241386a41206a220d20042d00003a0000200241386a41186a220c2009290300370300200241386a41106a2211200a290300370300200241386a41086a2212200b290300370300200220022903d80137033820024180026a20024180016a41c100109a051a2004200d2d00003a00002009200c290300370300200a2011290300370300200b2012290300370300200220022903383703d80120024180016a20024180026a41c100109a051a200141206a20024180016a41c0006a2d00003a0000200141186a20024180016a41386a290000370000200141106a20024180016a41306a290000370000200141086a20024180016a41286a290000370000200120022900a001370000200e200241186a41186a290300370300200f200241186a41106a2903003703002010200241186a41086a290300370300200220022903183703800220024180026a41286a200b29030037030020024180026a41306a200a29030037030020024180026a41386a200929030037030020024180026a41c0006a20042d00003a0000200220022903d8013703a002200020024180026a41c100109a051a200324000f0b41c4d1c300413320024180016a419cd9c3001038000b41c9b4c00041dd001050000bfc0101057f230041306b220224000240411510282203450d00200341002900d088453700002003410d6a41002900dd8845370000200341086a41002900d8884537000020024295808080d0023702042002200336020020012002108f012002280208210320022802002101200241106a41186a22044200370300200241106a41106a22054200370300200241106a41086a220642003703002002420037031020012003200241106a1000200041186a2004290300370000200041106a2005290300370000200041086a20062903003700002000200229031037000002402002280204450d002002280200102a0b200241306a24000f0b411541011037000bd30b03097f017e017f23004190026b2202240041002103200241003a00880220012802042204417d6a2105417f21060240024002400240024002400240034020042003460d01200241e8016a20036a200128020022072d00003a00002001200420066a3602042001200741016a3602002002200341016a22083a0088022005417f6a21052006417f6a21062008210320084120470d000b200241c8016a41186a200241e8016a41186a290300370300200241c8016a41106a200241e8016a41106a290300370300200241c8016a41086a200241e8016a41086a290300370300200220022903e8013703c80120042008460d0120072d000121092001200420066a3602042001200741026a360200200941074f0d01200241086a41186a200241c8016a41186a290300370300200241086a41106a200241c8016a41106a290300370300200241086a41086a200241c8016a41086a290300370300200220022903c8013703082004417f6a2008460d0520072d000221032001200741036a220a3602002001200420086b2206417e6a2208360204200341014b0d0520030e020302030b200341ff0171450d00200241003a0088020b200041023a00210c040b41002103200241003a0088022006417e6a2104417d21080340024020042003470d00200341ff0171450d04200241003a0088020c040b200241e8016a20036a200720036a220641036a2d00003a00002001200520036b3602042001200641046a3602002002200341016a22063a0088022008417f6a21082006210320064120470d000b200241a8016a41086a200241e8016a41086a290300220b37030020024188016a41186a200241e8016a41186a29030037030020024188016a41106a200241e8016a41106a29030037030020024188016a41086a200b370300200220022903e801220b3703a8012002200b370388014101210c200520066b41016a2108200720066a41036a210a0c010b4100210c0b200241e8006a41186a20024188016a41186a290300370300200241e8006a41106a20024188016a41106a290300370300200241e8006a41086a20024188016a41086a29030037030020022002290388013703682008450d00200a2d0000210320012008417f6a3602042001200a41016a360200200341014b0d00410021060240024020030e020100010b41002103200241003a0088022008417f6a21042008417e6a21060340024020042003470d00200341ff0171450d03200241003a0088020c030b200241e8016a20036a200a20036a220841016a2d00003a0000200120063602042001200841026a3602002002200341016a22083a0088022006417f6a21062008210320084120470d000b200241a8016a41086a200241e8016a41086a290300220b37030020024188016a41186a200241e8016a41186a29030037030020024188016a41106a200241e8016a41106a29030037030020024188016a41086a200b370300200220022903e801220b3703a8012002200b37038801410121060b200241286a41186a220320024188016a41186a290300370300200241286a41106a220120024188016a41106a290300370300200241286a41086a220820024188016a41086a290300370300200241c8006a41086a2204200241e8006a41086a290300370300200241c8006a41106a2205200241e8006a41106a290300370300200241c8006a41186a2207200241e8006a41186a290300370300200220022903880137032820022002290368370348200041186a200241086a41186a290300370000200041106a200241086a41106a290300370000200041086a200241086a41086a290300370000200020022903083700002000200c3a0021200020093a0020200041c2006a20063a0000200020022903483700222000412a6a2004290300370000200041326a20052903003700002000413a6a2007290300370000200041c3006a2002290328370000200041cb006a2008290300370000200041d3006a2001290300370000200041db006a20032903003700000c010b200041023a00210b20024190026a24000b340020004197dbc00036020420004100360200200041146a4103360200200041106a41bcbcc000360200200041086a42083702000b5201027f230041106b2202240002404104102822030d00410441011037000b20024204370204200220033602004100200210b401200041086a200228020836020020002002290300370200200241106a24000b920701037f0240024002400240024002402000413f4b0d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d06200241017422042003200420034b1b22044100480d060240024020020d002004102821030c010b200128020020022004102c21030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a20004102743a00000f0b200041808001490d032000418080808004490d020c010b200441011037000b0240024002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102821030c010b200128020020022004102c21030b2003450d0120012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a000002400240200141046a2802002203200428020022026b4104490d00200128020021030c010b200241046a22042002490d05200341017422022004200220044b1b22024100480d050240024020030d002002102821030c010b200128020020032002102c21030b2003450d0220012003360200200141046a2002360200200141086a28020021020b200141086a200241046a360200200320026a20003600000f0b200441011037000b200241011037000b024002400240200141046a2802002203200141086a28020022026b4104490d00200128020021030c010b200241046a22042002490d03200341017422022004200220044b1b22024100480d030240024020030d002002102821030c010b200128020020032002102c21030b2003450d0120012003360200200141046a2002360200200141086a28020021020b200141086a200241046a360200200320026a20004102744102723600000f0b200241011037000b024002400240200141046a2802002203200141086a28020022026b4102490d00200128020021030c010b200241026a22042002490d02200341017422022004200220044b1b22024100480d020240024020030d002002102821030c010b200128020020032002102c21030b2003450d0120012003360200200141046a2002360200200141086a28020021020b200141086a200241026a360200200320026a20004102744101723b00000f0b200241011037000b1031000bd82504027f027e087f037e230041b00d6b220724000240024002402001280230200128024022082802b801460d002004420020042903082209200841c0006a2903007d220a200a20095622081b3703082008450d0120004188c5c00036020420004101360200200041086a412a3602002000410c6a2006290200370200200041146a200641086a2802003602000c020b200041f3c3c00036020420004101360200200041086a41293602002000410c6a2006290200370200200041146a200641086a2802003602000c010b200741186a41186a200141e8006a290000370300200741186a41106a200141e0006a290000370300200741186a41086a200141d8006a290000370300200720012900503703182006280208210b20062802002108200741b0026a41186a220c4200370300200741b0026a41106a220d4200370300200741b0026a41086a220e4200370300200742003703b0022008200b200741b0026a1000200741d00a6a41186a200c290300370300200741d00a6a41106a200d290300370300200741d00a6a41086a200e290300370300200720072903b0023703d00a0240024002400240024002400240024002400240412010282208450d0020082005290000370000200841186a200541186a290000370000200841106a200541106a290000370000200841086a200541086a2900003700002008412041c000102c2208450d01200820072903d00a370020200841386a200741d00a6a41186a290300370000200841306a200741d00a6a41106a290300370000200841286a200741d00a6a41086a290300370000200841c000418001102c2208450d0220082007290318370040200841d8006a200741186a41186a290300370000200841d0006a200741186a41106a290300370000200841c8006a200741186a41086a290300370000200741b0026a41186a220c4200370300200741b0026a41106a220d4200370300200741b0026a41086a220e4200370300200742003703b002200841e000200741b0026a1000200741386a41186a220f200c290300370300200741386a41106a220c200d290300370300200741386a41086a220d200e290300370300200720072903b0023703382008102a20062902002109200741d8006a41d8006a200d290300370300200741d8006a41e0006a200c290300370300200741c0016a200f29030037030020074194016a410036020020074184016a419cc4c000360200200741f8006a4200370300200741f4006a221041f8b9c00036020020072001360260200741d8006a41286a200141186a2211360200200720072903383703a8012007420837028c012007410036027020074100360264200720012802483602a00120072001290340370398012007200128023041016a360288012001290300210a2007200128024c3602a4012007200a370358200741c8016a41186a200541186a290000370300200741c8016a41106a200541106a290000370300200741c8016a41086a200541086a29000037030020074101360270200720052900003703c8012011200741386a10b601210620072007280270417f6a2208360270024020060d0020080d042007417f36027020074190026a41186a200741386a41186a29030037030020074190026a41106a200741386a41106a29030037030020074190026a41086a200741386a41086a2903003703002007200729033837039002024002402007280274220e41f8b9c000460d002007280278210f0c010b4100210f200741d00a6a410041e0021099051a200741b0026a410041a0081099051a41880b1028220e450d06200e41003b0106200e4100360200200e41086a200741d00a6a41e002109a051a200e41e8026a200741b0026a41a008109a051a200741003602782007200e3602740b024002400340200e41086a2108200e2f0106221241057421064100210c0240024003402006450d0120074190026a20084120109c05220d450d02200641606a2106200c41016a210c200841206a2108200d417f4a0d000b200c417f6a21120b200f450d02200f417f6a210f200e20124102746a41880b6a280200210e0c010b0b200e200c41e0006c6a41e8026a21060c010b200741f0016a41186a20074190026a41186a290300220a370300200741f0016a41106a20074190026a41106a2903002213370300200741f0016a41086a20074190026a41086a2903002214370300200720072903900222153703f001200741ec0a6a2014370200200741d00a6a41246a2013370200200741fc0a6a200a3702002007200741d8006a41246a3602e00a200720123602dc0a200720103602d80a2007200e3602d40a200741003602d00a200720153702e40a200741e4026a4200370200200741003a00ec02200742003703b002200741003a008d03200741f8b9c0003602e002200742003703c802200741d00a6a200741b0026a10b70121060b200741e0016a290300210a20064201370318200641013a003c200641286a427f370300200641206a427f3703002006413d6a20072903c801370000200641d5006a200a370000200641cd006a200741d8016a290300370000200641c5006a200741d0016a2903003700002007200728027041016a360270200741106a20044101200741186a200741386a20022003200741d8006a10b8012007280210220e0d06200741b0026a200520072802a00128020010b901024020072802b0024101470d002009422088a72106200741b8026a280200210520072802b402210e2009a721010c0b0b20074190026a41186a200741b0026a410472220641186a2802002208360200200741d00a6a41106a200641086a290200370300200741d00a6a41186a200641106a290200370300200741f00a6a2008360200200741063602d40a200741b38dc6003602d00a200720062902003703d80a200728029c0121062007200741d8006a3602c8022007290358210a20072802a4012108200741d8026a200741186a41086a290300370300200741e0026a200741186a41106a290300370300200741e8026a200741186a41186a290300370300200720033703b802200720023703b002200720083602cc022007200a3703c002200720072903183703d0022007200b3602f801200720093703f00120074190026a2006200741d00a6a200741b0026a200741f0016a200410ba012007419c026a290200210220074190026a41086a2802002112200728029402210f02402007280290024101470d002002422088a72106200741a4026a280200210b2002a7210120122105200f210e0c0a0b200728027041016a220b41004c0d072007200b360270200728027821040240024003402010280200220541086a210820052f0106220e41057421064100210c0240024003402006450d01200741386a20084120109c05220d450d02200641606a2106200c41016a210c200841206a2108200d417f4a0d000b200c417f6a210e0b2004450d022004417f6a21042005200e4102746a41880b6a21100c010b0b2005200c41e0006c6a220641c5036a310000200641e8026a290300220320035022081ba7450d004200200641f8026a29030020081b21034200200641f0026a29030020081b21090c010b2007200728028001200741386a20072802840128021c110500200741086a2903002103200729030021092007280270210b0b2007200b417f6a3602702009200728029801220629037854200320064180016a29030022095420032009511b450d082002a7210b41c0c4c000210e411e2105200f2101201221060c090b2009422088a721062009a7210141dec4c000210e412a21050c090b412041011037000b41c00041011037000b41800141011037000b41a8b8c0004110200741b0026a41d0b8c0001038000b41880b41081037000b200728021421052009422088a721062009a721010c030b41b8b8c0004118200741b0026a41e0b8c0001038000b20074190026a41086a2208200741186a41086a29030037030020074190026a41106a220c200741186a41106a29030037030020074190026a41186a220d200741186a41186a290300370300200741f0016a41086a2205200741386a41086a290300370300200741f0016a41106a2204200741386a41106a290300370300200741f0016a41186a220e200741386a41186a2903003703002007200729031837039002200720072903383703f00102400240024002402007280294012206200728029001470d00200641016a220b2006490d0320064101742210200b2010200b4b1b2210ad42b0017e2203422088a70d032003a7220b4100480d030240024020060d00200b102821060c010b200728028c01200641b0016c200b102c21060b2006450d0120072010360290012007200636028c0120072802940121060b200728028c01200641b0016c6a220641003a0000200620072f00ed013b0001200641013a00102006410036000c200642013700042006200729039002370011200620072903f001370031200641036a200741ef016a2d00003a0000200641196a2008290300370000200641216a200c290300370000200641296a200d290300370000200641396a2005290300370000200641c1006a2004290300370000200641c9006a200e290300370000200641e0006a200741d7016a290000370000200641d9006a200741c8016a41086a290000370000200620072900c801370051200641e8006a200741b0026a41c800109a051a200720072802940141016a2208360294010240200741d00a6a41186a280200450d00200741e40a6a280200102a20072802940121080b200728029001210e200728028c012105200728027c210b2007280278210d2007280274210602402007280264220c450d00200741e8006a280200450d00200c102a0b0240024020024280808080f01f8350450d002007200b3602b8022007200d3602b402200720063602b0022011200741b0026a10bb012007200e3602b402200720053602b00220072005200841b0016c22086a22043602bc0202400240200141386a280200220c2001413c6a28020022066b200841b0016d220d490d002001280234210c0c010b2006200d6a220e2006490d05200c4101742206200e2006200e4b1b2206ad42b0017e2203422088a70d052003a7220e4100480d0502400240200c0d00200e1028210c0c010b2001280234200c41b0016c200e102c210c0b200c450d042001200c360234200141386a20063602002001413c6a28020021060b200c200641b0016c6a20052008109a051a2001413c6a22062006280200200d6a360200200720043602b802200741b0026a10690c010b02402008450d00200841b0016c210441002108034002400240200520086a220c2d0000220141014b0d000240024020010e020001000b0240200c41086a280200450d00200c41046a280200102a0b200c41106a2d00004105490d02200c41386a280200450d02200c41346a280200102a0c020b200c41286a106a0c010b200c41e8006a280200450d00200c41e4006a280200102a0b2004200841b0016a2208470d000b0b0240200e450d002005102a0b02400240200d0d00200621080c010b200d210c20062108034020082802880b2108200c417f6a220c0d000b0340200620062f01064102746a41880b6a2802002106200d417f6a220d0d000b0b200741cc026a20062f0106360200200741c8026a4100360200200741c4026a20063602002007200b3602d002200741003602c002200742003703b802200720083602b402200741003602b002200741b0026a109b010b20002007290338370004200041003602002000412c6a2002370200200041286a2012360200200041246a200f3602002000411c6a200741d0006a290300370000200041146a200741c8006a2903003700002000410c6a200741c0006a2903003700000c050b200b41081037000b200e41081037000b1031000b200741e80a6a280200450d00200741e40a6a280200102a0b024020072802642208450d00200741e8006a280200450d002008102a0b2006ad2102200728027c21042007280274210602400240200728027822080d002006210c0c010b2008210d2006210c0340200c2802880b210c200d417f6a220d0d000b0340200620062f01064102746a41880b6a28020021062008417f6a22080d000b0b200242208621022001ad2103200741cc026a20062f010636020041002108200741c8026a4100360200200741c4026a2006360200200720043602d002200741003602c002200742003703b8022007200c3602b402200741003602b002200741b0026a109b0102402007280294012206450d00200728028c01210d200641b0016c2101034002400240200d20086a22062d0000220c41014b0d0002400240200c0e020001000b0240200641086a280200450d00200641046a280200102a0b200641106a2d00004105490d02200641386a280200450d02200641346a280200102a0c020b200641286a106a0c010b200641e8006a280200450d00200641e4006a280200102a0b2001200841b0016a2208470d000b0b200220038421020240200728029001450d00200728028c01102a0b2000200e36020420004101360200200041146a200b3602002000410c6a2002370200200041086a20053602000b200741b00d6a24000bb80201097f230041106b220224000240200028020041016a220341004c0d0020002003360200200041046a2104200041086a280200210502400240024003402004280200220641086a210720062f010622084105742104410021090240024003402004450d01200120074120109c05220a450d02200441606a2104200941016a2109200741206a2107200a417f4a0d000b2009417f6a21080b2005450d022005417f6a2105200620084102746a41880b6a21040c010b0b2006200941e0006c6a220441a4036a2d000022074101410220074101461b200441c5036a2d00001b22044102470d010b20002802102001200041146a2802002802181101002104200028020021030c010b200441014621040b20002003417f6a360200200241106a240020040f0b41b8b8c0004118200241086a41e0b8c0001038000b8f1901187f230041d0116b2202240020002802102203200328020041016a360200200028020c21042000280208210520002802042103200241206a41186a22062000412c6a290000370300200241206a41106a2207200041246a290000370300200241206a41086a22082000411c6a29000037030020022000290014370320200241a0026a200141e000109a051a024002400240024020032f01062201410b490d00200241b0036a410041e0021099051a20024198066a410041a0081099051a0240024041880b10282209450d00200941003b010620094100360200200941086a200241b0036a41e002109a052101200941e8026a20024198066a41a008109a052106200220032f00c8013b01ac032002200341ca016a2d00003a00ae03200220032900db01370398032002200341e0016a29000037009d03200341cb016a280000210a200341cf016a280000210b200341d3016a280000210c200341d7016a280000210d20024198066a200341a8076a41e000109a051a2001200341e8016a20032f010641796a2200410574109a052101200620034188086a200041e0006c109a052106200341063b0106200920003b0106200220022f01ac033b019403200220022d00ae033a0096032002200229039803370380032002200229009d0337008503200241b0036a20024198066a41e000109a051a0240024020044107490d00200441057420016a41c07e6a2001200441796a22074105746a2201200041ffff037120076b410574109b051a200141186a200241206a41186a290300370000200141106a200241206a41106a290300370000200141086a200241206a41086a29030037000020012002290320370000200441e0006c20066a220041c07b6a200041e07a6a220e200941066a22002f010020076b41e0006c109b051a200e200241a0026a41e000109a051a0c010b200341086a20044105746a220141206a2001200341066a22002f010020046b410574109b051a200141186a200241206a41186a290300370000200141106a200241206a41106a290300370000200141086a200241206a41086a29030037000020012002290320370000200341e8026a200441e0006c6a220e41e0006a200e20002f010020046b41e0006c109b051a200e200241a0026a41e000109a051a0b20024188026a41026a220420022d0096033a0000200020002f010041016a3b0100200220022f0194033b01880220022002290380033703800120022002290085033700850120024190016a200241b0036a41e000109a051a2002411c6a41026a220f20042d00003a0000200220022f0188023b011c2002200229038001370308200220022900850137000d200241206a20024190016a41e000109a051a20032802002206450d0320032f0104211020024198066a410272211103402002419c026a41026a2212200f2d00003a0000200220022f011c3b019c0220022002290308370388022002200229000d37008d02200241a0026a200241206a41e000109a051a201041ffff0371210702400240024020062f01062203410b490d002011410041b20b1099051a41b80b10282201450d0520014100360200200141046a20024198066a41b40b109a051a200220062f00c8013b01ac032002200641ca016a2d00003a00ae03200220062900db01370398032002200641e0016a29000037009d03200641cb016a2800002113200641cf016a2800002114200641d3016a2800002115200641d7016a280000211620024198066a200641a8076a41e000109a051a200141086a200641e8016a20062f0106220041796a2203410574109a052117200141e8026a20064188086a200341e0006c109a052118200141880b6a200641a40b6a2000417a6a2208410274109a052119200641063b0106200120033b010602402008450d00410021032019210003402000280200220420033b010420042001360200200041046a21002008200341016a2203470d000b0b200241b0036a20024198066a41e000109a051a200220022d00ae0322033a009603200220022f01ac0322003b0194032002200229009d033700850320022002290398033703800320024194066a41026a220820033a0000200220003b01940620022002290380033703800120022002290085033700850120024198066a200241b0036a41e000109a051a201041ffff037122004107490d0120172007417a6a22044105746a2017200741796a22034105746a220020012f010620036b410574109b051a200041186a200229008d023700002000200d36000f2000200c36000b2000200b3600072000200a360003200041026a20122d00003a0000200020022f019c023b00002000200229038802370013200741e0006c20186a220041c07b6a200041e07a6a220020012f010620036b41e0006c109b051a2000200241a0026a41e000109a051a200120012f010641016a22003b01062007410274220a20196a416c6a201920044102746a2210200041ffff0371220720046b410274109b051a2010200936020020072004490d022001200a6a41f00a6a2100034020002802002204200341016a22033b010420042001360200200041046a210020032007490d000c030b0b200641086a2200200741016a22044105746a200020074105746a2200200320076b2201410574109b051a2000200d36000f2000200c36000b2000200b3600072000200a360003200041026a2002419c026a41026a2d00003a0000200020022f019c023b00002000200229038802370013200041186a200229008d023700002006200741e0006c6a220041c8036a200041e8026a2200200141e0006c109b051a2000200241a0026a41e000109a051a2006200341016a22033b01062007410274200641880b6a22006a41086a200020044102746a2200200341ffff037120046b410274109b051a20002009360200201041ffff037120062f010622034f0d07200920043b010420092006360200200420034f0d072003417f6a210120062004417f6a22034102746a41900b6a2100034020002802002204200341026a3b010420042006360200200041046a21002001200341016a2203470d000c080b0b200641086a2203200741016a22044105746a200320074105746a220320062f0106221020076b2219410574109b051a2003200d36000f2003200c36000b2003200b3600072003200a360003200341026a20122d00003a0000200320022f019c023b00002003200229038802370013200341186a200229008d02370000200641e8026a200741e0006c6a220341e0006a2003201941e0006c109b051a2003200241a0026a41e000109a051a2006201041016a22033b010620074102742219200641880b6a22106a41086a201020044102746a2210200341ffff037120046b410274109b051a20102009360200200020062f010622044f0d00200620196a418c0b6a2103034020032802002200200741016a22073b010420002006360200200341046a210320042007470d000b0b20024184026a41026a220320082d00003a0000200220022f0194063b01840220022002290380013703f00120022002290085013700f50120024190016a20024198066a41e000109a051a200f20032d00003a0000200220022f0184023b011c200220022903f001370308200220022900f50137000d200241206a20024190016a41e000109a051a0240200628020022030d002013210a2016210d2015210c2014210b200121090c050b20062f010421102013210a2016210d2015210c2014210b20032106200121090c000b0b41880b41081037000b41b80b41081037000b200320044105746a220041286a200041086a2210200120046b410574109b051a200041206a2006290300370000200041186a2007290300370000200041106a2008290300370000201020022903203700002003200441e0006c6a220041c8036a200041e8026a220e20032f010620046b41e0006c109b051a200e200241a0026a41e000109a051a200320032f010641016a3b01060c010b20024198066a410272410041b20b1099051a41b80b10282203450d0120034100360200200341046a20024198066a41b40b109a051a2003200528020022003602880b200520033602002005200528020441016a360204200041003b010420002003360200200320032f010622044105746a220041086a20022f011c3b00002000410a6a2002411c6a41026a2d00003a0000200041176a200d360000200041136a200c3600002000410f6a200b3600002000410b6a200a3600002000411b6a2002290308370000200041206a200229000d3700002003200441e0006c6a41e8026a200241206a41e000109a051a200341880b6a200441016a22004102746a2009360200200320003b0106200920003b0104200920033602000b200241d0116a2400200e0f0b41b80b41081037000b9f19020a7f087e230041800c6b220824000240024002400240024002400240024002400240200728021841016a220941004c0d0020072009360218200741206a280200210a2007411c6a220b210c024002400340200c280200220d41086a210e200d2f0106220f410574210c41002110024002400340200c450d012004200e4120109c052211450d02200c41606a210c201041016a2110200e41206a210e2011417f4a0d000b2010417f6a210f0b200a450d02200a417f6a210a200d200f4102746a41880b6a210c0c010b0b200d201041e0006c6a220c41c5036a310000200c41e8026a2903002212201250220e1ba7450d004200200c41f8026a290300200e1b21134200200c41f0026a290300200e1b21140c010b200841286a200741286a28020020042007412c6a28020028021c110500200841306a290300211320072802182109200829032821140b20072009417f6a360218200141186a29030021122007280240210c20012903102115024002400240024041004101410220142013842216501b20021b0e03010200010b200c41a8016a210c0c020b200c4188016a210c0c010b200c4198016a210c0b20152012844200510d01200841186a200c290300200c41086a2903002015201210a00520014200200129030822122008290318427f200841186a41086a290300501b7d22152015201256220c1b3703080240200c450d0041b2c5c000210c4122210e0c0a0b200728021841016a220141004c0d02200720013602182007280220210a200b210c024002400340200c280200220d41086a210e200d2f0106220f410574210c41002110024002400340200c450d012003200e4120109c052211450d02200c41606a210c201041016a2110200e41206a210e2011417f4a0d000b2010417f6a210f0b200a450d02200a417f6a210a200d200f4102746a41880b6a210c0c010b0b200d201041e0006c6a220c41c5036a310000200c41e8026a2903002212201250220e1ba7450d004200200c41f8026a290300200e1b21124200200c41f0026a290300200e1b21150c010b200841086a200741286a28020020032007412c6a28020028021c110500200841106a290300211220072802182101200829030821150b20072001417f6a3602180240201520057d2217201556201220067d2015200554ad7d221520125620152012511b4101470d00419893c100210c411d210e0c0a0b024020164200520d002007280240220c290378200556200c4180016a290300221220065620122006511b450d0041e293c100210c411f210e0c0a0b2008200341022017201510bc0102402008280200220c450d002008280204210e0c0a0b0240201420057c2216201454220c201320067c200cad7c221220135420122013511b450d0041b593c100210c412d210e0c0a0b4100210c024020032004470d000c0a0b0240200320044120109c050d000c0a0b20072802180d032007417f360218200841e0006a41186a200341186a290000370300200841e0006a41106a200341106a290000370300200841e0006a41086a200341086a2900003703002008200329000037036002400240200728021c221141f8b9c000460d002007280220210a0c010b4100210a200841a0096a410041e0021099051a20084180016a410041a0081099051a41880b10282211450d05201141003b010620114100360200201141086a200841a0096a41e002109a051a201141e8026a20084180016a41a008109a051a200741003602202007201136021c0b02400240034020112f0106220f410574210d4100210c4100210e02400340200d200c460d01200841e0006a2011200c6a41086a4120109c052210450d03200c41206a210c200e41016a210e2010417f4a0d000b200e417f6a210f0b0240200a450d00200a417f6a210a2011200f4102746a41880b6a28020021110c010b0b200841c0006a41186a200841e0006a41186a2903002213370300200841c0006a41106a200841e0006a41106a2903002214370300200841c0006a41086a200841e0006a41086a2903002218370300200820082903602219370340200841bc096a2018370200200841a0096a41246a2014370200200841cc096a20133702002008200741246a22013602b0092008200f3602ac092008200b3602a809200820113602a409200841003602a009200820193702b409200841b4016a4200370200200841bc016a41003a0000200841f8b9c0003602b00120084200370398012008420037038001200841003a00dd01200841a0096a20084180016a10b701210c0c010b20084198016a420037030020084194016a41f8b9c000360200200841003602a00120084100360290012008420037038801200841f8b9c000360284012008410036028001200741246a21012011200e41e0006c6a41e8026a210c20084180016a1095010b200c41106a2015370300200c2017370308200c420137030020072007280218220c41016a220e360218200e200c4f0d052007417f360218200841e0006a41186a200441186a290000370300200841e0006a41106a200441106a290000370300200841e0006a41086a200441086a2900003703002008200429000037036002400240200728021c221141f8b9c000460d002007280220210a0c010b4100210a200841a0096a410041e0021099051a20084180016a410041a0081099051a41880b10282211450d07201141003b010620114100360200201141086a200841a0096a41e002109a051a201141e8026a20084180016a41a008109a051a200741003602202007201136021c0b02400240034020112f0106220f410574210d4100210c4100210e02400340200d200c460d01200841e0006a2011200c6a41086a4120109c052210450d03200c41206a210c200e41016a210e2010417f4a0d000b200e417f6a210f0b0240200a450d00200a417f6a210a2011200f4102746a41880b6a28020021110c010b0b200841c0006a41186a200841e0006a41186a2903002215370300200841c0006a41106a200841e0006a41106a2903002213370300200841c0006a41086a200841e0006a41086a2903002214370300200820082903602217370340200841bc096a2014370200200841c4096a2013370200200841cc096a2015370200200820013602b0092008200f3602ac092008200b3602a809200820113602a409200841003602a009200820173702b409200841b4016a4200370200200841bc016a41003a0000200841f8b9c0003602b00120084200370398012008420037038001200841003a00dd01200841a0096a20084180016a10b701210c0c010b20084198016a420037030020084194016a41f8b9c000360200200841003602a00120084100360290012008420037038801200841f8b9c0003602840120084100360280012011200e41e0006c6a41e8026a210c20084180016a1095010b200c41106a2012370300200c2016370308200c42013703002007200728021841016a360218200841a0096a41086a2210200341086a290000370300200841a0096a41106a2211200341106a290000370300200841a0096a41186a220d200341186a290000370300200841e0006a41086a220a200441086a290000370300200841e0006a41106a220f200441106a290000370300200841e0006a41186a2201200441186a290000370300200820032900003703a0092008200429000037036002402007413c6a280200220e200741386a280200470d00200e41016a220c200e490d09200e4101742204200c2004200c4b1b2203ad42b0017e2212422088a70d092012a722044100480d0902400240200e0d0020041028210c0c010b2007280234200e41b0016c2004102c210c0b200c450d082007200c360234200741386a2003360200200728023c210e0b4100210c2007280234200e41b0016c6a220e41003a0000200e20082f003d3b0001200e4200370008200e4101360004200e20082903a009370011200e2008290360370031200e41036a2008413f6a2d00003a0000200e41106a41003a0000200e41196a2010290300370000200e41216a2011290300370000200e41296a200d290300370000200e41396a200a290300370000200e41c1006a200f290300370000200e41c9006a2001290300370000200e2005370358200e41e0006a2006370300200e41d4006a200841c0006a41036a280000360000200e2008280040360051200e41e8006a20084180016a41c800109a051a2007200728023c41016a36023c0c090b41b8b8c000411820084180016a41e0b8c0001038000b419cb7c0001032000b41b8b8c000411820084180016a41e0b8c0001038000b41a8b8c000411020084180016a41d0b8c0001038000b41880b41081037000b41a8b8c000411020084180016a41d0b8c0001038000b41880b41081037000b200441081037000b1031000b2000200e3602042000200c360200200841800c6a24000bb011030b7f017e047f230041b0016b220324000240024002400240024002400240024002400240411410282204450d00200441002900ddd843370000200441106a41002800edd843360000200441086a41002900e5d84337000020034294808080c00237023c200320043602382003200341386a36028001200120034180016a10c801200328023821042003280240210520034180016a41186a2206420037030020034180016a41106a2207420037030020034180016a41086a2208420037030020034200370380012004200520034180016a1000200341d8006a41186a2006290300370300200341d8006a41106a2007290300370300200341d8006a41086a200829030037030020032003290380013703580240200328023c450d002003280238102a0b2003410036028001200341d8006a412020034180016a100621062003280280012209417f460d032006450d0320032009360284012003200636028001200341286a20034180016a106c20032802280d02200328022c2105200341206a20034180016a106c20032802200d0220032802242108200341186a20034180016a106c20032802180d022003280284012204450d02200328021c210a20032004417f6a360284012003200328028001220441016a3602800120042d0000220441014b0d024100210b0240024020040e020100010b4101210b0b200341106a20034180016a106c20032802100d02200328028401220c20032802142204490d022004417f4c0d050240024020040d00410121070c010b2004102e2207450d022007200328028001220d2004109a051a2003200c20046b360284012003200d20046a360280010b2007450d02200341a0016a41026a220c200341386a41026a220d2d00003a0000200320032f00383b01a00102402009450d002006102a0b200d200c2d000022063a0000200341346a41026a20063a0000200320032f01a00122063b0138200320063b0134410021060c040b411441011037000b200441011037000b41c4d1c3004133200341386a419cd9c3001038000b4101210641d2bfc2002105411121084102210b0b200341306a41026a2209200341346a41026a220c2d00003a0000200320032f01343b013002402006450d002000200536020420004101360200200041086a20083602000c050b200c20092d00003a0000200320032f01303b013402400240200228025820054b0d002004210620042102200721090c010b411510282205450d02200541002900c8d8433700002005410d6a41002900d5d843370000200541086a41002900d0d84337000020034295808080d00237023c200320053602382003200341386a36028001200120034180016a10c801200328023821052003280240210620034180016a41186a2208420037030020034180016a41106a2209420037030020034180016a41086a220b420037030020034200370380012005200620034180016a1000200341d8006a41186a2008290300370300200341d8006a41106a2009290300370300200341d8006a41086a200b29030037030020032003290380013703580240200328023c450d002003280238102a0b2003410036028001200341d8006a412020034180016a100621060240024002402003280280012208417f460d002006450d0020032008360284012003200636028001200341086a20034180016a106c02400240024020032802080d002003280284012209200328020c2205490d002005417f4c0d070240024020050d004101210c0c010b2005102e220c450d02200c200328028001220b2005109a051a2003200920056b360284012003200b20056a360280010b200c0d020b41c4d1c3004133200341386a419cd9c3001038000b200541011037000b2005ad220e422086200e84210e02402008450d002006102a0b20034180016a200c200e422088a7200210f802200ea7210d20034180016a41086a280200210820032802840121052003280280014101470d022000200536020420004101360200200041086a2008360200200d450d01200c102a0c010b200041e3bfc20036020420004101360200200041086a411a3602000b2004450d062007102a0c060b200341d8006a41026a220f2003419f016a2d00003a0000200320032f009d013b01582003419c016a2d0000210b20034198016a280200210620034194016a280200210220034190016a28020021092003418c016a280200210a02402004450d002007102a0b200341346a41026a200f2d00003a0000200320032f01583b01342006417f4c0d010240024020060d0041002107410121040c010b20062107200610282204450d040b200420092006109a05210f200341386a41146a2006360200200341386a41106a20073602002003200a3602402003200836023c200320053602382003200f3602442003200b41ff01714101463a0050411410282204450d04200441002900ddd843370000200441106a41002800edd843360000200441086a41002900e5d84337000020034294808080c0023702a401200320043602a0012003200341a0016a36028001200120034180016a10c80120032802a001210420032802a801210120034180016a41186a2210420037030020034180016a41106a2211420037030020034180016a41086a2212420037030020034200370380012004200120034180016a1000200341d8006a41186a2010290300370300200341d8006a41106a2011290300370300200341d8006a41086a20122903003703002003200329038001370358024020032802a401450d0020032802a001102a0b20034120360284012003200341d8006a36028001200341386a20034180016a10f90202402007450d00200f102a0b200d450d00200c102a0b20002005360204200020032f01343b001d200041003602002000411c6a200b3a0000200041186a2006360200200041146a2002360200200041106a20093602002000410c6a200a360200200041086a20083602002000411f6a200341366a2d00003a00000c040b1036000b411541011037000b200641011037000b411441011037000b200341b0016a24000b821d02097f017e230041e0006b22062400024002402002410c6a280200200241106a280200100f2207417f460d00410c102822080d01410c41041037000b10fc02000b200820073602082008428180808010370200200641186a420037030020064280808080c0003703102006420437030802400240024002400240024002400240024002400240024002400240024002402008280200220741016a220941014d0d00200820093602002007417e460d002008200741026a3602000240200628021c22072006280218470d00200741016a22092007490d0b2007410174220a2009200a20094b1b220941ffffffff03712009470d0b2009410274220b4100480d0b0240024020070d00200b1028210a0c010b20062802142007410274200b102c210a0b200a450d02200620093602182006200a3602140b200628021420074102746a20083602002006200628021c41016a36021c2008280208210b410310282209450d02200941026a41002d00fae2453a0000200941002f00f8e2453b000041061028220a450d03200a41046a41002f00cf8f443b0000200a41002800cb8f44360000024020062802102207200628020c470d00200741016a220c2007490d0b2007410174220d200c200d200c4b1b220c41ffffff3f71200c470d0b200c410574220e4100480d0b0240024020070d00200e1028210d0c010b20062802082007410574200e102c210d0b200d450d052006200c36020c2006200d3602080b200628020820074105746a220741013602182007200a36020c2007428380808030370204200720093602002007411c6a200b360200200741106a4286808080e0003702002006200628021041016a36021020082008280200417f6a2207360200024020070d002008280208101020082008280204417f6a220736020420070d002008102a0b200641086a41f8e2c500410341effec5004103410b10fe02200641086a41f8e2c500410341f2fec500410f410c10fe02200641086a41f8e2c50041034181ffc500410f410d10fe02200641086a41f8e2c50041034190ffc5004108410e10fe02200641086a41f8e2c50041034198ffc500410f410f10fe02200641086a41f8e2c500410341a7ffc500410a411010fe02200641086a41f8e2c500410341b1ffc500410a411110fe02200641086a41f8e2c500410341bbffc500410b411210fe02200641086a41f8e2c500410341c6ffc500410d411310fe02200641086a41f8e2c500410341d3ffc500410c411410fe02200641086a41f8e2c500410341dfffc500410b411510fe02200641086a41f8e2c500410341eaffc5004115411610fe02200641086a41f8e2c500410341ffffc500410a411710fe02200641086a41f8e2c5004103418980c6004107411810fe02200641086a41f8e2c5004103419080c6004113411910fe02200641086a41f8e2c500410341a380c6004111411a10fe02200641086a41f8e2c500410341b480c600410e411b10fe02200641086a41f8e2c500410341c280c6004110411c10fe02200641086a41f8e2c500410341d280c6004110411d10fe02200641086a41f8e2c500410341e280c6004111411e10fe02200641086a41f8e2c500410341f380c6004111411f10fe02200641086a41f8e2c5004103418481c6004116412010fe02200641086a41f8e2c5004103419a81c6004112412110fe02200641086a41f8e2c500410341ac81c600410b412210fe02200641086a41f8e2c500410341b781c6004110412310fe02200641206a410c6a200441086a280200360200200620033602204100210d2006410036023c20062005360238200620083602342006200429020037022420062001280200360230200241146a280200210b2002411c6a280200210c200628020821072006280210210820064100360258200642013703502008200641d0006a10b40102402008450d00200720084105746a2105034020072802002104200741086a2802002208200641d0006a10b401024002402006280254220a200628025822096b2008490d002006280250210a0c010b200920086a22012009490d0d200a41017422032001200320014b1b22014100480d0d02400240200a0d0020011028210a0c010b2006280250200a2001102c210a0b200a450d08200620013602542006200a3602500b2006200920086a360258200a20096a20042008109a051a2007410c6a2802002103200741146a280200220a200641d0006a10b4010240024020062802542209200628025822046b200a490d00200628025021080c010b2004200a6a22082004490d0d200941017422012008200120084b1b22014100480d0d0240024020090d002001102821080c010b200628025020092001102c21080b2008450d092006200136025420062008360250200121090b20062004200a6a2201360258200820046a2003200a109a051a02400240200741186a2802004101460d000240024020092001460d002009210a0c010b200941016a220a2009490d0f20094101742204200a2004200a4b1b220a4100480d0f0240024020090d00200a102821080c010b20082009200a102c21080b2008450d0c2006200a360254200620083602500b2006200141016a2209360258200820016a41013a000020062007411c6a2802002204360248200641c8006a21010c010b0240024020092001460d002009210a0c010b200941016a220a2009490d0e20094101742204200a2004200a4b1b220a4100480d0e0240024020090d00200a102821080c010b20082009200a102c21080b2008450d0c2006200a360254200620083602500b2006200141016a2209360258200820016a41023a000020062007411c6a2802002204360248200641c8006a21010b0240200a20096b41034b0d00200941046a22042009490d0d200a41017422032004200320044b1b22044100480d0d02400240200a0d002004102821080c010b2008200a2004102c21080b2008450d0c2006200436025420062008360250200128020021040b2006200941046a360258200820096a2004360000200741206a22072005470d000b0b2006280254210302404124200b200c2006280250220e2006280258200641206a1011220b41036a220841024b0d000240024020080e03000201000b4102210d0b41012104024020030d000c110b200e102a0c100b200628021c220541ffffffff03712005470d0b20054102742207417f4c0d0b200628021421080240024020070d004104210c0c010b20071028220c450d0d0b0240024020050d004100210a0c010b200541027421044100210a200c210703402008280200220928020041016a220141014d0d022009200136020020072009360200200a41016a210a200741046a2107200841046a21082004417c6a22040d000b0b02402003450d00200e102a0b200228020421092002280200210420064100360258200642013703504100200641d0006a10b401200628025821012006280254210220062802502107410a102e2208450d0d0240024002400240200b20042009200720012008410a200641206a101241036a220941034b0d004101210420090e0402000001020b41a8c7c2001032000b2006410936024c410121042006200841016a36024820082d0000220941014b0d01410421010240024020090e020100010b200641d0006a200641c8006a109803200628025022014104460d02200628025421030b410021040b2008102a2002450d0f2007102a0c0f0b2008102a024020020d000c0f0b2007102a0c0e0b00000b200b41041037000b410341011037000b410641011037000b200e41041037000b200141011037000b200141011037000b200a41011037000b200a41011037000b200441011037000b1031000b1036000b200741041037000b410a41011037000b200b10130240200a450d00200a4102742107200c21080340200828020022092009280200417f6a3602000240200828020022092802000d0020092802081010200828020022092009280204417f6a360204200828020022092802040d002009102a0b200841046a21082007417c6a22070d000b0b4102210d2005450d00200c102a0b200641206a41086a28020021072006280234210820062802242109024002400240024002400240024002400240200628023c220a0d002006412c6a290200210f20040d04200141044b0d0320010e050203030301020b2000200a36020420004100360200200041106a41003a0000200041086a200641c0006a29030037020002402007450d002009102a0b20082008280200417f6a220736020020070d072008280208101020082008280204417f6a22073602042007450d060c070b2000200936020441002109200041106a41003a00002000410c6a4100360200200041086a20073602000c040b20002009360204200041106a20033a00002000410c6a200f3e0200200041086a2007360200410021090c030b200041aa9cc400360204200041146a200f3e0200200041106a20073602002000410c6a2009360200200041086a41113602000c010b0240200d450d00200041cb9cc400360204200041146a200f3e0200200041106a20073602002000410c6a2009360200200041086a41103602000c010b200041bb9cc400360204200041146a200f3e0200200041106a20073602002000410c6a2009360200200041086a41103602000b410121090b2000200936020020082008280200417f6a220736020020070d012008280208101020082008280204417f6a220736020420070d010b2008102a0b024020062802102207450d00200628020821082007410574210703400240200841046a280200450d002008280200102a0b0240200841106a280200450d002008410c6a280200102a0b200841206a2108200741606a22070d000b0b0240200628020c450d002006280208102a0b0240200628021c2207450d0020062802142108200741027421070340200828020022092009280200417f6a3602000240200828020022092802000d0020092802081010200828020022092009280204417f6a360204200828020022092802040d002009102a0b200841046a21082007417c6a22070d000b0b02402006280218450d002006280214102a0b200641e0006a24000b8a1409057f017e0c7f047e037f017e037f047e097f230041f00c6b22022400024020002802000d002000417f360200200128020821032001280200210402400240200128020422050d00200421010c010b2005210620042101034020012802880b21012006417f6a22060d000b0340200420042f01064102746a41880b6a28020021042005417f6a22050d000b0b2002411c6a20042f0106360200200241186a4100360200200241146a20043602002002200336022020024100360210200242003703082002200136020420024100360200200241f0016a2002109301024020022903900222074202510d002000410c6a2108200041046a2109200241900a6a41146a210a200241900a6a41206a210b200241f0016a4104722103200241f0016a413d6a210c200241cd026a210d200241b8026a210e200241f0016a41306a210f200241f0016a41286a21100340200241c8006a41086a2204200241f0016a41086a2211290300370300200241c8006a41106a2201200241f0016a41106a2212290300370300200241c8006a41186a2205200241f0016a41186a2213290300370300200220022903f001370348200e2903002114200f290300211520022903b0022116200229039802211720022f01ee02211820022d00ed02211920022d00cc02211a20022903a802211b20022802c002211c20022802c402211d20022802c802211e200241286a41186a200d41186a290000221f370300200241286a41106a200d41106a2900002220370300200241286a41086a200d41086a29000022213703002002200d2900002222370328200241e8006a41186a2223201f370300200241e8006a41106a22242020370300200241e8006a41086a222520213703002002202237036820024188016a41186a2226200529030037030020024188016a41106a2227200129030037030020024188016a41086a222820042903003703002002200229034837038801024002400240024002402009280200222941f8b9c000460d002000280208212a0c010b200241900a6a410041e0021099051a200241f0016a410041a0081099051a41880b10282229450d014100212a202941003b010620294100360200202941086a200241900a6a41e002109a051a202941e8026a200241f0016a41a008109a051a20004100360208200020293602040b0340202941086a210120292f0106222b410574210441002105024003402004450d0120024188016a20014120109c052206450d04200441606a2104200541016a2105200141206a21012006417f4a0d000b2005417f6a212b0b0240202a450d00202a417f6a212a2029202b4102746a41880b6a28020021290c010b0b200241c0016a41186a2026290300221f370300200241c0016a41106a20272903002220370300200241c0016a41086a20282903002221370300200220022903880122223703c001200a2022370200200a41086a2021370200200a41106a2020370200200a41186a201f370200200220083602a00a2002202b36029c0a200220093602980a200220293602940a200241003602900a20102014370300201220153703002002201637039002200220173703f8012002201a3a00ac022002201e3602a8022002201d3602a4022002201c3602a0022002201b37038802200220073703f001200c2002290368370000200c41086a2025290300370000200c41106a2024290300370000200c41186a2023290300370000200220183b01ce02200220193a00cd02200241900a6a200241f0016a10b7011a0c020b41880b41081037000b202941e8026a200541e0006c6a2129024020194101710d0020292029290300200720075022041b37030020292029290308201720041b370308202941106a22012001290300201520041b370300200241900a6a41186a22062023290300370300200241900a6a41106a222a2024290300370300200241900a6a41086a222b2025290300370300200220022903683703900a20292d003c21012013202941d5006a22052900003703002012202941cd006a22192900003703002011202941c5006a222329000037030020022029413d6a22242900003703f0012028200241900a6a200241f0016a201a41ff0171410146221a1b220441086a2900003703002027200441106a2900003703002026200441186a2900003703002002200429000037038801202941012001201a1b3a003c2024200229038801370000202320282903003700002019202729030037000020052026290300370000202920162029290320201ba722041b370320202941286a22012014200129030020041b3703002029201b202929031820041b37031802400240201d0d00201c21040c010b201d2101201c2104034020042802ec0321042001417f6a22010d000b0340201c201c2f01064102746a41ec036a280200211c201d417f6a221d0d000b0b201c2f010621012002201e3602a801200220013602a401200241003602a0012002201c36029c01200241003602980120024200370390012002200436028c012002410036028801200241f0016a20024188016a109901024020022802f0014101470d00202941306a211c0340200241900a6a41286a200341286a280200360200200b200341206a2902003703002006200341186a2204290200370300202a200341106a2201290200370300202b200341086a2205290200370300200220032902003703900a200241c0016a41186a2004290000370300200241c0016a41106a2001290000370300200241c0016a41086a2005290000370300200220032900003703c001200241e0016a41086a200b41086a2802003602002002200b2902003703e001200241b0016a201c200241c0016a200241e0016a10bd01024020022802b001450d0020022802b4012204450d0020022802b801450d002004102a0b200241f0016a20024188016a10990120022802f0014101460d000b0b20024188016a1095010c010b202941386a212b202941306a212a202928023821262029280230210402400240202941346a28020022050d00200421010c010b2005210620042101034020012802ec0321012006417f6a22060d000b0340200420042f01064102746a41ec036a28020021042005417f6a22050d000b0b200220263602900220024100360288022002410036028002200242003703f801200220013602f401200241003602f0012002200436028402200220042f010636028c02200241f0016a109501202941286a201437030020292016370320202941106a2015370300202920173703082029201b37031820292007370300202a201d360204202a201c360200202b201e3602002029201a3a003c2029413d6a2002290368370000202941c5006a2025290300370000202941cd006a2024290300370000202941d5006a2023290300370000202920183b015e202920193a005d0b200241f0016a200210930120022903900222074202520d000b0b2002109b012000200028020041016a360200200241f00c6a24000f0b41a8b8c0004110200241f0016a41d0b8c0001038000bf00203027f017e037f230041306b22052400024002400240200241ff0171417e6a220641024b0d000240024020060e03000201000b200520011099022005290300200358200541086a290300220720045820072004511b0d010c020b200541106a20011099022005290310200356200541186a290300220720045620072004511b0d010b200541206a2001109a020240200528022822010d0002402005280224450d002005280220102a0b410021010c020b200141057421061098012108200528022421092005280220220a2101024002400240034002402008200141106a2802004f0d002001290300200358200141086a290300220720045820072004511b0d002001411c6a2d000020027141ff0171200241ff0171460d020b200141206a2101200641606a22060d000b4100210120090d010c020b4184dfc00021012009450d010b200a102a0b413121060c010b41dedec0002101412621060b2000200636020420002001360200200541306a24000bc31e03087f037e127f23004180076b22042400200441e0006a41186a200241186a290000370300200441e0006a41106a200241106a290000370300200441e0006a41086a200241086a290000370300200420022900003703600240024002400240024002400240024002402001280200220541f8b9c000460d00200128020421060c010b41002106200441e8026a410041e0021099051a200441c0016a41004184011099051a41ec0310282205450d01200541003b010620054100360200200541086a200441e8026a41e002109a051a200541e8026a200441c0016a418401109a051a20014100360204200120053602000b02400340200541086a2107200541066a210820052f0106220941057421024100210a0240024003402002450d01200441e0006a20074120109c05220b450d02200241606a2102200a41016a210a200741206a2107200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200520094102746a41ec036a28020021050c010b0b200441e8026a41086a22022005200a410c6c6a220741f0026a220a2802003602002004200741e8026a22072902003703e80220072003290200370200200a200341086a280200360200200441c0016a41086a20022802002202360200200420042903e802220c3703c0012000410c6a20023602002000200c370204200041013602000c060b200441086a41186a220b200441e0006a41186a2202290300370300200441086a41106a200441e0006a41106a2207290300220c370300200441086a41086a200441e0006a41086a220a290300220d37030020042004290360220e3703082001200128020841016a3602082007200c370300200a200d3703002002200b2903003703002004200e370360200441d8026a41086a2206200341086a280200360200200420032902003703d802024020082f01002203410b490d00200441e8026a410041e0021099051a200441c0016a41004184011099051a41ec031028220f450d02200f41003b0106200f4100360200200f41086a200441e8026a41e002109a052107200f41e8026a200441c0016a418401109a05210a200441e8026a41086a220b200541b8036a280200360200200420052900db013703a8012004200541e0016a2900003700ad01200420052902b0033703e802200420052f00c8013b01bc012004200541ca016a2d00003a00be01200541cb016a2800002110200541cf016a2800002111200541d3016a2800002112200541d7016a28000021132007200541e8016a20052f010641796a2202410574109a052107200a200541bc036a2002410c6c109a05210a200541063b0106200f20023b0106200420042f01bc013b01a401200420042d00be013a00a601200420042903a8013703c001200420042900ad013700c501200441286a41086a200b280200360200200420042903e8023703280240024020094107490d00200941057420076a41c07e6a2007200941796a220b4105746a2207200241ffff0371200b6b410574109b051a200741186a200441e0006a41186a290300370000200741106a200441e0006a41106a290300370000200741086a200441e0006a41086a290300370000200720042903603700002009410c6c200a6a220241b87f6a200241ac7f6a2202200f41066a22082f0100200b6b410c6c109b051a200241086a200441d8026a41086a280200360200200220042903d8023702000c010b200541086a20094105746a220241206a200220082f010020096b410574109b051a200241186a200441e0006a41186a290300370000200241106a200441e0006a41106a290300370000200241086a200441e0006a41086a29030037000020022004290360370000200541e8026a2009410c6c6a2202410c6a200220082f010020096b410c6c109b051a200241086a200441d8026a41086a280200360200200220042903d8023702000b200820082f010041016a3b010020044198016a41026a220220042d00a6013a0000200441c8026a41086a2214200441286a41086a280200360200200420042f01a4013b019801200420042903c001370350200420042900c501370055200420042903283703c8022004413c6a41026a221520022d00003a0000200420042f0198013b013c2004200429005537002d20042004290350370328200441c0006a41086a22162014280200360200200420042903c80237034020052802002206450d0420052f01042103200441e8026a4102722117034020044194016a41026a221820152d00003a0000200420042f013c3b019401200420042903283703602004200429002d37006520044198016a41086a221920162802003602002004200429034037039801200341ffff0371210502400240024020062f01062202410b490d00201741004196041099051a419c041028220b450d07200b4100360200200b41046a200441e8026a419804109a051a200420062f00c8013b01bc012004200641ca016a2d00003a00be012004200641db016a2900003703a8012004200641e0016a2900003700ad01200641cb016a280000211a200641cf016a280000211b200641d3016a280000211c200641d7016a280000211d200441e8026a41086a221e200641b8036a2802003602002004200641b0036a2902003703e802200b41086a200641e8016a20062f0106220741796a2202410574109a05211f200b41e8026a200641bc036a2002410c6c109a052120200b41ec036a20064188046a2007417a6a2209410274109a052108200641063b0106200b20023b010602402009450d00410021022008210703402007280200220a20023b0104200a200b360200200741046a21072009200241016a2202470d000b0b200441d8026a41086a2202201e280200360200200420042d00be0122073a00a601200420042f01bc01220a3b01a401200420042903a8013703c001200420042900ad013700c501200420042903e8023703d802200441c4026a41026a220920073a00002004200a3b01c402200420042903c0013703e802200420042900c5013700ed0220142002280200360200200420042903d8023703c802200341ffff037122074107490d01201f2005417a6a220a4105746a201f200541796a22024105746a2207200b2f010620026b410574109b051a200741186a20042900653700002007201336000f2007201236000b2007201136000720072010360003200741026a20182d00003a0000200720042f0194013b0000200720042903603700132005410c6c20206a220741b87f6a200741ac7f6a2207200b2f0106220320026b410c6c109b051a200741086a20192802003602002007200429039801370200200b200341016a22073b01062005410274221020086a416c6a2008200a4102746a2203200741ffff03712205200a6b410274109b051a2003200f3602002005200a490d02200b20106a41d4036a210703402007280200220a200241016a22023b0104200a200b360200200741046a210720022005490d000c030b0b200641086a2207200541016a220a4105746a200720054105746a2207200220056b410574109b051a200741186a20042900653700002007201336000f2007201236000b2007201136000720072010360003200741026a20044194016a41026a2d00003a0000200720042f0194013b00002007200429036037001320062005410c6c6a220241f4026a200241e8026a220720062f0106220b20056b410c6c109b051a200241f0026a20044198016a41086a28020036020020072004290398013702002006200b41016a22023b01062005410274200641ec036a22076a41086a2007200a4102746a2207200241ffff0371220b200a6b410274109b051a2007200f360200200341ffff0371200b4f0d082006200a417f6a22024102746a41f0036a210703402007280200220a200241016a22023b0104200a2006360200200741046a21072002200b490d000c090b0b200641086a2202200541016a22034105746a200220054105746a220220062f010620056b410574109b051a200241186a20042900653700002002201336000f2002201236000b2002201136000720022010360003200241026a20182d00003a0000200220042f0194013b000020022004290360370013200641e8026a2005410c6c6a2202410c6a200220062f0106220a20056b410c6c109b051a200241086a201928020036020020022004290398013702002006200a41016a22023b010620054102742210200641ec036a220a6a41086a200a20034102746a2208200241ffff0371220a20036b410274109b051a2008200f3602002007200a4f0d00200620106a41f0036a2102034020022802002207200541016a22053b010420072006360200200241046a2102200a2005470d000b0b20044190016a41026a220220092d00003a000020044180016a41086a22072014280200360200200420042f01c402220a3b019001200420042903e802370350200420042900ed02370055200420042903c80237038001201520022d00003a00002004200a3b013c2004200429005537002d200420042903503703282016200728020036020020042004290380013703400240200628020022020d00201a2110201d2113201c2112201b2111200b210f0c060b20062f01042103201a2110201d2113201c2112201b211120022106200b210f0c000b0b200520094105746a220b41286a200b41086a2201200320096b410574109b051a200b41206a2002290300370000200b41186a2007290300370000200b41106a200a2903003700002001200429036037000020052009410c6c6a220241f4026a200241e8026a220720052f010620096b410c6c109b051a200241f0026a2006280200360200200720042903d802370200200520052f010641016a3b01060c040b41ec0341041037000b41ec0341041037000b419c0441041037000b200441e8026a41027241004196041099051a419c0410282202450d0220024100360200200241046a200441e8026a419804109a051a2002200128020022073602ec03200120023602002001200128020441016a360204200741003b010420072002360200200220022f0106220a4105746a220741086a20042f013c3b00002007410a6a2004413c6a41026a2d00003a0000200741176a2013360000200741136a20123600002007410f6a20113600002007410b6a20103600002007411b6a2004290328370000200741206a200429002d3700002002200a410c6c6a220741f0026a200441c0006a41086a280200360200200741e8026a2004290340370200200241ec036a200a41016a22074102746a200f360200200220073b0106200f20073b0104200f20023602000b200041003602000b20044180076a24000f0b419c0441041037000bc50101057f230041306b220124002000410c6a28020021022000280204210302400240200041086a28020022040d00200321000c010b2004210520032100034020002802880b21002005417f6a22050d000b0340200320032f01064102746a41880b6a28020021032004417f6a22040d000b0b200141246a20032f0106360200200141206a41003602002001411c6a20033602002001200236022820014100360218200142003703102001200036020c20014100360208200141086a109b01200141306a24000bcb0401097f230041c0006b220324000240200128020041016a220441004c0d0020012004360200200141046a2105200141086a280200210602400240024003402005280200220741086a210820072f0106220941057421054100210a0240024003402005450d01200220084120109c05220b450d02200541606a2105200a41016a210a200841206a2108200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200720094102746a41880b6a21050c010b0b2007200a41e0006c6a220841e8026a210502400240200841c5036a2d00000d00200341206a41086a220a200541c5006a290000370300200341206a41106a220b200541cd006a290000370300200341206a41186a2207200541d5006a29000037030020032005413d6a2900003703204102210820052d003c4101470d01200341186a2007290300370300200341106a200b290300370300200341086a200a29030037030020032003290320370300410121080c010b200341086a200541c5006a290000370300200341106a200541cd006a290000370300200341186a200541d5006a29000037030020032005413d6a29000037030020052d003c21080b200841ff01714102470d010b200020012802102002200141146a280200280210110500200128020021040c010b200020083a000020002003290300370001200041096a200341086a290300370000200041116a200341106a290300370000200041196a200341186a2903003700000b20012004417f6a360200200341c0006a24000f0b41b8b8c0004118200341206a41e0b8c0001038000be80202097f027e230041206b220324000240200128020041016a220441004c0d0020012004360200200141046a2105200141086a28020021060240024003402005280200220741086a210820072f0106220941057421054100210a0240024003402005450d01200220084120109c05220b450d02200541606a2105200a41016a210a200841206a2108200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200720094102746a41880b6a21050c010b0b2007200a41e0006c6a220541c5036a310000200541e8026a290300220c200c5022081ba7450d004200200541f8026a29030020081b210c4200200541f0026a29030020081b210d0c010b200341086a20012802102002200141146a28020028021c110500200341106a290300210c200128020021042003290308210d0b20012004417f6a3602002000200c3703082000200d370300200341206a24000f0b41b8b8c0004118200341186a41e0b8c0001038000ba62a020c7f037e230022072108200741800f6b41607122072400200720043703382007200337033020072005360244024002400240024002402001280230200128024022092802b801460d002005420020052903082203200941386a2903007d2204200420035622091b37030820090d0120074180046a20024100410110c201200741a4046a280200210a200741a0046a280200210b20072d008804220541037122094103460d0220090e03030203030b200041d4c5c00036020420004101360200200041086a41293602002000410c6a2006290200370200200041146a200641086a2802003602000c030b200041fdc5c00036020420004101360200200041086a41233602002000410c6a2006290200370200200041146a200641086a280200360200200824000f0b200041a0c6c00036020420004101360200200041086a41193602002000410c6a2006290200370200200041146a200641086a28020036020020050d01200a450d01200b102a200824000f0b200741a8046a2802002109200741c8006a41186a220c200141e8006a290000370300200741c8006a41106a220d200141e0006a290000370300200741c8006a41086a220e200141d8006a290000370300200720012900503703484100210f4100211002400240024002400240024002400240024002400240024002400240024020050d002009417f4c0d010240024020090d002007420037038004410121100c010b200910282210450d03200741003602840420072009360280040b20072009360284042010200b2009109a051a2007290380042103200a450d00200b102a0b200741a4016a410036020020074194016a419cc4c000360200200741e8006a41206a420037030020074184016a41f8b9c000360200200741e8006a41106a2003370300200741e8006a41d8006a200241086a290000370300200741e8006a41e0006a200241106a290000370300200741e8006a41e8006a200241186a29000037030020072001360270200741e8006a41286a200141186a22113602002007420837029c01200741003602800120072010360274200720022900003703b801200720012802483602b001200720012903403703a8012007200128023041016a36029801200129030021032007200128024c3602b40120072003370368200741d8016a41206a200e290300370300200741d8016a41286a200d29030037030020074188026a200c290300370300200741ec016a200641086a280200360200200720023602e001200720072903483703f001200720062902003702e4012007200741c4006a3602dc012007200741306a3602d8010240024020072903302203200741306a41086a290300220484500d00200741286a20072802444100200741f0016a200220032004200741e8006a10b801200728022822060d01200728028001210f20072802e00121020b200f41016a220d41004c0d03200741d8016a41186a210e200741e4016a210f2007200d36028001200741e8006a41206a280200210a20074184016a2212210602400240024003402006280200220b41086a2105200b2f0106220c4105742106410021090240024003402006450d01200220054120109c052210450d02200641606a2106200941016a2109200541206a21052010417f4a0d000b2009417f6a210c0b200a450d02200a417f6a210a200b200c4102746a41880b6a21060c010b0b200b200941e0006c6a220541e8026a210602400240200541c5036a2d00000d0020074180046a41086a2209200641c5006a29000037030020074180046a41106a2210200641cd006a29000037030020074180046a41186a220b200641d5006a29000037030020072006413d6a290000370380044102210520062d003c4101470d01200741a00c6a41186a200b290300370300200741a00c6a41106a2010290300370300200741a00c6a41086a200929030037030020072007290380043703a00c410121050c010b200741a80c6a200641c5006a290000370300200741b00c6a200641cd006a290000370300200741b80c6a200641d5006a29000037030020072006413d6a2900003703a00c20062d003c21050b200541ff01714102470d010b20074190026a2007280290012002200728029401280210110500200728028001210d20072d00900221050c010b20074199026a200741a80c6a290300370000200741a1026a200741b00c6a290300370000200741a9026a200741b80c6a290300370000200720053a009002200720072903a00c370091020b2007200d417f6a360280014101210a0240200541ff01714101470d00200741b8026a41186a200741a9026a290000370300200741b8026a41106a200741a1026a290000370300200741b8026a41086a20074199026a29000037030020072007290091023703b80220074180046a200741b8026a20072802b00128020010b90102402007280280044101470d0020072902e4012203422088a7210520074180046a41086a28020021092007280284042106200741ec016a28020021102003a721020c100b200741a00c6a41186a220520074180046a410472220641186a2802002209360200200741d8026a41106a200641086a290200370300200741d8026a41186a200641106a290200370300200741f8026a2009360200200741043602dc02200741af8dc6003602d802200720062902003703e00220072802ac0121062005200e41186a2900002203370300200741a00c6a41106a200e41106a2900002204370300200741a00c6a41086a2205200e41086a2900002213370300200741a8046a2013370300200741b0046a2004370300200741b8046a20033703002007200e29000022033703a00c200720033703a00420072802d801220941086a29030021032007200741e8006a36029804200929030021042007290368211320072802b4012109200720033703880420072004370380042007200936029c0420072013370390042005200f41086a2802003602002007200f2902003703a00c200741e0036a2006200741d8026a20074180046a200741a00c6a20072802dc0128020010ba01200741ec036a2902002103200741e0036a41086a280200210c20072802e403210a024020072802e0034101470d002003422088a72105200741f4036a28020021102003a72102200c2109200a21060c0f0b20072802800141016a220f41004c0d0520072802e00121022007200f36028001200728028801210d201221060240024003402006280200220b41086a2105200b2f0106220e4105742106410021090240024003402006450d01200220054120109c052210450d02200641606a2106200941016a2109200541206a21052010417f4a0d000b2009417f6a210e0b200d450d02200d417f6a210d200b200e4102746a41880b6a21060c010b0b200b200941e0006c6a220641c5036a310000200641e8026a290300220420045022051ba7450d004200200641f8026a29030020051b21044200200641f0026a29030020051b21130c010b200741186a200728029001200220072802940128021c110500200741206a290300210420072903182113200728028001210f0b2007200f417f6a221036028001201320072802a801220629037854200420064180016a29030022135420042013511b0d060c070b4100210c420021030240200741e8016a280200450d0020072802e401102a0b420021040c070b200728022c210920072902e4012203422088a721052003a72102200741ec016a28020021100c0d0b1036000b200941011037000b41b8b8c000411820074180046a41e0b8c0001038000b41b8b8c000411820074180046a41e0b8c0001038000b20072802702206450d020240024020072802e0012205200641d0006a2209460d00200920054120109c05450d00034020062802082206450d022005200641d0006a2209460d01200920054120109c050d000b0b2003a7211041b9c6c000210641372109200c2105200a21020c080b20100d032007417f36028001200741003a00bc03200742003702b403200741013a009d03200741f8b9c0003602b003200741e0036a41186a200541186a290000370300200741e0036a41106a200541106a290000370300200741e0036a41086a200541086a290000370300200720052900003703e00302400240200728028401221041f8b9c000460d00200728028801210b0c010b200741a00c6a410041e0021099051a20074180046a410041a0081099051a41880b10282210450d054100210b201041003b010620104100360200201041086a200741a00c6a41e002109a051a201041e8026a20074180046a41a008109a051a200741003602880120072010360284010b02400240034020102f0106220d4105742102410021064100210502400240034020022006460d01200741e0036a201020066a41086a4120109c052209450d02200641206a2106200541016a21052009417f4a0d000b2005417f6a210d0b200b450d02200b417f6a210b2010200d4102746a41880b6a28020021100c010b0b2010200541e0006c6a22064190036a20072903a80337030020064188036a20072903a003370300200641c0036a200729039803370000200641b8036a200729039003370000200641b0036a200729038803370000200641a8036a20072903800337000020064180036a4200370300200641e8026a2205290300211320054200370300200641a0036a22052802002102200520072903b80337030020064198036a22062903002104200620072903b0033703002004a721062004422088a721050c010b200741c0036a41186a200741e0036a41186a2903002204370300200741c0036a41106a200741e0036a41106a2903002213370300200741c0036a41086a200741e0036a41086a2903002214370300200720072903e00322153703c003200741bc0c6a2014370200200741a00c6a41246a2013370200200741cc0c6a20043702002007200741e8006a41246a3602b00c2007200d3602ac0c200720123602a80c200720103602a40c200741003602a00c200720153702b40c20074180046a41186a42003703002007420037038004200741b8046a20072903b803370300200741b0046a20072903b003370300200741a8046a20072903a803370300200741a0046a20072903a003370300200741d8046a200729039803370300200741d0046a200729039003370300200741c8046a200729038803370300200741c0046a200729038003370300200741a00c6a20074180046a10b7011a420221130b024020134202510d000240024020050d00200621090c010b2005211020062109034020092802ec0321092010417f6a22100d000b0340200620062f01064102746a41ec036a28020021062005417f6a22050d000b0b2007419c046a20062f010636020020074198046a410036020020074194046a2006360200200720023602a004200741003602900420074200370388042007200936028404200741003602800420074180046a1095010b200720072802800141016a360280010b0240200741f0026a280200450d00200741ec026a280200102a0b200342ffffffff0f83210420034280808080708321030b20072802a401210520072802a001210d200728029c01210b200728028c01210e20072802880121102007280284012106024020072802742209450d00200741f8006a280200450d002009102a0b200420038421040240024020034280808080f01f8350450d002007200e3602880420072010360284042007200636028004201120074180046a10bb012007200d360284042007200b360280042007200b200541b0016c22056a220236028c0402400240200141386a28020022092001413c6a28020022066b200541b0016d2210490d00200128023421090c010b200620106a220d2006490d0720094101742206200d2006200d4b1b2206ad42b0017e2203422088a70d072003a7220d4100480d070240024020090d00200d102821090c010b2001280234200941b0016c200d102c21090b2009450d0620012009360234200141386a20063602002001413c6a28020021060b2009200641b0016c6a200b2005109a051a2001413c6a2206200628020020106a360200200720023602880420074180046a10692000410c6a2004370200200041086a200c3602002000200a3602040c010b2000200a3602042000410c6a2004370200200041086a200c36020002402005450d00200541b0016c210141002105034002400240200b20056a22092d0000220241014b0d000240024020020e020001000b0240200941086a280200450d00200941046a280200102a0b200941106a2d00004105490d02200941386a280200450d02200941346a280200102a0c020b200941286a106a0c010b200941e8006a280200450d00200941e4006a280200102a0b2001200541b0016a2205470d000b0b0240200d450d00200b102a0b0240024020100d00200621050c010b2010210920062105034020052802880b21052009417f6a22090d000b0340200620062f01064102746a41880b6a28020021062010417f6a22100d000b0b2007419c046a20062f010636020020074198046a410036020020074194046a20063602002007200e3602a004200741003602900420074200370388042007200536028404200741003602800420074180046a109b010b20004100360200200824000f0b41f0c6c00041321050000b41a8b8c000411020074180046a41d0b8c0001038000b41880b41081037000b200d41081037000b1031000b200741f0026a280200450d00200741ec026a280200102a0b2000200636020420004101360200200041146a2010360200200041086a20093602002000410c6a2005ad4220862002ad84370200024020072802742206450d00200741f8006a280200450d002006102a0b200741e8006a411c6a2802002106200728028c0121000240024020072802880122050d00200621090c010b2005211020062109034020092802880b21092010417f6a22100d000b0340200620062f01064102746a41880b6a28020021062005417f6a22050d000b0b20074180046a411c6a20062f01063602004100210520074198046a410036020020074194046a2006360200200720003602a004200741003602900420074200370388042007200936028404200741003602800420074180046a109b01024020072802a4012206450d00200728029c012110200641b0016c2100034002400240201020056a22062d0000220941014b0d000240024020090e020001000b0240200641086a280200450d00200641046a280200102a0b200641106a2d00004105490d02200641386a280200450d02200641346a280200102a0c020b200641286a106a0c010b200641e8006a280200450d00200641e4006a280200102a0b2000200541b0016a2205470d000b0b20072802a001450d00200728029c01102a200824000f0b200824000b871304057f027e0a7f077e230041f0026b22042400200441d0006a2001108c010240024020042d00502205417f6a41ff017141024f0d00200041003a0000200041086a200441d0006a41d800109a051a0c010b200441a8016a41086a2206200441d0006a413c6a290200370300200441a8016a41106a2207200441d0006a41c4006a290200370300200441a8016a41186a2208200441d0006a41cc006a2902003703002004200441d0006a41346a2902003703a801200441d0006a41106a2903002109200441d0006a41086a290300210a200441d0006a41306a280200210b200441d0006a412c6a280200210c200441d0006a41246a280200210d200441d0006a41206a280200210e200441ec006a280200210f200441d0006a41186a2802002110200441d0006a41d4006a2802002111200441d0006a41286a28020021120240024002400240024002400240024002400240024041004100109801221320026b2202200220134b1b220220126b2214201420024b1b2214450d00200441c0006a2001109101200441306a20042903402215200441c0006a41086a2903002216428080a8ec85afd1b101420010a0054200200dad2217200429033022187d221920192017564200200441306a41086a2903002017201854ad7c7d22174200522017501b22021b22184200201720021b221784500d042015428080d287e2bc2d5441002016501b0d01200441186a2014ad420020182017109f05200441086a2004290318200441186a41086a290300428080e983b1de164200109f05200441286a20014108420020152015428080aef89dc3527c2217200a200a201756200920162017201554ad7c427f7c22175620092017511b22021b22182004290308221920182019542017200920021b2218200441086a41086a29030022175420182017511b22021b221a7d221b201b20155620162018201720021b22187d2015201a54ad7d221520165620152016511b22141b4200201520141b10bc010240024020042802280d000240024020020d002003450d010b20044188026a2001201a201841081098022004280288024101460d08200420044198026a2903003703f001200420044188026a41086a2903003703e8012004200441e8016a3602880220044188026a109d010b20020d0020030d01200041003a0008200041023a0000200041186a2009370000200041106a200a370000200041386a200b360000200041346a200c360000200041306a20123600002000412c6a200d360000200041286a200e360000200041246a200f360000200041206a20103600002000413c6a20042903a801370000200041c4006a200441b0016a290300370000200041cc006a200441a8016a41106a290300370000200041d4006a200441a8016a41186a290300370000200041dc006a2011360000200541037122004103460d0520000e030d05050d0b20044100360288022010200e20044188026a100d21142004280288022213417f460d07200441e8016a41186a200441a8016a41186a290300370300200441e8016a41106a200441a8016a41106a290300370300200441e8016a41086a200441a8016a41086a290300370300200420042903a8013703e801200441003602e802200442013703e00220142013200441e0026a10b2020240024020042802e402220320042802e802220d6b4120490d00200d41206a211220042802e00221020c010b200d41206a2212200d490d0a200341017422022012200220124b1b220b4100480d0a0240024020030d00200b102821020c010b20042802e0022003200b102c21020b2002450d092004200b3602e402200420023602e002200b21030b200420123602e8022002200d6a220d20042903e801370000200d41086a200441e8016a41086a290300370000200d41106a200441e8016a41106a290300370000200d41186a200441e8016a41186a29030037000020044188026a41186a220d420037030020044188026a41106a220b420037030020044188026a41086a220c420037030020044200370388022002201220044188026a1000200441c8016a41186a2212200d290300370300200441c8016a41106a220d200b290300370300200441c8016a41086a220b200c29030037030020042004290388023703c80102402003450d002002102a0b200441a1026a201229030037000020044199026a200d29030037000020044191026a200b290300370000200420042903c80137008902200441013a008802200120044188026a10b3022010200e1004200041013a0000200041086a20044188026a41d800109a051a2013450d032014102a0c030b200441b8026a200b360200200441b4026a200c360200200441b0026a2013360200200441ac026a200d360200200441a8026a200e360200200441a4026a200f36020020044188026a41186a2010360200200441bc026a20042903a801370200200441c4026a200441a8016a41086a290300370200200441cc026a200441a8016a41106a290300370200200441d4026a200441a8016a41186a29030037020020044188026a41106a200920177d200a201954ad7d370300200441003a0088022004200a20197d37039002200120044188026a10b302200041023a0000200041086a20044188026a41d800109a051a0c090b200041003a0008200041003a0000200041186a2009370000200041106a200a370000200041386a200b360000200041346a200c360000200041306a20123600002000412c6a200d360000200041286a200e360000200041246a200f360000200041206a20103600002000413c6a20042903a801370000200041c4006a2006290300370000200041cc006a2007290300370000200041d4006a2008290300370000200041dc006a20113600000c080b20011096012010200e1004200041023a0008200041013a00000b200f450d062010102a0c060b200f450d070c060b200041003a0008200041003a0000200041186a2009370000200041106a200a370000200041386a200b360000200041346a200c360000200041306a20123600002000412c6a200d360000200041286a200e360000200041246a200f360000200041206a20103600002000413c6a20042903a801370000200041c4006a200441b0016a290300370000200041cc006a200441a8016a41106a290300370000200041d4006a200441a8016a41186a290300370000200041dc006a20113600000c040b2004200429028c023703e80141f896c10041fe00200441e8016a41f897c1001038000b41eef3c50041381050000b200b41011037000b1031000b0240200541037122004103460d0020000e03020000020b200f450d010b2010102a0b200441f0026a24000be20d03047f017e027f230041106b2202240020024100360208200242013703000240024002400240024002400240024002400240024002400240024002402001280200220341044b0d000240024002400240024020030e050001020304000b410110282203450d05200242818080801037020420022003360200200341013a0000200128020421042001410c6a2802002203200210b40102402003450d002004200341286c6a2105034020042002108f01200441206a29030021060240024020022802042207200228020822036b4108490d00200228020021070c010b200341086a22082003490d15200741017422032008200320084b1b22034100480d150240024020070d002003102821070c010b200228020020072003102c21070b2007450d092002200336020420022007360200200228020821030b2002200341086a360208200720036a20063700002005200441286a2204470d000b0b200141106a28020021070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d13200441017422032008200320084b1b22034100480d130240024020040d002003102821040c010b200228020020042003102c21040b2004450d082002200336020420022004360200200228020821030b2002200341046a360208200420036a20073600000c040b410110282203450d07200242818080801037020420022003360200200341023a0000200128020421070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d12200441017422052008200520084b1b22084100480d120240024020040d002008102821040c010b200228020020042008102c21040b2004450d0920022008360204200220043602000b2002200341046a360208200420036a200736000020012802082104200141106a2802002203200210b40102402003450d002004200341286c6a2105034020042002108f01200441206a29030021060240024020022802042207200228020822036b4108490d00200228020021070c010b200341086a22082003490d14200741017422032008200320084b1b22034100480d140240024020070d002003102821070c010b200228020020072003102c21070b2007450d0c2002200336020420022007360200200228020821030b2002200341086a360208200720036a20063700002005200441286a2204470d000b0b200141146a28020021070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d12200441017422032008200320084b1b22034100480d120240024020040d002003102821040c010b200228020020042003102c21040b2004450d0b2002200336020420022004360200200228020821030b2002200341046a360208200420036a20073600000c030b410110282203450d0a200242818080801037020420022003360200200341033a0000200141086a29030021060240024020022802042207200228020822036b4108490d00200341086a2104200228020021070c010b200341086a22042003490d11200741017422082004200820044b1b22084100480d110240024020070d002008102821070c010b200228020020072008102c21070b2007450d0c20022008360204200220073602000b20022004360208200720036a20063700000c020b410110282203450d0b200242818080801037020420022003360200200341043a0000200128020421070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d10200441017422012008200120084b1b22084100480d100240024020040d002008102821040c010b200228020020042008102c21040b2004450d0d20022008360204200220043602000b2002200341046a360208200420036a20073600000c010b410110282203450d0c200242818080801037020420022003360200200341053a0000200128020421080240024020022802042207200228020822036b4104490d00200341046a2104200228020021070c010b200341046a22042003490d0f200741017422012004200120044b1b22014100480d0f0240024020070d002001102821070c010b200228020020072001102c21070b2007450d0e20022001360204200220073602000b20022004360208200720036a20083600000b20002002290300370200200041086a200241086a280200360200200241106a24000f0b410141011037000b200341011037000b200341011037000b410141011037000b200841011037000b200341011037000b200341011037000b410141011037000b200841011037000b410141011037000b200841011037000b410141011037000b200141011037000b1031000bfb0101077f230041106b220124002001410036020820014201370300200110c40120012802042102200128020021030240024002400240200041046a2802002204200041086a28020022056b20012802082206490d00200028020021040c010b200520066a22072005490d02200441017422052007200520074b1b22054100480d020240024020040d002005102821040c010b200028020020042005102c21040b2004450d0120002004360200200041046a2005360200200041086a28020021050b200041086a200520066a360200200420056a20032006109a051a02402002450d002003102a0b200141106a24000f0b200541011037000b1031000ba5900108027f017e0b7f037e2f7f027e057f0e7e23004190106b220224000240024002400240024002400240024002400240024002400240200141106a2802002203ad42d0007e2204422088a70d002004a72205417f4c0d00200128020821060240024002400240024002400240024020050d00410821070c010b200510282207450d010b0240024020030d00410021080c010b2006200341d0006c6a2109410021082007210a0340200241c8046a41186a220b200641186a290300370300200241c8046a41106a220c200641106a290300370300200241c8046a41086a220d200641086a290300370300200220062903003703c8042006280248220ead42307e2204422088a70d082004a7220f417f4c0d08200641386a2903002104200641286a290300211020062903302111200629032021122006280240210502400240200f0d00410821130c010b200f10282213450d040b200641d0006a210602400240200e0d00410021140c010b2005200e41306c6a2115410021142013210f0340200f2005290300370300200f200541086a290300370308200f41106a200541106a290300370300200f41186a200541186a290300370300200f41206a200541206a290300370300200f41286a200541286a290300370300200f41306a210f201441016a2114200541306a22052015470d000b0b200a2012370320200a20022903c804370300200a41386a2004370300200a41306a2011370300200a41286a2010370300200a41c8006a2014360200200a41c4006a200e360200200a41c0006a2013360200200a41186a200b290300370300200a41106a200c290300370300200a41086a200d290300370300200841016a2108200a41d0006a210a20062009470d000b0b200028020821162000280204211720002802002118200128020421192001280200210b41041028221a450d02201a200b36000020024284808080c0003702bc072002201a3602b807411b10282205450d03200541176a41002800f39646360000200541106a41002900ec9646370000200541086a41002900e49646370000200541002900dc96463700002002429b808080b00337028c08200220053602880841a2c7c00020024188086a10c601200228029008210f2002280288082105200241c8046a41186a22144200370300200241c8046a41106a22154200370300200241c8046a41086a22064200370300200242003703c8042005200f200241c8046a1000200241b00f6a41186a2014290300370300200241b00f6a41106a2015290300370300200241b00f6a41086a2006290300370300200220022903c8043703b00f0240200228028c08450d002005102a0b2002410036028808200241b00f6a412020024188086a100621142002280288082215417f460d042014450d042002201536028c082002201436028808200241d0026a20024188086a106c02400240024020022802d0020d00200228028c08220620022802d402220f490d00200f417f4c0d0902400240200f0d00410121050c010b200f102e2205450d022005200228028808220a200f109a051a20022006200f6b36028c082002200a200f6a360288080b20050d020b41c4d1c3004133200241f8056a419cd9c3001038000b200f41011037000b200fad220442208620048421042015450d052014102a0c050b200541081037000b200f41081037000b410441011037000b411b41011037000b410021050b20022005410120051b22133602b00f20022004420020051b22104220883e02b40f200241c8026a200241b00f6a106c20022802cc02210e41002106024020022802c8020d0020022802b40f220541246e220a41246c220f417f4c0d0102400240024002400240200f0d00410421060c010b200f10282206450d010b200e450d034100210c034020054104490d03200c41016a210d20022005417c6a22143602b40f200220022802b00f221541046a3602b00f2015280000210941002105200241003a00a8080340024020142005470d00200241003602b40f200541ff0171450d05200241003a00a8080c050b20024188086a20056a201520056a220f41046a2d00003a00002002200f41056a3602b00f2002200541016a220f3a00a808200f2105200f4120470d000b200241c8046a41086a221520024188086a41086a290300370300200241c8046a41106a220020024188086a41106a290300370300200241c8046a41186a221b20024188086a41186a29030037030020022002290388083703c80420022014200f6b22053602b40f0240200a200c470d00200c410174220f200d200f200d4b1b220aad42247e2204422088a70d122004a7220f4100480d1202400240200c0d00200f102821060c010b2006200c41246c200f102c21060b2006450d030b2006200c41246c6a220f2009360200200f20022903c804370204200f410c6a2015290300370200200f41146a2000290300370200200f411c6a201b290300370200200d210c200d200e470d000c040b0b200f41041037000b200f41041037000b0240200a0d00410021060c010b2006102a410021060b200241b00f6a200241b8076a10c70120022802b80f210f20022802b00f210520024100360288082005200f20024188086a1006210f024002402002280288082214417f460d00200f450d00200220143602dc062002200f3602d80620024188086a200241d8066a106d0240200228028808221c450d00200229028c0821042014450d02200f102a0c020b41c4d1c3004133200241f8056a419cd9c3001038000b420021044101211c0b024020022802b40f450d002005102a0b2004422088211102402010a7450d002013102a0b200e410020061b211d200a410020061b211e2006410420061b210c2011a7211f2004a72120200242003702dc02200241f8b9c0003602d8022007200841d0006c6a21210240024020080d00200721130c010b200241b8036a41306a212220024188086a410c6a212320164101742205201641ffffff3f712224200520244b1b222541ffffff3f71202547212620254105742127202420164721282016410574222941606a41057641016a212a20024188086a41306a212b20024188086a41206a212c20024188086a410272212d20024198056a41046a212e20024188086a41c0006a212f200241b00f6a41106a2130200241b8076a4104722131200241b8036a41c4006a21322018201820296a4621332007211302400240034020024188086a41386a22062013220541386a290300370300202b200541306a29030037030020024188086a41286a220a200541286a290300370300202c200541206a29030037030020024188086a41186a2234200541186a29030037030020024188086a41106a2235200541106a29030037030020024188086a41086a2236200541086a290300370300200241b00f6a41086a221b200541cc006a28020036020020022005290300370388082002200541c4006a2902003703b00f200541d0006a2113200541c0006a2802002205450d03200241f8026a41386a220f2006290300370300200241f8026a41306a2214202b290300370300200241f8026a41286a2215200a290300370300200241f8026a41206a220e202c290300370300200241f8026a41186a220d2034290300370300200241f8026a41106a22092035290300370300200241f8026a41086a22002036290300370300200241e8026a41086a2237201b28020036020020022002290388083703f802200220022903b00f3703e802200241b8036a41386a2238200f29030037030020222014290300370300200241b8036a41286a22392015290300370300200241b8036a41206a2215200e290300370300200241b8036a41186a223a200d290300370300200241b8036a41106a223b2009290300370300200241b8036a41086a223c2000290300370300200220022903f8023703b803200220053602f803203220022903e802370200203241086a20372802003602000240024002400240024002400240410410282214450d002014200b360000202341002900a2c740370000202341086a41002900aac74037000020024284808080c00037028c0820022014360288082002200241b8036a3602a408410810282205450d01200242083702b40f200220053602b00f2023200241b00f6a10c6014104200241b00f6a10b4010240024020022802b40f220f20022802b80f22056b4104490d0020022802b00f210f0c010b200541046a220e2005490d18200f4101742205200e2005200e4b1b22054100480d1802400240200f0d0020051028210f0c010b20022802b00f200f2005102c210f0b200f450d03200220053602b40f2002200f3602b00f20022802b80f21050b2002200541046a3602b80f200f20056a2014280000360000200241b8036a200241b00f6a108f01200220153602b807200241b8076a200241b00f6a10a301200220223602b807200241b8076a200241b00f6a10a30120022802f8032105200228028004220f200241b00f6a10b4010240200f450d00200f41306c210f0340200541106a200241b00f6a108f01200220053602b807200541306a2105200241b8076a200241b00f6a10a301200f41506a220f0d000b0b20022802b40f210f20022802b80f211520022802b00f2105200241c8046a41186a220d4200370300200241c8046a41106a22094200370300200241c8046a41086a22004200370300200242003703c80420052015200241c8046a100020024188046a41186a223d200d29030037030020024188046a41106a223e200929030037030020024188046a41086a223f2000290300370300200220022903c804370388040240200f450d002005102a0b2014102a411010282205450d032005410029008ab7402204370000200541086a4100290092b740221037000020024290808080800237028c082002200536028808200220024188086a3602b80720024188046a200241b8076a10c8012002280288082105200228029008210f200d42003703002009420037030020004200370300200242003703c8042005200f200241c8046a1000200241b00f6a41186a2240200d29030037030020302009290300370300201b2000290300370300200220022903c8043703b00f0240200228028c08450d00200228028808102a0b200241b00f6a41204101410041001003417f460d050c040b410441011037000b410841011037000b200541011037000b411041011037000b20022802fc03450d0120022802f803102a0c010b200241a8046a41186a2241203a290300370300200241a8046a41106a223a203b290300370300200241a8046a41086a223b203c290300370300200220022903b8033703a804200228028004220ead42307e2211422088a70d052011a7220f417f4c0d05203829030021112039290300211220022903e803214220022903d803214320022802f8032105024002400240024002400240024002400240024002400240200f0d00410821370c010b200f10282237450d010b02400240200e0d00410021140c010b2005200e41306c6a2115410021142037210f0340200f2005290300370300200f200541086a290300370308200f41106a200541106a290300370300200f41186a200541186a290300370300200f41206a200541206a290300370300200f41286a200541286a290300370300200f41306a210f201441016a2114200541306a22052015470d000b0b200241b00f6a41386a2011370300200241b00f6a41286a2012370300204020412903003703002030203a290300370300201b203b290300370300200220423703e00f200220433703d00f200220022903a8043703b00f200220143602f80f2002200e3602f40f200220373602f00f0240024020022802d802220541f8b9c000460d0020022802dc02210f0c010b20024188086a410041f0061099051a41f80610282205450d024100210f200541003b010620054100360200200541086a20024188086a41f006109a051a200241003602dc02200220053602d8020b2002200536028c082002200f360288082002200241d8026a36029008200241b8076a20024188086a200241b00f6a10c901024020022802b8074101470d00202f20312902003702002036203041086a2903003703002035203041106a2903003703002034203041186a290300370300202c203041206a290300370300200a203041286a290300370300202b203041306a2903003703002006203041386a290300370300202f41086a203141086a290200370200200220302903003703880820022802bc0f2115202e41086a220f201b280200360200202e20022903b00f370200200241c8046a20024188086a41d000109a051a200241a8056a200241c8046a41d000109a051a200220022802e00241016a3602e00220022802f005214120022802f405211420022802ec052105200241d8066a41086a22442000290300370300200241d8066a41106a220e2009290300370300200241d8066a41186a2237200d290300370300200241d8066a41206a2239200241c8046a41206a290300370300200241d8066a41286a223a200241c8046a41286a290300370300200241d8066a41306a223b200241c8046a41306a290300370300200241d8066a41386a223c200241c8046a41386a290300370300200241c8066a41086a2245200f280200360200200220022903c8043703d8062002202e2902003703c80620052f01062238410b490d0520024188086a410041f0061099051a41f80610282238450d03203841003b010620384100360200203841086a20024188086a41f006109a05210f20024188086a4108200541086a2246200541f8b9c0004622471b224841e0036a41d000109a051a200f204841b0046a20052f010641796a224841d0006c109a05210f200541063b0106203820483b0106200241b00f6a20024188086a41d000109a051a0240024020144107490d00201441d0006c4108200f203841f8b9c0004622061b6a220f41a07c6a200f41d07b6a220f4100204841ffff037120061b20146b41d0006c41b0046a109b051a200f201536020c200f41086a2045280200360200200f20022903c806370300200f20022903d806370310200f41186a2044290300370300200f41206a200e290300370300200f41286a2037290300370300200f41306a2039290300370300200f41386a203a290300370300200f41c0006a203b290300370300200f41c8006a203c290300370300203820382f010641016a3b01060c010b4108210f200241a8076a41086a200241c8066a41086a28020036020020024188086a41086a200241d8066a41086a2903003703002035200e29030037030020342037290300370300202c2039290300370300200a203a290300370300202b203b2903003703002006203c290300370300200220022903c8063703a807200220022903d80637038808024002402047450d004100210e0c010b20052f0106210e2046210f0b200f201441d0006c6a220f41d0006a200f200e20146b41d0006c109b051a200f201536020c200f41086a200241a8076a41086a280200360200200f20022903a807370300200f200229038808370310200f41186a2036290300370300200f41206a2035290300370300200f41286a2034290300370300200f41306a202c290300370300200f41386a200a290300370300200f41c0006a202b290300370300200f41c8006a2006290300370300200520052f010641016a3b01060b200241b8076a200241b00f6a41d000109a051a200241f8056a200241b8076a41d000109a051a2005280200220e450d0620052f010421370340200241d8066a200241f8056a41d000109a051a203741ffff0371210602400240024002400240200e2f01062205410b490d00202d410041a2071099051a41a80710282215450d0a20154100360200201541046a20024188086a41a407109a051a20024188086a4108200e41086a223b200e41f8b9c00046223c1b220541e0036a41d000109a051a201541086a223a200541b0046a200e2f0106220541796a220f41d0006c109a051a201541f8066a200e4194076a2005417a6a220a410274109a052139200e41063b01062015200f3b01060240200a450d00410021052039210f0340200f280200221420053b010420142015360200200f41046a210f200a200541016a2205470d000b0b200241b00f6a20024188086a41d000109a051a200241b8076a200241b00f6a41d000109a051a203741ffff037122054107490d0320024188086a200241d8066a41d000109a051a200641796a210541f8b9c0002114201541f8b9c000470d014108213a4100210a0c020b4108200e41086a200e41f8b9c0004622141b200641d0006c6a220f41d0006a200f4100200520141b20066b41d0006c109b051a200f200241d8066a41d000109a051a200e200e2f010641016a220f3b01062006410274200e41f8066a22146a41086a2014200641016a22054102746a2214200f41ffff0371220f20056b410274109b051a201420383602002006200f4f0d0c203820053b01042038200e3602002005200f4f0d0c200f417f6a2115200e2005417f6a22054102746a4180076a210f0340200f2802002214200541026a3b01042014200e360200200f41046a210f2015200541016a2205470d000c0d0b0b20152f0106210a201521140b203a2006417a6a220f41d0006c6a203a200541d0006c6a2237200a20056b41d0006c109b051a203720024188086a41d000109a051a201520152f010641016a220a3b01062006410274223720396a416c6a2039200f4102746a2206200a41ffff0371200f6b410274109b051a20062038360200200f20142f010622064b0d01201520376a41e0066a210f0340200f2802002214200541016a22053b010420142015360200200f41046a210f20052006490d000c020b0b200e41f8066a210f20024188086a200241d8066a41d000109a051a02400240203c450d004108213b4100210a0c010b200e2f0106210a0b203b200641d0006c6a221441d0006a2014200a20066b41d0006c109b051a201420024188086a41d000109a051a200e200e2f010641016a22143b010620064102742237200f6a41086a200f200641016a220a4102746a220f201441ffff0371200a6b410274109b051a200f20383602002005200e2f010622144f0d00200e20376a41fc066a210503402005280200220f200641016a22063b0104200f200e360200200541046a210520142006470d000b0b200241f8056a200241b8076a41d000109a051a0240200e28020022050d00201521380c080b200e2f010421372005210e201521380c000b0b20024198056a41086a203141086a2902003703002002203129020037039805200e450d062037102a0c060b200f41081037000b41f80641081037000b41f80641081037000b41a80741081037000b4108200541086a200541f8b9c0004622061b201441d0006c6a220f41d0006a200f4100203820061b20146b41d0006c109b051a200f201536020c200f41086a2045280200360200200f20022903c806370300200f20022903d806370310200f41186a2044290300370300200f41206a200e290300370300200f41286a2037290300370300200f41306a2039290300370300200f41386a203a290300370300200f41c0006a203b290300370300200f41c8006a203c290300370300200520052f010641016a3b01060c010b202d410041a2071099051a41a80710282205450d0120054100360200200541046a20024188086a41a407109a051a20052041280200220f3602f806204120053602002041204128020441016a360204200f41003b0104200f20053602004108200541086a200541f8b9c000461b20052f0106220f41d0006c6a200241f8056a41d000109a051a200541f8066a200f41016a220f4102746a2038360200200520052f010641016a3b01062038200f3b0104203820053602000b200241b00f6a200241b8036a41d000109a051a20280d082029417f4c0d080240024020290d00410121150c010b202910282215450d020b024020162024490d00201621060c030b20262027410048720d140240024020160d002027102821150c010b201520292027102c21150b2025210620150d02202741011037000b41a80741081037000b202941011037000b024002402033450d00410021050c010b20292114201521052018210f03402005200f290000370000200541186a200f41186a290000370000200541106a200f41106a290000370000200541086a200f41086a290000370000200541206a2105200f41206a210f201441606a22140d000b202a21050b20024188086a200241b00f6a41d000109a051a200220053602e008200220063602dc08200220153602d808024002400240411010282205450d0020052004370000200541086a20103700002002429080808080023702bc07200220053602b8072002200241b8076a3602d80620024188046a200241d8066a10c80120022802b807210520022802c007210f200d42003703002009420037030020004200370300200242003703c8042005200f200241c8046a10002040200d29030037030020302009290300370300201b2000290300370300200220022903c8043703b00f024020022802bc07450d0020022802b807102a0b200241003602c007200242013703b80720024188086a200241b8076a108f012002202c3602d806200241d8066a200241b8076a10a3012002202b3602d806200241d8066a200241b8076a10a30120022802c808210520022802d008220f200241b8076a10b4010240200f450d00200f41306c210f0340200541106a200241b8076a108f01200220053602d806200541306a2105200241d8066a200241b8076a10a301200f41506a220f0d000b0b20022802d808210520022802e008220f200241b8076a10b4010240200f450d00200f410574210f03402005200241b8076a108f01200541206a2105200f41606a220f0d000b0b20022802bc072105200241b00f6a412020022802b807220f20022802c007100702402005450d00200f102a0b024020022802cc08450d0020022802c808102a0b024020022802dc08450d0020022802d808102a0b200241b8076a41186a2206203d290300370300200241b8076a41106a220a203e290300370300200241b8076a41086a220e203f29030037030020022002290388043703b807410021050240201d41014b0d000240201d0e020003000b203420062903003703002035200a2903003703002036200e290300370300200220022903b80737038808410021050c030b201d210f03402005200f410176221420056a2215200c201541246c6a280200200b4b1b2105200f20146b220f41014b0d000c020b0b411041011037000b0240200c200541246c6a280200220f200b460d002005200f200b496a21050b203420062903003703002035200a2903003703002036200e290300370300200220022903b80737038808201d20054f0d0041f8b0c0001032000b0240201d201e470d00201d41016a220f201d490d12201d4101742214200f2014200f4b1b221ead42247e2204422088a70d122004a7220f4100480d1202400240201d0d00200f1028210c0c010b200c201d41246c200f102c210c0b200c450d030b200c200541246c6a220f41246a200f201d20056b41246c109b051a200f200b360200200f411c6a2034290300370200200f41146a2035290300370200200f410c6a2036290300370200200f200229038808370204204020062903003703002030200a290300370300201b200e290300370300200220022903b8073703b00f0240201f2020470d00201f41016a2205201f490d12201f410174220f2005200f20054b1b222041ffffff3f712020470d12202041057422054100480d1202400240201f0d0020051028211c0c010b201c201f4105742005102c211c0b201c450d040b201d41016a211d201c201f4105746a220520022903b00f370000200541186a2040290300370000200541106a2030290300370000200541086a201b290300370000201f41016a211f0b20132021470d000b202121130c020b200f41041037000b200541011037000b024020132021460d002007200841d0006c6a21140340201341c0006a280200220f450d01201341d0006a21050240201341c4006a280200450d00200f102a0b2005211320142005470d000b0b02402003450d002007102a0b0240024002400240024002400240024002400240024020022802e0020d0020022802d80220022802dc02410010ca01201a102a02402020450d00201c102a0b0240201e450d00200c102a0b2017450d012018102a0c010b2002201c3602d8062002201c201f4105746a3602dc06200241b00f6a200241d8066a10850102400240200241f00f6a2802000d004108210841002109410021230c010b20024188086a200241b00f6a41e000109a051a41e00010282208450d03200820024188086a41e000109a051a200220022903d8063703b807200241b00f6a200241b8076a1085010240200241f00f6a2802000d0041012109410121230c010b4102210f41e00021054101210941012123034020024188086a200241b00f6a41e000109a051a024020092023470d00200941016a22142009490d19200f2014200f20144b1b2223ad42e0007e2204422088a70d192004a722144100480d190240024020090d002014102821080c010b200820052014102c21080b2008450d060b200820056a20024188086a41e000109a051a200f41026a210f200541e0006a2105200941016a2109200241b00f6a200241b8076a10850120022802f00f0d000b0b200241a8086a201d360200200241a4086a201e36020020024198086a201fad4220862020ad843703002002201c3602940820024284808080c00037028c082002201a360288082002200c3602a008200241003602b80f200242013703b00f201d200241b00f6a10b4010240201d450d00200c201d41246c6a210a200c210f0340200f28020021150240024020022802b40f221420022802b80f22056b4104490d0020022802b00f21140c010b200541046a22062005490d19201441017422052006200520064b1b22054100480d190240024020140d002005102821140c010b20022802b00f20142005102c21140b2014450d07200220053602b40f200220143602b00f20022802b80f21050b2002200541046a3602b80f201420056a20153600002002200241b00f6a3602b807200f41046a200241b8076a10c801200f41246a220f200a470d000b0b20022802b80f211420022802b40f211520022802b00f210f411b10282205450d05200541176a41002800f39646360000200541106a41002900ec9646370000200541086a41002900e49646370000200541002900dc96463700002002429b808080b0033702bc07200220053602b80741a2c7c000200241b8076a10c60120022802c007210620022802b8072105200241c8046a41186a220a4200370300200241c8046a41106a220e4200370300200241c8046a41086a22134200370300200242003703c80420052006200241c8046a1000200241b00f6a41186a200a290300370300200241b00f6a41106a200e290300370300200241b00f6a41086a2013290300370300200220022903c8043703b00f024020022802bc07450d002005102a0b200241203602bc072002200241b00f6a3602b807200f2014200241b8076a10cb0102402015450d00200f102a0b200241b8076a20024188086a10c70120022802c007211520022802b8072114200241003602b80f200242013703b00f201f200241b00f6a10b4010240201f450d00201f410574210f201c210503402002200241b00f6a3602d8062005200241d8066a10c801200541206a2105200f41606a220f0d000b0b20022802b40f21052014201520022802b00f220f20022802b80f100702402005450d00200f102a0b024020022802bc07450d002014102a0b201a102a02402020450d00201c102a0b0240201e450d00200c102a0b20022802d802210520022902dc02210402402017450d002018102a0b20050d010b20012802082114024020012802102205450d00200541d0006c210f201441c0006a210503400240200541046a280200450d002005280200102a0b200541d0006a2105200f41b07f6a220f0d000b0b2001410c6a280200450d142014102a0c140b200220043702bc03200220053602b803410410282205450d042005200b36000020024190086a4284808080c00037030020024198086a41002900a2c740370300200241a0086a41002900aac7403703002002200536028c082002410f3a0088084101410020024188086a10cc012019418094ebdc036e22054101200541014b1b220520194b0d052019200941036c417d6a220f200f20194b1b20056ead428094ebdc037e201920056ead221080a741146e2215211420092004422088a76b220f0d060c070b41e00041081037000b201441081037000b200541011037000b411b41011037000b410441011037000b41acaac3001032000b2002418094ebdc0336028c082002418094ebdc03201941002009200f6b2214201420094b1b41036c417d6a2214201420194b1b20056ead428094ebdc037e201080a741146e22056bad4100201520056b2205200520154b1bad7e428094ebdc0380a722053602880820024188086a2005418094ebdc034b4102746a28020021140b200941e0006c220541e0006e2129410021130240024020050d0041042138410021290c010b2029410274220610282238450d020b0240200820056a2008460d000240200f0d00200941e0006c210f4100211320382105034020052014360200201341016a2113200541046a2105200f41a07f6a220f0d000c020b0b2008200941e0006c6a2106200941057441606a210a203821052008210f0340200220022802b8033602b40f200220022802bc033602b00f2002200241b8036a3602b80f20024188086a200241b00f6a200f10c9012005201420152002280288084101461b360200200541046a21052006200f41e0006a220f470d000b200a41057641016a21130b20024188086a41086a220542003703002002420037038808419e9dc600411b20024188086a1008200241b00f6a41086a200529030037030020022002290388083703b00f4100211b2002410036028808200241b00f6a411020024188086a100621050240200228028808220f417f460d002005450d00200f4104490d032005280000211b2005102a0b20024188086a41086a22054200370300200242003703880841bb9cc600411220024188086a1008200241b00f6a41086a200529030037030020022002290388083703b00f4100213b2002410036028808200241b00f6a411020024188086a100621050240200228028808220f417f460d002005450d00200f4104490d042005280000213b2005102a0b411710282205450d042005410f6a41002900d3fe44370000200541086a41002900ccfe44370000200541002900c4fe4437000020054117412e102c2205450d052005203b36001742002149200241f8056a41186a220f4200370300200241f8056a41106a22144200370300200241f8056a41086a22154200370300200242003703f8052005411b200241f8056a1000200241a8056a41186a200f290300370300200241a8056a41106a2014290300370300200241a8056a41086a2015290300370300200220022903f8053703a8052005102a2002410036028808200241a8056a412020024188086a100621002002280288082230417f460d092000450d09200220303602fc02200220003602f802200241c0026a200241f8026a106c20022802c0020d0820022802fc0222154140712205417f4c0d0020022802c402210d024002402015410676220e0d004108211d0c010b20051028221d450d070b0240200d450d004100210a0340200241003a00a808200a220641016a210a41002105024002400240034020152005460d0120024188086a20056a20022802f80222142d00003a00002002201441016a3602f8022002200541016a220f3a00a808200f2105200f4120470d000b200241f8056a41186a220520024188086a41186a290300370300200241f8056a41106a220b20024188086a41106a290300370300200241f8056a41086a220c20024188086a41086a29030037030020022002290388083703f8052015200f6b220f4110490d012002201441116a3602f802200f41706a410f4b0d02200f41706a210f0c010b0240200541ff0171450d00200241003a00a8080b4100210f0b200241b8076a41086a200241b00f6a41086a290300370300200220022903b00f3703b8072002200f3602fc02200e450d0b201d102a0c0b0b201441096a290000210420142900012110200241b8076a41086a2215200c290300370300200241b8076a41106a220c200b290300370300200241b8076a41186a220b20052903003703002002201441216a3602f802200220022903f80522113703b00f200220113703b807201441196a290000211120142900112112200241d8066a41186a2214200b290300370300200241d8066a41106a220b200c290300370300200241d8066a41086a220c2015290300370300200220022903b8073703d8060240200e2006470d0020064101742205200a2005200a4b1b220e41ffffff1f71200e470d0f200e41067422054100480d0f0240024020060d0020051028211d0c010b201d20064106742005102c211d0b201d450d0a0b200f41606a2115201d20064106746a220520123703102005200437030820052010370300200541186a2011370300200520022903d806370320200541286a200c290300370300200541306a200b290300370300200541386a2014290300370300200a200d470d000b2002200f41606a3602fc020b201d450d08200dad422086200ead84214902402030450d002000102a0b2049422088a7210f2049a7210e0c0a0b1036000b200641041037000b41c4d1c3004133200241f8056a419cd9c3001038000b41c4d1c3004133200241f8056a419cd9c3001038000b411741011037000b412e41011037000b200541081037000b200541081037000b41c4d1c3004133200241f8056a419cd9c3001038000b4108211d4100210f4100210e0b0240024020132009200920134b1b221f0d004200214a4200214b0c010b200241b00f6a4105722122200241b8076a41036a213920024188086a410572213220024188086a41086a2113201bad214c20024191086a2135200241e8016a41186a213a2008210b4200214a4200214b41002130034020134200370300200242003703880841c8ffc400411520024188086a1008200241b00f6a41086a2236201329030037030020022002290388083703b00f2002410036028808200241b00f6a411020024188086a100621140240024002400240024002400240024002400240024002400240024002400240024002400240200228028808220f417f460d002002200f3602bc07200220143602b80720024188086a200241b8076a106d2002280288082205450d02200229028c082104200f450d012014102a0c010b42002104410121050b20052004422088a72008203041e0006c6a220f10cd01211402402004a7450d002005102a0b20140d10200241b0026a200f41206a22342903002204203441086a222c290300428094ebdc03420010a005200241a0026a20022903b0022210200241b0026a41086a29030022114280ec94a37c427f109f0520024190026a20102011203820304102746a35020022124200109f0520022903900222102012200420022903a0027c7e428094ebdc038042ffffffff0f837c220420024190026a41086a2903002004201054ad7c2210844200510d1020134200370300200242003703880841c785c200411220024188086a100820024198056a41086a220c2013290300370300200220022903880837039805200241003602880820024198056a411020024188086a10062105024002402002280288082214417f460d002005450d00200220143602b40f200220053602b00f20024188086a200241b00f6a106d2002280288082237450d03200229028c0821122014450d012005102a0c010b41012137420021120b20372012422088a74105746a21064100211420372105024003400240200620056b41e0004b0d004102212b20052006460d080340200b2005460d0320142005200f4120109c0522154100476a21142015450d032006200541206a2205470d000c090b0b2005200f460d0120142005200f4120109c0522154100476a21142015450d01200541206a2215200f460d0120142015200f4120109c0522154100476a21142015450d01200541c0006a2215200f460d0120142015200f4120109c0522154100476a21142015450d01200541e0006a2215200f460d0120142015200f4120109c0522154100476a211420054180016a210520150d000b0b20134200370300200242003703880841bd99c600411a20024188086a1008200c2013290300370300200220022903880837039805200241003602880820024198056a411020024188086a100621052002280288082206417f460d032005450d03200220063602b40f200220053602b00f20024188086a200241b00f6a1082012002280288082215450d02200229028c0821112006450d042005102a0c040b41c4d1c3004133200241f8056a419cd9c3001038000b41c4d1c3004133200241f8056a419cd9c3001038000b41c4d1c3004133200241f8056a419cd9c3001038000b410021150b2015410420151b21004100210502400240024002402011420020151b22114220882242a7220e41014b0d00200e0e020201020b200e2115034020052015410176220620056a220a20142000200a4102746a280200491b2105201520066b221541014b0d000b0b4100212b02402014200020054102746a2802002215470d00410021400c020b2005201420154b6a21050b20134200370300200242003703880841c785c200411220024188086a1008200c2013290300370300200220022903880837039805200241003602880820024198056a411020024188086a1006210602400240200228028808220a417f470d00410021150c010b024020060d00410021150c010b2002200a36028c08200220063602880820024188026a20024188086a106c024002402002280288020d00200228028c0221150c010b410021150b200a450d002006102a0b20152015418094ebdc036e22064180ec94a37c6c6aad4280fd87d1007e428094ebdc038021432005200e4b0d020240200e2011a7470d00200e41016a2215200e490d11200e410174220a20152015200a491b221541ffffffff03712015470d112015410274220a4100480d1102400240200e0d00200a102821000c010b2000200e410274200a102c21000b2000450d042015ad21110b200020054102746a221541046a2015200e20056b410274109b051a2015201436020041012140201142ffffffff0f83200e41016a2205ad2242422086842111200520064180fd87d1006c2043a76a4b212b0b20134200370300200242003703880841bd99c600411a20024188086a1008200c20132903003703002002200229038808370398050240024020000d0020024198056a411010090c010b200241003602900820024201370388082042a7221520024188086a10b4010240024020150d00200228029008210c200228028c08210e20022802880821150c010b410020022802900822056b2106200020154102746a211b200228028c08210e2000210a0340200a280200210d02400240200e20066a4104490d0020022802880821150c010b200541046a22152005490d13200e410174220c2015200c20154b1b220c4100480d1302400240200e0d00200c102821150c010b200228028808200e200c102c21150b2015450d072002200c36028c082002201536028808200c210e0b2002200541046a220c36029008201520056a200d3600002006417c6a2106200c2105201b200a41046a220a470d000b0b2011a7210520024198056a41102015200c10070240200e450d002015102a0b2005450d002000102a0b2040450d00200241023602b00f20022014ad3703b80f20024188086a200241b00f6a10c301203941086a221520132802003600002039200229038808370000203220022900b807370000203241076a200241b8076a41076a2206290000370000200241c6a4b9da0436008908200241023a00880820024188086a10ce012002201436028c082002410136028808200241003602b80f200242013703b00f410110282205450d04200220053602b00f200520022802b80f22146a41023a0000200241013602b40f2002201441016a22053602b80f200228028c08210a02400240410020146b4104490d0020022802b00f21140c010b200541046a22142005490d10410141017422052014200520144b1b22054100480d100240024041010d002005102821140c010b20022802b00f41012005102c21140b2014450d06200220053602b40f200220143602b00f20022802b80f21050b2002200541046a3602b80f201420056a200a360000200241d8066a41086a20022802b80f2205360200200220022903b00f22113703d8062015200536000020392011370000202220022900b807370000202241076a2006290000370000200241c28289aa043600b10f200241023a00b00f200241b00f6a10ce012002280288080d00200228029008450d00200228028c08102a0b02402012a7450d002037102a0b0240202b4102460d00202b410171450d00201342003703002002420037038808418e9dc600411020024188086a10082036201329030037030020022002290388083703b00f410110282205450d06200541013a0000200241b00f6a41102005410110072005102a0b202c2903002212201020342903002243200454201220105420122010511b22051b214d2043200420051b214e024002402049422088224fa722060d0042002110420021040c010b20064106742114201d41206a21054200211042002104034002400240200b2005460d002005200f4120109c050d010b427f2004200541706a221541086a2903007c201020152903007c22112010542215ad7c22102015201020045420102004511b22151b2104427f201120151b21100b200541c0006a2105201441406a22140d000b0b200241e8016a200f204e4200200f290330221120107d22422042201156200f41386a290300224220047d2011201054ad7d220420425620042042511b22051b22102010204e564200200420051b2204204d562004204d511b22051b2210204d200420051b220410cf01200241e8016a41086a290300215020022903e80121510240204e201020022903f80122527d22537d2254204d2004203a2903007d2010205254ad7d22557d204e205354ad7d225284500d00204320117d2210201220427d2043201154ad7d220484500d00200f2802482214450d00200f2802402205201441306c6a2115200241c8016a20542052428094ebdc03420010a005200241d8016a20102004428094ebdc03420010a005200241b8016a20022903c8012252200241c8016a41086a29030022564280ec94a37c427f109f05200241d8016a41086a2903002211420020022903d801224242015620114200522011501b22141b21122042420120141b2142205420022903b8017c21540340200241a8016a2010200529030022112011201056200541086a290300221120045620112004511b22141b2004201120141b2042201210a00520022903a8012243428080808010544100200241a8016a41086a290300501b450d0820024198016a201020042042201210a005200229039801221142808080801054410020024198016a41086a290300501b450d092011a7450d0a200241e8006a20522056204342ffffffff0f83428094ebdc037e201142ffffffff0f838042ffffffff0f8322114200109f05200241f8006a200541106a20022903682243201120547e428094ebdc038042ffffffff0f837c2211200241e8006a41086a2903002011204354ad7c10cf01427f2050200241f8006a41086a2903007c205120022903787c22432051542214ad7c22112014201120505420112050511b22141b2150427f204320141b2151200541306a22052015470d000b0b200241a8056a41186a2215200f41186a220a290300370300200241a8056a41106a220e200f41106a220c290300370300200241a8056a41086a220d200f41086a22002903003703002002200f2903003703a8050240024020062049a7460d00200621140c010b200641016a22052006490d0f204fa72214410174221b20052005201b491b220541ffffff1f712005470d0f2005410674221b4100480d0f0240024020060d00201b1028211d0c010b201d2014410674201b102c211d0b201d450d0a2005ad21490b200241d8006a20512050428094ebdc03420010a005200241c8006a20022903582204200241d8006a41086a29030022104280ec94a37c427f109f05200241386a20042010204c4200109f05201d20144106746a220520533703102005204d3703082005204e370300200541186a2055370300200520022903a805370320200541286a200d290300370300200541306a200e290300370300200541386a2015290300370300200241013a009008200241033a008808200a2900002104200c290000211020002900002111200f290000211220024188086a41386a204d37030020352012370000203541086a2011370000203541106a2010370000203541186a20043700002002204e3703b8084101410020024188086a10cc01204942ffffffff0f83201441016aad4220868421490240024020022903382210205120022903487c204c7e428094ebdc038042ffffffff0f837c2204200241386a41086a2903002004201054ad7c221084500d00200f41d8006a28020022050d010b427f204b20507c204a20517c2210204a542205ad7c220420052004204b542004204b511b22051b214b427f201020051b214a0c0b0b200241286a200420512051200456205020105620502010511b22141b22542010205020141b224d2005ad420010a00520054105742114200f2802502105200241286a41086a29030021522002290328215620542112204d21420340200241186a2005205620122012205656204220525620422052511b220f1b220420522042200f1b221010d00120024188086a41106a2010200241186a41086a29030022437d20042002290318221154ad7d204320107d2011200454ad7d201120045820432010582043201051220f1b22151b3703002002200420117d201120047d20151b37039008200220112004562043201056200f1b220fad37038808204220107d21102012200454ad211102400240200f0d00200220133602b00f200241b00f6a109d010c010b200220133602b00f200241b00f6a109c010b201020117d2142201220047d2112200541206a2105201441606a22140d000b427f427f204b20427c204a20127c2210204a542205ad7c220420052004204b542004204b511b22051b22042050204d7d2051205454ad7d7c427f201020051b2210205120547d7c22112010542205ad7c22102005201020045420102004511b22051b214b427f201120051b214a0c0a0b41f8b0c0001032000b200a41041037000b200c41011037000b410141011037000b200541011037000b410141011037000b10d101000b10d201000b41acaac3001032000b201b41081037000b200b41e0006a210b203041016a2230201f490d000b2049422088a7210f2049a7210e0b024002400240024002400240411710282205450d002005410f6a41002900d3fe44370000200541086a41002900ccfe44370000200541002900c4fe4437000020054117412e102c2205450d012005203b360017200241f8056a41186a22144200370300200241f8056a41106a22154200370300200241f8056a41086a22064200370300200242003703f8052005411b200241f8056a1000200241a8056a41186a2014290300370300200241a8056a41106a2015290300370300200241a8056a41086a2006290300370300200220022903f8053703a8052005102a20024100360290082002420137038808200f20024188086a10b401200f450d02200f410674210a201d21050340200541206a20024188086a108f01200541086a29030021042005290300211002400240200228028c08221420022802900822156b4110490d00200228028808210f0c010b201541106a220f2015490d0920144101742215200f2015200f4b1b22064100480d090240024020140d0020061028210f0c010b20022802880820142006102c210f0b200f450d052002200636028c082002200f360288082002280290082115200621140b200f20156a22062004370008200620103700002002201541106a221536029008200541186a2903002104200541106a290300211002400240201420156b410f4d0d00201421060c010b201541106a22062015490d09201441017422152006201520064b1b22064100480d090240024020140d0020061028210f0c010b200f20142006102c210f0b200f450d062002200636028c082002200f3602880820022802900821150b200541c0006a2105200f20156a22142004370008201420103700002002201541106a221436029008200a41406a220a0d000c060b0b411741011037000b412e41011037000b2002280290082114200228028c082106200228028808210f0c020b200641011037000b200641011037000b200241a8056a4120200f2014100702402006450d00200f102a0b0240200e450d00201d102a0b20024188086a10d301200241086a20024188086a204a204b10d001200241c00f6a204b200241086a41086a29030022107d204a2002290308220454ad7d2010204b7d2004204a54ad7d2004204a582010204b582010204b5122051b220f1b3703002002204a20047d2004204a7d200f1b3703b80f20022004204a562010204b5620051b2205ad3703b00f200241b00f6a41086a210f0240024020050d002002200f3602b807200241b8076a109d010c010b2002200f3602b807200241b8076a109c010b02402029450d002038102a0b02402009450d00200941e0006c210f200841d4006a210503400240200541706a280200450d002005416c6a280200102a0b02402005280200450d002005417c6a280200102a0b200541e0006a2105200f41a07f6a220f0d000b0b02402023450d002008102a0b20022802b80320022802bc0320022802c00310ca0120012802082114024020012802102205450d00200541d0006c210f201441c0006a210503400240200541046a280200450d002005280200102a0b200541d0006a2105200f41b07f6a220f0d000b0b2001410c6a280200450d002014102a0b20024190106a24000f0b1031000b8c1501037f0240024002400240024002400240024002400240024002400240024002400240024002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0120012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d00003a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d00013a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d00023a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0420012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d00033a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0520012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d00043a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0620012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d00053a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0720012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d00063a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0820012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d00073a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0920012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d00083a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0a20012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d00093a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0b20012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d000a3a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0c20012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d000b3a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0d20012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d000c3a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0e20012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d000d3a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d0f20012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a20002d000e3a000002400240200141046a28020020042802002202460d00200128020021030c010b200241016a22032002490d11200241017422042003200420034b1b22044100480d110240024020020d002004102821030c010b200128020020022004102c21030b2003450d1020012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a20002d000f3a00000f0b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b1031000bba0601087f230041d0006b220224000240024002400240024002400240411f10282203450d00200341176a41002900c9c740370000200341106a41002900c2c740370000200341086a41002900bac740370000200341002900b2c7403700002002429f808080f0033702242002200336022041a2c7c000200241206a10c6012002280228210420022802202103200241306a41186a22054200370300200241306a41106a22064200370300200241306a41086a220742003703002002420037033020032004200241306a1000200241186a2005290300370300200241106a2006290300370300200241086a20072903003703002002200229033037030002402002280224450d002003102a0b412010282203450d0120032002290300370000200341186a200241186a290300370000200341106a200241106a290300370000200341086a200241086a2903003700002001280208220441046a2205417f4c0d02200128020021070240024020050d00410121010c010b200510282201450d040b2002410036023820022005360234200220013602302004200241306a10b4010240024020022802342206200228023822016b2004490d00200228023021050c010b200120046a22052001490d06200641017422082005200820054b1b22084100480d060240024020060d002008102821050c010b200228023020062008102c21050b2005450d052002200836023420022005360230200821060b200520016a20072004109a051a200241306a41186a22074200370300200241306a41106a22084200370300200241306a41086a22094200370300200242003703302005200120046a200241306a1000200241186a2007290300370300200241106a2008290300370300200241086a20092903003703002002200229033037030002402006450d002005102a0b2003412041c000102c2203450d0620032002290300370020200341386a200241186a290300370000200341306a200241106a290300370000200341286a200241086a290300370000200042c0808080800837020420002003360200200241d0006a24000f0b411f41011037000b412041011037000b1036000b200541011037000b200841011037000b1031000b41c00041011037000bba0501037f02400240024002400240024002400240410110282202450d00200220002d00003a0000200241014102102c2202450d01200220002d00013a0001200241024104102c2202450d02200220002d00023a0002200220002d00033a0003200241044108102c2202450d03200220002d00043a0004200220002d00053a0005200220002d00063a0006200220002d00073a0007200241084110102c2202450d04200220002d00083a0008200220002d00093a0009200220002d000a3a000a200220002d000b3a000b200220002d000c3a000c200220002d000d3a000d200220002d000e3a000e200220002d000f3a000f200241104120102c2202450d05200220002d00103a0010200220002d00113a0011200220002d00123a0012200220002d00133a0013200220002d00143a0014200220002d00153a0015200220002d00163a0016200220002d00173a0017200220002d00183a0018200220002d00193a0019200220002d001a3a001a200220002d001b3a001b200220002d001c3a001c200220002d001d3a001d200220002d001e3a001e200220002d001f3a001f024002402001280200220041046a2802002203200041086a28020022016b4120490d00200028020021030c010b200141206a22042001490d08200341017422012004200120044b1b22014100480d080240024020030d002001102821030c010b200028020020032001102c21030b2003450d0720002003360200200041046a2001360200200041086a28020021010b200041086a200141206a360200200320016a220041186a200241186a290000370000200041106a200241106a290000370000200041086a200241086a290000370000200020022900003700002002102a0f0b410141011037000b410241011037000b410441011037000b410841011037000b411041011037000b412041011037000b200141011037000b1031000b9705060a7f047e037f027e047f027e200128020821032001280204210420012802002105200241386a2106200241286a2107034002400240200441f8b9c000462208450d00410021094108210a4108210b0c010b20042f01062109200441086a220a210b0b200b200941d0006c6a210c2006290300210d2007290300210e2002290330210f2002290320211020022802482111200228024021124100210b0240024002400340200b21090240200a200c470d0002402008450d00410021090c030b20042f010621090c020b024002402002200a4120109c05220b450d00417f4101200b4100481b21130c010b417f2010200a290320221485200e200a41286a290300221585844200522010201454200e201554200e2015511b1b22130d00417f200f200a41306a290300221485200d200a41386a29030022158584420052200f201454200d201554200d2015511b1b22130d00200a41c8006a28020022162011201120164b1b2117200a280240210b417f21182012211903400240201841016a22182017490d00417f201120164720112016491b21130c020b0240201941106a200b41106a4120109c052213450d00417f410120134100481b21130c020b2019290300221a200b290300221b54201941086a2903002215200b41086a29030022145420152014511b0d03200b41306a210b201941306a211941012113201a201b85201520148584500d000b0b200941016a210b200a41d0006a210a0240201341016a0e03020001020b0b4100210a0c010b20050d014101210a410021050b200020053602042000200a360200200041106a20093602002000410c6a2003360200200041086a20043602000f0b2001200336020820012005417f6a22053602002001200420094102746a41f8066a28020022043602040c000b0bee0303047f017e017f02402001450d00034020002802f80621002001417f6a22010d000b0b02402002450d004100210341002101034002400240200120002f01064f0d004108200041086a200041f8b9c000461b200141d0006c6a22042802442105200441c0006a2802002106200141016a21010c010b02400240200028020022010d002003ad210741002104410021010c010b20003301044220862003ad842107410121040b2000102a2007a72103024002402007422088a7220820012f01064f0d00200121000c010b034002400240200128020022000d002003ad2107410021000c010b200441016a210420013301044220862003ad8421070b2001102a2007a72103200021012007422088a7220820002f01064f0d000b0b4108200041086a200041f8b9c000461b200841d0006c6a22012802442105200141c0006a2802002106200841027420006a41fc066a280200210002402004417f6a2201450d00034020002802f80621002001417f6a22010d000b0b410021010b2006450d012002417f6a210202402005450d002006102a0b20020d000b0b0240200041f8b9c000460d00200028020021012000102a2001450d00200128020021002001102a2000450d00024020002802002201450d0003402000102a2001210020012802002203210120030d000b0b2000102a0b0b9d0201057f230041106b220324000240024002400240200141046a2204417f4c0d000240024020040d00410121050c010b200410282205450d020b2003410036020820032004360204200320053602002001200310b4010240024020032802042206200328020822056b2001490d00200328020021040c010b200520016a22042005490d04200641017422072004200720044b1b22074100480d040240024020060d002007102821040c010b200328020020062007102c21040b2004450d032003200736020420032004360200200721060b200420056a20002001109a051a200228020020022802042004200520016a100702402006450d002004102a0b200341106a24000f0b1036000b200441011037000b200741011037000b1031000bcd1f03087f047e017f230041a0036b2203240020034100360288014188e8c200411020034188016a10062104024002402003280288012205417f460d002004450d00024020054104490d00200428000021062004102a410021070c020b41c4d1c300413320034188016a419cd9c3001038000b410121070b0240024002400240024002400240024002400240024020010d004101210841002105410021090c010b200141057422044100480d07200410282208450d012001410574220941606a410576210a2008210420002105034020034188016a41186a200541186a290000220b37030020034188016a41106a200541106a290000220c37030020034188016a41086a200541086a290000220d37030020032005290000220e37038801200441186a200b370000200441106a200c370000200441086a200d3700002004200e370000200441206a2104200541206a2105200941606a22090d000b200a41016a2109200121050b200341f4006a2006360200200320073602702003200241f000109a0522044180016a2009360200200441fc006a20053602002004200836027820044190026a41086a22054200370300200442003703900241eea0c600411120044190026a1008200441b0026a41086a200529030037030020042004290390023703b0022004410036028801200441b0026a411020044188016a10062105024002400240024002400240024002402004280288012203417f470d00410021080c010b024020050d00410021080c010b20034104490d01200528000021082005102a0b0240200841016a22032008490d0020044190026a41086a22054200370300200442003703900241eea0c600411120044190026a1008200441b0026a41086a2209200529030037030020042004290390023703b0022004200336028801200441b0026a411020044188016a4104100720044188016a2004418801109a051a20054200370300200442003703900241d4f2c200410d20044190026a10082009200529030037030020042004290390023703b0022004410036029002200441b0026a411020044190026a10062103024002402004280290022205417f460d002005210920030d010b2004410036028003200442083703f80220044100360298022004420137039002410020044190026a10b401200428029802210520042802940221092004280290022103200441f8026a10720b200420053602c802200420093602c402200420033602c002024002402005450d0020044190026a20032005410110d6022004280290024101470d0120042802c402450d0c20042802c002102a0c0c0b4101200441c0026a10b40120044188016a200441c0026a10aa030c090b200428029402210202402004419c026a280200220520044198026a2802002203460d0020042802c802200520036b6a22094188016a2207417f4c0d100240024020070d00410121060c010b200710282206450d040b200420073602d402200420063602d002200420093602d8022004200441d0026a36029002200220044190026a200510d70120092005490d0420042802d80222022009490d0520042802c80222022003490d0620042802d002210720042802c00221062004200920056b22093602dc022004200220036b22023602940320092002470d07200720056a200620036a2009109a051a20044188016a200441d0026a10aa0320042802d802210320042802d402210920042802d002210520042802c402450d0a20042802c002102a0c0a0b2004200441c0026a36029002200220044190026a200310d70120044188016a200441c0026a10aa030c080b200410ab030c0b0b41c4d1c300413320044188016a419cd9c3001038000b200741011037000b200520091044000b20092002103c000b200320021044000b200441f8026a41146a410836020020044184036a4125360200200441e0026a41146a4103360200200442033702e402200441c8afc6003602e002200441253602fc022004200441dc026a36029803200420044194036a36029c03200442043703a00220044201370294022004419cb0c600360290022004200441f8026a3602f002200420044190026a3602880320042004419c036a36028003200420044198036a3602f802200441e0026a41d8b0c600103e000b200441011037000b20042802c802210320042802c402210920042802c00221050b20050d010b20044188016a10ab030c010b200441b0026a411020052003100702402009450d002005102a0b20044188016a10ab0320044190026a41086a22054200370300200442003703900241d9efc200410d20044190026a1008200441b0026a41086a200529030037030020042004290390023703b0024100210f2004410036028801200441b0026a411020044188016a1006210502402004280288012203417f460d002005450d0020034104490d032005280000210f2005102a0b2001450d002001410574210a02400340200420083602d4022004200f3602d0020240024002400240024002400240024002400240024002400240024002400240411210282205450d00200541106a41002f00f1f2423b0000200541086a41002900e9f242370000200541002900e1f24237000020044188016a41186a2203420037030020044188016a41106a2209420037030020044188016a41086a2201420037030020044200370388012005411220044188016a100020044190026a41186a2202200329030037030020044190026a41106a2207200929030037030020044190026a41086a220620012903003703002004200429038801370390022005102a412010282205450d012005200429039002370000200541186a2002290300370000200541106a2007290300370000200541086a200629030037000020044188016a200010e0022005412041c000102c2205450d022005200429008801370020200541386a2003290000370000200541306a2009290000370000200541286a20012900003700002004410036028801200541c00020044188016a10062109024002402004280288012201417f460d00200121030c010b20044100360290012004420137038801410020044188016a10b4012004280290012103200428028c01210120042802880121090b200420033602b802200420013602b402200420093602b002024002400240024002402003450d0020044188016a20092003410110d6022004280288014101460d04200428028c01210220042802940122032004280290012209460d0320042802b802200320096b6a220141086a2207417f4c0d1a20070d01410121060c020b4101200441b0026a10b40120042802d00221010240024020042802b402220920042802b80222036b4104490d0020042802b00221090c010b200341046a22022003490d18200941017422032002200320024b1b22034100480d180240024020090d002003102821090c010b20042802b00220092003102c21090b2009450d08200420033602b402200420093602b00220042802b80221030b2004200341046a3602b802200920036a200136000020042802d40221010240024020042802b402220920042802b80222036b4104490d0020042802b00221090c010b200341046a22022003490d18200941017422032002200320024b1b22034100480d180240024020090d002003102821090c010b20042802b00220092003102c21090b2009450d09200420033602b402200420093602b00220042802b80221030b2004200341046a3602b802200920036a20013600000c120b200710282206450d080b200420073602e402200420063602e002200420013602e8022004200441e0026a36028801200220044188016a200310d70120012003490d0820042802e80222022001490d0920042802b80222022009490d0a20042802e002210720042802b00221062004200120036b2201360294032004200220096b22023602980320012002470d0b200720036a200620096a2001109a051a20042802d00221010240024020042802e402220920042802e80222036b4104490d0020042802e00221090c010b200341046a22022003490d16200941017422032002200320024b1b22034100480d160240024020090d002003102821090c010b20042802e00220092003102c21090b2009450d0d200420033602e402200420093602e00220042802e80221030b2004200341046a3602e802200920036a200136000020042802d40221010240024020042802e402220920042802e80222036b4104490d0020042802e00221090c010b200341046a22022003490d16200941017422032002200320024b1b22034100480d160240024020090d002003102821090c010b20042802e00220092003102c21090b2009450d0e200420033602e402200420093602e00220042802e80221030b2004200341046a3602e802200920036a200136000020042802e802210920042802e402210120042802e002210320042802b402450d1120042802b002102a0c110b2004200441b0026a36028801200220044188016a200910d70120042802d00221010240024020042802b402220920042802b80222036b4104490d0020042802b00221090c010b200341046a22022003490d15200941017422032002200320024b1b22034100480d150240024020090d002003102821090c010b20042802b00220092003102c21090b2009450d0e200420033602b402200420093602b00220042802b80221030b2004200341046a3602b802200920036a200136000020042802d40221010240024020042802b402220920042802b80222036b4104490d0020042802b00221090c010b200341046a22022003490d15200941017422032002200320024b1b22034100480d150240024020090d002003102821090c010b20042802b00220092003102c21090b2009450d0f200420033602b402200420093602b00220042802b80221030b2004200341046a3602b802200920036a20013600000c0f0b20042802b402450d1120042802b002102a0c110b411241011037000b412041011037000b41c00041011037000b200341011037000b200341011037000b200741011037000b200320011044000b20012002103c000b200920021044000b200441f8026a41146a410836020020044184036a412536020020044190026a41146a41033602002004420337029402200441c8afc60036029002200441253602fc02200420044194036a36029c03200420044198036a3602c00220044204370398012004420137028c012004419cb0c600360288012004200441f8026a3602a002200420044188016a360288032004200441c0026a3602800320042004419c036a3602f80220044190026a41d8b0c600103e000b200341011037000b200341011037000b200341011037000b200341011037000b20042802b802210920042802b402210120042802b00221030b2003450d01200541c00020032009100702402001450d002003102a0b200041206a21002005102a200a41606a220a0d000c020b0b2005102a0b200441a0036a24000f0b1031000b41c4d1c300413320044188016a419cd9c3001038000b1036000bcd0101047f200020014105746a210320002104024003400240200320046b41e0004b0d00024020042003460d00200020014105746a210503404101210620022004460d04200420024120109c05450d042005200441206a2204470d000b0b41000f0b4101210620042002460d01200420024120109c05450d01200441206a22052002460d01200520024120109c05450d01200441c0006a22052002460d01200520024120109c05450d01200441e0006a22052002460d0120044180016a2104200520024120109c050d000b0b20060bba0604017f017e047f027e230041c0006b2201240042002102200141186a41086a220342003703002001420037031841b1f0c200410d200141186a1008200141086a200329030037030020012001290318370300410021032001410036021820014110200141186a100621040240024002400240024020012802182205417f460d002001200536021420012004360210200141186a200141106a107620012802182206450d02200129021c210202402005450d002004102a0b2002422088a721032002a721050c010b41042106410021050b200141186a41206a200041206a280200360200200141186a41186a200041186a290200370300200141186a41106a200041106a290200370300200141186a41086a200041086a29020037030020012000290200370318024020032005470d00024020032002a7470d00200341016a22002003490d04200341017422052000200520004b1bad220742247e2208422088a70d042008a722004100480d040240024020030d002000102821060c010b2006200341246c2000102c21060b2006450d0320024280808080708320078421020b2002422088a721030b2006200341246c22056a22002001290318370200200041206a200141186a41206a280200360200200041186a200141186a41186a290300370200200041106a200141186a41106a290300370200200041086a200141186a41086a2200290300370200200042003703002001420037031841b1f0c200410d200141186a1008200141086a2000290300370300200120012903183703002001411036021c200120013602182006200341016a2200200141186a10e102024020002003490d00200541246a21002006210303400240024020032d0000220541034b0d0002400240024020050e0404000102040b2003410c6a280200450d03200341086a280200102a0c030b2003410c6a280200450d02200341086a280200102a0c020b2003410c6a280200450d01200341086a280200102a0c010b200341086a280200450d00200341046a280200102a0b200341246a21032000415c6a22000d000b0b02402002a7450d002006102a0b200141c0006a24000f0b41c4d1c3004133200141186a419cd9c3001038000b200041041037000b1031000b8c0702067f067e230041d0006b220424000240024002400240411410282205450d00200541002900cfe140370000200541106a41002800dfe140360000200541086a41002900d7e14037000020044294808080c002370224200420053602202001200441206a108f012004280228210520042802202106200441306a41186a22074200370300200441306a41106a22084200370300200441306a41086a220942003703002004420037033020062005200441306a1000200441186a2007290300370300200441106a2008290300370300200441086a20092903003703002004200429033037030002402004280224450d002004280220102a0b2004410036023020044120200441306a100621050240024020042802302206417f470d004200210a4200210b0c010b20064110490d02200541086a290000210b2005290000210a2005102a0b2001200a2002200a200a200256200b200356200b2003511b22051b220c7d200b2003200b20051b220d7d200a200c54ad7d108f02024002402002200c7d220b2003200d7d2002200c54ad7d220e8450450d004200210a4200210e0c010b411810282205450d03200541002900e3e140370000200541106a41002900f3e140370000200541086a41002900ebe140370000200442988080808003370224200420053602202001200441206a108f012004280228210520042802202106200441306a41186a22074200370300200441306a41106a22084200370300200441306a41086a220942003703002004420037033020062005200441306a1000200441186a2007290300370300200441106a2008290300370300200441086a20092903003703002004200429033037030002402004280224450d002004280220102a0b2004410036023020044120200441306a100621050240024020042802302206417f470d0042002102420021030c010b20064110490d05200541086a2900002103200529000021022005102a0b20012002200b20022002200b562003200e562003200e511b22051b220a7d2003200e200320051b220f7d2002200a54ad7d109002200e200f7d200b200a54ad7d210e200f200d7c200a200c7c2202200a54ad7c2103200b200a7d210a0b2000200a37031020002002370300200041186a200e37030020002003370308200441d0006a24000f0b411441011037000b41c4d1c3004133200441306a419cd9c3001038000b411841011037000b41c4d1c3004133200441306a419cd9c3001038000be20302067f027e230041d0006b2204240002400240411410282205450d00200541002900cfe140370000200541106a41002800dfe140360000200541086a41002900d7e14037000020044294808080c002370224200420053602202001200441206a108f012004280228210520042802202106200441306a41186a22074200370300200441306a41106a22084200370300200441306a41086a220942003703002004420037033020062005200441306a1000200441186a2007290300370300200441106a2008290300370300200441086a20092903003703002004200429033037030002402004280224450d002004280220102a0b2004410036023020044120200441306a100621050240024020042802302206417f470d004200210a4200210b0c010b20064110490d02200541086a290000210b2005290000210a2005102a0b200441306a2001200a20027c2202200b20037c2002200a54ad7c109401200441106a200441306a41106a290300220a370300200420042903382202370308200420042903302203370300024020034200510d002004200441086a360230200441306a109d01420021024200210a0b200020023703002000200a370308200441d0006a24000f0b411441011037000b41c4d1c3004133200441306a419cd9c3001038000b0a0041a8acc3001032000b0a0041b8abc3001032000bbf0301077f230041d0006b22012400024002400240024002400240410110282202450d00200241ed003a0000200241014102102c2202450d01200241ef003a0001200241024104102c2202450d02200241e4d8013b0002200241044108102c2202450d03200241f0f2bda107360004200241084110102c2203450d04200341f2e6c9cb07360008200141003a0048410c210220032104410021050340200141003a0008200141086a200420024100472206109a051a024020020d00200141003a00080b20022006490d06200141286a20056a20012d00083a00002001200541016a22073a0048200220066b2102200420066a21042007210520074120470d000b200141086a41186a2202200141286a41186a290300370300200141086a41106a2206200141286a41106a290300370300200141086a41086a2204200141286a41086a290300370300200120012903283703082003102a200041186a2002290300370000200041106a2006290300370000200041086a200429030037000020002001290308370000200141d0006a24000f0b410141011037000b410241011037000b410441011037000b410841011037000b411041011037000b200620021044000b940705017f047e087f057e017f23004180026b22022400200241c0006a2001109f01024002402002290340a7450d00200041003602200c010b200241c0006a41106a290300210320022903482104200241286a2001109f0102402002290328a7450d00200041003602200c010b200241286a41106a290300210520022903302106200241206a2001106c0240024002400240024020022802200d00200128020441306e220741306c2208417f4c0d02200228022421090240024020080d004108210a0c010b20081028220a450d040b02402009450d004100210b0340200241003a00f801200b220c41016a210b2001280204417f6a21084100210d024002400240024003402008417f460d01200241d8016a200d6a2001280200220e2d00003a0000200120083602042001200e41016a3602002002200d41016a220e3a00f8012008417f6a2108200e210d200e4120470d000b200241b8016a41186a2208200241d8016a41186a290300370300200241b8016a41106a220d200241d8016a41106a290300370300200241b8016a41086a220e200241d8016a41086a290300370300200220022903d8013703b801200241086a2001109f012002290308a70d01200241086a41106a290300210f20022903102110200241f8006a41086a200e2903002211370300200241f8006a41106a200d2903002212370300200241f8006a41186a20082903002213370300200241d8006a41086a220d2011370300200241d8006a41106a220e2012370300200241d8006a41186a22142013370300200220022903b8012211370378200220113703582007200c470d030240200c4101742208200b2008200b4b1b2207ad42307e2211422088a70d002011a7220841004e0d030b1031000b200d41ff0171450d00200241003a00f8010b200241f8006a41086a20024198016a41086a2903003703002007450d04200a102a0c040b02400240200c0d0020081028210a0c010b200a200c41306c2008102c210a0b200a450d070b200a200c41306c6a2208200f3703082008201037030020082002290358370310200841186a200d290300370300200841206a200e290300370300200841286a2014290300370300200b2009470d000b0b200a0d010b200041003602200c040b20002004370300200020073602242000200a3602202000200637031020002003370308200041286a2009360200200041186a20053703000c030b1036000b200841081037000b200841081037000b20024180026a24000b0a0041f0b8c0001032000b4d01017f230041206b22002400200041146a410136020020004201370204200041ccd1c5003602002000410436021c200041c4d1c5003602182000200041186a360210200041ccb9c000103e000b8d0301027f230041e0006b22032400200341003a0005024002402000413f4b0d0041012104200341013a0005200320004102743a00000c010b02400240200041808001490d0020004180808080044f0d0141042104200341043a0005200320004102744102723602000c020b41022104200341023a0005200320004102744101723b01000c010b41052104200341053a0005200341033a0000200320003600010b024002402001280200220028020822012002490d0020002802002100200320023602082003200436020c20042002470d01200020032002109a051a200341e0006a24000f0b20022001103c000b200341286a41146a4108360200200341346a4125360200200341106a41146a410336020020034203370214200341c8afc6003602102003412536022c2003200341086a36024020032003410c6a360244200342043703582003420137024c2003419cb0c6003602482003200341286a3602202003200341c8006a3602382003200341c4006a3602302003200341c0006a360228200341106a41d8b0c600103e000bb60201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d002000280200210420034120710d012004ad41012001103f21000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000b20024180016a240020000f0b20044180011044000b20044180011044000b130020004102360204200041cc9dc6003602000b130020004101360204200041b8a8c3003602000b130020004103360204200041a8dcc0003602000b130020004103360204200041bcaac4003602000b130020004101360204200041d899c6003602000b13002000410b3602042000418082c5003602000b13002000410636020420004198e8c2003602000b130020004104360204200041d09ec1003602000b130020004105360204200041f8aec3003602000b130020004103360204200041ec91c6003602000b130020004105360204200041ac81c2003602000b130020004106360204200041f8d1c3003602000b130020004103360204200041a896c4003602000b13002000410136020420004190e0c0003602000b130020004101360204200041f896c6003602000b8b0701077f23004190026b2202240041002103200241003a002820012802042104417f210502400240034020042003460d01200241086a20036a200128020022062d00003a00002001200420056a3602042001200641016a3602002002200341016a22073a00282005417f6a21052007210320074120470d000b200241e8006a41086a200241086a41086a290300370300200241e8006a41106a200241086a41106a290300370300200241e8006a41186a200241086a41186a2903003703002002200229030837036841002103200241003a0028200420076b2108200420056a21050340024020082003470d000240200341ff0171450d00200241003a00280b200041013a00000c030b200241086a20036a200620036a220741016a2d00003a0000200120053602042001200741026a3602002002200341016a22073a00282005417f6a21052007210320074120470d000b20024188016a41086a200241086a41086a29030037030020024188016a41106a200241086a41106a29030037030020024188016a41186a200241086a41186a290300370300200220022903083703880141002103200241003a008802200620076a2106034002402005417f470d000240200341ff0171450d00200241003a0088020b200041013a00000c030b200241e8016a20036a200620036a220741016a2d00003a0000200120053602042001200741026a3602002002200341016a22073a0088022005417f6a21052007210320074120470d000b200241a8016a41086a2201200241e8016a41086a290300370300200241a8016a41106a2203200241e8016a41106a290300370300200241a8016a41186a2205200241e8016a41186a290300370300200241086a41086a200241e8006a41086a290300370300200241086a41106a200241e8006a41106a290300370300200241086a41186a200241e8006a41186a290300370300200220022903e8013703a80120022002290368370308200241c0006a20024188016a41186a290300370300200241386a20024188016a41106a290300370300200241306a20024188016a41086a2903003703002002200229038801370328200241e0006a2005290300370300200241d8006a2003290300370300200241d0006a2001290300370300200220022903a801370348200041016a200241086a41e000109a051a200041003a00000c010b0240200341ff0171450d00200241003a00280b200041013a00000b20024190026a24000bf90802067f047e230041d0026b220224000240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a360200200541034b0d0620050e0401020304010b200041053a00000c090b200241206a2001106d20022802200d03200041053a00000c080b200241c0006a20011081010240024020022802404113460d00200241c8016a200241c0006a418801109a051a418801102822050d0141880141081037000b200041053a00000c080b2005200241c8016a418801109a052105200041023a0000200020022f00103b0001200041036a200241106a41026a2d00003a0000200041046a2005360200200041086a2002290220370200200041106a200241206a41086a290200370200200041186a200241206a41106a290200370200200041206a200241206a41186a2902003702000c070b20022001106c20022802000d0520022802042105200241c0006a200110810120022802404113460d05200241c8016a200241c0006a418801109a051a41880110282201450d032001200241c8016a418801109a052101200041033a0000200020022f00103b0001200041036a200241126a2d00003a0000200041086a2001360200200041046a20053602002000410c6a2002290220370200200041146a200241206a41086a2902003702002000411c6a200241306a290200370200200041246a200241386a2802003602000c060b41002105200241003a00e8012003417f6a21062003417e6a21030340024020062005470d00200541ff0171450d05200241003a00e8010c050b200241c8016a20056a200420056a220741016a2d00003a0000200120033602042001200741026a3602002002200541016a22073a00e8012003417f6a21032007210520074120470d000b200241c0006a41186a200241c8016a41186a290300370300200241c0006a41106a200241c8016a41106a290300370300200241c0006a41086a200241c8016a41086a290300370300200220022903c801370340200241086a2001106c20022802080d0320012802042205450d03200228020c2103200128020022072d0000210420012005417f6a3602042001200741016a360200200241206a41086a200241c0006a41086a2903002208370300200241206a41106a200241c0006a41106a2903002209370300200241206a41186a200241c0006a41186a290300220a37030020022002290340220b370320200041043a00002000200b370001200041096a2008370000200041116a2009370000200041196a200a370000200041246a2003360200200041216a20043a00000c050b200241cb006a200241206a41086a28020036000020022002290320370043200041013a000020002002290040370001200041086a200241c7006a290000370000200041106a20022902c801370200200041186a200241c8016a41086a290200370200200041206a200241c8016a41106a2902003702000c040b200041053a00000c030b41880141081037000b200041053a00000c010b200041053a00000b200241d0026a24000bd50603057f0b7e057f230041106b21020240200128020422034104490d0020012802002204280000210520012003417c6a22063602042001200441046a36020020064108490d00200429000421072001200341746a220636020420012004410c6a36020020064108490d00200429000c210820012003416c6a22063602042001200441146a36020020064108490d00200429001421092001200341646a220636020420012004411c6a36020020064108490d00200429001c210a20012003415c6a22063602042001200441246a36020020064108490d002004290024210b2001200341546a220636020420012004412c6a36020020064108490d00200429002c210c20012003414c6a22063602042001200441346a36020020064108490d002004290034210d2001200341446a220636020420012004413c6a36020020064108490d00200429003c210e2001200341bc7f6a22063602042001200441c4006a36020020064108490d002004290044210f2001200341b47f6a22063602042001200441cc006a36020020064108490d00200429004c21102001200341ac7f6a22063602042001200441d4006a36020020064108490d00200429005421112001200341a47f6a22063602042001200441dc006a36020020064104490d00200428005c21122001200341a07f6a22063602042001200441e0006a36020020064104490d002004280060211320012003419c7f6a22063602042001200441e4006a36020020064104490d00200428006421142001200341987f6a22063602042001200441e8006a36020020064104490d00200428006821152001200341947f6a22063602042001200441ec006a22043602002006450d0020042d000021162001200341937f6a22063602042001200441016a36020020064104490d00200020163a00702000201536026820002014360264200020133602602000201236025c2000200536025820002011370350200020103703482000200f3703402000200e3703382000200d3703302000200c3703282000200b3703202000200a3703182000200937031020002008370308200020073703002004280001210620012003418f7f6a3602042001200441056a3602002000200636026c200041f4006a2002410c6a280000360000200020022800093600710f0b200041023a00700bfb910205057f017e067f017e017f230041206b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402000280200220341144b0d00024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e15000102030405060708090a0b0c0d0e0f1011121314000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d62200341017422052004200520044b1b22054100480d620240024020030d002005102821040c010b200128020020032005102c21040b2004450d1720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002000280208417f6a220341054b0d1502400240024002400240024020030e06000102030405000b200241003a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d67200341017422042000200420004b1b22044100480d670240024020030d002004102821000c010b200128020020032004102c21000b2000450d1d20012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000c1a0b200241013a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d66200341017422052004200520044b1b22054100480d660240024020030d002005102821040c010b200128020020032005102c21040b2004450d1d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200028020c2106200041146a2802002203200110b40102400240200141046a2802002204200528020022006b2003490d00200128020021040c010b200020036a22052000490d66200441017422002005200020054b1b22004100480d660240024020040d002000102821040c010b200128020020042000102c21040b2004450d1e20012004360200200141046a2000360200200141086a28020021000b200141086a200020036a360200200420006a20062003109a051a0c190b200241023a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d65200341017422052004200520044b1b22054100480d650240024020030d002005102821040c010b200128020020032005102c21040b2004450d1e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000290310210702400240200141046a2802002200200528020022036b4108490d00200128020021000c010b200341086a22042003490d65200041017422032004200320044b1b22034100480d650240024020000d002003102821000c010b200128020020002003102c21000b2000450d1f20012000360200200141046a2003360200200141086a28020021030b200141086a200341086a360200200020036a20073700000c180b200241033a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d64200341017422052004200520044b1b22054100480d640240024020030d002005102821040c010b200128020020032005102c21040b2004450d1f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200028020c2106200041146a2802002203200110b40102400240200141046a2802002204200528020022006b2003490d00200128020021040c010b200020036a22052000490d64200441017422002005200020054b1b22004100480d640240024020040d002000102821040c010b200128020020042000102c21040b2004450d2020012004360200200141046a2000360200200141086a28020021000b200141086a200020036a360200200420006a20062003109a051a0c170b200141086a2802002103200241043a0018024002402003200141046a280200460d00200128020021050c010b200341016a22042003490d63200341017422052004200520044b1b22044100480d630240024020030d002004102821050c010b200128020020032004102c21050b2005450d2020012005360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200520036a41043a0000200028020c2103200041146a2802002200200110b4012000450d162003200041186c6a2108200141046a2106034020032802002109200341086a2802002200200110b401024002402006280200220a200428020022056b2000490d002001280200210a0c010b200520006a220b2005490d64200a4101742205200b2005200b4b1b22054100480d6402400240200a0d0020051028210a0c010b2001280200200a2005102c210a0b200a450d222001200a36020020062005360200200428020021050b2004200520006a360200200a20056a20092000109a051a2003410c6a2802002109200341146a2802002200200110b401024002402006280200220a200428020022056b2000490d002001280200210a0c010b200520006a220b2005490d64200a4101742205200b2005200b4b1b22054100480d6402400240200a0d0020051028210a0c010b2001280200200a2005102c210a0b200a450d232001200a36020020062005360200200428020021050b2004200520006a360200200a20056a20092000109a051a200341186a22032008470d000c170b0b200241053a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d62200341017422052004200520044b1b22054100480d620240024020030d002005102821040c010b200128020020032005102c21040b2004450d2220012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41053a0000200028020c2104200041146a2802002203200110b4012003450d1520042003410c6c6a2108200141046a210903402004280200210a200441086a2802002203200110b4010240024020092802002205200628020022006b2003490d00200128020021050c010b200020036a220b2000490d6320054101742200200b2000200b4b1b22004100480d630240024020050d002000102821050c010b200128020020052000102c21050b2005450d242001200536020020092000360200200628020021000b2006200020036a360200200520006a200a2003109a051a2004410c6a22042008470d000c160b0b02400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d61200341017422042000200420004b1b22044100480d610240024020030d002004102821000c010b200128020020032004102c21000b2000450d2320012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41013a00000c130b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d60200341017422052004200520044b1b22054100480d600240024020030d002005102821040c010b200128020020032005102c21040b2004450d2320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d60200341017422052004200520044b1b22054100480d600240024020030d002005102821040c010b200128020020032005102c21040b2004450d2420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041086a200110a1010c130b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5f200341017422052004200520044b1b22054100480d5f0240024020030d002005102821040c010b200128020020032005102c21040b2004450d2420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d5f200341017422052004200520044b1b22054100480d5f0240024020030d002005102821040c010b200128020020032005102c21040b2004450d2520012004360200200141046a2005360200200141086a28020021030b200141086a220a200341016a360200200420036a41003a00002000280204210c2000410c6a2802002203200110b4012003450d12200c200341f0006c6a210d200141046a210b034020022001360208200c41106a200241086a10c801200c200110a00120022001360208200c41306a200241086a10c80120022001360208200c41d0006a200241086a10c801200c2802042104200c28020c2203200110b40102402003450d00200341246c21090340200241086a200410ec012002280208210602400240200b2802002205200a28020022036b20022802102200490d00200128020021050c010b200320006a22082003490d62200541017422032008200320084b1b22034100480d620240024020050d002003102821050c010b200128020020052003102c21050b2005450d2920012005360200200b2003360200200a28020021030b200a200320006a360200200520036a20062000109a051a0240200228020c450d002006102a0b200441246a21042009415c6a22090d000b0b200c41f0006a220c200d470d000c130b0b02400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d5e200341017422042000200420004b1b22044100480d5e0240024020030d002004102821000c010b200128020020032004102c21000b2000450d2620012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41043a00000c100b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5d200341017422052004200520044b1b22054100480d5d0240024020030d002005102821040c010b200128020020032005102c21040b2004450d2620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a00002000280208417f6a220341024b0d10024002400240024020030e03000102000b200241003a001802400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d60200341017422052004200520044b1b22044100480d600240024020030d002004102821050c010b200128020020032004102c21050b2005450d2a20012005360200200141046a2004360200200141086a28020021030b200041306a2104200141086a200341016a360200200520036a41003a00002000410c6a200110a601200241146a21030c020b200241013a001802400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d5f200341017422052004200520044b1b22044100480d5f0240024020030d002004102821050c010b200128020020032004102c21050b2005450d2a20012005360200200141046a2004360200200141086a28020021030b200041c0006a2104200141086a200341016a360200200520036a41013a00002000410c6a200110a6012002200041306a360218200241186a200110a3012002411c6a21030c010b200241023a001802400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d5e200341017422052004200520044b1b22044100480d5e0240024020030d002004102821050c010b200128020020032004102c21050b2005450d2a20012005360200200141046a2004360200200141086a28020021030b200041d8006a2104200141086a200341016a360200200520036a41023a00002000410c6a200110a601200041306a200110a601200241086a21030b200320043602002003200110a3010c100b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5c200341017422052004200520044b1b22054100480d5c0240024020030d002005102821040c010b200128020020032005102c21040b2004450d2920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41063a000020002d0008417f6a2203410c4b0d0f024002400240024002400240024002400240024002400240024020030e0d000102030405060708090a0b0c000b200241003a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d68200341017422052004200520044b1b22054100480d680240024020030d002005102821040c010b200128020020032005102c21040b2004450d3620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002000410c6a200110a6012002200041306a360208200241086a200110a30120002d0009220341024b0d1b02400240024020030e03000102000b200241003a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d6a200341017422042000200420004b1b22044100480d6a0240024020030d002004102821000c010b200128020020032004102c21000b2000450d3920012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000c1d0b200241013a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d69200341017422042000200420004b1b22044100480d690240024020030d002004102821000c010b200128020020032004102c21000b2000450d3920012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41013a00000c1c0b200241023a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d68200341017422042000200420004b1b22044100480d680240024020030d002004102821000c010b200128020020032004102c21000b2000450d3920012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41023a00000c1b0b200241013a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d67200341017422052004200520044b1b22054100480d670240024020030d002005102821040c010b200128020020032005102c21040b2004450d3920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002002200041106a360208200241086a200110a3010c1a0b200241023a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d66200341017422052004200520044b1b22054100480d660240024020030d002005102821040c010b200128020020032005102c21040b2004450d3920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002002200041106a360208200241086a200110a3010c190b200241033a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d65200341017422042000200420004b1b22044100480d650240024020030d002004102821000c010b200128020020032004102c21000b2000450d3920012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41033a00000c180b200141086a2802002103200241043a0018024002402003200141046a280200460d00200128020021040c010b200341016a22042003490d64200341017422052004200520044b1b22054100480d640240024020030d002005102821040c010b200128020020032005102c21040b2004450d3920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41043a00002002200041106a360208200241086a200110a3010c170b200241053a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d63200341017422052004200520044b1b22054100480d630240024020030d002005102821040c010b200128020020032005102c21040b2004450d3920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a0000200028020c2103200041146a2802002200200110b4012000450d16200041246c210003402003200110a601200341246a21032000415c6a22000d000c170b0b200241063a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d62200341017422042000200420004b1b22044100480d620240024020030d002004102821000c010b200128020020032004102c21000b2000450d3920012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41063a00000c150b200241073a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d61200341017422052004200520044b1b22054100480d610240024020030d002005102821040c010b200128020020032005102c21040b2004450d3920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41073a000020002d0009220341024b0d1402400240024020030e03000102000b200241003a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d63200341017422042000200420004b1b22044100480d630240024020030d002004102821000c010b200128020020032004102c21000b2000450d3c20012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000c160b200241013a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d62200341017422042000200420004b1b22044100480d620240024020030d002004102821000c010b200128020020032004102c21000b2000450d3c20012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41013a00000c150b200241023a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d61200341017422042000200420004b1b22044100480d610240024020030d002004102821000c010b200128020020032004102c21000b2000450d3c20012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41023a00000c140b200141046a2802002104200241083a0018024002402004200141086a2802002203460d00200128020021040c010b200341016a22042003490d60200341017422052004200520044b1b22054100480d600240024020030d002005102821040c010b200128020020032005102c21040b2004450d3c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41083a00002000410c6a200110a6010c130b200241093a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5f200341017422052004200520044b1b22054100480d5f0240024020030d002005102821040c010b200128020020032005102c21040b2004450d3c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a00002000410c6a200110a0010c120b2002410a3a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d5e200341017422042000200420004b1b22044100480d5e0240024020030d002004102821000c010b200128020020032004102c21000b2000450d3c20012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a410a3a00000c110b2002410b3a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d5d200341017422042000200420004b1b22044100480d5d0240024020030d002004102821000c010b200128020020032004102c21000b2000450d3c20012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a410b3a00000c100b2002410c3a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5c200341017422052004200520044b1b22054100480d5c0240024020030d002005102821040c010b200128020020032005102c21040b2004450d3c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410c3a0000200028020c2103200041146a2802002200200110b4012000450d0f20004105742100034020032001108f01200341206a2103200041606a22000d000c100b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5b200341017422052004200520044b1b22054100480d5b0240024020030d002005102821040c010b200128020020032005102c21040b2004450d3c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41073a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d5b200341017422052004200520044b1b22054100480d5b0240024020030d002005102821040c010b200128020020032005102c21040b2004450d3d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041106a2001108f01200041306a2001108f01200041d0006a2001108f01200028020421062000410c6a2802002203200110b40102400240200141046a2802002204200528020022006b2003490d00200128020021040c010b200020036a22052000490d5b200441017422002005200020054b1b22004100480d5b0240024020040d002000102821040c010b200128020020042000102c21040b2004450d3e20012004360200200141046a2000360200200141086a28020021000b200141086a200020036a360200200420006a20062003109a051a0c0e0b02400240200141046a2206280200200141086a22042802002203460d00200128020021050c010b200341016a22052003490d5a2003410174220a2005200a20054b1b220a4100480d5a0240024020030d00200a102821050c010b20012802002003200a102c21050b2005450d3e20012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41083a0000200041086a22052d0000417f6a220341104b0d0d0240024002400240024002400240024002400240024002400240024002400240024020030e11000102030405060708090a0b0c0d0e0f10000b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d6a200341017422052004200520044b1b22054100480d6a0240024020030d002005102821040c010b200128020020032005102c21040b2004450d4f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200028020c200110eb012002200041106a360208200241086a200110a3010c1d0b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d69200341017422052004200520044b1b22054100480d690240024020030d002005102821040c010b200128020020032005102c21040b2004450d4f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000410c6a200110a0010c1c0b02400240200628020020042802002203460d00200128020021060c010b200341016a22062003490d682003410174220a2006200a20064b1b220a4100480d680240024020030d00200a102821060c010b20012802002003200a102c21060b2006450d4f20012006360200200141046a200a360200200141086a28020021030b200141086a220a200341016a360200200620036a41023a00002000410c6a200110a00120052d00012106200541026a2d0000210502400240200141046a280200200a2802002203460d00200128020021000c010b200341016a22002003490d682003410174220a2000200a20004b1b220a4100480d680240024020030d00200a102821000c010b20012802002003200a102c21000b2000450d5020012000360200200141046a200a360200200141086a28020021030b2004200341016a360200200020036a20064100474107742005723a00000c1b0b02400240200628020020042802002203460d00200128020021060c010b200341016a22062003490d672003410174220a2006200a20064b1b220a4100480d670240024020030d00200a102821060c010b20012802002003200a102c21060b2006450d5020012006360200200141046a200a360200200141086a28020021030b200141086a220a200341016a360200200620036a41033a00002000410c6a200110a00120052d00012106200541026a2d0000210502400240200141046a280200200a2802002203460d00200128020021000c010b200341016a22002003490d672003410174220a2000200a20004b1b220a4100480d670240024020030d00200a102821000c010b20012802002003200a102c21000b2000450d5120012000360200200141046a200a360200200141086a28020021030b2004200341016a360200200020036a20064100474107742005723a00000c1a0b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d662003410174220a2005200a20054b1b220a4100480d660240024020030d00200a102821050c010b20012802002003200a102c21050b2005450d5120012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41043a0000200028020c21050240024020062802002200200428020022036b4104490d00200128020021000c010b200341046a22062003490d66200041017422032006200320064b1b22034100480d660240024020000d002003102821000c010b200128020020002003102c21000b2000450d5220012000360200200141046a2003360200200141086a28020021030b2004200341046a360200200020036a20053600000c190b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d65200341017422052004200520044b1b22054100480d650240024020030d002005102821040c010b200128020020032005102c21040b2004450d5220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a0000200028020c200110eb010c180b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d64200341017422052004200520044b1b22054100480d640240024020030d002005102821040c010b200128020020032005102c21040b2004450d5220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41063a0000200028020c200110eb010c170b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d63200341017422052004200520044b1b22054100480d630240024020030d002005102821040c010b200128020020032005102c21040b2004450d5220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41073a0000200028020c200110eb010c160b02400240200628020020042802002203460d002001280200210a0c010b200341016a220a2003490d6220034101742209200a2009200a4b1b22094100480d620240024020030d0020091028210a0c010b200128020020032009102c210a0b200a450d522001200a360200200141046a2009360200200141086a28020021030b200141086a2209200341016a360200200a20036a41083a000020022001360208200541016a200241086a10c801200028022c210a02400240200141046a2802002205200928020022036b4104490d00200128020021050c010b200341046a22092003490d62200541017422032009200320094b1b22034100480d620240024020050d002003102821050c010b200128020020052003102c21050b2005450d5320012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a200a360000200028023021050240024020062802002200200428020022036b4104490d00200128020021000c010b200341046a22062003490d62200041017422032006200320064b1b22034100480d620240024020000d002003102821000c010b200128020020002003102c21000b2000450d5420012000360200200141046a2003360200200141086a28020021030b2004200341046a360200200020036a20053600000c150b02400240200628020020042802002203460d00200128020021000c010b200341016a22002003490d61200341017422042000200420004b1b22044100480d610240024020030d002004102821000c010b200128020020032004102c21000b2000450d5420012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41093a000020022001360208200541016a200241086a10c8010c140b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d60200341017422052004200520044b1b22054100480d600240024020030d002005102821040c010b200128020020032005102c21040b2004450d5420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a00002000410c6a200110a0010c130b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d5f200341017422052004200520044b1b22054100480d5f0240024020030d002005102821040c010b200128020020032005102c21040b2004450d5420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410b3a00002000410c6a200110a001200041106a200110a001200041146a200110a0010c120b02400240200628020020042802002203460d00200128020021000c010b200341016a22002003490d5e200341017422042000200420004b1b22044100480d5e0240024020030d002004102821000c010b200128020020032004102c21000b2000450d5420012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a410c3a0000200541016a2001108f010c110b02400240200628020020042802002203460d00200128020021000c010b200341016a22002003490d5d200341017422052000200520004b1b22054100480d5d0240024020030d002005102821000c010b200128020020032005102c21000b2000450d5420012000360200200141046a2005360200200141086a28020021030b2004200341016a360200200020036a410d3a00000c100b02400240200628020020042802002203460d00200128020021000c010b200341016a22002003490d5c200341017422042000200420004b1b22044100480d5c0240024020030d002004102821000c010b200128020020032004102c21000b2000450d5420012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a410e3a0000200541016a2001108f010c0f0b02400240200628020020042802002203460d00200128020021000c010b200341016a22002003490d5b2003410174220a2000200a20004b1b220a4100480d5b0240024020030d00200a102821000c010b20012802002003200a102c21000b2000450d5420012000360200200141046a200a360200200141086a28020021030b200141086a200341016a360200200020036a410f3a0000200541016a2001108f0120052d0021220341064b0d0e0240024002400240024002400240024020030e0700010203040506000b410021000c060b410121000c050b410221000c040b410321000c030b410421000c020b410521000c010b410621000b200220003a001802400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5b200341017422062005200620054b1b22064100480d5b0240024020030d002006102821050c010b200128020020032006102c21050b2005450d5520012005360200200141046a2006360200200141086a28020021030b2004200341016a360200200520036a20003a00000c0e0b02400240200628020020042802002203460d00200128020021000c010b200341016a22002003490d5a200341017422052000200520004b1b22054100480d5a0240024020030d002005102821000c010b200128020020032005102c21000b2000450d5520012000360200200141046a2005360200200141086a28020021030b2004200341016a360200200020036a41103a00000c0d0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d59200341017422052004200520044b1b22054100480d590240024020030d002005102821040c010b200128020020032005102c21040b2004450d5520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a0000200041046a200110ed010c0c0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d58200341017422052004200520044b1b22054100480d580240024020030d002005102821040c010b200128020020032005102c21040b2004450d5520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a0000200041046a200110ed010c0b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d57200341017422052004200520044b1b22054100480d570240024020030d002005102821040c010b200128020020032005102c21040b2004450d5520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410b3a00002000280208417f6a220341094b0d0a024002400240024002400240024002400240024020030e0a00010203040506070809000b200241003a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d60200341017422052004200520044b1b22054100480d600240024020030d002005102821040c010b200128020020032005102c21040b2004450d5f20012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41003a0000200028020c2104200041146a280200220a200110b4010240200a450d00200141046a2109034002400240200928020020062802002203460d00200128020021050c010b200341016a22052003490dad012003410174220b2005200b20054b1b220b4100480dad010240024020030d00200b102821050c010b20012802002003200b102c21050b2005450d63200120053602002009200b360200200628020021030b2006200341016a360200200520036a20042d00003a0000200441016a2104200a417f6a220a0d000b0b200041186a200110a001200028021c210502400240200141046a2802002204200628020022036b4104490d00200128020021040c010b200341046a22062003490dab01200441017422032006200320064b1b22034100480dab010240024020040d002003102821040c010b200128020020042003102c21040b2004450d6220012004360200200141046a2003360200200141086a28020021030b200141086a2206200341046a360200200420036a2005360000200041286a29030021072000290320210e02400240200141046a2802002200200628020022036b4110490d00200128020021000c010b200341106a22042003490dab01200041017422032004200320044b1b22034100480dab010240024020000d002003102821000c010b200128020020002003102c21000b2000450d6320012000360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200020036a220320073700082003200e3700000c130b200241013a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490daa01200341017422052004200520044b1b22054100480daa010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6320012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41013a0000200028020c2104200041146a280200220a200110b4010240200a450d00200141046a2109034002400240200928020020062802002203460d00200128020021050c010b200341016a22052003490dac012003410174220b2005200b20054b1b220b4100480dac010240024020030d00200b102821050c010b20012802002003200b102c21050b2005450d66200120053602002009200b360200200628020021030b2006200341016a360200200520036a20042d00003a0000200441016a2104200a417f6a220a0d000b0b200041186a200110a001200028021c210502400240200141046a2802002204200628020022036b4104490d00200128020021040c010b200341046a22062003490daa01200441017422032006200320064b1b22034100480daa010240024020040d002003102821040c010b200128020020042003102c21040b2004450d6520012004360200200141046a2003360200200141086a28020021030b200141086a2206200341046a360200200420036a2005360000200041286a29030021072000290320210e02400240200141046a2802002200200628020022036b4110490d00200128020021000c010b200341106a22042003490daa01200041017422032004200320044b1b22034100480daa010240024020000d002003102821000c010b200128020020002003102c21000b2000450d6620012000360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200020036a220320073700082003200e3700000c120b200241023a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da901200341017422052004200520044b1b22054100480da9010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002000410c6a200110a001200041106a200110a601200041346a200110a001200041386a200110a0010c110b200241033a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da801200341017422052004200520044b1b22054100480da8010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a00002000410c6a200110a0010c100b200141086a2802002103200241043a0018024002402003200141046a280200460d00200128020021040c010b200341016a22042003490da701200341017422052004200520044b1b22054100480da7010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41043a00002000410c6a200110a0010c0f0b200241053a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da601200341017422052004200520044b1b22054100480da6010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a00002000410c6a200110a6012002200041386a360208200241086a200110a301200041306a200110a0010c0e0b200241063a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da501200341017422052004200520044b1b22054100480da5010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41063a00002000410c6a200110a0010c0d0b200241073a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da401200341017422052004200520044b1b22054100480da4010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41073a00002000410c6a200110a6010c0c0b200141046a2802002104200241083a0018024002402004200141086a2802002203460d00200128020021040c010b200341016a22042003490da301200341017422052004200520044b1b22054100480da3010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41083a00002000410c6a200110a0010c0b0b200241093a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da201200341017422052004200520044b1b22054100480da2010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a00002000410c6a200110a0010c0a0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da101200341017422052004200520044b1b22054100480da1010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410c3a0000200041046a22042d0000417f6a220341034b0d09024002400240024020030e0400010203000b200241003a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490da401200341017422052000200520004b1b22054100480da4010240024020030d002005102821000c010b200128020020032005102c21000b2000450d6a20012000360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200020036a41003a0000200441016a2001108f010c0c0b200141086a2802002103200141046a2802002100200241013a00180240024020002003460d00200128020021000c010b200341016a22002003490da301200341017422052000200520004b1b22054100480da3010240024020030d002005102821000c010b200128020020032005102c21000b2000450d6a20012000360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200020036a41013a0000200441016a2001108f010c0b0b200241023a001802400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490da201200341017422052000200520004b1b22054100480da2010240024020030d002005102821000c010b200128020020032005102c21000b2000450d6a20012000360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200020036a41023a0000200441016a2001108f01200441216a2001108f010c0a0b200241033a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da101200341017422052004200520044b1b22054100480da1010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a000020002802082103200041106a2802002200200110b4012000450d0920004105742100034020032001108f01200341206a2103200041606a22000d000c0a0b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da001200341017422052004200520044b1b22054100480da0010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410d3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490da001200341017422052004200520044b1b22054100480da0010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6b20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041046a200110a0010c080b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9f01200341017422052004200520044b1b22054100480d9f010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410e3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d9f01200341017422052004200520044b1b22054100480d9f010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200028020421062000410c6a2802002203200110b40102400240200141046a2802002204200528020022006b2003490d00200128020021040c010b200020036a22052000490d9f01200441017422002005200020054b1b22004100480d9f010240024020040d002000102821040c010b200128020020042000102c21040b2004450d6d20012004360200200141046a2000360200200141086a28020021000b200141086a200020036a360200200420006a20062003109a051a0c070b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9e01200341017422052004200520044b1b22054100480d9e010240024020030d002005102821040c010b200128020020032005102c21040b2004450d6d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410f3a00002000280208417f6a220341024b0d0602400240024020030e03000102000b200241003a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da001200341017422052004200520044b1b22054100480da0010240024020030d002005102821040c010b200128020020032005102c21040b2004450d7020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002002200041306a360208200241086a200110a3012000410c6a200110a6010c080b200241013a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9f01200341017422052004200520044b1b22054100480d9f010240024020030d002005102821040c010b200128020020032005102c21040b2004450d7020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000410c6a200110a0010c070b200241023a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9e01200341017422052004200520044b1b22054100480d9e010240024020030d002005102821040c010b200128020020032005102c21040b2004450d7020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002000410c6a200110a0010c060b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9d01200341017422052004200520044b1b22054100480d9d010240024020030d002005102821040c010b200128020020032005102c21040b2004450d7020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41103a0000200041086a22042d0000417f6a220341044b0d050240024002400240024020030e050001020304000b200241003a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da101200341017422052004200520044b1b22054100480da1010240024020030d002005102821040c010b200128020020032005102c21040b2004450d7520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041106a200110ee010c090b200241013a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da001200341017422052004200520044b1b22054100480da0010240024020030d002005102821040c010b200128020020032005102c21040b2004450d7520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041186a200110a101200028020c2106200041146a2802002203200110b40102400240200141046a2802002204200528020022006b2003490d00200128020021040c010b200020036a22052000490da001200441017422002005200020054b1b22004100480da0010240024020040d002000102821040c010b200128020020042000102c21040b2004450d7620012004360200200141046a2000360200200141086a28020021000b200141086a200020036a360200200420006a20062003109a051a0c080b200241023a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9f01200341017422052004200520044b1b22054100480d9f010240024020030d002005102821040c010b200128020020032005102c21040b2004450d7620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000410c6a200110a6012002200041c0006a360208200241086a200110a301200041d0006a200110a10120002802302106200041386a2802002203200110b40102400240200141046a2802002204200528020022006b2003490d00200128020021040c010b200020036a22052000490d9f01200441017422002005200020054b1b22004100480d9f010240024020040d002000102821040c010b200128020020042000102c21040b2004450d7720012004360200200141046a2000360200200141086a28020021000b200141086a200020036a360200200420006a20062003109a051a0c070b200241033a001802400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22052003490d9e01200341017422062005200620054b1b22064100480d9e010240024020030d002006102821050c010b200128020020032006102c21050b2005450d7720012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a41033a00002002200041386a360208200241086a200110a301200041c8006a200110a10120022001360208200441016a200241086a10c801200028022c2105200041346a2802002203200110b40102400240200141046a2802002204200628020022006b2003490d00200128020021040c010b200020036a22062000490d9e01200441017422002006200020064b1b22004100480d9e010240024020040d002000102821040c010b200128020020042000102c21040b2004450d7820012004360200200141046a2000360200200141086a28020021000b200141086a200020036a360200200420006a20052003109a051a0c060b200141086a2802002103200241043a0018024002402003200141046a280200460d00200128020021000c010b200341016a22002003490d9d01200341017422052000200520004b1b22054100480d9d010240024020030d002005102821000c010b200128020020032005102c21000b2000450d7820012000360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200020036a41043a0000200441016a2001108f01024020042d00214101460d00200241003a001802400240200141046a28020020052802002203460d00200128020021000c010b200341016a22002003490d9e01200341017422042000200420004b1b22044100480d9e010240024020030d002004102821000c010b200128020020032004102c21000b2000450d7a20012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000c060b200241013a001802400240200141046a28020020052802002203460d00200128020021000c010b200341016a22002003490d9d01200341017422052000200520004b1b22054100480d9d010240024020030d002005102821000c010b200128020020032005102c21000b2000450d7a20012000360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200020036a41013a0000200441226a2001108f010c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9c01200341017422052004200520044b1b22054100480d9c010240024020030d002005102821040c010b200128020020032005102c21040b2004450d7a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41113a00002000280204417f6a220341024b0d0402400240024020030e03000102000b200241003a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9e01200341017422052004200520044b1b22054100480d9e010240024020030d002005102821040c010b200128020020032005102c21040b2004450d7d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002000280208200110eb010c060b200241013a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9d01200341017422052004200520044b1b22054100480d9d010240024020030d002005102821040c010b200128020020032005102c21040b2004450d7d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041086a200110a6010c050b200241023a001802400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9c01200341017422052004200520044b1b22054100480d9c010240024020030d002005102821040c010b200128020020032005102c21040b2004450d7d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041086a200110a601200028022c200110eb010c040b02400240200141046a220a280200200141086a22032802002204460d00200128020021050c010b200441016a22052004490d9b01200441017422062005200620054b1b22064100480d9b010240024020040d002006102821050c010b200128020020042006102c21050b2005450d7d20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a41123a000002400240200a28020020032802002204460d00200128020021050c010b200441016a22052004490d9b01200441017422062005200620054b1b22064100480d9b010240024020040d002006102821050c010b200128020020042006102c21050b2005450d7e20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a41003a00002000280204210602400240200a2802002205200328020022046b4104490d00200128020021050c010b200441046a22092004490d9b01200541017422042009200420094b1b22044100480d9b010240024020050d002004102821050c010b200128020020052004102c21050b2005450d7f20012005360200200141046a2004360200200141086a28020021040b200141086a2209200441046a360200200520046a2006360000200041086a280200210b200041106a2802002204200110b40102400240200141046a2802002206200928020022056b2004490d00200128020021060c010b200520046a22092005490d9b01200641017422052009200520094b1b22054100480d9b010240024020060d002005102821060c010b200128020020062005102c21060b2006450d800120012006360200200141046a2005360200200141086a28020021050b200141086a2208200520046a360200200620056a200b2004109a051a200041146a28020021062000411c6a2802002204200110b40102402004450d0020062004410c6c6a210f200141046a210c03402006280200210b200641086a2802002204200110b40102400240200c2802002209200828020022056b2004490d00200128020021090c010b200520046a220d2005490d9d0120094101742205200d2005200d4b1b22054100480d9d010240024020090d002005102821090c010b200128020020092005102c21090b2009450d830120012009360200200c2005360200200828020021050b2003200520046a360200200920056a200b2004109a051a2006410c6a2206200f470d000b0b200041206a280200210602400240200a2802002205200328020022046b4104490d00200128020021050c010b200441046a22092004490d9b01200541017422042009200420094b1b22044100480d9b010240024020050d002004102821050c010b200128020020052004102c21050b2005450d820120012005360200200141046a2004360200200141086a28020021040b2003200441046a360200200520046a2006360000200041246a280200210602400240200a2802002205200328020022046b4104490d00200128020021050c010b200441046a22092004490d9b01200541017422042009200420094b1b22044100480d9b010240024020050d002004102821050c010b200128020020052004102c21050b2005450d830120012005360200200141046a2004360200200141086a28020021040b2003200441046a360200200520046a200636000002400240200a28020020032802002204460d00200128020021050c010b200441016a22052004490d9b01200441017422062005200620054b1b22064100480d9b010240024020040d002006102821050c010b200128020020042006102c21050b2005450d840120012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a200041286a22042d00003a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d850120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00013a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d860120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d002a3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d870120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00033a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d880120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d002c3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d890120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00053a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d8a0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d002e3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d8b0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00073a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d8c0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00303a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d8d0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00093a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d8e0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00323a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d8f0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d000b3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d900120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00343a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d910120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d000d3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d920120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00363a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d930120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d000f3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d940120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00383a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d950120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00113a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d960120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d003a3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d970120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00133a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d980120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d003c3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d990120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00153a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490d9b01200541017422092006200920064b1b22094100480d9b010240024020050d002009102821060c010b200128020020052009102c21060b2006450d9a0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d003e3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450d9c0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00173a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450d9d0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00403a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450d9e0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00193a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450d9f0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00423a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450da00120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d001b3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450da10120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00443a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450da20120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d001d3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450da30120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00463a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450da40120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d001f3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450da50120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00483a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450da60120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00213a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450da70120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d004a3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450da80120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00233a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450da90120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d004c3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450daa0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00253a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450dab0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d004e3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450dac0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00273a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450dad0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00503a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450dae0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00293a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450daf0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00523a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450db00120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d002b3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450db10120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00543a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450db20120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d002d3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450db30120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00563a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450db40120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d002f3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450db50120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00583a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450db60120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00313a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450db70120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d005a3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450db80120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00333a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450db90120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d005c3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450dba0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00353a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450dbb0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d005e3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450dbc0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00373a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450dbd0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00603a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450dbe0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d00393a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450dbf0120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00623a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450dc00120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20042d003b3a000002400240200a28020020032802002205460d00200128020021060c010b200541016a22062005490dc701200541017422092006200920064b1b22094100480dc7010240024020050d002009102821060c010b200128020020052009102c21060b2006450dc10120012006360200200141046a2009360200200141086a28020021050b2003200541016a360200200620056a20002d00643a000002400240200a28020020032802002200460d00200128020021050c010b200041016a22052000490dc701200041017422062005200620054b1b22064100480dc7010240024020000d002006102821050c010b200128020020002006102c21050b2005450dc20120012005360200200141046a2006360200200141086a28020021000b2003200041016a360200200520006a20042d003d3a000002400240200a28020020032802002200460d00200128020021050c010b200041016a22052000490dc701200041017422062005200620054b1b22064100480dc7010240024020000d002006102821050c010b200128020020002006102c21050b2005450dc30120012005360200200141046a2006360200200141086a28020021000b2003200041016a360200200520006a20042d003e3a000002400240200a28020020032802002200460d00200128020021050c010b200041016a22052000490dc701200041017422062005200620054b1b22064100480dc7010240024020000d002006102821050c010b200128020020002006102c21050b2005450dc40120012005360200200141046a2006360200200141086a28020021000b2003200041016a360200200520006a20042d003f3a00000c030b02400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490dc601200341017422042000200420004b1b22044100480dc6010240024020030d002004102821000c010b200128020020032004102c21000b2000450dc40120012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41133a00000c010b02400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490dc501200341017422042000200420004b1b22044100480dc5010240024020030d002004102821000c010b200128020020032004102c21000b2000450dc40120012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41143a00000b200110c4010b200241206a24000f0b200541011037000b200441011037000b200541011037000b200041011037000b200541011037000b200341011037000b200541011037000b200041011037000b200441011037000b200541011037000b200541011037000b200541011037000b200041011037000b200441011037000b200541011037000b200541011037000b200541011037000b200541011037000b200341011037000b200441011037000b200541011037000b200441011037000b200441011037000b200441011037000b200541011037000b200541011037000b200441011037000b200441011037000b200441011037000b200541011037000b200541011037000b200441011037000b200541011037000b200541011037000b200441011037000b200541011037000b200441011037000b200441011037000b200441011037000b200541011037000b200541011037000b200441011037000b200441011037000b200541011037000b200541011037000b200541011037000b200041011037000b200a41011037000b200541011037000b200541011037000b200a41011037000b200a41011037000b200a41011037000b200a41011037000b200a41011037000b200341011037000b200541011037000b200541011037000b200541011037000b200941011037000b200341011037000b200341011037000b200441011037000b200541011037000b200541011037000b200441011037000b200541011037000b200441011037000b200a41011037000b200641011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b1031000b200b41011037000b200341011037000b200341011037000b200541011037000b200b41011037000b200341011037000b200341011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200041011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200041011037000b200541011037000b200041011037000b200641011037000b200041011037000b200541011037000b200441011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200641011037000b200641011037000b200441011037000b200541011037000b200541011037000b200441011037000b200441011037000b200641011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b1031000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200941011037000b200641011037000b200641011037000b200641011037000b200441011037000b200441011037000b1031000bb31601067f230041106b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e050003010204000b2002410036020820024201370300410110282203450d05200242818080801037020420022003360200200341023a00002002200236020c200141016a2002410c6a10c8010c040b2002410036020820024201370300410110282203450d05200242818080801037020420022003360200200341043a000002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d1a200341017422052004200520044b1b22054100480d1a0240024020030d002005102821040c010b200228020020032005102c21040b2004450d0720022005360204200220043602000b2002200341016a360208200420036a20012d00013a000002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d1a200341017422052004200520044b1b22054100480d1a0240024020030d002005102821040c010b200228020020032005102c21040b2004450d0820022005360204200220043602000b2002200341016a360208200420036a20012d00023a000002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d1a200341017422052004200520044b1b22054100480d1a0240024020030d002005102821040c010b200228020020032005102c21040b2004450d0920022005360204200220043602000b2002200341016a360208200420036a20012d00033a000002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d1a200341017422052004200520044b1b22054100480d1a0240024020030d002005102821040c010b200228020020032005102c21040b2004450d0a20022005360204200220043602000b2002200341016a360208200420036a20012d00043a000020012802082105200141106a2802002201200210b4010240024020022802042204200228020822036b2001490d00200228020021040c010b200320016a22062003490d1a200441017422072006200720064b1b22064100480d1a0240024020040d002006102821040c010b200228020020042006102c21040b2004450d0b20022006360204200220043602000b2002200320016a360208200420036a20052001109a051a0c030b2002410036020820024201370300410110282203450d0a200242818080801037020420022003360200200341053a000002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d19200341017422052004200520044b1b22054100480d190240024020030d002005102821040c010b200228020020032005102c21040b2004450d0c20022005360204200220043602000b2002200341016a360208200420036a20012d00013a000002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d19200341017422052004200520044b1b22054100480d190240024020030d002005102821040c010b200228020020032005102c21040b2004450d0d20022005360204200220043602000b2002200341016a360208200420036a20012d00023a000002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d19200341017422052004200520044b1b22054100480d190240024020030d002005102821040c010b200228020020032005102c21040b2004450d0e20022005360204200220043602000b2002200341016a360208200420036a20012d00033a000002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d19200341017422052004200520044b1b22054100480d190240024020030d002005102821040c010b200228020020032005102c21040b2004450d0f20022005360204200220043602000b2002200341016a360208200420036a20012d00043a000020012802082105200141106a2802002201200210b4010240024020022802042204200228020822036b2001490d00200228020021040c010b200320016a22062003490d19200441017422072006200720064b1b22064100480d190240024020040d002006102821040c010b200228020020042006102c21040b2004450d1020022006360204200220043602000b2002200320016a360208200420036a20052001109a051a0c020b2002410036020820024201370300410110282203450d0f200242818080801037020420022003360200200341063a000002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d18200341017422052004200520044b1b22054100480d180240024020030d002005102821040c010b200228020020032005102c21040b2004450d1120022005360204200220043602000b2002200341016a360208200420036a20012d00013a000002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d18200341017422052004200520044b1b22054100480d180240024020030d002005102821040c010b200228020020032005102c21040b2004450d1220022005360204200220043602000b2002200341016a360208200420036a20012d00023a000002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d18200341017422052004200520044b1b22054100480d180240024020030d002005102821040c010b200228020020032005102c21040b2004450d1320022005360204200220043602000b2002200341016a360208200420036a20012d00033a000002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d18200341017422052004200520044b1b22054100480d180240024020030d002005102821040c010b200228020020032005102c21040b2004450d1420022005360204200220043602000b2002200341016a360208200420036a20012d00043a000020012802082105200141106a2802002201200210b4010240024020022802042204200228020822036b2001490d00200228020021040c010b200320016a22062003490d18200441017422072006200720064b1b22064100480d180240024020040d002006102821040c010b200228020020042006102c21040b2004450d1520022006360204200220043602000b2002200320016a360208200420036a20052001109a051a0c010b2002410036020820024201370300410110282203450d14200242818080801037020420022003360200200341003a0000200141046a28020021052001410c6a2802002201200210b4010240024020022802042204200228020822036b2001490d00200228020021040c010b200320016a22062003490d17200441017422072006200720064b1b22064100480d170240024020040d002006102821040c010b200228020020042006102c21040b2004450d1620022006360204200220043602000b2002200320016a360208200420036a20052001109a051a0b200020022201290200370200200041086a200141086a280200360200200241106a24000f0b410141011037000b410141011037000b200541011037000b200541011037000b200541011037000b200541011037000b200641011037000b410141011037000b200541011037000b200541011037000b200541011037000b200541011037000b200641011037000b410141011037000b200541011037000b200541011037000b200541011037000b200541011037000b200641011037000b410141011037000b200641011037000b1031000b800801047f230041106b22022400024002400240024002400240024020002d0000417f6a220341034b0d00024002400240024020030e0400010203000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102821040c010b200128020020032005102c21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200028020421032000410c6a2802002200200110b4012000450d0320004105742100034020032001108f01200341206a2103200041606a22000d000c040b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102821040c010b200128020020032005102c21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000280204200110eb010c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102821040c010b200128020020032005102c21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041046a200110a0012000280208200110eb010c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102821040c010b200128020020032005102c21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a00002002200136020c200041016a2002410c6a10c801200041246a200110a00102400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102821040c010b200128020020032005102c21040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20002d00213a00000b200241106a24000f0b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b1031000bf71802047f017e20002802582102024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141046a2802002203200141086a28020022046b4104490d00200128020021030c010b200441046a22052004490d13200341017422042005200420054b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2205200441046a360200200320046a20023600002000290300210602400240200141046a2802002203200528020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0220012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290308210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0320012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290310210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0420012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290318210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0520012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290320210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0620012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290328210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0720012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290330210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0820012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290338210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0920012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290340210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0a20012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290348210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0b20012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290350210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0c20012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a2006370000200028025c210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0d20012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a20053600002000280260210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0e20012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a20053600002000280264210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d0f20012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a20053600002000280268210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102821030c010b200128020020032004102c21030b2003450d1020012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a200536000002400240200141046a28020020022802002204460d00200128020021030c010b200441016a22032004490d13200441017422022003200220034b1b22024100480d130240024020040d002002102821030c010b200128020020042002102c21030b2003450d1120012003360200200141046a2002360200200141086a28020021040b200141086a2202200441016a360200200320046a20002d00703a0000200028026c210302400240200141046a2802002204200228020022006b4104490d00200128020021040c010b200041046a22022000490d13200441017422002002200020024b1b22004100480d130240024020040d002000102821040c010b200128020020042000102c21040b2004450d1220012004360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200420006a20033600000f0b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200241011037000b200041011037000b1031000bb90201057f230041106b2203240020034100360208200342013703002001200310b4010240024002402001450d00200141b0016c2104034020004188016a28020021050240024020032802042206200328020822016b4104490d00200328020021060c010b200141046a22072001490d04200641017422012007200120074b1b22014100480d040240024020060d002001102821060c010b200328020020062001102c21060b2006450d032003200136020420032006360200200328020821010b2003200141046a360208200620016a20053600002000200310eb012000418c016a2003108f01200041b0016a2100200441d07e6a22040d000b0b2003280204210020022802002002280204200328020022012003280208100702402000450d002001102a0b200341106a24000f0b200141011037000b1031000bee1405177f017e017f027e047f230041206b220224000240024020014115490d0002402001410176220341ffffff3f712003470d0020034105742204417f4c0d0041012105024002402004450d00200410282205450d010b200041606a2106200041a07f6a210741002108410021094104210a4100210b2001210c034002400240200c220d417f6a220e0d004101210f4100210c0c010b0240024002400240024002402000200e4105746a200d410574221020006a41406a4120109c054100480d004102200d6b210e200720106a21044101210f03400240200e200f6a4101470d004100210c200d210f0c080b200f41016a210f200441206a20044120109c052111200441606a21042011417f4a0d000b200d200f6b210e0c010b200720106a2104024003400240200e4101470d004100210e0c020b200e417f6a210e200441206a20044120109c052111200441606a210420114100480d000b0b200d200e490d01200d20014b0d03200d200e6b220f4101762212450d00200620106a21042000200e4105746a21110340200241186a2210201141186a2213290000370300200241106a2214201141106a2215290000370300200241086a2216201141086a221729000037030020022011290000370300200441086a22182900002119200441106a221a290000211b200441186a220c290000211c201120042900003700002013201c3700002015201b37000020172019370000200c2010290300370000201a20142903003700002018201629030037000020042002290300370000200441606a2104201141206a21112012417f6a22120d000b0b0240200e0d00200e210c0c050b0240200f41094d0d00200e210c0c050b200d20014b0d01200d200e6b21122000200e4105746a21100340200d200e417f6a220c490d040240200d200c6b220f4102490d002000200e4105746a22042000200c4105746a220e4120109c05417f4a0d00200e2900002119200e2004290000370000200241186a2216200e41186a2211290000370300200241106a2217200e41106a2213290000370300200241086a2218200e41086a22142900003703002014200441086a2900003700002013200441106a2900003700002011200441186a29000037000020022019370300410121150240200f4103490d00200e41c0006a20024120109c05417f4a0d00410221112010210402400340200441186a200441386a290000370000200441106a200441306a290000370000200441086a200441286a2900003700002004200441206a221329000037000020122011460d01200441c0006a21142011211520132104201141016a2111201420024120109c05417f4a0d020c000b0b201121150b200e20154105746a22042002290300370000200441186a2016290300370000200441106a2017290300370000200441086a20182903003700000b200c450d05201041606a2110201241016a2112200c210e200f410a4f0d050c000b0b200e200d1044000b200d200e417f6a220c490d010b200d2001103c000b200c200d1044000b024002400240200b2009470d0002400240200941016a22042009490d00200941017422112004201120044b1b220441ffffffff01712004470d002004410374221141004e0d010b1031000b0240024020090d0020111028210a0c010b200a20094103742011102c210a0b200a450d01200421092008210b0b200a200b4103746a2204200f3602042004200c360200200841016a220b2108200b4102490d01024003400240024002400240200a200b417f6a22084103746a2204280200450d00200b410374200a6a220f41746a280200220e200428020422114d0d000240200b41024b0d00200b21084102210b0c080b200a200b417d6a22164103746a28020422042011200e6a4d0d010240200b41034b0d00200b21084103210b0c080b200f41646a2802002004200e6a4d0d01200b21080c070b200b4103490d0120042802042111200a200b417d6a22164103746a28020421040b20042011490d010b200b417e6a21160b024002400240024002400240200b201641016a221d4b221e450d00200b20164b221f450d01200a20164103746a2217280204222020172802006a2204200a201d4103746a2218280200221a490d02200420014b0d032000201a4105746a22142018280204221541057422116a210f2004410574210e2004201a6b220d20156b220420154f0d042005200f20044105742211109a05221320116a21120240024020154101480d00200441014e0d010b200f2104201321110c060b2006200e6a210e200f21040340200e200441606a220f201241606a220d200d200f4120109c0541004822101b2211290000370000200e41186a201141186a290000370000200e41106a201141106a290000370000200e41086a201141086a2900003700002012200d20101b211202402014200f200420101b2204490d00201321110c070b200e41606a210e2013211120132012490d000c060b0b41b8dbc000201d200b1034000b41b8dbc0002016200b1034000b201a20041044000b20042001103c000b200520142011109a05221320116a21120240024020154101480d00200d20154a0d010b20142104201321110c010b2000200e6a2110201321112014210403402004200f2011200f20114120109c05410048220d1b220e290000370000200441186a200e41186a290000370000200441106a200e41106a290000370000200441086a200e41086a2900003700002011201141206a200d1b2111200441206a2104200f41206a200f200d1b220f20104f0d01201220114b0d000b0b20042011201220116b416071109a051a0240201f450d002017201a360200201741046a202020156a360200201e450d022018201841086a200b201d417f736a410374109b051a2008210b200841014d0d040c010b0b41c8dbc0002016200b1034000b41b0b1c0001032000b201141041037000b200c0d000b02402009450d00200a102a0b2003450d032005102a0c030b200441011037000b1036000b20014102490d002001417f6a2111200141057420006a41206a2110410121120340024002400240024020112204417f6a221120014b0d00200120116b220e4102490d03200020044105746a2204200020114105746a220d4120109c05417f4a0d03200d2900002119200d2004290000370000200241186a2214200d41186a220f290000370300200241106a220b200d41106a2213290000370300200241086a2215200d41086a220a290000370300200a200441086a2900003700002013200441106a290000370000200f200441186a2900003700002002201937030041012104200e4103490d02200d41c0006a20024120109c05417f4a0d0241002113201021040340200441406a220e200441606a220f290000370000200e41186a200f41186a290000370000200e41106a200f41106a290000370000200e41086a200f41086a29000037000020122013220e460d02200e417f6a2113200420024120109c05210f200441206a2104200f417f4a0d020c000b0b201120011044000b4102200e6b21040b200d20044105746a22042002290300370000200441186a2014290300370000200441106a200b290300370000200441086a20152903003700000b201041606a21102012417f6a211220110d000b0b200241206a24000ba3950103057f027e027f230041106b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d00000e10000102030405060708090a0b0c0d0e0f000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5c200341017422052004200520044b1b22054100480d5c0240024020030d002005102821040c010b200128020020032005102c21040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200141046a28020021042005280200210302402000410c6a2d000022054102470d000240024020042003460d00200128020021000c010b200341016a22002003490d5d200341017422042000200420004b1b22044100480d5d0240024020030d002004102821000c010b200128020020032004102c21000b2000450d1320012000360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000c100b0240024020042003460d00200128020021040c010b200341016a22042003490d5c200341017422062004200620044b1b22064100480d5c0240024020030d002006102821040c010b200128020020032006102c21040b2004450d1320012004360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200420036a41013a00000240024020054101460d0002400240200141046a28020020062802002203460d00200128020021040c010b200341016a22042003490d5e200341017422052004200520044b1b22054100480d5e0240024020030d002005102821040c010b200128020020032005102c21040b2004450d1620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00000c010b02400240200141046a28020020062802002203460d00200128020021040c010b200341016a22042003490d5d200341017422052004200520044b1b22054100480d5d0240024020030d002005102821040c010b200128020020032005102c21040b2004450d1620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d5d200341017422052004200520044b1b22054100480d5d0240024020030d002005102821040c010b200128020020032005102c21040b2004450d1720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20002d000d3a00000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5c200341017422052004200520044b1b22054100480d5c0240024020030d002005102821040c010b200128020020032005102c21040b2004450d1720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20002d000e3a00000c0f0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5b200341017422052004200520044b1b22054100480d5b0240024020030d002005102821040c010b200128020020032005102c21040b2004450d1720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d5b200341017422052004200520044b1b22054100480d5b0240024020030d002005102821040c010b200128020020032005102c21040b2004450d1820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041086a2001108f012000280204210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d5b200341017422002005200020054b1b22004100480d5b0240024020030d002000102821030c010b200128020020032000102c21030b2003450d1920012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0e0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5a200341017422052004200520044b1b22054100480d5a0240024020030d002005102821040c010b200128020020032005102c21040b2004450d1920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a000020002d0008220341024b0d0d02400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5c200341017422052004200520044b1b22054100480d5c0240024020030d002005102821040c010b200128020020032005102c21040b2004450d1c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041096a2001108f01200041386a29030021072000290330210802400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d5c200341017422002004200020044b1b22004100480d5c0240024020030d002000102821030c010b200128020020032000102c21030b2003450d1d20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012007370008200120083700000c0f0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5b200341017422052004200520044b1b22054100480d5b0240024020030d002005102821040c010b200128020020032005102c21040b2004450d1d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041096a2001108f010c0e0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5a200341017422052004200520044b1b22054100480d5a0240024020030d002005102821040c010b200128020020032005102c21040b2004450d1d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200041096a2001108f01200041296a2001108f01200041d8006a29030021072000290350210802400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d5a200441017422032005200320054b1b22034100480d5a0240024020040d002003102821040c010b200128020020042003102c21040b2004450d1e20012004360200200141046a2003360200200141086a28020021030b200141086a2205200341106a360200200420036a2203200737000820032008370000200041e8006a29030021072000290360210802400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d5a200341017422002004200020044b1b22004100480d5a0240024020030d002000102821030c010b200128020020032000102c21030b2003450d1f20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012007370008200120083700000c0d0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d59200341017422052004200520044b1b22054100480d590240024020030d002005102821040c010b200128020020032005102c21040b2004450d1f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a000020002d0008220341024b0d0c02400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5b200341017422052004200520044b1b22054100480d5b0240024020030d002005102821040c010b200128020020032005102c21040b2004450d2220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041186a29030021072000290310210802400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d5b200341017422002004200020044b1b22004100480d5b0240024020030d002000102821030c010b200128020020032000102c21030b2003450d2320012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012007370008200120083700000c0e0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5a200341017422052004200520044b1b22054100480d5a0240024020030d002005102821040c010b200128020020032005102c21040b2004450d2320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041096a2001108f01200041386a29030021072000290330210802400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d5a200341017422002004200020044b1b22004100480d5a0240024020030d002000102821030c010b200128020020032000102c21030b2003450d2420012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012007370008200120083700000c0d0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d59200341017422052004200520044b1b22054100480d590240024020030d002005102821040c010b200128020020032005102c21040b2004450d2420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200028020c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d59200341017422002005200020054b1b22004100480d590240024020030d002000102821030c010b200128020020032000102c21030b2003450d2520012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0c0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d58200341017422052004200520044b1b22054100480d580240024020030d002005102821040c010b200128020020032005102c21040b2004450d2520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d58200341017422052004200520044b1b22054100480d580240024020030d002005102821040c010b200128020020032005102c21040b2004450d2620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280204210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d58200341017422002005200020054b1b22004100480d580240024020030d002000102821030c010b200128020020032000102c21030b2003450d2720012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0b0b02400240200141046a2206280200200141086a22042802002203460d00200128020021050c010b200341016a22052003490d57200341017422092005200920054b1b22094100480d570240024020030d002009102821050c010b200128020020032009102c21050b2005450d2720012005360200200141046a2009360200200141086a28020021030b2004200341016a360200200520036a41053a000020002d00082203410a4b0d0a0240024002400240024002400240024002400240024020030e0b000102030405060708090a000b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d61200341017422092005200920054b1b22094100480d610240024020030d002009102821050c010b200128020020032009102c21050b2005450d3220012005360200200141046a2009360200200141086a28020021030b2004200341016a360200200520036a41003a0000200028020c21090240024020062802002205200428020022036b4104490d00200128020021050c010b200341046a220a2003490d6120054101742203200a2003200a4b1b22034100480d610240024020050d002003102821050c010b200128020020052003102c21050b2005450d3320012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a2009360000200041186a2903002107200029031021080240024020062802002203200428020022006b4110490d00200128020021030c010b200041106a22052000490d61200341017422002005200020054b1b22004100480d610240024020030d002000102821030c010b200128020020032000102c21030b2003450d3420012003360200200141046a2000360200200141086a28020021000b2004200041106a360200200320006a22012007370008200120083700000c140b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d60200341017422092005200920054b1b22094100480d600240024020030d002009102821050c010b200128020020032009102c21050b2005450d3420012005360200200141046a2009360200200141086a28020021030b2004200341016a360200200520036a41013a0000200028020c21090240024020062802002205200428020022036b4104490d00200128020021050c010b200341046a220a2003490d6020054101742203200a2003200a4b1b22034100480d600240024020050d002003102821050c010b200128020020052003102c21050b2005450d3520012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a2009360000200041286a2903002107200029032021080240024020062802002205200428020022036b4110490d00200128020021040c010b200341106a22042003490d60200541017422032004200320044b1b22034100480d600240024020050d002003102821040c010b200128020020052003102c21040b2004450d3620012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a220320073700082003200837000020002802102103200041186a2802002200200110b4012000450d1320004105742100034020032001108f01200341206a2103200041606a22000d000c140b0b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d5f200041017422052003200520034b1b22054100480d5f0240024020000d002005102821030c010b200128020020002005102c21030b2003450d3620012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41023a00000c120b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5e200341017422092005200920054b1b22094100480d5e0240024020030d002009102821050c010b200128020020032009102c21050b2005450d3620012005360200200141046a2009360200200141086a28020021030b2004200341016a360200200520036a41033a0000200028020c21090240024020062802002205200428020022036b4104490d00200128020021050c010b200341046a220a2003490d5e20054101742203200a2003200a4b1b22034100480d5e0240024020050d002003102821050c010b200128020020052003102c21050b2005450d3720012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a200936000020002d0009220041024b0d1102400240024020000e03000102000b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d60200041017422052003200520034b1b22054100480d600240024020000d002005102821030c010b200128020020002005102c21030b2003450d3a20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41003a00000c130b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d5f200041017422052003200520034b1b22054100480d5f0240024020000d002005102821030c010b200128020020002005102c21030b2003450d3a20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41013a00000c120b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d5e200041017422052003200520034b1b22054100480d5e0240024020000d002005102821030c010b200128020020002005102c21030b2003450d3a20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41023a00000c110b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5d200341017422092005200920054b1b22094100480d5d0240024020030d002009102821050c010b200128020020032009102c21050b2005450d3a20012005360200200141046a2009360200200141086a28020021030b2004200341016a360200200520036a41043a0000200028020c21050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d5d200341017422002006200020064b1b22004100480d5d0240024020030d002000102821030c010b200128020020032000102c21030b2003450d3b20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c100b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5c200341017422092005200920054b1b22094100480d5c0240024020030d002009102821050c010b200128020020032009102c21050b2005450d3b20012005360200200141046a2009360200200141086a28020021030b2004200341016a360200200520036a41053a0000200028020c21050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d5c200341017422002006200020064b1b22004100480d5c0240024020030d002000102821030c010b200128020020032000102c21030b2003450d3c20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c0f0b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5b200341017422092005200920054b1b22094100480d5b0240024020030d002009102821050c010b200128020020032009102c21050b2005450d3c20012005360200200141046a2009360200200141086a28020021030b2004200341016a360200200520036a41063a0000200028020c21050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d5b200341017422002006200020064b1b22004100480d5b0240024020030d002000102821030c010b200128020020032000102c21030b2003450d3d20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c0e0b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5a200341017422092005200920054b1b22094100480d5a0240024020030d002009102821050c010b200128020020032009102c21050b2005450d3d20012005360200200141046a2009360200200141086a28020021030b2004200341016a360200200520036a41073a0000200028020c21090240024020062802002205200428020022036b4104490d00200128020021050c010b200341046a220a2003490d5a20054101742203200a2003200a4b1b22034100480d5a0240024020050d002003102821050c010b200128020020052003102c21050b2005450d3e20012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a200936000002400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5a200341017422062005200620054b1b22064100480d5a0240024020030d002006102821050c010b200128020020032006102c21050b2005450d3f20012005360200200141046a2006360200200141086a28020021030b2004200341016a360200200520036a20002d00093a00000c0d0b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d59200341017422052004200520044b1b22054100480d590240024020030d002005102821040c010b200128020020032005102c21040b2004450d3f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41083a0000200041096a2001108f01200041296a2001108f010c0c0b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d58200341017422052004200520044b1b22054100480d580240024020030d002005102821040c010b200128020020032005102c21040b2004450d3f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a0000200041096a2001108f010c0b0b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d57200341017422062005200620054b1b22064100480d570240024020030d002006102821050c010b200128020020032006102c21050b2005450d3f20012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a410a3a0000200041096a2001108f0120022001360208200041296a200241086a10c801200028024c210502400240200141046a2802002203200628020022006b4104490d00200128020021030c010b200041046a22062000490d57200341017422002006200020064b1b22004100480d570240024020030d002000102821030c010b200128020020032000102c21030b2003450d4020012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c0a0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d56200341017422052004200520044b1b22054100480d560240024020030d002005102821040c010b200128020020032005102c21040b2004450d4020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41063a0000200041046a200110f2010c090b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d55200341017422052004200520044b1b22054100480d550240024020030d002005102821040c010b200128020020032005102c21040b2004450d4020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41073a0000200041046a200110f2010c080b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d54200341017422052004200520044b1b22054100480d540240024020030d002005102821040c010b200128020020032005102c21040b2004450d4020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41083a0000024002400240024020002d00040e0400010203000b02400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d57200341017422052004200520044b1b22054100480d570240024020030d002005102821040c010b200128020020032005102c21040b2004450d4420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041056a2001108f01200041256a2001108f010c0a0b02400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d56200341017422052004200520044b1b22054100480d560240024020030d002005102821040c010b200128020020032005102c21040b2004450d4420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041056a2001108f010c090b02400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d55200341017422052004200520044b1b22054100480d550240024020030d002005102821040c010b200128020020032005102c21040b2004450d4420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000280208210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d55200341017422002005200020054b1b22004100480d550240024020030d002000102821030c010b200128020020032000102c21030b2003450d4520012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c080b02400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d54200341017422052004200520044b1b22054100480d540240024020030d002005102821040c010b200128020020032005102c21040b2004450d4520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a000020002802082103200041106a2802002204200110b40102402004450d0020044105742104034020032001108f01200341206a2103200441606a22040d000b0b200028021421032000411c6a2802002200200110b4012000450d0720004105742100034020032001108f01200341206a2103200041606a22000d000c080b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d53200341017422052004200520044b1b22054100480d530240024020030d002005102821040c010b200128020020032005102c21040b2004450d4520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a000020002d0001220041044b0d060240024002400240024020000e050001020304000b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d57200041017422042003200420034b1b22044100480d570240024020000d002004102821030c010b200128020020002004102c21030b2003450d4a20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41003a00000c0a0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d56200041017422042003200420034b1b22044100480d560240024020000d002004102821030c010b200128020020002004102c21030b2003450d4a20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c090b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d55200041017422042003200420034b1b22044100480d550240024020000d002004102821030c010b200128020020002004102c21030b2003450d4a20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41023a00000c080b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d54200041017422042003200420034b1b22044100480d540240024020000d002004102821030c010b200128020020002004102c21030b2003450d4a20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41033a00000c070b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d53200041017422042003200420034b1b22044100480d530240024020000d002004102821030c010b200128020020002004102c21030b2003450d4a20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41043a00000c060b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d52200341017422052004200520044b1b22054100480d520240024020030d002005102821040c010b200128020020032005102c21040b2004450d4a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a00002000280204220341024b0d0502400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d54200341017422052004200520044b1b22054100480d540240024020030d002005102821040c010b200128020020032005102c21040b2004450d4d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000020002802082103200041106a2802002200200110b4012000450d072003200041286c6a210a200141046a2106034020032001108f01200341206a29030021070240024020062802002204200528020022006b4108490d00200128020021040c010b200041086a22092000490d55200441017422002009200020094b1b22004100480d550240024020040d002000102821040c010b200128020020042000102c21040b2004450d4f2001200436020020062000360200200528020021000b2005200041086a360200200420006a2007370000200a200341286a2203470d000c080b0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d53200041017422042003200420034b1b22044100480d530240024020000d002004102821030c010b200128020020002004102c21030b2003450d4e20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c060b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d52200041017422042003200420034b1b22044100480d520240024020000d002004102821030c010b200128020020002004102c21030b2003450d4e20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41023a00000c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d51200341017422052004200520044b1b22054100480d510240024020030d002005102821040c010b200128020020032005102c21040b2004450d4e20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410b3a000020002d0008220341044b0d040240024002400240024020030e050001020304000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d55200341017422052004200520044b1b22054100480d550240024020030d002005102821040c010b200128020020032005102c21040b2004450d5320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200028020c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d55200341017422002005200020054b1b22004100480d550240024020030d002000102821030c010b200128020020032000102c21030b2003450d5420012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c080b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d74200341017422052004200520044b1b22054100480d740240024020030d002005102821040c010b200128020020032005102c21040b2004450d5520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041186a29030021072000290310210802400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d74200341017422002004200020044b1b22004100480d740240024020030d002000102821030c010b200128020020032000102c21030b2003450d5620012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012007370008200120083700000c070b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d73200341017422052004200520044b1b22054100480d730240024020030d002005102821040c010b200128020020032005102c21040b2004450d5620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200028022c210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d73200441017422032005200320054b1b22034100480d730240024020040d002003102821040c010b200128020020042003102c21040b2004450d5720012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a2006360000200041386a29030021072000290330210802400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d73200441017422032005200320054b1b22034100480d730240024020040d002003102821040c010b200128020020042003102c21040b2004450d5820012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a2203200737000820032008370000200041096a2001108f010c060b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d72200341017422052004200520044b1b22054100480d720240024020030d002005102821040c010b200128020020032005102c21040b2004450d5820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200041186a29030021072000290310210802400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d72200341017422002004200020044b1b22004100480d720240024020030d002000102821030c010b200128020020032000102c21030b2003450d5920012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012007370008200120083700000c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d71200341017422052004200520044b1b22054100480d710240024020030d002005102821040c010b200128020020032005102c21040b2004450d5920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a0000200041186a29030021072000290310210802400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d71200341017422002004200020044b1b22004100480d710240024020030d002000102821030c010b200128020020032000102c21030b2003450d5a20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012007370008200120083700000c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d70200341017422052004200520044b1b22054100480d700240024020030d002005102821040c010b200128020020032005102c21040b2004450d5a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410c3a000020002d0008220341054b0d0302400240024002400240024020030e06000102030405000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d75200341017422052004200520044b1b22054100480d750240024020030d002005102821040c010b200128020020032005102c21040b2004450d6020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041096a2001108f01200041296a2001108f01200041d8006a29030021072000290350210802400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d75200341017422002004200020044b1b22004100480d750240024020030d002000102821030c010b200128020020032000102c21030b2003450d6120012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012007370008200120083700000c080b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d74200341017422052004200520044b1b22054100480d740240024020030d002005102821040c010b200128020020032005102c21040b2004450d6120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041096a2001108f01200041296a2001108f010c070b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d73200341017422052004200520044b1b22054100480d730240024020030d002005102821040c010b200128020020032005102c21040b2004450d6120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002002200136020c200041096a2002410c6a10c8010c060b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d72200341017422052004200520044b1b22054100480d720240024020030d002005102821040c010b200128020020032005102c21040b2004450d6120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200028020c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d72200341017422002005200020054b1b22004100480d720240024020030d002000102821030c010b200128020020032000102c21030b2003450d6220012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d71200341017422052004200520044b1b22054100480d710240024020030d002005102821040c010b200128020020032005102c21040b2004450d6220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a0000200041096a2001108f0102400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d71200341017422052004200520044b1b22054100480d710240024020030d002005102821040c010b200128020020032005102c21040b2004450d6320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20002d00293a00000c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d70200341017422052004200520044b1b22054100480d700240024020030d002005102821040c010b200128020020032005102c21040b2004450d6320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a0000200041096a2001108f01200028022c2106200041346a2802002200200110b40102400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d70200441017422032005200320054b1b22034100480d700240024020040d002003102821040c010b200128020020042003102c21040b2004450d6420012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a20062000109a051a0c030b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d6f200341017422052004200520044b1b22054100480d6f0240024020030d002005102821040c010b200128020020032005102c21040b2004450d6420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410d3a000020002d0001220341024b0d0202400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d71200341017422052004200520044b1b22054100480d710240024020030d002005102821040c010b200128020020032005102c21040b2004450d6720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d71200341017422052004200520044b1b22054100480d710240024020030d002005102821040c010b200128020020032005102c21040b2004450d6820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20002d00023a00000c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d70200341017422052004200520044b1b22054100480d700240024020030d002005102821040c010b200128020020032005102c21040b2004450d6820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041026a2001108f010c030b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d6f200341017422052004200520044b1b22054100480d6f0240024020030d002005102821040c010b200128020020032005102c21040b2004450d6820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d6f200341017422052004200520044b1b22054100480d6f0240024020030d002005102821040c010b200128020020032005102c21040b2004450d6920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20002d00023a00000c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d6e200341017422052004200520044b1b22054100480d6e0240024020030d002005102821040c010b200128020020032005102c21040b2004450d6920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410e3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d6e200341017422052004200520044b1b22054100480d6e0240024020030d002005102821040c010b200128020020032005102c21040b2004450d6a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041016a2001108f010c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d6d200341017422052004200520044b1b22054100480d6d0240024020030d002005102821040c010b200128020020032005102c21040b2004450d6a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410f3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d6d200341017422052004200520044b1b22054100480d6d0240024020030d002005102821040c010b200128020020032005102c21040b2004450d6b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041106a200110c601200028020421062000410c6a2802002200200110b40102400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d6d200441017422032005200320054b1b22034100480d6d0240024020040d002003102821040c010b200128020020042003102c21040b2004450d6c20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a20062000109a051a0b200241106a24000f0b200541011037000b200441011037000b200641011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200041011037000b200541011037000b200541011037000b200041011037000b200541011037000b200541011037000b200341011037000b200041011037000b200541011037000b200541011037000b200041011037000b200541011037000b200041011037000b200541011037000b200041011037000b200541011037000b200541011037000b200041011037000b200941011037000b200941011037000b200341011037000b200041011037000b200941011037000b200341011037000b200341011037000b200541011037000b200941011037000b200341011037000b200541011037000b200541011037000b200541011037000b200941011037000b200041011037000b200941011037000b200041011037000b200941011037000b200041011037000b200941011037000b200341011037000b200641011037000b200541011037000b200541011037000b200641011037000b200041011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200041011037000b200541011037000b200541011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200541011037000b200541011037000b200041011037000b200441011037000b200441011037000b200541011037000b200541011037000b200041011037000b1031000b200541011037000b200041011037000b200541011037000b200341011037000b200341011037000b200541011037000b200041011037000b200541011037000b200041011037000b200541011037000b200541011037000b200041011037000b200541011037000b200541011037000b200541011037000b200041011037000b200541011037000b200541011037000b200541011037000b200341011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200341011037000b1031000bfd1201057f230041106b2202240002400240024002400240024002400240024002400240024002400240024020002d0000220341054b0d0002400240024002400240024020030e06000102030405000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d14200341017422052004200520044b1b22054100480d140240024020030d002005102821040c010b200128020020032005102c21040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041016a2001108f012000280244210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d14200441017422032005200320054b1b22034100480d140240024020040d002003102821040c010b200128020020042003102c21040b2004450d0820012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a20063600002002200136020c200041216a2002410c6a10c8012000280248210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d14200341017422002005200020054b1b22004100480d140240024020030d002000102821030c010b200128020020032000102c21030b2003450d0920012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102821040c010b200128020020032005102c21040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041016a2001108f012002200136020c200041216a2002410c6a10c80102400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102821040c010b200128020020032005102c21040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20002d00413a00002000280244210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d13200441017422032005200320054b1b22034100480d130240024020040d002003102821040c010b200128020020042003102c21040b2004450d0b20012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a20063600002000280248210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d13200341017422002005200020054b1b22004100480d130240024020030d002000102821030c010b200128020020032000102c21030b2003450d0c20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102821040c010b200128020020032005102c21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002002200136020c200041016a2002410c6a10c8010c030b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102821040c010b200128020020032005102c21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a00002002200136020c200041016a2002410c6a10c8010c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102821040c010b200128020020032005102c21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a00002002200136020c200041016a2002410c6a10c80102400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102821040c010b200128020020032005102c21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20002d00213a00000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102821040c010b200128020020032005102c21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a00002002200136020c200041016a2002410c6a10c80102400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102821040c010b200128020020032005102c21040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20002d00213a00000b200241106a24000f0b200541011037000b200341011037000b200041011037000b200541011037000b200541011037000b200341011037000b200041011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b1031000bf40501027f4190ce0021024100210302400240024002400240024002400240024002400240024002400240024020012802000e15000e08080e01020304050607090e0e0a0e0c0e0e0e000b417f2102200141086a280200417f6a220141054b0d0a41012103024020010e060e0b0d000d0d0e0b41c09a0c21020c0d0b200141086a280200417f6a220141024b0d0941c0843d210241002103024020010e030d000d0d0b4101210341d0860321020c0c0b200141086a2d0000417f6a2201410c4b0d0841a0c21e21024100210302400240024020010e0d0e0e000001010e0e01020808080e0b4180b5182102410021030c0d0b41b0e32d2102410021030c0c0b4101210341f0930921020c0b0b41f093092102410021030c0a0b200141086a2d0000417f6a220141104b0d0641c096b102210241002103024002400240024020010e110d0d0101000d0d0d0101070702020203030d0b4101210341a0c21e21020c0c0b41c09a0c2102410021030c0b0b41a08d062102410021030c0a0b41a0c21e2102410021030c090b20012d0004417f6a220141034b0d054101210341a08d0621020240024020010e040a0a00010a0b41c096b10221020c090b41c09a0c21020c080b20012d0004417f6a220141034b0d044101210341a08d0621020240024020010e0409090001090b41c096b10221020c080b41c09a0c21020c070b200141086a280200417f6a220141094b0d0341a0cb98012102410021030240024020010e0a08080800080102020202080b41d0a5cc002102410021030c070b4180ade2042102410021030c060b410121030c040b41d086034190ce0020012d0004411d7441808080807e6a411d75417f4a1b2102410021030c040b200141086a280200417f6a220141024b0d0041a0c21e210241002103024020010e03040000040b4101210341a08d0621020c030b4190ce002102410021030c020b02402001280204417f6a220141024b0d00410121034100210220010e03020002020b410021030b4190ce0021020b200020033a0004200020023602000be6fe0109017f017e067f017e047f017e0a7f037e177f230041d0076b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e15000102031e1c1b1a191817160f0e0d0c0b0a090807000b200141106a29030021042001410c6a280200210520022d0001210620022d000021020240024002400240024002400240200141086a28020022070e0700060102030405000b200341d4066a4101360200200342013702c406200341ccd1c5003602c006200341043602e405200341c4d1c5003602e0052003200341e0056a3602d006200341c0066a4188a6c300103e000b2004a7210702400240200241ff01710d00200641ff01714101460d010b2007450d2d2005102a0c2d0b2007450d2a2005102a0c2a0b200220067241ff01710d2a410810282202450d09200220043700004198a6c300410a2002410810072002102a0c290b2004a721070240200220067241ff0171450d002007450d2a2005102a0c2a0b41a2a6c300410520052004422088a710072007450d282005102a0c280b2004422088a721082004a721090240200220067241ff0171450d0002402008450d00200841186c21062005210203400240200241046a280200450d002002280200102a0b0240200241106a280200450d002002410c6a280200102a0b200241186a2102200641686a22060d000b0b410121064100210a4105210820090d260c270b0240200841186c2202450d00200520026a21062005210203402002280200200241086a2802002002410c6a280200200241146a2802001007200241186a22022006470d000b0b02402008450d00200841186c21062005210203400240200241046a280200450d002002280200102a0b0240200241106a280200450d002002410c6a280200102a0b200241186a2102200641686a22060d000b0b410121064100210a4107210820090d250c260b2004422088a721082004a721090240200220067241ff0171450d0002402008450d002008410c6c21062005210203400240200241046a280200450d002002280200102a0b2002410c6a2102200641746a22060d000b0b410021064101210a410521082009450d260c250b02402008410c6c2202450d00200520026a21062005210203402002280200200241086a28020010092002410c6a22022006470d000b0b02402008450d002008410c6c21062005210203400240200241046a280200450d002002280200102a0b2002410c6a2102200641746a22060d000b0b410021064101210a4107210820090d240c250b200220067241ff01710d260c250b10f501000b024020022d00000d0020022d000141ff01714102470d00200141086a290300210420034180056a41086a22024200370300200342003703800541d8a1c600411320034180056a1008200341b8026a41086a2206200229030037030020032003290380053703b8020240200341b8026a41104101410041001003417f470d0020024200370300200342003703800541feb3c300410d20034180056a10082006200229030037030020032003290380053703b802200341003602c006200341b8026a4110200341c0066a100621020240024020032802c0062206417f460d002002450d0020064108490d012002290000210b2002102a200b500d004200210b20034180056a41086a22024200370300200342003703800541feb3c300410d20034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341003602c006200341b8026a4110200341c0066a10062102024020032802c0062206417f460d002002450d0020064108490d072002290000210b2002102a0b200b42dc0b7c2004560d050b20034180056a41086a22024200370300200342003703800541feb3c300410d20034180056a1008200341b8026a41086a2206200229030037030020032003290380053703b802200320043703c006200341b8026a4110200341c0066a4108100741012105200341013a00c00620024200370300200342003703800541d8a1c600411320034180056a10082006200229030037030020032003290380053703b802200341b8026a4110200341c0066a41011007200041023a0008410121060c2b0b41c4d1c3004133200341c8076a419cd9c3001038000b41c8adc3001032000b20004181043b01082000410f360204200041ea9fc6003602002000410a6a41003a00000c1a0b2001410c6a2802002105200141086a280200210c2001280204210d41ea9fc600210e410f210f20022d00000d1e20022d000141ff01714102470d1e20034180056a41086a22024200370300200342003703800541c8fbc500411720034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341003602c006200341b8026a4110200341c0066a10062102024002400240024020032802c0062206417f460d002002450d002006450d0120022d000021062002102a20064102460d002006410171450d0041a4cdc200210e411c210f0c220b200341013a00c00620034180056a41086a22024200370300200342003703800541c8fbc500411720034180056a1008200341b8026a41086a2206200229030037030020032003290380053703b802200341b8026a4110200341c0066a4101100710980121082002420037030020034200370380054193cdc200411120034180056a10082006200229030037030020032003290380053703b802200341003602c006200341b8026a4110200341c0066a1006210202400240024020032802c0062206417f460d002002450d0020032006360294012003200236029001200341c0066a20034190016a107b20032802c0062207450d0520032902c406210402402006450d002002102a0b200320073602980302402004422088220ba722022004a7470d00200341c0066a21060c020b200341c0066a21060c020b4104210720034104360298034200210441002102200341c0066a21060b024020022004a7470d00200241016a220a2002490d1120024101742209200a2009200a4b1bad220b42c4007e2210422088a70d112010a7220a4100480d110240024020020d00200a102821070c010b2007200241c4006c200a102c21070b2007450d032003200736029803200442808080807083200b8421040b2004422088220ba721020b2007200241c4006c6a22022008360204200241003a000020022006290200370208200241106a200641086a290200370200200241186a200641106a290200370200200241206a200641186a290200370200200241286a200641206a290200370200200241306a200641286a290200370200200241386a200641306a290200370200200241c0006a200641386a280200360200200b422086200442ffffffff0f83844280808080107c2104200d200541f0006c6a2108024020050d00200d21070c200b200341e0056a417f6a210a20034193046a2111200341d7046a21122003419b056a2113200341c0066a41106a2114200341c0066a41086a211520034180056a41186a2116200d2107024003402007280204210220072802002106200341c0066a200741086a41e800109a051a200741f0006a21072002450d2120034190016a200341c0066a41e800109a051a200320023602c406200320063602c006201520034190016a41e800109a051a20032802980321171098012102200341e0056a200341c0066a10f60102400240024020032802c00622060d0041d6cdc200210e4110210f0c010b0240200620024d0d00411a210f41e6cdc200210e0c010b20034198046a2006417f6a10f701024020034198046a20144120109c05450d004119210f4180cec200210e0c010b024020032802c006221841002002417b6a2206200620024b1b4f0d004126210f4199cec200210e0c010b20172004422088220ba7220941c4006c22196a21052017210202400240201941cd01490d00201721020340024020022d00004101470d00200241016a2106200a2002460d032006200341e0056a4120109c05450d030b0240200241c4006a2d00004101470d00200241c5006a210620132002460d032006200341e0056a4120109c05450d030b024020024188016a2d00004101470d0020024189016a210620122002460d032006200341e0056a4120109c05450d030b0240200241cc016a2d00004101470d00200241cd016a210620112002460d032006200341e0056a4120109c05450d030b200520024190026a22026b41cc014b0d000b0b024020022005460d000340024020022d00004101470d00200241016a2106200a2002460d032006200341e0056a4120109c05450d030b2005200241c4006a2202470d000b0b410021060b20034198046a201810f70120034198046a200341e0056a4120109c052102200341b8036a41086a221a20034180056a41086a2205290200370300200341b8036a41106a20034180056a41106a221829020037030020032003290280053703b80341c0cdc200210e4116210f20060d2220020d010c220b200341b8036a41086a20034180056a41086a290200370300200341b8036a41106a20034180056a41106a29020037030020032003290280053703b8030c210b200341b8026a410e6a2206200341b8036a410e6a290100370100200341b8026a41086a220e201a290300370300200320032903b8033703b80220034198046a200341c0066a10f6012016420037030020184200370300200542003703002003420037038005024041c80010282202450d0020034198026a10f8012002410236022020024101360244200241186a20034198026a41186a290300370200200241106a20034198026a41106a290300370200200241086a20034198026a41086a290300370200200220032903980237020020022003290380053700242002412c6a2005290300370000200241346a20182903003700002002413c6a2016290300370000200320023602e00520034282808080203702e405200341e0056a10f901200341f8016a41086a220520034198046a41086a290300370300200341f8016a41106a221820034198046a41106a290300370300200341f8016a41186a220f20034198046a41186a290300370300200341e0056a41086a221a200e290300370300200341e0056a410e6a220e200629010037010020032003290398043703f801200320032903b8023703e0050240024020092004a7460d00200421100c010b200941016a22022009490d13200ba74101742206200220022006491bad221042c4007e220b422088a70d13200ba722064100480d130240024020090d002006102821020c010b201720192006102c21020b2002450d0320032002360298032004422088220ba721090b200328029803200941c4006c6a220241013a0000200f29030021042018290300211b2005290300211c20032903f801211d20024116360028200241c0cdc200360024200241003a00212002413a6a200e290100370000200241346a201a290300370000200220032903e00537002c2002201d370001200241096a201c370000200241116a201b370000200241196a2004370000201042ffffffff0f832104200b422086210b024020032802cc062206450d0020032802c4062102200641246c210603400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a280200102a0c030b2002410c6a280200450d02200241086a280200102a0c020b2002410c6a280200450d01200241086a280200102a0c010b200241086a280200450d00200241046a280200102a0b200241246a21022006415c6a22060d000b0b200b2004842104024020032802c806450d0020032802c406102a0b20044280808080107c210420072008470d010c230b0b41c80041041037000b200641041037000b41c4d1c3004133200341c8076a419cd9c3001038000b200a41041037000b41c4d1c3004133200341c8076a419cd9c3001038000b4190aec3001032000b41c4d1c3004133200341c8076a419cd9c3001038000b410841011037000b10d601000b10fa01000b200141246a280200211a200141206a280200210f2001411c6a280200210a200141186a2802002118200141146a2802002109200141106a28020021132001410c6a280200210e200141086a280200211920022d0001210620022d000021022001280204210820034190016a41386a200141e0006a29000037030020034190016a41306a200141d8006a29000037030020034190016a41286a200141d0006a29000037030020034190016a41206a200141c8006a29000037030020034190016a41186a200141c0006a29000037030020034190016a41106a200141386a29000037030020034190016a41086a200141306a2900003703002003200141286a2900003703900141ea9fc6002105410f21070240024020020d00200641ff01714102470d00024010fb01200f460d0041fb91c1002105411c21070c010b200341c0066a200f201a10fc0120032802c006220220032802c80641014100410010032106024020032802c406450d002002102a0b20034180056a41086a22024200370300200342003703800541c2e1c000410d20034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341003602c006200341b8026a4110200341c0066a1006210202400240024002400240024002400240024002400240024020032802c0062205417f460d002002450d002003200536029c042003200236029804200341c0066a20034198046a107c20032802c006220c450d0220032902c40621042005450d012002102a0c010b420021044101210c0b02402006417f460d0041b392c1002105411521070c030b200c201a4105746a4100201a2004422088a7491b22120d0141c892c1002105411821070c020b41c4d1c3004133200341c8076a419cd9c3001038000b200341003602c806200342013703c00602400240024002400240410410282202450d0020034284808080c0003702c406200320023602c006200220083600002013200341c0066a10b4010240024020032802c406220620032802c80622026b2013490d0020032802c00621060c010b200220136a22052002490d16200641017422072005200720054b1b22054100480d160240024020060d002005102821060c010b20032802c00620062005102c21060b2006450d02200320053602c406200320063602c0060b2003200220136a3602c806200620026a20192013109a051a200a200341c0066a10b4012009200a410c6c6a2116200a450d0220092106034020062802002117200641086a2802002202200341c0066a10b4010240024020032802c406220720032802c80622056b2002490d0020032802c00621080c010b200520026a22082005490d172007410174220d2008200d20084b1b220d4100480d170240024020070d00200d102821080c010b20032802c0062007200d102c21080b2008450d052003200d3602c406200320083602c006200d21070b2003200520026a220d3602c806200820056a20172002109a051a2006410c6a22062016470d000c050b0b410441011037000b200541011037000b20032802c406210720032802c806210d0c010b200d41011037000b024002402007200d6b4104490d0020032802c00621020c010b200d41046a2202200d490d11200741017422062002200620024b1b22064100480d110240024020070d002006102821020c010b20032802c00620072006102c21020b2002450d03200320063602c406200320023602c006200621070b2003200d41046a22063602c8062002200d6a200f36000002400240200720066b41034d0d00200721050c010b200641046a22052006490d11200741017422082005200820054b1b22054100480d110240024020070d002005102821020c010b200220072005102c21020b2002450d04200320053602c406200320023602c0060b200220066a201a3600002002200d41086a20034190016a2012100a210602402005450d002002102a0b2006450d01419792c1002105411c21070b2004a7450d07200c102a0c070b201241086a290000210b201241106a29000021102012290000211b20034198026a41186a201241186a290000221c37030020034198026a41106a201037030020034198026a41086a200b3703002003201b37039802200341c9066a200b370000200341d1066a2010370000200341d9066a201c3700002003410e3a00c0062003201b3700c10641014100200341c0066a10cc01200341003602c806200342013703c0062013200341c0066a10b4010240024020032802c406220620032802c80622026b2013490d0020032802c00621060c010b200220136a22052002490d0f200641017422072005200720054b1b22054100480d0f0240024020060d002005102821060c010b20032802c00620062005102c21060b2006450d03200320053602c406200320063602c0060b2003200220136a3602c806200620026a20192013109a051a200a200341c0066a10b401200a450d0320092106034020062802002117200641086a2802002202200341c0066a10b4010240024020032802c406220820032802c80622056b2002490d0020032802c00621070c010b200520026a22072005490d102008410174220d2007200d20074b1b220d4100480d100240024020080d00200d102821070c010b20032802c0062008200d102c21070b2007450d062003200d3602c406200320073602c006200d21080b2003200520026a220d3602c806200720056a20172002109a051a2006410c6a22062016470d000c060b0b200641011037000b200541011037000b200541011037000b20032802c806210d20032802c406210820032802c00621070c010b200d41011037000b200341c0066a200f201a10fc0120032802c0062102200320032802c80636029c0420032002360298042007200d20034198046a10cb01024020032802c406450d002002102a0b02402008450d002007102a0b02402004a7450d00200c102a0b0240200e450d002019102a0b0240200a450d00200a410c6c21062009210203400240200241046a280200450d002002280200102a0b2002410c6a2102200641746a22060d000b0b02402018450d002009102a0b200041023a0008410021160c010b0240200e450d002019102a0b0240200a450d00200a410c6c21062009210203400240200241046a280200450d002002280200102a0b2002410c6a2102200641746a22060d000b0b02402018450d002009102a0b20004181243b01082000200736020420002005360200410021162000410a6a41003a00000b410121054101210641012107410121084101210a41012109410121174101210d410121184101210e4101210f410121190c2b0b2002411a6a2901002104200241196a2d00002119200241186a2d00002116200241166a2f0100211a200241156a2d00002113200241146a2d0000210c200241126a2f01002112200241116a2d00002111200241106a2d000021092002410e6a2f010021172002410d6a2d0000210d2002410c6a2d000021182002410a6a2f0100210e200241096a2d0000210f200241086a2d00002106200241066a2f01002105200241056a2d00002107200241046a2d00002115200241026a2f01002114200141216a290000210b200141206a2d0000211e2001411d6a2f0000211f2001411c6a2d00002120200141196a2f00002121200141186a2d00002122200141156a2f00002123200141146a2d00002124200141116a2f00002125200141106a2d000021262001410c6a2802002127200141086a280200210a20022d0001210820022d0000210220012d001f212820012d001b212920012d0017212a20012d0013212b024002400240024002400240024002400240024020012802040e0400010203000b200341c0066a41146a4101360200200342013702c406200341ccd1c5003602c006200341043602e405200341c4d1c5003602e0052003200341e0056a3602d006200341c0066a41b49dc400103e000b410420054108742006411874722007724104200841ff017141014622061b200241ff017122021b21050240024020020d0020060d010b410f210641ea9fc600210202400240024002400240024020050e070001020304050a000b200e410874200f7220184118747221022017410874200d7220094118747221060c090b410e210641dc9fc60021020c080b410c210641d09fc60021020c070b4109210641c79fc60021020c060b4113210641b49fc60021020c050b4111210641a39fc60021020c040b200320043703b004200320193a00af04200320163a00ae042003201a3b01ac04200320133a00ab042003200c3a00aa04200320123b01a804200320113a00a704200320093a00a604200320173b01a4042003200d3a00a304200320183a00a2042003200e3b01a0042003200f3a009f042003200536009b04200320153a009a04200320143b01980420034180056a41086a22024200370300200342003703800541e69dc400410820034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341c0066a200341b8026a411010fd010240024020032d00c0064101460d00200341a8016a420037030020034190016a41106a420037030020034190016a41086a420037030020034200370390010c010b200320032f00c1063b019001200320032d00c3063a009201200320032802c406360093012003200341c0066a41086a2d00003a0097012003200341d9066a2900003703a8012003200341c9066a290000370398012003200341d1066a2900003703a0010b024020034198046a20034190016a4120109c05450d0041c49dc4002102412221060c040b200341c0066a200a418801109a051a200341003b019001200341e0056a200341c0066a20034190016a10f40141012102024020032d00e80522064102460d00200341e9056a310000210b20033100ea05210420032802e405210720032802e005210541f19ec600410d100b02402006450d00200b100c0b2004100c410021022005450d0020052007100b0b200320023a00c2062003410d3b01c00641014100200341c0066a10cc01200a102a0c060b410420054108742006411874722007724104200841ff017141014622061b200241ff017122021b21050240024020020d0020060d010b410f210641ea9fc600210202400240024002400240024020050e070001020304050a000b200e410874200f7220184118747221022017410874200d7220094118747221060c090b410e210641dc9fc60021020c080b410c210641d09fc60021020c070b4109210641c79fc60021020c060b4113210641b49fc60021020c050b4111210641a39fc60021020c040b200320043703b004200320193a00af04200320163a00ae042003201a3b01ac04200320133a00ab042003200c3a00aa04200320123b01a804200320113a00a704200320093a00a604200320173b01a4042003200d3a00a304200320183a00a2042003200e3b01a0042003200f3a009f042003200536009b04200320153a009a04200320143b01980420034180056a41086a22024200370300200342003703800541e69dc400410820034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341c0066a200341b8026a411010fd010240024020032d00c0064101460d00200341a8016a420037030020034190016a41106a420037030020034190016a41086a420037030020034200370390010c010b200320032f00c1063b019001200320032d00c3063a009201200320032802c406360093012003200341c0066a41086a2d00003a0097012003200341d9066a2900003703a8012003200341c9066a290000370398012003200341d1066a2900003703a0010b024020034198046a20034190016a4120109c05450d0041ee9dc4002102413121060c050b0240200a41ff01714101460d00200a4118762105200a41087621070c020b200341c0066a202741067610fe0120032802c00621060240024020032802c8062027413f7122024b0d00410021020c010b200620024105746a2202290018210b20022d0017211e20022d0016212820022f0014211f20022d0013212020022d0012212920022f0010212120022d000f212220022d000e212a20022f000c212320022d000b212420022d000a212b20022f0008212520022d000721262002280003212720022d0002210520022f00002107410121020b024020032802c406450d002006102a0b20020d0141dc9fc6002102410e21060c040b2001412c6a280200212c410420054108742007722006411874724104200841ff017141014622061b200241ff017122021b210502400240024020020d0020060d010b410f210641ea9fc600210202400240024002400240024020050e0700010203040507000b200e410874200f7220184118747221022017410874200d7220094118747221060c060b410e210641dc9fc60021020c050b410c210641d09fc60021020c040b4109210641c79fc60021020c030b4113210641b49fc60021020c020b4111210641a39fc60021020c010b200320043703b004200320193a00af04200320163a00ae042003201a3b01ac04200320133a00ab042003200c3a00aa04200320123b01a804200320113a00a704200320093a00a604200320173b01a4042003200d3a00a304200320183a00a2042003200e3b01a0042003200f3a009f042003200536009b04200320153a009a04200320143b01980420034180056a41086a22024200370300200342003703800541e69dc400410820034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341c0066a200341b8026a411010fd010240024020032d00c0064101460d00200341a8016a420037030020034190016a41106a420037030020034190016a41086a420037030020034200370390010c010b200320032f00c1063b019001200320032d00c3063a009201200320032802c406360093012003200341c0066a41086a2d00003a0097012003200341d9066a2900003703a8012003200341c9066a290000370398012003200341d1066a2900003703a0010b024020034198046a20034190016a4120109c05450d0041c49dc4002102412221060c010b4101210602400240200a41ff01714101460d00200a4118762105200a41087621020c010b200341c0066a202741067610fe0120032802c00621070240024020032802c8062027413f7122024b0d00410021080c010b200720024105746a2202290018210b20022d0017211e20022d0016212820022f0014211f20022d0013212020022d0012212920022f0010212120022d000f212220022d000e212a20022f000c212320022d000b212420022d000a212b20022f0008212520022d000721262002280003212720022d0002210520022f00002102410121080b024020032802c406450d002007102a0b20080d0041dc9fc6002102410e21060c010b200341c0066a202c418801109a051a200341aa016a200b370100200341a9016a201e3a0000200341a8016a20283a0000200341a6016a201f3b0100200341a5016a20203a0000200341a4016a20293a0000200341a2016a20213b0100200341a1016a20223a0000200341a0016a202a3a00002003419e016a20233b010020034190016a410d6a20243a00002003419c016a202b3a00002003419a016a20253b010020034190016a41096a20263a00002003202736009501200320053a009401200320023b01920120034180023b019001200341e0056a200341c0066a20034190016a10f401024020032d00e80522024102460d00200341e0056a41096a310000210b20033100ea05210420032802e405210720032802e005210541f19ec600410d100b02402002450d00200b100c0b2004100c410021062005450d0020052007100b0b200320063a00c2062003418d043b01c00641014100200341c0066a10cc01202c102a0c050b202c106a202c102a0c020b20034180056a41086a22064200370300200342003703800541e69dc400410820034180056a1008200341b8026a41086a2208200629030037030020032003290380053703b802200341c0066a200341b8026a411010fd01200341c0066a41086a2d0000210a200341c9066a22092f00002117200341cb066a2d0000210d200341cc066a22182d0000210e200341cd066a220f2f00002119200341cf066a2d00002116200341c0066a41106a221a2d00002113200341d1066a220c2f00002112200341d3066a2d00002111200341d4066a22152d00002114200341d5066a222c2f0000212d200341d7066a2d0000212e200341d8066a222f2d0000213020032f00c106213120032d00c306213220032802c4062133200341da066a200341d9066a2234290000420020032d00c00641014622021b37010020342030410020021b3a0000202f202e410020021b3a0000200341d6066a202d410020021b3b0100202c2014410020021b3a000020152011410020021b3a0000200341d2066a2012410020021b3b0100200c2013410020021b3a0000201a2016410020021b3a0000200341ce066a2019410020021b3b0100200f200e410020021b3a00002018200d410020021b3a0000200341ca066a2017410020021b3b01002009200a410020021b3a000020032033410020021b3600c50620032032410020021b3a00c40620032031410020021b3b01c2062003418d023b01c00641014100200341c0066a10cc012003200b3703d8062003201e3a00d706200320283a00d6062003201f3b01d406200320203a00d306200320293a00d206200320213b01d006200320223a00cf062003202a3a00ce06200320233b01cc06200320243a00cb062003202b3a00ca06200320253b01c806200320263a00c706200320273600c306200320053a00c206200320073b01c00620064200370300200342003703800541e69dc400410820034180056a10082008200629030037030020032003290380053703b80220034110360294012003200341b8026a36029001200341c0066a20034190016a10ff010c030b200a106a200a102a0b2002450d010b20004181223b01082000200636020420002002360200410021192000410a6a41003a00000c010b200041023a0008410021190b410121054101210641012107410121084101210a41012109410121174101210d410121184101210e4101210f0c290b200341c0066a200141086a418001109a051a20034190016a41206a200241206a29020037030020034190016a41186a200241186a29020037030020034190016a41106a200241106a29020037030020034190016a41086a200241086a290200370300200320022902003703900120034188016a200341c0066a20034190016a1080020240024020032802880122020d00200041023a00084100210f0c010b200328028c01210620004181203b0108200020023602004100210f2000410a6a41003a0000200020063602040b410121054101210641012107410121084101210a41012109410121174101210d410121184101210e410121190c280b200341b8036a41086a22092001411c6a290200370300200341b8036a41106a2217200141246a290200370300200341b8036a41186a220d2001412c6a2802003602002003200141146a2902003703b803200241086a28020021062001410c6a280200210a410e2105200241046a280200210820022d000021070240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141086a2802000e0400010203000b200341c0066a41146a4101360200200342013702c406200341ccd1c5003602c006200341043602e405200341c4d1c5003602e0052003200341e0056a3602d006200341c0066a41e4c4c200103e000b200641107621182006410876210e200141386a290300210b200141306a29030021042002411a6a2901002110200241196a2d00002113200241186a2d0000210c200241166a2f01002112200241156a2d00002111200241146a2d00002115200241126a2f01002114200241116a2d00002127200241106a2d0000210f2002410e6a2f010021192002410d6a2d000021162002410c6a2d0000211a200241026a2f0100211e200141106a280200210520022d0001210220034198046a41186a200d28020036020020034198046a41106a201729030037030020034198046a41086a2009290300370300200320032903b80337039804410420084108762006411874724104200241014622091b200741ff017122021b21060240024020020d0020090d010b410f210541ea9fc600210202400240024002400240024020060e0700010203040516000b200e41ff0171201841087472201a4118747221022019410874201672200f4118747221050c150b410e210541dc9fc60021020c140b410c210541d09fc60021020c130b4109210541c79fc60021020c120b4113210541b49fc60021020c110b4111210541a39fc60021020c100b200320103703a801200320133a00a7012003200c3a00a601200320123b01a401200320113a00a301200320153a00a201200320143b01a001200320273a009f012003200f3a009e01200320193b019c01200320163a009b012003201a3a009a01200320183b0198012003200e3a0097012003200636009301200320083a0092012003201e3b019001200341c0066a41186a220220034198046a41186a280200360200200341c0066a41106a220720034198046a41106a290300370300200341c0066a41086a220820034198046a41086a29030037030020032003290398043703c0060240200a41ff01714101460d00200a4108762106200341e0056a41186a20022d00003a0000200341e0056a41106a2007290300370300200341e0056a41086a2008290300370300200320032903c0063703e0050c0f0b20034198026a200541067610fe0120032802980221070240024020032802a0022005413f7122024b0d00410021020c010b200341e8056a200720024105746a2202410f6a290000370300200341e0056a41106a200241176a290000370300200341f8056a2002411f6a2d00003a0000200320022900073703e00520022f0000200241026a2d000041107472210620022800032105410121020b0240200328029c02450d002007102a0b20020d0e200341b8026a41086a20034180056a41086a290000370300200341b8026a41106a20034180056a41106a29000037030041dc9fc6002102410e21050c0f0b41a6f5c5002102200741ff01714101470d0f20064102490d0f200841ff01710d0f411210282202450d01200241106a41002f008086423b0000200241086a41002900f88542370000200241002900f08542370000200241124124102c2202450d022002200a36001220034198026a41186a2206420037030020034198026a41106a2205420037030020034198026a41086a2207420037030020034200370398022002411620034198026a1000200341f8016a41186a2006290300370300200341f8016a41106a2005290300370300200341f8016a41086a200729030037030020032003290398023703f8012002102a200341003602c006200341f8016a4120200341c0066a1006210220032802c0062206417f460d092002450d09200320063602bc02200320023602b802200341c0066a200341b8026a10810220032903c0064201510d0320032802c806210520034198046a200341cc066a41dc00109a051a02402006450d002002102a0b200341c0066a20034198046a41dc00109a051a200341f8016a41201009410121020c0a0b41a6f5c5002102200741ff01714101470d0e20064104490d0e200841ff01710d0e411210282202450d03200241106a41002f008086423b0000200241086a41002900f88542370000200241002900f08542370000200241124124102c2202450d042002200a36001220034198026a41186a2206420037030020034198026a41106a2205420037030020034198026a41086a2207420037030020034200370398022002411620034198026a1000200341f8016a41186a2006290300370300200341f8016a41106a2005290300370300200341f8016a41086a200729030037030020032003290398023703f8012002102a200341f8016a41204101410041001003417f460d0a20034180056a41086a2202420037030020034200370380054181a2c600411220034180056a1008200341b8026a41086a200229030037030020032003290380053703b80241002102200341003602c006200341b8026a4110200341c0066a100621060240024020032802c0062205417f470d000c010b024020060d000c010b20032005360294012003200636029001200341c0066a20034190016a10820120032802c0062202450d0620032902c40621042005450d002006102a0b2002410420021b210d02402004420020021b2204422088220ba722022004a7470d00200241016a22062002490d19200ba722074101742205200620062005491b220641ffffffff03712006470d19200641027422054100480d190240024020020d0020051028210d0c010b200d20074102742005102c210d0b200d450d072004422088220ba721022006ad21040b200d20024102746a200a36020020034180056a41086a2202420037030020034200370380054181a2c600411220034180056a1008200341b8026a41086a200229030037030020032003290380053703b8020240200d0d00200341b8026a411010090c100b200341003602c806200342013703c006200ba741016a2206200341c0066a10b4010240024020060d0020032802c806210a20032802c406210820032802c00621060c010b410020032802c80622026b2105200d20064102746a211720032802c4062108200d210703402007280200210902400240200820056a4104490d0020032802c00621060c010b200241046a22062002490d1b2008410174220a2006200a20064b1b220a4100480d1b0240024020080d00200a102821060c010b20032802c0062008200a102c21060b2006450d0a2003200a3602c406200320063602c006200a21080b2003200241046a220a3602c806200620026a20093600002005417c6a2105200a21022017200741046a2207470d000b0b2004a72102200341b8026a41102006200a100702402008450d002006102a0b2002450d0f200d102a0c0f0b411241011037000b412441011037000b41c4d1c3004133200341c8076a419cd9c3001038000b411241011037000b412441011037000b41c4d1c3004133200341c8076a419cd9c3001038000b200541041037000b200a41011037000b410021020b200341e0056a200341c0066a41dc00109a051a200341c0066a200341e0056a41dc00109a051a20020d010b418ec5c2002102411921050c030b20034180056a200341c0066a41dc00109a051a200320053602900120034190016a41047220034180056a41dc00109a051a200341f8006a200341b0016a20032903a001200341a8016a29030010820220032903782104200320034180016a2903003703c806200320043703c0062003200341c0066a3602980420034198046a109d010c030b200341e0006a2004200b42c0843d420010a005200341d0006a20032903602210200341e0006a41086a290300221b42c0fb42427f109f05200341c0006a2010201b42d086034200109f0520034198036a41086a200341e0056a41086a29030037030020034198036a41106a200341e0056a41106a29030037030020034198036a41186a200341e0056a41186a2d00003a0000200320032903e00522103703b8022003201037039803200341f0006a20034190016a2003290340221b200420032903507c42148042ffffffff0f837c2210428080e983b1de162010428080e983b1de1656200341c0006a41086a2903002010201b54ad7c22104200522010501b22021b221b2010420020021b221010830202402003280270450d0041f4c4c2002102411a21050c010b20034180056a41086a22024200370300200342003703800541eba1c600411620034180056a1008200341b8026a41086a200229030037030020032003290380053703b80241002107200341003602c006200341b8026a4110200341c0066a10062102024020032802c0062208417f460d002002450d0020084104490d04200228000021072002102a0b20034180056a41086a22024200370300200342003703800541eba1c600411620034180056a1008200341b8026a41086a200229030037030020032003290380053703b8022003200741016a3602c006200341b8026a4110200341c0066a41041007200341f8066a20034190016a41186a290300370300200341f0066a20034190016a41106a290300370300200341e8066a20034190016a41086a29030037030020034183076a200536000020034187076a2003290398033700002003418f076a20034198036a41086a29030037000020034197076a20034198036a41106a2903003700002003419f076a20034198036a41186a2d00003a0000200320063b01800720034182076a20064110763a00002003200b3703c806200320043703c00620032003290390013703e006200341c0066a41186a20103703002003201b3703d006411210282202450d04200241106a41002f008086423b0000200241086a41002900f88542370000200241002900f08542370000200241124124102c2202450d052002200736001220034198026a41186a2206420037030020034198026a41106a2205420037030020034198026a41086a2208420037030020034200370398022002411620034198026a1000200341f8016a41186a2006290300370300200341f8016a41106a2005290300370300200341f8016a41086a200829030037030020032003290398023703f8012002102a200341003602e805200342013703e005200341e0066a200341e0056a108f01200341c0066a41086a290300210420032903c006210b0240024020032802e405220620032802e80522026b4110490d0020032802e00521060c010b200241106a22052002490d0c200641017422022005200220054b1b22024100480d0c0240024020060d002002102821060c010b20032802e00520062002102c21060b2006450d07200320023602e405200320063602e00520032802e80521020b200620026a220620043700082006200b3700002003200241106a3602e80520034180076a200341e0056a108f01200341d8066a290300210420032903d006210b0240024020032802e405220520032802e80522066b4110490d0020032802e00521020c010b200641106a22022006490d0c200541017422062002200620024b1b22084100480d0c0240024020050d002008102821020c010b20032802e00520052008102c21020b2002450d08200320083602e405200320023602e00520032802e8052106200821050b200220066a220820043700082008200b370000200341f8016a41202002200641106a100702402005450d002002102a0b200341cc066a200736020041002102200341c8066a41003a00002003410b3a00c00641014100200341c0066a10cc010b2002450d010b200041811e3b010820002005360204200020023602002000410a6a41003a00000c160b200041023a00080c150b41c4d1c3004133200341c8076a419cd9c3001038000b411241011037000b412441011037000b200241011037000b200841011037000b200141086a28020021062001280204210502400240024020022d00000d0020022d000141ff01714101460d010b02402006450d002005102a0b200041811c3b010820004113360204200041b49fc6003602004100210e2000410a6a41003a00000c010b02402006450d002005102a0b200041023a00084100210e0b410121054101210641012107410121084101210a41012109410121174101210d410121180c250b02400240024020022d00000d0020022d000141ff01714102470d002001280204210220034180056a41086a220642003703002003420037038005418194c100411020034180056a1008200341b8026a41086a200629030037030020032003290380053703b802200341b8026a41104101410041001003417f470d011098012002490d0220034180056a41086a220642003703002003420037038005418194c100411020034180056a1008200341b8026a41086a200629030037030020032003290380053703b802200320023602c006200341b8026a4110200341c0066a41041007200041023a00080c110b200041811a3b01082000410f360204200041ea9fc6003602002000410a6a41003a00000c100b41a894c1001032000b41bc95c1001032000b200341b8036a41026a2205200141076a2d00003a000020034190016a41086a22072001411c6a29020037030020034190016a41106a220a200141246a29020037030020034190016a41186a2001412c6a290200370300200341b0016a200141346a290200370300200341b8016a2001413c6a290200370300200341c0016a200141c4006a2d00003a0000200320012f00053b01b8032003200141146a29020037039001200141086a28020021082001410c6a2802002109200141106a280200210620022f0001200241036a2d000041107472210d2002410c6a2802002118200241086a280200210e200241046a280200210f20022d0000210202400240024002400240024002400240024002400240024020012d000422170e050001020304000b200341c0066a41146a4101360200200342013702c406200341ccd1c5003602c006200341043602e405200341c4d1c5003602e0052003200341e0056a3602d006200341c0066a41e8cfc300103e000b200341af046a2007290300370000200341b7046a200a2d00003a0000200320032f01b8033b019804200320063600a3042003200936009f042003200836009b0420032003290390013700a704200320052d00003a009a04024002402002417f6a220641024b0d00024020060e03000102000b200e41017420184d0d00200f41ff0171450d010b2002200d7241ff0171450d0041a3d0c3002105410a2118410021060c0e0b20034180056a41086a22024200370300200342003703800541f8cfc300411b20034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341003602c006200341b8026a4110200341c0066a1006210202400240024002400240024002400240024020032802c0062206417f460d002002450d00200320063602e405200320023602e005200341c0066a200341e0056a106d20032802c006220a450d0c20032902c406210420032802c406211802402006450d002002102a0b2003200a3602e0052004a7210e410021022004422088a7220d41014b0d02200d0e020103010b4101210a200341013602e005410021184100210e0b200341f8016a41186a20034198046a41186a290300370300200341f8016a41106a20034198046a41106a290300370300200341f8016a41086a20034198046a41086a29030037030020032003290398043703f8014100210d200341f8016a2106410021050c020b200d210603402006410176220520026a22072002200a20074105746a20034198046a4120109c054101481b2102200620056b220641014b0d000b0b0240200a20024105746a20034198046a4120109c0522060d004193d0c3002105200e450d05200a102a0c050b200341f8016a41186a20034198046a41186a290300370300200341f8016a41106a20034198046a41106a290300370300200341f8016a41086a20034198046a41086a29030037030020032003290398043703f8012006411f7620026a2205200d4b0d01200341f8016a21060b200d200e460d012018210e0c020b41f8b0c0001032000b02402018200d460d002018210e0c010b201841016a22022018490d0c201841017422072002200720024b1b220e41ffffff3f71200e470d0c200e41057422024100480d0c0240024020180d0020021028210a0c010b200a20184105742002102c210a0b200a450d062003200a3602e0050b200a20054105746a220241206a2002200d20056b410574109b051a200241186a200641186a290000370000200241106a200641106a290000370000200241086a200641086a2900003700002002200629000037000020034180056a41086a22024200370300200342003703800541f8cfc300411b20034180056a1008200341b8026a41086a200229030037030020032003290380053703b80220032802e0052102200341003602c806200342013703c006200d41016a2207200341c0066a10b40102402007200d490d00200d41057441206a210603402002200341c0066a108f01200241206a2102200641606a22060d000b0b20032802c4062102200341b8026a411020032802c006220620032802c806100702402002450d002006102a0b200341c0066a41186a20034198046a41186a290300370300200341c0066a41106a20034198046a41106a290300370300200341c0066a41086a20034198046a41086a29030037030020032003290398043703c006410021054101410020032802e00522022007108402200341093b01c00641014100200341c0066a10cc01200e450d002002102a0b41102118410021060c0d0b200341af046a2007290300370000200341b7046a200a2d00003a0000200320032f01b8033b019804200320063600a3042003200936009f042003200836009b0420032003290390013700a704200320052d00003a009a04024002402002417f6a220641024b0d00024020060e03000102000b200e41017420184d0d00200f41ff0171450d010b2002200d7241ff0171450d0041a3d0c3002105410a2118410021060c0d0b20034180056a41086a22024200370300200342003703800541f8cfc300411b20034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341003602c006200341b8026a4110200341c0066a100621020240024020032802c0062206417f460d002002450d00200320063602e405200320023602e005200341c0066a200341e0056a106d20032802c006220a450d0620032902c40621042006450d012002102a0c010b420021044101210a0b41002102024002400240024002402004422088a7220d41014b0d00200d0e020201020b200d210603402006410176220520026a22072002200a20074105746a20034198046a4120109c054101481b2102200620056b220641014b0d000b0b200a20024105746a20034198046a4120109c05450d010b41add0c3002105410c21182004a7450d01200a102a410021060c0e0b2002200d4f0d06200a20024105746a2206200641206a2002417f73200d6a410574109b051a20034180056a41086a22024200370300200342003703800541f8cfc300411b20034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341003602c806200342013703c006200d417f6a2205200341c0066a10b40102402005450d00200d41057441606a2106200a210203402002200341c0066a108f01200241206a2102200641606a22060d000b0b20032802c4062102200341b8026a411020032802c006220620032802c806100702402002450d002006102a0b200341c0066a41186a20034198046a41186a290300370300200341c0066a41106a20034198046a41106a290300370300200341c0066a41086a20034198046a41086a29030037030020032003290398043703c006200341c0066a4101200a200510840220034189023b01c0064100210541014100200341c0066a10cc0102402004a7450d00200a102a0b0b410021060c0c0b200341f7056a2007290300370000200341ff056a200a2d00003a0000200320032f01b8033b01e005200320063600eb05200320093600e705200320083600e30520032003290390013700ef05200320052d00003a00e20520034198046a41186a200341b9016a29000037030020034198046a41106a200341b1016a29000037030020034198046a41086a200341a9016a290000370300200320032900a10137039804024002402002417f6a220641024b0d00024020060e03000102000b200e41017420184d0d00200f41ff0171450d010b2002200d7241ff0171450d0041a3d0c3002105410a2118410021060c0c0b02400240200341e0056a20034198046a4120109c050d00410021050c010b20034180056a41086a22024200370300200342003703800541f8cfc300411b20034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341003602c006200341b8026a4110200341c0066a100621020240024020032802c0062206417f460d002002450d0020032006360284052003200236028005200341c0066a20034180056a106d20032802c006220d450d0820032902c40621042006450d012002102a0c010b4101210d420021040b41add0c3002105410c211841002102024002402004422088a7220e41014b0d00200e0e020c010c0b200e210603402006410176220720026a220a2002200d200a4105746a200341e0056a4120109c054101481b2102200620076b220641014b0d000b0b200d20024105746a2206200341e0056a4120109c050d0a20034198026a41186a220520034198046a41186a29030037030020034198026a41106a220720034198046a41106a29030037030020034198026a41086a220a20034198046a41086a2903003703002003200329039804370398022002200e4f0d072006200329039802370000200641186a2005290300370000200641106a2007290300370000200641086a200a290300370000410021020240200e4101460d0041002102200e210603402006410176220520026a22072002200d20074105746a20034198046a4120109c054101481b2102200620056b220641014b0d000b0b0240200d20024105746a20034198046a4120109c050d004193d0c3002105411021180c0b0b200d200e10f00120034180056a41086a22024200370300200342003703800541f8cfc300411b20034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341003602c806200342013703c006200e200341c0066a10b4010240200e450d00200e4105742106200d210203402002200341c0066a108f01200241206a2102200641606a22060d000b0b20032802c4062102200341b8026a411020032802c006220620032802c806100702402002450d002006102a0b200341c0066a41186a200341e0056a41186a290300370300200341c0066a41106a200341e0056a41106a290300370300200341c0066a41086a200341e0056a41086a290300370300200320032903e0053703c006200341c0066a4101200d200e10840220034189043b01c0064100210541014100200341c0066a10cc012004a7450d00200d102a0b0c0a0b024002402002417f6a220541024b0d00024020050e03000102000b200e41017420184d0d00200f41ff0171450d010b2002200d7241ff0171450d0002402009450d002008102a0b41a3d0c3002105410a21180c0c0b2008200610f00120034180056a41086a22024200370300200342003703800541f8cfc300411b20034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341003602c006200341b8026a4110200341c0066a100621050240024020032802c0062207417f460d002005450d002003200736029c042003200536029804200341c0066a20034198046a106d20032802c0062202450d0820032902c40621042007450d012005102a0c010b42002104410121020b2008200620022004422088a710850202402004a7450d002002102a0b20034180056a41086a22024200370300200342003703800541f8cfc300411b20034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341003602c806200342013703c0062006200341c0066a10b40102402006450d00200641057421062008210203402002200341c0066a108f01200241206a2102200641606a22060d000b0b20032802c4062102200341b8026a411020032802c006220620032802c806100702402002450d002006102a0b02402009450d002008102a0b20034189063b01c006410021054101210641014100200341c0066a10cc010c0a0b41c4d1c3004133200341c8076a419cd9c3001038000b200241011037000b41c4d1c3004133200341c8076a419cd9c3001038000b41b0b1c0001032000b41c4d1c3004133200341c8076a419cd9c3001038000b41bcd0c3002002200e1034000b41c4d1c3004133200341c8076a419cd9c3001038000b1031000b2004a7450d00200d102a410021060c010b410021060b0240024002402017417f6a220241034b0d00024020020e0403030300030b200620094572450d010c020b20174104490d012009450d010b2008102a0b20050d00200041023a0008410021180c010b20004181183b01082000201836020420002005360200410021182000410a6a41003a00000b410121054101210641012107410121084101210a41012109410121174101210d0c1c0b200341c0066a41386a200141c0006a290300370300200341c0066a41306a200141386a290300370300200341c0066a41286a200141306a290300370300200341c0066a41206a200141286a290300370300200341c0066a41186a200141206a290300370300200341c0066a41106a200141186a290300370300200341c0066a41086a200141106a2903003703002003200141086a2903003703c00620034190016a41206a200241206a29020037030020034190016a41186a200241186a29020037030020034190016a41106a200241106a29020037030020034190016a41086a200241086a2902003703002003200229020037039001200341386a200341c0066a20034190016a10860202400240200328023822020d00200041023a00084100210d0c010b200328023c210620004181163b0108200020023602004100210d2000410a6a41003a0000200020063602040b410121054101210641012107410121084101210a41012109410121170c1a0b20034190016a41206a200141246a29020037030020034190016a41186a2001411c6a29020037030020034190016a41106a200141146a29020037030020034190016a41086a2001410c6a2902003703002003200129020437039001200341c0066a41206a200241206a290200370300200341c0066a41186a200241186a290200370300200341c0066a41106a200241106a290200370300200341c0066a41086a200241086a290200370300200320022902003703c006200341306a20034190016a200341c0066a10870202400240200328023022020d00200041023a0008410021170c010b2003280234210620004181143b010820002002360200410021172000410a6a41003a0000200020063602040b410121054101210641012107410121084101210a410121090c180b20034190016a41206a200141246a29020037030020034190016a41186a2001411c6a29020037030020034190016a41106a200141146a29020037030020034190016a41086a2001410c6a2902003703002003200129020437039001200341c0066a41206a200241206a290200370300200341c0066a41186a200241186a290200370300200341c0066a41106a200241106a290200370300200341c0066a41086a200241086a290200370300200320022902003703c006200341286a20034190016a200341c0066a10880202400240200328022822020d00200041023a0008410021090c010b200328022c210620004181123b010820002002360200410021092000410a6a41003a0000200020063602040b410121054101210641012107410121084101210a0c160b200341c0066a41286a200141306a290300370300200341c0066a41206a200141286a290300370300200341c0066a41186a200141206a290300370300200341c0066a41106a200141186a290300370300200341c0066a41086a200141106a2903003703002003200141086a2903003703c00620034190016a41206a200241206a29020037030020034190016a41186a200241186a29020037030020034190016a41106a200241106a29020037030020034190016a41086a200241086a2902003703002003200229020037039001200341206a200341c0066a20034190016a10890202400240200328022022020d00200041023a00084100210a0c010b2003280224210620004181103b0108200020023602004100210a2000410a6a41003a0000200020063602040b410121054101210641012107410121080c140b200141086a28020021162001280204211a200341c0066a2001410c6a41e400109a051a2002411a6a2901002104200241196a2d00002118200241186a2d0000210e200241166a2f0100210f200241156a2d00002119200241146a2d00002113200241126a2f0100210c200241116a2d00002112200241106a2d000021072002410e6a2f010021082002410d6a2d0000210a2002410c6a2d000021092002410a6a2f01002117200241096a2d0000210d200241046a2d00002111200241026a2f01002115200241056a280000210520022d0000210620022d00012102200341b8026a200341c0066a41046a41e000109a051a410420054104200241014622021b20061b21050240024002400240024020060d0020020d010b410f210641ea9fc600210202400240024002400240024020050e0700010203040507000b2017410874200d7220094118747221022008410874200a7220074118747221060c060b410e210641dc9fc60021020c050b410c210641d09fc60021020c040b4109210641c79fc60021020c030b4113210641b49fc60021020c020b4111210641a39fc60021020c010b2003200437039805200320183a0097052003200e3a0096052003200f3b019405200320193a009305200320133a0092052003200c3b019005200320123a008f05200320073a008e05200320083b018c052003200a3a008b05200320093a008a05200320173b0188052003200d3a0087052003200536008305200320113a008205200320153b018005024002400240024002400240410e10282202450d002002410029008aaf44370000200241066a4100290090af443700002003428e808080e00137029401200320023602900120034180056a20034190016a108f012003280298012102200328029001210620034198026a41186a2205420037030020034198026a41106a2207420037030020034198026a41086a2208420037030020034200370398022006200220034198026a1000200341f8016a41186a2005290300370300200341f8016a41106a2007290300370300200341f8016a41086a200829030037030020032003290398023703f8010240200328029401450d00200328029001102a0b2003410036029001200341f8016a412020034190016a100621022003280290012206417f460d022002450d022003200636029c02200320023602980220034190016a20034198026a108a0220032802b0012217450d0120034198046a41086a2205200341c0016a29030037030020034198046a41106a2207200341c8016a29030037030020034198046a41186a2208200341d0016a29030037030020034198046a41206a220a200341d8016a2802003602002003200341b8016a2903003703980420032802b401210902402006450d002002102a0b200341e0056a41086a20052903002204370300200341e0056a41106a2007290300220b370300200341e0056a41186a20082903002210370300200341e0056a41206a200a28020022023602002003200329039804221b3703e00520034190016a41106a200b37030020034190016a41086a200437030020034190016a41186a201037030020034190016a41206a2002360200200341f8016a41086a2003419c016a290200370300200341f8016a41106a200341a4016a290200370300200341f8016a41186a200341ac016a2902003703002003201b3703900120032003290294013703f80102402009450d002017102a0b20034198036a41086a200341f8016a41086a29030037030020034198036a41106a200341f8016a41106a29030037030020034198036a41186a200341f8016a41186a290300370300200320032903f80137039803200341b8036a200341b8026a41e000109a051a20034198026a20034198036a108b0220032802a0022106200328029802210220034100360290012002200620034190016a100621062003280290012205417f460d042006450d042003200536028405200320063602800520034190016a20034180056a10e80120032d0090014101460d03200341e0056a20034190016a41017241e000109a051a02402005450d002006102a0b20034180056a200341e0056a41e000109a051a20034190016a20034180056a41e000109a051a200341013a00980420034198046a41017220034190016a41e000109a051a0c050b410e41011037000b41c4d1c3004133200341c8076a419cd9c3001038000b41a5c4c2002102412721060c030b41c4d1c3004133200341c8076a419cd9c3001038000b20034190016a20034180056a41e000109a051a200341003a0098040b0240200328029c02450d002002102a0b200341b9046a2112200341d9046a2111200341b8036a41206a2113200341f8036a210c20034198046a410172211520034190016a41017221054104210741e7e485f30621060240024003400240024002400240200641e9dabdf30646220f0d000240200641e7e485f306470d00200341b8036a210a0c020b200641e2c289ab06470d022013210a0c010b200c210a0b41202102410021084120102822090d01412041011037000b41012108410021024101210a410121090b2009200a2002109a052109200320023602a402200320023602a0022003200936029c022003200636029802200341f8016a20034198026a108c0220034190016a20032802f801221720032802800210fd0120034180056a41086a220d200541086a29000037030020034180056a41106a2218200541106a29000037030020034180056a41186a220e200541186a29000037030020032005290000370380050240024020032d0090014101470d00200341e0056a41186a2219200e290300370300200341e0056a41106a220e2018290300370300200341e0056a41086a2218200d29030037030020032003290380053703e005024020032802fc01450d002017102a0b024020080d002009102a0b20034190016a41186a201929030037030020034190016a41106a200e29030037030020034190016a41086a2018290300370300200320032903e0053703900120034190016a20034198036a4120109c05450d0141ccc4c2002102411821060c050b024020032802fc01450d002017102a0b20080d002009102a0b0240024020032d0098044101470d00024002400240200641e2c289ab06460d00200f0d010240200641e7e485f306460d0041002109410121170c030b41202109201521170c020b41202109201221170c010b41202109201121170b024020022009470d00200a2017460d02200a20172002109c05450d020b0240024020090d004100210d410121180c010b2009210d200910282218450d040b201820172009109a0521172003200936029c012003200d3602980120032017360294012003200636029001200341e0056a20034190016a108c0220032802e005220920032802e8051009024020032802e405450d002009102a0b200d450d002017102a0b41012109024020080d00200210282209450d040b2009200a2002109a05210a2003200236029c0120032002360298012003200a360294012003200636029001200341e0056a20034190016a108c0220032802e0052102200320032802e80536028405200320023602800520034198036a20034180056a10ff01024020032802e405450d002002102a0b20080d00200a102a0b02402007410c460d00200741f8c8c0006a2800002106200741046a21070c010b0b200341e0056a20034198036a108b0220032802e805210620032802e005210220034100360298012003420137039001200341b8036a20034190016a108f01201320034190016a108f01200c20034190016a108f012003280294012105200220062003280290012207200328029801100702402005450d002007102a0b024020032802e405450d002002102a0b2016450d03201a102a0c030b200941011037000b200241011037000b02402016450d00201a102a0b2002450d00200041810e3b01082000200636020420002002360200410021082000410a6a41003a00000c010b200041023a0008410021080b4101210541012106410121070c120b200341c0066a41306a200141386a290300370300200341c0066a41286a200141306a290300370300200341c0066a41206a200141286a290300370300200341c0066a41186a200141206a290300370300200341c0066a41106a200141186a290300370300200341c0066a41086a200141106a2903003703002003200141086a2903003703c00620034190016a41206a200241206a29020037030020034190016a41186a200241186a29020037030020034190016a41106a200241106a29020037030020034190016a41086a200241086a2902003703002003200229020037039001200341186a200341c0066a20034190016a108d0202400240200328021822020d00200041023a0008410021070c010b200328021c2106200041810c3b010820002002360200410021072000410a6a41003a0000200020063602040b41012105410121060c100b200141256a2900002110200141246a2d0000211a200141216a2f00002113200141206a2d0000210c2001411d6a2f000021122001411c6a2d00002111200141196a2f00002109200141186a2d00002117200141156a2f0000210d200141146a2d00002118200141106a28020021052001410d6a2f0000210e2001410c6a2d00002127200141086a2802002107200141306a2903002104200141386a290300210b20012d0023211520012d001f211420012d001b210f20012d0017211920012d000f211620034198046a41106a200141d0006a2d00003a000020034198046a41086a221e200141c8006a2903003703002003200141c0006a290300370398044111210620022d0001210820022d0000210a02400240024002400240024002400240024002400240024002400240024020070e0400010203000b200341c0066a41146a4101360200200342013702c406200341ccd1c5003602c006200341043602e405200341c4d1c5003602e0052003200341e0056a3602d006200341c0066a41e092c100103e000b200241106a2d0000211e2002410e6a2f0100211f2002410d6a2d000021202002410c6a2d000021212002410a6a2f01002122200241096a2d000021234104200241056a2800004104200841ff017141014622081b200a41ff017122061b21070240024020060d0020080d010b410f210641ea9fc600210202400240024002400240024020070e0700010203040511000b20224108742023722021411874722102201f410874202072201e4118747221060c100b410e210641dc9fc60021020c0f0b410c210641d09fc60021020c0e0b4109210641c79fc60021020c0d0b4113210641b49fc60021020c0c0b4111210641a39fc60021020c0b0b200241196a2d00002106200241186a2d00002108200241166a2f0100210a200241156a2d00002124200241146a2d00002125200241126a2f01002126200241116a2d00002128200241046a2d00002129200241026a2f0100212a20032002411a6a2901003703a801200320063a00a701200320083a00a6012003200a3b01a401200320243a00a301200320253a00a201200320263b01a001200320283a009f012003201e3a009e012003201f3b019c01200320203a009b01200320213a009a01200320223b019801200320233a0097012003200736009301200320293a0092012003202a3b01900102400240202741ff01714101470d00200341e0056a200541067610fe0120032802e00521060240024020032802e8052005413f7122024b0d00410021020c010b200620024105746a2202290018211020022d0017211a20022d0016211520022f0014211320022d0013210c20022d0012211420022f0010211220022d000f211120022d000e210f20022f000c210920022d000b211720022d000a211920022f0008210d20022d000721182002280003210520022d0002211620022f0000210e410121020b024020032802e405450d002006102a0b20020d00410121020c010b410021020b20032010370390022003201a3a008f02200320153a008e02200320133b018c022003200c3a008b02200320143a008a02200320123b018802200320113a0087022003200f3a008602200320093b018402200320173a008302200320193a0082022003200d3b018002200320183a00ff01200320053600fb01200320163a00fa012003200e3b01f80120020d09200341c0066a41186a200341f8016a41186a290300370300200341c0066a41106a200341f8016a41106a290300370300200341c0066a41086a200341f8016a41086a290300370300200320032903f8013703c006200341086a20034190016a200341c0066a2004200b108e0220032802082202450d0b200328020c21060c0a0b41a39fc60021022008200a7241ff01710d0b201e290300211b200329039804211c0240202741ff01714101470d0020034190016a200541067610fe012003280290012106024002402003280298012005413f7122024b0d00410021020c010b200620024105746a2202290018211020022d0017211a20022d0016211520022f0014211320022d0013210c20022d0012211420022f0010211220022d000f211120022d000e210f20022f000c210920022d000b211720022d000a211920022f0008210d20022d000721182002280003210520022d0002211620022f0000210e410121020b0240200328029401450d002006102a0b2002450d080b200320103703d8062003201a3a00d706200320153a00d606200320133b01d4062003200c3a00d306200320143a00d206200320123b01d006200320113a00cf062003200f3a00ce06200320093b01cc06200320173a00cb06200320193a00ca062003200d3b01c806200320183a00c706200320053600c306200320163a00c2062003200e3b01c006411410282202450d01200241002900cfe140370000200241106a41002800dfe140360000200241086a41002900d7e14037000020034294808080c002370294012003200236029001200341c0066a20034190016a108f012003280298012102200328029001210620034198026a41186a2205420037030020034198026a41106a2207420037030020034198026a41086a2208420037030020034200370398022006200220034198026a1000200341f8016a41186a2005290300370300200341f8016a41106a2007290300370300200341f8016a41086a200829030037030020032003290398023703f8010240200328029401450d00200328029001102a0b2003410036029001200341f8016a412020034190016a100621022003280290012206417f460d052002450d0520064110490d02200241086a29000021102002290000211d2002102a0c060b41a39fc60021022008200a7241ff01710d0a200141e0006a290300211c200141d8006a290300211d20032900a104211b20032d00a004210720032d009f04210820032f009d04210a20032d009c04211e20032d009b04211f20032f009904212020032d00980421210240202741ff01714101470d00200341c0066a200541067610fe0120032802c00621060240024020032802c8062005413f7122024b0d00410021020c010b200620024105746a2202290018211020022d0017211a20022d0016211520022f0014211320022d0013210c20022d0012211420022f0010211220022d000f211120022d000e210f20022f000c210920022d000b211720022d000a211920022f0008210d20022d000721182002280003210520022d0002211620022f0000210e410121020b024020032802c406450d002006102a0b2002450d070b2004422088a72106200320103703a8012003201a3a00a701200320153a00a601200320133b01a4012003200c3a00a301200320143a00a201200320123b01a001200320113a009f012003200f3a009e01200320093b019c01200320173a009b01200320193a009a012003200d3b019801200320183a0097012003200536009301200320163a0092012003200e3b01900102402004a741ff01714101460d00200ba72118200b423888a7210f200b422888a72109200b422088a72117200b421888a72119200b420888a7210d2004421888a721162004420888a7210e0c030b200341e0056a2004422688a710fe0120032802e00521050240024020032802e8052006413f7122024b0d00410021022013210a200c211e2014211f201221202011212120152108201a21072010211b0c010b200520024105746a2202290018211b20022d0017210720022d0016210820022f0014210a20022d0013211e20022d0012211f20022f0010212020022d000f212120022d000e210f20022f000c210920022d000b211720022d000a211920022f0008210d20022d000721182002280003210620022d0002211620022f0000210e410121020b024020032802e405450d002005102a0b20020d02410121020c030b411441011037000b41c4d1c3004133200341c8076a419cd9c3001038000b410021020b2003201b37039002200320073a008f02200320083a008e022003200a3b018c022003201e3a008b022003201f3a008a02200320203b018802200320213a0087022003200f3a008602200320093b018402200320173a008302200320193a0082022003200d3b018002200320183a00ff01200320063600fb01200320163a00fa012003200e3b01f80120020d03200341c0066a41186a200341f8016a41186a290300370300200341c0066a41106a200341f8016a41106a290300370300200341c0066a41086a200341f8016a41086a290300370300200320032903f8013703c006200341106a20034190016a200341c0066a201d201c108e0220032802102202450d05200328021421060c040b4200211d420021100b02400240201d20045422062010200b542010200b5122021b0d00201d2004562010200b5620021b450d012003201d20047d3703900120032010200b7d2006ad7d37039801200320034190016a3602e005200341e0056a109d010c010b20032004201d7d370390012003200b20107d2004201d54ad7d37039801200320034190016a3602e005200341e0056a109c010b200341c0066a2004200b108f020240024002400240411810282202450d00200241002900e3e140370000200241106a41002900f3e140370000200241086a41002900ebe140370000200342988080808003370294012003200236029001200341c0066a20034190016a108f012003280298012102200328029001210620034198026a41186a2205420037030020034198026a41106a2207420037030020034198026a41086a2208420037030020034200370398022006200220034198026a1000200341f8016a41186a2005290300370300200341f8016a41106a2007290300370300200341f8016a41086a200829030037030020032003290398023703f8010240200328029401450d00200328029001102a0b2003410036029001200341f8016a412020034190016a100621022003280290012206417f460d022002450d0220064110490d01200241086a29000021042002290000210b2002102a0c030b411841011037000b41c4d1c3004133200341c8076a419cd9c3001038000b4200210b420021040b02400240200b201c5422062004201b542004201b5122021b0d00200b201c562004201b5620021b450d012003200b201c7d3703900120032004201b7d2006ad7d37039801200320034190016a3602e005200341e0056a109d010c010b2003201c200b7d370390012003201b20047d201c200b54ad7d37039801200320034190016a3602e005200341e0056a109c010b200341c0066a201c201b1090020c030b41dc9fc6002102410e21060c030b41dc9fc6002102410e21060b20020d010b200041023a00080c010b200041810a3b010820002006360204200020023602002000410a6a41003a00000b41012105410121060c0d0b109102000b024020032802cc062206450d0020032802c4062102200641246c210603400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a280200102a0c030b2002410c6a280200450d02200241086a280200102a0c020b2002410c6a280200450d01200241086a280200102a0c010b200241086a280200450d00200241046a280200102a0b200241246a21022006415c6a22060d000b0b024020032802c806450d0020032802c406102a0b024020072008460d0003402007280204220a450d01200741086a280200210902402007410c6a2802002202450d00200241246c2106200a210203400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a280200102a0c030b2002410c6a280200450d02200241086a280200102a0c020b2002410c6a280200450d01200241086a280200102a0c010b200241086a280200450d00200241046a280200102a0b200241246a21022006415c6a22060d000b0b200741f0006a210702402009450d00200a102a0b20072008470d000b0b0240200c450d00200d102a0b2004a7450d032017102a0c030b20072008460d0003402007280204220a450d01200741086a280200210902402007410c6a2802002202450d00200241246c2106200a210203400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a280200102a0c030b2002410c6a280200450d02200241086a280200102a0c020b2002410c6a280200450d01200241086a280200102a0c010b200241086a280200450d00200241046a280200102a0b200241246a21022006415c6a22060d000b0b200741f0006a210702402009450d00200a102a0b20072008470d000b0b0240200c450d00200d102a0b20034180056a41086a2202420037030020034200370380054193cdc200411120034180056a1008200341b8026a41086a200229030037030020032003290380053703b802200341c0066a20032802980322022004422088a7109202200341b8026a411020032802c006220620032802c8061007024020032802c406450d002006102a0b02402004a7450d002002102a0b200041023a000841002106410121050c090b02402005450d00200d200541f0006c6a2108200d2107034002402007410c6a2802002206450d0020072802042102200641246c210603400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a280200102a0c030b2002410c6a280200450d02200241086a280200102a0c020b2002410c6a280200450d01200241086a280200102a0c010b200241086a280200450d00200241046a280200102a0b200241246a21022006415c6a22060d000b0b200741f0006a21020240200741086a280200450d002007280204102a0b2002210720022008470d000b0b200c450d00200d102a0b20004181063b01082000200f3602042000200e360200410021062000410a6a41003a0000410121050c070b2005102a0b0240024002402007417f6a220241054b0d00024002400240024020020e06060006010203060b41000d052004a70d040c050b41000d042004a70d030c040b200a450d0302402004422088a72202450d00200241186c21062005210203400240200241046a280200450d002002280200102a0b0240200241106a280200450d002002410c6a280200102a0b200241186a2102200641686a22060d000b0b2004a70d020c030b2006450d0202402004422088a72202450d002002410c6c21062005210203400240200241046a280200450d002002280200102a0b2002410c6a2102200641746a22060d000b0b2004a70d010c020b02402004422088a72202450d002002410c6c21062005210203400240200241046a280200450d002002280200102a0b2002410c6a2102200641746a22060d000b0b2004a7450d010b2005102a0b410f210241ea9fc6002105410621072008417c6a0e0402010300020b200041023a0008410121060c030b4111210241a39fc6002105410521070c010b4113210241b49fc6002105410421070b41012106200041013b010820002002360204200020053602002000410a6a20073a00000b410021050b410121070b410121080b4101210a0b410121090b410121170b4101210d0b410121180b4101210e0b4101210f410121190b410121160b02402001280200220241124b0d00024002400240024002400240024002400240024002400240024020020e13000d0d010d0d020304050607080d090d0a0b0c000b2005450d0c0240200141086a280200220241054b0d0002400240024020020e06101000100102100b200141106a280200450d0f2001410c6a280200102a0c0f0b200141106a280200450d0e2001410c6a280200102a0c0e0b0240200141146a2802002206450d002001410c6a2802002102200641186c210603400240200241046a280200450d002002280200102a0b0240200241106a280200450d002002410c6a280200102a0b200241186a2102200641686a22060d000b0b200141106a280200450d0d200128020c102a0c0d0b0240200141146a2802002206450d002001410c6a28020021022006410c6c210603400240200241046a280200450d002002280200102a0b2002410c6a2102200641746a22060d000b0b200141106a280200450d0c200128020c102a0c0c0b2006450d0b02402001410c6a2802002202450d0020012802042200200241f0006c6a2107034002402000410c6a2802002206450d0020002802042102200641246c210603400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a280200102a0c030b2002410c6a280200450d02200241086a280200102a0c020b2002410c6a280200450d01200241086a280200102a0c010b200241086a280200450d00200241046a280200102a0b200241246a21022006415c6a22060d000b0b200041f0006a21020240200041086a280200450d002000280204102a0b2002210020022007470d000b0b200141086a280200450d0b2001280204102a0c0b0b2007450d0a0240200141086a2d00002202410c4b0d0020024106470d0b200141106a280200450d0b2001410c6a280200102a0c0b0b200141106a280200450d0a2001410c6a280200102a0c0a0b2008450d09200141086a280200450d092001280204102a0c090b200a450d08200141086a2d0000417f6a220241074b0d08024002400240024020020e08000c0c0c0c010203000b2001410c6a2202280200106a2002280200102a0c0b0b2001410c6a2202280200106a2002280200102a0c0a0b2001410c6a2202280200106a2002280200102a0c090b2001410c6a2202280200106a2002280200102a0c080b2009450d0720012d0004417f6a220241024b0d0702400240024020020e03000102000b2001410c6a280200450d09200141086a280200102a0c090b200141086a2202280200106a2002280200102a0c080b2001410c6a2202280200106a2002280200102a0c070b2017450d0620012d0004417f6a220241024b0d0602400240024020020e03000102000b2001410c6a280200450d08200141086a280200102a0c080b200141086a2202280200106a2002280200102a0c070b2001410c6a2202280200106a2002280200102a0c060b200d450d05200141086a280200417f6a220241014b0d050240024020020e020001000b200141106a280200450d062001410c6a280200102a0c060b200141106a280200450d052001410c6a280200102a0c050b2018450d0420012d00044104490d042001410c6a280200450d04200141086a280200102a0c040b200e450d03200141086a280200450d032001280204102a0c030b200f450d02200141086a2d0000417e6a220241024b0d0202400240024020020e03000102000b200141106a280200450d042001410c6a280200102a0c040b200141346a280200450d03200141306a280200102a0c030b200141306a280200450d022001412c6a280200102a0c020b2019450d0102402001280204220241024b0d00024020020e03030003030b200141086a2202280200106a2002280200102a0c020b2001412c6a2202280200106a2002280200102a0c010b2016450d0002402001410c6a280200450d00200141086a280200102a0b02402001411c6a2802002206450d00200141146a28020021022006410c6c210603400240200241046a280200450d002002280200102a0b2002410c6a2102200641746a22060d000b0b200141186a280200450d002001280214102a0b200341d0076a24000b4d01017f230041206b22002400200041146a410136020020004201370204200041ccd1c5003602002000410436021c200041c4d1c5003602182000200041186a360210200041a8c6c200103e000bfa0301077f230041306b22022400200241003602082002420137030020022002360210200141106a200241106a10c8012001200210a00120022002360210200141306a200241106a10c80120022002360210200141d0006a200241106a10c801200128020421032001410c6a2802002201200210b4010240024002402001450d00200141246c21040340200241106a200310ec01200228021021050240024020022802042206200228020822016b20022802182207490d00200228020021060c010b200120076a22082001490d04200641017422012008200120084b1b22014100480d040240024020060d002001102821060c010b200228020020062001102c21060b2006450d032002200136020420022006360200200228020821010b2002200120076a360208200620016a20052007109a051a02402002280214450d002005102a0b200341246a21032004415c6a22040d000b0b200228020421072002280208210320022802002101200241106a41186a22064200370300200241106a41106a22054200370300200241106a41086a220442003703002002420037031020012003200241106a1000200041186a2006290300370000200041106a2005290300370000200041086a20042903003700002000200229031037000002402007450d002001102a0b200241306a24000f0b200141011037000b1031000ba80301047f230041f0006b2202240002400240411010282203450d00200341086a41002900c6f042370000200341002900bef042370000200341104120102c2203450d0120032001360010200241086a41186a22014200370300200241086a41106a22044200370300200241086a41086a220542003703002002420037030820034114200241086a1000200241306a41186a2001290300370300200241306a41106a2004290300370300200241306a41086a2005290300370300200220022903083703302003102a200241086a200241306a412010a703200241d0006a41086a200241116a290000370300200241d0006a41106a2203200241196a290000370300200241d0006a41186a2201200241216a290000370300200220022900093703500240024020022d00084101460d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20002002290350370000200041186a2001290300370000200041106a2003290300370000200041086a200241d0006a41086a2903003700000b200241f0006a24000f0b411041011037000b412041011037000bd50c04077f017e027f017e230041b0016b22012400200141306a41086a220242003703002001420037033041afc5c2004111200141306a1008200141086a200229030037030020012001290330370300200141c0006a2001411010fd0120012d00402103200141106a41186a2204200141d9006a290000370300200141106a41106a2205200141c0006a41116a290000370300200141106a41086a2206200141c9006a290000370300200120012900413703100240024020034101470d0020002001290310370000200041186a2004290300370000200041106a2005290300370000200041086a20062903003700000c010b200141c0006a41086a220342003703002001420037034041b1f0c200410d200141c0006a1008200220032903003703002001200129034037033020014100360240200141306a4110200141c0006a1006210202400240024020012802402203417f460d002002450d002001200336021420012002360210200141c0006a200141106a107620012802402207450d02200129024421082003450d012002102a0c010b41042107420021080b20072008422088a7220941246c6a2104200721020240024002400240034002400240200420026b41ed00490d0003400240200222032d00004101470d00200341246a210a200341106a2105200341086a2106200341016a21020c030b0240200341246a2d00004101470d00200341c8006a210a200341346a21052003412c6a2106200341256a21020c030b0240200341c8006a2d00004101470d00200341ec006a210a200341d8006a2105200341d0006a2106200341c9006a21020c030b0240200341ec006a2d00004101470d0020034190016a210a200341fc006a2105200341f4006a2106200341ed006a21020c030b200420034190016a22026b41ec004b0d000b20034190016a21020b20022004460d020240034020022d00004101460d012004200241246a2202460d040c000b0b200241246a210a200241106a2105200241086a2106200241016a21020b200228000021022006280200210320012005280200360214200120033602100240200241c28289aa04460d00200a21020c010b0b200141c0006a200141106a10ba0220012d004022024102460d00200141a4016a28020021062001280244210a4200210b200141306a41086a220342003703002001420037033041c785c2004112200141306a1008200141c0006a41086a20032903003703002001200129033037034020014100360210200141c0006a4110200141106a100621050240024020012802102203417f460d002001200336023420012005360230200141106a200141306a106d20012802102204450d052001290214210b2003450d012005102a0c010b410121040b410021030240200a200620024101711b2202200b422088a74f0d00200420024105746a2202450d00200141106a41186a200241186a290000370300200141106a41106a200241106a290000370300200141106a41086a200241086a29000037030020012002290000370310410121030b0240200ba7450d002004102a0b20030d010b20004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b200141c0006a41186a2202200141106a41186a290300370300200141c0006a41106a2203200141106a41106a290300370300200141c0006a41086a2204200141106a41086a29030037030020012001290310370340200141306a41086a220542003703002001420037033041afc5c2004111200141306a1008200141086a2005290300370300200120012903303703002001411036023420012001360230200141c0006a200141306a10ff01200041186a2002290300370000200041106a2003290300370000200041086a2004290300370000200020012903403700000b02402009450d00200941246c21032007210203400240024020022d0000220441034b0d0002400240024020040e0404000102040b2002410c6a280200450d03200241086a280200102a0c030b2002410c6a280200450d02200241086a280200102a0c020b2002410c6a280200450d01200241086a280200102a0c010b200241086a280200450d00200241046a280200102a0b200241246a21022003415c6a22030d000b0b2008a7450d022007102a0c020b41c4d1c30041332001419cd9c3001038000b41c4d1c30041332001419cd9c3001038000b200141b0016a24000b860c07057f017e047f027e037f027e047f230041c0006b22012400200141106a41086a220242003703002001420037031041f09cc600411e200141106a1008200141086a2203200229030037030020012001290310370300200141106a200110de03200128021021042001280214210520012903182106200028020821072000280204210820002802002109200242003703002001420037031041a5afc4004116200141106a100820032002290300370300200120012903103703002001410036021020014110200141106a100621000240024002400240024002400240024020012802102202417f460d002000450d002001200236023420012000360230200141106a200141306a106d2001280210220a450d022001290214210b2002450d012000102a0c010b4101210a4200210b0b2006420020051b210c2004410020051b21042005410420051b210d02402007450d002009200741246c6a210e200a200b422088a74105746a21032009210203402002280220210f200241086a2900002106200241106a290000211020022900002111200141106a41186a200241186a290000370300200141106a41106a2010370300200141106a41086a200637030020012011370310200241246a2102200a2105410021000240024003400240200320056b41e0004b0d0020052003460d030340200141106a2005460d0320002005200141106a4120109c0522074100476a21002007450d032003200541206a2205470d000c040b0b200141106a2005460d0120002005200141106a4120109c0522074100476a21002007450d01200541206a2207200141106a460d0120002007200141106a4120109c0522074100476a21002007450d01200541c0006a2207200141106a460d0120002007200141106a4120109c0522074100476a21002007450d01200541e0006a2207200141106a460d0120054180016a210520002007200141106a4120109c0522074100476a210020070d000b0b2004200f6a22072004490d000240200041016a2204200c422088a722054d0d000240200ca7221220056b20042005200420054b1b221320056b22044f0d00200520046a22142005490d0a201241017422152014201520144b1b221441ffffffff03712014470d0a201441027422154100480d0a0240024020120d0020151028210d0c010b200d20124102742015102c210d0b200d450d062014ad210c0b200d20054102746a21120240024020044102490d002012410020132005417f736a22044102741099051a200d200520136a20056b4102746a417c6a2112200420056a21050c010b2004450d010b20124100360200200541016a21050b200520004d0d05200d20004102746a22002000280200200f6a360200200c42ffffffff0f832005ad42208684210c200721040b2002200e470d000b0b02402008450d002009102a0b0240200ba7450d00200a102a0b200141106a41086a220542003703002001420037031041f09cc600411e200141106a1008200141086a20052903003703002001200129031037030002400240200d0d002001411010090c010b2001410036021820014201370310410410282205450d042005200436000020014284808080c00037021420012005360210200c422088a72205200141106a10b4010240024020050d002001280218210420012802142103200128021021000c010b2005410274210f4100200128021822056b210220012802142103200d210703402007280200210a02400240200320026a4104490d00200128021021000c010b200541046a22002005490d09200341017422042000200420004b1b22044100480d090240024020030d002004102821000c010b200128021020032004102c21000b2000450d082001200436021420012000360210200421030b200741046a21072001200541046a2204360218200020056a200a3600002002417c6a210220042105200f417c6a220f0d000b0b200ca721052001411020002004100702402003450d002000102a0b2005450d00200d102a0b200141c0006a24000f0b41c4d1c3004133200141386a419cd9c3001038000b201541041037000b41ac9bc600200020051034000b410441011037000b200441011037000b1031000b4d01017f230041206b22002400200041146a410136020020004201370204200041ccd1c5003602002000410436021c200041c4d1c5003602182000200041186a3602102000419896c400103e000ba70101047f230041206b22002400200041106a41086a2201420037030020004200370310419499c6004114200041106a1008200041086a200129030037030020002000290310370300410021022000410036021020004110200041106a100621010240024020002802102203417f460d002001450d0020034104490d01200128000021022001102a0b200041206a240020020f0b41c4d1c3004133200041106a419cd9c3001038000b9d0401067f230041d0006b220324000240024002400240411b10282204450d00200441176a41002800d89646360000200441106a41002900d19646370000200441086a41002900c99646370000200441002900c196463700002004411b4136102c2204450d012004200136001b200341306a41186a22014200370300200341306a41106a22054200370300200341306a41086a22064200370300200342003703302004411f200341306a1000200341086a41186a22072001290300370300200341086a41106a2005290300370300200341086a41086a2006290300370300200320032903303703082004102a412010282204450d0220042003290308370000200441186a2007290300370000200441106a200341086a41106a2205290300370000200441086a200341086a41086a22062903003700002003200236022c20014200370300200341306a41106a22024200370300200341306a41086a22084200370300200342003703302003412c6a4104200341306a1000200720012903003703002005200229030037030020062008290300370300200320032903303703082004412041c000102c2204450d0320042003290308370020200441386a200341206a290300370000200441306a2005290300370000200441286a2006290300370000200042c0808080800837020420002004360200200341d0006a24000f0b411b41011037000b413641011037000b412041011037000b41c00041011037000bcb0201047f230041d0006b220324002003410036022820012002200341286a1006210402400240024020032802282205417f460d0020040d010b200041003a00000c010b41002101200341003a00480340024020052001470d000240200141ff0171450d00200341003a00480b41c4d1c3004133200341286a419cd9c3001038000b200341286a20016a200420016a2d00003a00002003200141016a22023a00482002210120024120470d000b200341086a41186a2201200341286a41186a290300370300200341086a41106a2202200341286a41106a290300370300200341086a41086a2206200341286a41086a2903003703002003200329032837030802402005450d002004102a0b20002003290308370001200041013a0000200041196a2001290300370000200041116a2002290300370000200041096a20062903003700000b200341d0006a24000bec0202047f017e230041d0006b22022400024002400240410f10282203450d00200341076a4100290092b4433700002003410029008bb4433700002003410f411e102c2203450d012003200136000f200241286a41186a22014200370300200241286a41106a22044200370300200241286a41086a220542003703002002420037032820034113200241286a1000200241186a2001290300370300200241106a2004290300370300200241086a2005290300370300200220022903283703002003102a2002410036022820024120200241286a100621010240024020022802282203417f460d002002200336022420022001360220200241286a200241206a106d20022802282204450d04200229022c210602402003450d002001102a0b20002006370204200020043602000c010b20004100360208200042013702000b200241d0006a24000f0b410f41011037000b411e41011037000b41c4d1c3004133200241c8006a419cd9c3001038000bdf0301017f024002400240024002400240410110282202450d00200220002d00003a0000200241014102102c2202450d01200220002d00013a0001200241024104102c2202450d02200220002d00023a0002200220002d00033a0003200241044108102c2202450d03200220002d00043a0004200220002d00053a0005200220002d00063a0006200220002d00073a0007200241084110102c2202450d04200220002d00083a0008200220002d00093a0009200220002d000a3a000a200220002d000b3a000b200220002d000c3a000c200220002d000d3a000d200220002d000e3a000e200220002d000f3a000f200241104120102c2202450d05200220002d00103a0010200220002d00113a0011200220002d00123a0012200220002d00133a0013200220002d00143a0014200220002d00153a0015200220002d00163a0016200220002d00173a0017200220002d00183a0018200220002d00193a0019200220002d001a3a001a200220002d001b3a001b200220002d001c3a001c200220002d001d3a001d200220002d001e3a001e200220002d001f3a001f200128020020012802042002412010072002102a0f0b410141011037000b410241011037000b410441011037000b410841011037000b411041011037000b412041011037000bf54606077f027e0f7f047e117f017e230041800a6b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e06000102030405000b200341cc026a4101360200200342013702bc02200341ccd1c5003602b802200341043602b406200341c4d1c5003602b0062003200341b0066a3602c802200341b8026a41e893c400103e000b200141e0006a2802002104200341b0066a200141086a41d800109a051a20034198056a200141fc006a28020036020020034190056a200141f4006a29020037030020034180056a41086a200141ec006a2902003703002003200141e4006a29020037038005024020022d000120022d000072450d0041a39fc600210541112104410121060c120b200341b8026a10f70302402003280290032004490d0041f893c400210541352104410121060c120b200341b8026a41086a41033a00002003410c3a00b802200341b8026a410c6a20043602004100210541014100200341b8026a10cc01200341b8026a200341b0066a41d800109a051a2003419c036a20034180056a41086a290300370200200341a4036a20034180056a41106a290300370200200341ac036a20034180056a41186a2802003602002003200436029003200320032903800537029403200341c0086a41086a22024200370300200342003703c00841c0fec5004118200341c0086a100820034180046a41086a2002290300370300200320032903c00837038004200341003602c808200342013703c008200341b8026a200341c0086a10ee0120032802c408210220034180046a411020032802c008220420032802c80810072002450d0f2004102a0c0f0b2001410c6a2802002107200141086a280200210841042104200141046a2802002109200141106a290300210a2002411a6a290100210b200241196a2d0000210c200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d000021132002410e6a2f010021142002410d6a2d000021152002410c6a2d000021162002410a6a2f01002117200241096a2d00002118200241046a2d00002119200241026a2f0100211a0240024020022d00000d0020022d00014101470d00200241056a2d00002104200241066a2f01002105200241086a2d00002102410021060c010b4101210641002102410021050b200541ffff0371410874200241187472200441ff017172210202402006450d0041ea9fc6002105410f210402400240024002400240024020020e0700010203040513000b20174108742018722016411874722105201441087420157220134118747221040c120b41dc9fc6002105410e21040c110b41d09fc6002105410c21040c100b41c79fc6002105410921040c0f0b41b49fc6002105411321040c0e0b41a39fc6002105411121040c0d0b2003200b370398042003200c3a0097042003200d3a0096042003200e3b0194042003200f3a009304200320103a009204200320113b019004200320123a008f04200320133a008e04200320143b018c04200320153a008b04200320163a008a04200320173b018804200320183a0087042003200236008304200320193a0082042003201a3b018004200341e8006a10f603024002402003290368220b200341e8006a41086a290300221b8450450d004200211c4200211d0c010b200341c8006a201b4200200a4200109f05200341d8006a200b4200200a4200109f05200341386a42004200200b4200109f0502402003290350200329034084420052200341e0006a290300221c200329034820032903387c7c221d201c5472450d0041a6b5c0002105412721040c0e0b2003290358211c0b200341b8026a20034180046a201c201d4108109802024020032802b8024101470d0020032802c002210420032802bc0221050c0d0b200341c8026a290300211c20032903c002211d200341b8026a10f703200341286a20032903b80242002007ad4200109f050240200a427f200329032820032903304200521b7d221e200a562205450d0041fdbfc2002102412c21040c0b0b200341b0066a20092007200341b8026a10f802024020032802b0064101470d00200341b8066a280200210420032802b40621020c0b0b200341c8096a41186a2206200341b0066a410472220241186a280200360200200341c8096a41106a2216200241106a290200370300200341c8096a41086a2217200241086a290200370300200320022902003703c80920034180056a41186a2213420037030020034180056a41106a2214420037030020034180056a41086a2215420037030020034200370380052009200720034180056a1000200341da016a221820032d0082053a000020034198026a41086a220c20034180056a41136a290000370300200341a5026a220d2013290000370000200320032f0180053b01d8012003200329008b053703980220032800830521022003280087052104200341e0076a41186a2006280200360200200341e0076a41106a2016290300370300200341e0076a41086a2017290300370300200320032903c8093703e007200320043600b706200320023600b306200320182d00003a00b206200320032f01d8013b01b006200341b0066a41136a200c290300370000200341b0066a41186a200d29000037000020032003290398023700bb06411410282206450d03200641002900ddd843370000200641106a41002800edd843360000200641086a41002900e5d84337000020034294808080c0023702fc01200320063602f8012003200341f8016a36028005200341b0066a20034180056a10c80120032802f8012106200328028002211620134200370300201442003703002015420037030020034200370380052006201620034180056a1000200341c0086a41186a2013290300370300200341c0086a41106a2014290300370300200341c0086a41086a201529030037030020032003290380053703c008024020032802fc01450d0020032802f801102a0b200341203602b4062003200341c0086a3602b006200341e0076a200341b0066a10f9020240200341f0076a280200450d0020032802ec07102a0b200341c3066a20034198026a41086a290300370000200341b0066a41186a20034198026a410d6a2900003700002003200341da016a2d00003a00b206200320032f01d8013b01b006200320043600b706200320023600b30620032003290398023700bb06411510282206450d04200641002900c8d8433700002006410d6a41002900d5d843370000200641086a41002900d0d84337000020034295808080d0023702e407200320063602e0072003200341e0076a36028005200341b0066a20034180056a10c80120032802e007210620032802e807211320034180056a41186a2214420037030020034180056a41106a2215420037030020034180056a41086a2216420037030020034200370380052006201320034180056a1000200341c0086a41186a2014290300370300200341c0086a41106a2015290300370300200341c0086a41086a201629030037030020032003290380053703c008024020032802e407450d0020032802e007102a0b200341203602b4062003200341c0086a3602b00620092007200341b0066a10cb0102402008450d002009102a0b200341f8016a41026a200341d8016a41026a2d000022063a000020034180056a41086a221320034198026a41086a29030037030020034180056a410d6a220820034198026a410d6a290000370000200320032f01d80122093b01f801200320032903980237038005200341b0066a41086a41023a0000200341b9066a20093b0000200341bb066a20063a0000200341c0066a20043602002003410c3a00b006200341b0066a410c6a2002360200200341c4066a200329038005370200200341cc066a2013290300370200200341d1066a20082900003700004100211341014100200341b0066a10cc010c0b0b200141c0006a290300210b200141386a290300211d2002411a6a290100211c200241196a2d0000211f200241186a2d00002120200241166a2f01002121200241156a2d00002122200241146a2d00002123200241126a2f01002124200241116a2d00002125200241106a2d000021262002410e6a2f010021272002410d6a2d000021282002410c6a2d000021292002410a6a2f0100212a200241096a2d0000212b41042104200241046a2d0000212c200241026a2f0100212d200141306a280200212e2001412c6a2802002108200141286a28020021092001411d6a290000210a2001411c6a2d000021142001411b6a2d00002115200141196a2f00002116200141186a2d00002117200141176a2d00002118200141156a2f0000210c200141146a2d0000210d200141136a2d0000210e200141116a2f0000210f200141106a2d000021102001410f6a2d000021112001410d6a2f000021122001410c6a2d00002119200141086a2802002105200141076a2d0000211a200141056a2f00002107200141046a2d0000212f200141c8006a290300211b0240024020022d00000d0020022d00014101470d00200241056a2d00002104200241066a2f01002106200241086a2d00002102410021130c010b4101211341002102410021060b200641ffff0371410874200241187472200441ff01717221060240024002402013450d0041ea9fc6002105410f21040240024002400240024020060e0700060102030410000b202a410874202b722029411874722105202741087420287220264118747221040c0f0b41d09fc6002105410c21040c0e0b41c79fc6002105410921040c0d0b41b49fc6002105411321040c0c0b41a39fc6002105411121040c0b0b202f41ff01714101470d01200341b8026a200541067610fe0120032802b80221040240024020032802c0022005413f7122024b0d00410021020c010b200420024105746a2202290018210a20022d0017211420022d0016211520022f0014211620022d0013211720022d0012211820022f0010210c20022d000f210d20022d000e210e20022f000c210f20022d000b211020022d000a211120022f0008211220022d000721192002280003210520022d0002211a20022f00002107410121020b024020032802bc02450d002004102a0b20020d010b41dc9fc6002105410e21040c090b2003201c3703c8062003201f3a00c706200320203a00c606200320213b01c406200320223a00c306200320233a00c206200320243b01c006200320253a00bf06200320263a00be06200320273b01bc06200320283a00bb06200320293a00ba062003202a3b01b8062003202b3a00b706200320063600b3062003202c3a00b2062003202d3b01b0062003200a3703d002200320143a00cf02200320153a00ce02200320163b01cc02200320173a00cb02200320183a00ca022003200c3b01c8022003200d3a00c7022003200e3a00c6022003200f3b01c402200320103a00c302200320113a00c202200320123b01c002200320193a00bf02200320053600bb022003201a3a00ba02200320073b01b8022003202e3602c808200320083602c408200320093602c00820034180056a200341b0066a200341b8026a201d200b201b200341c0086a10f5030240024002402003280280054101460d00024020034188056a280200450d00200328028405102a0b41002113410121060c010b4101210620032802840522050d01410021130b41012108410021050c110b20034188056a2802002104024020034190056a280200450d002003418c056a280200102a0b41002113410121080c100b200141386a290300211c200141306a290300211b200141c0006a290300210a200341d8016a41186a200141196a290000370300200341d8016a41106a200141116a290000370300200341d8016a41086a200141096a290000370300200320012900013703d8012002411a6a290100210b200241196a2d0000210c200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d000021092002410e6a2f010021142002410d6a2d000021152002410c6a2d000021162002410a6a2f01002117200241096a2d0000211841042104200241046a2d00002119200241026a2f0100211a2001412c6a2802002107200141286a2802002106200141246a28020021080240024020022d00000d0020022d00014101470d00200241056a2d00002104200241066a2f01002105200241086a2d00002102410021130c010b4101211341002105410021020b200541ffff0371410874200441ff017172200241187472210202402013450d00410f210441ea9fc6002105024002400240024002400240024020020e0700010203040506000b20174108742018722016411874722105201441087420157220094118747221040c050b410e210441dc9fc60021050c040b410c210441d09fc60021050c030b4109210441c79fc60021050c020b4113210441b49fc60021050c010b4111210441a39fc60021050b2006450d072008102a0c070b2003200b370390022003200c3a008f022003200d3a008e022003200e3b018c022003200f3a008b02200320103a008a02200320113b018802200320123a008702200320093a008602200320143b018402200320153a008302200320163a008202200320173b018002200320183a00ff01200320023600fb01200320193a00fa012003201a3b01f801200341c8016a10f603024002400240024020032903c801220b200341c8016a41086a29030022308450450d004200211e4200211d0c010b200341a8016a20304200200a4200109f05200341b8016a200b4200200a4200109f0520034198016a42004200200b4200109f05024020032903b00120032903a00184420052200341c0016a290300221e20032903a8012003290398017c7c221d201e5472450d004127210441a6b5c00021050c020b20032903b801211e0b200341b8026a200341f8016a201e201d410810980220032802b8024101470d0120032802c002210420032802bc0221050b2006450d072008102a0c070b200341b8026a41106a290300211e20032903c002211d20034198026a41186a20303703002003200b3703a8022003200a3703a0022003200a37039802200341b8026a10f703200341b8036a4200370300200341e8036a4200370300200341d8036a4200370300200341c8036a42003703002003428080e983b1de163703b00320034280a094a58d1d3703e00320034280a094a58d1d3703d00320034280a094a58d1d3703c003200342808880808080103703f0032003200341b8026a3602f8032003200341b8026a3602fc03200341b0066a41186a2204200341f8016a41186a290300370300200341b0066a41106a2202200341f8016a41106a290300370300200341b0066a41086a2205200341f8016a41086a290300370300200320032903f8013703b00610a003210a1098012113200341b8046a420037030020034180046a412c6a41d0b5c00036020020034180046a41286a4101360200200341a0046a42003703002003419c046a41f8b9c000360200200341d8046a2005290300370300200341e0046a2002290300370300200341e8046a200429030037030020034200370388042003428080808080013703b004410021122003410036029804200320032903b0063703d0042003200341fc036a3602c8042003200341f8036a3602c4042003200341b8026a3602c004200320133602cc042003200a37038004200320073602880520032006360284052003200836028005200341b0066a20034180046a201b201c20034198026a200341d8016a20034180056a10b50120032802b0064101470d0420022802002207410876212f200341bc066a2802002126200341b0066a41086a280200210420032802b406211a41012112410121190c050b200141216a2d0000210620034180056a41186a200141196a29000037030020034180056a41106a200141116a29000037030020034180056a41086a200141096a290000370300200320012900013703800541ad94c400210541e900210420022d00000d0c200228000121130240200641ff01714101460d00201341ff01714101470d0d20134118762104201341087621052002411a6a290100210a200241196a2d00002106200241186a2d00002113200241166a2f01002108200241156a2d00002109200241146a2d00002114200241126a2f01002115200241116a2d00002116200241106a2d000021172002410e6a2f010021182002410d6a2d0000210c2002410c6a2d0000210d2002410a6a2f0100210e200241096a2d0000210f200241056a2800002102410221100c030b201341ff01714102470d0c2001413a6a290000210a200141396a2d00002106200141386a2d00002113200141366a2f00002108200141356a2d00002109200141346a2d00002114200141326a2f00002115200141316a2d00002116200141306a2d000021172001412e6a2f000021182001412d6a2d0000210c2001412c6a2d0000210d2001412a6a2f0000210e200141296a2d0000210f200141256a2800002102200141246a2d00002104200141226a2f00002105410021100c020b411441011037000b411541011037000b2003200a3703c806200320063a00c706200320133a00c606200320083b01c406200320093a00c306200320143a00c206200320153b01c006200320163a00bf06200320173a00be06200320183b01bc062003200c3a00bb062003200d3a00ba062003200e3b01b8062003200f3a00b706200320023600b306200320043a00b206200320053b01b006200341b8026a20034180056a2010410010c20120032d00b8022102024020032d00c0020d00200341dc026a280200450d00200341d8026a280200102a0b0240200241ff01714101470d00200341b8026a200341b0066a42808086bdbacdd21a420010a502024020032802b8024101470d0020032802c002210420032802bc022105410121060c0c0b200320032903c0023703c0082003200341c8026a2903003703c8082003200341c0086a3602800420034180046a109c010b410021050c080b200341e0066a2802002207410876212f200341b0066a412c6a2802002126200341b0066a41286a2802002104200341d4066a280200211a41012119200741ff01710d00200341b0066a41086a200341a0046a29030037030020034180056a41086a200341bc066a28020036020020032003290398043703b006200320032902b40637038005200341f8096a20034180056a1092014100210741002112410021190b200341f8006a20032903a802200341b0026a29030020032903a002220a4200109f05200329039802200a7d10e50320034188016a200341f8016a2003290378200341f8006a41086a29030010d001200341c0066a201e20034188016a41086a290300220b7d201d200329038801220a54ad7d200b201e7d200a201d54ad7d200a201d58200b201e58200b201e5122021b22051b221c3703002003201d200a7d200a201d7d20051b221b3703b8062003200a201d56200b201e5620021b2202ad220a3703b00641012105024020020d002003201b370380052003201c37038805200320034180056a3602c008200341c0086a109d014100210520032903b006210a0b200341b0066a41086a210202400240200a4200520d002005450d01200320023602800520034180056a109d010c010b200320023602800520034180056a109c010b20032802bc04210520032802b8042106200320032802b40422023602f804200320063602f404200320023602f00420032002200541b0016c6a22163602fc0402402005450d00200341c0086a410172210e200341e7076a210f200341e0076a4102722113200341b0066a41106a2110200341d8066a210d20034194076a2118200341f1066a2108200341d1066a2109200341b0066a4101722117200341a8076a2111034020022d0000210520034180056a200241016a41af01109a051a0240024020054103460d00200320053a00b006201720034180056a41af01109a052106024002400240024020050e03000102000b20032802b806211520032802bc06210620032802b4062105200f201041d800109a051a2003410c3a00c008200e200341e0076a41df00109a051a20052006200341c0086a10cc01410121064100211402402015450d002005102a0b410021150c020b20032f00b106210520032d00b306211420032802b406211520032d00b806210c20032900b906210a20032900c106210b20032900c906211d200341c0086a200d418801109a051a20132006290000370000201341086a200641086a290000370000201341106a200641106a290000370000201341186a200641186a29000037000020034180023b01e007200341c8096a200341c0086a200341e0076a10f401200320032d00d0094102463a00e9082003201d3700e1082003200b3700d9082003200a3700d1082003200c3a00d008200320153602cc08200320143a00cb08200320053b00c908200341043a00c8082003410c3a00c008410021064101211441014100200341c0086a10cc01410021150c010b2011290300210a20032903a007210b200341c8096a41186a200641186a290000370300200341c8096a41106a200641106a290000370300200341c8096a41086a200641086a290000370300200320062900003703c809200341e0076a41186a200941186a290000370300200341e0076a41106a200941106a290000370300200341e0076a41086a200941086a290000370300200320092900003703e007200341c0086a41186a200841186a290000370300200341c0086a41106a200841106a290000370300200341c0086a41086a200841086a290000370300200320082900003703c008200341e8096a41086a201841086a280200360200200320182902003703e809200341c8096a200341e0076a200341c0086a200b200a200341e8096a10f8034101211441012106410121150b024020032d00b006220541014b0d000240024020050e020001000b2014450d03024020032802b806450d0020032802b406102a0b20032d00c0064105490d0320032802e806450d0320032802e406102a0c030b2006450d02200d106a0c020b201520032802980745720d01200328029407102a0c010b2003200241b0016a3602f8040c020b200241b0016a22022016470d000b200320163602f8040b200341f0046a10690240200328028c042202450d0020034190046a280200450d002002102a0b02402019450d0020034180046a411c6a280200210220032802a40421080240024020032802a00422060d00200221050c010b2006211320022105034020052802880b21052013417f6a22130d000b0340200220022f01064102746a41880b6a28020021022006417f6a22060d000b0b200341b0066a411c6a20022f0106360200200341c8066a4100360200200341c4066a2002360200200320083602d006200341003602c006200342003703b806200320053602b406200341003602b006200341b0066a109b010b024020120d0041002105024020040d00410021040c020b201a102a0c010b0240201a0d00410021050c010b0240202f410874200741ff017172450d002026102a0b201a21050b4100210841012106410121130c080b41002113410121062008450d032009102a410121080c070b410121132008450d002009102a0b200341086a200b201b4200201e20051b221e4200109f05200a201e7d10e503200341186a20034180046a2003290308200341086a41086a29030010d001200341c0066a201c200341186a41086a290300220b7d201d2003290318220a54ad7d200b201c7d200a201d54ad7d200a201d58200b201c58200b201c5122051b22061b221b3703002003201d200a7d200a201d7d20061b221e3703b8062003200a201d56200b201c5620051b2205ad220a3703b00641012106024020050d002003201e3703c0082003201b3703c8082003200341c0086a3602e007200341e0076a109d014100210620032903b006210a0b200341b0066a41086a210502400240200a4200520d002006450d01200320053602c008200341c0086a109d010c010b200320053602c008200341c0086a109c010b41002106410021052013450d04200221050c040b41012113410021062008450d002009102a0b410121080c030b0b410121060b41012113410121080b024020012d0000417e6a220241024b0d00024002400240024020020e03000102000b2006450d03200141086a280200450d03200141046a280200102a0c030b20130d010c020b2008450d01200141286a280200450d01200141246a280200102a0c010b2001412c6a280200450d00200141286a280200102a0b2000200436020420002005360200200341800a6a24000be90604057f027e067f027e23004190016b2202240041002103200241003a008801200128020421040240024003402004450d01200241e8006a20036a200128020022052d00003a000020012004417f6a22043602042001200541016a3602002002200341016a22063a0088012006210320064120470d000b200241086a41086a200241e8006a41086a290300370300200241086a41106a200241e8006a41106a290300370300200241086a41186a200241e8006a41186a29030037030020022002290368370308024020044110490d00200541096a2900002107200529000121082001200441706a22093602042001200541116a36020041002103200241003a008801416f210a0340024020092003470d000240200341ff0171450d00200241003a0088010b200042013703000c040b200241e8006a20036a200520036a220641116a2d00003a00002001200420036b416f6a3602042001200641126a3602002002200341016a22063a008801200a417f6a210a2006210320064120470d000b200241286a41086a220b200241e8006a41086a2203290300370300200241286a41106a220c200241e8006a41106a220a290300370300200241286a41186a220d200241e8006a41186a2209290300370300200220022903683703280240200420066b220441706a4110490d002003200241086a41086a290300370300200a200241086a41106a2903003703002009200241086a41186a290300370300200241c8006a41086a220e200b290300370300200241c8006a41106a220b200c290300370300200241c8006a41186a220c200d290300370300200520066a220641116a290000210f200641196a29000021102001200441606a3602042001200641216a3602002002200229030837036820022002290328370348200041206a2010370300200041186a200f370300200041106a200737030020002008370308200041286a2002290368370300200041306a2003290300370300200041386a200a290300370300200041c0006a2009290300370300200041c8006a2002290348370300200041d0006a200e290300370300200041d8006a200b290300370300200041e0006a200c290300370300200042003703000c030b200042013703000c020b200042013703000c010b0240200341ff0171450d00200241003a0088010b200042013703000b20024190016a24000ba80302067f027e230041d0006b2204240002400240411810282205450d00200541002900e3e140370000200541106a41002900f3e140370000200541086a41002900ebe140370000200442988080808003370224200420053602202001200441206a108f012004280228210520042802202106200441306a41186a22074200370300200441306a41106a22084200370300200441306a41086a220942003703002004420037033020062005200441306a1000200441186a2007290300370300200441106a2008290300370300200441086a20092903003703002004200429033037030002402004280224450d002004280220102a0b2004410036023020044120200441306a100621050240024020042802302206417f470d004200210a4200210b0c010b20064110490d02200541086a290000210b2005290000210a2005102a0b2001200a2002200a200a200256200b200356200b2003511b22051b22027d200b2003200b20051b22037d200a200254ad7d1090022000200337030820002002370300200441d0006a24000f0b411841011037000b41c4d1c3004133200441306a419cd9c3001038000be40602067f047e230041e0006b22042400024002400240024002400240411410282205450d00200541002900cfe140370000200541106a41002800dfe140360000200541086a41002900d7e14037000020044294808080c002370234200420053602302001200441306a108f012004280238210520042802302106200441c0006a41186a22074200370300200441c0006a41106a22084200370300200441c0006a41086a220942003703002004420037034020062005200441c0006a1000200441106a41186a2007290300370300200441106a41106a2008290300370300200441106a41086a20092903003703002004200429034037031002402004280234450d002004280230102a0b20044100360240200441106a4120200441c0006a100621050240024020042802402206417f470d004200210a4200210b0c010b20064110490d02200541086a290000210b2005290000210a2005102a0b0240200a2002542205200b200354200b2003511b450d00418991c1002105411521010c060b200441086a20014104200a20027d220a200b20037d2005ad7d220b10bc01200428020822050d04411810282205450d02200541002900e3e140370000200541106a41002900f3e140370000200541086a41002900ebe140370000200442988080808003370234200420053602302001200441306a108f012004280238210520042802302106200441c0006a41186a22074200370300200441c0006a41106a22084200370300200441c0006a41086a220942003703002004420037034020062005200441c0006a1000200441106a41186a2007290300370300200441106a41106a2008290300370300200441106a41086a20092903003703002004200429034037031002402004280234450d002004280230102a0b20044100360240200441106a4120200441c0006a100621050240024020042802402206417f470d004200210c4200210d0c010b20064110490d04200541086a290000210d2005290000210c2005102a0b2001200c20027c2202200d20037c2002200c54ad7c1090022001200a200b108f02410021050c050b411441011037000b41c4d1c3004133200441c0006a419cd9c3001038000b411841011037000b41c4d1c3004133200441c0006a419cd9c3001038000b200428020c21010b2000200136020420002005360200200441e0006a24000bd9140a057f017e067f037e037f017e017f027e077f057e23002204210520044180026b4160712204240002400240200141ffffff3f712001470d0020014105742206417f4c0d0002400240024020060d00410121070c010b200610282207450d010b410021084100210602402001450d002001410574210820072106034020062000290000370000200641186a200041186a290000370000200641106a200041106a290000370000200641086a200041086a290000370000200641206a2106200041206a2100200841606a22080d000b200141057441606a41057641016a2106200121080b20042006360218200420083602142004200736021020072006410041202006676b10c40242002109200441b0016a41086a22004200370300200442003703b00141cf96c300411d200441b0016a1008200441e0016a41086a2000290300370300200420042903b0013703e001200441003602b001200441e0016a4110200441b0016a1006210602400240024020042802b0012200417f460d0020042000360294012004200636029001200441b0016a20044190016a106d20042802b001220a450d0220042902b40121092000450d012006102a0c010b4101210a0b2009422088a72200450d032000410574210b200441e0016a410c6a210c200441e0016a411472210d200441e0016a410872210e200441c0006a410c72210f200a210002400340200041086a2900002110200041106a290000211120002900002112200441206a41186a2213200041186a290000370300200441206a41106a22142011370300200441206a41086a22152010370300200420123703200240024002400240411a10282206450d00200641002900ec96432216370000200641186a41002f0084974322173b0000200641106a41002900fc96432218370000200641086a41002900f4964322193700002004429a808080a0033702b401200420063602b0012004200441b0016a3602e001200441206a200441e0016a10c80120042802b001210720042802b801211a200441e0016a41186a22014200370300200441e0016a41106a22064200370300200441e0016a41086a22084200370300200442003703e0012007201a200441e0016a100020044190016a41186a221b200129030037030020044190016a41106a221c200629030037030020044190016a41086a221a2008290300370300200420042903e00137039001024020042802b401450d0020042802b001102a0b200441003602e00120044190016a4120200441e0016a1006211d20042802e0012207417f460d02200420073602642004201d360260200441e0016a200441e0006a10b30320042802e801221e450d01200441b0016a41086a221f200c41086a290200370300200441b0016a41106a2220200c41106a2802003602002004200c2902003703b00120042903e001211002402007450d00201d102a0b200f20042903b00122113702002006202028020022073602002008201f2903002212370300200f41086a2012370200200f41106a2007360200200420113703e001200420103703400c030b411a41011037000b41c4d1c3004133200441d0016a419cd9c3001038000b2006200441b0016a41106a2802003602002008200441b0016a41086a290300370300200420042903b0013703e0014100211e0b2004201e360248200441003602e80120042903582112200420042903f801222137035820042903502122200420042903f001222337035020042903402124200420042903e001221137034020042903482110200420042903e80122253703482025a72107024002402010a7221d0d002025211020232122202121120c010b200420243703e001200420103703e801200420223703f001200420123703f8012004201d2022a74105746a3602bc012004201d3602b80120042010422088a73602b4012004201d3602b0012004200441106a3602c00120044190016a200441b0016a108401200e41086a201a280200360200200e20042903900137020020042022422088a7221d2012422088a74105746a3602bc012004201d3602b80120042012a73602b4012004201d3602b0012004200441106a3602c00120044190016a200441b0016a108401200d41086a201a280200360200200d20042903900137020020042903e801211020042903e001211120042903f801211220042903f001212202402007450d002021a7211d02402025422088a7450d002007102a0b201d450d002023422088a7102a0b200420113703402004201037034820042022370350200420123703582010a721070b2004201137036020042010370368200420223703702004201237037802400240024020070d00200441b0016a41186a2013290300370300200441b0016a41106a2014290300370300200441b0016a41086a2015290300370300200420042903203703b001411a10282207450d0220072016370000200741186a20173b0000200741106a2018370000200741086a20193700002004429a808080a0033702d401200420073602d0012004200441d0016a3602e001200441b0016a200441e0016a10c80120042802d001210720042802d801211d200142003703002006420037030020084200370300200442003703e0012007201d200441e0016a1000201b2001290300370300201c2006290300370300201a2008290300370300200420042903e00137039001024020042802d401450d0020042802d001102a0b20044190016a412010090c010b200441b0016a41186a2013290300370300200441b0016a41106a2014290300370300200441b0016a41086a2015290300370300200420042903203703b001411a10282207450d0320072016370000200741186a20173b0000200741106a2018370000200741086a20193700002004429a808080a0033702d401200420073602d0012004200441d0016a3602e001200441b0016a200441e0016a10c80120042802d001210720042802d801211d200142003703002006420037030020084200370300200442003703e0012007201d200441e0016a1000201b2001290300370300201c2006290300370300201a2008290300370300200420042903e00137039001024020042802d401450d0020042802d001102a0b200441203602e401200420044190016a3602e001200441e0006a200441e0016a10b4030b02402010a72206450d002012a7210802402010422088a7450d002006102a0b2008450d002022422088a7102a0b200041206a2100200b41606a220b0d010c060b0b411a41011037000b411a41011037000b41c4d1c3004133200441d0016a419cd9c3001038000b200641011037000b1036000b02402009a7450d00200a102a0b200441003602e801200442013703e0012003200441e0016a10b40102402003450d002003410574210003402002200441e0016a108f01200241206a2102200041606a22000d000b0b20042802e401210620042802e801210820042802e0012100200441b0016a41086a22014200370300200442003703b0014196f0c200411b200441b0016a1008200441e0016a41086a2001290300370300200420042903b0013703e001200441e0016a411020002008100702402006450d002000102a0b02402004280214450d002004280210102a0b200524000bb80901177f230041206b220424002002410020031b21052000410020011b2106200241206a200220031b2107200041206a200020011b2108200020014105746a2109200220034105746a210a4100210b4100210c4101210d4100210e4100210f41012110024002400340200b4101742111200b4105742112024002400240024002400340024020050d0020072113200d2114200c2115200b21160c040b2005210220072103200d2114200c2115200b2116201221172011211802400340024002402006450d0020022006460d06200220064120109c052213450d062013417f4c0d01200321072014210d2015210c2016210b200221050c080b200441186a2203200541186a290000370300200441106a2216200541106a290000370300200441086a2206200541086a290000370300200420052900003703000240200b200c470d00200b41016a2202200b490d0c200b41017422172002201720024b1b220c41ffffff3f71200c470d0c200c41057422024100480d0c02400240200b0d0020021028210d0c010b200d200b4105742002102c210d0b200d450d030b200d200b4105746a22022004290300370000200241186a2003290300370000200241106a2016290300370000200241086a200629030037000041002106410020072007200a4622021b2105201141026a2111201241206a2112200b41016a210b2007200741206a20021b21070c030b200441186a2213200241186a290000370300200441106a2219200241106a290000370300200441086a221a200241086a29000037030020042002290000370300024020162015470d00201641016a22022016490d0b20182002201820024b1b221541ffffff3f712015470d0b201541057422024100480d0b0240024020160d002002102821140c010b201420172002102c21140b2014450d040b201420176a22022004290300370000200241186a2013290300370000200241106a2019290300370000200241086a201a290300370000410020032003200a4622131b2102201841026a2118201741206a2117201641016a21162003200341206a20131b221321032002450d050c000b0b0b200241011037000b200241011037000b2014210d2015210c2016210b2003200341206a2003200a4622021b210741002008200820094622161b21064100200320021b21052008200841206a20161b21080c030b410021052006450d01201321072014210d2015210c2016210b0b200441186a2203200641186a290000370300200441106a2216200641106a290000370300200441086a2217200641086a290000370300200420062900003703000240200e200f470d00200e41016a2202200e490d04200e41017422062002200620024b1b220f41ffffff3f71200f470d04200f41057422024100480d0402400240200e0d002002102821100c010b2010200e4105742002102c21100b2010450d030b2010200e4105746a22022004290300370000200241186a2003290300370000200241106a2016290300370000200241086a201729030037000041002008200820094622021b2106200e41016a210e2008200841206a20021b21080c010b0b201420162000200110840202402015450d002014102a0b0240200f450d002010102a0b200441206a24000f0b200241011037000b1031000ba8ca0106017f027e057f017e217f0b7e230041e0046b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e0b000102030405060c0d0e0f000b20034184036a4101360200200342013702f402200341ccd1c5003602f002200341043602b404200341c4d1c5003602b0042003200341b0046a36028003200341f0026a41a0f8c100103e000b200141206a2903002104200141186a29030021052001410c6a2802002106200141086a2802002107200141146a2802002108200141106a28020021092001280204210a2002411a6a290100210b200241196a2d0000210c200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d000021132002410e6a2f010021142002410d6a2d000021152002410c6a2d000021162002410a6a2f01002117200241096a2d0000211841042119200241046a2d0000211a200241026a2f0100211b0240024020022d00000d0020022d00014101470d00200241056a2d00002119200241066a2f0100211c200241086a2d000021024100211d0c010b4101211d410021024100211c0b2003200b370380012003200c3a007f2003200d3a007e2003200e3b017c2003200f3a007b200320103a007a200320113b0178200320123a0077200320133a0076200320143b0174200320153a0073200320163a0072200320173b0170200320183a006f2003201a3a006a2003201b3b01682003201c41ffff0371410874200241187472201941ff017172221c36006b201d450d0e410f210241ea9fc60021190240024002400240024002400240201c0e0700010203040506000b200328006f2119200328007321020c050b410e210241dc9fc60021190c040b410c210241d09fc60021190c030b4109210241c79fc60021190c020b4113210241b49fc60021190c010b4111210241a39fc60021190b4100210c4101211d2007450d43200a102a0c430b200141206a2903002104200141186a29030021052001410c6a2802002106200141086a280200211b200141146a2802002108200141106a28020021092001280204210a2002411a6a290100210b200241196a2d0000210c200241186a2d00002107200241166a2f0100210d200241156a2d0000210e200241146a2d0000210f200241126a2f01002110200241116a2d00002111200241106a2d000021122002410e6a2f010021132002410d6a2d000021142002410c6a2d000021152002410a6a2f01002116200241096a2d0000211741042119200241046a2d00002118200241026a2f0100211a0240024020022d00000d0020022d00014101470d00200241056a2d00002119200241066a2f0100211c200241086a2d000021024100211d0c010b4101211d410021024100211c0b2003200b3703e8022003200c3a00e702200320073a00e6022003200d3b01e4022003200e3a00e3022003200f3a00e202200320103b01e002200320113a00df02200320123a00de02200320133b01dc02200320143a00db02200320153a00da02200320163b01d802200320173a00d702200320183a00d2022003201a3b01d0022003201c41ffff0371410874200241187472201941ff017172221c3600d3020240201d450d00410f210241ea9fc6002119024002400240024002400240201c0e0700010203040548000b20032800d702211920032800db0221020c470b410e210241dc9fc60021190c460b410c210241d09fc60021190c450b4109210241c79fc60021190c440b4113210241b49fc60021190c430b4111210241a39fc60021190c420b20034188046a41186a200341d0026a41186a29030037030020034188046a41106a200341d0026a41106a29030037030020034188046a41086a200341d0026a41086a290300370300200320032903d00237038804410d10282202450d0e200241002900b0f841370000200241056a41002900b5f8413700002003428d808080d0013702f402200320023602f00220034188046a200341f0026a108f0120032802f802210220032802f0022119200341b0046a41186a221c4200370300200341b0046a41106a221d4200370300200341b0046a41086a220c4200370300200342003703b00420192002200341b0046a1000200341e8006a41186a201c290300370300200341e8006a41106a201d290300370300200341e8006a41086a200c290300370300200320032903b004370368024020032802f402450d0020032802f002102a0b200341003602f002200341e8006a4120200341f0026a1006211c20032802f002221d417f460d3f201c450d3f41002102200341003a009003024002400340201d2002460d01200341f0026a20026a201c20026a2d00003a00002003200241016a22193a0090032019210220194120470d000b200341b0046a41186a2202200341f0026a41186a290300370300200341b0046a41106a200341f0026a41106a290300370300200341b0046a41086a200341f0026a41086a290300370300200320032903f0023703b004201941ff0171411f4d0d01200341e0036a41086a2219200341c3046a290000370300200341e0036a410d6a220c2002290000370000200341e8016a41026a220720032d00b2043a0000200341a8026a41086a2019290300370300200341a8026a410d6a220d200c290000370000200320032f01b0043b01e801200320032900bb043703a80220032800b304211920032800b70421020240201d450d00201c102a0b200341b0046a41026a20072d00003a0000200341f0026a41086a200341a8026a41086a290300370300200341f0026a410d6a200d290000370000200320032f01e8013b01b004200320032903a8023703f0024101211c0c420b200241ff0171450d00200341003a0090030b41c4d1c3004133200341d8046a419cd9c3001038000b200141216a290000210b200141206a2d000021072001411d6a2f0000210d2001411c6a2d0000210e200141196a2f0000210f200141186a2d00002110200141156a2f00002111200141146a2d00002112200141116a2f00002113200141106a2d000021142001410c6a280200211c200141086a2d0000211e200141306a280200211f2001412c6a280200212020012d001f211520012d001b211620012d0017211720012d0013211820012d000b211a20012f0009211b200128020421212002411a6a2901002104200241196a2d00002122200241186a2d00002123200241166a2f01002124200241156a2d00002125200241146a2d00002126200241126a2f01002127200241116a2d00002128200241106a2d0000210a2002410e6a2f010021062002410d6a2d000021082002410c6a2d000021092002410a6a2f01002129200241096a2d0000212a41042119200241046a2d0000212b200241026a2f0100212c0240024020022d00000d0020022d00014101470d00200241056a2d00002119200241066a2f0100211d200241086a2d000021024100210c0c010b4101210c410021024100211d0b201d41ffff0371410874200241187472201941ff017172211d0240200c450d00410f210241ea9fc60021190240201d0e0700050607083e3f000b2029410874202a7220094118747221192006410874200872200a4118747221020c3e0b200320043703a002200320223a009f02200320233a009e02200320243b019c02200320253a009b02200320263a009a02200320273b019802200320283a0097022003200a3a009602200320063b019402200320083a009302200320093a009202200320293b0190022003202a3a008f022003201d36008b022003202b3a008a022003202c3b0188020240201e41ff01714101470d00200341f0026a201c41067610fe0120032802f00221190240024020032802f802201c413f7122024b0d00410021020c010b201920024105746a2202290018210b20022d0017210720022d0016211520022f0014210d20022d0013210e20022d0012211620022f0010210f20022d000f211020022d000e211720022f000c211120022d000b211220022d000a211820022f0008211320022d000721142002280003211c20022d0002211a20022f0000211b410121020b024020032802f402450d002019102a0b2002450d3c0b2003200b3703c002200320073a00bf02200320153a00be022003200d3b01bc022003200e3a00bb02200320163a00ba022003200f3b01b802200320103a00b702200320173a00b602200320113b01b402200320123a00b302200320183a00b202200320133b01b002200320143a00af022003201c3600ab022003201a3a00aa022003201b3b01a802200341b0046a41086a22024200370300200342003703b00441b8a2c1004114200341b0046a1008200341e8006a41086a2002290300370300200320032903b0043703680240200341e8006a41104101410041001003417f460d0041bdf8c1002119412621020c3e0b411310282202450d0e200241002900c2a3413700002002410f6a41002800d1a341360000200241086a41002900caa34137000020034293808080b0023702f402200320023602f00220034188026a200341f0026a108f0120032802f802210220032802f0022119200341b0046a41186a221c4200370300200341b0046a41106a221d4200370300200341b0046a41086a220c4200370300200342003703b00420192002200341b0046a1000200341d0026a41186a201c290300370300200341d0026a41106a201d290300370300200341d0026a41086a200c290300370300200320032903b0043703d002024020032802f402450d0020032802f002102a0b200341003602f002200341d0026a4120200341f0026a1006210220032802f0022219417f460d102002450d10200320193602b404200320023602b004200341f0026a200341b0046a10c20220032903f0024201510d0f02402019450d002002102a0b411310282202450d11200241002900c2a3413700002002410f6a41002800d1a341360000200241086a41002900caa34137000020034293808080b0023702f402200320023602f002200341a8026a200341f0026a108f0120032802f802210220032802f0022119200341b0046a41186a221c4200370300200341b0046a41106a221d4200370300200341b0046a41086a220c4200370300200342003703b00420192002200341b0046a1000200341d0026a41186a201c290300370300200341d0026a41106a201d290300370300200341d0026a41086a200c290300370300200320032903b0043703d002024020032802f402450d0020032802f002102a0b200341003602f002200341d0026a4120200341f0026a1006210220032802f0022219417f460d132002450d13200320193602b404200320023602b004200341f0026a200341b0046a10c20220032903f0024201510d1220034198036a280200211002402019450d002002102a0b200341b0046a41086a22024200370300200342003703b004418891c6004111200341b0046a1008200341e8006a41086a2002290300370300200320032903b00437036841002119200341003602f002200341e8006a4110200341f0026a10062102024020032802f002221c417f460d002002450d00201c4104490d15200228000021192002102a0b02402019201f460d0041e3f8c1002119411621020c3e0b0240201041016a201f490d0041f9f8c1002119411f21020c3e0b410e10282202450d15200241066a41002900b2a441370000200241002900aca4413700002002410e411c102c2202450d162002202141067636000e200341b0046a41186a22194200370300200341b0046a41106a221c4200370300200341b0046a41086a221d4200370300200342003703b00420024112200341b0046a1000200341d0026a41186a2019290300370300200341d0026a41106a201c290300370300200341d0026a41086a201d290300370300200320032903b0043703d0022002102a200341003602f002200341d0026a4120200341f0026a1006210220032802f0022219417f460d342002450d34200320193602b404200320023602b004200341f0026a200341b0046a107420032802f002220c450d172021413f71211c20032902f402210b02402019450d002002102a0b4100211d201c200b422088a74f0d32200c201c41216c6a22192d00004101470d32200341a6016a201941036a2d00003a000020034188016a41086a201941146a29000037030020034195016a201941196a290000370000200320192f00013b01a40120032019410c6a29000037038801201941086a2800002102201941046a28000021194101211d0c330b2001280204211b2002411a6a290100210b200241196a2d0000210c200241186a2d00002107200241166a2f0100210d200241156a2d0000210e200241146a2d0000210f200241126a2f01002110200241116a2d00002111200241106a2d000021122002410e6a2f010021132002410d6a2d000021142002410c6a2d000021152002410a6a2f01002116200241096a2d0000211741042119200241046a2d00002118200241026a2f0100211a0240024020022d00000d0020022d00014101470d00200241056a2d00002119200241066a2f0100211c200241086a2d000021024100211d0c010b4101211d410021024100211c0b2003200b3703e8022003200c3a00e702200320073a00e6022003200d3b01e4022003200e3a00e3022003200f3a00e202200320103b01e002200320113a00df02200320123a00de02200320133b01dc02200320143a00db02200320153a00da02200320163b01d802200320173a00d702200320183a00d2022003201a3b01d0022003201c41ffff0371410874200241187472201941ff017172221c3600d3020240201d450d00410f210241ea9fc60021190240201c0e0700040506073d3e000b20032800d702211920032800db0221020c3d0b20034188046a41186a200341d0026a41186a29030037030020034188046a41106a200341d0026a41106a29030037030020034188046a41086a200341d0026a41086a290300370300200320032903d00237038804200341b0046a41086a22024200370300200342003703b00441b8a2c1004114200341b0046a1008200341e8006a41086a2002290300370300200320032903b0043703680240200341e8006a41104101410041001003417f460d0041d9fac1002119411e21020c3d0b411310282202450d17200241002900c2a3413700002002410f6a41002800d1a341360000200241086a41002900caa34137000020034293808080b0023702f402200320023602f00220034188046a200341f0026a108f0120032802f802211920032802f002211c41182102200341b0046a41186a221d4200370300200341b0046a41106a220c4200370300200341b0046a41086a22074200370300200342003703b004201c2019200341b0046a1000200341d0026a41186a201d290300370300200341d0026a41106a200c290300370300200341d0026a41086a2007290300370300200320032903b0043703d002024020032802f402450d0020032802f002102a0b0240200341d0026a41204101410041001003417f470d0041f7fac10021190c3d0b410e10282202450d18200241066a41002900b2a441370000200241002900aca4413700002002410e411c102c2219450d192019201b41067636000e41182102200341b0046a41186a221c4200370300200341b0046a41106a221d4200370300200341b0046a41086a220c4200370300200342003703b00420194112200341b0046a1000200341e8006a41186a201c290300370300200341e8006a41106a201d290300370300200341e8006a41086a200c290300370300200320032903b0043703682019102a200341003602b004200341e8006a4120200341b0046a1006211c20032802b0042219417f460d1b200320193602e4032003201c3602e003200341b0046a200341e0036a107420032802b004221d450d1a201b413f71210220032902b404210b02402019450d00201c102a0b4100211c2002200b422088a74f0d2e201d200241216c6a22192d00004101470d2e20034186026a201941036a2d00003a0000200341e8016a41086a201941146a290000370300200341f5016a201941196a290000370000200320192f00013b01840220032019410c6a2900003703e801201941086a2800002102201941046a28000021194101211c0c2f0b2001280204210c2002411a6a290100210b200241196a2d00002112200241186a2d00002113200241166a2f01002114200241156a2d00002115200241146a2d00002116200241126a2f01002117200241116a2d00002118200241106a2d000021072002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d0000211141042119200241046a2d0000211a200241026a2f0100211b0240024020022d00000d0020022d00014101470d00200241056a2d00002119200241066a2f0100211c200241086a2d000021024100211d0c010b4101211d4100211c410021020b201c41ffff0371410874201941ff017172200241187472211c0240201d450d00410f210241ea9fc60021190240201c0e0700030405063c3d000b2010410874201172200f411874722119200d410874200e7220074118747221020c3c0b2003200b3703a004200320123a009f04200320133a009e04200320143b019c04200320153a009b04200320163a009a04200320173b019804200320183a009704200320073a0096042003200d3b0194042003200e3a0093042003200f3a009204200320103b019004200320113a008f042003201c36008b042003201a3a008a042003201b3b018804411610282202450d1b20024100290093a2413700002002410e6a41002900a1a241370000200241086a410029009ba24137000020034296808080e0023702f402200320023602f00220034188046a200341f0026a108f0120032802f802210220032802f0022119200341b0046a41186a221c4200370300200341b0046a41106a221d4200370300200341b0046a41086a22074200370300200342003703b00420192002200341b0046a1000200341e8006a41186a201c290300370300200341e8006a41106a201d290300370300200341e8006a41086a2007290300370300200320032903b004370368024020032802f402450d0020032802f002102a0b4101211d0240200341e8006a41204101410041001003417f460d00418ffbc1002119411e21024101210c0c400b200341b0046a41086a22024200370300200342003703b00441bf91c6004116200341b0046a1008200341e8006a41086a2002290300370300200320032903b0043703684100211c200341003602f002200341e8006a4110200341f0026a10062102024020032802f0022219417f460d002002450d0020194104490d1d2002280000211c2002102a0b200341b0046a41086a22024200370300200342003703b00441b0a3c1004112200341b0046a1008200341e8006a41086a2002290300370300200320032903b004370368200341003602f002200341e8006a4110200341f0026a100621020240024020032802f0022219417f460d002002450d00200320193602b404200320023602b004200341f0026a200341b0046a106d20032802f0022207450d1f20032902f402210b02402019450d002002102a0b200b422088a7210d0c010b4100210d4200210b410121070b0240024002400240201c200c470d00200d200c460d010b41adfbc100211941162102200d200c4d0d01200c200b422088a7220d4f0d2120034188036a420037030020034180036a4200370300200341f8026a4200370300200342003703f0022007200c4105746a220d200341f0026a460d00200d200341f0026a4120109c050d010b200341306a20034188046a4280809aa6eaafe30142001083022003280230450d0141c3fbc1002119411e21020b0240200ba7450d002007102a0b4101210c0c400b200341b0046a41086a22024200370300200342003703b004418891c6004111200341b0046a1008200341e8006a41086a2002290300370300200320032903b00437036841002119200341003602f002200341e8006a4110200341f0026a10062102024020032802f002221d417f460d002002450d00201d4104490d20200228000021192002102a0b411610282202450d2020024100290093a2413700002002410e6a41002900a1a241370000200241086a410029009ba24137000020034296808080e0023702f402200320023602f00220034188046a200341f0026a108f0120032802f802210220032802f002211d200341b0046a41186a220d4200370300200341b0046a41106a220e4200370300200341b0046a41086a220f4200370300200342003703b004201d2002200341b0046a1000200341e8006a41186a200d290300370300200341e8006a41106a200e290300370300200341e8006a41086a200f290300370300200320032903b004370368024020032802f402450d0020032802f002102a0b410810282202450d212002200c36000420022019360000200341e8006a41202002410810072002102a200ba7211d02400240200c200b422088a72202460d00200341d0026a41186a220d20034188046a41186a290300370300200341d0026a41106a220e20034188046a41106a290300370300200341d0026a41086a20034188046a41086a29030037030020032003290388043703d002200c20024f0d242007200c4105746a221920032903d002370000201941186a200d290300370000201941106a200e290300370000201941086a200341d0026a41086a2903003700000c010b200341d0026a41186a221920034188046a41186a290300370300200341d0026a41106a220d20034188046a41106a290300370300200341d0026a41086a20034188046a41086a29030037030020032003290388043703d0020240200c201d470d00200c41016a2202200c490d38200c410174221d2002201d20024b1b221d41ffffff3f71201d470d38201d41057422024100480d3802400240200c0d002002102821070c010b2007200c4105742002102c21070b2007450d25200b422088a7210c0b2007200c4105746a220220032903d002370000200241186a2019290300370000200241106a200d290300370000200241086a200341d0026a41086a290300370000200c41016a21020b200341b0046a41086a22194200370300200342003703b00441b0a3c1004112200341b0046a1008200341e8006a41086a2019290300370300200320032903b004370368200341003602f802200342013703f0022002200341f0026a10b40102402002450d00200241057421192007210203402002200341f0026a108f01200241206a2102201941606a22190d000b0b20032802f4022102200341e8006a411020032802f002221920032802f802100702402002450d002019102a0b0240201d450d002007102a0b200341b0046a41086a22024200370300200342003703b00441bf91c6004116200341b0046a1008200341e8006a41086a2002290300370300200320032903b0043703684101211d2003201c41016a3602f002200341e8006a4110200341f0026a41041007410021194101210c0c3f0b200141386a2903002104200141306a29030021052001411d6a290000210b2001411c6a2d00002112200141196a2f00002113200141186a2d00002114200141156a2f00002115200141146a2d00002116200141116a2f00002117200141106a2d000021182001410d6a2f0000211a2001410c6a2d0000211b200141086a280200210c200141286a280200211f20012d001b210a20012d0017210620012d0013210820012d000f210920012d0007212920012f0005212a20012d0004212c2002411a6a290100212d200241196a2d0000211e200241186a2d00002122200241166a2f01002123200241156a2d00002124200241146a2d00002125200241126a2f01002126200241116a2d00002127200241106a2d000021072002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d0000211141042119200241046a2d00002128200241026a2f0100212b0240024020022d00000d0020022d00014101470d00200241056a2d00002119200241066a2f0100211c200241086a2d000021024100211d0c010b4101211d4100211c410021020b201c41ffff0371410874201941ff017172200241187472211c201d450d04410f210241ea9fc60021190240201c0e0700010203043a3b000b2010410874201172200f411874722119200d410874200e7220074118747221020c3a0b410e210241dc9fc60021190c390b410c210241d09fc60021190c380b4109210241c79fc60021190c370b4113210241b49fc60021190c360b2003202d3703f8032003201e3a00f703200320223a00f603200320233b01f403200320243a00f303200320253a00f203200320263b01f003200320273a00ef03200320073a00ee032003200d3b01ec032003200e3a00eb032003200f3a00ea03200320103b01e803200320113a00e7032003201c3600e303200320283a00e2032003202b3b01e0030240200520048450450d00419ffcc100211941d00021020c360b02400240202c41ff01714101470d00200341f0026a200c41067610fe0120032802f00221190240024020032802f802200c413f7122024b0d00410021020c010b201920024105746a2202290018210b20022d0017211220022d0016210a20022f0014211320022d0013211420022d0012210620022f0010211520022d000f211620022d000e210820022f000c211720022d000b211820022d000a210920022f0008211a20022d0007211b2002280003210c20022d0002212920022f0000212a410121020b024020032802f402450d002019102a0b20020d00410121020c010b410021020b2003200b3701e802200320123a00e7022003200a3a00e602200320133b01e402200320143a00e302200320063a00e202200320153b01e002200320163a00df02200320083a00de02200320173b01dc02200320183a00db02200320093a00da022003201a3b01d8022003201b3a00d7022003200c3600d302200320293a00d2022003202a3b01d00220020d3320034188046a41186a200341d0026a41186a29010037030020034188046a41106a200341d0026a41106a29010037030020034188046a41086a200341d0026a41086a290100370300200320032901d00237038804200341b0046a41086a22024200370300200342003703b004418891c6004111200341b0046a1008200341e8006a41086a2002290300370300200320032903b00437036841002119200341003602f002200341e8006a4110200341f0026a10062102024020032802f002221c417f460d002002450d00201c4104490d1f200228000021192002102a0b02402019201f460d00418efcc1002119411121020c360b200341b0046a41086a22024200370300200342003703b00441b8a2c1004114200341b0046a1008200341e8006a41086a22192002290300370300200320032903b004370368200341f0026a200341e8006a10be02024020032802f802220d0d0041e1fbc1002119412d21020c360b20032902fc02212e20024200370300200342003703b00441ad91c6004112200341b0046a100820192002290300370300200320032903b00437036841002119200341003602f002200341e8006a4110200341f0026a10062102024020032802f002221c417f460d002002450d00201c4104490d20200228000021192002102a0b200341d8006a2019ad42004280a094a58d1d4200109f05200341d8006a41086a290300210b411410282202450d202003290358212f200241002900cfe140370000200241106a41002800dfe140360000200241086a41002900d7e14037000020034294808080c0023702d402200320023602d002200341e0036a200341d0026a108f0120032802d802210220032802d0022119200341b0046a41186a221c4200370300200341b0046a41106a221d4200370300200341b0046a41086a220c4200370300200342003703b00420192002200341b0046a1000200341f0026a41186a201c290300370300200341f0026a41106a201d290300370300200341f0026a41086a200c290300370300200320032903b0043703f002024020032802d402450d0020032802d002102a0b200341003602b004200341f0026a4120200341b0046a1006210220032802b0042219417f460d252002450d2520194110490d21200241086a290000212d200229000021302002102a0c260b4101211d20022d000120022d0000720d2320012802042102200341b0046a41086a22194200370300200342003703b00441f490c6004114200341b0046a1008200341e8006a41086a2019290300370300200320032903b004370368200320023602f002200341e8006a4110200341f0026a41041007410021194101210c0c380b024020022d000120022d000072450d0041a39fc6002119411121020c340b200141086a2802002119024020012d00044101460d00200141106a2d0000211c200141146a2d0000211d200141186a2d0000210c2001411c6a2d0000210720012f0005210220012d0007210d20012d000c210e20012f000d210f20012d000f211020012f0011211120012d0013211220012f0015211320012d0017211420012f0019211520012d001b2116200129001d210b0c210b200341f0026a201941067610fe0120032802f00221170240024020032802f8022019413f7122024b0d00410021180c010b201720024105746a2202290018210b20022d0017210720022d0016211620022f0014211520022d0013210c20022d0012211420022f0010211320022d000f211d20022d000e211220022f000c211120022d000b211c20022d000a211020022f0008210f20022d0007210e2002280003211920022d0002210d20022f00002102410121180b024020032802f402450d002017102a0b20180d20410121170c210b4101211d20022d000120022d0000720d2120012802042102200341b0046a41086a22194200370300200342003703b00441f0a2c100411c200341b0046a1008200341e8006a41086a2019290300370300200320032903b004370368200320023602f002200341e8006a4110200341f0026a41041007410021194101210c0c360b4101211d20022d000120022d0000720d2020012802042102200341b0046a41086a22194200370300200342003703b00441dca2c1004114200341b0046a1008200341e8006a41086a2019290300370300200320032903b004370368200320023602f002200341e8006a4110200341f0026a41041007410021194101210c0c350b200341d0026a41186a200341e8006a41186a290300220b370300200341d0026a41106a200341e8006a41106a290300222d370300200341d0026a41086a200341e8006a41086a290300222e37030020032003290368222f3703d002200341f0026a41186a200b370300200341f0026a41106a202d370300200341f0026a41086a202e3703002003202f3703f002200320063602b804200320073602b4042003200a3602b0042003200341f0026a200341b0046a200920082005200410d40220032802042102200328020021194100210c4101211d0c340b410d41011037000b411341011037000b41c4d1c3004133200341d8046a419cd9c3001038000b41c4f9c1002119411821020c2c0b411341011037000b41c4d1c3004133200341d8046a419cd9c3001038000b4198f9c1002119412c21020c290b41c4d1c3004133200341d8046a419cd9c3001038000b410e41011037000b411c41011037000b41c4d1c3004133200341d8046a419cd9c3001038000b411341011037000b410e41011037000b411c41011037000b41c4d1c3004133200341d8046a419cd9c3001038000b4101211c41a8fac10021190c140b411641011037000b41c4d1c3004133200341d8046a419cd9c3001038000b41c4d1c3004133200341d8046a419cd9c3001038000b41cca2c100200c200d1034000b41c4d1c3004133200341d8046a419cd9c3001038000b411641011037000b410841011037000b41a0a3c100200c20021034000b200241011037000b41c4d1c3004133200341d8046a419cd9c3001038000b41c4d1c3004133200341d8046a419cd9c3001038000b411441011037000b41c4d1c3004133200341d8046a419cd9c3001038000b410021170b2003200b37018001200320073a007f200320163a007e200320153b017c2003200c3a007b200320143a007a200320133b01782003201d3a0077200320123a0076200320113b01742003201c3a0073200320103a00722003200f3b01702003200e3a006f2003201936006b2003200d3a006a200320023b016820170d0f200341d0026a41186a200341e8006a41186a290100370300200341d0026a41106a200341e8006a41106a290100370300200341d0026a41086a200341e8006a41086a2202290100370300200320032901683703d002200341b0046a41086a22194200370300200342003703b00441a9a2c100410f200341b0046a100820022019290300370300200320032903b004370368200341003602f002200341e8006a4110200341f0026a10062102024002400240024002400240024020032802f0022219417f460d002002450d00200320193602b404200320023602b004200341f0026a200341b0046a107d20032802f002221c450d0220032902f402210b2019450d012002102a0c010b4200210b4104211c0b200ba72111024002400240200b422088a72207450d00201c200741246c221d6a210c410021190340200341f0026a41206a201c20196a220241206a280200360200200341f0026a41186a200241186a290200370300200341f0026a41106a200241106a290200370300200341f0026a41086a200241086a290200370300200320022902003703f002200341f0026a200341d0026a4120109c050d02201d201941246a2219470d000b0b4104210f4100210d024020110d00410021100c020b201c102a410021100c010b20034188046a41086a200341f0026a41086a290300220b370300200341e0036a41086a221d200b370300200341e0036a41106a220d200341f0026a41106a290300370300200341e0036a41186a220e200341f0026a41186a290300370300200341e0036a41206a2210200341f0026a41206a280200360200200320032903f002220b370388042003200b3703e00341241028220f450d02200f20032903e003370200200f41206a2010280200360200200f41186a200e290300370200200f41106a200d290300370200200f41086a201d29030037020002400240200741246c415c6a2019470d004101210d410121100c010b200241246a2113200c415c6a21144101210d4101211003402013210202400340200341f0026a41206a2219200241206a280200360200200341f0026a41186a221d200241186a290200370300200341f0026a41106a2207200241106a290200370300200341f0026a41086a220e200241086a290200370300200320022902003703f002200341f0026a200341d0026a4120109c050d01200c200241246a2202470d000c030b0b200341b0046a41206a2019280200221236020020034188046a41086a200e290300220b37030020034188046a41106a2007290300220437030020034188046a41186a201d290300220537030020034188046a41206a2012360200200320032903f002222d3703880420192012360200201d200537030020072004370300200e200b3703002003202d3703f00202402010200d470d00200d41016a2210200d490d15200d41017422122010201220104b1b2210ad42247e220b422088a70d15200ba722124100480d1502400240200d0d0020121028210f0c010b200f200d41246c2012102c210f0b200f450d060b200241246a2113200f200d41246c6a221220032903f002370200201241206a2019280200360200201241186a201d290300370200201241106a2007290300370200201241086a200e290300370200200d41016a210d20142002470d000b0b2011450d00201c102a0b200341b0046a41086a22024200370300200342003703b00441a9a2c100410f200341b0046a1008200341e8006a41086a2002290300370300200320032903b004370368200341003602f802200342013703f002200d200341f0026a10b4010240200d450d00200f200d41246c6a2107200f211903402019200341f0026a108f01201941206a280200211d0240024020032802f402221c20032802f80222026b4104490d0020032802f002211c0c010b200241046a220c2002490d14201c4101742202200c2002200c4b1b22024100480d1402400240201c0d0020021028211c0c010b20032802f002201c2002102c211c0b201c450d06200320023602f4022003201c3602f00220032802f80221020b2003200241046a3602f802201c20026a201d3600002007201941246a2219470d000b0b20032802f4022102200341e8006a411020032802f002221920032802f802100702402002450d002019102a0b200d41246c220241246d210c4100211c0240024020020d00410121074100210c0c010b200c41ffffff3f71200c470d12200c41057422024100480d12200210282207450d050b0240200d450d00200d41246c211d4100211c20072102200f21190340201941086a290000210b201941106a290000210420192900002105200241186a201941186a290000370000200241106a2004370000200241086a200b37000020022005370000201c41016a211c200241206a2102201941246a2119201d415c6a221d0d000b0b02402010450d00200f102a0b200341f0026a41186a200341d0026a41186a290300370300200341f0026a41106a200341d0026a41106a290300370300200341f0026a41086a200341d0026a41086a290300370300200320032903d0023703f002410021192007201c41004120201c676b10c4024101211d200341f0026a41012007201c10c5020240200c450d002007102a0b4101210c0c1a0b41c4d1c3004133200341d8046a419cd9c3001038000b412441041037000b201241041037000b200241011037000b200241011037000b41a39fc6002119411121024101210c0c140b420021304200212d0b024002402030202f54202d200b54202d200b511b450d0041a0fdc1002119412e21020c010b200341b0046a41086a22024200370300200342003703b004418ca3c1004113200341b0046a1008200341e8006a41086a2002290300370300200320032903b004370368200341003602f002200341e8006a4110200341f0026a1006210202400240024002400240024002400240024020032802f0022219417f460d002002450d00200320193602b404200320023602b004200341f0026a200341b0046a107820032802f0022210450d0320032902f402212d02402019450d002002102a0b202d422088a72217450d05202da7211441f1fdc1002119412321022010290300200554201041086a290300223020045420302004511b450d07200341b0046a41086a22194200370300200342003703b00441a9a2c100410f200341b0046a1008200341e8006a41086a2019290300370300200320032903b004370368200341003602f002200341e8006a4110200341f0026a1006211920032802f002221c417f460d012019450d012003201c3602b404200320193602b004200341f0026a200341b0046a107d20032802f0022207450d0420032902f4022130201c450d022019102a0c020b41effcc1002119413121020c080b42002130410421070b20072030422088a7220e41246c6a210c200721194100211c024003400240200c20196b41ec004b0d00200c2019460d062007200e41246c6a210c034020034188046a2019460d03201c201920034188046a4120109c05221d4100476a211c201d450d03200c201941246a2219470d000c070b0b201920034188046a460d01201c201920034188046a4120109c05221d4100476a211c201d450d01201941246a221d20034188046a460d01201c201d20034188046a4120109c05221d4100476a211c201d450d01201941c8006a221d20034188046a460d01201c201d20034188046a4120109c05221d4100476a211c201d450d01201941ec006a221d20034188046a460d0120194190016a2119201c201d20034188046a4120109c05221d4100476a211c201d0d000b0b201c202e422088a7490d034194fec1002119413621022030a7450d042007102a0c040b41c4d1c3004133200341d8046a419cd9c3001038000b41c4d1c3004133200341d8046a419cd9c3001038000b41cca2c100410041001034000b02402030a7450d002007102a0b200341a8026a10c002200341f0026a20034188046a10bf0220032802f0024101460d01024020032802ac02450d0020032802a802102a0b41cefdc10021190b2014450d012010102a0c010b20032802a80221260240024002400240024002400240024002400240024020032802b00222020d0042002131420021320c010b20032802f4022111200241216c211c202641016a2102200341f8026a2802002219410876211241012019411f7174211520194105764107712213417f7321164200213142002132034002402002417f6a2d00004101470d00411310282219450d06201941002900c2a3413700002019410f6a41002800d1a341360000201941086a41002900caa34137000020034293808080b0023702f402200320193602f0022002200341f0026a108f0120032802f802211d20032802f002210c200341b0046a41186a22074200370300200341b0046a41106a220e4200370300200341b0046a41086a22194200370300200342003703b004200c201d200341b0046a1000200341e8006a41186a2007290300370300200341e8006a41106a200e290300370300200341e8006a41086a22072019290300370300200320032903b004370368024020032802f402450d0020032802f002102a0b200341003602f002200341e8006a4120200341f0026a1006210c20032802f002221d417f460d002003201d3602b4042003200c3602b004200341f0026a200341b0046a10c20220032903f0024201510d05200341f0026a41206a2903002133200341f0026a41106a220f2903002134200329038803213520032903f8022136200328029803210e0240201d450d00200c102a0b200e2011490d0020194200370300200342003703b004418891c6004111200341b0046a100820072019290300370300200320032903b004370368200341003602f002200341e8006a4110200341f0026a10062119024020032802f002221d417f460d00201d41034d0d052019102a0b200341f0026a41186a200241186a290000370300200f200241106a290000370300200341f0026a41086a200241086a290000370300200320022900003703f0022003201236029003200341b0046a200341f0026a10c10242002130420021370240201320032802b80422194f0d00201920166a221d20194f0d04203320347c203520367c2230203554ad7c420020032802b004201d4102746a28020020157122191b21372030420020191b21300b024020032802b404450d0020032802b004102a0b203720327c203020317c2231203054ad7c21320b200241216a2102201c415f6a221c0d000b0b2010201741306c6a210920102102024002400240024003400240200920026b4190014b0d00024020022009460d0003404101211c200241106a220220034188046a460d04200220034188046a4120109c05450d04200241206a22022009470d000b0b4100211c203120058520322004858450450d02200341d0026a41186a220220034188046a41186a290300370300200341d0026a41106a221920034188046a41106a290300370300200341d0026a41086a221c20034188046a41086a29030037030020032003290388043703d0022010200437030820102005370300201020032903d002370310201041186a201c290300370300201041206a2019290300370300201041286a200229030037030020174115490d0a202d422188220b42307e2204422088a70d182004a72202417f4c0d1820020d03410821254108210f0c040b4101211c200241106a221920034188046a460d01201920034188046a4120109c05450d01200241c0006a221920034188046a460d01201920034188046a4120109c05450d01200241f0006a221920034188046a460d01201920034188046a4120109c05450d01200241a0016a221920034188046a460d01200241c0016a2102201920034188046a4120109c050d000b0b200341386a200341e0036a202f200b10cf012003290338210b2003200341c0006a2903003703f8022003200b3703f00241cafec10041e0fec100201c1b21194116410f201c1b21022003200341f0026a3602b004200341b0046a109d014101211c0c090b200210282225450d012025210f0b200ba7211f201041506a2128201041306a212c201041f07e6a212b410421154100212741002106410021122017210a0340200a21074100210a4101210c02402007417f6a221c450d000240024002400240024002402010201c41306c6a2202290300200741306c221120106a41a07f6a2219290300220454200241086a2903002205201941086a290300220b542005200b511b0d002007417e6a210e202b20116a21024100210a4100211903400240200e2019470d002007210c0c080b20042002290300222d5a211c200b200241086a290300220551211d200b20055a210c200241506a2102201941016a2119202d21042005210b201c200c201d1b0d000b201941016a210c2019417f7320076a211c0c010b202b20116a2102024003400240201c4101470d004100211c0c020b20042002290300222d542119200b200241086a290300220551211d200b200554210c200241506a2102201c417f6a211c202d21042005210b2019200c201d1b0d000b0b2007201c490d01200720174b0d032007201c6b220c410176221d450d00202820116a21022010201c41306c6a21190340200341f0026a41286a220e201941286a2211290300370300200341f0026a41206a2213201941206a2216290300370300200341f0026a41186a2218201941186a221a290300370300200341f0026a41106a221b201941106a220a290300370300200341f0026a41086a2208201941086a2229290300370300200320192903003703f002200241086a222a290300210b200241106a221e2903002104200241186a22222903002105200241206a2223290300212d200241286a2224290300212f201920022903003703002011202f3703002016202d370300201a2005370300200a20043703002029200b3703002024200e2903003703002023201329030037030020222018290300370300201e201b290300370300202a2008290300370300200220032903f002370300201941306a2119200241506a2102201d417f6a221d0d000b0b0240201c0d00201c210a0c050b0240200c41094d0d00201c210a0c050b200720174b0d012007201c6b211d202c201c41306c6a210e03402007201c417f6a220a490d0402402007200a6b220c4102490d002010201c41306c6a22022903002010200a41306c6a221c29030022055a200241086a22192903002204201c41086a2211290300220b5a2004200b511b0d00200341b0046a41186a2216201c41286a2213290300370300200341b0046a41106a2218201c41206a221a290300370300200341b0046a41086a221b201c41186a22082903003703002003201c2903103703b004201c200229030037030020112019290300370300201c41106a200241106a2903003703002008200241186a290300370300201a200241206a2903003703002013200241286a290300370300410121190240200c4103490d00201c29036020055a201c41e8006a2903002204200b5a2004200b511b0d0041022111200e211303402013220241506a22192002290300370300201941286a200241286a290300370300201941206a200241206a290300370300201941186a200241186a290300370300201941106a200241106a290300370300201941086a200241086a290300370300201d20112219460d01201941016a2111200241306a221329030020055a200241386a2903002204200b5a2004200b511b450d000b0b200220053703002002200b370308201c201941306c6a220241286a2016290300370300200241206a2018290300370300200241186a201b290300370300200220032903b0043703100b200a450d05200e41506a210e201d41016a211d200a211c200c410a4f0d050c000b0b201c20071044000b2007201c417f6a220a490d010b20072017103c000b200a20071044000b02400240024020122027470d00202741016a22022027490d18202741017422192002201920024b1b220241ffffffff01712002470d18200241037422194100480d180240024020270d002019102821150c010b201520274103742019102c21150b2015450d0120022127200621120b201520124103746a2202200c3602042002200a360200200641016a2212210620124102490d0102400340024002400240024020152012417f6a22064103746a2202280200450d00201241037420156a221d41746a280200221c200228020422194d0d000240201241024b0d0020122106410221120c080b20152012417d6a22164103746a28020422022019201c6a4d0d010240201241034b0d0020122106410321120c080b201d41646a2802002002201c6a4d0d01201221060c070b20124103490d012002280204211920152012417d6a22164103746a28020421020b20022019490d010b2012417e6a21160b0240024002400240024002402012201641016a22084b2229450d00201220164b222a450d01201520164103746a2218280204221e20182802006a2202201520084103746a221a280200221b490d02200220174b0d032010201b41306c6a2211201a280204221341306c22196a211d200241306c211c2002201b6b220720136b220220134f0d042025201d200241306c2219109a051a200f20196a210c0240024020134101480d00200241014e0d010b201d2102200f21190c060b2028201c6a211c201d21020340201c200241506a221d200c41506a22072007290300201d29030054200741086a290300220b201d41086a290300220454200b2004511b220e1b2219290300370300201c41086a201941086a290300370300201c41106a201941106a290300370300201c41186a201941186a290300370300201c41206a201941206a290300370300201c41286a201941286a290300370300200c2007200e1b210c02402011201d2002200e1b2202490d00200f21190c070b201c41506a211c200f2119200f200c490d000c060b0b41b8dbc000200820121034000b41b8dbc000201620121034000b201b20021044000b20022017103c000b202520112019109a051a200f20196a210c0240024020134101480d00200720134a0d010b20112102200f21190c010b2010201c6a210e200f21192011210203402002201d2019201d290300201929030054201d41086a290300220b201941086a290300220454200b2004511b22071b221c290300370300200241086a201c41086a290300370300200241106a201c41106a290300370300200241186a201c41186a290300370300200241206a201c41206a290300370300200241286a201c41286a2903003703002019201941306a20071b2119200241306a2102201d41306a201d20071b221d200e4f0d01200c20194b0d000b0b20022019200c20196b221c201c4130706b109a051a0240202a450d002018201b360200201841046a201e20136a3602002029450d02201a201a41086a20122008417f736a410374109b051a20062112200641014d0d040c010b0b41c8dbc000201620121034000b41b0b1c0001032000b201941041037000b200a0d000b02402027450d002015102a0b201f450d062025102a0c060b200241081037000b41cca2c100201d20191034000b41c4d1c3004133200341d8046a419cd9c3001038000b41c4d1c3004133200341d8046a419cd9c3001038000b411341011037000b20174102490d002017417f6a211c2010201741306c6a21074101211d03400240024002400240201c2202417f6a221c20174b0d002017201c6b22194102490d032010200241306c6a22022903002010201c41306c6a220c29030022055a200241086a220e2903002204200c41086a220f290300220b5a2004200b511b0d03200341b0046a41186a2211200c41286a2212290300370300200341b0046a41106a2213200c41206a2215290300370300200341b0046a41086a2216200c41186a22182903003703002003200c2903103703b004200c2002290300370300200f200e290300370300200c41106a200241106a2903003703002018200241186a2903003703002015200241206a2903003703002012200241286a2903003703004101210e20194103490d02200c29036020055a200c41e8006a2903002204200b5a2004200b511b0d024100210e2007211903402019220241506a22192002290300370300201941286a200241286a290300370300201941206a200241206a290300370300201941186a200241186a290300370300201941106a200241106a290300370300201941086a200241086a290300370300201d200e220f460d02200f417f6a210e200241306a221929030020055a200241386a2903002204200b5a2004200b511b0d020c000b0b201c20171044000b4102200f6b210e0b200220053703002002200b370308200c200e41306c6a220241286a2011290300370300200241206a2013290300370300200241186a2016290300370300200220032903b0043703100b200741506a2107201d417f6a211d201c0d000b0b200341b0046a41086a22024200370300200342003703b004418ca3c1004113200341b0046a1008200341e8006a41086a2002290300370300200320032903b004370368200341003602f802200342013703f0022017200341f0026a10b401201021020340200241086a290300210b200229030021040240024020032802f402221c20032802f80222196b4110490d0020032802f002211c0c010b201941106a221d2019490d0f201c4101742219201d2019201d4b1b22194100480d0f02400240201c0d0020191028211c0c010b20032802f002201c2019102c211c0b201c450d03200320193602f4022003201c3602f00220032802f80221190b201c20196a221c200b370008201c20043700002003201941106a3602f802200241106a200341f0026a108f01200241306a22022009470d000b20032802f4022102200341e8006a411020032802f002221920032802f802100702402002450d002019102a0b02402014450d002010102a0b4100211c410021190b024020032802ac02450d002026102a0b0240201c0d00202ea7450d120c020b02402014450d002010102a0b202ea7450d110c010b201941011037000b200d102a0c0f0b202ea7450d0e200d102a0c0e0b0b024002400240200ba7450d00201d102a201c0d010c020b201c450d010b200341e4016a41026a20034184026a41026a2d00003a0000200341c8016a41086a200341e8016a41086a290300370300200341c8016a410d6a200341e8016a410d6a290000370000200320032f0184023b01e401200320032903e8013703c8014100211c0c010b4101211c4118210241a8fac10021190b200341c4016a41026a221d200341e4016a41026a2d00003a0000200341a8016a41086a220c200341c8016a41086a290300370300200341a8016a41106a200341c8016a41106a290300370300200320032f01e4013b01c401200320032903c8013703a801201c0d0b20034183036a200c29030037000020034188036a200341b5016a290000370000200320032f01c4013b01f002200320023600f702200320193600f302200320032903a8013700fb022003201d2d00003a00f2020240200341f0026a20034188046a4120109c050d0020034188046a201b10d50220034188046a428080e983b1de16420010aa02200342f0f2bda9c6add9b1f4003703d00220031098013602a802200341b0046a20034188046a109a0220032802b404211920032802b004210220032802b804211c200341c4046a200341d0026a36020020032002201c4105746a3602bc04200320023602b804200320193602b404200320023602b0042003200341a8026a3602c004200341e0036a200341b0046a108701200341b0046a41086a200341e0036a41086a280200360200200320032903e0033703b00420034188046a200341b0046a109c02410021190c0c0b41c0fac1002119411921020c0b0b0b0240200ba7450d00200c102a201d450d010c020b201d0d010b4101211c4116210241dcf9c10021190c010b200341b0046a41026a200341a4016a41026a2d00003a0000200341f0026a41086a20034188016a41086a290300370300200341f0026a410d6a20034188016a410d6a290000370000200320032f01a4013b01b00420032003290388013703f0024100211c0b200341e8006a41026a221d200341b0046a41026a2d00003a000020034188046a41086a220c200341f0026a41086a29030037030020034188046a41106a200341f0026a41106a290300370300200320032f01b0043b0168200320032903f00237038804201c0d06200341f3036a200c290300370000200341f8036a20034195046a290000370000200320032f01683b01e003200320023600e703200320193600e30320032003290388043700eb032003201d2d00003a00e20302400240024002400240024002400240410e10282202450d00200241066a41002900b2a441370000200241002900aca4413700002002410e411c102c2202450d012002202041067636000e200341b0046a41186a22194200370300200341b0046a41106a221c4200370300200341b0046a41086a221d4200370300200342003703b00420024112200341b0046a1000200341e8006a41186a2019290300370300200341e8006a41106a201c290300370300200341e8006a41086a201d290300370300200320032903b0043703682002102a200341003602f002200341e8006a4120200341f0026a1006210220032802f0022219417f460d052002450d05200320193602b404200320023602b004200341f0026a200341b0046a107420032802f002220c450d022020413f71211c20032902f402210b02402019450d002002102a0b4100211d201c200b422088a74f0d03200c201c41216c6a22192d00004101470d0320034186026a201941036a2d00003a0000200341e8016a41086a201941146a290000370300200341f5016a201941196a290000370000200320192f00013b01840220032019410c6a2900003703e801201941086a2800002102201941046a28000021194101211d0c040b410e41011037000b411c41011037000b41c4d1c3004133200341d8046a419cd9c3001038000b0b0240200ba7450d00200c102a201d450d010c020b201d0d010b4101211c4114210241f2f9c10021190c010b200341e4016a41026a20034184026a41026a2d00003a0000200341c8016a41086a200341e8016a41086a290300370300200341c8016a410d6a200341e8016a410d6a290000370000200320032f0184023b01e401200320032903e8013703c8014100211c0b200341c4016a41026a221d200341e4016a41026a2d00003a0000200341a8016a41086a220c200341c8016a41086a290300370300200341a8016a41106a200341c8016a41106a290300370300200320032f01e4013b01c401200320032903c8013703a801201c0d062003419b046a200c290300370000200341a0046a200341b5016a290000370000200320032f01c4013b0188042003200236008f042003201936008b04200320032903a801370093042003201d2d00003a008a040240200341e0036a20034188026a4120109c05450d004186fac1002119411221020c070b024020034188046a200341a8026a4120109c05450d004198fac1002119411021020c070b200341f0026a41186a2217200341a8026a41186a2218290300370300200341f0026a41106a221a200341a8026a41106a221b290300370300200341f0026a41086a220a200341a8026a41086a2206290300370300200320032903a8023703f002410021022003410036029003200341b0046a200341f0026a10c1020240024020032802b804220d0d0041012112410021130c010b410021114100211341012112410021150340200d417f4c0d0220032802b404211620032802b00421140240024002400240200d1028220e450d0002400240200d41027422020d00410021070c010b201420026a210f410021072014210c0340200c2802002119412010282202450d0320022019411f763a001f200220194101713a000020022019411e764101713a001e20022019411d764101713a001d20022019411c764101713a001c20022019411b764101713a001b20022019411a764101713a001a200220194119764101713a0019200220194118764101713a0018200220194117764101713a0017200220194116764101713a0016200220194115764101713a0015200220194114764101713a0014200220194113764101713a0013200220194112764101713a0012200220194111764101713a0011200220194110764101713a001020022019410f764101713a000f20022019410e764101713a000e20022019410d764101713a000d20022019410c764101713a000c20022019410b764101713a000b20022019410a764101713a000a200220194109764101713a0009200220194108764101713a00082002201941ff017122194107763a0007200220194106764101713a0006200220194105764101713a0005200220194104764101713a0004200220194103764101713a0003200220194102764101713a0002200220194101764101713a0001200c41046a210c4100211902400240024002400340201941206a221c41034d0d010240200220196a221c411f6a2d0000450d002019411f6a211d0c040b0240201c411e6a2d0000450d002019411e6a211d0c040b0240201c411d6a2d00000d002019417c6a2119201c411c6a2d00000d030c010b0b2019411d6a211d0c020b0340201c450d032002201c6a2119201c417f6a221d211c2019417f6a2d0000450d000c020b0b201941206a211d0b201d41016a221c201d490d000240200d20076b201c4120201c4120491b22194f0d00200720196a22192007490d0b200d410174221d2019201d20194b1b22194100480d0b02400240200d0d0020191028210e0c010b200e200d2019102c210e0b200e450d062019210d0b200e20076a211d410021190240034020194120460d01201d20196a200220196a2d00004101713a0000201c201941016a2219470d000b0b200720196a21070b2002102a200c200f470d000b0b02402016450d002014102a0b0240201320116b2007490d00201120076a21020c040b201120076a22022011490d07201341017422192002201920024b1b22194100480d070240024020130d002019102821120c010b201220132019102c21120b02402012450d00201921130c040b201941011037000b200d41011037000b412041011037000b201941011037000b201220116a200e2007109a051a0240200d450d00200e102a0b20172018290300370300201a201b290300370300200a2006290300370300200320032903a8023703f0022003201541016a221536029003200341b0046a200341f0026a10c1022002211120032802b804220d0d000b0b024020032802b404450d0020032802b004102a0b200341b0046a41086a22194200370300200342003703b00441b0a3c1004112200341b0046a1008200341e8006a41086a2019290300370300200320032903b004370368200341003602f002200341e8006a4110200341f0026a1006211902400240024020032802f002221c417f460d002019450d002003201c3602b404200320193602b004200341f0026a200341b0046a106d20032802f002220e450d0220032902f402210b201c450d012019102a0c010b4101210e4200210b0b200b422088a741ffffff3f7122192002200220194b1b221c450d034100211920034188036a211d20034180036a210c200341f8026a2107200e210203400240201220196a2d0000450d00201d4200370300200c420037030020074200370300200342003703f002200341f0026a2002460d002002200341f0026a4120109c05450d00200341f0026a200210bf024101210d20032802f0024101470d0020032802f40220104d0d060b200241206a2102201941016a2219201c4f0d040c000b0b41c4d1c3004133200341d8046a419cd9c3001038000b1036000b1031000b4100210d0b0240200ba7450d00200e102a0b02402013450d002012102a0b20034188026a200341a8026a200d1b221920212020200d1b10d502200342f0f2bda9c6add9b1f4003703c80220031098013602d002200341f0026a2019109a0220032802f402211c20032802f002210220032802f802211d20034184036a200341c8026a36020020032002201d4105746a3602fc02200320023602f8022003201c3602f402200320023602f0022003200341d0026a36028003200341b0046a200341f0026a108701200341f0026a41086a200341b0046a41086a280200360200200320032903b0043703f0022019200341f0026a109c020240024002400240024002400240200d450d00200341106a20034188026a428080e983b1de1642001082022003290310210b2003200341106a41086a2903003703f8022003200b3703f0022003200341f0026a3602b004200341b0046a109d01200341013a00f402200341083a00f002200341f0026a4105722102200341f0026a211c0c010b200341206a20034188026a109d022003290320200341206a41086a29030084500d02411810282202450d03200241002900e3e140370000200241106a41002900f3e140370000200241086a41002900ebe1403700002003429880808080033702d402200320023602d002200341a8026a200341d0026a108f0120032802d802210220032802d0022119200341b0046a41186a221c4200370300200341b0046a41106a221d4200370300200341b0046a41086a220c4200370300200342003703b00420192002200341b0046a1000200341f0026a41186a201c290300370300200341f0026a41106a201d290300370300200341f0026a41086a200c290300370300200320032903b0043703f002024020032802d402450d0020032802d002102a0b200341003602b004200341f0026a4120200341b0046a1006210202400240024020032802b0042219417f470d004200210b420021050c010b20194110490d06200241086a29000021052002290000210b2002102a428080e983b1de1621044200212d200b428080e983b1de165441002005501b450d010b200b21042005212d0b411410282202450d05200241002900cfe140370000200241106a41002800dfe140360000200241086a41002900d7e14037000020034294808080c0023702d402200320023602d00220034188026a200341d0026a108f0120032802d802210220032802d0022119200341b0046a41186a221c4200370300200341b0046a41106a221d4200370300200341b0046a41086a220c4200370300200342003703b00420192002200341b0046a1000200341f0026a41186a201c290300370300200341f0026a41106a201d290300370300200341f0026a41086a200c290300370300200320032903b0043703f002024020032802d402450d0020032802d002102a0b200341003602b004200341f0026a4120200341b0046a100621020240024020032802b0042219417f470d004200212e4200212f0c010b20194110490d02200241086a290000212f2002290000212e2002102a0b20034188026a202e20047c2230202f202d7c2030202e54ad7c108f02200341a8026a200b20047d2005202d7d200b200454ad7d10900220034185036a200341b8026a2903003700002003418d036a200341c0026a290300370000200341083a00f002200341fd026a200341a8026a41086a290300370000200341003a00f402200320032903a8023700f50220034195036a2102200341f0026a211c0b2002200329038802370000200241186a20034188026a41186a290300370000200241106a20034188026a41106a290300370000200241086a20034188026a41086a290300370000410021194101211d41014100201c10cc014101210c0c0b0b41c4d1c3004133200341d8046a419cd9c3001038000b41b5dfc0002119412221020c050b411841011037000b41c4d1c3004133200341d8046a419cd9c3001038000b411441011037000b41dc9fc6002119410e21020c010b4111210241a39fc60021190b4101211d4101210c0c030b4100211c0b20034184026a41026a221d200341b0046a41026a2d00003a0000200341e8016a41086a220c200341f0026a41086a290300370300200341e8016a410d6a2207200341f0026a410d6a290000370000200320032f01b0043b018402200320032903f0023703e80102400240201c0d004101211c410b210241d8d2c50021190c010b200341e4016a41026a201d2d00003a0000200341c8016a41086a200c290300370300200341c8016a410d6a2007290000370000200320032f0184023b01e401200320032903e8013703c8014100211c0b200341c4016a41026a200341e4016a41026a2d00003a0000200341a8016a41086a200341c8016a41086a290300370300200341a8016a41106a200341c8016a41106a290300370300200320032f01e4013b01c401200320032903c8013703a801201c0d00200341a4016a41026a200341c4016a41026a2d0000221c3a000020034188016a41086a221d200341a8016a41086a29030037030020034188016a410d6a220c200341a8016a410d6a290000370000200320032f01c40122073b01a401200320032903a8013703880120034183036a201d29030037000020034188036a200c2900003700002003201c3a00f202200320073b01f002200320023600f702200320193600f30220032003290388013700fb02200320063602b8042003201b3602b4042003200a3602b004200341086a200341f0026a200341b0046a200920082005200410d402200328020c2102200328020821194101210c4100211d0c010b4101210c4100211d201b450d00200a102a0b02402001280200417f6a221c41014b0d0002400240201c0e020100010b201d450d01200141086a280200450d012001280204102a0c010b200c450d00200141086a280200450d002001280204102a0b2000200236020420002019360200200341e0046a24000bb55304087f017e097f027e23004190056b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d000022040e050001020304000b2003418c046a4101360200200342013702fc03200341ccd1c5003602f803200341043602f402200341c4d1c5003602f0022003200341f0026a36028804200341f8036a41a8a6c300103e000b200141086a2802002105200141046a2802002106024020022d000020022d000172450d0041a39fc600210741112108410021094101210a02402005450d002006102a0b410121060c230b20062001410c6a280200220210f0014200210b200341f8036a41086a22074200370300200342003703f8034196f0c200411b200341f8036a1008200341f0026a41086a2007290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a100621090240024020032802f8032208417f460d00200320083602ec01200320093602e801200341f8036a200341e8016a106d20032802f8032207450d0520032902fc03210b2008450d012009102a0c010b410121070b200620022007200b422088a71085020240200ba7450d002007102a0b200341f8036a41086a22074200370300200342003703f8034196f0c200411b200341f8036a1008200341f0026a41086a2007290300370300200320032903f8033703f0022003410036028004200342013703f8032002200341f8036a10b40102402002450d00200241057421072006210203402002200341f8036a108f01200241206a2102200741606a22070d000b0b20032802fc032102200341f0026a411020032802f8032207200328028004100702402002450d002007102a0b4101210a2005450d212006102a0c210b200141046a280200210941b49fc60021074113210820022d00000d1e2002280001220a41ff01714101470d1e2003200a4118763a00622003200a4108763b01602003200241216a2d00003a007f2003200241196a2900003700772003200241116a29000037006f2003200241096a2900003700672003200241056a2800003600634200210b200341f8036a41086a22024200370300200342003703f8034196f0c200411b200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a100621080240024020032802f8032207417f460d00200320073602ec01200320083602e801200341f8036a200341e8016a106d20032802f8032202450d0520032902fc03210b2007450d012008102a0c010b410121020b2002200b422088a7200341e0006a10cd0121070240200ba7450d002002102a0b024020070d0041b8a6c3002107411521080c1f0b4100210a2003410036028004200342013703f8032009200341f8036a10eb0120032802fc032107200328028004210820032802f8032102200341f0026a41186a22064200370300200341f0026a41106a22054200370300200341f0026a41086a220c4200370300200342003703f00220022008200341f0026a1000200341e8016a41186a22082006290300370300200341e8016a41106a220d2005290300370300200341e8016a41086a2205200c290300370300200320032903f0023703e80102402007450d002002102a0b200341f8036a2009418801109a051a200341f0026a410d6a200341e0006a41086a290300370000200341f0026a41156a200341e0006a41106a290300370000200341f0026a411d6a200341e0006a41186a29030037000041012106200341013a00f402200320032903603700f502200341023a00f002200341c0006a200341f8036a200341f0026a10f40120032d00482102200341f8036a410d6a2005290300370000200341f8036a41156a200d290300370000200341f8036a411d6a20082903003700002003419d046a20024102463a0000200341053a00fc03200341073a00f803200320032903e8013700fd0341014100200341f8036a10cc012009102a0c170b200141086a280200210941b49fc60021074113210820022d00000d1c2002280001220a41ff01714101470d1c200141046a28020021062003200a4118763a00422003200a4108763b01402003200241216a2d00003a005f2003200241196a2900003700572003200241116a29000037004f2003200241096a2900003700472003200241056a280000360043200341f8036a41086a22024200370300200342003703f8034196f0c200411b200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a100621070240024020032802f8032208417f460d002007450d00200320083602ec01200320073602e801200341f8036a200341e8016a106d20032802f8032202450d0520032902fc03210b2008450d012007102a0c010b4200210b410121020b2002200b422088a7200341c0006a10cd0121070240200ba7450d002002102a0b024020070d0041b8a6c3002107411521080c1d0b2003410036028004200342013703f8032009200341f8036a10eb0120032802fc032107200328028004210820032802f8032102200341f0026a41186a220a4200370300200341f0026a41106a22054200370300200341f0026a41086a220c4200370300200342003703f00220022008200341f0026a1000200341e0006a41186a2208200a290300370300200341e0006a41106a220a2005290300370300200341e0006a41086a2205200c290300370300200320032903f00237036002402007450d002002102a0b200341f8036a41186a2008290300370300200341f8036a41106a200a290300370300200341f8036a41086a2005290300370300200320032903603703f803411e10282202450d04200241002900f6a743370000200241166a410029008ca843370000200241106a4100290086a843370000200241086a41002900fea7433700002003429e808080e0033702ec01200320023602e8012003200341e8016a3602f002200341f8036a200341f0026a10c80120032802e801210220032802f0012107200341f0026a41186a22084200370300200341f0026a41106a220a4200370300200341f0026a41086a22054200370300200342003703f00220022007200341f0026a1000200341206a41186a2008290300370300200341206a41106a200a290300370300200341206a41086a2005290300370300200320032903f002370320024020032802ec01450d0020032802e801102a0b200341206a41204101410041001003417f470d05200341f8036a41086a22024200370300200342003703f803024020064102490d004194a8c3004121200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f0024100210a200341003602f803200341f0026a4110200341f8036a10062102024020032802f8032207417f460d002002450d0020074104490d082002280000210a2002102a0b200341f8036a41086a22024200370300200342003703f8034194a8c3004121200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a100621020240024020032802f8032207417f460d002002450d00024020074104490d00200228000021072002102a200741016a21070c020b41c4d1c300413320034188056a419cd9c3001038000b410121070b200341f8036a41086a22024200370300200342003703f8034194a8c3004121200341f8036a1008200341f0026a41086a22082002290300370300200320032903f8033703f002200320073602f803200341f0026a4110200341f8036a4104100720024200370300200342003703f80341cf96c300411d200341f8036a100820082002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a1006210220032802f8032207417f460d092002450d09200320073602ec01200320023602e801200341f8036a200341e8016a106d20032802f8032208450d0820032902fc03210b02402007450d002002102a0b200320083602e8012003200b3702ec01200341206a41186a200341e0006a41186a290300370300200341206a41106a200341e0006a41106a290300370300200341206a41086a200341e0006a41086a29030037030020032003290360370320200341e8016a2107200b422088a72202200ba72208470d150c140b4196f0c200411b200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f00241002102200341003602f803200341f0026a4110200341f8036a10062108024020032802f8032207417f460d00200320073602ec01200320083602e801200341f8036a200341e8016a106d20032802f803220a450d0a20032902fc03210b02402007450d002008102a0b200b422088a72102200ba7450d00200a102a0b200341f8036a2009418801109a051a200341fc026a2002360200200341f0026a41086a4101360200200341003a00f402200341023a00f002200341e8016a200341f8036a200341f0026a10f40120032d00f001210220034185046a200341e0006a41086a2903003700002003418d046a200341f0006a29030037000020034195046a200341f8006a2903003700002003419d046a20024102463a0000200341043a00fc03200341073a00f803200320032903603700fd03200341f8036a21020c150b200141216a2d0000210a200141246a2802002109200341186a200141196a290000370300200341106a200141116a290000370300200341086a200141096a290000370300200320012900013703000240024020022d00000d002002280001220741ff01714101460d010b41b49fc60021070c110b200320074118763a0042200320074108763b01402003200241216a2d00003a005f2003200241196a2900003700572003200241116a29000037004f2003200241096a2900003700472003200241056a280000360043200341f8036a41086a22024200370300200342003703f8034196f0c200411b200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a100621070240024020032802f8032208417f460d002007450d00200320083602ec01200320073602e801200341f8036a200341e8016a106d20032802f8032202450d0b20032902fc03210b2008450d012007102a0c010b4200210b410121020b2002200b422088a7200341c0006a10cd0121070240200ba7450d002002102a0b024020070d0041bea7c3002107411221080c120b411a10282202450d0a200241002900ec9643370000200241186a41002f008497433b0000200241106a41002900fc9643370000200241086a41002900f496433700002003429a808080a0033702fc03200320023602f8032003200341f8036a3602f0022003200341f0026a10c80120032802f80321022003280280042107200341f0026a41186a22084200370300200341f0026a41106a22064200370300200341f0026a41086a22054200370300200342003703f00220022007200341f0026a1000200341206a41186a2008290300370300200341206a41106a2006290300370300200341206a41086a2005290300370300200320032903f002370320024020032802fc03450d0020032802f803102a0b200341003602f803200341206a4120200341f8036a1006210220032802f8032207417f460d0f2002450d0f200320073602f402200320023602f002200341f8036a200341f0026a10b3032003280280042205450d0b20034194046a280200210e20034190046a280200210f2003418c046a280200210c41102108200341f8036a41106a2802002110200328028404211120032802fc03211220032802f803210602402007450d002002102a0b41d0a7c300210720062009470d0e200520104105746a21062005210241002108024003400240200620026b41e0004b0d0020022006470d02410021130c100b200341c0006a2002460d0e20082002200341c0006a4120109c0522074100476a21082007450d0e200241206a2207200341c0006a460d0e20082007200341c0006a4120109c0522074100476a21082007450d0e200241c0006a2207200341c0006a460d0e20082007200341c0006a4120109c0522074100476a21082007450d0e200241e0006a2207200341c0006a460d0e20024180016a210220082007200341c0006a4120109c0522074100476a210820070d000c0e0b0b200520104105746a21060340200341c0006a2002460d0d20082002200341c0006a4120109c0522074100476a21082007450d0d410021132006200241206a2202470d000c0e0b0b41c4d1c300413320034188056a419cd9c3001038000b41c4d1c300413320034188056a419cd9c3001038000b41c4d1c300413320034188056a419cd9c3001038000b411e41011037000b41cda6c3002107411f21080c160b41c4d1c300413320034188056a419cd9c3001038000b41c4d1c300413320034188056a419cd9c3001038000b41002102200341003602f001200342013703e801200341206a41186a200341e0006a41186a290300370300200341206a41106a200341e0006a41106a290300370300200341206a41086a200341e0006a41086a29030037030020032003290360370320200341e8016a21070c0a0b41c4d1c300413320034188056a419cd9c3001038000b41c4d1c300413320034188056a419cd9c3001038000b411a41011037000b41c4d1c300413320034188056a419cd9c3001038000b410121130b200c200e4105746a210d200c21024100210702400240024003400240200d20026b41e0004b0d002002200d470d02410021060c040b200341c0006a2002460d0220072002200341c0006a4120109c0522064100476a21072006450d02200241206a2206200341c0006a460d0220072006200341c0006a4120109c0522064100476a21072006450d02200241c0006a2206200341c0006a460d0220072006200341c0006a4120109c0522064100476a21072006450d02200241e0006a2206200341c0006a460d0220024180016a210220072006200341c0006a4120109c0522064100476a210720060d000c020b0b0340200341c0006a2002460d0120072002200341c0006a4120109c0522064100476a21072006450d0141002106200d200241206a2202470d000c020b0b410121060b024002400240024002400240024002400240200a41ff01710d002006450d010c080b20130d07200341f8036a41186a220d200341c0006a41186a290300370300200341f8036a41106a2213200341c0006a41106a290300370300200341f8036a41086a2214200341c0006a41086a290300370300200320032903403703f803024020102011460d0020112108201021110c020b201141016a22022011490d10201141017422082002200820024b1b220841ffffff3f712008470d10200841057422024100480d100240024020110d002002102821050c010b200520114105742002102c21050b20050d01200241011037000b200341f8036a41186a2206200341c0006a41186a290300370300200341f8036a41106a220d200341c0006a41106a290300370300200341f8036a41086a2214200341c0006a41086a290300370300200320032903403703f80302400240200e200f460d00200f2107200e210f0c010b200f41016a2202200f490d10200f41017422072002200720024b1b220741ffffff3f712007470d10200741057422024100480d1002400240200f0d0020021028210c0c010b200c200f4105742002102c210c0b200c0d00200241011037000b200c200f4105746a220220032903f803370000200241186a2006290300370000200241106a200d290300370000200241086a2014290300370000200e41016a210e024002402013450d00201020084d0d0120052010417f6a22104105746a2202290000210b2002290008211520022900102116200520084105746a220841186a200241186a29000037000020082016370010200820153700082008200b3700000b2007210f201121080c020b41c4f2c200200820101034000b200520114105746a220220032903f803370000200241186a200d290300370000200241106a2013290300370000200241086a2014290300370000201041016a21102006450d00200e20074d0d01200c200e417f6a220e4105746a2202290000210b2002290008211520022900102116200c20074105746a220741186a200241186a29000037000020072016370010200720153700082007200b3700000b2003419d046a200329030037000020034185046a200341c0006a41086a2903003700002003418d046a200341c0006a41106a29030037000020034195046a200341c0006a41186a290300370000200341a5046a200341086a290300370000200341ad046a200341106a290300370000200341b5046a200341186a290300370000200341013a00fc03200341073a00f803200320032903403700fd03200341c4046a200e360200200341c0046a2010360200200341bd046a200a3a000041014100200341f8036a10cc01200341f8036a41086a22024200370300200342003703f8034196f0c200411b200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a1006210220032802f8032207417f460d022002450d02200320073602ec01200320023602e801200341f8036a200341e8016a106d20032802f803220a450d0120032902fc03210b02402007450d002002102a0b200b422088a72102200ba7450d03200a102a0c030b41c4f2c2002007200e1034000b41c4d1c300413320034188056a419cd9c3001038000b410021020b024002400240024002400240024002400240201020124f22070d0041002002200e6b220a200a20024b1b2012490d0020034194046a200e360200200341f8036a41186a200f360200200341f8036a41106a201036020020034184046a20083602002003200c36028c042003200536028004200320123602fc03200320093602f803411a10282202450d01200241002900ec9643370000200241186a41002f008497433b0000200241106a41002900fc9643370000200241086a41002900f496433700002003429a808080a0033702ec01200320023602e8012003200341e8016a3602f0022003200341f0026a10c80120032802e801210220032802f0012107200341f0026a41186a22094200370300200341f0026a41106a220a4200370300200341f0026a41086a22064200370300200342003703f00220022007200341f0026a1000200341206a41186a2009290300370300200341206a41106a200a290300370300200341206a41086a2006290300370300200320032903f002370320024020032802ec01450d0020032802e801102a0b200341203602f4022003200341206a3602f002200341f8036a200341f0026a10b40302402008450d002005102a0b200f0d050c060b024020070d0020034185046a200341086a2903003700002003418d046a200341106a29030037000020034195046a200341186a290300370000200341033a00fc03200341073a00f803200320032903003700fd0341014100200341f8036a10cc010c040b20034185046a200341086a2903003700002003418d046a200341106a29030037000020034195046a200341186a290300370000200341023a00fc03200341073a00f803200320032903003700fd0341014100200341f8036a10cc01411e10282207450d01200741002900f6a743370000200741166a410029008ca843370000200741106a4100290086a843370000200741086a41002900fea7433700002003429e808080e0033702fc03200320073602f8032003200341f8036a3602f0022003200341f0026a10c80120032802f80321072003280280042109200341f0026a41186a220a4200370300200341f0026a41106a22064200370300200341f0026a41086a220d4200370300200342003703f00220072009200341f0026a1000200341206a41186a200a290300370300200341206a41106a2006290300370300200341206a41086a200d290300370300200320032903f002370320024020032802fc03450d0020032802f803102a0b200341003602f803200341206a4120200341f8036a100621090240024020032802f803220a417f470d00411321070c010b024020090d00411321070c010b2003200a360284052003200936028005200341f8036a20034180056a10810120032802f80322074113460d03200341f0026a200341f8036a410472418401109a051a0240200a450d002009102a0b200341206a412010090b200341e8016a200341f0026a418401109a051a200341f8036a200341e8016a418401109a051a20074113460d03200341e0006a200341f8036a418401109a051a200320073602f803200341f8036a410472200341e0006a418401109a051a200341fc026a2002360200200341f0026a41086a2012360200200341003a00f402200341023a00f002200341e8016a200341f8036a200341f0026a10f40120032d00f001210220034185046a200341086a2903003700002003418d046a200341106a29030037000020034195046a200341186a2903003700002003419d046a20024102463a0000200341043a00fc03200341073a00f803200320032903003700fd0341014100200341f8036a10cc010c030b411a41011037000b411e41011037000b41c4d1c300413320034188056a419cd9c3001038000b411a10282202450d02200241002900ec9643370000200241186a41002f008497433b0000200241106a41002900fc9643370000200241086a41002900f496433700002003429a808080a0033702fc03200320023602f8032003200341f8036a3602f0022003200341f0026a10c80120032802f80321072003280280042109200341f0026a41186a220a4200370300200341f0026a41106a22064200370300200341f0026a41086a22024200370300200342003703f00220072009200341f0026a1000200341206a41186a200a290300370300200341206a41106a2006290300370300200341206a41086a2002290300370300200320032903f002370320024020032802fc03450d0020032802f803102a0b200341206a41201009200341f8036a41086a22074200370300200342003703f80341cf96c300411d200341f8036a100820022007290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a100621070240024020032802f8032202417f460d00200320023602ec01200320073602e801200341f8036a200341e8016a106d20032802f8032209450d0520032902fc03210b02402002450d002007102a0b2003200b3702ec01200320093602e8010c010b200341003602f001200342013703e8010b200341e8016a2003106e20032802f001210220032802ec01210a20032802e8012109200341f8036a41086a22074200370300200342003703f80341cf96c300411d200341f8036a1008200341f0026a41086a2007290300370300200320032903f8033703f0020240024020090d00200341f0026a411010090c010b2003410036028004200342013703f8032002200341f8036a10b40102402002450d00200241057421072009210203402003200341f8036a3602602002200341e0006a10c801200241206a2102200741606a22070d000b0b20032802fc032102200341f0026a411020032802f8032207200328028004100702402002450d002007102a0b200a450d002009102a0b02402008450d002005102a0b200f450d010b200c102a0b410021074101210a41012106410121090c140b411a41011037000b41c4d1c300413320034188056a419cd9c3001038000b41e0a7c3002107411621080b02402011450d002005102a0b200f450d02200c102a0c020b41aba7c30021070b411321080b4101210a410121060c0b0b200741046a28020022082002470d00200241016a22082002490d03200241017422052008200520084b1b220841ffffff3f712008470d03200841057422054100480d030240024020020d002005102821020c010b200728020020024105742005102c21020b2002450d0420072002360200200741046a200836020020032802f00121020b200728020022052002410574220d6a22072003290320370000200741186a200341206a41186a290300370000200741106a200341206a41106a290300370000200741086a200341206a41086a2903003700002003200241016a22073602f001200341f8036a41086a220c4200370300200342003703f80341cf96c300411d200341f8036a1008200341f0026a41086a200c290300370300200320032903f8033703f0022003410036028004200342013703f8032007200341f8036a10b401024020072002490d00200d41206a21072005210203402003200341f8036a3602202002200341206a10c801200241206a2102200741606a22070d000b0b20032802fc032102200341f0026a411020032802f8032207200328028004100702402002450d002007102a0b02402008450d002005102a0b200341f8036a2009418801109a051a200341e8016a41186a200341e0006a41186a290300370300200341e8016a41106a200341e0006a41106a290300370300200341e8016a41086a200341e0006a41086a290300370300200320032903603703e801411e10282202450d04200241002900f6a743370000200241166a410029008ca843370000200241106a4100290086a843370000200241086a41002900fea7433700002003429e808080e00337020420032002360200200320033602f002200341e8016a200341f0026a10c8012003280200210220032802082107200341f0026a41186a22084200370300200341f0026a41106a22054200370300200341f0026a41086a220c4200370300200342003703f00220022007200341f0026a1000200341206a41186a2008290300370300200341206a41106a2005290300370300200341206a41086a200c290300370300200320032903f00237032002402003280204450d002003280200102a0b200341003602f802200342013703f002200341f8036a200341f0026a10eb0120032802f4022102200341206a412020032802f002220720032802f802100702402002450d002007102a0b200341f8036a106a412010282202450d0520022003290340370000200241186a200341c0006a41186a290300370000200241106a200341c0006a41106a290300370000200241086a200341c0006a41086a29030037000020034184026a4100360200200341f4016a428180808010370200200342013702fc01200320023602f001200320063602ec012003200a3602e801200341f8036a41186a200341e0006a41186a290300370300200341f8036a41106a200341e0006a41106a290300370300200341f8036a41086a200341e0006a41086a290300370300200320032903603703f803411a10282207450d06200741002900ec9643370000200741186a41002f008497433b0000200741106a41002900fc9643370000200741086a41002900f496433700002003429a808080a00337020420032007360200200320033602f002200341f8036a200341f0026a10c8012003280200210720032802082108200341f0026a41186a22054200370300200341f0026a41106a220c4200370300200341f0026a41086a220d4200370300200342003703f00220072008200341f0026a1000200341206a41186a2005290300370300200341206a41106a200c290300370300200341206a41086a200d290300370300200320032903f00237032002402003280204450d002003280200102a0b200341203602fc032003200341206a3602f803200341e8016a200341f8036a10b4032002102a20034185046a200341c0006a41086a2903003700002003418d046a200341c0006a41106a29030037000020034195046a200341c0006a41186a2903003700002003419d046a2003290360370000200341a5046a200341e0006a41086a290300370000200341ad046a200341e0006a41106a290300370000200341b5046a200341e0006a41186a290300370000200341c4046a2006360200200341c0046a200a360200200341003a00fc03200341073a00f803200320032903403700fd03200341f8036a21020b410021064101210a41014100200210cc012009102a0b41012109410021070c090b1031000b200541011037000b411e41011037000b412041011037000b411a41011037000b2009106a2009102a410021064101210a0c010b2009106a2009102a410121064100210a0b410121090c010b4100210941012106410021070b02402004410771417f6a220241024b0d0002400240024020020e03000102000b2009450d02200141086a280200450d02200141046a280200102a0c020b200a450d01200141046a2802002202106a2002102a0c010b2006450d00200141086a2802002202106a2002102a0b200020083602042000200736020020034190056a24000bf35c040b7f017e127f027e23004190056b220324000240024002400240024002400240024002400240024002400240024002400240024020012d000022040e0500010a0302000b2003418c046a4101360200200342013702fc03200341ccd1c5003602f803200341043602f402200341c4d1c5003602f0022003200341f0026a36028804200341f8036a41a8a6c300103e000b200141086a2802002105200141046a2802002106024020022d000020022d000172450d0041a39fc600210741112108410021094101210a02402005450d002006102a0b4101210b0c0f0b20062001410c6a280200220c10f001200341f8036a41086a22024200370300200342003703f80341fbefc200411b200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a1006210202400240024020032802f8032207417f460d002002450d00200320073602ec01200320023602e801200341f8036a200341e8016a106d20032802f803220d450d0220032902fc03210e2007450d012002102a0c010b4101210d4200210e0b20064100200c1b2109200d41206a200d200e422088a722021b210f200641206a2006200c1b2110200d410020021b21112006200c4105746a2112200d20024105746a2113410021144100211541012116410021174100211841012119024003402014410174211a2014410574211b024002400240024002400340024020110d00200f211c2016211d2015211e201421080c040b20112102200f21072016211d2015211e20142108201b210a201a210b02400340024002402009450d0020022009460d06200220094120109c05221c450d06201c417f4c0d012007210f201d2116201e211520082114200221110c080b200341f8036a41186a2207201141186a290000370300200341f8036a41106a2208201141106a290000370300200341f8036a41086a2209201141086a290000370300200320112900003703f803024020142015470d00201441016a22022014490d0f2014410174220a2002200a20024b1b221541ffffff3f712015470d0f201541057422024100480d0f0240024020140d002002102821160c010b201620144105742002102c21160b2016450d030b201620144105746a220220032903f803370000200241186a2007290300370000200241106a2008290300370000200241086a2009290300370000410021094100200f200f20134622021b2111201a41026a211a201b41206a211b201441016a2114200f200f41206a20021b210f0c030b200341f8036a41186a221c200241186a290000370300200341f8036a41106a221f200241106a290000370300200341f8036a41086a2220200241086a290000370300200320022900003703f80302402008201e470d00200841016a22022008490d0e200b2002200b20024b1b221e41ffffff3f71201e470d0e201e41057422024100480d0e0240024020080d0020021028211d0c010b201d200a2002102c211d0b201d450d040b201d200a6a220220032903f803370000200241186a201c290300370000200241106a201f290300370000200241086a2020290300370000410020072007201346221c1b2102200b41026a210b200a41206a210a200841016a21082007200741206a201c1b221c21072002450d050c000b0b0b200241011037000b200241011037000b201d2116201e2115200821142007200741206a200720134622021b210f41002010201020124622081b21094100200720021b21112010201041206a20081b21100c030b410021112009450d01201c210f201d2116201e2115200821140b200341206a41186a2207200941186a290000370300200341206a41106a2208200941106a290000370300200341206a41086a220a200941086a29000037030020032009290000370320024020172018470d00201741016a22022017490d07201741017422092002200920024b1b221841ffffff3f712018470d07201841057422024100480d070240024020170d002002102821190c010b201920174105742002102c21190b2019450d030b201920174105746a22022003290320370000200241186a2007290300370000200241106a2008290300370000200241086a200a29030037000041002010201020124622021b2109201741016a21172010201041206a20021b21100c010b0b201d20082006200c10c5020240201e450d00201d102a0b02402018450d002019102a0b0240200ea7450d00200d102a0b200341f8036a41086a22024200370300200342003703f80341fbefc200411b200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f0022003410036028004200342013703f803200c200341f8036a10b4010240200c450d00200c41057421072006210203402002200341f8036a108f01200241206a2102200741606a22070d000b0b20032802fc032102200341f0026a411020032802f8032207200328028004100702402002450d002007102a0b4101210a2005450d0f2006102a0c0f0b200241011037000b41c4d1c300413320034188056a419cd9c3001038000b200141216a2d0000210a200141246a2802002109200341186a200141196a290000370300200341106a200141116a290000370300200341086a200141096a29000037030020032001290001370300024002400240024020022d00000d002002280001220741ff01714101460d010b41b49fc60021070c010b200320074118763a0042200320074108763b01402003200241216a2d00003a005f2003200241196a2900003700572003200241116a29000037004f2003200241096a2900003700472003200241056a280000360043200341f8036a41086a22024200370300200342003703f80341fbefc200411b200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a1006210702400240024002400240024002400240024020032802f8032208417f460d002007450d00200320083602ec01200320073602e801200341f8036a200341e8016a106d20032802f8032202450d0220032902fc03210e2008450d012007102a0c010b4200210e410121020b2002200e422088a7200341c0006a10cd0121070240200ea7450d002002102a0b024020070d0041bea7c3002107411221080c090b411a10282202450d01200241002900b59643370000200241186a41002f00cd96433b0000200241106a41002900c59643370000200241086a41002900bd96433700002003429a808080a0033702fc03200320023602f8032003200341f8036a3602f0022003200341f0026a10c80120032802f80321022003280280042107200341f0026a41186a22084200370300200341f0026a41106a220b4200370300200341f0026a41086a221e4200370300200342003703f00220022007200341f0026a1000200341206a41186a2008290300370300200341206a41106a200b290300370300200341206a41086a201e290300370300200320032903f002370320024020032802fc03450d0020032802f803102a0b200341003602f803200341206a4120200341f8036a1006210220032802f8032207417f460d062002450d06200320073602f402200320023602f002200341f8036a200341f0026a10b303200328028004221e450d0220034194046a280200211420034190046a28020021202003418c046a280200211d41102108200341f8036a41106a280200211f200328028404211320032802fc03211020032802f803210b02402007450d002002102a0b41d0a7c3002107200b2009470d05201e201f4105746a210b201e210241002108024003400240200b20026b41e0004b0d002002200b470d02410021110c070b200341c0006a2002460d0520082002200341c0006a4120109c0522074100476a21082007450d05200241206a2207200341c0006a460d0520082007200341c0006a4120109c0522074100476a21082007450d05200241c0006a2207200341c0006a460d0520082007200341c0006a4120109c0522074100476a21082007450d05200241e0006a2207200341c0006a460d0520024180016a210220082007200341c0006a4120109c0522074100476a210820070d000c050b0b201e201f4105746a210b0340200341c0006a2002460d0420082002200341c0006a4120109c0522074100476a21082007450d0441002111200b200241206a2202470d000c050b0b41c4d1c300413320034188056a419cd9c3001038000b411a41011037000b41c4d1c300413320034188056a419cd9c3001038000b410121110b201d20144105746a211c201d21024100210702400240024003400240201c20026b41e0004b0d002002201c470d024100210b0c040b200341c0006a2002460d0220072002200341c0006a4120109c05220b4100476a2107200b450d02200241206a220b200341c0006a460d022007200b200341c0006a4120109c05220b4100476a2107200b450d02200241c0006a220b200341c0006a460d022007200b200341c0006a4120109c05220b4100476a2107200b450d02200241e0006a220b200341c0006a460d0220024180016a21022007200b200341c0006a4120109c05220b4100476a2107200b0d000c020b0b0340200341c0006a2002460d0120072002200341c0006a4120109c05220b4100476a2107200b450d014100210b201c200241206a2202470d000c020b0b4101210b0b024002400240024002400240024002400240200a41ff01710d00200b450d010c080b20110d07200341f8036a41186a221c200341c0006a41186a290300370300200341f8036a41106a2211200341c0006a41106a290300370300200341f8036a41086a220f200341c0006a41086a290300370300200320032903403703f8030240201f2013460d0020132108201f21130c020b201341016a22022013490d0d201341017422082002200820024b1b220841ffffff3f712008470d0d200841057422024100480d0d0240024020130d0020021028211e0c010b201e20134105742002102c211e0b201e0d01200241011037000b200341f8036a41186a220b200341c0006a41186a290300370300200341f8036a41106a221c200341c0006a41106a290300370300200341f8036a41086a220f200341c0006a41086a290300370300200320032903403703f8030240024020142020460d0020202107201421200c010b202041016a22022020490d0d202041017422072002200720024b1b220741ffffff3f712007470d0d200741057422024100480d0d0240024020200d0020021028211d0c010b201d20204105742002102c211d0b201d0d00200241011037000b201d20204105746a220220032903f803370000200241186a200b290300370000200241106a201c290300370000200241086a200f290300370000201441016a2114024002402011450d00201f20084d0d01201e201f417f6a221f4105746a2202290000210e2002290008212120022900102122201e20084105746a220841186a200241186a29000037000020082022370010200820213700082008200e3700000b20072120201321080c020b41c4f2c2002008201f1034000b201e20134105746a220220032903f803370000200241186a201c290300370000200241106a2011290300370000200241086a200f290300370000201f41016a211f200b450d00201420074d0d01201d2014417f6a22144105746a2202290000210e2002290008212120022900102122201d20074105746a220741186a200241186a29000037000020072022370010200720213700082007200e3700000b2003419d046a200329030037000020034185046a200341c0006a41086a2903003700002003418d046a200341c0006a41106a29030037000020034195046a200341c0006a41186a290300370000200341a5046a200341086a290300370000200341ad046a200341106a290300370000200341b5046a200341186a290300370000200341013a00fc03200341063a00f803200320032903403700fd03200341c4046a2014360200200341c0046a201f360200200341bd046a200a3a000041014100200341f8036a10cc01200341f8036a41086a22024200370300200342003703f80341fbefc200411b200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a1006210220032802f8032207417f460d022002450d02200320073602ec01200320023602e801200341f8036a200341e8016a106d20032802f803220a450d0120032902fc03210e02402007450d002002102a0b200e422088a72102200ea7450d03200a102a0c030b41c4f2c200200720141034000b41c4d1c300413320034188056a419cd9c3001038000b410021020b024002400240024002400240024002400240201f20104f22070d004100200220146b220a200a20024b1b2010490d0020034194046a2014360200200341f8036a41186a2020360200200341f8036a41106a201f36020020034184046a20083602002003201d36028c042003201e36028004200320103602fc03200320093602f803411a10282202450d01200241002900b59643370000200241186a41002f00cd96433b0000200241106a41002900c59643370000200241086a41002900bd96433700002003429a808080a0033702ec01200320023602e8012003200341e8016a3602f0022003200341f0026a10c80120032802e801210220032802f0012107200341f0026a41186a22094200370300200341f0026a41106a220a4200370300200341f0026a41086a220b4200370300200342003703f00220022007200341f0026a1000200341206a41186a2009290300370300200341206a41106a200a290300370300200341206a41086a200b290300370300200320032903f002370320024020032802ec01450d0020032802e801102a0b200341203602f4022003200341206a3602f002200341f8036a200341f0026a10b40302402008450d00201e102a0b20200d050c060b024020070d0020034185046a200341086a2903003700002003418d046a200341106a29030037000020034195046a200341186a290300370000200341033a00fc03200341063a00f803200320032903003700fd0341014100200341f8036a10cc010c040b20034185046a200341086a2903003700002003418d046a200341106a29030037000020034195046a200341186a290300370000200341023a00fc03200341063a00f803200320032903003700fd0341014100200341f8036a10cc01411e10282207450d01200741002900eca643370000200741166a4100290082a743370000200741106a41002900fca643370000200741086a41002900f4a6433700002003429e808080e0033702fc03200320073602f8032003200341f8036a3602f0022003200341f0026a10c80120032802f80321072003280280042109200341f0026a41186a220a4200370300200341f0026a41106a220b4200370300200341f0026a41086a221c4200370300200342003703f00220072009200341f0026a1000200341206a41186a200a290300370300200341206a41106a200b290300370300200341206a41086a201c290300370300200320032903f002370320024020032802fc03450d0020032802f803102a0b200341003602f803200341206a4120200341f8036a100621090240024020032802f803220a417f470d00411321070c010b024020090d00411321070c010b2003200a360284052003200936028005200341f8036a20034180056a10810120032802f80322074113460d03200341f0026a200341f8036a410472418401109a051a0240200a450d002009102a0b200341206a412010090b200341e8016a200341f0026a418401109a051a200341f8036a200341e8016a418401109a051a20074113460d03200341e0006a200341f8036a418401109a051a200320073602f803200341f8036a410472200341e0006a418401109a051a200341fc026a2002360200200341f0026a41086a2010360200200341003a00f402200341013a00f002200341e8016a200341f8036a200341f0026a10f40120032d00f001210220034185046a200341086a2903003700002003418d046a200341106a29030037000020034195046a200341186a2903003700002003419d046a20024102463a0000200341043a00fc03200341063a00f803200320032903003700fd0341014100200341f8036a10cc010c030b411a41011037000b411e41011037000b41c4d1c300413320034188056a419cd9c3001038000b411a10282202450d02200241002900b59643370000200241186a41002f00cd96433b0000200241106a41002900c59643370000200241086a41002900bd96433700002003429a808080a0033702fc03200320023602f8032003200341f8036a3602f0022003200341f0026a10c80120032802f80321072003280280042109200341f0026a41186a220a4200370300200341f0026a41106a220b4200370300200341f0026a41086a22024200370300200342003703f00220072009200341f0026a1000200341206a41186a200a290300370300200341206a41106a200b290300370300200341206a41086a2002290300370300200320032903f002370320024020032802fc03450d0020032802f803102a0b200341206a41201009200341f8036a41086a22074200370300200342003703f803419896c300411d200341f8036a100820022007290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a100621070240024020032802f8032202417f460d00200320023602ec01200320073602e801200341f8036a200341e8016a106d20032802f8032209450d0520032902fc03210e02402002450d002007102a0b2003200e3702ec01200320093602e8010c010b200341003602f001200342013703e8010b200341e8016a2003106e20032802f001210220032802ec01210a20032802e8012109200341f8036a41086a22074200370300200342003703f803419896c300411d200341f8036a1008200341f0026a41086a2007290300370300200320032903f8033703f0020240024020090d00200341f0026a411010090c010b2003410036028004200342013703f8032002200341f8036a10b40102402002450d00200241057421072009210203402003200341f8036a3602602002200341e0006a10c801200241206a2102200741606a22070d000b0b20032802fc032102200341f0026a411020032802f8032207200328028004100702402002450d002007102a0b200a450d002009102a0b02402008450d00201e102a0b2020450d010b201d102a0b410021074101210a4101210b410121090c140b411a41011037000b41c4d1c300413320034188056a419cd9c3001038000b41e0a7c3002107411621080b02402013450d00201e102a0b2020450d02201d102a0c020b41aba7c30021070b411321080b4101210a4101210b0c0b0b200141086a280200210941b49fc60021074113210820022d00000d052002280001220a41ff01714101470d05200141046a280200210b2003200a4118763a00422003200a4108763b01402003200241216a2d00003a005f2003200241196a2900003700572003200241116a29000037004f2003200241096a2900003700472003200241056a280000360043200341f8036a41086a22024200370300200342003703f80341fbefc200411b200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a1006210702400240024002400240024002400240024002400240024020032802f8032208417f460d002007450d00200320083602ec01200320073602e801200341f8036a200341e8016a106d20032802f8032202450d0220032902fc03210e2008450d012007102a0c010b4200210e410121020b2002200e422088a7200341c0006a10cd0121070240200ea7450d002002102a0b024020070d0041b8a6c3002107411521080c100b2003410036028004200342013703f8032009200341f8036a10eb0120032802fc032107200328028004210820032802f8032102200341f0026a41186a220a4200370300200341f0026a41106a221e4200370300200341f0026a41086a221d4200370300200342003703f00220022008200341f0026a1000200341e0006a41186a2208200a290300370300200341e0006a41106a220a201e290300370300200341e0006a41086a221e201d290300370300200320032903f00237036002402007450d002002102a0b200341f8036a41186a2008290300370300200341f8036a41106a200a290300370300200341f8036a41086a201e290300370300200320032903603703f803411e10282202450d01200241002900eca643370000200241166a4100290082a743370000200241106a41002900fca643370000200241086a41002900f4a6433700002003429e808080e0033702ec01200320023602e8012003200341e8016a3602f002200341f8036a200341f0026a10c80120032802e801210220032802f0012107200341f0026a41186a22084200370300200341f0026a41106a220a4200370300200341f0026a41086a221e4200370300200342003703f00220022007200341f0026a1000200341206a41186a2008290300370300200341206a41106a200a290300370300200341206a41086a201e290300370300200320032903f002370320024020032802ec01450d0020032802e801102a0b200341206a41204101410041001003417f470d02200341f8036a41086a22024200370300200342003703f8030240200b4102490d00418aa7c3004121200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f0024100210a200341003602f803200341f0026a4110200341f8036a10062102024020032802f8032207417f460d002002450d0020074104490d052002280000210a2002102a0b200341f8036a41086a22024200370300200342003703f803418aa7c3004121200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a100621020240024020032802f8032207417f460d002002450d00024020074104490d00200228000021072002102a200741016a21070c020b41c4d1c300413320034188056a419cd9c3001038000b410121070b200341f8036a41086a22024200370300200342003703f803418aa7c3004121200341f8036a1008200341f0026a41086a22082002290300370300200320032903f8033703f002200320073602f803200341f0026a4110200341f8036a4104100720024200370300200342003703f803419896c300411d200341f8036a100820082002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a1006210220032802f8032207417f460d062002450d06200320073602ec01200320023602e801200341f8036a200341e8016a106d20032802f8032208450d0520032902fc03210e02402007450d002002102a0b200320083602e8012003200e3702ec01200341206a41186a200341e0006a41186a290300370300200341206a41106a200341e0006a41106a290300370300200341206a41086a200341e0006a41086a29030037030020032003290360370320200341e8016a2107200e422088a72202200ea72208470d090c080b41fbefc200411b200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f00241002102200341003602f803200341f0026a4110200341f8036a10062108024020032802f8032207417f460d00200320073602ec01200320083602e801200341f8036a200341e8016a106d20032802f803220a450d0720032902fc03210e02402007450d002008102a0b200e422088a72102200ea7450d00200a102a0b200341f8036a2009418801109a051a200341fc026a2002360200200341f0026a41086a4101360200200341003a00f402200341013a00f002200341e8016a200341f8036a200341f0026a10f40120032d00f001210220034185046a200341e0006a41086a2903003700002003418d046a200341f0006a29030037000020034195046a200341f8006a2903003700002003419d046a20024102463a0000200341043a00fc03200341063a00f803200320032903603700fd03200341f8036a21020c090b41c4d1c300413320034188056a419cd9c3001038000b411e41011037000b41cda6c3002107411f21080c0c0b41c4d1c300413320034188056a419cd9c3001038000b41c4d1c300413320034188056a419cd9c3001038000b41002102200341003602f001200342013703e801200341206a41186a200341e0006a41186a290300370300200341206a41106a200341e0006a41106a290300370300200341206a41086a200341e0006a41086a29030037030020032003290360370320200341e8016a21070c010b41c4d1c300413320034188056a419cd9c3001038000b200741046a28020022082002470d00200241016a22082002490d022002410174221e2008201e20084b1b220841ffffff3f712008470d022008410574221e4100480d020240024020020d00201e102821020c010b20072802002002410574201e102c21020b2002450d0320072002360200200741046a200836020020032802f00121020b2007280200221e2002410574221c6a22072003290320370000200741186a200341206a41186a290300370000200741106a200341206a41106a290300370000200741086a200341206a41086a2903003700002003200241016a22073602f001200341f8036a41086a221d4200370300200342003703f803419896c300411d200341f8036a1008200341f0026a41086a201d290300370300200320032903f8033703f0022003410036028004200342013703f8032007200341f8036a10b401024020072002490d00201c41206a2107201e210203402003200341f8036a3602202002200341206a10c801200241206a2102200741606a22070d000b0b20032802fc032102200341f0026a411020032802f8032207200328028004100702402002450d002007102a0b02402008450d00201e102a0b200341f8036a2009418801109a051a200341e8016a41186a200341e0006a41186a290300370300200341e8016a41106a200341e0006a41106a290300370300200341e8016a41086a200341e0006a41086a290300370300200320032903603703e801411e10282202450d03200241002900eca643370000200241166a4100290082a743370000200241106a41002900fca643370000200241086a41002900f4a6433700002003429e808080e00337020420032002360200200320033602f002200341e8016a200341f0026a10c8012003280200210220032802082107200341f0026a41186a22084200370300200341f0026a41106a221e4200370300200341f0026a41086a221d4200370300200342003703f00220022007200341f0026a1000200341206a41186a2008290300370300200341206a41106a201e290300370300200341206a41086a201d290300370300200320032903f00237032002402003280204450d002003280200102a0b200341003602f802200342013703f002200341f8036a200341f0026a10eb0120032802f4022102200341206a412020032802f002220720032802f802100702402002450d002007102a0b200341f8036a106a412010282202450d0420022003290340370000200241186a200341c0006a41186a290300370000200241106a200341c0006a41106a290300370000200241086a200341c0006a41086a29030037000020034184026a4100360200200341f4016a428180808010370200200342013702fc01200320023602f0012003200b3602ec012003200a3602e801200341f8036a41186a200341e0006a41186a290300370300200341f8036a41106a200341e0006a41106a290300370300200341f8036a41086a200341e0006a41086a290300370300200320032903603703f803411a10282207450d05200741002900b59643370000200741186a41002f00cd96433b0000200741106a41002900c59643370000200741086a41002900bd96433700002003429a808080a00337020420032007360200200320033602f002200341f8036a200341f0026a10c8012003280200210720032802082108200341f0026a41186a221e4200370300200341f0026a41106a221d4200370300200341f0026a41086a221c4200370300200342003703f00220072008200341f0026a1000200341206a41186a201e290300370300200341206a41106a201d290300370300200341206a41086a201c290300370300200320032903f00237032002402003280204450d002003280200102a0b200341203602fc032003200341206a3602f803200341e8016a200341f8036a10b4032002102a20034185046a200341c0006a41086a2903003700002003418d046a200341c0006a41106a29030037000020034195046a200341c0006a41186a2903003700002003419d046a2003290360370000200341a5046a200341e0006a41086a290300370000200341ad046a200341e0006a41106a290300370000200341b5046a200341e0006a41186a290300370000200341c4046a200b360200200341c0046a200a360200200341003a00fc03200341063a00f803200320032903403700fd03200341f8036a21020b4100210b4101210a41014100200210cc012009102a0c070b1031000b201e41011037000b411e41011037000b412041011037000b411a41011037000b2009106a2009102a4100210b4101210a0c040b200141046a280200210941b49fc60021074113210820022d00000d022002280001220a41ff01714101470d022003200a4118763a00622003200a4108763b01602003200241216a2d00003a007f2003200241196a2900003700772003200241116a29000037006f2003200241096a2900003700672003200241056a2800003600634200210e200341f8036a41086a22024200370300200342003703f80341fbefc200411b200341f8036a1008200341f0026a41086a2002290300370300200320032903f8033703f002200341003602f803200341f0026a4110200341f8036a100621080240024020032802f8032207417f460d00200320073602ec01200320083602e801200341f8036a200341e8016a106d20032802f8032202450d0320032902fc03210e2007450d012008102a0c010b410121020b2002200e422088a7200341e0006a10cd0121070240200ea7450d002002102a0b024020070d0041b8a6c3002107411521080c030b4100210a2003410036028004200342013703f8032009200341f8036a10eb0120032802fc032107200328028004210820032802f8032102200341f0026a41186a220b4200370300200341f0026a41106a221e4200370300200341f0026a41086a221d4200370300200342003703f00220022008200341f0026a1000200341e8016a41186a2208200b290300370300200341e8016a41106a221c201e290300370300200341e8016a41086a221e201d290300370300200320032903f0023703e80102402007450d002002102a0b200341f8036a2009418801109a051a200341f0026a410d6a200341e0006a41086a290300370000200341f0026a41156a200341e0006a41106a290300370000200341f0026a411d6a200341e0006a41186a2903003700004101210b200341013a00f402200320032903603700f502200341013a00f002200341c0006a200341f8036a200341f0026a10f40120032d00482102200341f8036a410d6a201e290300370000200341f8036a41156a201c290300370000200341f8036a411d6a20082903003700002003419d046a20024102463a0000200341053a00fc03200341063a00f803200320032903e8013700fd0341014100200341f8036a10cc012009102a0b41012109410021070c040b41c4d1c300413320034188056a419cd9c3001038000b2009106a2009102a4101210b4100210a0b410121090c010b410021094101210b410021070b02402004410771417f6a220241024b0d0002400240024020020e03000102000b2009450d02200141086a280200450d02200141046a280200102a0c020b200a450d01200141046a2802002202106a2002102a0c010b200b450d00200141086a2802002202106a2002102a0b200020083602042000200736020020034190056a24000bfad30106017f027e017f017e157f017e230041b0086b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e12000102030405060708090a0b0c0d0e0f1013000b200341ac066a41013602002003420137029c06200341ccd1c5003602980620034104360254200341c4d1c5003602502003200341d0006a3602a80620034198066a41d4d1c500103e000b200141106a2903002104200141086a2903002105200141046a28020021062002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241046a2d00002115200241026a2f0100211602400240024020022d0000450d002003200737029c06200320083a009b06200320093a009a062003200a3b0198060c010b200241086a2d00002117200241066a2f01002118200241056a2d0000211920022d0001211a200320073703980641002102201a41ff01714101460d010b410121024104211941002117410021180b20032007370348200320083a0047200320093a00462003200a3b01442003200b3a00432003200c3a00422003200d3b01402003200e3a003f2003200f3a003e200320103b013c200320113a003b200320123a003a200320133b0138200320143a0037200320153a0032200320163b01302003201841ffff0371410874201741187472201941ff017172220a36003302402002450d00410f210841ea9fc6002109024002400240024002400240200a0e0700010203040565000b20032800372109200328003b21080c640b410e210841dc9fc60021090c630b410c210841d09fc60021090c620b4109210841c79fc60021090c610b4113210841b49fc60021090c600b4111210841a39fc60021090c5f0b200341b8036a41186a200341306a41186a290300370300200341b8036a41106a200341306a41106a290300370300200341b8036a41086a200341306a41086a290300370300200320032903303703b8030240200542808084fea6dee1115441002004501b450d0041e4d1c5002109410d21080c5f0b2003200341b8036a2005200410830202402003280200450d0041f1d1c5002109411a21080c5f0b20034188086a41086a220242003703002003420037038808419090c600411920034188086a1008200341e8076a41086a200229030037030020032003290388083703e807410021082003410036029806200341e8076a411020034198066a1006210202402003280298062209417f460d002002450d0020094104490d18200228000021082002102a0b20034188086a41086a220942003703002003420037038808419090c600411920034188086a1008200341e8076a41086a220a200929030037030020032003290388083703e8072003200841016a36029806200341e8076a411020034198066a41041007412010282202450d18200220032903b803370000200341ac066a428180808010370200200241186a200341b8036a41186a2217290300370000200241106a200341b8036a41106a2218290300370000200241086a200341b8036a41086a22192903003700002003200537039806200320023602a806200320043703a006200820034198066a10c404200341a0026a200610cf03200341d0006a200341a0026a418801109a051a200341e4016a2019290300370200200341ec016a2018290300370200200341f4016a2017290300370200200320083602d801200320032903b8033702dc0120094200370300200342003703880841ac89c500411520034188086a1008200a200929030037030020032003290388083703e8072003410036029806200341e8076a411020034198066a10062109024002402003280298062202417f460d002002210a20090d010b200341003602a0062003420137039806410020034198066a10b40120032802a0062102200328029c06210a20032802980621090b200320023602d0072003200a3602cc07200320093602c807024002402002450d0020034198066a20092002410110d6022003280298064101470d0120032802cc07450d5d20032802c807102a0c5d0b4101200341c8076a10b40120032802d801210a0240024020032802cc07220920032802d00722026b4104490d0020032802c80721090c010b200241046a22172002490d4b200941017422022017200220174b1b22024100480d4b0240024020090d002002102821090c010b20032802c80720092002102c21090b2009450d1b200320023602cc07200320093602c80720032802d00721020b2003200241046a3602d007200920026a200a360000200341d0006a200341c8076a10eb01200341dc016a200341c8076a108f010c5a0b200328029c0621170240200341a4066a2802002202200341a0066a2802002209460d0020032802d007200220096b6a220a41b0016a2218417f4c0d1b0240024020180d00410121190c010b201810282219450d1d0b2003201836028c0820032019360288082003200a36029008200320034188086a36029806201720034198066a200210d701200a2002490d1d2003280290082217200a490d1e20032802d00722172009490d1f200328028808211820032802c80721192003200a20026b220a3602302003201720096b221736028002200a2017470d20201820026a201920096a200a109a051a20032802d801210a02400240200328028c08220920032802900822026b4104490d0020032802880821090c010b200241046a22172002490d4b200941017422022017200220174b1b22024100480d4b0240024020090d002002102821090c010b20032802880820092002102c21090b2009450d222003200236028c08200320093602880820032802900821020b2003200241046a36029008200920026a200a360000200341d0006a20034188086a10eb01200341dc016a20034188086a108f012003280290082109200328028c08210a200328028808210220032802cc07450d5b20032802c807102a0c5b0b2003200341c8076a36029806201720034198066a200910d70120032802d801210a0240024020032802cc07220920032802d00722026b4104490d0020032802c80721090c010b200241046a22172002490d4a200941017422022017200220174b1b22024100480d4a0240024020090d002002102821090c010b20032802c80720092002102c21090b2009450d22200320023602cc07200320093602c80720032802d00721020b2003200241046a3602d007200920026a200a360000200341d0006a200341c8076a10eb01200341dc016a200341c8076a108f010c590b200141046a28020021162002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d002003200737029c06200320083a009b06200320093a009a062003200a3b0198060c010b200241086a2d00002117200241066a2f01002106200241056a2d0000211820022d0001211a200320073703980641002102201a41ff01714101460d010b410121024104211841002117410021060b2003200737039802200320083a009702200320093a0096022003200a3b019402200320193a0093022003200b3a0092022003200c3b0190022003200d3a008f022003200e3a008e022003200f3b018c02200320103a008b02200320113a008a02200320123b018802200320133a008702200320143a008202200320153b0180022003200641ffff0371410874201741187472201841ff017172220a3600830202402002450d00410f210841ea9fc6002109200a0e070f1213141555560f0b200341d0006a41186a20034180026a41186a290300370300200341d0006a41106a20034180026a41106a290300370300200341d0006a41086a20034180026a41086a290300370300200320032903800237035020034198066a201610b804024020032802a80622170d00418bd2c5002109412421084101210a0c570b200341b4066a280200210920034198066a41186a280200210820032802ac062102200341086a200341d0006a200329029c062207422086200335029806842204200341a4066a350200422086200742208884220710830220032802080d53200341306a41186a200341d0006a41186a290300370300200341306a41106a220a200341d0006a41106a290300370300200341306a41086a2218200341d0006a41086a29030037030020032003290350370330024020082002460d0020022106200821020c520b200241016a22062002490d48200241017422192006201920064b1b220641ffffff3f712006470d48200641057422194100480d480240024020020d002019102821170c010b201720024105742019102c21170b20170d51201941011037000b200141026a2d00002116200141046a280200211a20012d0001211b2002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d002003200737029c06200320083a009b06200320093a009a062003200a3b0198060c010b200241086a2d00002117200241066a2f01002106200241056a2d0000211820022d0001211c200320073703980641002102201c41ff01714101460d010b410121024104211841002117410021060b20032007370348200320083a0047200320093a00462003200a3b0144200320193a00432003200b3a00422003200c3b01402003200d3a003f2003200e3a003e2003200f3b013c200320103a003b200320113a003a200320123b0138200320133a0037200320143a0032200320153b01302003200641ffff0371410874201741187472201841ff017172220a36003302402002450d00410f210841ea9fc60021090240200a0e0700121314155556000b20032800372109200328003b21084101210a0c560b20034180026a41186a200341306a41186a290300220737030020034180026a41106a200341306a41106a290300220437030020034180026a41086a200341306a41086a290300220537030020032003290330221d3703800220034198066a41186a200737030020034198066a41106a200437030020034198066a41086a20053703002003201d3703980620034198066a201a201b41ff0171410047201610c50421090c4f0b200141026a2d00002116200141046a280200211a20012d0001211b2002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d002003200737029c06200320083a009b06200320093a009a062003200a3b0198060c010b200241086a2d00002117200241066a2f01002106200241056a2d0000211820022d0001211c200320073703980641002102201c41ff01714101460d010b410121024104211841002117410021060b2003200737039802200320083a009702200320093a0096022003200a3b019402200320193a0093022003200b3a0092022003200c3b0190022003200d3a008f022003200e3a008e022003200f3b018c02200320103a008b02200320113a008a02200320123b018802200320133a008702200320143a008202200320153b0180022003200641ffff0371410874201741187472201841ff017172220a3600830202402002450d00410f210841ea9fc6002109200a0e070d1011121353540d0b200341d0006a41186a20034180026a41186a290300370300200341d0006a41106a20034180026a41106a290300370300200341d0006a41086a20034180026a41086a2903003703002003200329038002370350410f10282202450d1f200241002900c9d245370000200241076a41002900d0d2453700002003428f808080f00137029c062003200236029806200341d0006a20034198066a108f0120032802a00621022003280298062108200341a0026a41186a22094200370300200341a0026a41106a220a4200370300200341a0026a41086a22174200370300200342003703a00220082002200341a0026a1000200341306a41186a2009290300370300200341306a41106a200a290300370300200341306a41086a2017290300370300200320032903a0023703300240200328029c06450d00200328029806102a0b20034198066a200341306a412010fd01200341e8046a41026a220a20032d009b063a0000200341e8076a41086a200341ac066a290200370300200341e8076a410d6a2217200341b1066a290000370000200320032f0099063b01e8042003200341a4066a2902003703e807410121020240024020032d0098064101460d00410b210841d8d2c50021090c010b20034198066a41086a2802002108200328029c062109200341c0046a41026a200a2d00003a000020034188056a41086a200341e8076a41086a29030037030020034188056a410d6a2017290000370000200320032f01e8043b01c004200320032903e80737038805410021020b200341106a41026a200341c0046a41026a2d00003a000020034188086a41086a220a20034188056a41086a29030037030020034188086a41106a20034188056a41106a290300370300200320032f01c0043b011020032003290388053703880820020d53200341d0056a41026a200341106a41026a2d000022023a0000200341b8036a41086a2217200a290300370300200341b8036a410d6a220a20034188086a410d6a290000370000200320032f011022063b01d00520032003290388083703b803200341ab066a2017290300370000200341b0066a200a290000370000200320023a009a06200320063b0198062003200836009f062003200936009b06200320032903b8033700a30620034198066a201a201b41ff0171410047201610c50421090c4e0b41a6f5c5002109410e210820022d0000417f6a221941024b0d52200141046a280200210b4101210a4101210641012118410121170240024020190e03005d01000b200241046a2d00000d534101210a410121064101211841012117200241086a28020041036c2002410c6a280200410174490d5c0b20034198066a200b10ca03024020032802980622024113470d0041f3d4c5002109410d21084101210a0c540b200341a0026a20034198066a410472419401109a051a20032002360250200341d0006a410472200341a0026a419401109a051a200341003602a0062003420137039806200341d0006a20034198066a10eb01200328029c06210820032802a00621092003280298062102200341a0026a41186a220a4200370300200341a0026a41106a22174200370300200341a0026a41086a22064200370300200342003703a00220022009200341a0026a1000200341b8036a41186a2209200a290300370300200341b8036a41106a220a2017290300370300200341b8036a41086a22172006290300370300200320032903a0023703b80302402008450d002002102a0b20034198066a41186a200929030037030020034198066a41106a200a29030037030020034198066a41086a2017290300370300200320032903b80337039806411710282202450d1f200241002900e3d2453700002002410f6a41002900f2d245370000200241086a41002900ebd24537000020034297808080f0023702d405200320023602d0052003200341d0056a3602a00220034198066a200341a0026a10c80120032802d005210220032802d8052108200341a0026a41186a22094200370300200341a0026a41106a220a4200370300200341a0026a41086a22174200370300200342003703a00220022008200341a0026a1000200341306a41186a2009290300370300200341306a41106a200a290300370300200341306a41086a2017290300370300200320032903a002370330024020032802d405450d0020032802d005102a0b4101210a200341306a41204101410041001003417f460d4c200341d0006a106a4180d5c5002109412521080c530b200141046a280200210a41a6f5c5002109410e210820022d0000417f6a221741024b0d4a0240024020170e03004c01000b200241086a2802004101742002410c6a280200490d4b200241046a28020041ff01710d4b0b20034188086a41086a22024200370300200342003703880841988bc500411620034188086a1008200341e8076a41086a200229030037030020032003290388083703e8070240200341e8076a41104101410041001003417f460d004194d3c5002109411521080c4b0b200341003602a0062003420137039806200a20034198066a10eb01200328029c06210820032802a00621092003280298062102200341a0026a41186a22174200370300200341a0026a41106a22064200370300200341a0026a41086a22184200370300200342003703a00220022009200341a0026a1000200341d0006a41186a22092017290300370300200341d0006a41106a2006290300370300200341d0006a41086a2018290300370300200320032903a00237035002402008450d002002102a0b20034198066a41186a200929030037030020034198066a41106a200341d0006a41106a29030037030020034198066a41086a200341d0006a41086a2903003703002003200329035037039806411310282202450d1f200241002900a9d3453700002002410f6a41002800b8d345360000200241086a41002900b1d34537000020034293808080b0023702d405200320023602d0052003200341d0056a3602a00220034198066a200341a0026a10c80120032802d005210220032802d8052108200341a0026a41186a22094200370300200341a0026a41106a22174200370300200341a0026a41086a22064200370300200342003703a00220022008200341a0026a1000200341306a41186a2009290300370300200341306a41106a2017290300370300200341306a41086a2006290300370300200320032903a002370330024020032802d405450d0020032802d005102a0b200341b8036a200341306a10e103024020032802bc032202450d0020032802b803210820032802c0032109109801211702402009450d002002102a0b201720084f0d0041fad2c5002109411a21080c4b0b20034198066a200a418801109b051a200341003a00a00720034188086a41086a22024200370300200342003703880841988bc500411620034188086a1008200341e8076a41086a200229030037030020032003290388083703e807200341003602a802200342013703a00220034198066a200341a0026a10eb01024020032d00a007220241024b0d00024002400240024020020e03000102000b410021080c020b410121080c010b410221080b200320083a00a8080240024020032802a40220032802a8022202460d0020032802a00221090c010b200241016a22082002490d46200241017422092008200920084b1b22084100480d460240024020020d002008102821090c010b20032802a00220022008102c21090b2009450d22200320083602a402200320093602a00220032d00a808210820032802a80221020b2003200241016a3602a802200920026a20083a00000b20032802a4022102200341e8076a411020032802a002220820032802a802100702402002450d002008102a0b20034198066a106a200a102a4100210a410121060c480b200141046a28020021080240024020022d0000417f6a220941024b0d00024020090e03000102000b200241046a2d00000d00200241086a2802004102742002410c6a28020041036c4f0d010b2008106a2008102a41a6f5c5002109410e2108410021064101210a410121180c530b20034198066a2008418801109a051a200341023a00a00720034188086a41086a22024200370300200342003703880841988bc500411620034188086a1008200341e8076a41086a200229030037030020032003290388083703e807200341003602582003420137035020034198066a200341d0006a10eb01024020032d00a007220241024b0d00024002400240024020020e03000102000b410021090c020b410121090c010b410221090b200320093a00a80802400240200328025420032802582202460d002003280250210a0c010b200241016a22092002490d452002410174220a2009200a20094b1b22094100480d450240024020020d0020091028210a0c010b200328025020022009102c210a0b200a450d22200320093602542003200a36025020032d00a8082109200328025821020b2003200241016a360258200a20026a20093a00000b20032802542102200341e8076a4110200328025022092003280258100702402002450d002009102a0b20034198066a106a2008102a410021064101210a0c470b200141046a28020021080240024020022d0000417f6a220941024b0d00024020090e03000102000b200241086a2802002002410c6a280200490d00200241046a28020041ff0171450d010b2008106a2008102a41a6f5c5002109410e2108410021184101210a410121060c520b20034198066a2008418801109a051a200341013a00a00720034188086a41086a22024200370300200342003703880841988bc500411620034188086a1008200341e8076a41086a200229030037030020032003290388083703e807200341003602582003420137035020034198066a200341d0006a10eb01024020032d00a007220241024b0d00024002400240024020020e03000102000b410021090c020b410121090c010b410221090b200320093a00a80802400240200328025420032802582202460d002003280250210a0c010b200241016a22092002490d442002410174220a2009200a20094b1b22094100480d440240024020020d0020091028210a0c010b200328025020022009102c210a0b200a450d22200320093602542003200a36025020032d00a8082109200328025821020b2003200241016a360258200a20026a20093a00000b20032802542102200341e8076a4110200328025022092003280258100702402002450d002009102a0b20034198066a106a2008102a410021184101210a410121060c470b200141286a2802002118200141246a2802002106200341e8056a200141196a290000370300200341e0056a200141116a290000370300200341d0056a41086a200141096a290000370300200320012900013703d0054101210a41a6f5c5002109410e210820022d0000417e6a221741014b0d4f0240024020170e020001000b200241046a2d00000d50200241086a28020041036c2002410c6a280200410174490d500b20034188086a41086a22024200370300200342003703880841988bc500411620034188086a1008200341e8076a41086a200229030037030020032003290388083703e80720034198066a200341e8076a10df032003280298062102200341a0026a20034198066a410472418401109a051a200320032800a107360288082003200341a4076a28000036008b08024020024113470d0041f2d3c5002109411021080c500b200341a0076a2d00002108200341b8036a200341a0026a418401109a051a20032002360250200341d0006a410472200341b8036a418401109a051a200841ff01710d4341c8d3c5002109412a21080c440b200341a0056a200141196a29000037030020034188056a41106a200141116a29000037030020034188056a41086a200141096a2900003703002003200129000137038805200241216a2f0000200241236a2d00004110747221082002411d6a2f00002002411f6a2d00004110747221092002410d6a2f00002002410f6a2d000041107472210a200241096a2f00002002410b6a2d0000411074722117200241056a2f0000200241076a2d0000411074722106200241206a2d0000210b200241106a2d0000210c2002410c6a2d0000210d200241086a2d0000210e0240024020022d00004102460d00410121180c010b200241246a2802002119200241116a2900002107200241046a2d0000210f2003200241196a2800003602a0062003200737039806410121180240200f4101460d000c010b2007421888a7210f2007a7210241002118200329029c0621070b200320083b019c022003419e026a20084110763a0000200320093b0198022003419a026a20094110763a0000200320023b018c02410e210820034180026a410e6a20024110763a00002003200a3b0188022003418a026a200a4110763a0000200320193a009f022003200b3a009b0220032007370390022003200f3a008f022003200c3a008b022003200d3a0087022003200e3a008302200320173b018402200320174110763a008602200320063b018002200320064110763a00820202402018450d0041a6f5c50021094101210a0c4f0b200341d0056a41186a20034180026a41186a290300370300200341d0056a41106a20034180026a41106a290300370300200341d0056a41086a20034180026a41086a29030037030020032003290380023703d00520034188086a41086a22024200370300200342003703880841988bc500411620034188086a1008200341e8076a41086a200229030037030020032003290388083703e80720034198066a200341e8076a10df032003280298062102200341a0026a20034198066a4104722208418401109a051a2003200341a4076a28000036008b08200320032800a10736028808024020024113460d00200341d0006a200341a0026a418401109a051a20032002360298062008200341d0006a418401109a051a200341003602a802200342013703a00220034198066a200341a0026a10eb0120032802a402210820032802a802210920032802a0022102200341a0026a41186a220a4200370300200341a0026a41106a22174200370300200341a0026a41086a22064200370300200342003703a00220022009200341a0026a1000200341b8036a41186a200a290300370300200341b8036a41106a2017290300370300200341b8036a41086a2006290300370300200320032903a0023703b80302402008450d002002102a0b20034188056a200341b8036a4120109c05210220034198066a106a02402002450d00411021084182d4c50021094101210a0c500b411310282202450d20200241002900a9d3453700002002410f6a41002800b8d345360000200241086a41002900b1d34537000020034293808080b002370254200320023602502003200341d0006a3602a00220034188056a200341a0026a10c8012003280250210220032802582108200341a0026a41186a22094200370300200341a0026a41106a220a4200370300200341a0026a41086a22174200370300200342003703a00220022008200341a0026a1000200341306a41186a2009290300370300200341306a41106a200a290300370300200341306a41086a2017290300370300200320032903a00237033002402003280254450d002003280250102a0b20034198066a200341306a10e103200328029c0622170d374101211741002118410021190c380b411421084192d4c50021094101210a0c4e0b4101210a20022d000120022d0000720d34200141046a28020010ce03410021090c490b4101210a20022d000120022d0000720d332001410c6a2802002119200141086a2802002108200141046a2802002109411710282202450d1e2002410f6a41002900918945370000200241086a410029008a894537000020024100290082894537000020024117412e102c2202450d1f2002200936001742002107200341a0026a41186a22174200370300200341a0026a41106a22064200370300200341a0026a41086a22184200370300200342003703a0022002411b200341a0026a1000200341306a41186a2017290300370300200341306a41106a2006290300370300200341306a41086a2018290300370300200320032903a0023703302002102a2003410036029806200341306a412020034198066a10062102024002402003280298062206417f470d00410821170c010b024020020d00410821170c010b200320063602542003200236025020034198066a200341d0006a1080012003280298062217450d21200329029c0621072006450d002002102a0b2007422088a721020240024002400240201720084190016c6a2206450d00200820024f0d0020062802004113460d01201720084190016c6a22084188016a2802002019470d012006106a20064113360200200841046a200341a0026a418401109a051a2008418c016a2003418b086a28000036000020084189016a200328008808360000411710282208450d252008410f6a41002900918945370000200841086a410029008a894537000020084100290082894537000020084117412e102c2208450d2620082009360017200341a0026a41186a22094200370300200341a0026a41106a22064200370300200341a0026a41086a22184200370300200342003703a0022008411b200341a0026a1000200341306a41186a2009290300370300200341306a41106a2006290300370300200341306a41086a2018290300370300200320032903a0023703302008102a20034198066a2017200210ac02200341306a4120200328029806220820032802a00610070240200328029c06450d002008102a0b20024190016c2108201721020340024020022802004113460d002002106a0b20024190016a2102200841f07e6a22080d000b410021092007a70d030c4c0b2002450d010b20024190016c2108201721020340024020022802004113460d002002106a0b20024190016a2102200841f07e6a22080d000b0b41a5d5c5002109411221082007a7450d4d2017102a0c4d0b2017102a0c480b200341b8036a41186a200141196a290000370300200341b8036a41106a200141116a290000370300200341b8036a41086a200141096a290000370300200320012900013703b8032002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d002003200737029c06200320083a009b06200320093a009a062003200a3b0198060c010b200241086a2d00002117200241066a2f01002106200241056a2d0000211820022d00012116200320073703980641002102201641ff01714101460d010b410121024100210641042118410021170b2003200737039802200320083a009702200320093a0096022003200a3b019402200320193a0093022003200b3a0092022003200c3b0190022003200d3a008f022003200e3a008e022003200f3b018c02200320103a008b02200320113a008a02200320123b018802200320133a008702200320143a008202200320153b0180022003200641ffff0371410874201841ff017172201741187472220a3600830202402002450d00410f210841ea9fc6002109200a0e07040708090a4a4b040b200341c0046a41186a20034180026a41186a290300370300200341c0046a41106a20034180026a41106a290300370300200341c0046a41086a20034180026a41086a29030037030020032003290380023703c004410f10282202450d22200241002900c9d245370000200241076a41002900d0d2453700002003428f808080f00137029c062003200236029806200341b8036a20034198066a108f0120032802a00621022003280298062108200341a0026a41186a22094200370300200341a0026a41106a220a4200370300200341a0026a41086a22174200370300200342003703a00220082002200341a0026a1000200341306a41186a2009290300370300200341306a41106a200a290300370300200341306a41086a2017290300370300200320032903a0023703300240200328029c06450d00200328029806102a0b0240200341306a41204101410041001003417f460d0041ccd4c5002109410f21084101210a0c4c0b200341d0006a41186a200341c0046a41186a290300370300200341d0006a41106a200341c0046a41106a290300370300200341d0006a41086a200341c0046a41086a290300370300200320032903c00437035020034198066a41186a200341b8036a41186a29030037030020034198066a41106a200341b8036a41106a29030037030020034198066a41086a200341b8036a41086a290300370300200320032903b80337039806410f10282202450d2341002109200241002900c9d245370000200241076a41002900d0d2453700002003428f808080f0013702d405200320023602d00520034198066a200341d0056a108f0120032802d805210220032802d0052108200341a0026a41186a220a4200370300200341a0026a41106a22174200370300200341a0026a41086a22064200370300200342003703a00220082002200341a0026a1000200341306a41186a200a290300370300200341306a41106a2017290300370300200341306a41086a2006290300370300200320032903a002370330024020032802d405450d0020032802d005102a0b2003412036029c062003200341306a36029806200341d0006a20034198066a10ff014101210a0c4b0b2002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d002003200737029c06200320083a009b06200320093a009a062003200a3b0198060c010b200241086a2d00002117200241066a2f01002106200241056a2d0000211820022d00012116200320073703980641002102201641ff01714101460d010b410121024100210641042118410021170b2003200737039802200320083a009702200320093a0096022003200a3b019402200320193a0093022003200b3a0092022003200c3b0190022003200d3a008f022003200e3a008e022003200f3b018c02200320103a008b02200320113a008a02200320123b018802200320133a008702200320143a008202200320153b0180022003200641ffff0371410874201841ff017172201741187472220a3600830202402002450d00410f210841ea9fc6002109200a0e070306070809494a030b200341c0046a41186a20034180026a41186a2903002207370300200341c0046a41106a20034180026a41106a2903002204370300200341c0046a41086a20034180026a41086a29030022053703002003200329038002221d3703c00420034198066a41186a200737030020034198066a41106a200437030020034198066a41086a20053703002003201d37039806410f10282202450d2341002109200241002900c9d245370000200241076a41002900d0d2453700002003428f808080f0013702542003200236025020034198066a200341d0006a108f012003280258210220032802502108200341a0026a41186a220a4200370300200341a0026a41106a22174200370300200341a0026a41086a22064200370300200342003703a00220082002200341a0026a1000200341306a41186a200a290300370300200341306a41106a2017290300370300200341306a41086a2006290300370300200320032903a00237033002402003280254450d002003280250102a0b200341306a412010094101210a0c460b200341d0056a41186a200141196a290000370300200341d0056a41106a200141116a290000370300200341d0056a41086a200141096a290000370300200320012900013703d0052002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d002003200737029c06200320083a009b06200320093a009a062003200a3b0198060c010b200241086a2d00002117200241066a2f01002106200241056a2d0000211820022d00012116200320073703980641002102201641ff01714101460d010b410121024100210641042118410021170b200320073703d804200320083a00d704200320093a00d6042003200a3b01d404200320193a00d3042003200b3a00d2042003200c3b01d0042003200d3a00cf042003200e3a00ce042003200f3b01cc04200320103a00cb04200320113a00ca04200320123b01c804200320133a00c704200320143a00c204200320153b01c0042003200641ffff0371410874201841ff017172201741187472220a3600c30402402002450d00410f210841ea9fc60021090240200a0e070006070809494a000b20032800c704210920032800cb0421084101210a0c4a0b200341b8036a41186a200341c0046a41186a290300370300200341b8036a41106a200341c0046a41106a290300370300200341b8036a41086a200341c0046a41086a290300370300200320032903c0043703b803410f10282202450d23200241002900c9d245370000200241076a41002900d0d2453700002003428f808080f0013702cc07200320023602c807200341d0056a200341c8076a108f0120032802d007210220032802c8072108200341a0026a41186a22094200370300200341a0026a41106a220a4200370300200341a0026a41086a22174200370300200342003703a00220082002200341a0026a1000200341306a41186a2009290300370300200341306a41106a200a290300370300200341306a41086a2017290300370300200320032903a002370330024020032802cc07450d0020032802c807102a0b20034198066a200341306a412010fd0120034180026a41086a200341a1066a29000037030020034190026a200341a9066a29000037030020034180026a41186a200341b1066a290000370300200320032900990637038002410121020240024020032d0098064101460d00410b210841d8d2c50021090c010b200341e8046a41026a20032d00820222023a0000200341e8076a41086a220a20034193026a290000370300200341e8076a410d6a221720034198026a290000370000200341c0046a41026a20023a0000200320032f01800222023b01e8042003200329008b0222073703e807200320023b01c0042003280083022109200328008702210820034188056a410d6a201729000037000020034188056a41086a200a2903003703002003200737038805410021020b200341106a41026a220a200341c0046a41026a2d00003a000020034188086a41086a221720034188056a41086a29030037030020034188086a41106a20034188056a41106a290300370300200320032f01c0043b011020032003290388053703880820020d48200341e3006a2017290300370000200341d0006a41186a20034195086a290000370000200320032f01103b01502003200836005720032009360053200320032903880837005b2003200a2d00003a00520240200341d0006a200341b8036a4120109c05450d0041dbd4c5002109410b21084101210a0c4a0b20034198066a41186a200341d0056a41186a29030037030020034198066a41106a200341d0056a41106a29030037030020034198066a41086a200341d0056a41086a290300370300200320032903d00537039806410f10282202450d2441002109200241002900c9d245370000200241076a41002900d0d2453700002003428f808080f0013702542003200236025020034198066a200341d0006a108f012003280258210220032802502108200341a0026a41186a220a4200370300200341a0026a41106a22174200370300200341a0026a41086a22064200370300200342003703a00220082002200341a0026a100020034180026a41186a200a29030037030020034180026a41106a201729030037030020034180026a41086a2006290300370300200320032903a0023703800202402003280254450d002003280250102a0b20034180026a412010094101210a0c490b200141216a2d00002116200341106a41186a200141196a290000370300200341106a41106a200141116a290000370300200341106a41086a200141096a290000370300200320012900013703102002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d002003200737029c06200320083a009b06200320093a009a062003200a3b0198060c010b200241086a2d00002117200241066a2f01002106200241056a2d0000211820022d0001211a200320073703980641002102201a41ff01714101460d010b410121024100210641042118410021170b2003200737039802200320083a009702200320093a0096022003200a3b019402200320193a0093022003200b3a0092022003200c3b0190022003200d3a008f022003200e3a008e022003200f3b018c02200320103a008b02200320113a008a02200320123b018802200320133a008702200320143a008202200320153b0180022003200641ffff0371410874201841ff017172201741187472220a360083022002450d01410f210841ea9fc6002109200a0e0700030405064647000b2003280087022109200328008b0221084101210a0c470b200341c0046a41186a20034180026a41186a2903002207370300200341c0046a41106a20034180026a41106a2903002204370300200341c0046a41086a20034180026a41086a29030022053703002003200329038002221d3703c004200341e8046a41186a2007370300200341e8046a41106a2004370300200341e8046a41086a20053703002003201d3703e80420034188056a41186a200341106a41186a29030037030020034188056a41106a200341106a41106a29030037030020034188056a41086a200341106a41086a2903003703002003200329031037038805200320163a00a805411510282202450d22200241002900d088453700002002410d6a41002900dd8845370000200241086a41002900d8884537000020034295808080d00237029c062003200236029806200341e8046a20034198066a108f0120032802a00621022003280298062108200341a0026a41186a22094200370300200341a0026a41106a220a4200370300200341a0026a41086a22174200370300200342003703a00220082002200341a0026a1000200341306a41186a2009290300370300200341306a41106a200a290300370300200341306a41086a2017290300370300200320032903a0023703300240200328029c06450d00200328029806102a0b2003410036029806200341306a412020034198066a1006210202400240200328029806220a417f460d002002450d002003200a3602bc03200320023602b80320034198066a200341b8036a10b10120032d00b90622084102460d25200341d0006a41186a2217200341d2066a290100370300200341d0006a41106a2206200341ca066a290100370300200341d0006a41086a2218200341c2066a290100370300200341a0026a41086a2219200341e3066a290000370300200341a0026a41106a220b200341eb066a290000370300200341a0026a41186a220c200341f3066a290000370300200320032901ba063703502003200341db066a2900003703a002200341da066a2d000021090240200a450d002002102a0b200341b8036a41186a2017290300370300200341b8036a41106a2006290300370300200341b8036a41086a201829030037030020034188086a41086a201929030037030020034188086a41106a200b29030037030020034188086a41186a200c290300370300200320032903503703b803200320032903a002370388080c010b200341a0026a41186a22024200370300200341a0026a41106a22084200370300200341a0026a41086a22094200370300200342003703a00241e588c500411d200341a0026a100020034198066a41186a220a200229030037030020034198066a41106a2217200829030037030020034198066a41086a22062009290300370300200320032903a00237039806200341d0056a20034198066a412010fd010240024020032d00d0050d00200242003703002008420037030020094200370300200342003703a00241e588c500411d200341a0026a1000200a20022903003703002017200829030037030020062009290300370300200320032903a0023703980620034120360254200320034198066a360250200341e8046a200341d0006a10ff01410021090c010b200341c8076a41186a200341e9056a290000370300200341c8076a41106a200341e1056a290000370300200341c8076a41086a200341d9056a290000370300200320032900d1053703c807200341e8076a200341c8076a10b0012003410036029806200341e8076a412020034198066a100621022003280298062208417f460d272002450d27200320083602542003200236025020034198066a200341d0006a10b10120032d00b906220a4102460d2620034188086a41186a220920034198066a41186a29030037030020034188086a41106a221720034198066a41106a29030037030020034188086a41086a220620034198066a41086a29030037030020032003290398063703880820032d00b8062118200341a0026a200341ba066a221941c100109a051a02402008450d002002102a0b200341d0006a41186a22022009290300370300200341d0006a41106a22082017290300370300200341d0006a41086a220920062903003703002003200329038808370350200341b8036a200341a0026a41c100109a051a200341a0026a41186a22172002290300370300200341a0026a41106a22062008290300370300200341a0026a41086a220b2009290300370300200320032903503703a0022003200a3a00980620034198066a410172200341b8036a41c100109a051a20022017290300370300200820062903003703002009200b290300370300200341f8006a2019410020032d00b9064101461b360200200320032903a002370350200320183a00702003200341e8046a360274200341003602c003200342013703b803200341d0006a200341b8036a108f01024020032d0070220241064b0d000240024002400240024002400240024020020e0700010203040506000b410021080c060b410121080c050b410221080c040b410321080c030b410421080c020b410521080c010b410621080b200320083a00a8080240024020032802bc0320032802c0032202460d0020032802b80321090c010b200241016a22082002490d3c200241017422092008200920084b1b22084100480d3c0240024020020d002008102821090c010b20032802b80320022008102c21090b2009450d2a200320083602bc03200320093602b80320032d00a808210820032802c00321020b2003200241016a3602c003200920026a20083a00000b200341f4006a200341b8036a10aa0120032802bc032102200341e8076a412020032802b803220820032802c003100702402002450d002008102a0b200341a0026a41186a22024200370300200341a0026a41106a22084200370300200341a0026a41086a22094200370300200342003703a00241e588c500411d200341a0026a100020034198066a41186a200229030037030020034198066a41106a200829030037030020034198066a41086a2009290300370300200320032903a0023703980620034120360254200320034198066a360250200341e8046a200341d0006a10ff0120034188086a41086a200341c8076a41086a29030037030020034188086a41106a200341c8076a41106a29030037030020034188086a41186a200341c8076a41186a290300370300200320032903c80737038808410121090b410021080b200341a5066a200341b8036a41086a290300370000200341ad066a200341b8036a41106a290300370000200341b5066a200341b8036a41186a290300370000200341bd066a20093a0000200341be066a200329038808370100200341c6066a20034188086a41086a290300370100200341ce066a20034188086a41106a290300370100200341d6066a20034188086a41186a290300370100200320083a009c06200320032903b80337009d06200320034188056a36029806200341003602582003420137035020034188056a200341d0006a108f01024020032d00a805220241064b0d000240024002400240024002400240024020020e0700010203040506000b410021080c060b410121080c050b410221080c040b410321080c030b410421080c020b410521080c010b410621080b200320083a00a80802400240200328025420032802582202460d00200328025021090c010b200241016a22082002490d3a200241017422092008200920084b1b22084100480d3a0240024020020d002008102821090c010b200328025020022008102c21090b2009450d29200320083602542003200936025020032d00a8082108200328025821020b2003200241016a360258200920026a20083a00000b20034198066a410472200341d0006a10a90120032802542102200341306a4120200328025022082003280258100702402002450d002008102a0b200342e4cab5fbb6ccdcb0e3003703e004200341e0046a200341c0046a417f10a80220034198066a41086a41083a0000200341a1066a20032903c004370000200341a9066a200341c0046a41086a290300370000200341b1066a200341c0046a41106a290300370000200341b9066a200341c0046a41186a290300370000200341c1066a2003290310370000200341c9066a200341106a41086a290300370000200341d1066a200341106a41106a290300370000200341d9066a200341106a41186a290300370000200341053a009806410021094101210a4101410020034198066a10cc010c420b2002411a6a2901002107200241196a2d00002117200241186a2d00002106200241166a2f01002118200241156a2d00002110200241146a2d00002111200241126a2f01002112200241116a2d00002113200241106a2d000021192002410e6a2f0100210b2002410d6a2d0000210c2002410c6a2d0000210d2002410a6a2f0100210e200241096a2d0000210f200241046a2d00002114200241026a2f0100211502400240024020022d0000450d002003200737029c06200320173a009b06200320063a009a06200320183b0198060c010b200241086a2d00002108200241066a2f01002109200241056a2d0000210a20022d00012116200320073703980641002102201641ff01714101460d010b41012102410021094104210a410021080b200941ffff0371410874200a41ff017172200841187472210a2002450d04410f210841ea9fc60021090240200a0e0700010203044445000b200e410874200f72200d411874722109200b410874200c7220194118747221084101210a0c450b410e210841dc9fc60021094101210a0c440b410c210841d09fc60021094101210a0c430b4109210841c79fc60021094101210a0c420b4113210841b49fc60021094101210a0c410b2003200737038005200320173a00ff04200320063a00fe04200320183b01fc04200320103a00fb04200320113a00fa04200320123b01f804200320133a00f704200320193a00f6042003200b3b01f4042003200c3a00f3042003200d3a00f2042003200e3b01f0042003200f3a00ef042003200a3600eb04200320143a00ea04200320153b01e804411510282202450d22200241002900d08845370000410d21082002410d6a41002900dd8845370000200241086a41002900d8884537000020034295808080d00237025420032002360250200341e8046a200341d0006a108f012003280258210220032802502109200341a0026a41186a220a4200370300200341a0026a41106a22174200370300200341a0026a41086a22064200370300200342003703a00220092002200341a0026a100020034198066a41186a200a29030037030020034198066a41106a201729030037030020034198066a41086a2006290300370300200320032903a0023703980602402003280254450d002003280250102a0b024020034198066a41204101410041001003417f470d0041e6d4c50021094101210a0c410b411510282202450d23200241002900d088453700002002410d6a41002900dd8845370000200241086a41002900d8884537000020034295808080d00237029c062003200236029806200341e8046a20034198066a108f0120032802a00621022003280298062108200341a0026a41186a22094200370300200341a0026a41106a220a4200370300200341a0026a41086a22174200370300200342003703a00220082002200341a0026a1000200341c0046a41186a2009290300370300200341c0046a41106a200a290300370300200341c0046a41086a2017290300370300200320032903a0023703c0040240200328029c06450d00200328029806102a0b2003410036029806200341c0046a412020034198066a100621022003280298062209417f460d252002450d25200320093602542003200236025020034198066a200341d0006a10b10120032d00b90622084102460d2420034188086a41186a20034198066a41186a29030037030020034188086a41106a20034198066a41106a29030037030020034188086a41086a20034198066a41086a29030037030020032003290398063703880820032d00b8062117200341a0026a200341ba066a41c100109a051a02402009450d002002102a0b200341c0046a412010090c260b41c4d1c3004133200341a8086a419cd9c3001038000b412041011037000b200241011037000b1036000b201841011037000b2002200a1044000b200a2017103c000b200920171044000b200341d0056a41146a4108360200200341dc056a412536020020034188056a41146a41033602002003420337028c05200341c8afc60036028805200341253602d4052003200341306a3602c004200320034180026a3602e804200342043703a8062003420137029c062003419cb0c600360298062003200341d0056a36029805200320034198066a3602e0052003200341e8046a3602d8052003200341c0046a3602d00520034188056a41d8b0c600103e000b200241011037000b200241011037000b410f41011037000b411741011037000b411341011037000b200841011037000b200941011037000b200941011037000b411341011037000b411741011037000b412e41011037000b41c4d1c3004133200341a8086a419cd9c3001038000b411741011037000b412e41011037000b410f41011037000b410f41011037000b410f41011037000b410f41011037000b410f41011037000b411541011037000b41c4d1c3004133200341a8086a419cd9c3001038000b41c4d1c3004133200341a8086a419cd9c3001038000b41b7b3c0004192011050000b200841011037000b200841011037000b411541011037000b411541011037000b41c4d1c3004133200341a8086a419cd9c3001038000b410221080b200341c8076a41186a220220034188086a41186a290300370300200341c8076a41106a220920034188086a41106a290300370300200341c8076a41086a220a20034188086a41086a29030037030020032003290388083703c80720034188056a200341a0026a41c100109a051a200341306a41086a2206200a290300370300200341306a41106a220a2009290300370300200341306a41186a22092002290300370300200320032903c807370330200341d0056a20034188056a41c100109a051a41072102024020084102460d0020034180026a41186a200929030037030020034180026a41106a200a29030037030020034180026a41086a20062903003703002003200329033037038002200320083a0050200341d0006a410172200341d0056a41c100109a05210a200341f2006a21094100210202400240024002400240024002400240024020032d00714101470d0020034198066a200910b001200341a0026a41186a20034198066a41186a22082900002207370300200341a0026a41106a20034198066a41106a22062900002204370300200341a0026a41086a20034198066a41086a221829000022053703002003200329009806221d3703a0022008200737030020062004370300201820053703002003201d37039806412010282202450d012002200329039806370000200241186a2008290300370000200241106a2006290300370000200241086a201829030037000020032d005021080b0240200841ff01714101460d0020032d00714101460d03200341a0026a41186a22084200370300200341a0026a41106a22094200370300200341a0026a41086a220a4200370300200342003703a00241e588c500411d200341a0026a100020034198066a41186a200829030037030020034198066a41106a200929030037030020034198066a41086a200a290300370300200320032903a0023703980620034198066a412010090c070b20034198066a200a10b001200341a0026a41186a20034198066a41186a2903002207370300200341a0026a41106a20034198066a41106a2903002204370300200341a0026a41086a20034198066a41086a29030022053703002003200329039806221d3703a002200341e8076a41186a22092007370300200341e8076a41106a220a2004370300200341e8076a41086a220620053703002003201d3703e807412010282208450d01200820032903e807370000200841186a2009290300370000200841106a200a290300370000200841086a200629030037000020034100360298062008412020034198066a1006210a2003280298062206417f460d04200a450d042003200636028c082003200a3602880820034198066a20034188086a10b10120032d00b90622194102460d03200341f1006a2109200341a0026a41206a220b20034198066a41206a22182d00003a0000200341a0026a41186a220c20034198066a41186a220d290300370300200341a0026a41106a220e20034198066a41106a220f290300370300200341a0026a41086a221020034198066a41086a221129030037030020032003290398063703a002200341b8036a200341ba066a221241c100109a051a02402006450d00200a102a0b201220032900b8033701002018200b2d00003a0000200d200c290300370300200f200e29030037030020112010290300370300200341c2066a200341b8036a41086a290000370100200341ca066a200341b8036a41106a290000370100200341d2066a200341b8036a41186a290000370100200320032903a00237039806200320193a00b906200341fa066a200941206a2d00003a0000200341f2066a200941186a290000370100200341ea066a200941106a290000370100200341e2066a200941086a290000370100200341da066a2009290000370100200341003602a802200342013703a00220034198066a200341a0026a108f01024020182d0000220941064b0d000240024002400240024002400240024020090e0700010203040506000b4100210a0c060b4101210a0c050b4102210a0c040b4103210a0c030b4104210a0c020b4105210a0c010b4106210a0b2003200a3a00a8080240024020032802a40220032802a8022209460d0020032802a00221060c010b200941016a220a2009490d1620094101742206200a2006200a4b1b220a4100480d160240024020090d00200a102821060c010b20032802a0022009200a102c21060b2006450d072003200a3602a402200320063602a00220032d00a808210a20032802a80221090b2003200941016a3602a802200620096a200a3a00000b200341b9066a200341a0026a10a90120032802a40221092008412020032802a002220a20032802a802100702402009450d00200a102a0b2008102a4101210a0c070b412041011037000b412041011037000b200341a0026a41186a22084200370300200341a0026a41106a220a4200370300200341a0026a41086a22064200370300200342003703a00241e588c500411d200341a0026a100020034198066a41186a200829030037030020034198066a41106a200a29030037030020034198066a41086a2006290300370300200320032903a00237039806200341203602a402200320034198066a3602a0022009200341a0026a10ff010c030b41c4d1c3004133200341a8086a419cd9c3001038000b41e2bbc00041d8001050000b200a41011037000b410021084100210a0b024002400240024002400240024020020d00410021090c010b20034100360298062002412020034198066a100621092003280298062206417f460d022009450d02200320063602bc03200320093602b80320034198066a200341b8036a10b10120032d00b9064102460d0120034188086a41186a221820034198066a41186a221929030037030020034188086a41106a220b20034198066a41106a220c29030037030020034188086a41086a220d20034198066a41086a220e29030037030020032003290398063703880820032d00b806210f200341a0026a200341ba066a221041c100109a051a02402006450d002009102a0b20192018290300370300200c200b290300370300200e200d2903003703002003200329038808370398062003200f3a00b8062010200341a0026a41c100109a051a200341c1066a200341d0006a41086a290300370000200341c9066a200341d0006a41106a290300370000200341d1066a200341d0006a41186a29030037000020034198066a41c1006a200341d0006a41206a2d00003a0000200320032903503700b906200341003602a802200342013703a00220034198066a200341a0026a108f01024020032d00b806220941064b0d000240024002400240024002400240024020090e0700010203040506000b410021060c060b410121060c050b410221060c040b410321060c030b410421060c020b410521060c010b410621060b200320063a00a8080240024020032802a40220032802a8022209460d0020032802a00221180c010b200941016a22062009490d14200941017422182006201820064b1b22064100480d140240024020090d002006102821180c010b20032802a00220092006102c21180b2018450d05200320063602a402200320183602a00220032d00a808210620032802a80221090b2003200941016a3602a802201820096a20063a00000b200341b9066a200341a0026a10a90120032802a40221092002412020032802a002220620032802a802100702402009450d002006102a0b2002102a410121090b200a20084572450d030c040b41c4d1c3004133200341a8086a419cd9c3001038000b41e2bbc00041d8001050000b200641011037000b2008102a0b02402002452009720d002002102a0b201721020b1098012108200342e4cab5fbb6ccdcb0e30037035041002109200341d0006a200341e8046a427f427f200841002002200241ff01714107461b41187441187541027441f48fc6006a2802004180de346c6a410210a90220034198066a41086a41093a000020034198066a41096a20032903e804370000200341a9066a200341e8046a41086a290300370000200341b1066a200341e8046a41106a290300370000200341b9066a200341e8046a41186a290300370000200341053a0098064101410020034198066a10cc014101210a0c190b41a39fc6002109411121080c180b20032802a006211820032903a0062207a7211941002102024002402007422088a7220641014b0d0020060e020201020b2006210803402008410176220920026a220a20022017200a4105746a200341d0056a4120109c054101481b2102200820096b220841014b0d000b0b201720024105746a200341d0056a4120109c052208450d0a0c010b20034198066a41186a200341d0056a41186a29030037030020034198066a41106a200341d0056a41106a29030037030020034198066a41086a200341d0056a41086a290300370300200320032903d005370398064100210620034198066a2108410021090c010b20034198066a41186a200341d0056a41186a29030037030020034198066a41106a200341d0056a41106a29030037030020034198066a41086a200341d0056a41086a290300370300200320032903d005370398062008411f7620026a220920064b0d0120034198066a21080b20062019460d012018210a0c020b41f8b0c0001032000b024020182006460d002018210a0c010b201841016a22022018490d042018410174220a2002200a20024b1b220a41ffffff3f71200a470d04200a41057422024100480d040240024020180d002002102821170c010b201720184105742002102c21170b2017450d010b201720094105746a220241206a2002200620096b410574109b051a200241186a200841186a290000370000200241106a200841106a290000370000200241086a200841086a290000370000200220082900003700001098012108411310282202450d01200241002900a9d3453700002002410f6a41002800b8d345360000200241086a41002900b1d34537000020034293808080b00237029c062003200236029806200320034198066a36025020034188056a200341d0006a10c801200328029806210220032802a0062109200341a0026a41186a22184200370300200341a0026a41106a22194200370300200341a0026a41086a220b4200370300200342003703a00220022009200341a0026a1000200341306a41186a2018290300370300200341306a41106a2019290300370300200341306a41086a200b290300370300200320032903a0023703300240200328029c06450d00200328029806102a0b410410282202450d0220034284808080c00037029c0620032002360298062002200841809c316a2209360000200641016a220220034198066a10b40102402002450d00200641057441206a2108201721020340200220034198066a108f01200241206a2102200841606a22080d000b0b200328029c062102200341306a4120200328029806220820032802a006100702402002450d002008102a0b0240200a450d002017102a0b20034198066a41086a410a3a0000200341a1066a20032903d005370000200341c1066a200329038805370000200341a9066a200341d0056a41086a290300370000200341b1066a200341d0056a41106a290300370000200341b9066a200341d0056a41186a290300370000200341c9066a20034188056a41086a290300370000200341d1066a20034188056a41106a290300370000200341d9066a20034188056a41186a290300370000200341053a009806200341e4066a2009360200410021094101410020034198066a10cc0120034188086a41086a22024200370300200342003703880841988bc500411620034188086a1008200341e8076a41086a200229030037030020032003290388083703e807200341e8076a411010094101210a0c110b200241011037000b411341011037000b410441011037000b1031000b41a6d4c5002109412621082019450d0b2017102a4101210a0c0c0b200341003602a0062003420137039806200341d0006a20034198066a10eb01200328029c06210920032802a00621172003280298062102200341a0026a41186a22194200370300200341a0026a41106a220b4200370300200341a0026a41086a220c4200370300200342003703a00220022017200341a0026a100020034198066a41186a201929030037030020034198066a41106a200b29030037030020034198066a41086a200c290300370300200320032903a0023703980602402009450d002002102a0b0240200341d0056a20034198066a4120109c05450d0041bcd3c5002109410c21080c010b20034188086a41086a22024200370300200342003703880841988bc500411620034188086a1008200341e8076a41086a200229030037030020032003290388083703e807200341e8076a41101009109801210220034198066a200341d0006a418801109a051a200341a0026a200220064180a30520064180a3054b1b6a20034198066a2008201810b704024020032802a0024101470d0020032802a4022209450d00200341a0026a41086a28020021080c0c0b410021090c0b0b200341d0006a106a0c0a0b410121180b41012117410021090c100b200a106a200a102a410121064100210a410121180c080b200341013a00880520034198066a41186a200341b8036a41186a29030037030020034198066a41106a200341b8036a41106a29030037030020034198066a41086a200341b8036a41086a290300370300200320032903b803370398060240411710282202450d0041002109200241002900e3d2453700002002410f6a41002900f2d245370000200241086a41002900ebd24537000020034297808080f0023702d405200320023602d0052003200341d0056a3602a00220034198066a200341a0026a10c80120032802d005210220032802d8052108200341a0026a41186a220a4200370300200341a0026a41106a22174200370300200341a0026a41086a22064200370300200342003703a00220022008200341a0026a1000200341306a41186a200a290300370300200341306a41106a2017290300370300200341306a41086a2006290300370300200320032903a002370330024020032802d405450d0020032802d005102a0b4101210a200341306a412020034188056a41011007200b10ce03200341d0006a106a0c030b411741011037000b412221084101210a0c050b201720024105746a22022003290330370000200241186a200341306a41186a290300370000200241106a200a290300370000200241086a20182903003700004101210a20034198066a41186a200841016a360200200341ac066a2006360200200320073703a0062003200437039806200320093602b406200320173602a806201620034198066a10c404410021090b4101210641012118410121170c0b0b41afd2c5002109411a21082002450d012017102a4101210a0c020b4111210841a39fc60021090b4101210a0b41012106410121180b410121170c060b20032802d007210920032802cc07210a20032802c80721020b2002450d00200341e8076a4110200220091007200a450d012002102a0c010b41b00110282202450d01200320032802d8013602a00720034198066a200341d0006a10cf0320034198066a41a4016a200341d0006a41a4016a29020037020020034198066a419c016a200341d0006a419c016a29020037020020034198066a4194016a200341d0006a4194016a290200370200200320032902dc013702a407200220034198066a41b001109a05210220034188086a41086a22094200370300200342003703880841ac89c500411520034188086a1008200341e8076a41086a200929030037030020032003290388083703e8072003411036029c062003200341e8076a360298062002410120034198066a10ef012002106a2002102a0b200341d0006a106a200341b0066a2004370300200341a8066a2005370300200341a4066a200836020041002117200341a0066a41003a0000200341053a0098064101210a4101410020034198066a10cc012006106a2006102a4101210641012118410021090c020b41b00141081037000b2006106a2006102a410021174101210a41012106410121180b0240024020012d0000417f6a2202410f4b0d00024002400240024020020e1000040404040102030404040405040505000b2017450d04200141046a2202280200106a2002280200102a0c040b200a450d03200141046a2202280200106a2002280200102a0c030b2006450d02200141046a2202280200106a2002280200102a0c020b2018450d01200141046a2202280200106a2002280200102a0c010b200241074b0d00024002400240024020020e080004040404010203000b200141046a2202280200106a2002280200102a0c030b200141046a2202280200106a2002280200102a0c020b200141046a2202280200106a2002280200102a0c010b200141046a2202280200106a2002280200102a0b2000200836020420002009360200200341b0086a24000b8b0708047f047e057f027e017f017e017f017e230041a0016b2202240041002103200241003a0098012001280204417f6a210402400240024003402004417f460d01200241f8006a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a0098012004417f6a21042005210320054120470d000b200241d8006a41186a200241f8006a41186a290300370300200241d8006a41106a200241f8006a41106a290300370300200241d8006a41086a200241f8006a41086a29030037030020022002290378370358200241c0006a2001109f012002290340a7450d01200041003602200c020b0240200341ff0171450d00200241003a0098010b200041003602200c010b200241c0006a41106a290300210620022903482107200241286a2001109f0102402002290328a7450d00200041003602200c010b200241286a41106a290300210820022903302109200241206a2001106c02400240024002400240024020022802200d00200128020441186e220a41186c2204417f4c0d022002280224210b0240024020040d004108210c0c010b20041028220c450d040b0240200b450d00200241086a41106a210d4100210e41002105410021030340200241086a2001109f01024002402002290308a70d00200d290300210f2002290310211020022001106c2002280200450d010b200a450d03200c102a0c030b200341016a21042002280204211102402003200a470d00200e2004200e20044b1b220aad42187e2212422088a70d082012a722134100480d080240024020030d0020131028210c0c010b200c20052013102c210c0b200c450d070b200c20056a2203200f37030820032010370300200341106a2011360200200e41026a210e200541186a210520042103200b2004470d000b0b200c0d010b200041003602200c050b200241f8006a41186a200241d8006a41186a290300220f370300200241f8006a41106a200241d8006a41106a2903002210370300200241f8006a41086a200241d8006a41086a2903002212370300200220022903582214370378200041186a2008370300200020093703102000200637030820002007370300200041286a200b3602002000200a3602242000200c3602202000412c6a2014370200200041346a20123702002000413c6a2010370200200041c4006a200f3702000c040b1036000b200441081037000b201341081037000b1031000b200241a0016a24000bde0401067f230041306b2202240002400240024002400240411010282203450d00200341086a4100290097a5423700002003410029008fa54237000020024290808080800237021420022003360210410d200241106a10b40102400240024020022802142204200228021822056b410d490d002005410d6a2106200228021021030c010b2005410d6a22062005490d01200441017422032006200320064b1b22074100480d010240024020040d002007102821030c010b200228021020042007102c21030b2003450d032002200736021420022003360210200721040b20022006360218200320056a22054100290082a542370000200541056a4100290087a54237000020022003200610df0202402004450d002003102a0b20022802082203417f4c0d03200228020021050240024020030d0041012106410021040c010b20032104200310282206450d050b200620052003109a05210702402002280204450d002005102a0b200241106a200110e0020240200420036b4120490d00200341206a21050c060b200341206a22052003490d00200441017422062005200620054b1b22014100480d000240024020040d002001102821060c010b200720042001102c21060b02402006450d00200121040c060b200141011037000b1031000b411041011037000b200741011037000b1036000b200341011037000b200620036a22032002290010370000200341186a200241106a41186a290000370000200341106a200241106a41106a290000370000200341086a200241106a41086a290000370000200020053602082000200436020420002006360200200241306a24000bd00a010b7f230041c0006b2202240002400240024002400240024002400240024002400240411010282203450d00200341086a41002900b1c042370000200341002900a9c04237000020024290808080800237022420022003360220410d200241206a10b40102400240024020022802242204200228022822056b410d490d002005410d6a2106200228022021030c010b2005410d6a22062005490d01200441017422032006200320064b1b22074100480d010240024020040d002007102821030c010b200228022020042007102c21030b2003450d032002200736022420022003360220200721040b20022006360228200320056a22054100290082a542370000200541056a4100290087a54237000020022003200610df0202402004450d002003102a0b20022802082206417f4c0d03200228020021030240024020060d0041012107410021080c010b20062108200610282207450d050b200720032006109a05210902402002280204450d002003102a0b2001410c6a28020041046a2204417f4c0d03024002402004450d00200410282203450d0720024100360228200220043602240c010b200241003602282002200436022420024101360220410110282203450d07200241013602240b2002200336022020024101360228200320012d00003a00000240200228022422044101470d0041000d014102410241024102491b22044100480d01200341012004102c2203450d0820022004360224200220033602200b20024102360228200320012d00013a00010240024020044102460d00200421050c010b200441016a22052004490d012004410174220a2005200a20054b1b22054100480d010240024020040d002005102821030c010b200320042005102c21030b2003450d0920022005360224200220033602200b20024103360228200341026a20012d00023a0000024020054103470d00200541016a22042005490d012005410174220a2004200a20044b1b22044100480d010240024020050d002004102821030c010b200320052004102c21030b2003450d0a20022004360224200220033602200b20024104360228200341036a20012d00033a00002001280204210a200128020c2201200241206a10b4010240024020022802242205200228022822046b2001490d00200228022021030c010b200420016a22032004490d012005410174220b2003200b20034b1b220b4100480d010240024020050d00200b102821030c010b20022802202005200b102c21030b2003450d0b2002200b36022420022003360220200b21050b200320046a200a2001109a051a200241206a41186a220a4200370300200241206a41106a220b4200370300200241206a41086a220c4200370300200242003703202003200420016a200241206a1000200241186a200a290300370300200241106a200b290300370300200241086a200c2903003703002002200229032037030002402005450d002003102a0b0240200820066b4120490d00200641206a21010c0c0b200641206a22012006490d00200841017422032001200320014b1b22034100480d000240024020080d002003102821070c010b200920082003102c21070b02402007450d00200321080c0c0b200341011037000b1031000b411041011037000b200741011037000b1036000b200641011037000b200441011037000b410141011037000b200441011037000b200541011037000b200441011037000b200b41011037000b200720066a22032002290300370000200341186a200241186a290300370000200341106a200241106a290300370000200341086a200241086a290300370000200020013602082000200836020420002007360200200241c0006a24000be6e80106017f037e137f017e117f057e230041c0056b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0e000102030405060708090f101112000b20034184056a4101360200200342013702f404200341ccd1c5003602f004200341043602b401200341c4d1c5003602b0012003200341b0016a36028005200341f0046a41bc80c500103e000b200141306a2903002104200141286a29030021052001411d6a29000021062001411c6a2d000021072001411b6a2d00002108200141196a2f00002109200141186a2d0000210a200141176a2d0000210b200141156a2f0000210c200141146a2d0000210d200141136a2d0000210e200141116a2f0000210f200141106a2d000021102001410f6a2d000021112001410d6a2f000021122001410c6a2d00002113200141086a2802002114200141076a2d00002115200141056a2f0000211641042117200141046a2d0000211820012d000121192002411a6a290100211a200241196a2d0000211b200241186a2d0000211c200241166a2f0100211d200241156a2d0000211e200241146a2d0000211f200241126a2f01002120200241116a2d00002121200241106a2d000021222002410e6a2f010021232002410d6a2d000021242002410c6a2d000021252002410a6a2f01002126200241096a2d00002127200241046a2d00002128200241026a2f010021290240024020022d00000d0020022d00014101470d00200241056a2d00002117200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b410021024100212a0b202a41ffff0371410874200241187472201741ff017172212a0240202b450d00410f211741ea9fc60021020240202a0e07000a0b0c0d5253000b20264108742027722025411874722102202341087420247220224118747221170c520b2003201a3703b8032003201b3a00b7032003201c3a00b6032003201d3b01b4032003201e3a00b3032003201f3a00b203200320203b01b003200320213a00af03200320223a00ae03200320233b01ac03200320243a00ab03200320253a00aa03200320263b01a803200320273a00a7032003202a3600a303200320283a00a203200320293b01a003410e10282202450d11200241002900fcae44370000200241066a4100290082af443700002003428e808080e0013702f404200320023602f004200341a0036a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b4101212b0240200341d0006a41204101410041001003417f460d00419681c500210241142117410121220c530b0240201841ff01714101470d00200341f0046a201441067610fe0120032802f00421170240024020032802f8042014413f7122024b0d00410021020c010b201720024105746a2202290018210620022d0017210720022d0016210820022f0014210920022d0013210a20022d0012210b20022f0010210c20022d000f210d20022d000e210e20022f000c210f20022d000b211020022d000a211120022f0008211220022d000721132002280003211420022d0002211520022f00002116410121020b024020032802f404450d002017102a0b20020d0041dc9fc6002102410e2117410121220c530b200320063703c801200320073a00c701200320083a00c601200320093b01c4012003200a3a00c3012003200b3a00c2012003200c3b01c0012003200d3a00bf012003200e3a00be012003200f3b01bc01200320103a00bb01200320113a00ba01200320123b01b801200320133a00b701200320143600b301200320153a00b201200320163b01b001410e10282202450d122002410029008aaf44370000200241066a4100290090af443700002003428e808080e0013702f404200320023602f004200341b0016a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a2222420037030020034188046a41086a2223420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a2022290300370300200341d0006a41086a20232903003703002003200329038804370350024020032802f404450d0020032802f004102a0b0240200341d0006a41204101410041001003417f460d0041cc80c500210241192117410121220c530b02402005428080e983b1de165441002004501b450d0041e580c500210241312117410121220c530b200341f0046a41186a200341b0016a41186a290300370300200341f0046a41106a200341b0016a41106a290300370300200341f0046a41086a200341b0016a41086a290300370300200320032903b0013703f004410e10282202450d13200241002900fcae44370000200241066a4100290082af443700002003428e808080e0013702d404200320023602d004200341a0036a200341d0046a108f0120032802d804210220032802d004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802d404450d0020032802d004102a0b200341203602d4042003200341d0006a3602d004200341f0046a200341d0046a10ff01410d10282202450d1420024100290098af44370000200241056a410029009daf443700002003428d808080d0013702f404200320023602f004200341a0036a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b024002400240024002400240201941037122024103460d0020020e03010203010b200341d0006a41204101410010070c040b410021170c020b410121170c010b410221170b200320173a00f004410110282202450d16200220173a0000200341d0006a41202002410110072002102a0b2003200341a0036a109101200341086a290300211a200329030021064100210220034198056a41003602002003419e056a20032d00a2033a00002003419f056a20032800a303360000200341a3056a20032d00a7033a0000200341b4056a20032903b803370200200341a4056a20032903a803370200200341ac056a20032903b00337020020034188056a201a20042006200554201a200454201a2004511b22171b221a370300200320032f01a0033b019c0520034208370390052003201a3703f80420032006200520171b221a3703f0042003201a37038005200341b0016a200341f0046a10b50420034194056a280200450d4f200328029005102a0c4f0b200141106a2903002106200141086a29030021042002411a6a290100211a200241196a2d0000211b200241186a2d0000211c200241166a2f0100211d200241156a2d0000211e200241146a2d0000211f200241126a2f01002120200241116a2d00002121200241106a2d000021222002410e6a2f010021232002410d6a2d000021242002410c6a2d000021252002410a6a2f01002126200241096a2d0000212741042117200241046a2d00002128200241026a2f010021290240024020022d00000d0020022d00014101470d00200241056a2d00002117200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b410021024100212a0b202a41ffff0371410874200241187472201741ff017172212a0240202b450d00410f211741ea9fc60021020240202a0e0700090a0b0c5152000b20264108742027722025411874722102202341087420247220224118747221170c510b2003201a3703e8042003201b3a00e7042003201c3a00e6042003201d3b01e4042003201e3a00e3042003201f3a00e204200320203b01e004200320213a00df04200320223a00de04200320233b01dc04200320243a00db04200320253a00da04200320263b01d804200320273a00d7042003202a3600d304200320283a00d204200320293b01d004200341f0046a200341d0046a10b1044101212a0240024020032d00f0044101460d00410b211741aa81c50021020c010b2003418a046a20032d00f3043a0000200341b0016a41086a20034184056a290200370300200341bd016a20034189056a290000370000200320032f00f1043b0188042003200341fc046a2902003703b001200341f0046a41086a28020021174100212a20032802f40421020b20034180036a41026a222b20034188046a41026a2d00003a0000200341a8046a41086a2222200341b0016a41086a290300370300200341a8046a41106a200341b0016a41106a290300370300200320032f0188043b018003200320032903b0013703a804202a0d50200341b3036a2022290300370000200341a0036a41186a200341b5046a290000370000200320032f0180033b01a003200320173600a703200320023600a303200320032903a8043700ab032003202b2d00003a00a203410e10282202450d152002410029008aaf44370000200241066a4100290090af443700002003428e808080e0013702f404200320023602f004200341a0036a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b200341003602f004200341d0006a4120200341f0046a1006211720032802f0042202417f460d2e200320023602ac04200320173602a804200341f0046a200341a8046a108a02200328029005222a450d16200341f0046a41186a290300212c200341f0046a410c6a350200211a200341bc056a280200212b200341f0046a41c4006a2902002105200341f0046a41c0006a2f01002122200341f0046a413c6a2f01002123200341f0046a41386a2f01002124200341f0046a41346a2f01002125200341f0046a412f6a28000021262003419c056a2f01002127200329038005212d20032902f404212e20032d00b305211b20032d00b205211c20032d00af05211d20032d00ae05211e20032d00ab05211f20032d00aa05212020032d00a705212120032d00a605212820032d00a305212920032d009e052114200329029405212f20032802f004210702402002450d002017102a0b200341b0016a41186a202c370300200341b0016a410c6a201a3e0200200341b0016a41c4006a2005370200200341f3016a201b3a0000200341f2016a201c3a0000200341b0016a41c0006a20223b0100200341ef016a201d3a0000200341ee016a201e3a0000200341b0016a413c6a20233b0100200341eb016a201f3a0000200341ea016a20203a0000200341b0016a41386a20243b0100200341e7016a20213a0000200341e6016a20283a0000200341b0016a41346a20253b0100200341e3016a20293a0000200341b0016a412f6a2026360000200341de016a20143a0000200341d4016a202f3702002003202d3703c0012003202e3702b4012003202b3602fc01200320273b01dc012003202a3602d001200320073602b001200341106a200341d0046a10910102402003290310221a20032903b001222e7d222f201a56200341106a41086a2903002205200341b0016a41086a29030022307d201a202e54ad7d221a200556201a2005511b0d0020032004202f202f200456201a200656201a2006511b22021b2204202d7c22053703c001200341c8016a2006201a20021b221a202c7c2005200454ad7c37030020032004202e7c22063703b0012003201a20307c2006200454ad7c3703b801200341a0036a200341b0016a10b5040b20032802d401450d4d20032802d001102a0c4d0b200141106a2903002106200141086a29030021042002411a6a290100211a200241196a2d0000211b200241186a2d0000211c200241166a2f0100211d200241156a2d0000211e200241146a2d0000211f200241126a2f01002120200241116a2d00002121200241106a2d000021222002410e6a2f010021232002410d6a2d000021242002410c6a2d000021252002410a6a2f01002126200241096a2d0000212741042117200241046a2d00002128200241026a2f010021290240024020022d00000d0020022d00014101470d00200241056a2d00002117200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b410021024100212a0b202a41ffff0371410874200241187472201741ff017172212a0240202b450d00410f211741ea9fc60021020240202a0e070008090a0b5051000b20264108742027722025411874722102202341087420247220224118747221170c500b2003201a3703b8032003201b3a00b7032003201c3a00b6032003201d3b01b4032003201e3a00b3032003201f3a00b203200320203b01b003200320213a00af03200320223a00ae03200320233b01ac03200320243a00ab03200320253a00aa03200320263b01a803200320273a00a7032003202a3600a303200320283a00a203200320293b01a003410e10282202450d162002410029008aaf44370000200241066a4100290090af443700002003428e808080e0013702f404200320023602f004200341a0036a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b200341003602f004200341d0006a4120200341f0046a1006210220032802f0042217417f460d2d2002450d2d200320173602d404200320023602d004200341f0046a200341d0046a108a02200328029005222a450d17200341f0046a41186a290300211a200341f0046a410c6a350200212d200341bc056a280200212b200341f0046a41c4006a290200212e200341f0046a41c0006a2f01002122200341f0046a413c6a2f01002123200341f0046a41386a2f01002124200341f0046a41346a2f01002125200341f0046a412f6a28000021262003419c056a2f01002127200329038005212c20032902f404212f20032d00b305211b20032d00b205211c20032d00af05211d20032d00ae05211e20032d00ab05211f20032d00aa05212020032d00a705212120032d00a605212820032d00a305212920032d009e052114200329029405210520032802f004210702402017450d002002102a0b200341b0016a41186a201a370300200341b0016a410c6a202d3e0200200341b0016a41c4006a202e370200200341f3016a201b3a0000200341f2016a201c3a0000200341b0016a41c0006a20223b0100200341ef016a201d3a0000200341ee016a201e3a0000200341b0016a413c6a20233b0100200341eb016a201f3a0000200341ea016a20203a0000200341b0016a41386a20243b0100200341e7016a20213a0000200341e6016a20283a0000200341b0016a41346a20253b0100200341e3016a20293a0000200341b0016a412f6a2026360000200341de016a20143a0000200341d4016a20053702002003202c3703c0012003202f3702b4012003202b3602fc01200320273b01dc012003202a3602d001200320073602b0012005a7212b02400240024002402005422088a7411f4b0d00202c2004202c200454201a200654201a2006511b22021b2204201a200620021b220684500d03200341c8016a4200201a20067d202c200454ad7d2205202c20047d222d428080e983b1de165441002005501b22171b37030020034200202d20171b3703c001200341f0046a41086a22024200370300200342003703f00441bb9cc6004112200341f0046a1008200341d0046a41086a2002290300370300200320032903f0043703d004200341003602f004200341d0046a4110200341f0046a1006210220032802f004222a417f470d0141a005212a0c020b41c581c500210241232117202b450d52202a102a0c520b024020020d0041a005212a0c010b202a4104490d1a2002280000212a2002102a202a41a0056a212a0b024020032802d801220220032802d401470d00200241016a222b2002490d4720024101742222202b2022202b4b1b2222ad42187e2205422088a70d472005a7222b4100480d470240024020020d00202b102821020c010b20032802d001200241186c202b102c21020b2002450d1b200320223602d401200320023602d00120032802d80121020b20032802d001200241186c6a2202201a200620171b3703082002202c200420171b3703002002202a360210200320032802d80141016a3602d801200341a0036a200341b0016a10b50420032802d401212b0b202b450d4c20032802d001102a410021020c4d0b2002411a6a290100211a200241196a2d0000211b200241186a2d0000211c200241166a2f0100211d200241156a2d0000211e200241146a2d0000211f200241126a2f01002120200241116a2d00002121200241106a2d000021222002410e6a2f010021232002410d6a2d000021242002410c6a2d000021252002410a6a2f01002126200241096a2d0000212741042117200241046a2d00002128200241026a2f010021290240024020022d00000d0020022d00014101470d00200241056a2d00002117200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b410021024100212a0b202a41ffff0371410874200241187472201741ff017172212a0240202b450d00410f211741ea9fc60021020240202a0e07000708090a4f50000b20264108742027722025411874722102202341087420247220224118747221170c4f0b2003201a3703b8032003201b3a00b7032003201c3a00b6032003201d3b01b4032003201e3a00b3032003201f3a00b203200320203b01b003200320213a00af03200320223a00ae03200320233b01ac03200320243a00ab03200320253a00aa03200320263b01a803200320273a00a7032003202a3600a303200320283a00a203200320293b01a003410e10282202450d192002410029008aaf44370000200241066a4100290090af443700002003428e808080e0013702f404200320023602f004200341a0036a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b200341003602f004200341d0006a4120200341f0046a1006210220032802f0042217417f460d2c2002450d2c200320173602b401200320023602b001200341f0046a200341b0016a108a022003280290052224450d1a20034188056a290300212c200341fc046a350200211a200341b4056a290200212e200341b0056a2f01002126200341ac056a2f01002127200341a8056a2f0100211b200341a4056a2f0100211c2003419c056a2f0100211d200329038005212d20032902f404210620032d00b305211e20032d00b205211f20032d00af05212020032d00ae05212120032d00ab05212820032d00aa05212920032d00a705211420032d00a605210720032d00a3052108200328009f05210920032d009e05210a200329029405210420032802f004212a02402017450d002002102a0b200341f0046a41086a22024200370300200342003703f00441bb9cc6004112200341f0046a1008200341d0046a41086a2002290300370300200320032903f0043703d0044100212b200341003602f004200341d0046a4110200341f0046a10062102024020032802f0042217417f460d002002450d0020174104490d1d2002280000212b2002102a0b201a422086200642208884211a2006422086202aad8421062004a7210b0240024002402004422088a7222541186c2202450d00202420026a2122200241686a2117202421020340200241086a290300210520022903002104202b200241106a280200222a490d024200201a20057d2006200454ad7d2205200620047d22042006562005201a562005201a511b222a1b211a42002004202a1b2106201741686a2117200241186a22022022470d000b0b410821234100212a0240200b0d00410021250c020b2024102a410021250c010b411810282223450d1e202320043703002023202a360210202320053703080240024020170d004101212a410121250c010b200241186a210c202541186c20246a41686a210e4101212a410121250340200c210202400340200241086a290300210520022903002104202b200241106a2802002217490d014200201a20057d2006200454ad7d2205200620047d22042006562005201a562005201a511b22171b211a4200200420171b2106200241186a22022022470d000c030b0b02402025202a470d00202a41016a2225202a490d48202a410174220c2025200c20254b1b2225ad42187e222f422088a70d48202fa7220c4100480d4802400240202a0d00200c102821230c010b2023202a41186c200c102c21230b2023450d220b200241186a210c2023202a41186c6a220d2005370308200d2004370300200d2017360210202a41016a212a200e2002470d000b0b200b450d002024102a0b200341b4056a202e370200200341b3056a201e3a0000200341b2056a201f3a0000200341b0056a20263b0100200341af056a20203a0000200341ae056a20213a0000200341ac056a20273b0100200341ab056a20283a0000200341aa056a20293a0000200341a8056a201b3b0100200341a7056a20143a0000200341a6056a20073a0000200341a4056a201c3b0100200341a3056a20083a00002003419f056a20093600002003419e056a200a3a000020034198056a202a36020020034194056a20253602002003202d3703800520034188056a202c370300200320063703f0042003201d3b019c0520032023360290052003201a3703f8040240202d202c844200520d00202a450d1c0b200341a0036a200341f0046a10b5040c4a0b200141106a2903002106200141086a29030021042002411a6a290100211a200241196a2d0000211b200241186a2d0000211c200241166a2f0100211d200241156a2d0000211e200241146a2d0000211f200241126a2f01002120200241116a2d00002121200241106a2d000021222002410e6a2f010021232002410d6a2d000021242002410c6a2d000021252002410a6a2f01002126200241096a2d0000212741042117200241046a2d00002128200241026a2f010021290240024020022d00000d0020022d00014101470d00200241056a2d00002117200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b410021024100212a0b202a41ffff0371410874200241187472201741ff017172212a0240202b450d00410f211741ea9fc60021020240202a0e0700060708094e4f000b20264108742027722025411874722102202341087420247220224118747221170c4e0b2003201a370398012003201b3a0097012003201c3a0096012003201d3b0194012003201e3a0093012003201f3a009201200320203b019001200320213a008f01200320223a008e01200320233b018c01200320243a008b01200320253a008a01200320263b018801200320273a0087012003202a36008301200320283a008201200320293b018001410e10282202450d1e2002410029008aaf44370000200241066a4100290090af443700002003428e808080e0013702f404200320023602f00420034180016a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b200341003602f004200341d0006a4120200341f0046a1006210220032802f0042217417f460d2b2002450d2b200320173602a403200320023602a003200341f0046a200341a0036a108a02200328029005222a450d1f200341f0046a41186a290300211a200341f0046a410c6a3502002105200341bc056a280200212b200341f0046a41c4006a290200212c200341f0046a41c0006a2f01002122200341f0046a413c6a2f01002123200341f0046a41386a2f01002124200341f0046a41346a2f01002125200341f0046a412c6a2f01002126200329038005212d20032902f404212e20032d00b305212720032d00b205211b20032d00af05211c20032d00ae05211d20032d00ab05211e20032d00aa05211f20032d00a705212020032d00a605212120032d00a3052128200328009f05212920032d009e052114200329029405212f20032802f004210702402017450d002002102a0b200341b0016a41186a201a370300200341b0016a410c6a20053e0200200341b0016a41c4006a202c370200200341f3016a20273a0000200341f2016a201b3a0000200341b0016a41c0006a20223b0100200341ef016a201c3a0000200341ee016a201d3a0000200341b0016a413c6a20233b0100200341eb016a201e3a0000200341ea016a201f3a0000200341b0016a41386a20243b0100200341e7016a20203a0000200341e6016a20213a0000200341b0016a41346a20253b0100200341e3016a20283a0000200341df016a2029360000200341de016a20143a0000200341d4016a202f3702002003202d3703c0012003202e3702b4012003202b3602fc01200320263b01dc012003202a3602d001200320073602b001200341b0016a412c6a222310a7042003200637037820032004370370411210282202450d20200241002900c1ae44370000200241106a41002f00d1ae443b0000200241086a41002900c9ae4437000020034292808080a0023702f404200320023602f0042023200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b200341003602f004200341d0006a4120200341f0046a100621250240024020032802f0042226417f460d002025450d00200320263602ec03200320253602e803200341386a200341e8036a109f0120032802380d4a20032802ec032202450d4a20032002417f6a222a3602ec03200320032802e803222241016a222b3602e80320222d0000220241014b0d4a410021240240024020020e020100010b41002102200341003a00900503400240202a2002470d00200341003602ec03200241ff0171450d4d200341003a0090050c4d0b200341f0046a20026a202220026a221741016a2d00003a00002003201741026a3602e8032003200241016a22173a0090052017210220174120470d000b200341a0036a41086a200341f0046a41086a290300370300200341a0036a41106a200341f0046a41106a290300370300200341a0036a41186a200341f0046a41186a290300370300200320032903f0043703a0032003202a20176b222a3602ec0341012124202220176a41016a212b0b20034188046a41186a200341a0036a41186a29030037030020034188046a41106a200341a0036a41106a29030037030020034188046a41086a200341a0036a41086a290300370300200320032903a00337038804202a450d4a2003202a417f6a222a3602ec032003202b41016a3602e803202b2d0000221741014b0d4a410021020240024020170e020100010b41002102200341003a00900503400240202a2002470d00200341003602ec03200241ff0171450d4d200341003a0090050c4d0b200341f0046a20026a202b20026a221741016a2d00003a00002003201741026a3602e8032003200241016a22173a0090052017210220174120470d000b200341a0036a41086a200341f0046a41086a290300370300200341a0036a41106a200341f0046a41106a290300370300200341a0036a41186a200341f0046a41186a290300370300200320032903f0043703a0032003202a20176b3602ec03410121020b200341c0026a41186a2222200341a0036a41186a2217290300370300200341c0026a41106a2223200341a0036a41106a222a290300370300200341c0026a41086a2227200341a0036a41086a222b290300370300200341e0026a41086a221b20034188046a41086a290300370300200341e0026a41106a221c20034188046a41106a290300370300200341e0026a41186a221d20034188046a41186a290300370300200320032903a0033703c00220032003290388043703e002200341a0026a41186a221e201d290300370300200341a0026a41106a221d201c290300370300200341a0026a41086a221c201b290300370300200320032903e0023703a00220034180026a41186a221b202229030037030020034180026a41106a2222202329030037030020034180026a41086a22232027290300370300200320032903c00237038002200341f0046a41186a2227201e290300370300200341f0046a41106a221e201d290300370300200341f0046a41086a221d201c290300370300200320032903a0023703f0042017201b290300370300202a2022290300370300202b202329030037030020032003290380023703a00320244102460d4a200341d0046a41186a2027290300370300200341d0046a41106a201e290300370300200341d0046a41086a201d290300370300200341a8046a41086a202b290300370300200341a8046a41106a202a290300370300200341a8046a41186a2017290300370300200320032903f0043703d004200320032903a0033703a80402402026450d002025102a0b200341a0036a41186a200341d0046a41186a290300370300200341a0036a41106a200341d0046a41106a290300370300200341a0036a41086a200341d0046a41086a29030037030020034188046a41086a200341a8046a41086a29030037030020034188046a41106a200341a8046a41106a29030037030020034188046a41186a200341a8046a41186a290300370300200320032903d0043703a003200320032903a804370388040c010b200341e8036a41186a22024200370300200341e8036a41106a22174200370300200341e8036a41086a222a4200370300200342003703e80341d3aec400411a200341e8036a1000200341f0046a41186a222b2002290300370300200341f0046a41106a22222017290300370300200341f0046a41086a2224202a290300370300200320032903e8033703f004200341a0036a200341f0046a412010fd01024020032d00a0030d002002420037030020174200370300202a4200370300200342003703e80341d3aec400411a200341e8036a1000202b2002290300370300202220172903003703002024202a290300370300200320032903e8033703f004200341203602d4042003200341f0046a3602d0042023200341d0046a10ff0141002102410021240c010b200341c8036a41186a200341b9036a290000370300200341c8036a41106a200341b1036a290000370300200341c8036a41086a200341a9036a290000370300200320032900a1033703c80320034180036a200341c8036a10ac01200341003602f00420034180036a4120200341f0046a1006212420032802f0042226417f460d222024450d22200320263602a401200320243602a001200341206a200341a0016a109f012003290320a70d4820032802a4012202450d48200341306a290300211a2003290328210620032002417f6a222a3602a401200320032802a001222241016a222b3602a00120222d0000220241014b0d48410021250240024020020e020100010b41002102200341003a00900503400240202a2002470d00200341003602a401200241ff0171450d4b200341003a0090050c4b0b200341f0046a20026a202220026a221741016a2d00003a00002003201741026a3602a0012003200241016a22173a0090052017210220174120470d000b20034188046a41086a200341f0046a41086a2903002204370300200341d0046a41186a200341f0046a41186a290300370300200341d0046a41106a200341f0046a41106a290300370300200341d0046a41086a20043703002003202a20176b222a3602a401200320032903f004220437038804200320043703d00441012125202220176a41016a212b0b200341e8036a41186a200341d0046a41186a290300370300200341e8036a41106a200341d0046a41106a290300370300200341e8036a41086a200341d0046a41086a290300370300200320032903d0043703e80341002122200341003a00f004202a450d482003202a417f6a222a3602a4012003202b41016a3602a001202b2d0000220241014b0d480240024020020e020100010b41002102200341003a00900503400240202a2002470d00200341003602a401200241ff0171450d4b200341003a0090050c4b0b200341f0046a20026a202b20026a221741016a2d00003a00002003201741026a3602a0012003200241016a22173a0090052017210220174120470d000b200341a8046a41086a200341f0046a41086a2903002204370300200341d0046a41186a200341f0046a41186a290300370300200341d0046a41106a200341f0046a41106a290300370300200341d0046a41086a20043703002003202a20176b3602a401200320032903f00422043703a804200320043703d004410121220b200341c0026a41186a222b200341d0046a41186a2202290300370300200341c0026a41106a2227200341d0046a41106a2217290300370300200341c0026a41086a221b200341d0046a41086a222a290300370300200341e0026a41086a221c200341e8036a41086a290300370300200341e0026a41106a221d200341e8036a41106a290300370300200341e0026a41186a221e200341e8036a41186a290300370300200320032903d0043703c002200320032903e8033703e002200341a0026a41186a221f201e290300370300200341a0026a41106a221e201d290300370300200341a0026a41086a221d201c290300370300200320032903e0023703a00220034180026a41186a221c202b29030037030020034180026a41106a222b202729030037030020034180026a41086a2227201b290300370300200320032903c00237038002200341f0046a41186a221b201f290300370300200341f0046a41106a221f201e290300370300200341f0046a41086a221e201d290300370300200320032903a0023703f0042002201c2903003703002017202b290300370300202a202729030037030020032003290380023703d00420254102460d48200341a8046a41186a201b290300370300200341a8046a41106a201f290300370300200341a8046a41086a201e29030037030020034188046a41086a202a29030037030020034188046a41106a201729030037030020034188046a41186a2002290300370300200320032903f0043703a804200320032903d0043703880402402026450d002024102a0b200341d0046a41186a2224200341a8046a41186a290300370300200341d0046a41106a222b200341a8046a41106a290300370300200341d0046a41086a2226200341a8046a41086a290300370300200341e8036a41086a220220034188046a41086a2227290300370300200341e8036a41106a221720034188046a41106a221b290300370300200341e8036a41186a222a20034188046a41186a221c290300370300200320032903a8043703d00420032003290388043703e803200320253a00f004200341f9046a202629030037000020034181056a202b29030037000020034189056a2024290300370000200320032903d0043700f104200320223a00910520034192056a222520032903e8033701002003419a056a2002290300370100200341a2056a2017290300370100200341aa056a202a29030037010041002124200341e4046a2025410020221b3602002003201a3703d804200320063703d004200320233602e004200341003602b004200342013703a8042003200341d0046a3602880420034188046a200341a8046a10a301202b200341a8046a10aa0120032802ac04212b20034180036a412020032802a804222220032802b00410070240202b450d002022102a0b202a42003703002017420037030020024200370300200342003703e80341d3aec400411a200341e8036a1000200341f0046a41186a202a290300370300200341f0046a41106a2017290300370300200341f0046a41086a2002290300370300200320032903e8033703f004200341203602d4042003200341f0046a3602d0042023200341d0046a10ff012027200341c8036a41086a290300370300201b200341c8036a41106a290300370300201c200341c8036a41186a290300370300200320032903c80337038804410121020b200341fd046a200341a0036a41086a29030037000020034185056a200341a0036a41106a2903003700002003418d056a200341a0036a41186a29030037000020034195056a20023a000020034196056a2003290388043701002003419e056a20034188046a41086a290300370100200341a6056a20034188046a41106a290300370100200341ae056a20034188046a41186a290300370100200320243a00f404200320032903a0033700f5042003200341f0006a3602f004200341003602d804200342013703d0042003200341f0006a3602a804200341a8046a200341d0046a10a301200341f0046a410472200341d0046a10a90120032802d4042102200341d0006a412020032802d004221720032802d804100702402002450d002017102a0b20032802d401450d4a20032802d001102a410021020c4b0b2001410c6a2802002108200141086a280200211b41042117200141046a280200211c2002411a6a290100211a200241196a2d0000211d200241186a2d0000211e200241166a2f0100211f200241156a2d00002120200241146a2d00002121200241126a2f01002128200241116a2d00002129200241106a2d000021222002410e6a2f010021232002410d6a2d000021242002410c6a2d000021252002410a6a2f01002126200241096a2d00002127200241046a2d00002114200241026a2f010021070240024020022d00000d0020022d00014101470d00200241056a2d00002117200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b4100212a410021020b202a41ffff0371410874201741ff017172200241187472212a0240202b450d00410f211741ea9fc6002102024002400240024002400240202a0e070001020304054c000b20264108742027722025411874722102202341087420247220224118747221170c4b0b410e211741dc9fc60021020c4a0b410c211741d09fc60021020c490b4109211741c79fc60021020c480b4113211741b49fc60021020c470b4111211741a39fc60021020c460b2003201a370398012003201d3a0097012003201e3a0096012003201f3b019401200320203a009301200320213a009201200320283b019001200320293a008f01200320223a008e01200320233b018c01200320243a008b01200320253a008a01200320263b018801200320273a0087012003202a36008301200320143a008201200320073b018001410e10282202450d212002410029008aaf44370000200241066a4100290090af443700002003428e808080e0013702f404200320023602f00420034180016a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b200341003602f004200341d0006a4120200341f0046a10062102024020032802f0042217417f460d002002450d00200320173602a403200320023602a003200341f0046a200341a0036a108a02200328029005222a450d23200341f0046a41186a2903002106200341f0046a410c6a3502002104200341bc056a280200212b200341f0046a41c4006a2902002105200341f0046a41c0006a2f01002122200341f0046a413c6a2f01002123200341f0046a41386a2f01002124200341f0046a41346a2f01002125200341f0046a412c6a2f01002126200329038005212c20032902f404212d20032d00b305212720032d00b205211d20032d00af05211e20032d00ae05211f20032d00ab05212020032d00aa05212120032d00a705212820032d00a605212920032d00a3052114200328009f05210720032d009e052109200329029405211a20032802f004210a02402017450d002002102a0b200341b0016a41186a2006370300200341b0016a410c6a20043e0200200341b0016a41c4006a2005370200200341f3016a20273a0000200341f2016a201d3a0000200341b0016a41c0006a20223b0100200341ef016a201e3a0000200341ee016a201f3a0000200341b0016a413c6a20233b0100200341eb016a20203a0000200341ea016a20213a0000200341b0016a41386a20243b0100200341e7016a20283a0000200341e6016a20293a0000200341b0016a41346a20253b0100200341e3016a20143a0000200341df016a2007360000200341de016a20093a0000200341b0016a41246a201a3702002003202c3703c0012003202d3702b4012003202b3602fc01200320263b01dc012003202a3602d0012003200a3602b0012008450d44200341003a00a804200341103602e0042003201c200841246c6a3602dc042003201c3602d8042003201b3602d4042003201c3602d0042003200341a8046a3602e404200341f0046a200341d0046a1085040240024020032d00f0044101460d0020032802dc04212a20032802d8042102024003400240202a2002470d002002212b0c020b20022d00002117200241246a222b210220174102470d000b0b2003202b3602d8044100212441012123024020032802d4040d00410021020c020b20032802d004102a410021020c010b412010282223450d25202320032900f104370000202341186a20034189056a290000370000202341106a20034181056a290000370000202341086a200341f9046a290000370000200341a0036a41106a200341d0046a41106a290300370300200341a0036a41086a200341d0046a41086a290300370300200320032903d0043703a003200341f0046a200341a0036a1085040240024020032d00f0040d0041012102410121240c010b200341f0046a4101722117410221224120212b4101210241012124034020034188046a41186a2225201741186a29000037030020034188046a41106a2226201741106a29000037030020034188046a41086a2227201741086a2900003703002003201729000037038804024020022024470d00200241016a222a2002490d472022202a2022202a4b1b222441ffffff3f712024470d472024410574222a4100480d470240024020020d00202a102821230c010b2023202b202a102c21230b20230d00202a41011037000b2023202b6a222a200329038804370000202a41186a2025290300370000202a41106a2026290300370000202a41086a2027290300370000202241026a2122202b41206a212b200241016a2102200341f0046a200341a0036a10850420032d00f0040d000b0b20032802ac03212b20032802a8032117024003400240202b2017470d00201721220c020b20172d0000212a201741246a22222117202a4102470d000b0b200320223602a80320032802a403450d0020032802a003102a0b024020032d00a804450d002024450d432023102a0c430b2023450d42200341b0016a412c6a222a10a604200320023602a801200320243602a401200320233602a001411210282202450d2520024100290095ae44370000200241106a41002f00a5ae443b0000200241086a410029009dae4437000020034292808080a0023702f404200320023602f004202a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222b420037030020034188046a41106a2222420037030020034188046a41086a2223420037030020034200370388042017200220034188046a1000200341d0006a41186a202b290300370300200341d0006a41106a2022290300370300200341d0006a41086a20232903003703002003200329038804370350024020032802f404450d0020032802f004102a0b200341003602f004200341d0006a4120200341f0046a1006212b024020032802f0042222417f460d00202b450d00200320223602ec032003202b3602e803200341d0046a200341e8036a106d20032802d0042224450d3f20032802d404212a20032802ec032202450d3e20032002417f6a22233602ec03200320032802e803222541016a22263602e80320252d0000221741014b0d3e410021020240024020170e020100010b41002102200341003a0090050340024020232002470d00200341003602ec03200241ff0171450d41200341003a0090050c410b200341f0046a20026a202520026a221741016a2d00003a00002003201741026a3602e8032003200241016a22173a0090052017210220174120470d000b200341a0036a41086a200341f0046a41086a290300370300200341a0036a41106a200341f0046a41106a290300370300200341a0036a41186a200341f0046a41186a290300370300200320032903f0043703a0032003202320176b22233602ec0341012102202520176a41016a21260b20034188046a41186a200341a0036a41186a29030037030020034188046a41106a200341a0036a41106a29030037030020034188046a41086a200341a0036a41086a290300370300200320032903a003370388042023450d3e20032023417f6a22253602ec032003202641016a3602e80320262d0000222341014b0d3e410021170240024020230e020100010b41002117200341003a0090050340024020252017470d00200341003602ec03201741ff0171450d41200341003a0090050c410b200341f0046a20176a202620176a222341016a2d00003a00002003202341026a3602e8032003201741016a22233a0090052023211720234120470d000b200341a0036a41086a200341f0046a41086a290300370300200341a0036a41106a200341f0046a41106a290300370300200341a0036a41186a200341f0046a41186a290300370300200320032903f0043703a0032003202520236b3602ec03410121170b200341c0026a41186a2223200341a0036a41186a2225290300370300200341c0026a41106a2226200341a0036a41106a2227290300370300200341c0026a41086a221b200341a0036a41086a221c290300370300200341e0026a41086a221d20034188046a41086a290300370300200341e0026a41106a221e20034188046a41106a290300370300200341e0026a41186a221f20034188046a41186a290300370300200320032903a0033703c00220032003290388043703e002200341a0026a41186a2220201f290300370300200341a0026a41106a221f201e290300370300200341a0026a41086a221e201d290300370300200320032903e0023703a00220034180026a41186a221d202329030037030020034180026a41106a2223202629030037030020034180026a41086a2226201b290300370300200320032903c00237038002200341f0046a41186a2020290300370300200341f0046a41106a201f290300370300200341f0046a41086a201e290300370300200320032903a0023703f0042025201d29030037030020272023290300370300201c202629030037030020032003290380023703a0030c400b200341e8036a41186a22024200370300200341e8036a41106a22174200370300200341e8036a41086a222b4200370300200342003703e80341a7aec400411a200341e8036a1000200341f0046a41186a22222002290300370300200341f0046a41106a22232017290300370300200341f0046a41086a2224202b290300370300200320032903e8033703f004200341a0036a200341f0046a412010fd01024020032d00a0030d002002420037030020174200370300202b4200370300200342003703e80341a7aec400411a200341e8036a100020222002290300370300202320172903003703002024202b290300370300200320032903e8033703f004200341203602d4042003200341f0046a3602d004202a200341d0046a10ff01410021170c3c0b200341c8036a41186a200341b9036a290000370300200341c8036a41106a200341b1036a290000370300200341c8036a41086a200341a9036a290000370300200320032900a1033703c80320034180036a200341c8036a10ae01200341003602f00420034180036a4120200341f0046a1006212320032802f0042226417f460d262023450d26200320263602cc04200320233602c804200341f0006a200341c8046a106d20032802702224450d392003280274212220032802cc042202450d38200341f8006a280200212b20032002417f6a22273602cc04200320032802c804221b41016a221c3602c804201b2d0000220241014b0d38410021250240024020020e020100010b41002102200341003a0090050340024020272002470d00200341003602cc04200241ff0171450d3b200341003a0090050c3b0b200341f0046a20026a201b20026a221741016a2d00003a00002003201741026a3602c8042003200241016a22173a0090052017210220174120470d000b20034188046a41086a200341f0046a41086a290300221a370300200341d0046a41186a200341f0046a41186a290300370300200341d0046a41106a200341f0046a41106a290300370300200341d0046a41086a201a3703002003202720176b22273602cc04200320032903f004221a370388042003201a3703d00441012125201b20176a41016a211c0b200341e8036a41186a200341d0046a41186a290300370300200341e8036a41106a200341d0046a41106a290300370300200341e8036a41086a200341d0046a41086a290300370300200320032903d0043703e80341002117200341003a00f0042027450d3820032027417f6a22273602cc042003201c41016a3602c804201c2d0000220241014b0d380240024020020e020100010b41002102200341003a0090050340024020272002470d00200341003602cc04200241ff0171450d3b200341003a0090050c3b0b200341f0046a20026a201c20026a221741016a2d00003a00002003201741026a3602c8042003200241016a22173a0090052017210220174120470d000b200341a8046a41086a200341f0046a41086a290300221a370300200341d0046a41186a200341f0046a41186a290300370300200341d0046a41106a200341f0046a41106a290300370300200341d0046a41086a201a3703002003202720176b3602cc04200320032903f004221a3703a8042003201a3703d004410121170b200341c0026a41186a2202200341d0046a41186a2227290300370300200341c0026a41106a221b200341d0046a41106a221c290300370300200341c0026a41086a221d200341d0046a41086a221e290300370300200341e0026a41086a221f200341e8036a41086a290300370300200341e0026a41106a2220200341e8036a41106a290300370300200341e0026a41186a2221200341e8036a41186a290300370300200320032903d0043703c002200320032903e8033703e002200341a0026a41186a22282021290300370300200341a0026a41106a22212020290300370300200341a0026a41086a2220201f290300370300200320032903e0023703a00220034180026a41186a221f200229030037030020034180026a41106a2202201b29030037030020034180026a41086a221b201d290300370300200320032903c00237038002200341f0046a41186a2028290300370300200341f0046a41106a2021290300370300200341f0046a41086a2020290300370300200320032903a0023703f0042027201f290300370300201c2002290300370300201e201b29030037030020032003290380023703d0040c3a0b4110211741b581c50021020c450b2002411a6a290100211a200241196a2d0000211b200241186a2d0000211c200241166a2f0100211d200241156a2d0000211e200241146a2d0000211f200241126a2f01002120200241116a2d00002121200241106a2d000021222002410e6a2f010021232002410d6a2d000021242002410c6a2d000021252002410a6a2f01002126200241096a2d0000212741042117200241046a2d00002128200241026a2f010021290240024020022d00000d0020022d00014101470d00200241056a2d00002117200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b4100212a410021020b202a41ffff0371410874201741ff017172200241187472212a0240202b450d00410f211741ea9fc60021020240202a0e0700040506074c4d000b20264108742027722025411874722102202341087420247220224118747221170c4c0b2003201a3703b8032003201b3a00b7032003201c3a00b6032003201d3b01b4032003201e3a00b3032003201f3a00b203200320203b01b003200320213a00af03200320223a00ae03200320233b01ac03200320243a00ab03200320253a00aa03200320263b01a803200320273a00a7032003202a3600a303200320283a00a203200320293b01a003410e10282202450d252002410029008aaf44370000200241066a4100290090af443700002003428e808080e0013702f404200320023602f004200341a0036a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b200341003602f004200341d0006a4120200341f0046a1006211720032802f0042202417f460d29200320023602d404200320173602d004200341f0046a200341d0046a108a02200328029005222a450d26200341f0046a41186a290300211a200341f0046a410c6a3502002106200341bc056a280200212b200341f0046a41c4006a2902002104200341f0046a41c0006a2f01002122200341f0046a413c6a2f01002123200341f0046a41386a2f01002124200341f0046a41346a2f01002125200341f0046a412c6a2f01002126200329038005210520032902f404212c20032d00b305212720032d00b205211b20032d00af05211c20032d00ae05211d20032d00ab05211e20032d00aa05211f20032d00a705212020032d00a605212120032d00a3052128200328009f05212920032d009e052114200329029405212d20032802f004210702402002450d002017102a0b200341b0016a41186a201a370300200341b0016a410c6a20063e0200200341b0016a41c4006a2004370200200341f3016a20273a0000200341f2016a201b3a0000200341b0016a41c0006a20223b0100200341ef016a201c3a0000200341ee016a201d3a0000200341b0016a413c6a20233b0100200341eb016a201e3a0000200341ea016a201f3a0000200341b0016a41386a20243b0100200341e7016a20203a0000200341e6016a20213a0000200341b0016a41346a20253b0100200341e3016a20283a0000200341df016a2029360000200341de016a20143a0000200341d4016a2202202d370200200320053703c0012003202c3702b4012003202b3602fc01200320263b01dc012003202a3602d001200320073602b001200341b0016a412c6a221710a604201710a7042002280200450d4820032802d001102a410021020c490b20012d000121142002411a6a290100211a200241196a2d0000211b200241186a2d0000211c200241166a2f0100211d200241156a2d0000211e200241146a2d0000211f200241126a2f01002120200241116a2d00002121200241106a2d000021222002410e6a2f010021232002410d6a2d000021242002410c6a2d000021252002410a6a2f01002126200241096a2d0000212741042117200241046a2d00002128200241026a2f010021290240024020022d00000d0020022d00014101470d00200241056a2d00002117200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b4100212a410021020b202a41ffff0371410874201741ff017172200241187472212a0240202b450d00410f211741ea9fc60021020240202a0e0700030405064b4c000b20264108742027722025411874722102202341087420247220224118747221170c4b0b2003201a3703b8032003201b3a00b7032003201c3a00b6032003201d3b01b4032003201e3a00b3032003201f3a00b203200320203b01b003200320213a00af03200320223a00ae03200320233b01ac03200320243a00ab03200320253a00aa03200320263b01a803200320273a00a7032003202a3600a303200320283a00a203200320293b01a003410e10282202450d262002410029008aaf44370000200241066a4100290090af443700002003428e808080e0013702f404200320023602f004200341a0036a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b200341003602f004200341d0006a4120200341f0046a1006210220032802f0042217417f460d282002450d28200320173602d404200320023602d004200341f0046a200341d0046a108a02200328029005222a450d27200341f0046a41186a290300211a200341f0046a410c6a3502002106200341bc056a280200212b200341f0046a41c4006a2902002104200341f0046a41c0006a2f01002122200341f0046a413c6a2f01002123200341f0046a41386a2f01002124200341f0046a41346a2f01002125200341f0046a412c6a2f01002126200329038005210520032902f404212c20032d00b305212720032d00b205211b20032d00af05211c20032d00ae05211d20032d00ab05211e20032d00aa05211f20032d00a705212020032d00a605212120032d00a3052128200328009f05212920032d009e052107200329029405212d20032802f004210802402017450d002002102a0b200341b0016a41186a201a370300200341b0016a410c6a20063e0200200341b0016a41c4006a2004370200200341f3016a20273a0000200341f2016a201b3a0000200341b0016a41c0006a20223b0100200341ef016a201c3a0000200341ee016a201d3a0000200341b0016a413c6a20233b0100200341eb016a201e3a0000200341ea016a201f3a0000200341b0016a41386a20243b0100200341e7016a20203a0000200341e6016a20213a0000200341b0016a41346a20253b0100200341e3016a20283a0000200341df016a2029360000200341de016a20073a0000200341d4016a202d370200200320053703c0012003202c3702b4012003202b3602fc01200320263b01dc012003202a3602d001200320083602b001410d10282202450d2920024100290098af44370000200241056a410029009daf443700002003428d808080d0013702f404200320023602f004200341b0016a412c6a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b024002400240024002400240201441037122024103460d0020020e03010203010b200341d0006a41204101410010070c040b410021170c020b410121170c010b410221170b200320173a00f004410110282202450d2b200220173a0000200341d0006a41202002410110072002102a0b20032802d401450d4720032802d001102a410021020c480b2001411d6a29000021062001411c6a2d000021072001411b6a2d00002108200141196a2f00002109200141186a2d0000210a200141176a2d0000210b200141156a2f0000210c200141146a2d0000210d200141136a2d0000210e200141116a2f0000210f200141106a2d000021102001410f6a2d000021112001410d6a2f000021122001410c6a2d00002113200141086a280200211b200141076a2d00002115200141056a2f0000211641042117200141046a2d000021182002411a6a290100211a200241196a2d0000211c200241186a2d0000211d200241166a2f0100211e200241156a2d0000211f200241146a2d00002120200241126a2f01002121200241116a2d00002128200241106a2d000021222002410e6a2f010021232002410d6a2d000021242002410c6a2d000021252002410a6a2f01002126200241096a2d00002127200241046a2d00002129200241026a2f010021140240024020022d00000d0020022d00014101470d00200241056a2d00002117200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b4100212a410021020b202a41ffff0371410874201741ff017172200241187472212a202b450d04410f211741ea9fc60021020240202a0e070001020304494a000b20264108742027722025411874722102202341087420247220224118747221170c490b410e211741dc9fc60021020c480b410c211741d09fc60021020c470b4109211741c79fc60021020c460b4113211741b49fc60021020c450b2003201a3703e0032003201c3a00df032003201d3a00de032003201e3b01dc032003201f3a00db03200320203a00da03200320213b01d803200320283a00d703200320223a00d603200320233b01d403200320243a00d303200320253a00d203200320263b01d003200320273a00cf032003202a3600cb03200320293a00ca03200320143b01c803200341f0046a200341c8036a10b1044101212a0240024020032d00f0044101460d00410b211741aa81c50021020c010b2003418a046a20032d00f3043a0000200341b0016a41086a20034184056a290200370300200341bd016a20034189056a290000370000200320032f00f1043b0188042003200341fc046a2902003703b001200341f0046a41086a28020021174100212a20032802f40421020b20034180036a41026a222b20034188046a41026a2d00003a0000200341a8046a41086a2222200341b0016a41086a290300370300200341a8046a41106a200341b0016a41106a290300370300200320032f0188043b018003200320032903b0013703a804202a0d44200341fb036a202229030037000020034180046a200341b5046a290000370000200320032f0180033b01e803200320173600ef03200320023600eb03200320032903a8043700f3032003202b2d00003a00ea030240201841ff01714101470d00200341f0046a201b41067610fe0120032802f00421170240024020032802f804201b413f7122024b0d00410021020c010b201720024105746a2202290018210620022d0017210720022d0016210820022f0014210920022d0013210a20022d0012210b20022f0010210c20022d000f210d20022d000e210e20022f000c210f20022d000b211020022d000a211120022f0008211220022d000721132002280003211b20022d0002211520022f00002116410121020b024020032802f404450d002017102a0b20020d0041dc9fc6002102410e21170c450b200320063703c004200320073a00bf04200320083a00be04200320093b01bc042003200a3a00bb042003200b3a00ba042003200c3b01b8042003200d3a00b7042003200e3a00b6042003200f3b01b404200320103a00b304200320113a00b204200320123b01b004200320133a00af042003201b3600ab04200320153a00aa04200320163b01a804410e10282202450d252002410029008aaf44370000200241066a4100290090af443700002003428e808080e0013702f404200320023602f004200341a8046a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b0240200341d0006a41204101410041001003417f460d0041cc80c5002102411921170c450b200341a8046a200341e8036a4120109c05450d41410e10282202450d26200241002900fcae44370000200241066a4100290082af443700002003428e808080e0013702f404200320023602f004200341c8036a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b200341203602f4042003200341d0006a3602f004200341a8046a200341f0046a10ff01410e10282202450d272002410029008aaf44370000200241066a4100290090af443700002003428e808080e0013702f404200320023602f004200341e8036a200341f0046a108f0120032802f804210220032802f004211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802f404450d0020032802f004102a0b200341003602f004200341d0006a4120200341f0046a1006212a0240024020032802f0042217417f470d00410021020c010b2003201736028c042003202a36028804200341f0046a20034188046a108a022003280290052202450d29200341b0016a41186a200341f0046a41186a290300370300200341b0016a41106a200341f0046a41106a290300370300200341b0016a41086a200341f0046a41086a290300370300200320032903f0043703b0012003419c056a2f010021222003419f056a2800002124200341a4056a2f01002126200341a8056a2f0100211c200341ac056a2f0100211f200341b0056a2f01002128200341b4056a290200212d200341bc056a2802002107200329029405212c20032d009e05212320032d00a305212520032d00a605212720032d00a705211b20032d00aa05211d20032d00ab05211e20032d00ae05212020032d00af05212120032d00b205212920032d00b305211402402017450d00202a102a0b200341d0006a412010090b200341a0036a41186a200341b0016a41186a290300221a370300200341a0036a41106a200341b0016a41106a2903002206370300200341a0036a41086a200341b0016a41086a2903002204370300200320032903b00122053703a003200341f0046a41186a2217201a370300200341f0046a41106a222a2006370300200341f0046a41086a222b2004370300200320053703f0042002450d41200341d0046a41186a2017290300221a370300200341d0046a41106a202a2903002206370300200341d0046a41086a202b2903002204370300200320032903f00422053703d0042017201a370300202a2006370300202b2004370300200341b4056a202d370200200341b3056a20143a0000200341b2056a20293a0000200341b0056a20283b0100200341af056a20213a0000200341ae056a20203a0000200341ac056a201f3b0100200341ab056a201e3a0000200341aa056a201d3a0000200341a8056a201c3b0100200341a7056a201b3a0000200341a6056a20273a0000200341a4056a20263b0100200341a3056a20253a00002003419f056a20243600002003419e056a20233a000020034194056a202c370200200320053703f004200320073602bc05200320223b019c052003200236029005410e10282202450d292002410029008aaf44370000200241066a4100290090af443700002003428e808080e0013702b401200320023602b001200341a8046a200341b0016a108f0120032802b801210220032802b001211720034188046a41186a222a420037030020034188046a41106a222b420037030020034188046a41086a2222420037030020034200370388042017200220034188046a1000200341d0006a41186a202a290300370300200341d0006a41106a202b290300370300200341d0006a41086a20222903003703002003200329038804370350024020032802b401450d0020032802b001102a0b200341203602b4012003200341d0006a3602b001200341f0046a200341b0016a10b604200328029405450d41200328029005102a410021020c420b4101212b024020022d000120022d000072450d0041a39fc600210241112117410121220c450b200141046a2802002102200341f0046a41086a22174200370300200342003703f00441889cc6004116200341f0046a1008200341d0046a41086a2017290300370300200320032903f0043703d004200320023602f004200341d0046a4110200341f0046a410410070c2c0b20022d000120022d0000720d2c200341f0046a41086a22024200370300200342003703f004418e9dc6004110200341f0046a1008200341d0046a41086a2002290300370300200320032903f0043703d004200341023a00f0044101212b410110282202450d28200241023a0000200341d0046a41102002410110072002102a0c2b0b20022d000120022d0000720d2b200341f0046a41086a22024200370300200342003703f004418e9dc6004110200341f0046a1008200341d0046a41086a2002290300370300200320032903f0043703d0044101212b200341013a00f004410110282202450d28200241013a0000200341d0046a41102002410110072002102a0c2a0b200141086a280200212a200141046a2802002123024020022d000120022d000072450d0041a39fc600210241112117410021224101212b202a450d422023102a0c420b2001410c6a2802002102200341f0046a41086a22174200370300200342003703f00441c8ffc4004115200341f0046a1008200341d0046a41086a2017290300370300200320032903f0043703d004200341003602f804200342013703f0042002200341f0046a10b40102402002450d00200241057421172023210203402002200341f0046a108f01200241206a2102201741606a22170d000b0b20032802f4042102200341d0046a411020032802f004221720032802f804100702402002450d002017102a0b4101212b202a450d282023102a0c280b410e41011037000b410e41011037000b410e41011037000b410d41011037000b410141011037000b410e41011037000b41c4d1c3004133200341e0026a419cd9c3001038000b410e41011037000b41c4d1c3004133200341e0026a419cd9c3001038000b41c4d1c3004133200341e0026a419cd9c3001038000b202b41081037000b410e41011037000b41c4d1c3004133200341e0026a419cd9c3001038000b200341c8016a200341b4056a290200370300200341c0016a200341ac056a290200370300200341b0016a41086a200341a4056a2902003703002003200329029c053703b001200342f3e885db96cddbb3203703e803200310980136028804200341d0046a200341b0016a109a0220032802d404211720032802d004210220032802d804212a200341e4046a200341e8036a36020020032002202a4105746a3602dc04200320023602d804200320173602d404200320023602d004200320034188046a3602e004200341a8046a200341d0046a108701200341d0046a41086a200341a8046a41086a280200360200200320032903a8043703d004200341b0016a200341d0046a109c02200341b0016a1095020c2e0b41c4d1c3004133200341e0026a419cd9c3001038000b411841081037000b200c41081037000b410e41011037000b41c4d1c3004133200341e0026a419cd9c3001038000b411241011037000b41b7b3c0004192011050000b410e41011037000b41c4d1c3004133200341e0026a419cd9c3001038000b412041011037000b411241011037000b41b7b3c0004192011050000b410e41011037000b41c4d1c3004133200341e0026a419cd9c3001038000b410e41011037000b41c4d1c3004133200341e0026a419cd9c3001038000b41b581c5002102411021170c210b410d41011037000b410141011037000b410e41011037000b410e41011037000b410e41011037000b41c4d1c3004133200341e0026a419cd9c3001038000b410e41011037000b410141011037000b410141011037000b41002122410021020c180b41002102410121220c170b41a39fc6002102411121170c150b2022450d002024102a0b410221250b20254102460d01200341a8046a41186a221c200341f0046a41186a290300370300200341a8046a41106a221d200341f0046a41106a290300370300200341a8046a41086a221e200341f0046a41086a29030037030020034188046a41086a221f200341d0046a41086a222729030037030020034188046a41106a2220200341d0046a41106a220229030037030020034188046a41186a2221200341d0046a41186a221b290300370300200320032903f0043703a804200320032903d0043703880402402026450d002023102a0b201b201c2903003703002002201d2903003703002027201e290300370300200341e8036a41086a2223201f290300370300200341e8036a41106a22262020290300370300200341e8036a41186a221c2021290300370300200320032903a8043703d00420032003290388043703e803200320253a00f004200341f9046a202729030037000020034181056a200229030037000020034189056a201b290300370000200320032903d0043700f104200320173a00910520034192056a222520032903e8033701002003419a056a2023290300370100200341a2056a2026290300370100200341aa056a201c290300370100200220254100201741ff01714101461b3602002003202a3602dc042003202b3602d804200320223602d404200320243602d004200341003602b004200342013703a804202b200341a8046a10b401200341dc046a21230240202b450d00202b41057421172024210203402002200341a8046a108f01200241206a2102201741606a22170d000b0b2023200341a8046a10aa0120032802ac04210220034180036a412020032802a804221720032802b004100702402002450d002017102a0b02402022450d002024102a0b200341e8036a41186a22024200370300200341e8036a41106a22174200370300200341e8036a41086a222b4200370300200342003703e80341a7aec400411a200341e8036a1000200341f0046a41186a2002290300370300200341f0046a41106a2017290300370300200341f0046a41086a202b290300370300200320032903e8033703f004200341203602d4042003200341f0046a3602d004202a200341d0046a10ff0120034188046a41086a200341c8036a41086a29030037030020034188046a41106a200341c8036a41106a29030037030020034188046a41186a200341c8036a41186a290300370300200320032903c80337038804410121170b410021020c040b41c4d1c3004133200341e0026a419cd9c3001038000b202a450d002024102a0b410221020b20024102460d01200341d0046a41186a2223200341f0046a41186a290300370300200341d0046a41106a2225200341f0046a41106a290300370300200341d0046a41086a2226200341f0046a41086a290300370300200341a8046a41086a2227200341a0036a41086a221b290300370300200341a8046a41106a221c200341a0036a41106a221d290300370300200341a8046a41186a221e200341a0036a41186a221f290300370300200320032903f0043703d004200320032903a0033703a80402402022450d00202b102a0b201f2023290300370300201d2025290300370300201b202629030037030020034188046a41086a202729030037030020034188046a41106a201c29030037030020034188046a41186a201e290300370300200320032903d0043703a003200320032903a80437038804202a450d002024102a0b200341fd046a200341a0036a41086a29030037000020034185056a200341a0036a41106a2903003700002003418d056a200341a0036a41186a29030037000020034195056a20173a000020034196056a2003290388043701002003419e056a20034188046a41086a290300370100200341a6056a20034188046a41106a290300370100200341ae056a20034188046a41186a290300370100200320023a00f404200320032903a0033700f5042003200341a0016a3602f004200341003602d804200342013703d00420032802a001210220032802a8012217200341d0046a10b401200341f0046a410472212a02402017450d002017410574211703402002200341d0046a108f01200241206a2102201741606a22170d000b0b202a200341d0046a10a90120032802d4042102200341d0006a412020032802d004221720032802d804100702402002450d002017102a0b024020032802a401450d0020032802a001102a0b024020032802d401450d0020032802d001102a0b4100212b41012122410021020c0d0b41c4d1c3004133200341e0026a419cd9c3001038000b41dc9fc6002102410e21174100212b20032802d401212a0c020b1031000b201aa7212a41e881c5002102411721174101212b0b0240202a450d0020032802d001102a0b202b0d00410121224100212b0c080b410121224100212b201b450d07201c102a0c070b41c4d1c3004133200341e0026a419cd9c3001038000b41c4d1c3004133200341e0026a419cd9c3001038000b200328029405450d00200328029005102a410021020c010b410021020b4101212b410121220c020b4111211741a39fc60021020b4101212b410121220b0240024020012d0000222a410d4b0d004101202a7441be3f710d010240202a4106460d00202a410d470d012022450d02200141086a280200450d02200141046a280200102a0c020b202b450d01200141086a280200450d01200141046a280200102a0c010b200141086a280200450d00200141046a280200102a0b2000201736020420002002360200200341c0056a24000b990d02067f077e230041b0016b22052400024002400240024002400240411410282206450d00200641002900cfe140370000200641106a41002800dfe140360000200641086a41002900d7e14037000020054294808080c002370234200520063602302001200541306a108f012005280238210620052802302107200541c0006a41186a22084200370300200541c0006a41106a22094200370300200541c0006a41086a220a42003703002005420037034020072006200541c0006a1000200541106a41186a2008290300370300200541106a41106a2009290300370300200541106a41086a200a2903003703002005200529034037031002402005280234450d002005280230102a0b20054100360240200541106a4120200541c0006a100621060240024020052802402207417f470d004200210b4200210c0c010b20074110490d02200641086a290000210c2006290000210b2006102a0b411410282206450d02200641002900cfe140370000200641106a41002800dfe140360000200641086a41002900d7e14037000020054294808080c002370234200520063602302002200541306a108f012005280238210620052802302107200541c0006a41186a22084200370300200541c0006a41106a22094200370300200541c0006a41086a220a42003703002005420037034020072006200541c0006a1000200541106a41186a2008290300370300200541106a41106a2009290300370300200541106a41086a200a2903003703002005200529034037031002402005280234450d002005280230102a0b20054100360240200541106a4120200541c0006a100621060240024020052802402207417f470d004200210d4200210e0c010b20074110490d04200641086a290000210e2006290000210d2006102a0b024020034280a094a58d1d7c220f200354220620042006ad7c2210200454200f20035a1b450d0041f092c1002106412821010c060b0240200b200f7d2211200b56200c20107d200b200f54ad7d220f200c56200f200c511b4101470d00419893c1002106411d21010c060b0240200342ffffe883b1de165620044200522004501b0d00200d200e8450450d0041e293c1002106411f21010c060b200541086a200141022011200f10bc01024020052802082206450d00200528020c21010c060b0240200d20037c220c200d542206200e20047c2006ad7c220b200e54200b200e511b450d0041b593c1002106412d21010c060b41002106024020012002470d000c060b0240200120024120109c050d000c060b20012011200f108f02411410282206450d04200641002900cfe140370000200641106a41002800dfe140360000200641086a41002900d7e14037000020054294808080c002370234200520063602302002200541306a108f012005280238210620052802302107200541c0006a41186a22084200370300200541c0006a41106a22094200370300200541c0006a41086a220a42003703002005420037034020072006200541c0006a1000200541106a41186a2008290300370300200541106a41106a2009290300370300200541106a41086a200a2903003703002005200529034037031002402005280234450d002005280230102a0b0240200541106a41204101410041001003417f470d002002109302200541f8006a200b370300200541f0006a200c370300200541c0006a41086a41003a0000200541c9006a2002290000370000200541d1006a200241086a290000370000200541d9006a200241106a290000370000200541e1006a200241186a290000370000200541023a004041014100200541c0006a10cc010b2002200c200b108f022005420037034820054280a094a58d1d3703402005200541c0006a360210200541106a109d01200541a8016a4200370300200541a0016a4280a094a58d1d37030020054198016a200437030020054190016a2003370300200541c0006a41086a41023a0000200541c9006a2001290000370000200541d1006a200141086a290000370000200541d9006a200141106a290000370000200541e1006a200141186a290000370000200541e9006a2002290000370000200541f1006a200241086a290000370000200541f9006a200241106a29000037000020054181016a200241186a290000370000200541023a00404100210641014100200541c0006a10cc010c050b411441011037000b41c4d1c3004133200541c0006a419cd9c3001038000b411441011037000b41c4d1c3004133200541c0006a419cd9c3001038000b411441011037000b2000200136020420002006360200200541b0016a24000b881201097f230041f0026b22032400024002400240024002400240024002400240411410282204450d00200441002900cfe140370000200441106a41002800dfe140360000200441086a41002900d7e14037000020034294808080c002370294012003200436029001200020034190016a108f0120032802980121042003280290012105200341206a41186a22064200370300200341206a41106a22074200370300200341206a41086a220842003703002003420037032020052004200341206a100020034180026a41186a200629030037030020034180026a41106a200729030037030020034180026a41086a200829030037030020032003290320370380020240200328029401450d00200328029001102a0b200320013703202003200237032820034180026a4120200341206a41101007200142ffffe883b1de165620024200522002501b0d06411410282204450d01200441002900cfe140370000200441106a41002800dfe140360000200441086a41002900d7e14037000020034294808080c002370294012003200436029001200020034190016a108f0120032802980121042003280290012105200341206a41186a22064200370300200341206a41106a22074200370300200341206a41086a220842003703002003420037032020052004200341206a100020034180026a41186a200629030037030020034180026a41106a200729030037030020034180026a41086a200829030037030020032003290320370380020240200328029401450d00200328029001102a0b200341086a20034180026a109402200341086a41106a29030021022003290310210120032802082109410e10282204450d02200441002900fbe140370000200441066a4100290081e2403700002003428e808080e001370294012003200436029001200020034190016a108f0120032802980121042003280290012105200341206a41186a22064200370300200341206a41106a22074200370300200341206a41086a220842003703002003420037032020052004200341206a100020034180026a41186a200629030037030020034180026a41106a200729030037030020034180026a41086a200829030037030020032003290320370380020240200328029401450d00200328029001102a0b20034180026a4120100902402001200284500d002009450d0020032001370320200320023703282003200341206a3602800220034180026a109d010b2000109502411710282204450d03200441002900f1d8433700002004410f6a4100290080d943370000200441086a41002900f9d84337000020034297808080f002370294012003200436029001200020034190016a108f0120032802980121042003280290012105200341206a41186a22064200370300200341206a41106a22074200370300200341206a41086a220842003703002003420037032020052004200341206a100020034180026a41186a200629030037030020034180026a41106a200729030037030020034180026a41086a200829030037030020032003290320370380020240200328029401450d00200328029001102a0b200341206a20034180026a109602024020032d002022044102460d0020034180026a412010090b2003413c6a2802002106200341386a2802002105024020040d002005200341c0006a28020010042006450d060c050b20044103710d0520060d040c050b411441011037000b411441011037000b410e41011037000b411741011037000b2005102a0b200341f0016a2000108b0220032802f001210420032802f8012105410021062003410036022020042005200341206a10062108024002400240024020032802202207417f460d00200320073602e402200320083602e002200341206a200341e0026a10e80120032d00204101460d0120034180026a200341206a41017241e000109a051a02402007450d002008102a0b200341206a20034180026a41e000109a051a200420051009410121060b20034190016a200341206a41e000109a051a200341206a20034190016a41e000109a051a2006450d0120034180026a200341206a41e000109a051a024020032802f401450d002004102a0b200341206a20034180026a41e000109a051a200341c0006a210a200341e0006a210b4104210641e7e485f30621040340200b210702400240200441e9dabdf306460d000240200441e7e485f306470d00200341206a21070c010b200a2107200441e2c289ab06460d00410121084100210541012107410121090c010b41202105410021084120102822090d00412041011037000b200920072005109a0521072003200536029c01200320053602980120032007360294012003200436029001200341f0016a20034190016a108c0220032802f001220420032802f8011009024020032802f401450d002004102a0b024020080d002007102a0b2006410c460d03200641f8c8c0006a2800002104200641046a21060c000b0b41c4d1c3004133200341e8026a419cd9c3001038000b20032802f401450d002004102a0b411810282204450d01200441002900e3e140370000200441106a41002900f3e140370000200441086a41002900ebe140370000200342988080808003370294012003200436029001200020034190016a108f0120032802980121042003280290012105200341206a41186a22064200370300200341206a41106a22074200370300200341206a41086a220842003703002003420037032020052004200341206a100020034180026a41186a200629030037030020034180026a41106a200729030037030020034180026a41086a200829030037030020032003290320370380020240200328029401450d00200328029001102a0b2003410036022020034180026a4120200341206a10062104024020032802202205417f460d0020054110490d03200441086a2900002102200429000021012004102a200120028450450d010b2000109702200341206a41086a41013a0000200341296a2000290000370000200341316a200041086a290000370000200341396a200041106a290000370000200341c1006a200041186a290000370000200341023a002041014100200341206a10cc010b200341f0026a24000f0b411841011037000b41c4d1c3004133200341e8026a419cd9c3001038000bd40801067f230041c0016b220324000240024002400240411810282204450d00200441002900e3e140370000200441106a41002900f3e140370000200441086a41002900ebe140370000200342988080808003370244200320043602402000200341c0006a108f012003280248210420032802402105200341d0006a41186a22064200370300200341d0006a41106a22074200370300200341d0006a41086a220842003703002003420037035020052004200341d0006a1000200341206a41186a2006290300370300200341206a41106a2007290300370300200341206a41086a20082903003703002003200329035037032002402003280244450d002003280240102a0b2003200137035020032002370358200341206a4120200341d0006a411010070240200142ffffe883b1de165620024200522002501b0d00411810282204450d02200441002900e3e140370000200441106a41002900f3e140370000200441086a41002900ebe140370000200342988080808003370244200320043602402000200341c0006a108f012003280248210420032802402105200341d0006a41186a22064200370300200341d0006a41106a22074200370300200341d0006a41086a220842003703002003420037035020052004200341d0006a1000200341206a41186a2006290300370300200341206a41106a2007290300370300200341206a41086a20082903003703002003200329035037032002402003280244450d002003280240102a0b200341086a200341206a109402024020032903102202200341086a41106a290300220184500d002003280208450d0020032002370350200320013703582003200341d0006a360220200341206a109d010b411410282204450d03200441002900cfe140370000200441106a41002800dfe140360000200441086a41002900d7e14037000020034294808080c002370244200320043602402000200341c0006a108f012003280248210420032802402105200341d0006a41186a22064200370300200341d0006a41106a22074200370300200341d0006a41086a220842003703002003420037035020052004200341d0006a1000200341206a41186a2006290300370300200341206a41106a2007290300370300200341206a41086a20082903003703002003200329035037032002402003280244450d002003280240102a0b20034100360250200341206a4120200341d0006a10062104024020032802502205417f460d0020054110490d05200441086a2900002102200429000021012004102a200120028450450d010b2000109702200341d0006a41086a41013a0000200341d9006a2000290000370000200341e1006a200041086a290000370000200341e9006a200041106a290000370000200341f1006a200041186a290000370000200341023a005041014100200341d0006a10cc010b200341c0016a24000f0b411841011037000b411841011037000b411441011037000b41c4d1c3004133200341d0006a419cd9c3001038000b4d01017f230041206b22002400200041146a410136020020004201370204200041ccd1c5003602002000410436021c200041c4d1c5003602182000200041186a360210200041e8b5c300103e000bb30701057f230041106b2203240020034100360208200342013703002002200310b40102400240024002400240024002402002450d00200241c4006c210403400240024020012d00004101460d0002400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d0a200241017422062005200620054b1b22064100480d0a0240024020020d002006102821050c010b200328020020022006102c21050b2005450d052003200636020420032005360200200328020821020b2003200241016a360208200520026a41003a0000200141046a28020021060240024020032802042205200328020822026b4104490d00200328020021050c010b200241046a22072002490d0a200541017422022007200220074b1b22024100480d0a0240024020050d002002102821050c010b200328020020052002102c21050b2005450d062003200236020420032005360200200328020821020b2003200241046a360208200520026a20063600000c010b02400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d09200241017422062005200620054b1b22064100480d090240024020020d002006102821050c010b200328020020022006102c21050b2005450d062003200636020420032005360200200328020821020b2003200241016a360208200520026a41013a00002003200336020c200141016a2003410c6a10c8010240200141216a2d00004101460d0002400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d0a200241017422062005200620054b1b22064100480d0a0240024020020d002006102821050c010b200328020020022006102c21050b2005450d082003200636020420032005360200200328020821020b2003200241016a360208200520026a41003a00000c010b02400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d09200241017422062005200620054b1b22064100480d090240024020020d002006102821050c010b200328020020022006102c21050b2005450d082003200636020420032005360200200328020821020b2003200241016a360208200520026a41013a0000200141226a2003108f010b200141c4006a2101200441bc7f6a22040d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b200641011037000b200241011037000b200641011037000b200641011037000b200641011037000b1031000bcc0b03057f037e047f230041a0016b22012400200141306a41086a220242003703002001420037033041f5b8c3004113200141306a1008200141206a41086a2002290300370300200120012903303703204100210220014100360230200141206a4110200141306a100621030240024002400240024002400240024002400240024020012802302204417f460d002003450d0020044104490d01200328000021022003102a0b410110282203450d01200320002d00003a0000200341014102102c2203450d02200320002d00013a0001200341024104102c2203450d03200320002d00023a0002200320002d00033a0003200341044108102c2203450d04200320002d00043a0004200320002d00053a0005200320002d00063a0006200320002d00073a0007200341084110102c2203450d05200320002d00083a0008200320002d00093a0009200320002d000a3a000a200320002d000b3a000b200320002d000c3a000c200320002d000d3a000d200320002d000e3a000e200320002d000f3a000f200341104120102c2203450d06200320002d00103a0010200320002d00113a0011200320002d00123a0012200320002d00133a0013200320002d00143a0014200320002d00153a0015200320002d00163a0016200320002d00173a0017200320002d00183a0018200320002d00193a0019200320002d001a3a001a200320002d001b3a001b200320002d001c3a001c200320002d001d3a001d200320002d001e3a001e200320002d001f3a001f20032d0000210420032d000121052003102a200141206a2004200541087472410676220510fe0102402004413f71220320012802284f0d002001200128022020034105746a2203109d022001290300200141086a290300844200520d00200041086a2900002106200041106a2900002107200041186a290000210820032000290000370000200341186a2008370000200341106a2007370000200341086a2006370000200141306a41086a200141206a41086a280200360200200120012903203703302005200141306a10c5030c0a0b02402001280224450d002001280220102a0b200141306a200210fe010240200128023841c000490d000340200241016a210202402001280234450d002001280230102a0b200141306a200210fe012001280238413f4b0d000b0b200141106a41086a200141306a41086a2205280200220336020020012001290330370310200141306a41186a2209200041186a290000370300200141306a41106a220a200041106a2900003703002005200041086a29000037030020012000290000370330024020032001280214470d00200341016a22042003490d092003410174220b2004200b20044b1b220441ffffff3f712004470d092004410574220c4100480d090240024020030d00200c1028210b0c010b20012802102003410574200c102c210b0b200b450d08200120043602142001200b3602100b200320024106746a210b200128021020034105746a22042001290330370000200441086a2005290300370000200441106a200a290300370000200441186a20092903003700002001200341016a22033602180240200341c000470d00200141306a41086a220342003703002001420037033041f5b8c3004113200141306a1008200141206a41086a2003290300370300200120012903303703202001200241016a360230200141206a4110200141306a410410070b200141306a41086a2203200141106a41086a280200360200200120012903103703302002200141306a10c50320032000290000370300200141306a41106a200041086a290000370300200141306a41186a200041106a290000370300200141d0006a200041186a2900003703002001200b360234200141013a003041014100200141306a10cc010c090b41c4d1c3004133200141306a419cd9c3001038000b410141011037000b410241011037000b410441011037000b410841011037000b411041011037000b412041011037000b200c41011037000b1031000b200141a0016a24000b980102037f037e230041106b220224002002410036020420014120200241046a1006210302400240024020022802042204417f470d00420021050c010b20044110490d01200341086a2900002106200329000021072003102a200141201009420121050b2000200537030020002007370308200041106a2006370300200241106a24000f0b41c4d1c3004133200241086a419cd9c3001038000ba00803067f047e027f230041b0016b22012400024002400240410e10282202450d00200241002900fcae44370000200241066a4100290082af443700002001428e808080e00137026c200120023602682000200141e8006a108f01200128027021022001280268210320014188016a41186a2204420037030020014188016a41106a2205420037030020014188016a41086a2206420037030020014200370388012003200220014188016a1000200141286a41186a2004290300370300200141286a41106a2005290300370300200141286a41086a200629030037030020012001290388013703280240200128026c450d002001280268102a0b20014188016a200141286a412010fd01024020012d00880141014722020d00200141286a412010090b200141c8006a41186a2203200141a1016a2900002207370300200141c8006a41106a220420014199016a2900002208370300200141c8006a41086a220520014191016a29000022093703002001200129008901220a370348200141e8006a41186a22062007370300200141e8006a41106a220b2008370300200141e8006a41086a220c20093703002001200a370368024020020d00200141086a41186a20062903002207370300200141086a41106a200b2903002208370300200141086a41086a200c290300220937030020012001290368220a3703082003200737030020042008370300200520093703002001200a370348410e10282202450d022002410029008aaf44370000200241066a4100290090af443700002001428e808080e00137022c20012002360228200141c8006a200141286a108f01200128023021022001280228210320014188016a41186a2204420037030020014188016a41106a2205420037030020014188016a41086a2206420037030020014200370388012003200220014188016a1000200141e8006a41186a2004290300370300200141e8006a41106a2005290300370300200141e8006a41086a200629030037030020012001290388013703680240200128022c450d002001280228102a0b200141e8006a412010090b410d10282202450d0220024100290098af44370000200241056a410029009daf443700002001428d808080d00137024c200120023602482000200141c8006a108f01200128025021022001280248210320014188016a41186a2204420037030020014188016a41106a2205420037030020014188016a41086a2206420037030020014200370388012003200220014188016a1000200141e8006a41186a2004290300370300200141e8006a41106a2005290300370300200141e8006a41086a200629030037030020012001290388013703680240200128024c450d002001280248102a0b200141e8006a41201009200010a604200010a704200141b0016a24000f0b410e41011037000b410e41011037000b410d41011037000bd00a050a7f027e037f027e017f230041e0006b220224002002410036023820014120200241386a1006210302400240024002400240024002400240024020022802382204417f460d0020030d010b200041023a00000c010b2002200436021c200220033602182004450d0520032d0000210120022004417f6a36021c2002200341016a360218200141014b0d0502400240024020010e020001000b200241086a200241186a106c20022802080d07200228021c200228020c2205490d072005417f4c0d030240024020050d0041012106200228021c21070c010b2005102e2206450d092006200228021822012005109a051a200228021c22042005490d052002200420056b220736021c2002200120056a3602180b20074104490d0520022802182208280000210920022007417c6a220a36021c2002200841046a36021841002101200241003a0058417b210b03400240200a2001470d000240200141ff0171450d00200241003a00580b20050d080c090b200241386a20016a200820016a220441046a2d00003a000020022007200b6a36021c2002200441056a3602182002200141016a22043a0058200b417f6a210b2004210120044120470d000b200220022802383602302002200228003b3600330240024002400240200720046b220b417c6a4110490d00200241c7006a290000210c200229003f210d20022d0057210a2002280053210e200228004f210f2002200820046a220141146a22083602182002200b416c6a221036021c20104104490d002001410c6a2900002111200141046a2900002112200828000021082002200b41686a36021c2002200141186a2210360218200741686a2004460d0320102d000021102002200b41676a221336021c2002200141196a360218201041014b0d034100210420100e020201020b20050d090c0a0b20134104490d01200141196a28000021072002200b41636a36021c20022001411d6a360218410121040b2002200228003336002b20022002280230360228200220022802283602382002200228002b36003b200220022800203602102002200241236a280000360013410021012005210b0c020b2005450d070c060b41002101200241003a00582004417f6a21072004417e6a21040340024020072001470d00200141ff0171450d08200241003a00580c080b200241386a20016a200320016a220b41016a2d00003a00002002200b41026a3602182002200141016a220b3a00582002200436021c2004417f6a2104200b2101200b4120470d000b2002200228003b360033200220022802383602302002200228003336002b20022002280230360228200220022802283602102002200228002b360013200241c7006a2900002111200229003f2112200228004f21062002280053210b20022d005721052002200241236a28000036003b20022002280020360238410121010b2002200228021036023020022002280013360033200220022802383602282002200228003b36002b2003102a200041106a2011370300200041086a2012370300200041c3006a200c3700002000413b6a200d370000200020013a0000200041306a20073602002000412c6a2004360200200041286a2008360200200041246a2009360200200041206a20053602002000411c6a200b360200200041186a2006360200200041d3006a200a3a0000200041cf006a200e360000200041cb006a200f36000020002002280230360001200041046a2002280033360000200041346a2002280228360200200041376a200228002b3600000b200241e0006a24000f0b1036000b200520041044000b2005450d010b2006102a0b41c4d1c3004133200241206a419cd9c3001038000b200541011037000b870201057f230041d0006b220124000240411310282202450d00200241002900cef0423700002002410f6a41002800ddf042360000200241086a41002900d6f04237000020014293808080b002370224200120023602202000200141206a108f012001280228210220012802202100200141306a41186a22034200370300200141306a41106a22044200370300200141306a41086a220542003703002001420037033020002002200141306a1000200141186a2003290300370300200141106a2004290300370300200141086a20052903003703002001200129033037030002402001280224450d002001280220102a0b200141201009200141d0006a24000f0b411341011037000bd10402067f037e230041e0006b22052400024002400240411410282206450d00200641002900cfe140370000200641106a41002800dfe140360000200641086a41002900d7e14037000020054294808080c002370234200520063602302001200541306a108f012005280238210620052802302107200541c0006a41186a22084200370300200541c0006a41106a22094200370300200541c0006a41086a220a42003703002005420037034020072006200541c0006a1000200541106a41186a2008290300370300200541106a41106a2009290300370300200541106a41086a200a2903003703002005200529034037031002402005280234450d002005280230102a0b20054100360240200541106a4120200541c0006a100621060240024020052802402207417f470d004200210b4200210c0c010b20074110490d02200641086a290000210c2006290000210b2006102a0b410121060240200b20027d220d200b56200c20037d200b200254ad7d220b200c56200b200c511b4101470d00200041d7dfc000360204200041086a411d3602000c030b024002400240200d428080e983b1de16544100200b501b0d00200541086a20012004200d200b10bc0120052802082206450d02200528020c210120002006360204200041086a20013602000c010b200041f4dfc000360204200041086a411a3602000b410121060c030b2001200d200b108f02200041106a2003370300200041086a2002370300410021060c020b411441011037000b41c4d1c3004133200541c0006a419cd9c3001038000b20002006360200200541e0006a24000bdb0702067f087e23004180016b22022400024002400240411010282203450d0020034100290089e240370000200341086a4100290091e240370000200242908080808002370254200220033602502001200241d0006a108f012002280258210320022802502104200241e0006a41186a22054200370300200241e0006a41106a22064200370300200241e0006a41086a220742003703002002420037036020042003200241e0006a1000200241306a41186a2005290300370300200241306a41106a2006290300370300200241306a41086a20072903003703002002200229036037033002402002280254450d002002280250102a0b20024100360260200241306a4120200241e0006a1006210302400240024020022802602204417f460d002003450d00024020044110490d0020044170714110460d002004417c714120470d020b41c4d1c3004133200241e0006a419cd9c3001038000b42002108420021090c010b200341086a290000210a2003290000210b200341186a290000210c20032900102108200328002021042003102a411410282203450d02200341002900cfe140370000200341106a41002800dfe140360000200341086a41002900d7e14037000020024294808080c002370254200220033602502001200241d0006a108f012002280258210320022802502101200241e0006a41186a22054200370300200241e0006a41106a22064200370300200241e0006a41086a220742003703002002420037036020012003200241e0006a1000200241306a41186a2005290300370300200241306a41106a2006290300370300200241306a41086a20072903003703002002200229036037033002402002280254450d002002280250102a0b20024100360260200241306a4120200241e0006a100621030240024020022802602201417f470d004200210d420021090c010b20014110490d04200341086a29000021092003290000210d2003102a0b4200210e200241106a200c42004100109801220320046b2201200120034b1bad220f4200109f05200241206a200f420020084200109f0520024200420020084200109f054200210802402002290308200229031884420052200241286a290300220f200229030020022903107c7c220c200f54720d00200a200c200b2002290320220e56200a200c56200a200c511b22031b200c7d200b200e20031b220c200e54ad7d2108200c200e7d210e0b20082009200d200e56200920085620092008511b22031b2109200e200d20031b21080b200020083703002000200937030820024180016a24000f0b411041011037000b411441011037000b41c4d1c3004133200241e0006a419cd9c3001038000baf07030b7f037e037f230041f0006b22022400024002400240024002400240410e10282203450d00200341002900fbe140370000200341066a4100290081e2403700002002428e808080e001370234200220033602302001200241306a108f012002280238210320022802302101200241c0006a41186a22044200370300200241c0006a41106a22054200370300200241c0006a41086a220642003703002002420037034020012003200241c0006a1000200241106a41186a2004290300370300200241106a41106a2005290300370300200241106a41086a20062903003703002002200229034037031002402002280234450d002002280230102a0b20024100360240200241106a4120200241c0006a100621070240024020022802402208417f460d002002200836023420022007360230200241086a200241306a106c20022802080d07200228023422034160712201417f4c0d03200228020c2109024002402003410576220a0d004108210b0c010b20011028220b450d050b02402009450d004100210c41002106410021050340200241c0006a200241306a109b020240024020022d00404101460d00200228023422014110490d002002290041210d20022002280230220341106a3602302002200141706a220436023420044104490d00200341086a290000210e2003290000210f20022001416c6a22043602342002200341146a36023020040d010b200a450d0a200b102a0c0a0b200541016a210420032800102110200241e6006a41026a200241ed006a41026a2d000022113a0000200241e2006a41026a221220113a000020022001416b6a3602342002200341156a360230200220022f006d22013b0166200220013b016220032d0014210102402005200a470d00200c2004200c20044b1b220a41ffffff3f71200a470d09200a41057422034100480d090240024020050d0020031028210b0c010b200b20062003102c210b0b200b450d080b200b20066a2203411c6a20013a00002003200e3703082003200f370300200341146a200d370200200341106a20103602002003411d6a20022f01623b00002003411f6a20122d00003a0000200c41026a210c200641206a21062004210520092004470d000b0b200b450d072009ad422086200aad84210d02402008450d002007102a0b2000200d3702042000200b3602000c010b20004100360208200042083702000b200241f0006a24000f0b410e41011037000b1036000b200141081037000b200341081037000b1031000b41c4d1c3004133200241c0006a419cd9c3001038000bf00204027f017e017f077e0240024020012802042202450d0020012802002203310000210420012002417f6a22053602042001200341016a3602002005450d012003310001210620012002417e6a22053602042001200341026a3602002005450d012003310002210720012002417d6a22053602042001200341036a3602002005450d012003310003210820012002417c6a22053602042001200341046a3602002005450d012003310004210920012002417b6a22053602042001200341056a3602002005450d012003310005210a20012002417a6a22053602042001200341066a3602002005450d012003310006210b2001200241796a22053602042001200341076a3602002005450d01200041003a00002003310007210c2001200241786a3602042001200341086a3602002000200c423886200b42308684200a422886842009422086842008421886842007421086842006420886842004843700010f0b200041013a00000f0b200041013a00000bce1003077f027e027f230041d0006b220224000240024002400240024002400240024002400240024002400240410e10282203450d00200341002900fbe140370000200341066a4100290081e2403700002002428e808080e001370224200220033602202000200241206a108f012002280228210320022802202100200241306a41186a22044200370300200241306a41106a22054200370300200241306a41086a220642003703002002420037033020002003200241306a1000200241186a2004290300370300200241106a2005290300370300200241086a20062903003703002002200229033037030002402002280224450d002002280220102a0b200128020021072001280208210320024100360238200242013703302003200241306a10b40102402003450d002003410574210841002106034002400240200228023420022802382203460d00200228023021000c010b200341016a22002003490d0f200341017422042000200420004b1b22044100480d0f0240024020030d002004102821000c010b200228023020032004102c21000b2000450d042002200436023420022000360230200228023821030b2002200341016a360238200020036a200720066a220341146a2d00003a000002400240200228023420022802382200460d00200228023021040c010b200041016a22042000490d0f200041017422052004200520044b1b22054100480d0f0240024020000d002005102821040c010b200228023020002005102c21040b2004450d052002200536023420022004360230200228023821000b2002200041016a360238200420006a200341156a2d00003a000002400240200228023420022802382200460d00200228023021040c010b200041016a22042000490d0f200041017422052004200520044b1b22054100480d0f0240024020000d002005102821040c010b200228023020002005102c21040b2004450d062002200536023420022004360230200228023821000b2002200041016a360238200420006a200341166a2d00003a000002400240200228023420022802382200460d00200228023021040c010b200041016a22042000490d0f200041017422052004200520044b1b22054100480d0f0240024020000d002005102821040c010b200228023020002005102c21040b2004450d072002200536023420022004360230200228023821000b2002200041016a360238200420006a200341176a2d00003a000002400240200228023420022802382200460d00200228023021040c010b200041016a22042000490d0f200041017422052004200520044b1b22054100480d0f0240024020000d002005102821040c010b200228023020002005102c21040b2004450d082002200536023420022004360230200228023821000b2002200041016a360238200420006a200341186a2d00003a000002400240200228023420022802382200460d00200228023021040c010b200041016a22042000490d0f200041017422052004200520044b1b22054100480d0f0240024020000d002005102821040c010b200228023020002005102c21040b2004450d092002200536023420022004360230200228023821000b2002200041016a360238200420006a200341196a2d00003a000002400240200228023420022802382200460d00200228023021040c010b200041016a22042000490d0f200041017422052004200520044b1b22054100480d0f0240024020000d002005102821040c010b200228023020002005102c21040b2004450d0a2002200536023420022004360230200228023821000b2002200041016a360238200420006a2003411a6a2d00003a000002400240200228023420022802382200460d00200228023021040c010b200041016a22042000490d0f200041017422052004200520044b1b22054100480d0f0240024020000d002005102821040c010b200228023020002005102c21040b2004450d0b2002200536023420022004360230200228023821000b2002200041016a360238200420006a2003411b6a2d00003a0000200341086a29030021092003290300210a0240024020022802342205200228023822046b4110490d00200228023021000c010b200441106a22002004490d0f200541017422042000200420004b1b220b4100480d0f0240024020050d00200b102821000c010b20022802302005200b102c21000b2000450d0c2002200b3602342002200036023020022802382104200b21050b200020046a220b2009370008200b200a3700002002200441106a2204360238200341106a280200210b0240200520046b41034b0d00200441046a220c2004490d0f20054101742204200c2004200c4b1b22044100480d0f0240024020050d002004102821000c010b200020052004102c21000b2000450d0d2002200436023420022000360230200228023821040b2002200441046a360238200020046a200b36000002400240200228023420022802382200460d00200228023021040c010b200041016a22042000490d0f200041017422052004200520044b1b22054100480d0f0240024020000d002005102821040c010b200228023020002005102c21040b2004450d0e2002200536023420022004360230200228023821000b2002200041016a360238200420006a2003411c6a2d00003a00002008200641206a2206470d000b0b2002280234210320024120200228023022002002280238100702402003450d002000102a0b0240200141046a280200450d002007102a0b200241d0006a24000f0b410e41011037000b200441011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200b41011037000b200441011037000b200541011037000b1031000bd00502067f047e230041d0006b220224000240024002400240411410282203450d00200341002900cfe140370000200341106a41002800dfe140360000200341086a41002900d7e14037000020024294808080c002370224200220033602202001200241206a108f012002280228210320022802202104200241306a41186a22054200370300200241306a41106a22064200370300200241306a41086a220742003703002002420037033020042003200241306a1000200241186a2005290300370300200241106a2006290300370300200241086a20072903003703002002200229033037030002402002280224450d002002280220102a0b2002410036023020024120200241306a100621030240024020022802302204417f470d0042002108420021090c010b20044110490d02200341086a2900002109200329000021082003102a0b411810282203450d02200341002900e3e140370000200341106a41002900f3e140370000200341086a41002900ebe140370000200242988080808003370224200220033602202001200241206a108f012002280228210320022802202101200241306a41186a22044200370300200241306a41106a22054200370300200241306a41086a220642003703002002420037033020012003200241306a1000200241186a2004290300370300200241106a2005290300370300200241086a20062903003703002002200229033037030002402002280224450d002002280220102a0b2002410036023020024120200241306a100621030240024020022802302201417f470d004200210a4200210b0c010b20014110490d04200341086a290000210b2003290000210a2003102a0b2000200a20087c22083703002000200b20097c2008200a54ad7c370308200241d0006a24000f0b411441011037000b41c4d1c3004133200241306a419cd9c3001038000b411841011037000b41c4d1c3004133200241306a419cd9c3001038000bf00906017f037e017f017e017f037e230041c0016b220724004200210842002109024020050d00200741f0006a2006ad42004280c8afa0254200109f05200741f8006a2903002007290370220a4280a094a58d1d7c2208200a54ad7c21090b20074180016a41086a22054200370300200742003703800141bfa0c600411b20074180016a1008200741a0016a41086a220b200529030037030020072007290380013703a001200741e0006a200741a0016a109f02200728026021052007290368210a2007418094ebdc03360284012007200a420020051b220a200a423f87220c7c200c85220c200c428094ebdc037f220c4280ec94a37c7e7ca7220536028001200741d0006a417f2004418094ebdc032004418094ebdc03491b2204417f417f2004ad200ca7417f200c428080808010541bad7e220ca7200c422088a71b220620074180016a2005418094ebdc034b4102746a28020022052004418094ebdc036e220d6c2005ad2004200d4180ec94a37c6c6aad7e428094ebdc0380a76a6a220520052006491b22056a220620062004491b4100200420056b2205200520044b1b200a4200551bad420042e8074200109f0520074180016a2003427f200820072903507c220a20017c220c200c200a5422042009200741d0006a41086a2903007c200a200854ad7c220820027c2004ad7c220a200854200a2008511b22041b220e427f200a20041b220f4101109802024002402007280280014101470d0020004180023b0001200041013a0000200041036a41003a00000c010b200741206a2007290388012209420042044200109f05200741106a4200420020094200109f05200741306a2007290320200741206a41086a290300220820074180016a41106a290300220a42028620072903107c7c220c4205420010a00520072903182101200741306a41086a29030021022007290330211020074180016a10d301200741c0006a20074180016a42b3e6cc99b3e6cc99332010200a200a42ffffffffffffffff3f8352200142005272200c2008547222041b22082009200820095442b3e6cc99b3e6cc9933200220041b220c200a54200c200a511b22041b2208200c200a20041b220c10d001200741a0016a41106a200c200741c0006a41086a29030022027d20082007290340220154ad7d2002200c7d2001200854ad7d20012008582002200c582002200c5122041b22051b3703002007200820017d200120087d20051b3703a801200720012008562002200c5620041b2204ad3703a001200a200c7d2009200854ad7d210a200920087d21080240024020040d002007200b3602bc01200741bc016a109d010c010b2007200b3602bc01200741bc016a109c010b20074180016a10f801200720074180016a2008200a10d001200741b0016a200a200741086a29030022097d20082007290300220c54ad7d2009200a7d200c200854ad7d200c2008582009200a582009200a5122041b22051b37030020072008200c7d200c20087d20051b3703a8012007200c2008562009200a5620041b2204ad3703a001200741a0016a41086a21050240024020040d00200720053602bc01200741bc016a109d010c010b200720053602bc01200741bc016a109c010b200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a200e427f200f501b370300200041003a00000b200741c0016a24000b820102027f027e230041106b220224002002410036020420014110200241046a100621010240024020022802042203417f460d002001450d00024020034108490d00200129000021042001102a420121050c020b41c4d1c3004133200241086a419cd9c3001038000b420021050b2000200437030820002005370300200241106a24000b1300200041033602042000419ce2c0003602000bc70104017f017e027f017e230041206b2201240042002102200141106a41086a220342003703002001420037031041ace1c0004116200141106a1008200141086a2003290300370300200120012903103703002001410036021020014110200141106a1006210302400240024020012802102204417f470d00420021050c010b20044110490d01200341086a2900002105200329000021022003102a0b2000200237030020002005370308200141206a24000f0b41c4d1c3004133200141106a419cd9c3001038000b3400200041b2f3c00036020420004100360200200041146a4105360200200041106a41bcf3c000360200200041086a42083702000b3701017f02404110102822020d00411041011037000b2002420037000820024200370000200042908080808002370204200020023602000b130020004105360204200041d884c1003602000be70302067f037e230041e0006b2204240020042001109d0202400240024002402004290300200441086a29030084500d00411410282205450d02200541002900cfe140370000200541106a41002800dfe140360000200541086a41002900d7e14037000020044294808080c002370234200420053602302001200441306a108f012004280238210520042802302106200441c0006a41186a22074200370300200441c0006a41106a22084200370300200441c0006a41086a220942003703002004420037034020062005200441c0006a1000200441106a41186a2007290300370300200441106a41106a2008290300370300200441106a41086a20092903003703002004200429034037031002402004280234450d002004280230102a0b20044100360240200441106a4120200441c0006a100621050240024020042802402206417f470d004200210a4200210b0c010b20064110490d04200541086a290000210b2005290000210a2005102a0b2001200a20027c220c200b20037c200c200a54ad7c108f02200041106a2003370300200041086a2002370300410021010c010b200041b5dfc000360204200041086a4122360200410121010b20002001360200200441e0006a24000f0b411441011037000b41c4d1c3004133200441c0006a419cd9c3001038000b130020004101360204200041f88ac1003602000b3400200041b18cc10036020420004100360200200041146a4103360200200041106a41bc8cc100360200200041086a42083702000bef0a09037f017e067f037e017f027e077f017e017f230041306b2203240010980121042000280000210520003500042106200341106a2001109a02200328021021072003280214210802400240024002400240024002400240024020032802182209450d0020072009410574220a6a210b200341246a210c200721090340200941086a290300210d200941106a290300210e2009290300210f200341106a41186a200941186a290300370300200341106a41106a200e370300200341106a41086a200d3703002003200f370310200c2000460d02200c2900002000290000510d0202402003280220221020044d0d002003410e6a2003412f6a2d00003a0000200320032f002d3b010c200341186a290300210f427f210e200329031021114201210d20032d002c210c200329022421120c040b200941206a2109200a41606a220a0d000b0b41082113410021102008450d022007102a0c020b2003280220220c2002200c20024b1b211020032d002c410272210c427f21114200210e41002102200329022421124200210d41002105427f210f0b200341026a22142003410c6a41026a2d00003a0000200320032f010c3b010002400240412010282213450d00201320113703002013200c3a001c2013201237021420132010360210201320032f01003b001d2013200f3703082013411f6a20142d00003a000002400240200a4120470d0041012110200e210f410121140c010b200941206a2115200b41606a21162003412d6a2117200341246a210c200e210f4101211041012114034020152109024002400340200341106a41186a200941186a290300370300200341106a41106a200941106a290300370300200341106a41086a220a200941086a2903003703002003200929030037031002400240200c2000460d00200c2900002000290000510d002003280220221820044d0d012003410c6a41026a201741026a2d00003a0000200320172f00003b010c200a29030021112003290310211220032d002c21192003290224211a0c040b200d4201510d024200210e410021024200210f4200210d410021050b200b200941206a2209470d000c040b0b200a290300220d200f20032903102212200e56200d200f56200d200f511b220a1b21112012200e200a1b21122003280220220a2002200a20024b1b211820032d002c41027221194200210e410021022003290224211a4200210f4200210d410021050b200341046a41026a2003410c6a41026a2d0000220a3a0000200320032f010c22153b0104200341106a41026a221b200a3a0000200320153b0110024020142010470d00201041016a220a2010490d0a20104101742214200a2014200a4b1b221441ffffff3f712014470d0a2014410574220a4100480d0a0240024020100d00200a102821130c010b20132010410574200a102c21130b2013450d040b200941206a2115201320104105746a220a20193a001c200a2011370308200a2012370300200a201a370214200a2018360210200a20032f01103b001d200a411f6a201b2d00003a0000201041016a211020162009470d000b0b02402008450d002007102a0b200d4201520d0520102014470d040c030b412041081037000b200a41081037000b427f210e427f210f0b201041016a22092010490d03201041017422002009200020094b1b221441ffffff3f712014470d03201441057422094100480d030240024020100d002009102821130c010b201320104105742009102c21130b2013450d020b201320104105746a2209200f3703082009200e3703002009200536021420092002360210200941186a200642808080802084370300201041016a21100b2003201036021820032014360214200320133602102001200341106a109c02200341306a24000f0b200941081037000b1031000bef0a07037f027e047f087e017f047e027f230022062107200641c0006b41607122062400109801210820062003370310200620023703082006200436021842012109200642013703002006200028000036021c20003500042102200641206a2001109a0220022005ad42ff018342208684210a2006280220210b2006280224210c0240024002400240024020062802282205450d00200b200541057422046a210d200641346a210e2006290300220921032006290308220f2110200629031022112112200629031822132114200b21050340200541086a2903002102200541106a290300211520052903002116200641206a41186a200541186a290300370300200641206a41106a22172015370300200641206a41086a20023703002006201637032002400240200e2000460d00200e2900002000290000510d000240200628023020084b0d0020032102420021030c020b20172903002118200629032821192006290320211a2006290338211b20032102420121030c010b420021094200210f420021114200211342002102200a211b2010211a20122119201421180b20034201510d02200541206a210520022103200441606a22040d000b200620093703002006200f37030820062011370310200620133703180b41002104200c450d01200b102a0c010b200620023703002006201037030820062012370310200620143703180240412010282217450d002017201b3703182017201a37030020172019370308201741106a201837030002400240024020044120470d0041012104200221094101211c0c010b200541206a2105200641346a211d20022109410121044101211c034002400240201d2000460d00200221030340200641206a41186a200541186a290300370300200641206a41106a220e200541106a290300370300200641206a41086a200541086a2903003703002006200529030037032002400240201d2900002000290000510d000240200628023020084b0d0020032102420021030c020b200e290300211b20062903282116200629032021152006290338211a20032102420121030c010b42002109200642003703004200210220102115201221162014211b200a211a0b024020034201510d0020022103200d200541206a2205470d010c050b0b200541206a21050c010b024003402006420037030020024201510d0142002102200d200541206a2205470d000b420021090c030b200541206a2105420021094200210220102115201221162014211b200a211a0b0240201c2004470d00200441016a220e2004490d072004410174221c200e201c200e4b1b221c41ffffff3f71201c470d07201c410574220e4100480d070240024020040d00200e102821170c010b20172004410574200e102c21170b2017450d030b201720044105746a220e2016370308200e2015370300200e41106a201b370300200e41186a201a370300200441016a21042005200d470d000b0b200c450d03200b102a0c030b200e41081037000b412041081037000b4100211c410821170b0240024020094201520d00200641206a41106a22002006410872220541106a290300370300200641206a41086a220e200541086a2903003703002006200529030037032002402004201c470d00200441016a22052004490d03200441017422082005200820054b1b221c41ffffff3f71201c470d03201c41057422054100480d030240024020040d002005102821170c010b201720044105742005102c21170b2017450d020b201720044105746a22052006290320370300200541106a2000290300370300200541086a200e290300370300200541186a200a370300200441016a21040b200620043602282006201c360224200620173602202001200641206a109c02200724000f0b200541081037000b1031000bff0502067f057e230041d0006b220324000240024002400240411810282204450d00200441002900e3e140370000200441106a41002900f3e140370000200441086a41002900ebe140370000200342988080808003370224200320043602202000200341206a108f012003280228210420032802202105200341306a41186a22064200370300200341306a41106a22074200370300200341306a41086a220842003703002003420037033020052004200341306a1000200341186a2006290300370300200341106a2007290300370300200341086a20082903003703002003200329033037030002402003280224450d002003280220102a0b2003410036023020034120200341306a100621040240024020032802302205417f470d00420021094200210a0c010b20054110490d02200441086a290000210a200429000021092004102a0b411410282204450d02200441002900cfe140370000200441106a41002800dfe140360000200441086a41002900d7e14037000020034294808080c002370224200320043602202000200341206a108f012003280228210420032802202105200341306a41186a22064200370300200341306a41106a22074200370300200341306a41086a220842003703002003420037033020052004200341306a1000200341186a2006290300370300200341106a2007290300370300200341086a20082903003703002003200329033037030002402003280224450d002003280220102a0b2003410036023020034120200341306a100621040240024020032802302205417f470d004200210b4200210c0c010b20054110490d04200441086a290000210c2004290000210b2004102a0b2000200b200120092009200156200a200256200a2002511b22041b22017c220d200c2002200a20041b22027c200d200b54ad7c108f022000200920017d200a20027d2009200154ad7d109002200341d0006a24000f0b411841011037000b41c4d1c3004133200341306a419cd9c3001038000b411441011037000b41c4d1c3004133200341306a419cd9c3001038000bc70301047f230041106b2203240020034100360208200342013703002001200310b40102400240024002402001450d00200141216c210403400240024020002d00004101460d0002400240200328020420032802082201460d00200328020021050c010b200141016a22052001490d07200141017422062005200620054b1b22064100480d070240024020010d002006102821050c010b200328020020012006102c21050b2005450d052003200636020420032005360200200328020821010b2003200141016a360208200520016a41003a00000c010b02400240200328020420032802082201460d00200328020021050c010b200141016a22052001490d06200141017422062005200620054b1b22064100480d060240024020010d002006102821050c010b200328020020012006102c21050b2005450d052003200636020420032005360200200328020821010b2003200141016a360208200520016a41013a0000200041016a2003108f010b200041216a21002004415f6a22040d000b0b2003280204210020022802002002280204200328020022012003280208100702402000450d002001102a0b200341106a24000f0b200641011037000b200641011037000b1031000bdb0401057f230041106b2203240020034100360208200342013703002002200310b401024002400240024002402002450d0020024190016c2104034020032802042105200328020821020240024020012802004113470d000240024020052002460d00200328020021050c010b200241016a22052002490d08200241017422062005200620054b1b22064100480d080240024020020d002006102821050c010b200328020020022006102c21050b2005450d052003200636020420032005360200200328020821020b2003200241016a360208200520026a41003a00000c010b0240024020052002460d00200328020021050c010b200241016a22052002490d07200241017422062005200620054b1b22064100480d070240024020020d002006102821050c010b200328020020022006102c21050b2005450d052003200636020420032005360200200328020821020b2003200241016a360208200520026a41013a00002001200310eb0120014188016a28020021060240024020032802042205200328020822026b4104490d00200328020021050c010b200241046a22072002490d07200541017422022007200220074b1b22024100480d070240024020050d002002102821050c010b200328020020052002102c21050b2005450d062003200236020420032005360200200328020821020b2003200241046a360208200520026a20063600000b20014190016a2101200441f07e6a22040d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b200641011037000b200641011037000b200241011037000b1031000b6801037f024041094101200128020022024101461b220310282204450d000240024020020d00200441003a0000410121010c010b200441013a000020042001290204370001410921010b2000200136020820002003360204200020043602000f0b200341011037000bcc0902057f027e230041c0006b22022400024002400240024002402001280200417f6a220341024b0d0020030e03010203010b41a091c1001032000b410121030240024020012d00044101460d00200241026a200141046a220341036a2d00003a0000200241206a41086a200141146a290200370300200241306a2001411c6a290200370300200241386a200141246a2d00003a0000200220032f00013b010020022001410c6a290200370320200141086a2802002104410021030c010b200141086a28020021040b200020033a0004200020022f01003b000520004101360200200041286a2001290328370300200041086a20043602002000410c6a2002290320370200200041306a200141306a290300370300200041076a200241026a2d00003a0000200041146a200241206a41086a2903003702002000411c6a200241306a290300370200200041246a200241386a2802003602000c020b410121030240024020012d00044101460d00200241026a200141046a220341036a2d00003a0000200241206a41086a200141146a290200370300200241306a2001411c6a290200370300200241386a200141246a2d00003a0000200220032f00013b010020022001410c6a290200370320200141086a2802002104410021030c010b200141086a28020021040b200020033a0004200020022f01003b0005200041286a2001290328370300200041386a2001290338370300200041086a20043602002000410c6a2002290320370200200041306a200141306a290300370300200041c0006a200141c0006a290300370300200041076a200241026a2d00003a0000200041146a200241206a41086a2903003702002000411c6a200241306a290300370200200041246a200241386a280200360200200041023602000c010b200141286a2103410121040240024020012d00044101460d002002411e6a200141046a220441036a2d00003a0000200241086a200141146a290200370300200241106a2001411c6a290200370300200241186a200141246a2d00003a0000200220042f00013b011c20022001410c6a290200370300200141086a2802002105410021040c010b200141086a28020021050b410121060240024020032d00004101460d002002413e6a200341036a2d00003a0000200241286a200141386a290200370300200241306a200141c0006a290200370300200241386a200141c8006a2d00003a0000200220032f00013b013c2002200141306a2902003703202001412c6a2802002103410021060c010b2001412c6a28020021030b200020043a0004200020022f011c3b0005200020022f013c3b0029200041086a20053602002000410c6a2002290300370200200041286a20063a0000200041076a2002411c6a41026a2d00003a0000200041146a200241086a2903003702002000411c6a200241106a290300370200200041246a200241186a2802003602002000412b6a2002413c6a41026a2d00003a0000200141d8006a2903002107200129035021082000412c6a2003360200200041d0006a2008370300200041d8006a200737030020004103360200200041306a2002290320370200200041386a200241206a41086a290300370200200041c0006a200241206a41106a290300370200200041c8006a200241206a41186a2802003602000b200241c0006a24000b960403077f017e067f02400240024002402001410c6a2802002202417f4c0d0020012802042103200128020021040240024020020d0041012105410021060c010b20022106200210282205450d020b200520032002109a052107200141186a2802002208ad420c7e2209422088a70d002009a72203417f4c0d002001280210210a0240024020030d004104210b0c010b20031028220b450d030b0240024020080d004100210c0c010b200a2008410c6c6a210d4100210c200b21050340200a41086a2802002203417f4c0d02200a280200210e0240024020030d004101210f0c010b20031028220f450d060b200f200e2003109a05210e200541086a2003360200200541046a20033602002005200e3602002005410c6a2105200c41016a210c200a410c6a220a200d470d000b0b20002007360204200020043602002000200129021c37021c200041186a200c360200200041146a2008360200200041106a200b3602002000410c6a2002360200200041086a2006360200200020012902243702242000412c6a2001412c6a290200370200200041346a200141346a2902003702002000413c6a2001413c6a290200370200200041c4006a200141c4006a290200370200200041cc006a200141cc006a290200370200200041d4006a200141d4006a290200370200200041dc006a200141dc006a2902003702000f0b1036000b200241011037000b200341041037000b200341011037000bd90303027f017e027f02402001450d00034020002802e40121002001417f6a22010d000b0b02402002450d004100210341002101034002400240200120002f01064f0d0020002001410c6c6a220441e4006a2902002105200441e0006a2802002104200141016a21010c010b02400240200028020022010d002003ad210541002106410021010c010b20003301044220862003ad842105410121060b2000102a2005a72103024002402005422088a7220720012f01064f0d00200121040c010b034002400240200128020022040d002003ad2105410021040c010b200641016a210620013301044220862003ad8421050b2001102a2005a72103200421012005422088a7220720042f01064f0d000b0b200741027420046a41e8016a280200210020042007410c6c6a220141e4006a2902002105200141e0006a280200210402402006417f6a2201450d00034020002802e40121002001417f6a22010d000b0b410021010b2004450d012002417f6a210202402005a7450d002004102a0b20020d000b0b0240200041f8b9c000460d00200028020021012000102a2001450d00200128020021042001102a2004450d00024020042802002201450d0003402004102a2001210420012802002200210120000d000b0b2004102a0b0bd308030d7f017e017f230041a0016b2202240002400240024020012802202203450d0020012003417f6a36022020012802082104200128020c2205200128020422062f01064f0d01200241186a2207200620054105746a220341206a290000370300200241106a2208200341186a290000370300200241086a2209200341106a2900003703002002200341086a290000370300200241206a41286a220a2006200541306c6a22034190036a290300370300200241206a41206a220b20034188036a290300370300200241206a41186a220c20034180036a290300370300200241206a41106a220d200341f8026a290300370300200241206a41086a220e200341f0026a290300370300200341e8026a290300210f2001200541016a36020c20012004360208200120063602042002200f370320200241d0006a41186a2007290300370300200241d0006a41106a2008290300370300200241d0006a41086a200929030037030020022002290300370350200241d0006a41286a200e290300370300200241d0006a41306a200d29030037030020024188016a200c29030037030020024190016a200b29030037030020024198016a200a290300370300200220022903203703702000200241d0006a41d000109a051a0c020b200041003602400c010b2001280200210702400240200628020022030d002004ad210f410021030c010b200741016a210720063301044220862004ad84210f0b2006102a200fa7210502400240200f422088a7220420032f01064f0d00200321060c010b034002400240200328020022060d002005ad210f410021060c010b200741016a210720033301044220862005ad84210f0b2003102a200fa7210520062103200f422088a7220420062f01064f0d000b0b200241186a2208200620044105746a220341206a290000370300200241106a2209200341186a290000370300200241086a220a200341106a2900003703002002200341086a290000370300200241206a41286a220b2006200441306c6a22034190036a290300370300200241206a41206a220c20034188036a290300370300200241206a41186a220d20034180036a290300370300200241206a41106a220e200341f8026a290300370300200241206a41086a2210200341f0026a2903003703002002200341e8026a290300370320200441027420066a41fc066a280200210302402007417f6a2206450d00034020032802f80621032006417f6a22060d000b0b2001410036020c200120053602082001200336020420014100360200200241d0006a41186a2008290300370300200241d0006a41106a2009290300370300200241d0006a41086a200a290300370300200241d0006a41286a2010290300370300200241d0006a41306a200e29030037030020024188016a200d29030037030020024190016a200c29030037030020024198016a200b29030037030020022002290300370350200220022903203703702000200241d0006a41d000109a051a0b200241a0016a24000bbd0301057f230041106b2203240002400240024002400240200141046a2204417f4c0d000240024020040d00410121050c010b200410282205450d020b2003410036020820032004360204200320053602002001200310b4010240024020032802042206200328020822056b2001490d00200328020021040c010b200520016a22042005490d05200641017422072004200720044b1b22074100480d050240024020060d002007102821040c010b200328020020062007102c21040b2004450d032003200736020420032004360200200721060b200420056a20002001109a051a02400240200241046a2802002207200241086a28020022006b200520016a2201490d00200228020021050c010b200020016a22052000490d05200741017422002005200020054b1b22004100480d050240024020070d002000102821050c010b200228020020072000102c21050b2005450d0420022005360200200241046a2000360200200241086a28020021000b200241086a200020016a360200200520006a20042001109a051a02402006450d002004102a0b200341106a24000f0b1036000b200441011037000b200741011037000b200041011037000b1031000b880201057f230041d0006b220224000240411710282203450d00200341002900f1d8433700002003410f6a4100290080d943370000200341086a41002900f9d84337000020024297808080f002370224200220033602202000200241206a108f012002280228210320022802202100200241306a41186a22044200370300200241306a41106a22054200370300200241306a41086a220642003703002002420037033020002003200241306a1000200241186a2004290300370300200241106a2005290300370300200241086a20062903003703002002200229033037030002402002280224450d002002280220102a0b2002200110e203200241d0006a24000f0b411741011037000b1000200028020020002802042001105f0baf0201037f23004180016b2202240002400240024002400240200128020022034110710d002000280200210420034120710d012004ad41012001103f21000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000b20024180016a240020000f0b20044180011044000b20044180011044000b130020004101360204200041cc9ac1003602000b130020004102360204200041849cc1003602000b3101017f02404104102822020d00410441011037000b20004284808080c00037020420002002360200200241e8073600000b3101017f02404104102822020d00410441011037000b20004284808080c00037020420002002360200200241e5003600000bd20903067f017e057f230041f0016b22022400024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002005417f6a220541014b0d0520050e020102010b200041023a00000c050b20064104490d012004280001210720012003417b6a22053602042001200441056a36020020054108490d02200429000521082001200341736a36020420012004410d6a36020041002105200241003a00b001410d20036b2109200341726a210603400240200920056a0d000240200541ff0171450d00200241003a00b0010b200041023a00000c060b20024190016a20056a200420056a220a410d6a2d00003a0000200120063602042001200a410e6a3602002002200541016a220a3a00b0012006417f6a2106200a2105200a4120470d000b200241f0006a41186a20024190016a41186a290300370300200241f0006a41106a20024190016a41106a290300370300200241f0006a41086a20024190016a41086a290300370300200220022903900137037041002105200241003a00d0012004200a6a2109200a20036b410d6a210a03400240200a20056a0d000240200541ff0171450d00200241003a00d0010b200041023a00000c060b20024190016a20056a200920056a2204410d6a2d00003a00002001200636020420012004410e6a3602002002200541016a22043a00d0012006417f6a210620042105200441c000470d000b200241106a41386a220120024190016a41386a290300370300200241106a41306a220520024190016a41306a290300370300200241106a41286a220620024190016a41286a290300370300200241106a41206a220420024190016a41206a290300370300200241106a41186a220a20024190016a41186a290300370300200241106a41106a220320024190016a41106a290300370300200241106a41086a220920024190016a41086a290300370300200241d0006a41086a220b200241f0006a41086a290300370300200241d0006a41106a220c200241f0006a41106a290300370300200241d0006a41186a220d200241f0006a41186a290300370300200220022903900137031020022002290370370350200041003a000020002002290350370001200041096a200b290300370000200041116a200c290300370000200041196a200d290300370000200041216a2002290310370000200041296a2009290300370000200041316a2003290300370000200041396a200a290300370000200041c1006a2004290300370000200041c9006a2006290300370000200041d1006a2005290300370000200041d9006a2001290300370000200041e3006a2002410f6a2d00003a0000200041e1006a20022f000d3b0000200041e8006a2008370300200041e4006a20073602000c040b0240024020064104490d002004280001210620012003417b6a22053602042001200441056a360200200541084f0d010b200041023a00000c040b200041013a0000200020022f00103b0001200429000521082001200341736a36020420012004410d6a360200200041086a2008370300200041046a2006360200200041036a200241126a2d00003a0000200041106a20024190016a41e000109a051a0c030b200041023a00000c020b200041023a00000c010b200041023a00000b200241f0016a24000be71207027f017e057f027e017f017e0a7f230041b0036b2202240020002802102203200328020041016a36020020002902142104200028020c2103200028020821052000280200210620002802042100200241f0016a41086a2207200141086a280200360200200220012902003703f001024002400240024020002f01062201410b490d00200241d0026a410272410041da001099051a200241386a41004184011099051a0240024041e40110282208450d0020084100360200200841046a200241d0026a41dc00109a051a200841e0006a200241386a418401109a052107200241386a41086a2209200041b0016a280200360200200220002902a8013703382000413c6a330000210a2000413e6a310000210b20002d003f210c2000350038210d200841086a200041c0006a20002f010641796a2201410374109a05210e2007200041b4016a2001410c6c109a052107200041063b0106200820013b0106200241d0026a41086a2009280200360200200220022903383703d002200d200a200b4210868442208684210a0240024020034107490d002003410374200e6a41506a200e200341796a22094103746a220e200141ffff037120096b410374109b051a200e20043700002003410c6c20076a220341b87f6a200341ac7f6a2203200841066a22012f010020096b410c6c109b051a200341086a200241f0016a41086a280200360200200320022903f0013702000c010b200041086a20034103746a220741086a2007200041066a22012f010020036b410374109b051a20072004370000200041e0006a2003410c6c6a2207410c6a200720012f010020036b410c6c109b051a200741086a200241f0016a41086a280200360200200720022903f0013702000b200120012f010041016a3b0100200241286a41086a220f200241d0026a41086a22102802002203360200200241086a221120033602002002200c3a0017200220022903d00222043703282002200a3e02102002200a4230883c00162002200a4220883d011420022004370300200229031021042000280200220c450d0320002f01042112200241d0026a410272211303402002200641016a22063602202002200c360224200f201128020036020020022002290300370328201241ffff03712109024002400240200c2f01062200410b490d002013410041da001099051a200241f0016a200241d0026a41dc00109a051a200241386a410041b4011099051a41940210282207450d0520074100360200200741046a200241f0016a41dc00109a051a200741e0006a200241386a41b401109a052103200c41386a290000210a200241386a41086a2214200c41b0016a2802003602002002200c41a8016a290200370338200741086a200c41c0006a200c2f0106220141796a2200410374109a0521152003200c41b4016a2000410c6c109a052116200741e4016a200c4180026a2001417a6a220e410274109a052117200c41063b0106200720003b01060240200e450d00410021002017210303402003280200220120003b010420012007360200200341046a2103200e200041016a2200470d000b0b20102014280200220036020020022002290338220b3703d002201420003602002002200b370338201241ffff037122034107490d0120152009417a6a22034103746a2015200941796a22004103746a220120072f010620006b410374109b051a200120043700002009410c6c20166a220141b87f6a200141ac7f6a220120072f0106220e20006b410c6c109b051a200141086a200f280200360200200120022903283702002007200e41016a22013b01062009410274221220176a416c6a201720034102746a220e200141ffff0371220920036b410274109b051a200e200836020020092003490d02200720126a41cc016a2103034020032802002201200041016a22003b010420012007360200200341046a210320002009490d000c030b0b200c41086a2201200941016a22034103746a200120094103746a2201200020096b2207410374109b051a20012004370000200c2009410c6c6a220141ec006a200141e0006a220e2007410c6c109b051a200141e8006a200241286a41086a280200360200200e2002290328370200200c200041016a22003b01062009410274200c41e4016a22016a41086a200120034102746a2201200041ffff0371220720036b410274109b051a20012008360200201241ffff037120074f0d07200c2003417f6a22004102746a41e8016a2103034020032802002201200041016a22003b01042001200c360200200341046a210320002007490d000c080b0b200c41086a2200200941016a220e4103746a200020094103746a2200200c2f0106220120096b2212410374109b051a20002004370000200c41e0006a2009410c6c6a2200410c6a20002012410c6c109b051a200041086a200f28020036020020002002290328370200200c200141016a22003b010620094102742217200c41e4016a22016a41086a2001200e4102746a2212200041ffff03712201200e6b410274109b051a20122008360200200320014f0d00200c20176a41e8016a2100034020002802002203200941016a22093b01042003200c360200200041046a210020012009470d000b0b200241106a41086a2014280200220036020020112000360200200220022903382204370310200220043703000240200c28020022000d0020072108200a21040c050b200c2f010421122000210c200a2104200721080c000b0b41e40141041037000b41940241041037000b200020034103746a220941106a200941086a2209200120036b410374109b051a2009200437000020002003410c6c6a220141ec006a200141e0006a220920002f010620036b410c6c109b051a200141e8006a2007280200360200200920022903f001370200200020002f010641016a3b01060c010b200241d0026a410272410041da001099051a200241f0016a200241d0026a41dc00109a051a200241386a410041b4011099051a41940210282200450d0120004100360200200041046a200241f0016a41dc00109a051a200041e0006a200241386a41b401109a0521012000200528020022033602e401200520003602002005200528020441016a360204200341003b010420032000360200200120002f01062203410c6c6a22012002290300370200200020034103746a41086a2004370000200141086a200241086a280200360200200041e4016a200341016a22034102746a2008360200200020033b0106200820033b0104200820003602000b200241b0036a24000f0b41940241041037000b8b0303017f017e027f02402001450d00034020002802940321002001417f6a22010d000b0b02402002450d00410021034100210103402002417f6a210202400240200120002f01064f0d00200141016a21010c010b02400240200028020022010d002003ad210441002105410021010c010b20003301044220862003ad842104410121050b2000102a2004a72103024002402004422088a7220620012f01064f0d00200121000c010b034002400240200128020022000d002003ad2104410021000c010b200541016a210520013301044220862003ad8421040b2001102a2004a72103200021012004422088a7220620002f01064f0d000b0b200641027420006a4198036a280200210002402005417f6a2201450d00034020002802940321002001417f6a22010d000b0b410021010b20020d000b0b0240200041f8b9c000460d00200028020021012000102a2001450d00200128020021002001102a2000450d00024020002802002201450d0003402000102a2001210020012802002203210120030d000b0b2000102a0b0be480010d067f017e017f027e0b7f017e027f017e017f017e067f017e127f230041e0026b22012400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020004180c20370450d00200141e8006a21020c010b20014190026a41086a22034200370300200142003703900241f490c600411420014190026a1008200141e8006a41086a20032903003703002001200129039002370368200141003602a001200141e8006a4110200141a0016a100621030240024020012802a0012204417f460d0020030d010b200141e8006a21020c010b024002400240024002400240024020044104490d00200328000021042003102a200141e8006a21022004450d0720014190026a41086a22034200370300200142003703900241a9a2c100410f20014190026a1008200141e8006a41086a20032903003703002001200129039002370368200141003602a001200141e8006a4110200141a0016a100621030240024020012802a0012205417f460d002003450d0020012005360294022001200336029002200141a0016a20014190026a107d20012802a0012206450d0320012902a40121072005450d012003102a0c010b41042106420021070b20014190026a41086a22034200370300200142003703900241b8a2c100411420014190026a1008200141e8006a41086a20032903003703002001200129039002370368200141a0016a200141e8006a10be020240024020012802a8012208450d002007422088a720012902ac012209422088a76b20012903a001220a422088a7220b6a2105200aa721032009a7450d012008102a0c010b2007422088a721054100210b10980121030b200520044f0d020c030b41c4d1c3004133200141d8026a419cd9c3001038000b41c4d1c3004133200141d8026a419cd9c3001038000b0240200b20044f0d00200b20046b22032007422088a722056a220420034f0d032006200441246c6a28022021030c010b20014190026a41086a22044200370300200142003703900241dca2c100411420014190026a1008200141e8006a41086a2004290300370300200120012903900237036841002105200141003602a001200141e8006a4110200141a0016a10062104024020012802a001220b417f460d002004450d00200b4104490d02200428000021052004102a0b200520036a21030b200341ffc1036a220320034180c203706b210302402007a7450d002006102a0b20032000470d0320014190026a41086a22034200370300200142003703900241a9a2c100410f20014190026a1008200141e8006a41086a20032903003703002001200129039002370368200141003602a001200141e8006a4110200141a0016a1006210302400240024020012802a0012204417f460d002003450d0020012004360294022001200336029002200141a0016a20014190026a107d20012802a001220c450d0220012902a401210a2004450d012003102a0c010b4104210c4200210a0b20014190026a41086a22034200370300200142003703900241f490c600411420014190026a1008200141e8006a41086a200329030037030020012001290390023703684100210d200141003602a001200141e8006a4110200141a0016a100621030240024020012802a0012204417f460d002003450d0020044104490d012003280000210d2003102a0b109801210e02400240200a422088a7220f41246c2204450d00200c41206a280200200e4d0d010b4101210b41002105410021060c050b200141a0016a41186a2203200c41186a290200370300200141a0016a41106a2205200c41106a290200370300200141a0016a41086a2206200c41086a2902003703002001200c2902003703a001024041201028220b450d00200b20012903a001370000200b41186a2003290300370000200b41106a2005290300370000200b41086a20062903003700000240200c41246a2203200c20046a470d0041012105410121060c060b200c200f41246c6a211041202108410121044101210503400240200341206a280200200e4d0d00200421060c070b200141b8026a41186a2211200341186a290200370300200141b8026a41106a2212200341106a290200370300200141b8026a41086a2213200341086a290200370300200120032902003703b8020240024020052004460d00200421060c010b200441016a22062004490d1e200441017422142006201420064b1b220641ffffff3f712006470d1e200641057422144100480d1e0240024020040d0020141028210b0c010b200b20044105742014102c210b0b200b0d00201441011037000b200b20086a220420012903b802370000200441186a2011290300370000200441106a2012290300370000200441086a2013290300370000200841206a2108200541016a2105200621042010200341246a2203460d060c000b0b412041011037000b41c4d1c3004133200141d8026a419cd9c3001038000b41c4d1c3004133200141d8026a419cd9c3001038000b41c4d1c3004133200141d8026a419cd9c3001038000b41cca2c100200420051034000b024002400240024002400240024002400240200d200f20056b22044d0d0020014190026a41086a22034200370300200142003703900241f0a2c100411c20014190026a1008200141e8006a41086a2003290300370300200120012903900237036841002108200141003602a001200141e8006a4110200141a0016a10062103024020012802a0012211417f460d002003450d0020114104490d02200328000021082003102a0b20014190026a41086a22034200370300200142003703900241b8a2c100411420014190026a1008200141e8006a41086a20032903003703002001200129039002370368410810282203450d0220014288808080c0003702a401200120033602a00120032008200e6a3600000240024020012802a401220820012802a80122036b4104490d0020012802a00121080c010b200341046a22112003490d20200841017422032011200320114b1b22034100480d200240024020080d002003102821080c010b20012802a00120082003102c21080b2008450d04200120033602a401200120083602a00120012802a80121030b2001200341046a3602a801200820036a200d20046b22133600002005200141a0016a10b40102402005450d0020054105742104200b210303402003200141a0016a108f01200341206a2103200441606a22040d000b0b20012802a4012103200141e8006a411020012802a001220420012802a801100702402003450d002004102a0b02402006450d00200b102a0b200141a8026a4200370300200141a0026a420037030020014198026a42003703002001420037039002201341066a220ead42307e2207422088a70d172007a72203417f4c0d170240024020030d0041082110410821040c010b200310282210450d05201021040b200141a0016a41186a221120014190026a41186a290300370300200141a0016a41106a221220014190026a41106a290300370300200141a0016a41086a20014190026a41086a29030037030020012001290390023703a001200e4102490d05200d20056a200f6b41056a2105200421030340200141b8026a41186a22062011290300370300200141b8026a41106a220b2012290300370300200141b8026a41086a2208200141a0016a41086a290300370300200120012903a0013703b8022003420037030820034200370300200341106a20012903b802370300200341186a2008290300370300200341206a200b290300370300200341286a2006290300370300200341306a21032005417f6a22050d000b201341056a21050c060b2006450d07200b102a0c070b41c4d1c3004133200141d8026a419cd9c3001038000b410841011037000b200341011037000b200341081037000b4100210520042103200e450d010b2003420037030820034200370300200320012903a001370310200341186a200141a8016a290300370300200341206a200141b0016a290300370300200341286a200141a0016a41186a290300370300200541016a21050b20014190026a41086a220342003703002001420037039002418ca3c100411320014190026a1008200141e8006a41086a20032903003703002001200129039002370368200141003602a801200142013703a0012005200141a0016a10b40102402005450d002004200541306c6a210b0340200441086a2903002107200429030021090240024020012802a401220520012802a80122036b4110490d0020012802a00121050c010b200341106a22062003490d1a200541017422032006200320064b1b22034100480d1a0240024020050d002003102821050c010b20012802a00120052003102c21050b2005450d05200120033602a401200120053602a00120012802a80121030b200520036a22052007370008200520093700002001200341106a3602a801200441106a200141a0016a108f01200441306a2204200b470d000b0b20012802a4012103200141e8006a411020012802a001220420012802a801100702402003450d002004102a0b0240200e450d002010102a0b200141083a00a001200141a0016a41086a2013360200200141023a00a40141014100200141a0016a10cc010b200aa7450d00200c102a0b20014190026a41086a22034200370300200142003703900241b8a2c100411420014190026a1008200141e8006a41086a20032903003703002001200129039002370368200141a0016a200210be0220012802a8012215450d1820012902ac01211620012802a0012000470d1720014190026a41086a22034200370300200142003703900241b8a2c100411420014190026a1008200141e8006a41086a220020032903003703002001200129039002370368200141a0016a200210be02024020012802a80122170d0002402016a7450d002015102a0b41d5a3c100410f100b41e4a3c1004135100b0c190b20024110100920012802a401211820012902ac012119200342003703002001420037039002418ca3c100411320014190026a1008200020032903003703002001200129039002370368200141003602a00120024110200141a0016a100621030240024020012802a0012200417f460d002003450d0020012000360294022001200336029002200141a0016a20014190026a107820012802a001221a450d0320012902a401211b02402000450d002003102a0b2002411010090c010b4200211b4108211a0b109801211c20014190026a41086a22034200370300200142003703900241dca2c100411420014190026a1008200141e8006a41086a200329030037030020012001290390023703684100211d200141003602a00120024110200141a0016a10062103024020012802a0012200417f460d002003450d0020004104490d032003280000211d2003102a0b201a201b422088a7221e41306c6a210e0240024020180d004100211341002106410021000c010b2018417f6a2106410021000240201e450d000240201a201e41306c6a220341506a220e290300200e41086a2903008450450d00410121130c020b20014190026a41186a200341606a220341186a29000037030020014190026a41106a200341106a29000037030020014190026a41086a200341086a2900003703002001200329000037039002410121000b410021130b200141a9016a20014190026a41086a290300370000200141b1016a20014190026a41106a290300370000200141b9016a20014190026a41186a290300370000200120003a00a00120012001290390023700a101200141a0016a41017221032000450d0a20034280809aa6eaafe301420010aa02200141e8006a41086a200341086a290000370300200141e8006a41106a200341106a290000370300200141e8006a41186a200341186a2900003703002001200329000037036820012d00a0014101470d0b41201028221f450d03201f2001290368370000201f41186a200141e8006a41186a290300370000201f41106a200141e8006a41106a290300370000201f41086a200141e8006a41086a290300370000200141a0016a4101722103410221054120210441012120410121210340024002400240024020060d00410021060c010b2006417f6a2106201341ff01710d000240201a200e470d00410021130c010b200e41506a220b290300200b41086a290300844200520d0141012113200b210e0b200320012903b802370000200341086a200141b8026a41086a290300370000200341106a200141b8026a41106a290300370000200341186a200141b8026a41186a29030037000041002100200141003a00a0010c010b200141b8026a41186a200e41606a220041186a2900002207370300200141b8026a41106a200041106a2900002209370300200141b8026a41086a200041086a290000220a3703002001200029000022223703b80220032022370000200341086a200a370000200341106a2009370000200341186a2007370000200141013a00a00120034280809aa6eaafe301420010aa024100211320012d00a0012100200b210e0b20014190026a41186a220b200341186a29000037030020014190026a41106a2208200341106a29000037030020014190026a41086a2211200341086a29000037030020012003290000370390020240200041ff0171450d00200141a0016a41186a2212200b290300370300200141a0016a41106a220b2008290300370300200141a0016a41086a2208201129030037030020012001290390023703a001024020202021470d00202041016a22002020490d1820052000200520004b1b222141ffffff3f712021470d18202141057422004100480d180240024020200d0020001028211f0c010b201f20042000102c211f0b201f450d0c0b201f20046a220020012903a001370000200041186a2012290300370000200041106a200b290300370000200041086a2008290300370000200541026a2105200441206a2104202041016a21200c010b0b201f20046a21232020450d0c200141a0016a41086a2104201f210f0340200141306a200f10bf02024020012802304101470d002001280238210520014190016a10c002200128029001212402402001280298012203450d00200341216c2100202441016a21032005410876210841012005411f7174212520054105764107712211417f732126034002402003417f6a2d00004101470d00200141a0016a41186a200341186a290000370300200141a0016a41106a200341106a2900003703002004200341086a290000370300200120032900003703a001200120083602c00120014190026a200141a0016a10c1020240201120012802980222054f0d00200520266a220620054f0d0a200128029002220b20064102746a28020020257121050240200128029402450d00200b102a0b2005450d01411310282205450d0b200541002900c2a34122073700002005410f6a41002800d1a341220c360000200541086a41002900caa341220937000020014293808080b0023702a401200120053602a0012003200141a0016a108f0120012802a801211220012802a0012113200141b8026a41186a22054200370300200141b8026a41106a22064200370300200141b8026a41086a220b4200370300200142003703b80220132012200141b8026a1000200141106a41186a22102005290300370300200141106a41106a220d2006290300370300200141106a41086a2214200b290300370300200120012903b802370310024020012802a401450d0020012802a001102a0b200141003602a001200141106a4120200141a0016a1006210e024020012802a0012213417f460d00200120133602bc022001200e3602b802200141a0016a200141b8026a10c20220012903a0014201510d0d20014190026a41206a2227200441206a222828020036020020014190026a41186a2229200441186a222a29030037030020014190026a41106a222b200441106a222c29030037030020014190026a41086a2212200441086a222d290300370300200120042903003703900220012802cc01212e02402013450d00200e102a0b200141e8006a41206a20272802002213360200200141c0006a41086a220e2012290300370300200141c0006a41106a2227202b290300370300200141c0006a41186a222b2029290300370300200141c0006a41206a222920133602002001200129039002370340201242003703002001420037039002418891c600411120014190026a1008200141e8006a41086a20122903003703002001200129039002370368200141003602a00120024110200141a0016a1006211202400240024020012802a0012213417f470d00410021130c010b20134104490d01201228000021132012102a0b20042001290340370300202d200e290300370300202c2027290300370300202a202b29030037030020282029280200360200200142013703a0012001201341016a3602cc01411310282212450d10201220073700002012410f6a200c360000201241086a200937000020014293808080b002370294022001201236029002200320014190026a108f01200128029802211220012802900221132005420037030020064200370300200b4200370300200142003703b80220132012200141b8026a100020102005290300370300200d20062903003703002014200b290300370300200120012903b8023703100240200128029402450d00200128029002102a0b20014120360294022001200141106a36029002200420014190026a10c3020c030b41c4d1c3004133200141d8026a419cd9c3001038000b20042001290340370300200441086a200141c0006a41086a290300370300200441106a200141c0006a41106a290300370300200441186a200141c0006a41186a290300370300200441206a200141c0006a41206a280200360200200142003703a0012001202e3602cc01411310282212450d0d201220073700002012410f6a200c360000201241086a200937000020014293808080b002370294022001201236029002200320014190026a108f01200128029802211220012802900221132005420037030020064200370300200b4200370300200142003703b80220132012200141b8026a100020102005290300370300200d20062903003703002014200b290300370300200120012903b8023703100240200128029402450d00200128029002102a0b200141106a412010090c010b200128029402450d00200128029002102a0b200341216a21032000415f6a22000d000b0b200128029401450d002024102a0b2023200f41206a220f470d000c0d0b0b200341011037000b41c4d1c3004133200141d8026a419cd9c3001038000b41c4d1c3004133200141d8026a419cd9c3001038000b412041011037000b41cca2c100200620051034000b411341011037000b41c4d1c3004133200141d8026a419cd9c3001038000b411341011037000b411341011037000b200041011037000b200141e8006a41186a200341186a290000370300200141e8006a41106a200341106a290000370300200141e8006a41086a200341086a290000370300200120032900003703680b41002121410121234101211f410021200b20014190026a41086a22034200370300200142003703900241a9a2c100410f20014190026a1008200141e8006a41086a20032903003703002001200129039002370368200141003602a00120024110200141a0016a10062103024002400240024002400240024020012802a0012200417f460d002003450d0020012000360294022001200336029002200141a0016a20014190026a107d20012802a0012225450d0220012902a40121072000450d012003102a0c010b42002107410421250b20252007422088a7220841246c6a210d02402019422088a722050d004100212f41012130410021310c050b410021314100212f4101213002402005200d20256b41246e2203200320054b1b2203450d00200341057422004100480d0e200010282230450d022003212f0b20252103200521042030210003400240200d20036b41ec004b0d00200d2003460d062025200841246c6a21114101210b0240034020002003290000370000200041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a2900003700002004200b2206460d01200641016a210b200041206a21002011200341246a2203470d000b0b203120066a21310c060b20002003290000370000200041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a290000370000024020044101470d00203141017221310c060b20002003290024370020200041386a2003413c6a290000370000200041306a200341346a290000370000200041286a2003412c6a29000037000020044102460d0420002003290048370040200041d8006a200341e0006a290000370000200041d0006a200341d8006a290000370000200041c8006a200341d0006a29000037000020044103460d032000200329006c370060200041f8006a20034184016a290000370000200041f0006a200341fc006a290000370000200041e8006a200341f4006a290000370000203141046a213120004180016a210020034190016a21032004417c6a22040d000c050b0b41c4d1c3004133200141d8026a419cd9c3001038000b200041011037000b203141037221310c010b203141027221310b201d201c6a21262007a721270240024002400240024002402005450d00202521032008450d03200541016a2100200841246c2104202521030340200141b8026a41186a200341186a290200370300200141b8026a41106a200341106a290200370300200141b8026a41086a200341086a290200370300200120032902003703b8022000417f6a2200450d02200341246a21032004415c6a22040d000b200d21030c030b202521032008450d02200141a0016a41186a202541186a290200370300200141a0016a41106a202541106a290200370300200141a0016a41086a202541086a290200370300200120252902003703a001202541246a2103202528022021060c010b200341206a2802002106200141a0016a41186a200141b8026a41186a290300370300200141a0016a41106a200141b8026a41106a290300370300200141a0016a41086a200141b8026a41086a290300370300200120012903b8023703a001200341246a21030b20014190026a41186a200141a0016a41186a2200290300220737030020014190026a41106a200141a0016a41106a2204290300220937030020014190026a41086a200141a0016a41086a2205290300220a370300200120012903a00122223703900220002007370300200420093703002005200a370300200120223703a001417f200d20036b41246d22002023201f6b4105766a220420042000491b21054100210b200141a0016a2100201f21040c010b0240201f2023470d0002402027450d002025102a0b4100211c410421284100212c0c020b201f41086a2900002107201f41106a2900002109201f290000210a20014190026a41186a201f41186a290000222237030020014190026a41106a200937030020014190026a41086a20073703002001200a37039002200141a0016a41186a2022370300200141a0016a41106a2009370300200141a0016a41086a20073703002001200a3703a0012023201f41206a22046b41057621054102210b200141a0016a2100202621060b417f200541016a220820082005491b221cad42247e2207422088a70d012007a72205417f4c0d010240024002400240024002400240024020050d00410421280c010b200510282228450d010b20282000290200370200202841186a200041186a290200370200202841106a200041106a290200370200202841086a200041086a290200370200202820063602200240200b450d00024020042023470d004101212c0c050b200441086a2900002107200441106a29000021092004290000210a20014190026a41186a200441186a29000037030020014190026a41106a200937030020014190026a41086a20073703002001200a37039002200441206a21040c020b0240200d2003460d00200141a0016a41186a200341186a2902002209370300200141a0016a41106a200341106a290200220a370300200141a0016a41086a200341086a29020022223703002003290200210720014190026a41086a202237030020014190026a41106a200a37030020014190026a41186a2009370300200120073703a0012001200737039002200328022021134100210b200341246a21030c030b024020042023460d00200441086a2900002107200441106a29000021092004290000210a20014190026a41186a200441186a29000037030020014190026a41106a200937030020014190026a41086a20073703002001200a37039002200441206a21040c020b4101212c0c030b200541041037000b4102210b202621130b4102210641022100412421050340200141a0016a41186a220820014190026a41186a220e290300370300200141a0016a41106a221120014190026a41106a220c290300370300200141a0016a41086a221220014190026a41086a221029030037030020012001290390023703a00102402000222c417f6a2200201c470d000240024002400240200b41ff01710e03010200010b202320046b41057621140c020b417f200d20036b41246d2214202320046b4105766a220f200f2014491b21140c010b200d20036b41246d21140b2000417f201441016a220f200f2014491b6a22142000490d0e20062014200620144b1b221cad42247e2207422088a70d0e2007a722004100480d0e02400240202c4101470d002000102821280c010b202820052000102c21280b2028450d030b202820056a220020012903a001370200200041186a2008290300370200200041106a2011290300370200200041086a2012290300370200200041206a20133602000240024002400240200b41ff01710e03010200010b20042023460d04200441086a2900002107200441106a29000021092004290000210a200e200441186a290000370300200c2009370300201020073703002001200a37039002200441206a2104410121084102210b202621130c020b0240200d2003460d002008200341186a29020022093703002011200341106a290200220a3703002012200341086a29020022223703002003290200210720102022370300200c200a370300200e2009370300200120073703a001200120073703900220032802202113410121084100210b200341246a21030c020b4102210b024020042023470d00410021080c020b200441086a2900002107200441106a29000021092004290000210a200e200441186a290000370300200c2009370300201020073703002001200a37039002200441206a210441012108202621130c010b200d2003460d02200e200341186a290200370300200c200341106a2902003703002010200341086a2902003703002001200329020037039002200328022021134101210b200341246a2103410121080b200641026a2106202c41016a2100200541246a210520080d000b0b02402027450d002025102a0b202c4115490d01202c4101762232ad42247e2207422088a70d032007a72203417f4c0d0302400240024020030d004104212e410421080c010b20031028222e450d01202e21080b2028415c6a2133202841b47f6a21344104210c410021244100212641002113202c2125034020252106410021254101210502402006417f6a221d450d000240024002400240024002402028201d41246c6a41206a280200200641246c221220286a41586a2802002203490d002006417e6a2111203420126a210441002125410021000340024020112000470d00200621050c080b200041016a21002003200428020022054f210b2004415c6a210420052103200b0d000b200041016a21052000417f7320066a21040c010b203420126a2100201d210402400340024020044101470d00410021040c020b2004417f6a210420032000280200220549210b2000415c6a210020052103200b0d000b0b20062004490d012006202c4b0d03200620046b2205410176220b450d00203320126a21032028200441246c6a21000340200141a0016a41206a2211200041206a2212280200360200200141a0016a41186a220e200041186a2210290200370300200141a0016a41106a220d200041106a2214290200370300200141a0016a41086a220f200041086a2225290200370300200120002902003703a001200341206a22272802002129200341186a222a2902002107200341106a222b2902002109200341086a222d290200210a200020032902003702002025200a37020020142009370200201020073702002012202936020020272011280200360200202a200e290300370200202b200d290300370200202d200f290300370200200320012903a0013702002003415c6a2103200041246a2100200b417f6a220b0d000b0b024020040d00200421250c050b0240200541094d0d00200421250c050b2006202c4b0d012028200441246c6a2111034020062004417f6a2225490d040240200620256b22054102490d002028200441246c6a220041206a22032802002028202541246c6a221241206a220b280200220e4f0d00200141b8026a41186a2210201241186a220d290200370300200141b8026a41106a2214201241106a220f290200370300200141b8026a41086a2227201241086a2229290200370300200120122902003703b802201220002902003702002029200041086a290200370200200f200041106a290200370200200d200041186a290200370200200b2003280200360200024020054103490d00201d210b20112103201241e8006a280200200e4f0d000340200341206a200341c4006a280200360200200341186a2003413c6a290200370200200341106a200341346a290200370200200341086a2003412c6a2902003702002003200341246a22002902003702002004200b417f6a220b460d01200341e8006a2112200021032012280200200e490d000b0b200020012903b8023702002000200e360220200041186a2010290300370200200041106a2014290300370200200041086a20272903003702000b2025450d052011415c6a2111202521042005410a4f0d050c000b0b200420061044000b20062004417f6a2225490d010b2006202c103c000b202520061044000b02400240024020132024470d00202441016a22032024490d10202441017422002003200020034b1b220341ffffffff01712003470d10200341037422004100480d100240024020240d0020001028210c0c010b200c20244103742000102c210c0b200c450d0120032124202621130b200c20134103746a2203200536020420032025360200202641016a2213212620134102490d01024003400240024002400240200c2013417f6a22264103746a2203280200450d002013410374200c6a220541746a2802002204200328020422004d0d000240201341024b0d0020132126410221130c080b200c2013417d6a22104103746a2802042203200020046a4d0d010240201341034b0d0020132126410321130c080b200541646a280200200320046a4d0d01201321260c070b20134103490d0120032802042100200c2013417d6a22104103746a28020421030b20032000490d010b2013417e6a21100b0240024002400240024002402013201041016a22274b2229450d00201320104b222a450d01200c20104103746a220d280204222b200d2802006a2203200c20274103746a2214280200220f490d022003202c4b0d032028200f41246c6a22122014280204220e41246c22006a2106200341246c21042003200f6b220b200e6b2203200e4f0d04202e2006200341246c2200109a051a200820006a210502400240200e4101480d00200341014e0d010b20062103200821000c060b203320046a210420062103034020042003415c6a220b2005415c6a22112005417c6a2802002003417c6a2802004922061b2200290200370200200441206a200041206a280200360200200441186a200041186a290200370200200441106a200041106a290200370200200441086a200041086a2902003702002005201120061b210502402012200b200320061b2203490d00200821000c070b2004415c6a21042008210020082005490d000c060b0b41b8dbc000202720131034000b41b8dbc000201020131034000b200f20031044000b2003202c103c000b202e20122000109a051a200820006a210502400240200e4101480d00200b200e4a0d010b20122103200821000c010b202820046a211120082100201221030340200320062000200641206a280200200041206a28020049220b1b2204290200370200200341206a200441206a280200360200200341186a200441186a290200370200200341106a200441106a290200370200200341086a200441086a2902003702002000200041246a200b1b2100200341246a2103200641246a2006200b1b220620114f0d01200520004b0d000b0b20032000200520006b220420044124706b109a051a0240202a450d00200d200f360200200d41046a202b200e6a3602002029450d022014201441086a20132027417f736a410374109b051a20262113202641014d0d040c010b0b41c8dbc000201020131034000b41b0b1c0001032000b200041041037000b20250d000b02402024450d00200c102a0b2032450d03202e102a0c030b200341041037000b200041041037000b202c4102490d00202c417f6a21042028202c41246c6a21064100210b0340024002400240202c20042203417f6a2204490d00202c20046b22004102490d022028200341246c6a220341206a22052802002028200441246c6a220841206a221228020022114f0d02200141b8026a41186a2213200841186a220e290200370300200141b8026a41106a220c200841106a2210290200370300200141b8026a41086a220d200841086a2214290200370300200120082902003703b802200820032902003702002014200341086a2902003702002010200341106a290200370200200e200341186a2902003702002012200528020036020020004103490d01200b210520062100200841e8006a28020020114f0d01034020002203415c6a22002003290200370200200041206a200341206a280200360200200041186a200341186a290200370200200041106a200341106a290200370200200041086a200341086a2902003702002005417f6a2205450d02200341246a2100200341c4006a28020020114f0d020c000b0b2004202c1044000b200320012903b80237020020032011360220200341186a2013290300370200200341106a200c290300370200200341086a200d2903003702000b200b41016a210b2006415c6a210620040d000b0b20014190026a41086a22034200370300200142003703900241a9a2c100410f20014190026a1008200141e8006a41086a20032903003703002001200129039002370368200141003602a801200142013703a001202c200141a0016a10b4010240202c450d002028202c41246c6a210b2028210003402000200141a0016a108f01200041206a28020021050240024020012802a401220420012802a80122036b4104490d0020012802a00121040c010b200341046a22062003490d0b200441017422032006200320064b1b22034100480d0b0240024020040d002003102821040c010b20012802a00120042003102c21040b2004450d04200120033602a401200120043602a00120012802a80121030b2001200341046a3602a801200420036a2005360000200b200041246a2200470d000b0b20012802a40121032002411020012802a001220020012802a801100702402003450d002000102a0b202c41246c220341246d2106410021040240024020030d004101210b410021060c010b200641ffffff3f712006470d09200641057422034100480d0920031028220b450d030b0240202c450d00202c41246c210541002104200b2103202821000340200041086a2900002107200041106a29000021092000290000210a200341186a200041186a290000370000200341106a2009370000200341086a20073700002003200a370000200441016a2104200341206a2103200041246a21002005415c6a22050d000b0b0240201c450d002028102a0b200b2004410041202004676b10c40220302031200b200410c50202402006450d00200b102a0b20014190026a41086a22034200370300200142003703900241b0a3c100411220014190026a1008200141e8006a41086a20032903003703002001200129039002370368200141003602a00120024110200141a0016a100621030240024020012802a0012200417f460d002003450d0020012000360294022001200336029002200141a0016a20014190026a106d20012802a0012208450d0520012902a401210a2000450d012003102a0c010b4200210a410121080b200141b8016a4200370300200141b0016a4200370300200141a8016a4200370300200142003703a001200a422088a7221041ffffff3f712010470d0020104105742203417f4c0d000240024020030d00410121060c010b200310282206450d050b200141b8026a41186a2204200141a0016a41186a290300370300200141b8026a41106a2205200141a0016a41106a290300370300200141b8026a41086a220b200141a0016a41086a290300370300200120012903a0013703b80220104102490d052010417f6a2100200621030340200320012903b802370000200341186a2004290300370000200341106a2005290300370000200341086a200b290300370000200341206a21032000417f6a22000d000b2010417f6a210c0c060b1036000b200341011037000b200341011037000b41c4d1c3004133200141d8026a419cd9c3001038000b200341011037000b4100210c200621032010450d010b200320012903b802370000200341186a200141b8026a41186a290300370000200341106a200141b8026a41106a290300370000200341086a200141b8026a41086a290300370000200c41016a210c0b201a201e41306c6a2103201ba7210e410021140c010b1031000b0240024002400240034002402018450d002003201a460d02200341506a2203290300200341086a29030084500d022018417f6a2200450d000340201a2003460d03200341506a2203290300200341086a29030084500d032000417f6a22000d000b0b2003201a460d0102400340200341506a22042903002107200441086a290300210920014190026a41186a2205200341606a220041186a29030037030020014190026a41106a220b200041106a29030037030020014190026a41086a2211200041086a29030037030020012000290300370390022007200984500d01200141a0016a41186a22002005290300370300200141a0016a41106a2205200b290300370300200141a0016a41086a220b201129030037030020012001290390023703a00120014190016a200141a0016a10bf02200141c0006a41186a22112000290300370300200141c0006a41106a22122005290300370300200141c0006a41086a2213200b290300370300200120012903a00137034002402001280290014101460d0020042103201a2004470d010c040b0b200141106a41086a220d2013290300370300200141106a41106a22132012290300370300200141106a41186a221220112903003703002001200129034022073703b8022001200737031020012802980121042000201229030037030020052013290300370300200b200d290300370300200120012903103703a001200c20044d0d03200341506a2103200620044105746a220420012903a001370000200441186a2000290300370000200441106a2005290300370000200441086a200b290300370000201441016a2114410021180c010b0b200141b8026a41086a200141e8006a41086a290300370300200141b8026a41106a200141e8006a41106a290300370300200141b8026a41186a200141e8006a41186a290300370300200120012903683703b8020b0240200e450d00201a102a0b200c201041ffffff3f7122032003200c4b1b2211450d022008210b410021050340024020082006460d002008200541057422036a2200200620036a4120109c05450d00411610282203450d0320034100290093a2413700002003410e6a41002900a1a241370000200341086a410029009ba24137000020014296808080e0023702a401200120033602a0012000200141a0016a108f0120012802a801210320012802a0012104200141b8026a41186a22124200370300200141b8026a41106a22134200370300200141b8026a41086a220e4200370300200142003703b80220042003200141b8026a1000200141106a41186a2012290300370300200141106a41106a2013290300370300200141106a41086a200e290300370300200120012903b802370310024020012802a401450d0020012802a001102a0b200141106a41201009201f210303400240202320036b41e0004b0d00024020032023460d000340200b2003460d04200320004120109c05450d042023200341206a2203470d000b0b200120004280809aa6eaafe3014200108202200129030021072001200141086a2903003703a801200120073703a0012001200141a0016a3602900220014190026a109d010c020b20002003460d01200320004120109c05450d01200341206a22042000460d01200420004120109c05450d01200341c0006a22042000460d01200420004120109c05450d01200341e0006a22042000460d0120034180016a2103200420004120109c050d000b0b200b41206a210b200541016a22052011490d000c030b0b41a0a3c1002004200c1034000b411641011037000b2006200c4105746a2103200c2111024002400240200c4104490d00200141a0016a41206a2112200141e0016a2113200141a0016a41e0006a210e200141a0026a210d200141b8016a2104200141b0016a2105200141a8016a210b20032100200c211103402004420037030020054200370300200b4200370300200142003703a001024020122000460d00200041606a200141a0016a4120109c05450d002011417f6a21000c030b2004420037030020054200370300200b4200370300200142003703a001024020132000460d00200041406a200141a0016a4120109c05450d002011417e6a21000c030b2004420037030020054200370300200b4200370300200142003703a0010240200e2000460d00200041a07f6a200141a0016a4120109c05450d002011417d6a21000c030b2004420037030020054200370300200b4200370300200142003703a001200041807f6a210302400240200d2000460d002003200141a0016a4120109c050d010b2011417c6a211120032100200320066b41e0004b0d010c020b0b2011417c6a21000c010b20032006460d012011417f6a2100200141a0016a41206a2104200141b8016a2105200141b0016a210b200141a8016a2111034020054200370300200b420037030020114200370300200142003703a001024020042003460d00200341606a200141a0016a4120109c050d020b2000417f6a21002006200341606a2203470d000c020b0b200041016a210c0b200141bc016a2031360200200141b8016a202f360200200141b4016a2030360200200141a0016a41106a2020360200200141ac016a2021360200200141083a00a001200141a0016a41086a201f360200200141033a00a40141014100200141a0016a10cc0120014190026a41086a22034200370300200142003703900241b0a3c100411220014190026a1008200141e8006a41086a20032903003703002001200129039002370368200141003602a801200142013703a001200c200141a0016a10b4010240200c450d00200c41057421002006210303402003200141a0016a108f01200341206a2103200041606a22000d000b0b20012802a40121032002411020012802a001220020012802a801100702402003450d002000102a0b02402010450d002006102a0b20014190026a41086a22034200370300200142003703900241bf91c600411620014190026a1008200141e8006a41086a220020032903003703002001200129039002370368200120143602a00120024110200141a0016a41041007200342003703002001420037039002418891c600411120014190026a1008200020032903003703002001200129039002370368200141003602a00120024110200141a0016a100621030240024020012802a0012200417f470d00410121030c010b024020030d00410121030c010b20004104490d03200328000021002003102a200041016a21030b20014190026a41086a220042003703002001420037039002418891c600411120014190026a1008200141e8006a41086a20002903003703002001200129039002370368200120033602a00120024110200141a0016a410410070240200aa7450d002008102a0b2019a7450d002017102a0b2016a7450d002015102a0b200141e0026a24000f0b41c4d1c3004133200141d8026a419cd9c3001038000bef0101047f230041206b220224002002410036021020014110200241106a10062101024002400240024020022802102203417f460d0020010d010b200041003602080c010b200220013602082002200336020c20034104490d012002200141046a36020820022003417c6a220436020c20044104490d01200128000021042002200341786a36020c2002200141086a36020820012800042103200241106a200241086a106d20022802102205450d012000200229021437020c2000200536020820002003360204200020043602002001102a0b200241206a24000f0b41c4d1c3004133200241106a419cd9c3001038000bb70201057f230041d0006b220224000240411610282203450d0020034100290093a2413700002003410e6a41002900a1a241370000200341086a410029009ba24137000020024296808080e002370224200220033602202001200241206a108f012002280228210320022802202101200241306a41186a22044200370300200241306a41106a22054200370300200241306a41086a220642003703002002420037033020012003200241306a1000200241186a2004290300370300200241106a2005290300370300200241086a20062903003703002002200229033037030002402002280224450d002002280220102a0b200241306a2002412010c6020240024020022802304101460d00200041003602000c010b20002002290234370204200041013602000b200241d0006a24000f0b411641011037000ba50708027f017e047f027e017f017e037f017e230041d0006b220124000240024002400240024002400240410e10282202450d00200241066a41002900b2a441370000200241002900aca4413700002002410e411c102c2202450d012002410036000e42002103200141286a41186a22044200370300200141286a41106a22054200370300200141286a41086a220642003703002001420037032820024112200141286a1000200141186a2004290300370300200141106a2005290300370300200141086a2006290300370300200120012903283703002002102a2001410036022820014120200141286a100621040240024020012802282202417f470d00410121070c010b2001200236022420012004360220200141286a200141206a107420012802282207450d03200129022c21032002450d002004102a0b02400240410e10282202450d0041002900b2a441210841002900aca4412109410121040340200241066a2008370000200220093700002002410e411c102c2202450d062002200436000e200141286a41186a22054200370300200141286a41106a22064200370300200141286a41086a220a42003703002001420037032820024112200141286a1000200141186a2005290300370300200141106a2006290300370300200141086a200a290300370300200120012903283703002002102a2001410036022820014120200141286a100621060240024020012802282202417f470d00410121054200210b0c010b2001200236022420012006360220200141286a200141206a107420012802282205450d08200129022c210b2002450d002006102a0b200b422088a72206450d0202402003a7220a2003422088a722026b200641216c220c41216d22064f0d00200220066a220d2002490d0a200a410174220e200d200e200d4b1bad220342217e220f422088a70d0a200fa7220d4100480d0a02400240200a0d00200d102821070c010b2007200a41216c200d102c21070b2007450d090b2007200241216c6a2005200c109a051a200342ffffffff0f832103200220066aad422086210f0240200ba7450d002005102a0b200441016a21042003200f842103410e102822020d000b0b410e41011037000b0240200ba7450d002005102a0b2000200337020420002007360200200141d0006a24000f0b410e41011037000b411c41011037000b41c4d1c3004133200141c8006a419cd9c3001038000b411c41011037000b41c4d1c3004133200141c8006a419cd9c3001038000b200d41011037000b1031000bcc0402057f017e230041e0006b220224000240024002400240411310282203450d0020034100290099a4413700002003410f6a41002800a8a441360000200341086a41002900a1a44137000020024293808080b00237022c200220033602282001200241286a108f012001280220210402400240200228022c2201200228023022036b4104490d00200228022821010c010b200341046a22052003490d03200141017422032005200320054b1b22034100480d030240024020010d002003102821010c010b200228022820012003102c21010b2001450d022002200336022c20022001360228200228023021030b2002200341046a360230200120036a20043600002002280230210320022802282101200241386a41186a22044200370300200241386a41106a22054200370300200241386a41086a220642003703002002420037033820012003200241386a1000200241086a41186a2004290300370300200241086a41106a2005290300370300200241086a41086a2006290300370300200220022903383703080240200228022c450d002002280228102a0b20024100360238200241086a4120200241386a100621010240024020022802382203417f460d002002200336022c20022001360228200241386a200241286a10820120022802382204450d05200229023c210702402003450d002001102a0b20002007370204200020043602000c010b20004100360208200042043702000b200241e0006a24000f0b411341011037000b200341011037000b1031000b41c4d1c3004133200241d8006a419cd9c3001038000bf70103017e057f027e420121020240200128020422034104490d0020012802002204280000210520012003417c6a22063602042001200441046a360200200641034d0d00200428000421072001200341786a22063602042001200441086a36020020064110490d00200441106a2900002108200429000821092001200341686a22063602042001200441186a36020020064110490d0020002009370308200041186a2004290018370300200041106a20083703002000412c6a2007360200200041286a2005360200200041206a200441206a2900003703002001200341586a3602042001200441286a360200420021020b200020023703000bd30102027f027e200028022021020240024002400240410410282203450d002003200236000020002802242102200341044108102c2203450d0120032002360004200041086a290300210420002903002105200341084118102c2203450d0220032005370008200341106a2004370000200041186a290300210420002903102105200341184130102c2200450d0320002005370018200041206a2004370000200128020020012802042000412810072000102a0f0b410441011037000b410841011037000b411841011037000b413041011037000b942103157f037e077f230041c0026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d002000200110da032003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200a200a417f6a220d2000200a4105746a2000200d4105746a4120109c05220e410048220f1b2210200a41016a2211200d200a200f1b220a200020114105746a2000200a4105746a4120109c05220f4100481b220a2000200a4105746a200020104105746a4120109c0522104100481b210a200c200c417f6a220d2000200c4105746a2000200d4105746a4120109c05221141004822121b2213200c4101722214200d200c20121b220c200020144105746a2000200c4105746a4120109c0522124100481b220c2000200c4105746a200020134105746a4120109c0522134100481b210c200b200b417f6a220d2000200b4105746a2000200d4105746a4120109c05221441004822151b2216200b41016a2217200d200b20151b220b200020174105746a2000200b4105746a4120109c05220d4100481b220b2000200b4105746a200020164105746a4120109c0522154100481b210b200f411f76200e411f766a2010411f766a2011411f766a2012411f766a2013411f766a2014411f766a200d411f766a2015411f766a210d0b2000200c4105746a2000200a4105746a4120109c05220e411f76200d6a2000200b4105746a2000200a200c200e410048220e1b220f4105746a4120109c052210411f766a210d2000200b200f20104100481b220b4105746a2000200c200a200e1b22184105746a4120109c05417f4c0d01200b21180c020b2000200110db030c0f0b200d41016a220d410c490d0002402001410176220b450d00200020014105746a41606a210a2000210c0340200441206a41186a220d200c41186a220e290000370300200441206a41106a220f200c41106a2210290000370300200441206a41086a2211200c41086a22122900003703002004200c290000370320200a41086a22132900002119200a41106a2214290000211a200a41186a2215290000211b200c200a290000370000200e201b3700002010201a370000201220193700002015200d2903003700002014200f29030037000020132011290300370000200a2004290320370000200a41606a210a200c41206a210c200b417f6a220b0d000b0b20012018417f736a21184101210a0c010b200d45210a0b0240200a452009724101710d002000200110dc030d0d0b2002450d02201820014f0d0102402002200020184105746a220a4120109c0541004e0d0020002108200121070c040b200441206a41186a2212200041186a220f290000370300200441206a41106a2213200041106a2210290000370300200441206a41086a2214200041086a221129000037030020042000290000370320200a41086a220c2900002119200a41106a220b290000211a200a41186a220d290000211b2000200a290000370000200f201b3700002010201a37000020112019370000200d2012290300370000200b2013290300370000200c2014290300370000200a2004290320370000200441c0016a41186a2217200f290000370300200441c0016a41106a221c2010290000370300200441c0016a41086a22182011290000370300200420002900003703c001200041606a2115200041206a21164100210c2001210b03400240200c200b417f6a220d4f0d002016200c4105746a210a0340200441c0016a200a4120109c05417f4c0d01200a41206a210a200d200c41016a220c470d000b200d210c0b2015200b4105746a210a02400340200c200b417f6a220b4f0d01200441c0016a200a4120109c05210d200a41606a220e210a200d4100480d000b20122016200c4105746a220a41186a220d2900003703002013200a41106a221d2900003703002014200a41086a22062900003703002004200a290000370320200e41286a221e2900002119200e41306a221f290000211a200e41386a2220290000211b200a200e41206a220e290000370000200d201b370000201d201a3700002006201937000020202012290300370000201f2013290300370000201e2014290300370000200e2004290320370000200c41016a210c0c010b0b200020042903c001370000200f20172903003700002010201c2903003700002011201829030037000002402001200c41016a220a490d002000200a4105746a21002001200a6b220141154f0d010c0c0b0b200a20011044000b41a0cec300201820011034000b2007450d010b201820074f0d01200441206a41186a2216200841186a221e290000370300200441206a41106a2217200841106a221f290000370300200441206a41086a221c200841086a222029000037030020042008290000370320200820184105746a220a41086a220c2900002119200a41106a220b290000211a200a41186a220d290000211b2008200a290000370000201e201b370000201f201a37000020202019370000200d2016290300370000200b2017290300370000200c201c290300370000200a2004290320370000200441186a2205201e290000370300200441106a2209201f290000370300200441086a2221202029000037030020042008290000370300200841206a21014100211d2007417f6a220d450d022001210a0340200a20044120109c0541004e0d03200a41206a210a200d201d41016a221d470d000b200d211d0c020b4180cec300410041001034000b4190cec300201820071034000b200820074105746a210c200d210b02400340200c2100200b220a201d4d22060d01200a417f6a210b200041606a220c20044120109c05417f4a0d000b0b0240200a201d490d00200d200a490d0241800121144100210e410021124100210d4100211141800121152001201d4105746a2222210103400240200020016b220a419fc0004b22180d00200a410576220a41807f6a200a2012200e492011200d49220c72220b1b210a0240200b450d002015200a200c1b2115200a2014200c1b21140c010b200a200a41017622156b21140b02402011200d470d00024020150d00200441c0006a220d21110c010b4100210a200441c0006a2211210d2001210c0340200d200a3a0000200d200c20044120109c05417f73411f766a210d200c41206a210c2015200a41016a220a470d000b0b02402012200e470d00024020140d00200441c0016a220e21120c010b200041606a210a4100210c200441c0016a2212210e0340200e200c3a0000200e200a20044120109c05411f766a210e200a41606a210a2014200c41016a220c470d000b0b0240200e20126b220a200d20116b220c200c200a4b1b2213450d002016200120112d00004105746a220a41186a2900003703002017200a41106a290000370300201c200a41086a2900003703002004200a290000370320200120112d00004105746a220a200020122d0000417f734105746a220c290000370000200a41186a200c41186a290000370000200a41106a200c41106a290000370000200a41086a200c41086a290000370000024020134101460d004100210a034020002012200a6a220f2d0000417f734105746a220c20012011200a6a41016a22102d00004105746a220b290000370000200c41186a200b41186a290000370000200c41106a200b41106a290000370000200c41086a200b41086a290000370000200120102d00004105746a220c2000200f41016a2d0000417f734105746a220b290000370000200c41186a200b41186a290000370000200c41106a200b41106a290000370000200c41086a200b41086a290000370000200a41026a210c200a41016a220b210a200c2013490d000b2012200b6a21122011200b6a21110b200020122d0000417f734105746a220a2004290320370000200a41186a2016290300370000200a41106a2017290300370000200a41086a201c290300370000201241016a2112201141016a21110b200020144105746b20002012200e461b2100200120154105746a20012011200d461b210120180d000b024002402011200d4f0d002000210a034020162001200d417f6a220d2d00004105746a220c41186a220b2900003703002017200c41106a220e290000370300201c200c41086a22002900003703002004200c290000370320200a41606a220a41086a220f2900002119200a41106a2210290000211a200a41186a2212290000211b200c200a290000370000200b201b370000200e201a370000200020193700002012201629030037000020102017290300370000200f201c290300370000200a20042903203700002011200d490d000c020b0b2001210a2012200e4f0d000340200e417f6a220e2d0000210c2016200a41186a220b2900003703002017200a41106a220d290000370300201c200a41086a22012900003703002004200a2900003703202000200c417f734105746a220c41086a220f2900002119200c41106a2210290000211a200c41186a2211290000211b200a200c290000370000200b201b370000200d201a370000200120193700002011201629030037000020102017290300370000200f201c290300370000200c2004290320370000200a41206a210a2012200e490d000b0b20082004290300370000201e2005290300370000201f2009290300370000202020212903003700002007200a20226b410576201d6a22014d0d032016201e2900003703002017201f290000370300201c202029000037030020042008290000370320200820014105746a220a41086a220c2900002119200a41106a220b290000211a200a41186a220d290000211b2008200a290000370000201e201b370000201f201a37000020202019370000200d2016290300370000200b2017290300370000200c201c290300370000200a2004290320370000200720016b220c450d04200c20012001200c4b1b210b2007410376210d200a41206a2100024002402001200c417f6a220c490d002000200c200a200310c402200821000c010b200820012002200310c402200a2102200c21010b200b200d4f2105200141154f0d010c050b0b201d200a1044000b200a200d103c000b4190cec300200120071034000b41dc83c6001032000b20014102490d00200041406a210f410021104101210d0340200d410574210a200d417f6a210b200d41016a210d02402000200a6a220e2000200b4105746a220a4120109c05417f4a0d00200441c0016a41186a2211200e41186a220c290000370300200441c0016a41106a2212200e41106a2213290000370300200441c0016a41086a2214200e41086a22152900003703002004200e2900003703c001200e200a2900003700002015200a41086a2900003700002013200a41106a290000370000200c200a41186a29000037000002400240200b0d004100210b0c010b2010210c200f210a200441c0016a200e41406a4120109c05417f4a0d0002400340200a41d8006a200a41386a290000370000200a41d0006a200a41306a290000370000200a41c8006a200a41286a290000370000200a41c0006a200a41206a290000370000200c4101460d01200441c0016a200a4120109c05210e200c417f6a220b210c200a41606a210a200e4100480d000c020b0b4100210b0b2000200b4105746a220a20042903c001370000200a41186a2011290300370000200a41106a2012290300370000200a41086a20142903003700000b201041016a2110200f41206a210f200d2001470d000b0b200441c0026a24000bd9140a057f017e067f037e037f017e017f027e077f057e23002204210520044180026b4160712204240002400240200141ffffff3f712001470d0020014105742206417f4c0d0002400240024020060d00410121070c010b200610282207450d010b410021084100210602402001450d002001410574210820072106034020062000290000370000200641186a200041186a290000370000200641106a200041106a290000370000200641086a200041086a290000370000200641206a2106200041206a2100200841606a22080d000b200141057441606a41057641016a2106200121080b20042006360218200420083602142004200736021020072006410041202006676b10c40242002109200441b0016a41086a22004200370300200442003703b001419896c300411d200441b0016a1008200441e0016a41086a2000290300370300200420042903b0013703e001200441003602b001200441e0016a4110200441b0016a1006210602400240024020042802b0012200417f460d0020042000360294012004200636029001200441b0016a20044190016a106d20042802b001220a450d0220042902b40121092000450d012006102a0c010b4101210a0b2009422088a72200450d032000410574210b200441e0016a410c6a210c200441e0016a411472210d200441e0016a410872210e200441c0006a410c72210f200a210002400340200041086a2900002110200041106a290000211120002900002112200441206a41186a2213200041186a290000370300200441206a41106a22142011370300200441206a41086a22152010370300200420123703200240024002400240411a10282206450d00200641002900b596432216370000200641186a41002f00cd964322173b0000200641106a41002900c596432218370000200641086a41002900bd964322193700002004429a808080a0033702b401200420063602b0012004200441b0016a3602e001200441206a200441e0016a10c80120042802b001210720042802b801211a200441e0016a41186a22014200370300200441e0016a41106a22064200370300200441e0016a41086a22084200370300200442003703e0012007201a200441e0016a100020044190016a41186a221b200129030037030020044190016a41106a221c200629030037030020044190016a41086a221a2008290300370300200420042903e00137039001024020042802b401450d0020042802b001102a0b200441003602e00120044190016a4120200441e0016a1006211d20042802e0012207417f460d02200420073602642004201d360260200441e0016a200441e0006a10b30320042802e801221e450d01200441b0016a41086a221f200c41086a290200370300200441b0016a41106a2220200c41106a2802003602002004200c2902003703b00120042903e001211002402007450d00201d102a0b200f20042903b00122113702002006202028020022073602002008201f2903002212370300200f41086a2012370200200f41106a2007360200200420113703e001200420103703400c030b411a41011037000b41c4d1c3004133200441d0016a419cd9c3001038000b2006200441b0016a41106a2802003602002008200441b0016a41086a290300370300200420042903b0013703e0014100211e0b2004201e360248200441003602e80120042903582112200420042903f801222137035820042903502122200420042903f001222337035020042903402124200420042903e001221137034020042903482110200420042903e80122253703482025a72107024002402010a7221d0d002025211020232122202121120c010b200420243703e001200420103703e801200420223703f001200420123703f8012004201d2022a74105746a3602bc012004201d3602b80120042010422088a73602b4012004201d3602b0012004200441106a3602c00120044190016a200441b0016a108401200e41086a201a280200360200200e20042903900137020020042022422088a7221d2012422088a74105746a3602bc012004201d3602b80120042012a73602b4012004201d3602b0012004200441106a3602c00120044190016a200441b0016a108401200d41086a201a280200360200200d20042903900137020020042903e801211020042903e001211120042903f801211220042903f001212202402007450d002021a7211d02402025422088a7450d002007102a0b201d450d002023422088a7102a0b200420113703402004201037034820042022370350200420123703582010a721070b2004201137036020042010370368200420223703702004201237037802400240024020070d00200441b0016a41186a2013290300370300200441b0016a41106a2014290300370300200441b0016a41086a2015290300370300200420042903203703b001411a10282207450d0220072016370000200741186a20173b0000200741106a2018370000200741086a20193700002004429a808080a0033702d401200420073602d0012004200441d0016a3602e001200441b0016a200441e0016a10c80120042802d001210720042802d801211d200142003703002006420037030020084200370300200442003703e0012007201d200441e0016a1000201b2001290300370300201c2006290300370300201a2008290300370300200420042903e00137039001024020042802d401450d0020042802d001102a0b20044190016a412010090c010b200441b0016a41186a2013290300370300200441b0016a41106a2014290300370300200441b0016a41086a2015290300370300200420042903203703b001411a10282207450d0320072016370000200741186a20173b0000200741106a2018370000200741086a20193700002004429a808080a0033702d401200420073602d0012004200441d0016a3602e001200441b0016a200441e0016a10c80120042802d001210720042802d801211d200142003703002006420037030020084200370300200442003703e0012007201d200441e0016a1000201b2001290300370300201c2006290300370300201a2008290300370300200420042903e00137039001024020042802d401450d0020042802d001102a0b200441203602e401200420044190016a3602e001200441e0006a200441e0016a10b4030b02402010a72206450d002012a7210802402010422088a7450d002006102a0b2008450d002022422088a7102a0b200041206a2100200b41606a220b0d010c060b0b411a41011037000b411a41011037000b41c4d1c3004133200441d0016a419cd9c3001038000b200641011037000b1036000b02402009a7450d00200a102a0b200441003602e801200442013703e0012003200441e0016a10b40102402003450d002003410574210003402002200441e0016a108f01200241206a2102200041606a22000d000b0b20042802e401210620042802e801210820042802e0012100200441b0016a41086a22014200370300200442003703b00141fbefc200411b200441b0016a1008200441e0016a41086a2001290300370300200420042903b0013703e001200441e0016a411020002008100702402006450d002000102a0b02402004280214450d002004280210102a0b200524000ba50101027f230041206b22032400410021042003410036021420012002200341146a100621010240024020032802142202417f460d002001450d002003410036020c20024104490d0120012800002104200341003602102002417c714104460d01200128000421022001102a200041086a200236020020002004360204410121040b20002004360200200341206a24000f0b41c4d1c3004133200341186a419cd9c3001038000b13002000410a36020420004188a5c1003602000b3400200041fecbc10036020420004100360200200041146a4110360200200041106a4188ccc100360200200041086a42073702000b3001017f02404104102822020d00410441011037000b20004284808080c00037020420002002360200200241003600000b2201017f230041106b22022400200241003602002000200210ad02200241106a24000b13002000410b360204200041c0e5c1003602000b3101017f02404104102822020d00410441011037000b20004284808080c00037020420002002360200200241c0003600000b3d01017f02404110102822020d00411041011037000b200242003700082002428080e983b1de16370000200042908080808002370204200020023602000b3201017f02404104102822020d00410441011037000b20004284808080c0003702042000200236020020024180c2033600000b3001017f02404104102822020d00410441011037000b20004284808080c00037020420002002360200200241013600000b3001017f02404104102822020d00410441011037000b20004284808080c00037020420002002360200200241063600000b3d01017f02404110102822020d00411041011037000b200242003700082002428080d287e2bc2d370000200042908080808002370204200020023602000b3e01017f02404110102822020d00411041011037000b2002420037000820024280809aa6eaafe301370000200042908080808002370204200020023602000b9f0a01047f230041206b220224000240024002400240024002400240024002400240024002400240024002402001280200417f6a220341094b0d0020030e0a0102030405060708090a010b41c4f7c1001032000b2001410c6a2802002203417f4c0d0a200128020421044101210502402003450d00200310282205450d0c0b200520042003109a0521052000410c6a2003360200200041086a20033602002000200536020420004101360200200041206a200141206a290300370300200041186a2001290318370300200041106a20012902103703000c090b2001410c6a2802002203417f4c0d09200128020421050240024020030d00410121040c010b200310282204450d0c0b200420052003109a0521052000410c6a2003360200200041086a20033602002000200536020420004102360200200041206a200141206a290300370300200041186a2001290318370300200041106a20012902103703000c080b200128020421054101210302400240200141086a22042d00004101460d002002411e6a200441036a2d00003a0000200241086a200141186a290200370300200241106a200141206a290200370300200241186a200141286a2d00003a0000200220042f00013b011c2002200141106a2902003703002001410c6a2802002104410021030c010b2001410c6a28020021040b20002005360204200020022f011c3b0009200041086a20033a00002000410c6a2004360200200041106a20022903003702002000412c6a200129022c3702002000410b6a2002411e6a2d00003a0000200041186a200241086a290300370200200041206a200241106a290300370200200041286a200241186a280200360200200041033602000c070b20004104360200200020012802043602040c060b20004105360200200020012802043602040c050b410121030240024020012d00044101460d002002411e6a200141046a220341036a2d00003a0000200241086a200141146a290200370300200241106a2001411c6a290200370300200241186a200141246a2d00003a0000200220032f00013b011c20022001410c6a290200370300200141086a2802002105410021030c010b200141086a28020021050b200020033a0004200020022f011c3b0005200041306a2001290330370300200041086a20053602002000410c6a2002290300370200200041386a200141386a290300370300200041076a2002411e6a2d00003a0000200041146a200241086a2903003702002000411c6a200241106a290300370200200041246a200241186a2802003602002001280228210120004106360200200041286a20013602000c040b20004107360200200020012802043602040c030b410121030240024020012d00044101460d002002411e6a200141046a220341036a2d00003a0000200241086a200141146a290200370300200241106a2001411c6a290200370300200241186a200141246a2d00003a0000200220032f00013b011c20022001410c6a290200370300200141086a2802002101410021030c010b200141086a28020021010b200020033a0004200020022f011c3b000520004108360200200041086a20013602002000410c6a2002290300370200200041076a2002411e6a2d00003a0000200041146a200241086a2903003702002000411c6a200241106a290300370200200041246a200241186a2802003602000c020b20004109360200200020012802043602040c010b2000410a360200200020012802043602040b200241206a24000f0b1036000b200341011037000b200341011037000bbf4305047f027e037f017e067f23004190026b22072400200741f0006a41086a220842003703002007420037037041b0a3c1004112200741f0006a1008200741a0016a41086a2008290300370300200720072903703703a0014100210920074100360270200741a0016a4110200741f0006a1006210802402007280270220a417f460d002008450d002007200a36027420072008360270200741306a200741f0006a106c0240024020072802300d00200728023421090c010b410021090b200a450d002008102a0b200741f0006a41086a220842003703002007420037037041b8a2c1004114200741f0006a1008200741a0016a41086a220a2008290300370300200720072903703703a001024002400240200741a0016a41104101410041001003417f460d0041effec1002108412e210a0c010b2008420037030020074200370370418891c6004111200741f0006a1008200a2008290300370300200720072903703703a00120074100360270200741a0016a4110200741f0006a1006210802400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402007280270220a417f470d004100210a0c010b024020080d004100210a0c010b200a4104490d012008280000210a2008102a0b0240200a2003460d00419dffc10021084114210a0c1e0b024020090d0041b1ffc100210841c100210a0c1e0b02402009200241086a2802004f0d0041f2ffc1002108413c210a0c1e0b02402005428080e983b1de165441002006501b450d0041ae80c20021084124210a0c1e0b200741206a2001109d02200741206a41086a290300210b2007290320210c411310282208450d01200c200554200b200654200b2006511b210a200841002900c2a3413700002008410f6a41002800d1a341360000200841086a41002900caa34137000020074293808080b002370274200720083602702001200741f0006a108f012007280278210820072802702109200741a0016a41186a220d4200370300200741a0016a41106a220e4200370300200741a0016a41086a220f4200370300200742003703a00120092008200741a0016a1000200741c0006a41186a200d290300370300200741c0006a41106a200e290300370300200741c0006a41086a200f290300370300200720072903a00137034002402007280274450d002007280270102a0b200b2006200a1b210b200c2005200a1b210620074100360270200741c0006a4120200741f0006a100621080240024002402007280270220a417f460d002008450d002007200a3602a401200720083602a001200741f0006a200741a0016a10c20220072903704201510d0520074180016a29030021052007290378210c0240200a450d002008102a0b410e10282208450d06200841066a41002900b2a441370000200841002900aca4413700002008410e411c102c2208450d072008200441067636000e200741a0016a41186a220a4200370300200741a0016a41106a22094200370300200741a0016a41086a220d4200370300200742003703a00120084112200741a0016a1000200741f0006a41186a200a290300370300200741f0006a41106a2009290300370300200741f0006a41086a200d290300370300200720072903a0013703702008102a200741003602a001200741f0006a4120200741a0016a1006210820072802a001220a417f460d1b2008450d1b2007200a3602dc01200720083602d801200741a0016a200741d8016a107420072802a001220d450d082004413f71210920072902a40121100240200a450d002008102a0b4100210420092010422088a7490d010c190b200741106a20011091012007290310428080e983b1de1656200741186a29030022054200522005501b0d0141e380c20021084134210a0c1f0b200d200941216c6a22082d00004101470d17200741da016a200841036a2d00003a0000200741a0016a41086a200841146a290000370300200741ad016a200841196a290000370000200720082f00013b01d80120072008410c6a2900003703a001200841086a280000210a200841046a2800002108410121040c180b410e10282208450d06200841066a41002900b2a441370000200841002900aca4413700002008410e411c102c2208450d0720082004410676220e36000e200741a0016a41186a220a4200370300200741a0016a41106a22094200370300200741a0016a41086a220d4200370300200742003703a00120084112200741a0016a1000200741c0006a41186a200a290300370300200741c0006a41106a2009290300370300200741c0006a41086a200d290300370300200720072903a0013703402008102a20074100360270200741c0006a4120200741f0006a1006210802402007280270220a417f460d002008450d002007200a3602a401200720083602a001200741f0006a200741a0016a10742007280270220d450d092004413f712109200729027421050240200a450d002008102a0b41002108024020092005422088a74f0d0041014102200d200941216c6a2d00001b21080b02402005a7450d00200d102a0b20084102490d00410e10282208450d0a200841066a41002900b2a441370000200841002900aca4413700002008410e411c102c2208450d0b2008200e36000e42002105200741a0016a41186a220a4200370300200741a0016a41106a22044200370300200741a0016a41086a220d4200370300200742003703a00120084112200741a0016a1000200741c0006a41186a200a290300370300200741c0006a41106a2004290300370300200741c0006a41086a200d290300370300200720072903a0013703402008102a20074100360270200741c0006a4120200741f0006a100621080240024020072802702204417f470d004101210a0c010b024020080d004101210a0c010b200720043602a401200720083602a001200741f0006a200741a0016a10742007280270220a450d0d200729027421052004450d002008102a0b200741c0006a41186a2204200141186a290000370300200741c0006a41106a220d200141106a290000370300200741c0006a41086a220f200141086a2900003703002007200129000037034020092005422088a722114f0d0d200a200941216c6a220841013a000020082007290340370001200841096a200f290300370000200841116a200d290300370000200841196a2004290300370000410e102821080240200a0d002008450d0f200841066a41002900b2a441370000200841002900aca4413700002008410e411c102c2208450d102008200e36000e200741a0016a41186a220a4200370300200741a0016a41106a22094200370300200741a0016a41086a22044200370300200742003703a00120084112200741a0016a1000200741c0006a41186a200a290300370300200741c0006a41106a2009290300370300200741c0006a41086a2004290300370300200720072903a0013703402008102a200741c0006a412010090c170b2008450d10200841066a41002900b2a441370000200841002900aca4413700002008410e411c102c2208450d112008200e36000e200741a0016a41186a22094200370300200741a0016a41106a22044200370300200741a0016a41086a220d4200370300200742003703a00120084112200741a0016a1000200741c0006a41186a2009290300370300200741c0006a41106a2004290300370300200741c0006a41086a200d290300370300200720072903a0013703402008102a200741203602742007200741c0006a360270200a2011200741f0006a10ab022005a7450d16200a102a0c160b200741f0006a41086a2208420037030020074200370370419991c6004114200741f0006a1008200741a0016a41086a2008290300370300200720072903703703a0014100210a20074100360270200741a0016a4110200741f0006a10062108024020072802702209417f460d002008450d0020094104490d122008280000210a2008102a0b410e10282208450d12200841066a41002900b2a441370000200841002900aca4413700002008410e411c102c2208450d132008200a36000e200741a0016a41186a22094200370300200741a0016a41106a22044200370300200741a0016a41086a220d4200370300200742003703a00120084112200741a0016a1000200741c0006a41186a2009290300370300200741c0006a41106a2004290300370300200741c0006a41086a200d290300370300200720072903a0013703402008102a20074100360270200741c0006a4120200741f0006a1006210802400240024020072802702209417f460d002008450d002007200936027420072008360270200741086a200741f0006a106c0240024020072802080d00200728020c210d410021040c010b4101210441b8aec600210d0b02402009450d002008102a0b20040d00200d413f460d01200d0d170b200741f0006a2001428080d287e2bc2d4200410810980220072802704101470d012007280278210a200728027421080c1f0b200741f0006a41086a2208420037030020074200370370419991c6004114200741f0006a1008200741a0016a41086a2008290300370300200720072903703703a0012007200a41016a360270200741a0016a4110200741f0006a410410070c150b20072903782105200720074180016a29030037037820072005370370200b2006428080aef89dc3527c2205200654ad7c427f7c210b2007200741f0006a3602a001200741a0016a109d01200521060c140b41c4d1c3004133200741c0016a419cd9c3001038000b411341011037000b41c4d1c3004133200741c0016a419cd9c3001038000b410e41011037000b411c41011037000b41c4d1c3004133200741c0016a419cd9c3001038000b410e41011037000b411c41011037000b41c4d1c3004133200741c0016a419cd9c3001038000b410e41011037000b411c41011037000b41c4d1c3004133200741c0016a419cd9c3001038000b41a0a3c100200920111034000b410e41011037000b411c41011037000b410e41011037000b411c41011037000b41c4d1c3004133200741c0016a419cd9c3001038000b410e41011037000b411c41011037000b200741f9006a200141086a29000037000020074181016a200141106a29000037000020074189016a200141186a290000370000200741013a00702007200129000037007102400240024002400240024002400240024002400240024002400240024002400240410e10282208450d00200841066a41002900b2a441370000200841002900aca4413700002008410e411c102c2208450d012008200a36000e200741a0016a41186a22094200370300200741a0016a41106a22044200370300200741a0016a41086a220d4200370300200742003703a00120084112200741a0016a1000200741c0006a41186a2009290300370300200741c0006a41106a2004290300370300200741c0006a41086a200d290300370300200720072903a0013703402008102a200741003602a001200741c0006a4120200741a0016a100621080240024020072802a0012204417f460d002004210920080d010b200741003602a801200742013703a0014100200741a0016a10b40120072802a801210920072802a401210420072802a00121080b200720093602682007200436026420072008360260024002402009450d00200741a0016a20082009410110d60220072802a0014101470d012007280264450d122007280260102a0c120b4101200741e0006a10b401024020072d00704101460d0002400240200728026420072802682208460d00200728026021090c010b200841016a22092008490d1b200841017422042009200420094b1b22044100480d1b0240024020080d002004102821090c010b200728026020082004102c21090b2009450d052007200436026420072009360260200728026821080b2007200841016a360268200920086a41003a00000c100b02400240200728026420072802682208460d00200728026021090c010b200841016a22092008490d1a200841017422042009200420094b1b22044100480d1a0240024020080d002004102821090c010b200728026020082004102c21090b2009450d052007200436026420072009360260200728026821080b2007200841016a360268200920086a41013a0000200741f0006a410172200741e0006a108f010c0f0b20072802a401210d0240200741ac016a2802002208200741a8016a2802002209460d002007280268200820096b6a220441216a220e417f4c0d0502400240200e0d004101210f0c010b200e1028220f450d070b2007200e3602c4012007200f3602c001200720043602c8012007200741c0016a3602a001200d200741a0016a200810d70120042008490d0720072802c801220d2004490d082007280268220d2009490d0920072802c001210e2007280260210f2007200420086b22043602d0012007200d20096b220d3602d4012004200d470d0a200e20086a200f20096a2004109a051a0240024020072d00704101460d000240024020072802c40120072802c8012208460d0020072802c00121090c010b200841016a22092008490d1c200841017422042009200420094b1b22044100480d1c0240024020080d002004102821090c010b20072802c00120082004102c21090b2009450d0e200720043602c401200720093602c00120072802c80121080b2007200841016a3602c801200920086a41003a00000c010b0240024020072802c40120072802c8012208460d0020072802c00121090c010b200841016a22092008490d1b200841017422042009200420094b1b22044100480d1b0240024020080d002004102821090c010b20072802c00120082004102c21090b2009450d0e200720043602c401200720093602c00120072802c80121080b2007200841016a3602c801200920086a41013a0000200741f0006a410172200741c0016a108f010b20072802c801210920072802c401210420072802c00121082007280264450d102007280260102a0c100b2007200741e0006a3602a001200d200741a0016a200910d701024020072d00704101460d0002400240200728026420072802682208460d00200728026021090c010b200841016a22092008490d1a200841017422042009200420094b1b22044100480d1a0240024020080d002004102821090c010b200728026020082004102c21090b2009450d0e2007200436026420072009360260200728026821080b2007200841016a360268200920086a41003a00000c0f0b02400240200728026420072802682208460d00200728026021090c010b200841016a22092008490d19200841017422042009200420094b1b22044100480d190240024020080d002004102821090c010b200728026020082004102c21090b2009450d0e2007200436026420072009360260200728026821080b2007200841016a360268200920086a41013a0000200741f0006a410172200741e0006a108f010c0e0b410e41011037000b411c41011037000b200441011037000b200441011037000b1036000b200e41011037000b200820041044000b2004200d103c000b2009200d1044000b200741f0016a41146a4108360200200741fc016a4125360200200741d8016a41146a4103360200200742033702dc01200741c8afc6003602d801200741253602f4012007200741d0016a360288022007200741d4016a36028c02200742043703b001200742013702a4012007419cb0c6003602a0012007200741f0016a3602e8012007200741a0016a3602800220072007418c026a3602f801200720074188026a3602f001200741d8016a41d8b0c600103e000b200441011037000b200441011037000b200441011037000b200441011037000b2007280268210920072802642104200728026021080b2008450d00200741c0006a41202008200910072004450d012008102a0c010b024002400240412110282208450d0041002109024020072d00704101470d00200741b8016a20074189016a290000370300200741b0016a20074181016a290000370300200741a8016a200741f9006a290000370300200720072900713703a001410121090b200820093a0000200820072903a001370001200841096a200741a8016a290300370000200841116a200741b0016a290300370000200841196a200741b8016a290300370000410e10282209450d01200941066a41002900b2a441370000200941002900aca4413700002009410e411c102c2209450d022009200a36000e200741a0016a41186a220a4200370300200741a0016a41106a22044200370300200741a0016a41086a220d4200370300200742003703a00120094112200741a0016a1000200741c0006a41186a200a290300370300200741c0006a41106a2004290300370300200741c0006a41086a200d290300370300200720072903a0013703402009102a200741203602a4012007200741c0006a3602a00120084101200741a0016a10ab022008102a0c030b412141011037000b410e41011037000b411c41011037000b20072001428080e983b1de164200108302024020072802002208450d002007280204210a0c080b200741f0006a41086a220842003703002007420037037041ad91c6004112200741f0006a1008200741a0016a41086a2008290300370300200720072903703703a0014100210a20074100360270200741a0016a4110200741f0006a100621080240024020072802702209417f460d002008450d0020094104490d012008280000210a2008102a0b4200210c200741f0006a41086a220842003703002007420037037041ad91c6004112200741f0006a1008200741a0016a41086a2008290300370300200720072903703703a0012007200a41016a360270200741a0016a4110200741f0006a41041007420021050c060b41c4d1c3004133200741c0016a419cd9c3001038000b0b02402010a7450d00200d102a2004450d010c020b20040d010b410121094113210a419781c20021080c010b200741c0016a41026a200741d8016a41026a2d00003a0000200741f0006a41086a200741a0016a41086a290300370300200741f0006a410d6a200741a0016a410d6a290000370000200720072f01d8013b01c001200720072903a001370370410021090b200741e0006a41026a2204200741c0016a41026a2d00003a0000200741f0016a41086a220d200741f0006a41086a290300370300200741f0016a41106a200741f0006a41106a290300370300200720072f01c0013b0160200720072903703703f00120090d02200741d3006a200d290300370000200741d8006a200741fd016a290000370000200720072f01603b01402007200a36004720072008360043200720072903f00137004b200720042d00003a0042200741c0006a2001460d00200741c0006a20014120109c05450d0041d280c20021084111210a0c020b200742f0f2bda9c6add9b1f400370338200741386a20012006200b417f410f10a902200741f0006a41186a200b3703002007200637038001200720053703782007200c370370200720033602940120072003360290010240024002400240411310282208450d00200841002900c2a3413700002008410f6a41002800d1a341360000200841086a41002900caa34137000020074293808080b0023702f401200720083602f0012001200741f0016a108f0120072802f801210820072802f001210a200741a0016a41186a22094200370300200741a0016a41106a22034200370300200741a0016a41086a22044200370300200742003703a001200a2008200741a0016a1000200741c0006a41186a2009290300370300200741c0006a41106a2003290300370300200741c0006a41086a2004290300370300200720072903a001370340024020072802f401450d0020072802f001102a0b200741203602a4012007200741c0006a3602a001200741f0006a200741a0016a10c3022002280204210f20022802002103024002400240200241086a280200220941057622120d0041042113410421140c010b2012410274220810282213450d01201321140b2009450d030240024020120d00410410282213450d0141012112201321140b201441003602002009417f6a210441012115410021084100210a024003402014200a4102746a2202200320086a2d00002008411f717420022802006a360200024002400240024020042008460d00200841016a2202411f710d0320152012470d02201541016a220d2015490d0c2015410174220e200d200e200d4b1b221241ffffffff03712012470d0c2012410274220d41004e0d010c0c0b0240200f450d002003102a0b41002116024002400240024003402015410820154108491b220a410274220f10282208450d0120082014200f109a052111200741f0006a41186a200141186a290000370300200741f0006a41106a200141106a290000370300200741f0006a41086a200141086a290000370300200720163602900120072001290000370370411310282208450d0220084100290099a4413700002008410f6a41002800a8a441360000200841086a41002900a1a44137000020074293808080b0023702f401200720083602f001200741f0006a200741f0016a108f0120072802900121090240024020072802f401220220072802f80122086b4104490d0020072802f00121020c010b200841046a22032008490d11200241017422082003200820034b1b22084100480d110240024020020d002008102821020c010b20072802f00120022008102c21020b2002450d04200720083602f401200720023602f00120072802f80121080b2007200841046a3602f801200220086a200936000020072802f801210820072802f0012102200741a0016a41186a22094200370300200741a0016a41106a22034200370300200741a0016a41086a22044200370300200742003703a00120022008200741a0016a1000200741c0006a41186a2009290300370300200741c0006a41106a2003290300370300200741c0006a41086a2004290300370300200720072903a001370340024020072802f401450d0020072802f001102a0b2015200a6b21152014200f6a2114410021082007410036027820074201370370200a200741f0006a10b4014100200728027822046b210a200728027421030340200420086a2109201120086a280200210d024002402003200a6a4104490d00200728027021020c010b200941046a22022009490d122003410174220e2002200e20024b1b220e4100480d120240024020030d00200e102821020c010b20072802702003200e102c21020b2002450d062007200e36027420072002360270200e21030b2007200941046a360278200220046a20086a200d360000200a417c6a210a200f200841046a2208470d000b200741c0006a41202002200420086a100702402003450d002002102a0b2011102a201641016a211620150d000b410021082012450d0e2013102a0c0e0b200f41041037000b411341011037000b200841011037000b200e41011037000b0240024020150d00200d102821130c010b20132015410274200d102c21130b2013450d03201321140b201420154102746a4100360200200a41016a210a201541016a21150b200920024d0d05200221082015200a4b0d000b41a0a3c100200a20151034000b200d41041037000b410441041037000b200841041037000b411341011037000b41cca2c100200841016a20091034000b0240200f450d002003102a0b410021080b0c020b1031000b200241046a280200450d002002280200102a0b2000200a3602042000200836020020074190026a24000b810f03037f017e097f23004190016b2202240002400240024002400240024002400240024002400240410e10282203450d00200341066a41002900b2a441370000200341002900aca4413700002003410e411c102c2203450d0120032001410676220436000e42002105200241f0006a41186a22064200370300200241f0006a41106a22074200370300200241f0006a41086a220842003703002002420037037020034112200241f0006a1000200241086a41186a2006290300370300200241086a41106a2007290300370300200241086a41086a2008290300370300200220022903703703082003102a20024100360238200241086a4120200241386a100621030240024020022802382207417f470d00410121060c010b024020030d00410121060c010b2002200736027420022003360270200241386a200241f0006a107420022802382206450d03200229023c21052007450d002003102a0b2001413f7122032005422088a722074f0d032006200341216c6a220341003a000020032002290038370001200341096a200241c0006a290000370000200341116a200241c8006a290000370000200341196a200241d0006a290000370000410e10282203450d04200341066a41002900b2a441370000200341002900aca4413700002003410e411c102c2203450d052003200436000e200241f0006a41186a22044200370300200241f0006a41106a22084200370300200241f0006a41086a220142003703002002420037037020034112200241f0006a1000200241086a41186a2004290300370300200241086a41106a2008290300370300200241086a41086a2001290300370300200220022903703703082003102a2002412036023c2002200241086a36023820062007200241386a10ab0202402005a7450d002006102a0b200241386a41086a220342003703002002420037033841ad91c6004112200241386a1008200120032903003703002002200229033837037020024100360238200241f0006a4110200241386a10062103417f2106024020022802382201417f460d002003450d0020014104490d07200328000021062003102a2006417f6a21060b200241386a41086a220442003703002002420037033841ad91c6004112200241386a1008200241f0006a41086a220720042903003703002002200229033837037020022006360238200241f0006a4110200241386a41041007200241386a41186a2208200041186a2209290000370300200241386a41106a220a200041106a220b2900003703002004200041086a220c2900003703002002410036025820022000290000370338200241286a200241386a10c10202402002280230450d0041012106034020082009290000370300200a200b2900003703002004200c29000037030020022006417f6a36025820022000290000370338411310282203450d0920034100290099a4413700002003410f6a41002800a8a441360000200341086a41002900a1a44137000020024293808080b00237026420022003360260200241386a200241e0006a108f012002280258210d0240024020022802642201200228026822036b4104490d00200228026021010c010b200341046a220e2003490d0c20014101742203200e2003200e4b1b22034100480d0c0240024020010d002003102821010c010b200228026020012003102c21010b2001450d0b2002200336026420022001360260200228026821030b2002200341046a360268200120036a200d3600002002280268210320022802602101200241f0006a41186a220d4200370300200241f0006a41106a220e4200370300200742003703002002420037037020012003200241f0006a1000200241086a41186a200d290300370300200241086a41106a200e290300370300200241086a41086a20072903003703002002200229037037030802402002280264450d002002280260102a0b200241086a412010090240200228022c450d002002280228102a0b20082009290000370300200a200b2900003703002004200c2900003703002002200029000037033820022006360258200641016a2106200241286a200241386a10c10220022802300d000b0b0240200228022c450d002002280228102a0b411310282203450d0a200341002900c2a3413700002003410f6a41002800d1a341360000200341086a41002900caa34137000020024293808080b00237023c200220033602382000200241386a108f012002280240210320022802382106200241f0006a41186a22014200370300200241f0006a41106a22004200370300200241f0006a41086a220442003703002002420037037020062003200241f0006a1000200241086a41186a2001290300370300200241086a41106a2000290300370300200241086a41086a2004290300370300200220022903703703080240200228023c450d002002280238102a0b200241086a4120100920024190016a24000f0b410e41011037000b411c41011037000b41c4d1c3004133200241e0006a419cd9c3001038000b41a0a3c100200320071034000b410e41011037000b411c41011037000b41c4d1c3004133200241e0006a419cd9c3001038000b411341011037000b200341011037000b1031000b411341011037000bd40201027f0240024002402002450d002002417f6a2104024020012d0000220241037122054103460d000240024020050e03040001040b2004450d0220012d0001410874200272220241ffff0371418002490d02200241fcff037141027621020c040b20044103490d0120012f0001200141036a2d000041107472410874200272220241808004490d01200241027621020c030b200241034b0d0020044104490d002001280001220241ffffffff034b0d020b200041013602000f0b200241027621020b0240200220036a220120024f0d00200041013602000f0b41012103410121050240200241c000490d0041022105200241808001490d00410441052002418080808004491b21050b0240200141c000490d0041022103200141808001490d00410441052001418080808004491b21030b20002001360204200041003602002000410c6a2003360200200041086a20053602000b130020004101360204200041f486c2003602000b3400200041f487c20036020420004100360200200041146a4107360200200041106a418488c200360200200041086a420f3702000b2201017f230041106b22022400200241003602002000200210da02200241106a24000bd60201037f0240024002400240024002400240024002400240024002400240024020012802000e0400010203000b41012102410110282201450d05200141003a0000410121030c040b410110282202450d05200241013a000020012802042103200241014105102c2202450d062002200336000120012802082104410a210320024105410a102c2201450d07200120043600050c020b41012102410110282201450d07200141023a0000410121030c020b410110282202450d07200241033a000020012802042103200241014105102c2202450d082002200336000120012802082104410a210320024105410a102c2201450d09200120043600050b410921020b2000200236020820002003360204200020013602000f0b410141011037000b410141011037000b410541011037000b410a41011037000b410141011037000b410141011037000b410541011037000b410a41011037000b130020004101360204200041cc92c2003602000b34002000419596c20036020420004100360200200041146a4107360200200041106a419c96c200360200200041086a42073702000b130020004101360204200041aca3c2003602000b890201057f230041106b22022400024002400240411110282203450d002002421137020420022003360200410d200210b4010240024020022802042204200228020822036b410d490d002003410d6a2105200228020021040c010b2003410d6a22052003490d03200441017422062005200620054b1b22064100480d030240024020040d002006102821040c010b200228020020042006102c21040b2004450d0220022006360204200220043602000b20022005360208200420036a22034100290082a542370000200341056a4100290087a54237000020002002290300370200200041086a2002280208360200200241106a24000f0b411141011037000b200641011037000b1031000bce04010b7f230041106b220324002003420037030820012002200341086a102720032003290308370300200120026a21040240024002400240200241086a220520024f0d00200341086a2106200321074100210841002105410121094100210a0340200841017421022006200741016a220b6b210c034020072d00002107024002400240024020082005470d00200c2105024002400240200a41ff01710e03010200010b200420016b21050c010b417f200c200420016b6a22052005200c491b21050b2008417f200541016a220d200d2005491b6a22052008490d0920022005200220054b1b22054100480d090240024020080d002005102821090c010b200920082005102c21090b2009450d010b200920086a20073a00000240024002400240200a41ff01710e03010300010b20042001460d010c050b0240200b2006460d004100210a0c040b20042001470d040b200841016a21080c070b4101210a200b2006470d01200841016a21080c060b200541011037000b200841016a2108200b21070c020b200841016a21084102210a200241026a21022001220741016a21010c000b0b0b4101210902402005450d0020054100480d03200510282209450d020b410021080340200920086a200320086a2d00003a0000200841016a22084108470d000b024020020d00410821080c010b200920086a210a410021080340200a20086a200120086a2d00003a00002002200841016a2208470d000b200420016b41086a21080b200020083602082000200536020420002009360200200341106a24000f0b200541011037000b1031000bc30401047f230041206b22022400024002400240024002400240410110282203450d00200320012d00003a0000200341014102102c2203450d01200320012d00013a0001200341024104102c2203450d02200320012d00023a0002200320012d00033a0003200341044108102c2203450d03200320012d00043a0004200320012d00053a0005200320012d00063a0006200320012d00073a0007200341084110102c2203450d04200320012d00083a0008200320012d00093a0009200320012d000a3a000a200320012d000b3a000b200320012d000c3a000c200320012d000d3a000d200320012d000e3a000e200320012d000f3a000f200341104120102c2203450d05200320012d00103a0010200320012d00113a0011200320012d00123a0012200320012d00133a0013200320012d00143a0014200320012d00153a0015200320012d00163a0016200320012d00173a0017200320012d00183a0018200320012d00193a0019200320012d001a3a001a200320012d001b3a001b200320012d001c3a001c200320012d001d3a001d200320012d001e3a001e200320012d001f3a001f200241186a22014200370300200241106a22044200370300200241086a22054200370300200242003703002003412020021000200041186a2001290300370000200041106a2004290300370000200041086a2005290300370000200020022903003700002003102a200241206a24000f0b410141011037000b410241011037000b410441011037000b410841011037000b411041011037000b412041011037000bd40201087f230041206b2203240020034100360208200342013703002001200310b401024002400240024020010d002003280208210420032802042105200328020021060c010b200141246c210720032802042105200328020821010340200341106a200010ec012003280210210802400240200520016b20032802182209490d00200120096a2104200328020021060c010b200120096a22042001490d04200541017422062004200620044b1b220a4100480d040240024020050d00200a102821060c010b20032802002005200a102c21060b2006450d032003200a36020420032006360200200a21050b20032004360208200620016a20082009109a051a02402003280214450d002008102a0b200041246a2100200421012007415c6a22070d000b0b2002280200200228020420062004100702402005450d002006102a0b200341206a24000f0b200a41011037000b1031000b130020004103360204200041a0a5c2003602000b340020004185acc20036020420004100360200200041146a4103360200200041106a4190acc200360200200041086a42083702000b130020004104360204200041a8b0c2003602000b0b00200041a0c21e10e6020b3001017f02404104102822020d00410441011037000b20004284808080c00037020420002002360200200220013600000b3201017f02404104102822020d00410441011037000b20004284808080c0003702042000200236020020024180e1013600000b0b00200041d0860310e6020bdd0301047f230041d0026b2202240002400240024002400240411210282203450d00200341106a41002f008086423b0000200341086a41002900f88542370000200341002900f08542370000200341124124102c2203450d0120032001360012200241e8016a41186a22014200370300200241e8016a41106a22044200370300200241e8016a41086a22054200370300200242003703e80120034116200241e8016a1000200241e8006a41186a2001290300370300200241e8006a41106a2004290300370300200241e8006a41086a2005290300370300200220022903e8013703682003102a200241003602e801200241e8006a4120200241e8016a1006210120022802e8012203417f460d032002200336020c20022001360208200241e8016a200241086a10810220022903e8014201510d0220024188016a200241e8016a41086a41e000109a051a02402003450d002001102a0b200241086a20024188016a41e000109a051a200241e8016a200241086a41e000109a051a20004201370300200041086a200241e8016a41e000109a051a0c040b411241011037000b412441011037000b41c4d1c300413320024188016a419cd9c3001038000b200241e8016a200241086a41e000109a051a200042003703000b200241d0026a24000bc06709017f017e017f027e157f017e037f017e037f230041a0056b2201240010eb020240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020004101460d0042002102200141206a41086a2200420037030020014200370320418efcc5004110200141206a100820014188036a41086a20002903003703002001200129032037038803200141003602e80320014188036a4110200141e8036a100621000240024002400240024002400240024002400240024020012802e8032203417f460d002000450d0020034108490d01200029000021022000102a0b42002104200141206a41086a220042003703002001420037032041dffbc500410f200141206a100820014188036a41086a20002903003703002001200129032037038803200141003602e80320014188036a4110200141e8036a10062100024020012802e8032203417f460d002000450d0020034108490d02200029000021042000102a0b42002105200141206a41086a220042003703002001420037032041fefbc5004110200141206a100820014188036a41086a20002903003703002001200129032037038803200141003602e80320014188036a4110200141e8036a10062100024020012802e8032203417f460d002000450d0020034108490d03200029000021052000102a0b420020022005200442c8017e7c7d220420042002561b42c801540d0a200141206a41086a2200420037030020014200370320419499c6004114200141206a100820014188036a41086a2000290300370300200120012903203703880341002106200141003602e80320014188036a4110200141e8036a10062100024020012802e8032203417f460d002000450d0020034104490d04200028000021062000102a0b200141206a41086a220042003703002001420037032041a899c6004115200141206a100820014188036a41086a20002903003703002001200129032037038803200141003602e80320014188036a4110200141e8036a100621000240024020012802e8032203417f470d00410221070c010b024020000d00410221070c010b2003450d0520002d000021072000102a0b10fb01210820014188036a41086a22004200370300200142003703880341c2e1c000410d20014188036a1008200141e8036a41086a200029030037030020012001290388033703e80320014100360220200141e8036a4110200141206a100621000240024020012802202203417f460d002000450d00200120033602a401200120003602a001200141206a200141a0016a107c20012802202209450d07200129022421052003450d012000102a0c010b41012109420021050b200141206a41086a220042003703002001420037032041c785c2004112200141206a100820014188036a41086a20002903003703002001200129032037038803200141003602e80320014188036a4110200141e8036a100621000240024020012802e8032203417f460d002000450d002001200336022420012000360220200141e8036a200141206a106d20012802e803220a450d0820012902ec0321042003450d012000102a0c010b4101210a420021040b02402004422088a722000d004108210b4100210c4100210d0c0a0b2000410574210e200141e8036a41206a210f4100210c4100210d4108210b41002103200a2100034020014188026a41186a2210200041186a29000037030020014188026a41106a2211200041106a29000037030020014188026a41086a2212200041086a2900003703002001200029000037038802200141e8036a2008200310fc0120012802e803221320012802f00341014100410010032114024020012802ec03450d002013102a0b02402014417f470d00200141206a41186a22142010290300370300200141206a41106a22132011290300370300200141206a41086a221520122903003703002001200129038802370320200141e8036a200141206a10ec02200128028804450d09200141206a41286a2216200141e8036a41286a290300370300200141206a41206a2217200f2903003703002014200141e8036a41186a22182903003703002013200141e8036a41106a22192903003703002015200141e8036a41086a221a290300370300200120012903e8033703202018201029030037030020192011290300370300201a201229030037030020012001290388023703e803200f2001290320370300200f41086a2015290300370300200f41106a2013290300370300200f41186a2014290300370300200f41206a2017290300370300200f41286a20162903003703000240200c200d470d00200c41016a2214200c490d26200c41017422102014201020144b1b220dad42d0007e2202422088a70d262002a722144100480d2602400240200c0d0020141028210b0c010b200b200c41d0006c2014102c210b0b200b450d0b0b200b200c41d0006c6a200141e8036a41d000109a051a200c41016a210c0b200341016a2103200041206a2100200e41606a220e450d0a0c000b0b41c4d1c300413320014198056a419cd9c3001038000b41c4d1c300413320014198056a419cd9c3001038000b41c4d1c300413320014198056a419cd9c3001038000b41c4d1c300413320014198056a419cd9c3001038000b41c4d1c300413320014198056a419cd9c3001038000b41c4d1c300413320014198056a419cd9c3001038000b41c4d1c300413320014198056a419cd9c3001038000b41f187c1004192021050000b201441081037000b02402004a7450d00200a102a0b02400240200c450d002001410036022820014201370320200141f8036a200c360200200141f4036a200d3602002001200b3602f003200120054220883e02ec03200120083602e803200141206a200141e8036a10c5012005a7450d012009102a0c010b02402005a7450d002009102a0b200d450d00200b102a0b200141206a41086a220042003703002001420037032041f5b6c2004112200141206a100820014188036a41086a20002903003703002001200129032037038803200141003602e80320014188036a4110200141e8036a1006210b024002400240024002400240024002400240024002400240024002400240024002400240024020012802e8032216417f460d00200b450d00200120163602ac022001200b3602a802200141086a200141a8026a106c20012802080d2b20012802ac02220f41807f712200417f4c0d14200128020c211202400240200f41077622140d00410121150c010b200010282215450d100b02402012450d00200141e8036a41206a2113200141a0016a41017221084100210c0340200141003a00c001200c41016a210e4100210002400240024002400340200f2000460d01200141a0016a20006a20012802a80222032d00003a00002001200341016a3602a8022001200041016a22033a00c0012003210020034120470d000b20014188026a41086a2200200141a0016a41086a29030037030020014188026a41106a2210200141a0016a41106a29030037030020014188026a41186a2211200141a0016a41186a290300370300200120012903a001370388022001200f20036b3602ac02200141a0016a200141a8026a10e80120012d00a0014101460d01200141e8036a41186a2011290300370300200141e8036a41106a2010290300370300200141e8036a41086a200029030037030020012001290388023703e8032013200841e000109a051a200141206a200141e8036a418001109a051a2014200c470d03200c4101742200200e2000200e4b1b221441ffffff0f712014470d322014410774220041004e0d020c320b200141003602ac02200041ff0171450d00200141003a00c0010b2014450d2f2015102a0c2f0b02400240200c0d002000102821150c010b2015200c4107742000102c21150b2015450d050b2015200c4107746a200141206a418001109a051a200e2012460d0120012802ac02210f200e210c0c000b0b2015450d2b2012ad42208621022014ad210402402016450d00200b102a0b2002200484211b0c010b410121154200211b0b4100210002400240201b422088a72218410774220c0d004101211c4100211d0c010b200c41027622031028221c450d0d201841ffffff0f71211d0b200741ff0171210e02402018450d002018410774210f201c210020152103034020002003290000370000200041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a290000370000200041206a210020034180016a2103200f41807f6a220f0d000b201841077441807f6a41077641016a21000b200e410247210f200141206a41086a220342003703002001420037032041c785c2004112200141206a100820014188036a41086a20032903003703002001200129032037038803200141003602f003200142013703e8032000200141e8036a10b40102402000450d0020004105742103201c210003402000200141e8036a108f01200041206a2100200341606a22030d000b0b2007200f71211a20012802ec03210020014188036a411020012802e803220320012802f003100702402000450d002003102a0b0240201a450d00200141206a41086a220042003703002001420037032041bd99c600411a200141206a100820014188036a41086a20002903003703002001200129032037038803200141003602e80320014188036a4110200141e8036a1006210020012802e8032203417f460d002000450d002001200336022420012000360220200141e8036a200141206a10820120012802e803220f450d0c20012902ec03210202402003450d002000102a0b20014188036a411010092002a7450d00200f102a0b200141106a200641026a10ed02024002402001280210221e0d00200141206a41086a220042003703002001420037032041c785c2004112200141206a100820014188036a41086a20002903003703002001200129032037038803200141003602e80320014188036a4110200141e8036a10062100024020012802e8032203417f460d002000450d002001200336022420012000360220200141e8036a200141206a106d20012802e803220d450d0d20012902ec03211f02402003450d002000102a0b410021200c020b410021204101210d4200211f0c010b410121202001290214211f201e210d0b200141206a41086a2200420037030020014200370320419499c6004114200141206a100820014188036a41086a20002903003703002001200129032037038803410121162001200641016a22063602e80320014188036a4110200141e8036a41041007200120203a001f20012015200c6a22073602ec04200120153602e8042001200141e8046a3602fc0420012001411f6a3602f8044100210e410021210240201f422088a722004105742203450d002003410575222141ffffff0f712021470d2b202141077422034100480d2b200310282216450d0a0b02402000450d002000410574210c200141206a410172210b200141e8036a41206a2108200141a8026a41c0006a2119200141a8026a41206a21174100210e20162114200d21000340200041086a2900002102200041106a29000021042000290000210520014188026a41186a2210200041186a29000037030020014188026a41106a2211200437030020014188026a41086a22122002370300200120053703880220014188056a20014188026a108b02200128029005210f2001280288052103200141003602202003200f200141206a1006210f0240024020012802202213417f460d00200f450d002001201336028c032001200f36028803200141206a20014188036a10e80120012d00204101460d0c200141a0016a200b41e000109a051a02402013450d00200f102a0b20014188036a200141a0016a41e000109a051a200141206a20014188036a41e000109a051a200141a0016a200141206a41e000109a051a4101210f0c010b200141206a20014188036a41e000109a051a4100210f0b0240200128028c05450d002003102a0b02400240200f0d00200141a8026a410041e0001099051a0c010b200141a8026a200141a0016a41e000109a051a0b024020012802f8042d00000d0020012802fc04220f2802002203200f280204460d00200f20034180016a36020002400240200141a8026a200341206a220f460d00200f200141a8026a4120109c050d010b02402017200341c0006a220f460d00200f20174120109c050d010b2019200341e0006a2203460d01200320194120109c05450d010b20012802f80441013a00000b200041206a2100200141e8036a41186a2010290300370300200141e8036a41106a2011290300370300200141e8036a41086a201229030037030020012001290388023703e8032008200141a8026a41e000109a051a200e41016a210e2014200141e8036a418001109a054180016a2114200c41606a220c0d000b0b0240201fa7450d00200d102a0b200e41ffffff0f71200e470d12200e4107742200417f4c0d1220012d001f21120240024020000d00410121110c010b200010282211450d080b410021000240200e450d002016200e4107746a2110200141e8036a41e0006a2103200141e8036a41c0006a210f200141e8036a41206a210c20112114201621000340200141e8036a41186a200041186a290000370300200141e8036a41106a200041106a290000370300200141e8036a41086a200041086a290000370300200120002900003703e803200c41186a200041386a290000370000200c41106a200041306a290000370000200c41086a200041286a290000370000200c200041206a290000370000200f41186a200041d8006a290000370000200f41106a200041d0006a290000370000200f41086a200041c8006a290000370000200f200041c0006a2900003700002003200041e0006a290000370000200341086a200041e8006a290000370000200341106a200041f0006a290000370000200341186a200041f8006a2900003700002014200141e8036a418001109a054180016a211420004180016a22002010470d000b200e41077441807f6a41077641016a21000b200141206a41086a220342003703002001420037032041f5b6c2004112200141206a100820014188036a41086a20032903003703002001200129032037038803200141003602f003200142013703e8032000200141e8036a10b40102402000450d00201120004107746a21032011210003402000200141e8036a108f01200041206a200141e8036a108f01200041c0006a200141e8036a108f01200041e0006a200141e8036a108f0120004180016a22002003470d000b0b20012802ec03210020014188036a411020012802e803220320012802f003100702402000450d002003102a0b0240200e450d002011102a0b200120123a00e803200141206a41086a220042003703002001420037032041a899c6004115200141206a100820014188036a41086a2000290300370300200120012903203703880320014188036a4110200141e8036a41011007200120063602ec03200141043a00e80341014100200141e8036a10cc01410810282203450d0620032007360204200320153602000240201a0d0042002102200141206a41086a220042003703002001420037032041e194c600411c200141206a100820014188036a41086a20002903003703002001200129032037038803200141003602e80320014188036a4110200141e8036a10062100024020012802e803220f417f460d002000450d00200f4108490d07200029000021022000102a0b200141206a41086a2200420037030020014200370320419499c6004114200141206a100820014188036a41086a200029030037030020012001290320370388034100210f200141003602e80320014188036a4110200141e8036a10062100024020012802e803220c417f460d002000450d00200c4104490d062000280000210f2000102a0b411c10282200450d04200041186a41002800959546360000200041106a410029008d9546370000200041086a41002900859546370000200041002900fd94463700002000411c4138102c2200450d032000200237001c20014188026a41186a220c420037030020014188026a41106a2214420037030020014188026a41086a2210420037030020014200370388022000412420014188026a1000200141e8036a41186a200c290300370300200141e8036a41106a2014290300370300200141e8036a41086a201029030037030020012001290388023703e8032000102a2001200f360220200141e8036a4120200141206a410410072003102a0c110b024002402018450d00200320154180016a2210360200200120152900223701ea032001201529002a3701f20320014188026a41086a220020012903f003370300200120152900323701fa0320014188026a41106a220f20012903f8033703002001201528003a36018204200120152f003e3b01860420014188026a41186a220c200129038004370300200141003a008804200120152d00213a00e903200120152d00203a00e803200120012903e8033703880220014188036a41186a2214200c29030037030020014188036a41106a220c200f29030037030020014188036a41086a220f2000290300370300200120012903880237038803200141206a41186a22002014290300370300200141206a41106a2214200c290300370300200141206a41086a220c200f290300370300200120012903880337032020150d010b2003102a4108211241002110410021000c100b200141a0016a41186a2000290300370300200141a0016a41106a2014290300370300200141a0016a41086a200c290300370300200120012903203703a001200720106b41077641016a220041286c220f417f4c0d12200f10282212450d01201220012903a00137030020124201370320201241186a200141a0016a41186a220a290300370300201241106a200141a0016a41106a2209290300370300201241086a200141a0016a41086a222229030037030002402003280200220f2003280204220d470d00410121100c0f0b2003200f4180016a22063602002001200f2900223701ea032001200f29002a3701f20320014188026a41086a221320012903f0033703002001200f2900323701fa0320014188026a41106a220820012903f8033703002001200f28003a360182042001200f2f003e3b01860420014188026a41186a220b200129038004370300200141003a0088042001200f2d00213a00e9032001200f2d00203a00e803200120012903e8033703880220014188036a41186a220f200b29030037030020014188036a41106a220c200829030037030020014188036a41086a22142013290300370300200120012903880237038803200141206a41186a2217200f290300370300200141206a41106a2218200c290300370300200141206a41086a2219201429030037030020012001290388033703204102211041c80021110340200a2017290300220237030020092018290300220437030020222019290300220537030020012001290320221f3703a001200f2002370300200c2004370300201420053703002001201f3703880302400240024002402010417f6a2000460d002000211a0c010b200d20066b41077620006a41016a221a2000490d2e2000410174220d201a200d201a4b1b221aad42287e2202422088a70d2e2002a7220d4100480d2e0240024020000d00200d102821120c010b2012200041286c200d102c21120b2012450d010b201220116a220d41606a220020012903880337030020142903002102200c2903002104200f2903002105200d4201370300200041186a2005370300200041106a2004370300200041086a2002370300200328020022002003280204220d470d01201a21000c110b200d41081037000b200320004180016a2206360200200120002900223701ea032001200029002a3701f203201320012903f003370300200120002900323701fa03200820012903f8033703002001200028003a36018204200120002f003e3b018604200b200129038004370300200141003a008804200120002d00213a00e903200120002d00203a00e803200120012903e80337038802200f200b290300370300200c2008290300370300201420132903003703002001200129038802370388032017200f2903003703002018200c290300370300201920142903003703002001200129038803370320201141286a2111201041016a2110201a21000c000b0b200041011037000b200f41081037000b413841011037000b411c41011037000b41c4d1c300413320014198056a419cd9c3001038000b41c4d1c300413320014198056a419cd9c3001038000b410841041037000b200041011037000b41c4d1c300413320014198056a419cd9c3001038000b200341011037000b41c4d1c300413320014198056a419cd9c3001038000b41c4d1c300413320014198056a419cd9c3001038000b200341011037000b200041011037000b2003102a0b200141206a41086a220342003703002001420037032041d985c2004117200141206a100820014188036a41086a20032903003703002001200129032037038803200141e8036a20014188036a411010c6020240024020012802e8034101460d00200120103602f003200120003602ec03200120123602e803200141e8036a41004100200110ee020c010b20014188036a4110100920012902ec032102200120103602f003200120003602ec03200120123602e803200141e8036a2002a741012002422088a710ee020b42002102200141206a41086a220042003703002001420037032041e194c600411c200141206a100820014188036a41086a20002903003703002001200129032037038803200141003602e80320014188036a4110200141e8036a10062100024020012802e8032203417f460d002000450d0020034108490d04200029000021022000102a0b200141206a41086a220042003703002001420037032041e194c600411c200141206a100820014188036a41086a2203200029030037030020012001290320370388032001200242017c22023703e80320014188036a4110200141e8036a410810072000420037030020014200370320419499c6004114200141206a100820032000290300370300200120012903203703880341002103200141003602e80320014188036a4110200141e8036a10062100024020012802e803220f417f460d002000450d00200f4104490d05200028000021032000102a0b411c10282200450d05200041186a41002800959546360000200041106a410029008d9546370000200041086a41002900859546370000200041002900fd94463700002000411c4138102c2200450d062000200237001c20014188026a41186a220f420037030020014188026a41106a220c420037030020014188026a41086a2214420037030020014200370388022000412420014188026a1000200141e8036a41186a200f290300370300200141e8036a41106a200c290300370300200141e8036a41086a201429030037030020012001290388023703e8032000102a20012003360220200141e8036a4120200141206a410410070b410810282200450d062000200736020420002015360200410810282219450d0720192016200e4107746a221a3602042019201636020042002102200141206a41086a220342003703002001420037032041dffbc500410f200141206a100820014188036a41086a20032903003703002001200129032037038803200141003602e80320014188036a4110200141e8036a10062103024020012802e803220f417f460d002003450d00200f4108490d09200329000021022003102a0b200242017c22042002540d09200141206a41086a220342003703002001420037032041dffbc500410f200141206a100820014188036a41086a220f20032903003703002001200129032037038803200120043703e80320014188036a4110200141e8036a41081007200141e8046a20004188b7c20010880120012802ec04211020012802e804211420012802f0042100200342003703002001420037032041eefbc5004110200141206a1008200f20032903003703002001200129032037038803200141003602f003200142013703e8032000200141e8036a10b40102402000450d002014200041286c6a210e2014210303402003200141e8036a108f01200341206a29030021020240024020012802ec03220f20012802f00322006b4108490d0020012802e803210f0c010b200041086a220c2000490d1c200f4101742200200c2000200c4b1b22004100480d1c02400240200f0d0020001028210f0c010b20012802e803200f2000102c210f0b200f450d0d200120003602ec032001200f3602e80320012802f00321000b2001200041086a3602f003200f20006a2002370000200e200341286a2203470d000b0b20012802ec03210020014188036a411020012802e803220320012802f003100702402000450d002003102a0b02402010450d002014102a0b200442017c22022004540d0b200141206a41086a220042003703002001420037032041adfcc5004113200141206a100820014188036a41086a20002903003703002001200129032037038803200141e8036a20014188036a10ef0220012d00e803210020014188026a41186a220320014181046a29000037030020014188026a41106a220f200141f9036a29000037030020014188026a41086a220c200141f1036a290000370300200120012900e903370388020240024020004101460d00200141a0016a41186a4200370300200141a0016a41106a4200370300200141a0016a41086a4200370300200142003703a0010c010b200141a0016a41186a2003290300370300200141a0016a41106a200f290300370300200141a0016a41086a200c29030037030020012001290388023703a0010b200141206a41086a220042003703002001420037032041c0fcc5004111200141206a100820014188036a41086a2000290300370300200120012903203703880341002112200141003602e80320014188036a4110200141e8036a10062100024020012802e8032203417f460d002000450d0020034104490d0d200028000021122000102a0b200141206a41086a220042003703002001420037032041c0fcc5004111200141206a100820014188036a41086a20002903003703002001200129032037038803200141003602e80320014188036a4110200141e8036a41041007200141206a41186a200141a0016a41186a290300370300200141206a41106a200141a0016a41106a2903003703002000200141a0016a41086a290300370300200120012903a001370320417f201241016a220020002012491b410d74412872220b417f4c0d01200b10282208450d0d2008200129032037000020082002370020200841186a200141206a41186a290300370000200841106a200141206a41106a290300370000200841086a200141206a41086a2903003700004128211341002103410021004100211102400240024003400240024002400240024002402000450d00200f200c470d010b03402000210c200320124f0d02411610282200450d182000410e6a41002900dffc45370000200041086a41002900d9fc45370000200041002900d1fc4537000020004116412c102c2200450d192000200336001620014188026a41186a220f420037030020014188026a41106a220e420037030020014188026a41086a2214420037030020014200370388022000411a20014188026a100020014188036a41186a200f29030037030020014188036a41106a200e29030037030020014188036a41086a20142903003703002001200129038802370388032000102a200141003602a80220014188036a4120200141a8026a1006210e0240024020012802a802220f417f470d0041012100420021020c010b2001200f36028c022001200e36028802200141a8026a20014188026a107320012802a8022200450d1b20012902ac0221020240200f450d00200e102a0b20014188036a412010090b20002002422088a74105746a210f0240200c450d002010450d002011102a0b200341016a21032002a7211020002111200f2000460d000b200021112000210c0b200c41086a2900002102200c41106a2900002104200c2900002105200141e8036a41186a200c41186a290000221f370300200141e8036a41106a2004370300200141e8036a41086a2002370300200120053703e80320014188036a41186a2214201f37030020014188036a41106a2217200437030020014188036a41086a221820023703002001200537038803200b20136b411f4b0d03201341206a220e2013490d21200b410174220d200e200d200e4b1b220e4100480d21200b0d01200e102821080c020b0240200c450d002010450d002000102a0b20014188026a41186a2203420037030020014188026a41106a220f420037030020014188026a41086a220c420037030020014200370388022008201320014188026a1000200141e8036a41186a22142003290300370300200141e8036a41106a2210200f290300370300200141e8036a41086a2211200c29030037030020012001290388023703e8030240200b450d002008102a0b200141206a41086a220042003703002001420037032041adfcc5004113200141206a100820014188036a41086a220e2000290300370300200120012903203703880320014110360224200120014188036a360220200141e8036a200141206a10f002200141a8026a41186a200141a0016a41186a2903002202370300200141a8026a41106a200141a0016a41106a2903002204370300200141a8026a41086a200141a0016a41086a2903002205370300200120012903a001221f3703a8022014200237030020102004370300201120053703002001201f3703e8032000420037030020014200370320419efcc500410f200141206a1008200e2000290300370300200120012903203703880320014110360224200120014188036a360220200141e8036a200141206a10f002200141f8046a20194194b9c200108801200042003703002001420037032041adfcc5004113200141206a1008200e20002903003703002001200129032037038803200141e8036a20014188036a10ef0220012d00e8032100200320014181046a290000370300200f200141f9036a290000370300200c200141f1036a290000370300200120012900e9033703880220004101460d05200141a0036a420037030020014198036a420037030020014190036a420037030020014200370388030c060b2008200b200e102c21080b2008450d02200e210b0b200c41206a210c200820136a220e200129038803370000200e41186a2014290300370000200e41106a2017290300370000200e41086a2018290300370000201341206a21130c000b0b200e41011037000b20014188036a41186a20014188026a41186a29030037030020014188036a41106a20014188026a41106a29030037030020014188036a41086a20014188026a41086a2903003703002001200129038802370388030b200141206a41086a2200200141f8046a41086a280200360200200141206a41246a20014188036a41186a290300370200200141206a411c6a20014188036a41106a290300370200200141206a41146a20014188036a41086a290300370200200120012903f8042202370320200120012903880337022c20014194046a200141206a41286a280200360200200141e8036a41246a200141c0006a290300370200200141e8036a411c6a200141206a41186a290300370200200141e8036a41146a200141206a41106a290300370200200141f4036a220f2000290300370200200120023702ec03200141003602e803200141003602a801200142013703a001410110282200450d11200141013602a401200120012802a801220341016a3602a801200120003602a001200020036a41013a000020012802ec032103200f2802002200200141a0016a10b40102402000450d002003200041286c6a210e03402003200141a0016a108f01200341206a29030021020240024020012802a401220f20012802a80122006b4108490d0020012802a001210f0c010b200041086a220c2000490d1c200f4101742200200c2000200c4b1b22004100480d1c02400240200f0d0020001028210f0c010b20012802a001200f2000102c210f0b200f450d15200120003602a4012001200f3602a00120012802a80121000b2001200041086a3602a801200f20006a2002370000200e200341286a2203470d000b0b200141f8036a200141a0016a10f10220014193026a200141a0016a41086a280200360000200120012903a0012202370388052001200237008b02200141ac016a2001418f026a290000370000200141c28289aa043600a101200141023a00a00120012001290088023700a501200141a0016a10ce01024020012802e8030d00200141e8036a41086a280200450d0020012802ec03102a0b410810282203450d13200320073602042003201536020041081028220f450d14200f201a360204200f201636020010fb01210c411b10282200450d15200041176a41002800d89646360000200041106a41002900d19646370000200041086a41002900c99646370000200041002900c196463700002000411b4136102c2200450d162000200c36001b20014188026a41186a220c420037030020014188026a41106a220e420037030020014188026a41086a2214420037030020014200370388022000411f20014188026a100020014188036a41186a200c29030037030020014188036a41106a200e29030037030020014188036a41086a220c20142903003703002001200129038802370388032000102a20014188036a4120100e109801210e200141206a41086a2200420037030020014200370320419be1c0004111200141206a1008200c200029030037030020012001290320370388032001200e3602e80320014188036a4110200141e8036a41041007200141a0016a200341a0bbc200108301200042003703002001420037032041c2e1c000410d200141206a1008200c2000290300370300200120012903203703880320012802a001210c20012802a8012100200141003602f003200142013703e8032000200141e8036a10b40102402000450d0020004105742103200c210003402000200141e8036a108f01200041206a2100200341606a22030d000b0b20012802ec03210020014188036a411020012802e803220320012802f003100702402000450d002003102a0b024020012802a401450d00200c102a0b200f102a410810282200450d172000201a36020420002016360200200141a0016a200041acbdc200108301200141206a41086a2200420037030020014200370320419695c4004117200141206a1008200141e8036a41086a2000290300370300200120012903203703e80320012802a001210f20012802a801210020014100360228200142013703202000200141206a10b40102402000450d0020004105742103200f210003402000200141206a108f01200041206a2100200341606a22030d000b0b20012802242100200141e8036a4110200128022022032001280228100702402000450d002003102a0b024020012802a401450d00200f102a0b02402021450d002016102a0b02402020201e45720d002001280214450d00201e102a0b0240201d450d00201c102a0b201ba7450d002015102a0b200141a0056a24000f0b1036000b41c4d1c300413320014198056a419cd9c3001038000b41c4d1c300413320014198056a419cd9c3001038000b411c41011037000b413841011037000b410841041037000b410841041037000b41c4d1c300413320014198056a419cd9c3001038000b41c0c7c20041c9001050000b200041011037000b41c0c7c20041c9001050000b41c4d1c300413320014198056a419cd9c3001038000b200b41011037000b411641011037000b412c41011037000b41c4d1c300413320014198056a419cd9c3001038000b410141011037000b200041011037000b410841041037000b410841041037000b411b41011037000b413641011037000b410841041037000b41c4d1c300413320014198056a419cd9c3001038000b1031000bd11906047f017e037f027e027f037e23004190046b22002400200041e8036a41086a22014200370300200042003703e80341e7fcc5004110200041e8036a100820004188036a41086a2001290300370300200020002903e80337038803200041e0016a20004188036a109a03024002400240024002400240024020002d00e0014102470d00200041e0016a41086a22024200370300200042003703e00141b1f0c200410d200041e0016a100820012002290300370300200020002903e0013703e803200041003602e001200041e8036a4110200041e0016a1006210102400240024002400240024020002802e0012202417f460d002001450d002000200236027420002001360270200041e0016a200041f0006a107620002802e0012203450d0220002902e40121042002450d012001102a0c010b41042103420021040b20032004422088a7220541246c22066a2102200321010240200641ed00490d00200321010340024020012d00004101470d00200141016a2800002106200141086a28020021072000200141106a28020036020c20002007360208200641c28289aa04470d00200041e0016a200041086a10ba0220002d00e00122074102460d00200041e0016a2101200041f0006a21020c050b0240200141246a2d00004101470d00200141256a28000021062001412c6a28020021072000200141346a28020036020c20002007360208200641c28289aa04470d00200041e0016a200041086a10ba0220002d00e00122074102460d00200041e0016a2101200041f0006a21020c050b0240200141c8006a2d00004101470d00200141c9006a2800002106200141d0006a28020021072000200141d8006a28020036020c20002007360208200641c28289aa04470d00200041e0016a200041086a10ba0220002d00e00122074102460d00200041e0016a2101200041f0006a21020c050b0240200141ec006a2d00004101470d00200141ed006a2800002106200141f4006a28020021072000200141fc006a28020036020c20002007360208200641c28289aa04470d00200041e0016a200041086a10ba0220002d00e00122074102460d00200041e0016a2101200041f0006a21020c050b200220014190016a22016b41ec004b0d000b0b20012002460d012003200541246c6a21020340024020012d00004101470d00200141016a2800002106200141086a28020021072000200141106a28020036020c20002007360208200641c28289aa04470d00200041e0016a200041086a10ba0220002d00e00122074102460d00200041e0016a2101200041f0006a21020c040b2002200141246a2201460d020c000b0b41c4d1c3004133200041e8026a419cd9c3001038000b410221070c010b20002002200141016a41ef00109a0522012800003602602000200141036a28000036006320002900772108200041086a200041ff006a41d800109a051a20002900d70121090b02402005450d00200541246c21022003210103400240024020012d0000220641034b0d0002400240024020060e0404000102040b2001410c6a280200450d03200141086a280200102a0c030b2001410c6a280200450d02200141086a280200102a0c020b2001410c6a280200450d01200141086a280200102a0c010b200141086a280200450d00200141046a280200102a0b200141246a21012002415c6a22020d000b0b02402004a7450d002003102a0b200020002802603602682000200028006336006b200041f0006a200041086a41d800109a051a41002101024020074102460d00200020002802683602e0022000200028006b3600e302200020083703d802200041e0016a200041f0006a41d800109a051a200020093703d002200041e8036a41086a22014200370300200042003703e80341fefbc5004110200041e8036a100820004188036a41086a2001290300370300200020002903e80337038803200041003602a80320004188036a4110200041a8036a100621010240024020002802a8032202417f460d002001450d0020024108490d04200129000021042001102a200450450d010b200041d8026a200041d0026a20074101461b2903002104200041e8036a41086a22014200370300200042003703e80341fefbc5004110200041e8036a100820004188036a41086a22022001290300370300200020002903e80337038803200020043703a80320004188036a4110200041a8036a4108100720014200370300200042003703e80341eefbc5004110200041e8036a100820022001290300370300200020002903e8033703880341002101200041003602a80320004188036a4110200041a8036a100621060240024020002802a8032202417f470d000c010b200020023602ec03200020063602e803200041a8036a200041e8036a107720002802a8032201450d0520002902ac0321042002450d002006102a0b200041e8036a41086a22024200370300200042003703e803419efcc500410f200041e8036a100820004188036a41086a22062002290300370300200020002903e80337038803200041a8036a20004188036a10ef0220002d00a8032103200041e8036a41186a220a200041c1036a290000370300200041e8036a41106a220b200041b9036a2900003703002002200041b1036a290000370300200020002900a9033703e8032001410820011b21050240024020034101460d0020004188036a41186a420037030020004188036a41106a42003703002006420037030020004200370388030c010b20004188036a41186a200a29030037030020004188036a41106a200b29030037030020062002290300370300200020002903e803370388030b200041e8026a41086a20004188036a41086a2903002209370300200041e8026a41106a20004188036a41106a290300220c370300200041e8026a41186a20004188036a41186a290300220d3703002000200029038803220e3703e802200041a8036a41086a2004420020011b370300200041a8036a41106a220a200e370300200041a8036a41186a2009370300200041c8036a200c370300200041a8036a41286a200d370300200020053602ac03200041003602a803200041003602f003200042013703e803410110282201450d05200041013602ec03200020002802f003220241016a3602f003200020013602e803200120026a41013a000020002802ac032102200041a8036a410c6a2802002201200041e8036a10b40102402001450d002002200141286c6a210503402002200041e8036a108f01200241206a29030021040240024020002802ec03220620002802f00322016b4108490d0020002802e80321060c010b200141086a22032001490d0a200641017422012003200120034b1b22014100480d0a0240024020060d002001102821060c010b20002802e80320062001102c21060b2006450d09200020013602ec03200020063602e80320002802f00321010b2000200141086a3602f003200620016a20043700002005200241286a2202470d000b0b200a200041e8036a10f10220004193036a200041f0036a280200360000200020002903e80322043703d8032000200437008b03200041e8036a410c6a2000418f036a290000370000200041c28289aa043600e903200041023a00e80320002000290088033700ed03200041e8036a10ce0120002802a8030d0020002802b003450d0020002802ac03102a0b200041d8026a200041d0026a20074101461b2903002104200041e8036a41086a22014200370300200042003703e803418efcc5004110200041e8036a100820004188036a41086a2001290300370300200020002903e80337038803200020043703a80320004188036a4110200041a8036a410810074100210120070d00200041a8036a41086a200041e0016a41086a290300370300200041a8036a41106a200041e0016a41106a2d00003a0000200020002800e3023600eb02200020002802e0023602e802200020002903e0013703a803410121010b200041e0016a41086a2008370300200041e0016a41106a20002903a803370300200041f8016a200041a8036a41086a29030037030020004180026a200041a8036a41106a2d00003a0000200020013a00e001200020002802e8023600e101200020002800eb023600e401200041e8036a41086a22024200370300200042003703e80341e7fcc5004110200041e8036a100820004188036a41086a2002290300370300200020002903e80337038803410110282202450d0620004201370274200020023602700240024020010d0020004101360278200241003a00000c010b20004101360278200241013a0000200041e0016a410172200041f0006a10f1020b2000280274210120004188036a411020002802702202200028027810072001450d002002102a0b20004190046a24000f0b41c4d1c3004133200041e8026a419cd9c3001038000b41c4d1c3004133200041e8026a419cd9c3001038000b410141011037000b200141011037000b1031000b410141011037000bec0501057f23004190016b2202240002400240410f10282203450d00200341002900edae44370000200341076a41002900f4ae443700002002428f808080f001370214200220033602102001200241106a108f012002280218210320022802102101200241e0006a41186a22044200370300200241e0006a41106a22054200370300200241e0006a41086a220642003703002002420037036020012003200241e0006a1000200241306a41186a2004290300370300200241306a41106a2005290300370300200241306a41086a20062903003703002002200229036037033002402002280214450d002002280210102a0b20024100360260200241306a4120200241e0006a100621040240024020022802602201417f470d00410021030c010b2002200136025420022004360250200241e0006a200241d0006a10d4012002280280012203450d02200241106a41186a200241e0006a41186a290300370300200241106a41106a200241e0006a41106a290300370300200241106a41086a200241e0006a41086a290300370300200241086a2002418c016a2802003602002002200229036037031020022002290284013703002001450d002004102a0b200241e0006a41086a2201200241106a41086a290300370300200241e0006a41106a2204200241106a41106a290300370300200241e0006a41186a2205200241106a41186a290300370300200241d0006a41086a2206200241086a2802003602002002200229031037036020022002290300370350024002402003450d002000200229036037030020002003360220200041246a2002290350370200200041186a2005290300370300200041106a2004290300370300200041086a20012903003703002000412c6a20062802003602000c010b2000420037030020004208370320200041186a4200370300200041106a4200370300200041086a4200370300200041286a41003602000b20024190016a24000f0b410f41011037000b41c4d1c3004133200241106a419cd9c3001038000b84fc0111067f017e037f017e027f017e047f017e037f017e017f0a7e017f027e017f0a7e2a7f230041a0196b22022400200241e00e6a41086a22034200370300200242003703e00e41cd9cc6004123200241e00e6a1008200241900f6a41086a2003290300370300200220022903e00e3703900f41002104200241003602f011200241900f6a4110200241f0116a10062103024002400240024002400240024002400240024020022802f0112205417f460d002003450d0020054104490d01200328000021042003102a0b2001417f6a2106200241e00e6a41086a22034200370300200242003703e00e418e9dc6004110200241e00e6a1008200241900f6a41086a2003290300370300200220022903e00e3703900f200241003602f011200241900f6a4110200241f0116a1006210302400240024020022802f0112201417f460d002003450d002001450d0220032d0000220141034f0d022003102a200141014b0d06024020010e020100010b200241e00e6a41086a22034200370300200242003703e00e418e9dc6004110200241e00e6a1008200241900f6a41086a2003290300370300200220022903e00e3703900f200241900f6a411010090c010b200620046b220320064b0d0520034106490d050b200241f0116a41086a22034200370300200242003703f01141c785c2004112200241f0116a1008200241e00e6a41086a2003290300370300200220022903f0113703e00e200241003602f011200241e00e6a4110200241f0116a1006210302400240024020022802f0112204417f460d002003450d00200220043602940f200220033602900f200241f0116a200241900f6a106d20022802f0112207450d0220022902f41121082004450d012003102a0c010b41012107420021080b410021090240024002402008422088a7220341057422010d004108210a4100210b0c010b2001410575220bad42d0007e220c422088a70d0c200ca722044100480d0c20041028220a450d010b2008a7210d02402003450d00200141606a210e200241f0116a41206a2103200a2105200721040340200441086a2900002108200441106a290000210c2004290000210f200241e00e6a41186a2210200441186a290000370300200241e00e6a41106a2211200c370300200241e00e6a41086a221220083703002002200f3703e00e200241900f6a200241e00e6a10ec02200241f0116a41186a2010290300370300200241f0116a41106a2011290300370300200241f0116a41086a2012290300370300200320022903900f370300200341086a200241900f6a41086a290300370300200341106a200241900f6a41106a290300370300200341186a200241900f6a41186a290300370300200341206a200241900f6a41206a290300370300200341286a200241900f6a41286a290300370300200220022903e00e3703f0112005200241f0116a41d000109a0541d0006a2105200441206a2104200141606a22010d000b200e41057641016a21090b0240200d450d002007102a0b200241e00e6a41086a22034200370300200242003703e00e41f09cc600411e200241e00e6a1008200241900f6a41086a22042003290300370300200220022903e00e3703900f200241f0116a200241900f6a10de030240024020022802f41122130d004104211342002114410021110c010b200241900f6a4110100920022802f011211120022903f81121140b10a003210820034200370300200242003703e00e41feadc4004117200241e00e6a100820042003290300370300200220022903e00e3703900f200241003602f011200241900f6a4110200241f0116a1006210302400240024020022802f0112204417f470d004200210c0c010b024020030d004200210c0c010b20044108490d012003290000210c2003102a0b200241e00e6a41086a22154200370300200242003703e00e41feadc4004117200241e00e6a1008200241900f6a41086a22162015290300370300200220022903e00e3703900f200220083703f011200241900f6a4110200241f0116a41081007410021172008200c7d2218500d0620154200370300200242003703e00e41a5afc4004116200241e00e6a100820162015290300370300200220022903e00e3703900f200241003602f011200241900f6a4110200241f0116a1006210302400240024020022802f0112204417f460d002003450d00200220043602e40e200220033602e00e200241f0116a200241e00e6a106d20022802f0112219450d0220022902f411211a02402004450d002003102a0b201a422088a721040c010b410021044200211a410121190b4200210c200241e00e6a41086a22034200370300200242003703e00e4199fec4004111200241e00e6a1008200241900f6a41086a2003290300370300200220022903e00e3703900f200241003602f011200241900f6a4110200241f0116a1006210302400240024020022802f0112201417f470d004200210c4200211b0c010b024020030d004200211b0c010b20014110490d01200341086a290000211b2003290000210c2003102a0b200241800c6a10a102200241f00b6a20022903800c220f200241800c6a41086a2903002208428094ebdc03420010a005200241d00b6a200c201b2004ad4200109f05200241e00b6a20022903f00b221b200241f00b6a41086a290300221c4280ec94a37c427f109f052008200241d00b6a41086a290300221d20022903d00b221e200f56201d200856201d2008511b22031b2108200f201e20031b210c2018428086ebc7f5002018428086ebc7f500541b421f8042ffffffff0f83428094ebdc037e429880b5e50380211f200f20022903e00b7c210f410021034184c9c0002104024002400340024041accbc00020046b41184b0d000240200441accbc000460d000340200241c00b6a201b201c200435020022184200109f052003200c20022903c00b22202018200f7e428094ebdc038042ffffffff0f837c22185a2008200241c00b6a41086a2903002018202054ad7c22205a200820205122011b6a2103200c201854200820205420011b0d0441accbc000200441086a2204470d000b0b200241b00b6a201b201c42e8aafa0b4200109f05200241b80b6a29030020022903b00b220c200f42e8aafa0b7e428094ebdc038042ffffffff0f837c2208200c54ad7c210c0c030b200241a00b6a201b201c200435020022184200109f052003200c20022903a00b22202018200f7e428094ebdc038042ffffffff0f837c22185a2008200241a00b6a41086a2903002018202054ad7c22205a200820205122011b6a2103200c201854200820205420011b0d01200241900b6a201b201c200441086a35020022184200109f052003200c20022903900b22202018200f7e428094ebdc038042ffffffff0f837c22185a2008200241900b6a41086a2903002018202054ad7c22205a200820205122011b6a2103200c201854200820205420011b0d01200241800b6a201b201c200441106a35020022184200109f052003200c20022903800b22202018200f7e428094ebdc038042ffffffff0f837c22185a2008200241800b6a41086a2903002018202054ad7c22205a200820205122011b6a2103200c201854200820205420011b0d01200241f00a6a201b201c200441186a35020022184200109f052003200c20022903f00a22202018200f7e428094ebdc038042ffffffff0f837c22185a2008200241f00a6a41086a2903002018202054ad7c22205a200820205122011b6a2103200441206a2104200c201854200820205420011b450d000b0b02402003417f6a220420034d0d00200241f0096a201b201c42c0f0f50b4200109f05200241f8096a29030020022903f009220c200f42288042ffffffff0f837c2208200c54ad7c210c0c010b02400240200441244b0d00200241e00a6a201b201c200441037422014184c9c0006a2802002205ad22184200109f05200241c00a6a200c20022903e00a22202018200f7e428094ebdc038042ffffffff0f837c2218200c2018562008200241e00a6a41086a2903002018202054ad7c22205620082020511b22041b22212018200c20041b220c7d22182008202020041b2020200820041b7d2021200c54ad7d4100200341037422104184c9c0006a280200220320056b2205200520034b1b22034101200341014b1bad2208420010a005200241b00a6a20022903c00a220c200241c00a6a41086a290300222020084200109f05200241d00a6a201b201c20014188c9c0006a2802002203ad22214200109f05200241800a6a2020420020104188c9c0006a28020022012003200120034b22051b2003200120051b6bad221b4200109f05200241a00a6a200c4200201b4200109f05200241900a6a42004200200c4200109f05427f427f200241a00a6a41086a290300220c20022903800a20022903900a7c7c221c20022903880a20022903980a84420052201c200c547222051b221c427f20022903a00a20051b220c201820022903b00a7d201b7e2008807c2208200c542205ad7c221b2005201b201c542008200c5a1b22051b211c427f200820051b211b200241d00a6a41086a29030020022903d00a22082021200f7e428094ebdc038042ffffffff0f837c220c200854ad7c21082004200120034d730d0142002008201c7d200c201b54ad7d220f200c201b7d221b200c56200f200856200f2008511b22031b210c4200201b20031b21080c020b41acd9c300200441251034000b427f2008201c7c200c201b7c220f200c542203ad7c220c2003200c200854200c2008511b22031b210c427f200f20031b21080b42002122200241e0096a2008200c428094ebdc03420010a005200241d0096a20022903e009220c200241e0096a41086a290300220f4280ec94a37c427f109f05200241c0096a200c200f201f4200109f05201f200820022903d0097c7e428094ebdc038021080240201a422088a722030d00420021230c080b20132014422088a74102746a210e201920034105746a2124200241c0096a41086a29030020022903c009220c200842ffffffff0f837c2225200c54ad7c2126200241f0116a41086a2127200241900f6a41086a21122011ad21284200212242002123201321052019211003402005200e460d08024020052802002203450d00024002400240024002402011450d00200241b0096a202520262028420010a005200241a0096a20022903b0092208200241b0096a41086a290300220c20284200109f0520024190096a2008200c20112003200320114b1bad220f4200109f05202520022903a0097d200f7e2028802108200229039009210f20024190096a41086a290300211c411210282203450d01200341002900c1ae44370000200341106a41002f00d1ae443b0000200341086a41002900c9ae4437000020024292808080a0023702f411200220033602f0112010200241f0116a108f0120022802f811210320022802f0112104200241900c6a41186a22014200370300200241900c6a41106a22074200370300200241900c6a41086a220d4200370300200242003703900c20042003200241900c6a1000200241c00d6a41186a2001290300370300200241c00d6a41106a2007290300370300200241c00d6a41086a200d290300370300200220022903900c3703c00d024020022802f411450d0020022802f011102a0b200241003602f011200241c00d6a4120200241f0116a1006210320022802f0112204417f460d032003450d03200220043602f411200220033602f011200241f8086a200241f0116a109f0120022903f808a70d02200241f8086a41106a290300210c200229038009211b2004450d042003102a0c040b41acfec4001032000b411241011037000b41c4d1c300413320024198196a419cd9c3001038000b4200211b4200210c0b0240024002400240024002400240200f200842ffffffff0f837c2208201b2008201b200854200c201c2008200f54ad7c220f54200c200f511b22031b22297d222a200f200c200f20031b222b7d2008202954ad7d222c8450450d004200211f4200211c420021084200210c0c010b200241f0116a201010ec0220272903002208420020022903f011220c42015620084200522008501b22031b2108200c420120031b210f20022802901221070240024020022802981222030d004200211f200241f0076a200f2008428094ebdc03420010a005200241f0076a41086a290300212d20022903f007212e4200211c0c010b2007200341306c6a21014200211f200241e8086a200f2008428094ebdc03420010a005200241c8086a202a202c428094ebdc03420010a005200241d8086a202a202c428094ebdc03420010a105200241e8086a41086a290300222d420020022903e808222e420156202d420052202d501b22031b2118202e420120031b2120200241c8086a41086a290300212f20022903c808213020022903d80821314200211c200721030340200241b8086a200f2003290300220c200c200f56200341086a290300220c200856200c2008511b22041b2008200c20041b2020201810a00520022903b808221b428080808010544100200241b8086a41086a290300501b450d03200241a8086a200f20082020201810a00520022903a808220c428080808010544100200241a8086a41086a290300501b450d04024002400240200ca7450d0020024180086a2030202f201b42ffffffff0f83428094ebdc037e200c42ffffffff0f838042ffffffff0f83220c4200109f0520024190086a200341106a2203200229038008221b200c20317e428094ebdc038042ffffffff0f837c220c20024180086a41086a290300200c201b54ad7c10b404200229039008210c200229039808211b200241900f6a41106a20024190086a41106a29030022213703002002201b3703980f2002200c3703900f0240200ca74101470d00427f201c20217c201f201b7c221b201f542204ad7c220c2004200c201c54200c201c511b22041b211c427f201b20041b211f0c030b200c4201510d010c020b41acaac3001032000b200220123602e00e200241e00e6a109c010b200341206a22032001470d000b0b200241e0076a200f200229038012220c200c200f56200241f0116a41186a290300220c200856200c2008511b22031b2008200c20031b202e4201202e420156202d420052202d501b22031b220c202d420020031b221b10a00520022903e0072218428080808010544100200241e0076a41086a290300501b450d01200241d0076a200f2008200c201b10a00520022903d0072208428080808010544100200241d0076a41086a290300501b450d022008a7450d03200241c0076a202a202c428094ebdc03420010a005200241b0076a20022903c007220c200241c0076a41086a290300220f4280ec94a37c427f109f05200241a0076a200c200f201842ffffffff0f83428094ebdc037e200842ffffffff0f838042ffffffff0f8322084200109f0520022903a007220c2008202a20022903b0077c7e428094ebdc038042ffffffff0f837c2208200c54ad210c200241a0076a41086a290300210f0240200228029412450d002007102a0b200f200c7c210c0b20024188076a2010200820297c220f200c202b7c200f200854ad7c10b4042002290388072108200229039007210c200241f0116a41106a20024188076a41106a290300220f3703002002200c3703f811200220083703f01102402008a74101470d00427f201c200f7c201f200c7c220c201f542203ad7c220820032008201c542008201c511b22031b211c427f200c20031b211f0c050b20084201510d030c040b10d101000b10d201000b41acaac3001032000b200220273602900f200241900f6a109c010b427f2023201c7c2022201f7c220c2022542203ad7c22082003200820235420082023511b22031b2123427f200c20031b21220b200541046a2105201041206a22102024470d000c080b0b41c4d1c300413320024198196a419cd9c3001038000b41c4d1c300413320024198196a419cd9c3001038000b41c4d1c300413320024198196a419cd9c3001038000b200441081037000b41c4d1c300413320024198196a419cd9c3001038000b41c4d1c300413320024198196a419cd9c3001038000b41c4d1c300413320024198196a419cd9c3001038000b02402014a7450d002013102a0b20024188126a202337030020024180126a2022370300200241f8116a41003a0000200241033a00f0114101211741014100200241f0116a10cc01200220233703f811200220223703f0112002200241f0116a3602900f200241900f6a109c0102402022202384500d00201e201d84500d00200241f8066a10a10220022903f8062208201e7d220f200856200241f8066a41086a290300220c201d7d2008201e54ad7d2208200c562008200c511b0d00200241e8066a200f2008201e201d10a005200241b8066a200241e8066a41086a2903002208420020224200109f05200241c8066a2023420020022903e806220c4200109f05200241d8066a200c420020224200109f05200842005220234200527120022903c0064200527220022903d00642005272200241d8066a41086a290300220820022903b80620022903c8067c7c220f200854720d0020022903d806211b200241e00e6a41086a22034200370300200242003703e00e41ace1c0004116200241e00e6a1008200241900f6a41086a2003290300370300200220022903e00e3703900f200241003602f011200241900f6a4110200241f0116a100621030240024020022802f0112204417f460d002003450d00024020044110490d00200341086a290000210c200329000021082003102a0c020b41c4d1c300413320024198196a419cd9c3001038000b420021084200210c0b200241e00e6a41086a22034200370300200242003703e00e41ace1c0004116200241e00e6a1008200241900f6a41086a22042003290300370300200220022903e00e3703900f2002427f200c200f7c2008201b7c22182008542203ad7c221c2003201c200c54201c200c511b22031b3703f8112002427f201820031b3703f011200241900f6a4110200241f0116a41101007200241f0116a10d301200241a8066a200241f0116a2008427f85201b20031b2208200c427f85200f20031b220c10d001200241900f6a41106a200c200241a8066a41086a290300221b7d200820022903a806220f54ad7d201b200c7d200f200854ad7d200f200858201b200c58201b200c5122031b22011b37030020022008200f7d200f20087d20011b3703980f2002200f200856201b200c5620031b2203ad3703900f024020030d00200220043602e00e200241e00e6a109d010c010b200220043602e00e200241e00e6a109c010b201aa7450d002019102a0b20154200370300200242003703e00e41bb9cc6004112200241e00e6a100820162015290300370300200220022903e00e3703900f200241003602f011200241900f6a4110200241f0116a10062103024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022802f0112204417f470d00410021270c010b024020030d00410021270c010b20044104490d01200328000021272003102a0b200241e00e6a41086a22034200370300200242003703e00e41bb9cc6004112200241e00e6a1008200241900f6a41086a2003290300370300200220022903e00e3703900f2002202741016a22163602f011200241900f6a4110200241f0116a41041007411710282203450d012003410f6a41002900d3fe44370000200341086a41002900ccfe44370000200341002900c4fe4437000020034117412e102c2203450d0220032027360017200241900c6a41186a22044200370300200241900c6a41106a22014200370300200241900c6a41086a22054200370300200242003703900c2003411b200241900c6a1000200241c00d6a41186a2004290300370300200241c00d6a41106a2001290300370300200241c00d6a41086a2005290300370300200220022903900c3703c00d2003102a200241c00d6a41201009200241e00e6a41086a22034200370300200242003703e00e41cd9cc6004123200241e00e6a1008200241900f6a41086a2003290300370300200220022903e00e3703900f200241003602f011200241900f6a4110200241f0116a10062103024020022802f0112204417f460d002003450d00200441034d0d042003102a0b200241e00e6a41086a22154200370300200242003703e00e41cd9cc6004123200241e00e6a1008200241900f6a41086a22192015290300370300200220022903e00e3703900f200220063602f011200241900f6a4110200241f0116a41041007201641a105490d0920154200370300200242003703e00e41b99dc6004112200241e00e6a100820192015290300370300200220022903e00e3703900f41002112200241003602f011200241900f6a4110200241f0116a100621320240024020022802f0112233417f470d000c010b024020320d000c010b200220333602f411200220323602f011200241a0066a200241f0116a106c20022802a0060d2e20022802f41122104178712203417f4c0d2020022802a406210e02400240201041037622070d00410421120c010b200310282212450d060b0240200e450d004100211141002105410021010340200241003602e00e02400240024020104104490d0020022010417c6a22103602f411200220022802f011220341046a3602f0112003280000210d200241003602e00e20104104490d00200141016a210420022010417c6a22103602f4112002200341086a3602f0112003280004210320012007470d0220112004201120044b1b220741ffffffff01712007470d342007410374222441004e0d010c340b2007450d322012102a0c320b0240024020010d002024102821120c010b201220052024102c21120b2012450d090b201220056a2201200d360200200141046a2003360200201141026a2111200541086a210520042101200e2004470d000b0b2012450d2e200ead4220862007ad8421082033450d002032102a0b2012410420121b210e02402008420020121b2208422088220ca722032008a7470d00200341016a22042003490d2f200ca722054101742201200420042001491b220441ffffffff01712004470d2f200441037422014100480d2f0240024020030d0020011028210e0c010b200e20054103742001102c210e0b200e450d072008422088a721032004ad21080b202741e17a6a2104200e20034103746a2201200636020420012016360200200e200341016a22114103746a2110410021030240201141044f0d00200e21010c080b200e2105024003402005220128020020044f0d0a0240200141086a2802002004490d00200341016a21030c0b0b0240200141106a2802002004490d00200341026a21030c0b0b200141186a28020020044f0d01200341046a21032010200141206a22056b41184b0d000b200141206a21010c080b200341036a21030c080b41c4d1c300413320024198196a419cd9c3001038000b411741011037000b412e41011037000b41c4d1c300413320024198196a419cd9c3001038000b200341041037000b202441041037000b200141041037000b20012010460d00200e20114103746a21050340200128020020044f0d01200341016a21032005200141086a2201470d000b0b20112003490d01200842ffffffff0f8321080240201120036b2207450d0002402003450d00200e200e20034103746a2007410374109b051a0b200e280204210d200241e00e6a41086a22124200370300200242003703e00e418199c6004113200241e00e6a1008200241900f6a41086a22242012290300370300200220022903e00e3703900f200241f0116a200241900f6a411010c6024101210320022902f411210c0240024020022802f01122044101460d00200441014621030c010b200c422088a72206200d200d20064b1b2211200ca72204490d000240201120044d0d000340411a10282203450d06200341186a41002f00e0bb403b0000200341106a41002900d8bb40370000200341086a41002900d0bb40370000200341002900c8bb403700002003411a4134102c2203450d072003200436001a200241900c6a41186a22014200370300200241900c6a41106a22054200370300200241900c6a41086a22104200370300200242003703900c2003411e200241900c6a1000200241b00c6a41186a2001290300370300200241b00c6a41106a2005290300370300200241b00c6a41086a2010290300370300200220022903900c3703b00c2003102a200241b00c6a41201009200441016a2203210420112003470d000b0b200d2006492103200c428080808070832011ad84210c0b20124200370300200242003703e00e418199c6004113200241e00e6a100820242012290300370300200220022903e00e3703900f0240024020030d00200241900f6a411010090c010b410810282203450d062003200c422088a73600042003200ca7360000200241900f6a41102003410810072003102a0b20082007ad4220868421080b200241e00e6a41086a22034200370300200242003703e00e41b99dc6004112200241e00e6a1008200241900f6a41086a2003290300370300200220022903e00e3703900f0240200e0d00200241900f6a411010090c010b200241003602f811200242013703f0112008422088a72203200241f0116a10b4010240024020030d0020022802f811210320022802f411210120022802f01121040c010b200e20034103746a2106410020022802f81122116b210520022802f4112101410021030340201120036a2110200e20036a2212280200210702400240200120056a4104490d0020022802f01121040c010b201041046a22042010490d282001410174220d2004200d20044b1b220d4100480d280240024020010d00200d102821040c010b20022802f0112001200d102c21040b2004450d082002200d3602f411200220043602f011200d21010b2002201041046a220d3602f811200420116a20036a2007360000201241046a28020021070240200120056a417c6a41034b0d00200d41046a2224200d490d282001410174220d2024200d20244b1b220d4100480d280240024020010d00200d102821040c010b20042001200d102c21040b2004450d092002200d3602f411200220043602f011200d21010b2002201041086a3602f811200420116a20036a41046a2007360000200541786a2105200341086a2103201241086a2006470d000b201120036a21030b2008a72105200241900f6a411020042003100702402001450d002004102a0b2005450d00200e102a0b20154200370300200242003703e00e41889cc6004116200241e00e6a100820192015290300370300200220022903e00e3703900f41002134200241003602f011200241900f6a4110200241f0116a10062103024020022802f0112204417f460d002003450d0020044104490d07200328000021342003102a0b200241e00e6a41086a22034200370300200242003703e00e419e9cc600411d200241e00e6a1008200241900f6a41086a2003290300370300200220022903e00e3703900f200241003602f011200241900f6a4110200241f0116a10062103024002400240024020022802f0112204417f460d0020030d010b410421040c010b20044104490d09200328000021042003102a41012115200441014d0d010b200421150b200241900c6a41186a22034200370300200241900c6a41106a22044200370300200241900c6a41086a22014200370300200242003703900c41d3aec400411a200241900c6a1000200241f0116a41186a2003290300370300200241f0116a41106a2004290300370300200241f0116a41086a2001290300370300200220022903900c3703f011200241900e6a200241f0116a412010fd01200241e00e6a41206a200241900e6a41206a2d00003a0000200241e00e6a41186a200241900e6a41186a290300370300200241e00e6a41106a200241900e6a41106a290300370300200241e00e6a41086a200241900e6a41086a290300370300200220022903900e3703e00e200241f0116a200241e00e6a10ab010240024020022903f0114201510d004101211141002105410021060c010b200220022f01f8113b01e00c2002200229008b123703d00c2002200241fa116a2d00003a00e20c2002200241f0116a41206a2900003700d50c200241fb116a2800002103200241ff116a280000210420024183126a280000210120024187126a2800002105412010282211450d09201120022f01e00c3b00002011200536000f2011200136000b2011200436000720112003360003201120022903d00c370013201141026a20022d00e20c3a0000201141186a20022900d50c370000200241900f6a41206a200241e00e6a41206a2d00003a0000200241900f6a41186a200241e00e6a41186a290300370300200241900f6a41106a200241e00e6a41106a290300370300200241900f6a41086a200241e00e6a41086a290300370300200220022903e00e3703900f200241f0116a200241900f6a10ab0141012105024020022903f0114201510d00410121060c010b200241f0116a41086a2103410221104120210141012105410121060340200241b00c6a41186a200341186a2903002208370300200241b00c6a41106a200341106a290300220c370300200241b00c6a41086a200341086a290300220f37030020022003290300221b3703b00c200241900c6a41186a22122008370300200241900c6a41106a2207200c370300200241900c6a41086a220d200f3703002002201b3703900c024020052006470d00200541016a22042005490d2720102004201020044b1b220641ffffff3f712006470d27200641057422044100480d270240024020050d002004102821110c010b201120012004102c21110b2011450d110b201120016a220420022903900c370000200441186a2012290300370000200441106a2007290300370000200441086a200d290300370000201041026a2110200141206a2101200541016a2105200241f0116a200241900f6a10ab0120022903f0114201510d000b0b200241900c6a41186a22034200370300200241900c6a41106a22044200370300200241900c6a41086a22014200370300200242003703900c41a7aec400411a200241900c6a1000200241f0116a41186a2003290300370300200241f0116a41106a2004290300370300200241f0116a41086a2001290300370300200220022903900c3703f011200241e00d6a200241f0116a412010fd01200241900e6a41206a200241e00d6a41206a2d00003a0000200241900e6a41186a200241e00d6a41186a290300370300200241900e6a41106a200241e00d6a41106a290300370300200241900e6a41086a200241e00d6a41086a290300370300200220022903e00d3703900e200241f0116a200241900e6a10ad01024002402002280290120d004104213541002104410021360c010b412c10282235450d0a203520022903f011370200203541286a200241f0116a41286a2212280200360200203541206a200241f0116a41206a2207290300370200203541186a200241f0116a41186a220d290300370200203541106a200241f0116a41106a220e290300370200203541086a200241f0116a41086a2224290300370200200241e00e6a41206a200241900e6a41206a2d00003a0000200241e00e6a41186a200241900e6a41186a290300370300200241e00e6a41106a200241900e6a41106a290300370300200241e00e6a41086a200241900e6a41086a290300370300200220022903900e3703e00e200241900f6a200241e00e6a10ad01024020022802b00f0d0041012104410121360c010b41022110412c2101410121044101213603402012200241900f6a41286a2802003602002007200241900f6a41206a290300370300200d200241900f6a41186a290300370300200e200241900f6a41106a2903003703002024200241900f6a41086a290300370300200220022903900f3703f011024020042036470d00200441016a22032004490d2720102003201020034b1b2236ad422c7e2208422088a70d272008a722034100480d270240024020040d002003102821350c010b203520012003102c21350b2035450d0d0b203520016a220320022903f011370200200341286a2012280200360200200341206a2007290300370200200341186a200d290300370200200341106a200e290300370200200341086a2024290300370200201041026a21102001412c6a2101200441016a2104200241900f6a200241e00e6a10ad0120022802b00f0d000b0b200242003702ec0c200241f8b9c0003602e80c200420056a2201ad42d0007e2208422088a70d152008a72203417f4c0d150240024020030d00410821100c010b200310282210450d0c0b200241003602c80e200220013602c40e200220103602c00e200241900e6a41206a200241e80c6a360200200241003602a80e200241a40e6a20024198196a36020020022011200541057422016a220d36029c0e200220113602980e200220063602940e200220113602900e2002200241c00e6a3602ac0e200220024198196a3602a00e410221244101210e0240024020050d00201121030c010b4200211b2011210302400340200341086a2900002108200341106a290000210c2003290000210f200241f0116a41186a2205200341186a290000370300200241f0116a41106a2210200c370300200241f0116a41086a221220083703002002200f3703f01120024190066a200241f0116a10b004200241b00c6a41086a22072012290300370300200241b00c6a41106a22122010290300370300200241b00c6a41186a22102005290300370300200220022903f0113703b00c20024190066a41086a290300210c200229039006210f20024180066a10a102200241f0056a20022903800620024180066a41086a290300427f420010a005200241e0056a200f200c20022903f005220842012008420156200241f0056a41086a29030022084200522008501b22051b2008420020051b10a005200241900c6a41086a2007290300370300200241900c6a41106a2012290300370300200241900c6a41186a2010290300370300200220022903b00c3703900c20022903e005220850450d01200341206a2103200141606a22010d000b2002200d3602980e200d21030c010b200220022f01900c3b01e00c200220022d00920c3a00e20c200220022900a30c3703d00c200220022800f80c3602b80d2002200341206a22033602980e2002200241a80c6a2900003700d50c2002200241fb0c6a2800003600bb0d20022800930c210120022800970c2112200228009b0c2110200228009f0c2105200220022d00e20c3a00a20d200220022f01e00c3b01a00d200220022900d50c3700f511200220022903d00c3703f011200220022800bb0d3600c30d200220022802b80d3602c00d200220022d00a20d3a00aa0d200220022f01a00d3b01a80d200220022900f5113700e50e200220022903f0113703e00e200220022800c30d3600b30d200220022802c00d3602b00d4100210e410021240b200220022f01a80d3b01c00d200220022d00aa0d3a00c20d200220022903e00e3703f011200220022900e50e3700f511200220022802b00d3602a00d200220022800b30d3600a30d024002400240200e450d00200241023a00d00f0c010b200220022d00c20d3a009a0d200220022f01c00d3b01980d200220022903f0113703e00d200220022900f5113700e50d200220022802a00d3602880d200220022800a30d36008b0d200241013602a80e200220022d009a0d3a00960d200220022f01980d3b01940d200220022900e50d3700d50e200220022903e00d3703d00e20024190126a201b37030020024188126a200837030020024180126a4200370300200241a7126a2005360000200241a3126a20103600002002419f126a20123600002002419b126a2001360000200242003703f811200242003703f01120024198126a20022f01940d3b01002002419a126a20022d00960d3a0000200241f0116a41c8006a20243a0000200241ab126a20022903d00e370000200241b0126a20022900d50e370000200241bc126a200228008b0d360000200241b9126a20022802880d360000200241900f6a200241ac0e6a200241f0116a10fb0220022d00d00f4102470d010b02402003200d460d002002200d20036b41606a41607120036a41206a3602980e0b410021372006450d142011102a0c140b41c80010282238450d0c2038200241900f6a41c800109a051a200241e00e6a41086a200241900e6a41086a2903002208370300200241e00e6a41206a200241900e6a41206a280200360200200241e00e6a41186a200241900e6a41186a290300370300200241e00e6a41106a200241900e6a41106a290300370300200220022903900e3703e00e410121102008a7220320022802ec0e2201460d10200241b9126a210e200241fc0e6a21274200211b02400340200341086a2900002108200341106a290000210c2003290000210f200241f0116a41186a2205200341186a290000370300200241f0116a41106a2211200c370300200241f0116a41086a221220083703002002200f3703f011200241d0056a200241f0116a10b004200241b00c6a41086a22072012290300370300200241b00c6a41106a22122011290300370300200241b00c6a41186a22112005290300370300200220022903f0113703b00c200241d0056a41086a290300210c20022903d005210f200241c0056a10a102200241b0056a20022903c005200241c0056a41086a290300427f420010a005200241a0056a200f200c20022903b005220842012008420156200241b0056a41086a29030022084200522008501b22051b2008420020051b10a005200241900c6a41086a2007290300370300200241900c6a41106a2012290300370300200241900c6a41186a2011290300370300200220022903b00c3703900c20022903a005220850450d012001200341206a2203470d000b200220013602e80e200121030c110b200220022f01900c3b01e00c200220022d00920c3a00e20c200220022900a30c3703d00c200220022800f80c3602b80d2002200341206a22033602e80e2002200241900c6a41186a220d2900003700d50c2002200241f80c6a41036a22392800003600bb0d20022800930c211120022800970c2112200228009b0c2107200228009f0c2116200220022d00e20c3a008a0d200220022f01e00c3b01880d200220022900d50c3700e50d200220022903d00c3703e00d200220022800bb0d3600b30d200220022802b80d3602b00d20024198126a2124200241a30c6a213a20022802f80e2105200241f0116a410472220641086a2133200641106a213b200241ab126a223c41056a213d41012110410121370340200220022d008a0d22193a00aa0d200220022f01880d22323b01a80d200220022903e00d3703c00d200220022900e50d3700c50d200220022802b00d3602a00d200220022800b30d3600a30d200220193a00960d200220323b01940d2002200541016a22193602f80e200220022900c50d3700d50e200220022903c00d3703d00e200241f0116a41206a201b3703002006420037020020334200370200203b41003602002002200837038812200220053602f011202420022f01940d3b0100202441026a20022d00960d3a0000200220163600a712200220073600a3122002201236009f122002201136009b12203c20022903d00e370000203d20022900d50e370000200241003a00b812200e41036a20022800a30d360000200e20022802a00d360000200241900f6a2027200241f0116a10fb02024020022d00d00f4102470d00203821110c140b200241f0116a200241900f6a41c800109a051a024020372010470d00201041016a22052010490d26201041017422112005201120054b1b2237ad42c8007e2208422088a70d262008a722054100480d260240024020100d002005102821380c010b2038201041c8006c2005102c21380b2038450d0f0b2038201041c8006c6a200241f0116a41c800109a051a201041016a2110024020032001470d00200121030c130b02400340200241f0116a41186a2205200341186a290000370300200241f0116a41106a2211200341106a290000370300200241f0116a41086a2212200341086a290000370300200220032900003703f01120024190056a200241f0116a10b004200241b00c6a41086a22072012290300370300200241b00c6a41106a22122011290300370300200241b00c6a41186a22112005290300370300200220022903f0113703b00c20024190056a41086a290300210c200229039005210f20024180056a10a1024200211b200241f0046a20022903800520024180056a41086a290300427f420010a005200241e0046a200f200c20022903f004220842012008420156200241f0046a41086a29030022084200522008501b22051b2008420020051b10a005200241900c6a41086a2007290300370300200241900c6a41106a2012290300370300200d2011290300370300200220022903b00c3703900c20022903e004220850450d012001200341206a2203460d120c000b0b200220022f01900c3b01e00c200220022d00920c3a00e20c200220022800f80c3602b80d2002200341206a22033602e80e2002203a2900003703d00c2002203a41056a2900003700d50c200220392800003600bb0d20022800930c211120022800970c2112200228009b0c2107200228009f0c2116200220022d00e20c3a008a0d200220022f01e00c3b01880d200220022900d50c3700e50d200220022903d00c3703e00d200220022800bb0d3600b30d200220022802b80d3602b00d201921050c000b0b41e4e8c5001032000b411a41011037000b413441011037000b410841011037000b200d41011037000b200d41011037000b41c4d1c300413320024198196a419cd9c3001038000b41c4d1c300413320024198196a419cd9c3001038000b412041011037000b412c41041037000b200341041037000b200341081037000b41c80041081037000b200541081037000b200441011037000b200220013602e80e200121030c010b410121370b20382111200241023a00d00f0b024020032001460d002002200120036b41606a41607120036a41206a3602e80e0b20022802e40e450d0120022802e00e102a0c010b4108213841082111410021100b0240024002400240024002400240024020102015490d000240024020022802c40e220320022802c80e223d6b2004412c6c2201412c6d2205490d0020022802c00e21030c010b203d20056a2205203d490d18200341017422122005201220054b1b2205ad42d0007e2208422088a70d182008a722124100480d180240024020030d002012102821030c010b20022802c00e200341d0006c2012102c21030b2003450d02200220053602c40e200220033602c00e20022802c80e213d0b203520016a213e024020040d002035213b0c070b2003203d41d0006c6a2133203521030340200241c00d6a41186a2204200341186a290200370300200241c00d6a41106a2201200341106a290200370300200241c00d6a41086a2205200341086a290200370300200220032902003703c00d2003412c6a213b2003280220223c450d07200341286a2802002124200341246a280200213a200241900f6a41186a22392004290300370300200241900f6a41106a223f2001290300370300200241900f6a41086a22402005290300370300200220022903c00d3703900f200241d0046a200241900f6a10b0042024ad42387e2208422088a70d092008a72203417f4c0d09200241d0046a41086a290300211c20022903d00421180240024020030d00410821150c010b200310282215450d040b0240024020240d0041002124410021060c010b203c20244105746a213241002106203c21070340200741086a2900002108200741106a290000210c2007290000210f200241f0116a41186a2227200741186a290000370300200241f0116a41106a2216200c370300200241f0116a41086a221920083703002002200f3703f011200741206a2107200241e80c6a210320022802ec0c210d024003402003280200221241086a210420122f0106220e4105742103410021010240024003402003450d01200241f0116a20044120109c052205450d02200341606a2103200141016a2101200441206a21042005417f4a0d000b2001417f6a210e0b200d450d02200d417f6a210d2012200e4102746a4194036a21030c010b0b2010201220014102746a41e8026a220328020022044d0d072011200441c8006c6a22042903102108200441186a290300210c200241c0046a10a102200241b0046a20022903c004200241c0046a41086a290300427f420010a0052010200328020022044d0d08200241a0046a2018201c20022903b004220f4201200f420156200241b0046a41086a290300220f420052200f501b22011b200f420020011b10a0052011200441c8006c6a220441186a427f200c200820022903a0047c220f2008542201ad7c221b2001201b200c54200f20085a1b22011b3703002004427f200f20011b370310200241900c6a41186a22042027290300370300200241900c6a41106a22012016290300370300200241900c6a41086a22052019290300370300200220022903f0113703900c200328020021120240024020062024460d00200621030c010b202441016a22032024490d1c2024410174220d2003200d20034b1b220dad42387e2208422088a70d1c2008a722034100480d1c0240024020240d002003102821150c010b2015202441386c2003102c21150b2015450d0a20242103200d21240b2015200341386c6a220342003703082003420037030020032012360210200320022903900c3702142003411c6a2005290300370200200341246a20012903003702002003412c6a2004290300370200200641016a21060b20072032470d000b0b0240203a450d00203c102a0b200241b00c6a41186a22032039290300370300200241b00c6a41106a2204203f290300370300200241b00c6a41086a22012040290300370300200220022903900f3703b00c20024190046a10a10220024180046a20022903900420024190046a41086a290300427f420010a005200241f0036a2018201c20022903800422084201200842015620024180046a41086a29030022084200522008501b22051b2008420020051b10a00520334200370308203320022903f00337030020334200370310203341186a4200370300203320063602282033202436022420332015360220203320022903b00c37022c203341346a20012903003702002033413c6a2004290300370200203341c4006a2003290300370200203d41016a213d203341d0006a2133203b2103203b203e470d000b2002203d3602c80e0c070b02402037450d002038102a0b024020022802c80e2203450d00200341d0006c210120022802c00e41206a210303400240200341046a280200450d002003280200102a0b200341d0006a2103200141b07f6a22010d000b0b024020022802c40e450d0020022802c00e102a0b20022802e80c20022802ec0c20022802f00c10bc0202402004450d002004412c6c2104203541206a210303400240200341046a280200450d002003280200102a0b2003412c6a2103200441546a22040d000b0b2036450d0f2035102a0c0f0b201241081037000b200341081037000b41a09ec400200420101034000b41b09ec400200420101034000b200341081037000b2002203d3602c80e203b203e460d000340203b41206a2802002204450d01203b412c6a21030240203b41246a280200450d002004102a0b2003213b203e2003470d000b0b02402036450d002035102a0b2034ad42307e2208422088a70d002008a72203417f4c0d00024002400240024020030d00410821060c010b200310282206450d010b2034412c6c2203417f4c0d0202400240024020030d004104213f0c010b20031028223f450d010b4100213602402010203420102034491b223b0d0020342141410021390c030b2011201041c8006c22356a2127200241f0116a41106a2132200241f0116a41086a213320112103203421164100213941002119034002402010450d002035210403400240200341c0006a2d00000d00200241e0036a427f427f200341106a290300220842012008420156200341186a29030022084200522008501b22011b2008420020011b10a0052003200241e0036a41086a290300370308200320022903e0033703000b200341c8006a2103200441b87f6a22040d000b0b20022802c00e220520022802c80e220e41d0006c6a211502400240024002400240200e450d00200521120340024020122802282203450d00200341386c2101201228022041106a210303402010200328020022044d0d0402402011200441c8006c6a22042d00400d002004290310220c200441186a290300220f84500d00200241d0036a2012290300220842004280808080104200109f05200241a0036a4200420020084200109f05200241c0036a427f20022903d003201241086a290300220842ffffffff0f8320085220022903a80342005272200241d0036a41086a290300221b200842208620022903a0037c7c2208201b547222071b427f200820071b200c200f10a005200241b0036a201241146a350200201241186a290300220842208684200842208820022903c003200241c0036a41086a290300109f052004427f2004290300220820022903b0037c220c200c2008542207200441086a220d2903002208200241b0036a41086a2903007c2007ad7c220c200854200c2008511b22071b370300200d427f200c20071b3703000b200341386a2103200141486a22010d000b0b201241d0006a22122015470d000b0b201941016a21192011201041c8006c6a21122035210420112103024003402003210102400240201220036b41d8014d0d00200141c0006a2d00000d01200141c8006a21030c070b0340024020040d00201621410c0c0b200441b87f6a2104200141c0006a2107200141c8006a2203210120072d00000d000b200341b87f6a21010c060b20014188016a2d0000450d01200141d0016a2d0000450d03200441e07d6a2104200141a0026a210320014198026a2d00000d000b410321040c030b20014190016a2103410121040c020b41bcc0c200200420101034000b200141d8016a2103410221040b2001200441c8006c6a21010b024020032012460d00200141086a29030021082001290300210c0340200341c8006a21040240200341c0006a2d00000d00200341086a290300220f2008200c2003290300221b562008200f562008200f511b22121b2108201b200c20121b210c2003200120121b21010b2004210320272004470d000b0b200141013a00400240200e450d002001410c6a210d200141206a210e0340200541d0006a2124024020052802282204450d0020052802202103200441386c2104034002400240200d2003460d00200341146a200e4120109c050d010b200541186a22122903002108200141086a2207290300210c20032001290300220f2005290310221b7d3703002003200c20087d200f201b54ad7d3703082001290300210820122007290300370300200520083703100b200341386a2103200441486a22040d000b0b2024210520242015470d000b0b200129031021082032200141306a2900003703002033200141286a290000370300200141186a290300210c200241f0116a41186a2203200141386a290000370300200220012900203703f01102400240024020392016460d00201621410c010b201641016a22042016490d15201641017422012004200120044b1b2241ad42307e220f422088a70d15200fa722044100480d150240024020160d002004102821060c010b2006201641306c2004102c21060b2006450d0120162139204121160b2033290300210f2032290300211b2003290300211c20022903f01121182006203941306c6a2203200837032020032018370300200341286a200c370300200341186a201c370300200341106a201b370300200341086a200f370300203941016a2139201121032019203b4f0d040c010b0b200441081037000b200341041037000b200341081037000b024020022802c80e2203450d0020022802c00e2235200341d0006c6a2140200641e0006a213b2006203941306c22036a210d200241900e6a41186a213c200241900e6a41106a213d200241900e6a41086a213a20034191014921334100213602400340203c203541c4006a290000370300203d2035413c6a290000370300203a203541346a2900003703002002203529002c3703900e024020352802282203450d0020352802202204200341386c6a21322035412c6a211641002127410821194100211503402006210302400240024020330d00203b2103024002400240200441146a2201200241f0116a46220e450d0020062903202108200641086a290300210c200641106a290300210f200641186a290300211b2006290300211c200241f0116a41286a200641286a290300370300200241f0116a41186a201b370300200241f0116a41106a200f370300200241f0116a41086a200c37030020022008370390122002201c3703f0110c010b024002400340200341406a22102903002108200341a07f6a2205290300210c200541086a290300210f200541106a290300211b200541186a290300211c200241f0116a41286a2205201041086a290300370300200241f0116a41186a2210201c370300200241f0116a41106a2211201b370300200241f0116a41086a2212200f37030020022008370390122002200c3703f011200241f0116a20014120109c05450d03200341706a22242903002108200341506a2207290300210c200741086a290300210f200741106a290300211b200741186a290300211c2005202441086a2903003703002010201c3703002011201b3703002012200f37030020022008370390122002200c3703f0110240200e0d00200241f0116a20014120109c05450d00200341206a2903002108200341086a290300210c200341106a290300210f200341186a290300211b2003290300211c2005200341286a2903003703002010201b3703002011200f3703002012200c37030020022008370390122002201c3703f011200e0d03200241f0116a20014120109c05450d03200341d0006a2903002108200341306a290300210c200341386a290300210f200341c0006a290300211b200341c8006a290300211c2005200341d8006a2903003703002010201c3703002011201b3703002012200f37030020022008370390122002200c3703f011200e0d02200241f0116a20014120109c05450d02200341e0006a2105200341c0016a2103200d20056b4190014d0d050c010b0b200241900f6a41286a2005290300370300200241900f6a41206a200241f0116a41206a290300370300200241900f6a41186a2010290300370300200241900f6a41106a2011290300370300200241900f6a41086a2012290300370300200220022903f0113703900f0c050b200241900f6a41286a2005290300370300200241900f6a41206a200241f0116a41206a290300370300200241900f6a41186a2010290300370300200241900f6a41106a2011290300370300200241900f6a41086a2012290300370300200220022903f0113703900f0c040b200241900f6a41286a2005290300370300200241900f6a41206a200241f0116a41206a290300370300200241900f6a41186a2010290300370300200241900f6a41106a2011290300370300200241900f6a41086a2012290300370300200220022903f0113703900f0c030b200241900f6a41286a200241f0116a41286a290300370300200241900f6a41206a200241f0116a41206a290300370300200241900f6a41186a200241f0116a41186a290300370300200241900f6a41106a200241f0116a41106a290300370300200241900f6a41086a200241f0116a41086a290300370300200220022903f0113703900f0c020b200341a07f6a21030b2003200d460d0102400240200441146a2201200241f0116a470d0020032903202108200341086a290300210c200341106a290300210f200341186a290300211b2003290300211c200241f0116a41286a200341286a290300370300200241f0116a41186a201b370300200241f0116a41106a200f370300200241f0116a41086a200c37030020022008370390122002201c3703f0110c010b0340200341206a2903002108200341086a290300210c200341106a290300210f200341186a290300211b2003290300211c200241f0116a41286a200341286a290300370300200241f0116a41186a201b370300200241f0116a41106a200f370300200241f0116a41086a200c37030020022008370390122002201c3703f011200241f0116a20014120109c05450d01200d200341306a2203470d000c030b0b200241900f6a41286a200241f0116a41286a290300370300200241900f6a41206a200241f0116a41206a290300370300200241900f6a41186a200241f0116a41186a290300370300200241900f6a41106a200241f0116a41106a290300370300200241900f6a41086a200241f0116a41086a290300370300200220022903f0113703900f0b200241e00e6a41286a200241900f6a41286a2903002208370300200241e00e6a41206a200241900f6a41206a290300220c370300200241e00e6a41186a200241900f6a41186a290300220f370300200241e00e6a41106a200241900f6a41106a290300221b370300200241e00e6a41086a200241900f6a41086a290300221c370300200220022903900f22183703e00e200241f0116a41286a2008370300200241f0116a41206a200c370300200241f0116a41186a200f370300200241f0116a41106a201b370300200241f0116a41086a201c370300200220183703f011200241f0116a2016460d00200241f0116a20164120109c05450d00024002402035290310221b2004290300220c85203541186a290300220f200441086a2903002208858450450d0042002108428080808010210c0c010b20024190036a200c42004280808080104200109f0520024180036a42004200200c4200109f050240200842ffffffff0f832008522002290388034200527220024190036a41086a290300221c20084220862002290380037c7c2218201c54724101470d000240201b422088200f42208684221b200f422088220f84500d00200241e0026a200c2008201b200f10a005200241e0026a41086a290300210820022903e002210c0c020b41dcc0c2001032000b200241f0026a2002290390032018201b4201201b420156200f420052200f501b22031b200f420020031b10a005200241f0026a41086a290300210820022903f002210c0b200220042f00143b01a00d2002200441166a2d00003a00a20d2002200441276a2900003703f80c20022004412c6a2900003700fd0c200441236a28000021012004411f6a28000021052004411b6a2800002110200441176a280000211102400240024020152027460d00201521030c010b202741016a22032027490d17202741017422122003201220034b1b2212ad42307e220f422088a70d17200fa722034100480d170240024020270d002003102821190c010b2019202741306c2003102c21190b2019450d0120272103201221270b20022d00a20d211220022f01a00d21072019200341306c6a2203200136000f2003200536000b2003201036000720032011360003200320073b0100200341026a20123a00002003200c370320200341286a2008370300200320022903f80c370013200341186a20022900fd0c370000201541016a21150c010b200341081037000b200441386a22042032470d000b024020150d002027450d012019102a0c010b02400240201541306c22040d00420021084200210c0c010b201941206a2103420021084200210c0340200341086a290300200c7c2003290300220c20087c2208200c54ad7c210c200341306a2103200441506a22040d000b0b200241d0026a420042808080801020087d220f200f428080808010564200200c200842808080801056ad7c7d22084200522008501b22031b221c4200200820031b22082015ad2218420010a00520022903d002210f0240201c20185441002008501b0d00200241d0026a41086a290300211b2015417f6a2110201941206a21034100210403402003427f20032903002208200f7c220c200c2008542201200341086a22052903002208201b7c2001ad7c220c200854200c2008511b22011b3703002005427f200c20011b37030020102004460d01200341306a21032015200441016a22044b0d000b41ccc0c200200420151034000b200241c0026a200f200820182008109f050240201c20022903c0027da72205450d004100210303402019200320157041306c6a2204427f2004290320220842017c220c200c2008542201200441286a2204290300220f2001ad7c221b200f54200c20085a1b22011b3703202004427f201b20011b370300200341016a22032005490d000b0b200241f0116a41186a2204203c290300370300200241f0116a41106a2201203d290300370300200241f0116a41086a2205203a290300370300200220022903900e3703f011024020362034470d00203441016a22032034490d14203441017422102003201020034b1b2210ad422c7e2208422088a70d142008a722034100480d140240024020340d0020031028213f0c010b203f2034412c6c2003102c213f0b203f450d0320342136201021340b203f2036412c6c6a220320022903f011370200200529030021082001290300210c2004290300210f200320153602282003202736022420032019360220200341186a200f370200200341106a200c370200200341086a2008370200203641016a21360b203541d0006a22352040470d000c020b0b200341041037000b02402037450d002038102a0b024020022802c80e2203450d00200341d0006c210420022802c00e41206a210303400240200341046a280200450d002003280200102a0b200341d0006a2103200441b07f6a22040d000b0b024020022802c40e450d0020022802c00e102a0b20022802e80c20022802ec0c20022802f00c10bc022006450d08203941306c220341306e21040240024020030d0041012142420021300c010b200441057422014100480d10200110282242450d072004ad21300b024002402006200620036a470d00410021190c010b203941306c2101410021192042210320062104034020032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000201941016a2119200341206a2103200441306a2104200141506a22010d000b0b200242003702ec0c200241f8b9c0003602e80c024020194105742203450d00204220036a213b200241f0116a4102722143200241900c6a41136a213c200241b00c6a41136a2144204221070340200241b0026a200710b004200241b0026a41086a290300210c20022903b002210f200241a0026a10a10220024190026a20022903a002200241a0026a41086a290300427f420010a00520024180026a200f200c20022903900222084201200842015620024190026a41086a29030022084200522008501b22031b2008420020031b10a005200741086a2900002108200741106a290000210c2007290000210f200241e00e6a41186a220e200741186a290000370300200241e00e6a41106a2224200c370300200241e00e6a41086a221520083703002002200f3703e00e20022903800221080240024002400240024002400240024020022802e80c221041f8b9c000460d0020022802ec0c21110c010b200241900f6a410041e0021099051a200241f0116a41004190041099051a41f80610282210450d0141002111201041003b010620104100360200201041086a200241900f6a41e002109a051a201041e8026a200241f0116a419004109a051a200241003602ec0c200220103602e80c0b200741206a210702400340201041086a2104201041066a210d20102f01062212410574210341002101024003402003450d01200241e00e6a20044120109c052205450d03200341606a2103200141016a2101200441206a21042005417f4a0d000b2001417f6a21120b02402011450d002011417f6a2111201020124102746a41f8066a28020021100c010b0b200241c00d6a41186a2203200e290300370300200241c00d6a41106a2024290300220c370300200241c00d6a41086a2015290300220f370300200220022903e00e221b3703c00d200220022802f00c41016a3602f00c200241900e6a41106a2239200c370300200241900e6a41086a2240200f370300200241900e6a41186a223e20032903003703002002201b3703900e200d2f01002204410b490d04200241900f6a410041e0021099051a200241f0116a41004190041099051a41f80610282203450d02200341003b010620034100360200200341086a200241900f6a41e002109a052101200341e8026a200241f0116a419004109a052105200241b00c6a41086a2245201041d0016a290000370300200241b00c6a41106a2246201041d8016a290000370300200241b00c6a41186a2247201041e0016a290000370300200241f0116a41086a222720104190056a290300370300200241f0116a41106a221620104198056a290300370300200241f0116a41186a2232201041a0056a290300370300200241f0116a41206a2233201041a8056a290300370300200241f0116a41286a2235201041b0056a290300370300200220102900c8013703b00c20022010290388053703f0112001201041e8016a20102f010641796a2204410574109a0521012005201041b8056a200441306c109a052105201041063b0106200320043b0106200220022f01b00c3b01e00c200220022d00b20c3a00e20c200220442900003703d00c2002204441056a22482900003700d50c20022800b30c214920022800b70c214a20022800bb0c214b20022800bf0c214c200241900f6a41286a224d2035290300370300200241900f6a41206a224e2033290300370300200241900f6a41186a224f2032290300370300200241900f6a41106a22502016290300370300200241900f6a41086a22512027290300370300200220022903f0113703900f0240024020124107490d00201241057420016a41c07e6a2001201241796a22114105746a2201200441ffff037120116b410574109b051a200141186a203e290300370000200141106a2039290300370000200141086a2040290300370000200120022903900e370000201241306c20056a220441e07d6a200441b07d6a2204200341066a220d2f010020116b41306c109b051a200441186a4200370300200420083703102004420037030820042008370300200441286a4100360200200442083703200c010b201041086a20124105746a220441206a2004200d2f010020126b410574109b051a200441186a203e290300370000200441106a2039290300370000200441086a2040290300370000200420022903900e370000201041e8026a201241306c6a220441306a2004200d2f010020126b41306c109b051a200441186a4200370300200420083703102004420037030820042008370300200441286a4100360200200442083703200b200d200d2f010041016a3b0100200241d00e6a41026a220420022d00e20c3a00002015205129030037030020242050290300370300200e204f290300370300200241e00e6a41206a2238204e290300370300200241e00e6a41286a2237204d290300370300200220022f01e00c3b01d00e200220022903d00c3703900c200220022900d50c3700950c200220022903900f3703e00e200241e00d6a41286a22522037290300370300200241e00d6a41206a22532038290300370300200241e00d6a41186a2254200e290300370300200241e00d6a41106a22552024290300370300200241e00d6a41086a22562015290300370300200220022903e00e3703e00d200220022f01d00e3b01a00d200220042d00003a00a20d200220022903900c3703f80c200220022900950c3700fd0c0240201028020022110d00200241e80c6a2104200321010c060b20102f0104213d41002157200321580340200241b80d6a41026a225920022d00a20d3a0000200220022f01a00d3b01b80d200220022903f80c3703d00e200220022900fd0c3700d50e2037205229030037030020382053290300370300200e20542903003703002024205529030037030020152056290300370300200220022903e00d3703e00e203d41ffff0371211202400240024020112f01062203410b490d002043410041a2071099051a41a80710282205450d0720054100360200200541046a200241f0116a41a407109a051a2047201141e0016a2900003703002046201141d8016a2900003703002045201141d0016a290000370300200220112900c8013703b00c2035201141b0056a2903003703002033201141a8056a2903003703002032201141a0056a290300370300201620114198056a290300370300202720114190056a29030037030020022011290388053703f011200541086a201141e8016a20112f0106220441796a2203410574109a05215a200541e8026a201141b8056a200341306c109a05215b200541f8066a20114194076a2004417a6a220d410274109a05213a201141063b0106200520033b01060240200d450d0041002103203a210403402004280200220120033b010420012005360200200441046a2104200d200341016a2203470d000b0b204d2035290300370300204e2033290300370300204f20322903003703002050201629030037030020512027290300370300200220022903f0113703900f200220022f01b00c3b01e00c200220022d00b20c3a00e20c20022900b30c210820022900bb0c210c200220482900003700d50c200220442900003703d00c203c20022903d00c370000203c41056a220d20022900d50c370000200220022d00e20c3a00920c200220022f01e00c3b01900c2002200c37009b0c200220083700930c2035204d2903003703002033204e2903003703002032204f2903003703002016205029030037030020272051290300370300200220022903900f3703f011203d41ffff037122044107490d01205a2012417a6a22014105746a205a201241796a22034105746a220420052f010620036b410574109b051a200441186a20022900d50e3700002004204c36000f2004204b36000b2004204a36000720042049360003200441026a20592d00003a0000200420022f01b80d3b0000200420022903d00e370013201241306c205b6a220441e07d6a200441b07d6a220420052f0106223d20036b41306c109b051a200441286a2037290300370300200441206a2038290300370300200441186a200e290300370300200441106a2024290300370300200441086a2015290300370300200420022903e00e3703002005203d41016a22043b01062012410274223d203a6a416c6a203a20014102746a2212200441ffff037120016b410274109b051a20122058360200200120052f010622124b0d022005203d6a41e0066a2104034020042802002201200341016a22033b010420012005360200200441046a210420032012490d000c030b0b201141086a2204201241016a22014105746a200420124105746a2204200320126b2205410574109b051a2004204c36000f2004204b36000b2004204a36000720042049360003200441026a20592d00003a0000200420022f01b80d3b0000200420022903d00e370013200441186a20022900d50e3700002011201241306c6a22044198036a200441e8026a220d200541306c109b051a20044190036a203729030037030020044188036a203829030037030020044180036a200e290300370300200441f8026a2024290300370300200441f0026a2015290300370300200d20022903e00e3703002011200341016a22033b01062012410274201141f8066a22046a41086a200420014102746a2204200341ffff037120016b410274109b051a200420583602000240201220112f010622034f0d00205820013b010420582011360200200120034f0d002003417f6a210520112001417f6a22034102746a4180076a2104034020042802002201200341026a3b010420012011360200200441046a21042005200341016a2203470d000b0b41001a200241e80c6a1a20101a0c090b201141086a2203201241016a22014105746a200320124105746a220320112f0106223d20126b223a410574109b051a2003204c36000f2003204b36000b2003204a36000720032049360003200341026a20592d00003a0000200320022f01b80d3b0000200320022903d00e370013200341186a20022900d50e370000201141e8026a201241306c6a220341306a2003203a41306c109b051a200341286a2037290300370300200341206a2038290300370300200341186a200e290300370300200341106a2024290300370300200341086a2015290300370300200320022903e00e3703002011203d41016a22033b01062012410274223a201141f8066a223d6a41086a203d20014102746a223d200341ffff037120016b410274109b051a203d2058360200200420112f010622014f0d002011203a6a41fc066a2103034020032802002204201241016a22123b010420042011360200200341046a210320012012470d000b0b205741016a2112200241b00d6a41026a220320022d00920c3a00002040202729030037030020392016290300370300203e2032290300370300200241900e6a41206a22042033290300370300200241900e6a41286a22012035290300370300200220022f01900c3b01b00d200220022903f0113703900e2002203c2900003703c00e2002200d2900003700c50e20022800930c214920022800970c214a200228009b0c214b200228009f0c214c20522001290300370300205320042903003703002054203e2903003703002055203929030037030020562040290300370300200220022903900e3703e00d200220022f01b00d3b01a00d200220032d00003a00a20d200220022903c00e3703f80c200220022900c50e3700fd0c0240201128020022030d0020111a200241e80c6a22041a200521010c070b20112f0104213d200241e80c6a1a20111a2003211120052158201221570c000b0b2010200141306c6a22034180036a4200370300200341f8026a2008370300200341f0026a4200370300200341e8026a200837030020034190036a410036020020034188036a220128020021042003418c036a2802002103200142083703002004450d052003450d052004102a0c050b41f80641081037000b41f80641081037000b41a80741081037000b201020124105746a220341286a200341086a2201200420126b410574109b051a200341206a203e290300370000200341186a2039290300370000200341106a2040290300370000200120022903900e3700002010201241306c6a22034198036a200341e8026a220420102f010620126b41306c109b051a20034190036a410036020020034188036a420837030020034180036a4200370300200341f8026a2008370300200341f0026a420037030020042008370300201020102f010641016a3b01060c010b2043410041a2071099051a41a80710282203450d0820034100360200200341046a200241f0116a41a407109a051a2003200428020022053602f806200420033602002004200428020441016a360204200541003b010420052003360200200320032f010622054105746a220441086a20022f01a00d3b00002004410a6a20022d00a20d3a0000200441176a204c360000200441136a204b3600002004410f6a204a3600002004410b6a20493600002004411b6a20022903f80c370000200441206a20022900fd0c3700002003200541306c6a220441e8026a20022903e00d370300200441f0026a2056290300370300200441f8026a205529030037030020044180036a205429030037030020044188036a205329030037030020044190036a2052290300370300200341f8066a200541016a22044102746a2001360200200320043b0106200120043b01042001200336020020101a0b2007203b470d000b0b02402036412c6c2203450d00203f20036a2132203f210d03400240200d28022841306c2203450d00200d280220220e20036a21150340200241f0016a200d10b004200e221041286a2224290300210f20102903202108200241f0016a41086a290300211b20022903f001211c200241e0016a10a102200241d0016a20022903e001200241e0016a41086a290300427f420010a005200241c0016a201c201b20022903d001220c4201200c420156200241d0016a41086a290300220c420052200c501b22031b200c420020031b10a005200241a0016a200f420020022903c001220c4200109f05200241b0016a20084200200c4200109f0520024190016a4200420020084200109f0542ffffffff0f200241b0016a41086a290300220820022903a0012002290390017c7c220c42208820022903a80120022903980184420052200c2008547222031b2108427f20023502b401200c4220868420031b210c201041306a210e200241e80c6a210320022802ec0c21120240024003402003280200221141086a210420112f010622074105742103410021010240024003402003450d01201020044120109c052205450d02200341606a2103200141016a2101200441206a21042005417f4a0d000b2001417f6a21070b2012450d022012417f6a2112201120074102746a41f8066a21030c010b0b2011200141306c6a220341f8026a2204427f2004290300220f200c7c221b201b200f54220420034180036a2201290300220f20087c2004ad7c221b200f54201b200f511b22041b3703002001427f201b20041b370300200241f0116a41186a2211200d41186a290000370300200241f0116a41106a2212200d41106a290000370300200241f0116a41086a2207200d41086a2900003703002002200d2900003703f01120034188036a2105024020034190036a220128020022042003418c036a280200470d00200441016a22032004490d16200441017422272003202720034b1b2227ad42307e220f422088a70d16200fa722164100480d160240024020040d002016102821030c010b2005280200200441306c2016102c21030b2003450d0220052003360200200541046a2027360200200128020021040b2005280200200441306c6a220320022903f0113703002003200c370320200341186a2011290300370300200341106a2012290300370300200341086a2007290300370300200341286a20083703002001200128020041016a3602000b2010200c37032020242008370300200e2015460d020c010b0b201641081037000b200d412c6a220d2032470d000b0b200241e00e6a41086a22034200370300200242003703e00e41a5afc4004116200241e00e6a1008200241900f6a41086a2003290300370300200220022903e00e3703900f200241003602f011200241900f6a4110200241f0116a100621030240024020022802f0112204417f460d002003450d00200220043602e40e200220033602e00e200241f0116a200241e00e6a106d20022802f0112207450d0320022902f41121082004450d012003102a0c010b42002108410121070b02402007450d002008422088a72203450d0020034105742101200721040340410f10282203450d04200341002900edae44370000200341076a41002900f4ae443700002002428f808080f0013702f411200220033602f0112004200241f0116a108f0120022802f811210320022802f0112105200241900c6a41186a22104200370300200241900c6a41106a22114200370300200241900c6a41086a22124200370300200242003703900c20052003200241900c6a1000200241c00d6a41186a2010290300370300200241c00d6a41106a2011290300370300200241c00d6a41086a2012290300370300200220022903900c3703c00d024020022802f411450d0020022802f011102a0b200441206a2104200241c00d6a41201009200141606a22010d000b0b02402008a7450d002007102a0b20022802f00c211020022802e80c21030240024020022802ec0c22010d00200321040c010b2001210520032104034020042802f80621042005417f6a22050d000b0340200320032f01064102746a41f8066a28020021032001417f6a22010d000b0b200241ac0f6a20032f0106360200200241900f6a41186a4100360200200241a40f6a2003360200200220103602b00f200241003602a00f200242003703980f200220043602940f200241003602900f200241f0116a200241900f6a10b1020240200241b0126a223b280200220d0d00427f2120427f211c0c080b200241f0116a41106a2101200241a8126a2133200241f0116a41286a2135427f2120427f211c0340200241e00d6a41086a200241f0116a41086a22112903002208370300200241e00d6a41106a2001290300220c370300200241e00d6a41186a200241f0116a41186a2205290300220f370300200220022903f011221b3703e00d203329030021182035290300211f20022802b412212420022802b812210320022903a0122121200229039012212f200241900e6a41186a2215200f370300200241900e6a41106a2227200c370300200241900e6a41086a221620083703002002201b3703900e20024180016a10a102200241e0006a20022903800120024180016a41086a290300427f420010a005200241f0006a10a102200241c0006a2002290370200241f0006a41086a290300427f420010a005200241d0006a2002290360220842012008420156200241e0006a41086a29030022084200522008501b22041b2008420020041b202f201f109f05200241306a2002290340220842012008420156200241c0006a41086a29030022084200522008501b22041b2008420020041b20212018109f05200241d0006a41086a290300211f200241306a41086a290300211b4100211220022903502121200229033021184100210e410821070240200341306c2210450d00201041306d220ead42307e2208422088a70d112008a722044100480d11200410282207450d050b02402003450d00200341047441706a213220072103200d21040340200441286a290300210c200441206a290300210f2005200441186a2903003703002001200441106a2903003703002011200441086a290300370300200220042903003703f011200241206a10a102200241106a2002290320200241206a41086a290300427f420010a00520022002290310220842012008420156200241106a41086a29030022084200522008501b22121b2008420020121b200f200c109f052003200241086a29030037030820032002290300370300200341106a20022903f011370300200341186a2011290300370300200341206a2001290300370300200341286a2005290300370300200341306a2103200441306a2104201041506a22100d000b203241047641016a21120b02402024450d00200d102a0b2012ad42307e2208422088a70d012008a72203417f4c0d010240024020030d004108210d0c010b20031028220d450d060b0240024020120d00410021100c010b2007201241306c6a211141002110200d2103200721040340200320042903003703002003200441086a290300370308200341106a200441106a290300370300200341186a200441186a290300370300200341206a200441206a290300370300200341286a200441286a290300370300200341306a2103201041016a2110200441306a22042011470d000b0b2005201f3703002002202137038012200220183703f011200220103602981220022012360294122002200d360290122002201b3703f811200241e00e6a41186a2015290300370300200241e00e6a41106a2027290300370300200241e00e6a41086a2016290300370300200220022903900e3703e00e0240410f10282203450d00200341002900edae44370000200341076a41002900f4ae443700002002428f808080f0013702b40c200220033602b00c200241e00e6a200241b00c6a108f0120022802b80c210320022802b00c2104200241900c6a41186a22054200370300200241900c6a41106a22104200370300200241900c6a41086a22114200370300200242003703900c20042003200241900c6a1000200241c00d6a41186a2005290300370300200241c00d6a41106a2010290300370300200241c00d6a41086a2011290300370300200220022903900c3703c00d024020022802b40c450d0020022802b00c102a0b200241003602e80e200242013703e00e2002200241f0116a3602b00c200241b00c6a200241e00e6a10a301200220013602b00c200241b00c6a200241e00e6a10a30120022802901221032002280298122204200241e00e6a10b40102402004450d00200441306c21040340200341106a200241e00e6a108f01200220033602b00c200341306a2103200241b00c6a200241e00e6a10a301200441506a22040d000b0b20022802e40e2103200241c00d6a412020022802e00e220420022802e80e100702402003450d002004102a0b20182020542103201b201c512104201b201c5421050240200228029412450d00200228029012102a0b2003200520041b21030240200e450d002007102a0b201b201c20031b211c2018202020031b2120200241f0116a200241900f6a10b10220022802b012220d450d090c010b0b410f41011037000b1036000b41c4d1c300413320024198196a419cd9c3001038000b410f41011037000b200441081037000b200341081037000b41a80741081037000b200141011037000b200241f0116a200241900f6a10b1020240203b2802002203450d000340024020022802b412450d002003102a0b200241f0116a200241900f6a10b10220022802b01222030d000b0b024020022802940f220341f8b9c000460d00200328020021012003102a2001450d00200128020021042001102a2004450d00024020042802002203450d0003402004102a2003210420032802002201210320010d000b0b2004102a0b200241e00e6a41086a22034200370300200242003703e00e4199fec4004111200241e00e6a1008200241900f6a41086a22042003290300370300200220022903e00e3703900f2002201c3703f811200220203703f011200241900f6a4110200241f0116a4110100720034200370300200242003703e00e41a5afc4004116200241e00e6a100820042003290300370300200220022903e00e3703900f200241003602f811200242013703f0112019200241f0116a10b40102402019450d00201941057421042042210303402003200241f0116a108f01200341206a2103200441606a22040d000b0b20022802f4112103200241900f6a411020022802f011220420022802f811100702402003450d002004102a0b2019ad210802402036450d002036412c6c2104203f41206a210303400240200341046a280200450d002003280200102a0b2003412c6a2103200441546a22040d000b0b2008422086210802402034450d00203f102a0b203020088421082041450d012006102a0c010b200241e00e6a41086a22034200370300200242003703e00e4199fec4004111200241e00e6a1008200241900f6a41086a2003290300370300200220022903e00e3703900f200241003602f011200241900f6a4110200241f0116a10062103024020022802f0112204417f460d002004410f4d0d052003102a0b410021420b024020172014a745720d002013102a0b20420d0102402009450d00200941d0006c2104200a41c0006a210303400240200341046a280200450d002003280200102a0b200341d0006a2103200441b07f6a22040d000b0b200b450d00200a102a0b200041003602000c010b200020083702042000204236020002402009450d00200941d0006c2104200a41c0006a210303400240200341046a280200450d002003280200102a0b200341d0006a2103200441b07f6a22040d000b0b200b450d00200a102a0b200241a0196a24000f0b41c4d1c300413320024198196a419cd9c3001038000b41c4d1c300413320024198196a419cd9c3001038000b1031000baa0b02067f017e230041206b22042400200441106a41086a220542003703002004420037031041f9b5c200411d200441106a1008200441086a2005290300370300200420042903103703000240024002400240024002400240024002400240200441104101410041001003417f470d001098012106024002400240024020024101470d00200441106a41086a220542003703002004420037031041b8bfc200411a200441106a1008200441086a2005290300370300200420042903103703002004410036021020044110200441106a10062105024020042802102207417f460d002005450d0020074104490d06200528000021072005102a200720064b0d020b200441106a41086a220542003703002004420037031041b8bfc200411a200441106a1008200441086a2005290300370300200420042903103703002004200620014101746a36021020044110200441106a410410070b200028020821052000280204210820002802002109200441106a41086a220042003703002004420037031041f9b5c200411d200441106a1008200441086a2000290300370300200420042903103703002004410036021820044201370310410410282200450d052004410436021420042004280218220741046a36021820042000360210200020076a200636000020042802142206200428021822006b4104490d01200428021021060c020b200041046a280200450d0b2000280200102a0c0b0b200041046a22072000490d09200641017422002007200020074b1b22004100480d090240024020060d002000102821060c010b200428021020062000102c21060b2006450d042004200036021420042006360210200428021821000b2004200041046a360218200620006a20013600002005200441106a10b40102402005450d002009200541286c6a21072009210503402005200441106a108f01200541206a290300210a0240024020042802142201200428021822006b4108490d00200428021021010c010b200041086a22062000490d0b200141017422002006200020064b1b22004100480d0b0240024020010d002000102821010c010b200428021020012000102c21010b2001450d072004200036021420042001360210200428021821000b2004200041086a360218200120006a200a3700002007200541286a2205470d000b0b20042802142105200428021821000240024020024101460d000240024020052000460d00200428021021050c010b200041016a22052000490d0b200041017422012005200120054b1b22014100480d0b0240024020000d002001102821050c010b200428021020002001102c21050b2005450d082004200136021420042005360210200428021821000b2004200041016a360218200520006a41003a00000c010b0240024020052000460d00200428021021050c010b200041016a22052000490d0a200041017422012005200120054b1b22014100480d0a0240024020000d002001102821050c010b200428021020002001102c21050b2005450d082004200136021420042005360210200428021821000b2004200041016a360218200520006a41013a00000240024020042802142205200428021822006b4104490d00200428021021050c010b200041046a22012000490d0a200541017422002001200020014b1b22004100480d0a0240024020050d002000102821050c010b200428021020052000102c21050b2005450d092004200036021420042005360210200428021821000b2004200041046a360218200520006a20033600000b2004280214210020044110200428021022052004280218100702402000450d002005102a0b2008450d092009102a0c090b200041046a280200450d082000280200102a0c080b41c4d1c3004133200441106a419cd9c3001038000b410441011037000b200041011037000b200041011037000b200141011037000b200141011037000b200041011037000b1031000b200441206a24000bcb0201057f230041d0006b220224002002410036022820014110200241286a1006210302400240024020022802282204417f460d0020030d010b200041003a00000c010b41002101200241003a00480340024020042001470d000240200141ff0171450d00200241003a00480b41c4d1c3004133200241286a419cd9c3001038000b200241286a20016a200320016a2d00003a00002002200141016a22053a00482005210120054120470d000b200241086a41186a2201200241286a41186a290300370300200241086a41106a2205200241286a41106a290300370300200241086a41086a2206200241286a41086a2903003703002002200229032837030802402004450d002003102a0b20002002290308370001200041013a0000200041196a2001290300370000200041116a2005290300370000200041096a20062903003700000b200241d0006a24000bdf0301017f024002400240024002400240410110282202450d00200220002d00003a0000200241014102102c2202450d01200220002d00013a0001200241024104102c2202450d02200220002d00023a0002200220002d00033a0003200241044108102c2202450d03200220002d00043a0004200220002d00053a0005200220002d00063a0006200220002d00073a0007200241084110102c2202450d04200220002d00083a0008200220002d00093a0009200220002d000a3a000a200220002d000b3a000b200220002d000c3a000c200220002d000d3a000d200220002d000e3a000e200220002d000f3a000f200241104120102c2202450d05200220002d00103a0010200220002d00113a0011200220002d00123a0012200220002d00133a0013200220002d00143a0014200220002d00153a0015200220002d00163a0016200220002d00173a0017200220002d00183a0018200220002d00193a0019200220002d001a3a001a200220002d001b3a001b200220002d001c3a001c200220002d001d3a001d200220002d001e3a001e200220002d001f3a001f200128020020012802042002412010072002102a0f0b410141011037000b410241011037000b410441011037000b410841011037000b411041011037000b412041011037000b952801057f02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141046a2202280200200141086a22032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0120012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00003a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0220012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00013a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0320012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00023a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0420012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00033a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0520012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00043a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0620012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00053a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0720012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00063a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0820012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00073a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0920012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00083a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0a20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00093a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0b20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d000a3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0c20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d000b3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0d20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d000c3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0e20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d000d3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d0f20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d000e3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1020012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d000f3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1120012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00103a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1220012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00113a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1320012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00123a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1420012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00133a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1520012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00143a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1620012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00153a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1720012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00163a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1820012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00173a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1920012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00183a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1a20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d00193a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1b20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d001a3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1c20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d001b3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1d20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d001c3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1e20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d001d3a000002400240200228020020032802002204460d00200128020021050c010b200441016a22052004490d21200441017422062005200620054b1b22064100480d210240024020040d002006102821050c010b200128020020042006102c21050b2005450d1f20012005360200200141046a2006360200200141086a28020021040b2003200441016a360200200520046a20002d001e3a000002400240200228020020032802002202460d00200128020021040c010b200241016a22042002490d21200241017422052004200520044b1b22054100480d210240024020020d002005102821040c010b200128020020022005102c21040b2004450d2020012004360200200141046a2005360200200141086a28020021020b2003200241016a360200200420026a20002d001f3a00000f0b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200541011037000b1031000b02000ba50201057f230041d0006b21020240200128020022032001280204470d00200041003602000f0b200120034180016a3602002002200329006237012a2002200329006a370132200241086a41086a220120022903303703002002200329007237013a200241086a41106a220420022903383703002002200328007a360142200220032f007e3b0146200241086a41186a22052002290340370300200220032f00603b012820022002290328370308200241286a41186a22062005290300370300200241286a41106a22052004290300370300200241286a41086a220420012903003703002002200229030837032820002003360200200020022903283702042000410c6a2004290300370200200041146a20052903003702002000411c6a20062903003702000b280020004101360204200041086a200128020420012802006b4107762201360200200020013602000bb905020b7f047e23004190016b22032400024002402001280200220420012802042205460d00200120044180016a22063602002003200441e2006a29000037016a2003200441ea006a290000370172200341c8006a41086a220720032903703703002003200441f2006a29000037017a200341c8006a41106a220820032903783703002003200441fa006a280000360182012003200441fe006a2f00003b018601200341c8006a41186a22092003290380013703002003200441e0006a2f00003b016820032003290368370348200341286a41186a220a2009290300370300200341286a41106a220b2008290300370300200341286a41086a220c200729030037030020032003290348370328200541807f6a210d02400340200341086a41186a200a290300220e370300200341086a41106a200b290300220f370300200341086a41086a200c2903002210370300200320032903282211370308200341e8006a41186a200e370300200341e8006a41106a200f370300200341e8006a41086a2010370300200320113703682002450d01200d2004460d02200120064180016a22053602002003200641e2006a29000037016a2003200641ea006a290000370172200720032903703703002003200641f2006a29000037017a200820032903783703002003200641fa006a280000360182012003200641fe006a2f00003b01860120092003290380013703002003200641e0006a2f00003b016820032003290368370348200a2009290300370300200b2008290300370300200c20072903003703002003200329034837032820044180016a21042002417f6a2102200521060c000b0b20002004360200200020032903683702042000410c6a200341f0006a290300370200200041146a200341f8006a2903003702002000411c6a20034180016a2903003702000c010b200041003602000b20034190016a24000ba50201057f230041d0006b21020240200128020022032001280204470d00200041003602000f0b200120034180016a3602002002200329004237012a2002200329004a370132200241086a41086a220120022903303703002002200329005237013a200241086a41106a220420022903383703002002200328005a360142200220032f005e3b0146200241086a41186a22052002290340370300200220032f00403b012820022002290328370308200241286a41186a22062005290300370300200241286a41106a22052004290300370300200241286a41086a220420012903003703002002200229030837032820002003360200200020022903283702042000410c6a2004290300370200200041146a20052903003702002000411c6a20062903003702000bb905020b7f047e23004190016b22032400024002402001280200220420012802042205460d00200120044180016a22063602002003200441c2006a29000037016a2003200441ca006a290000370172200341c8006a41086a220720032903703703002003200441d2006a29000037017a200341c8006a41106a220820032903783703002003200441da006a280000360182012003200441de006a2f00003b018601200341c8006a41186a22092003290380013703002003200441c0006a2f00003b016820032003290368370348200341286a41186a220a2009290300370300200341286a41106a220b2008290300370300200341286a41086a220c200729030037030020032003290348370328200541807f6a210d02400340200341086a41186a200a290300220e370300200341086a41106a200b290300220f370300200341086a41086a200c2903002210370300200320032903282211370308200341e8006a41186a200e370300200341e8006a41106a200f370300200341e8006a41086a2010370300200320113703682002450d01200d2004460d02200120064180016a22053602002003200641c2006a29000037016a2003200641ca006a290000370172200720032903703703002003200641d2006a29000037017a200820032903783703002003200641da006a280000360182012003200641de006a2f00003b01860120092003290380013703002003200641c0006a2f00003b016820032003290368370348200a2009290300370300200b2008290300370300200c20072903003703002003200329034837032820044180016a21042002417f6a2102200521060c000b0b20002004360200200020032903683702042000410c6a200341f0006a290300370200200041146a200341f8006a2903003702002000411c6a20034180016a2903003702000c010b200041003602000b20034190016a24000be6880106147f027e077f017e027f017e230041d0046b22042400200441c0036a20012002200310f903200441c0036a41086a280200210520042802c40321060240024020042802c0034101470d002000200636020420004101360200200041086a20053602000c010b200441d4036a280200220741306c2108200441d8036a2802002109200441d0036a280200210a200441cc036a280200210b4100210c4100210102400340024020082001470d000c020b200b20016a2102200141306a220d210120022d00004102470d000b200441d0006a200b200d6a41546a10fa032004280250210c200428025421010b4100210e20014100200c1b210f200741306c2108200c4104200c1b21104100210102400340024020082001470d000c020b200b20016a2102200141306a220d210120022d00004108470d000b200441c8006a200b200d6a41546a10fa032004280248210e200428024c21010b4100211120014100200e1b2112200741306c2108200e4104200e1b210d4100210102400340024020082001470d000c020b200b20016a2102200141306a220c210120022d00004104470d000b200441c0006a200b200c6a41546a10fa0320042802402111200428024421010b4100210e2001410020111b2113200741306c21082011410420111b21114100210102400340024020082001470d000c020b200b20016a2102200141306a220c210120022d00004103470d000b200441386a200b200c6a41546a10fa032004280238210e200428023c21010b41002102024020014100200e1b2201450d00200141286c2108200e4104200e1b41186a2101410021020340200220012d0000456a2102200141286a2101200841586a22080d000b0b0240024020120d00411e2101200041b98dc6003602040c010b200d201241146c6a211241002114410021150240024002400340200d450d0141d78dc600210841382101200d41086a280200417c6a220e41024b0d02200d280200210c024002400240200e0e03000501000b41012115200c41af8dc600460d01200c28000041e3c2b1e306460d010c040b41012114200c41b38dc600460d00200c41b38dc6004106109c050d030b0240200d410c6a280200450d0041132101200041d58ec6003602040c050b0240200d41106a280200220120026b220c20014d0d00412a2101200041e88ec6003602040c050b41af8ec6002108412621012013200c4d0d022011200c4102746a220c450d02418f8ec600210841202101200f200c280200220c4d0d022010200c4104746a220c450d0241928fc6002108411f2101200c2802080d02200c2d000d220c41077141044b0d020240200c0e050003030300000b200d41146a220d2012470d000b0b41b18fc60041b98dc600201441017122021b2108411c411e20021b21012002450d002015410171450d00200741306c2108410021010c010b200020083602040c010b0240034020082001460d01200b20016a2102200141306a220d210120022d00004106470d000b200441306a200b200d6a41546a10fa032004280234450d00200041fd8ac600360204411f21010c010b200741306c21082003280268210c410021010240034020082001460d01200b20016a2102200141306a220d210120022d00004105470d000b200441286a200b200d6a41546a220110fa030240200428022c41014d0d00411821012000419c8bc6003602040c020b200441206a200110fa032004280224450d0020042802202201450d002001280200200c4d0d0041222101200041b48bc6003602040c010b200741306c2108410021010240034020082001460d01200b20016a2102200141306a220d210120022d00004107470d000b200441186a200b200d6a41546a10fa0320042802182201200428021c4104746a2108034020012008460d012001450d012001410c6a2102200141106a210120022d0000410271450d000b41322101200041c08cc6003602040c010b200741306c2108410021010240034020082001460d01200b20016a2102200141306a220d210120022d0000410c470d000b200b200d6a2201415c6a2802002202450d00200141546a280200220d200241186c6a210c0340200d220241186a210d2002280208410374210120022802002102024003402001450d01200141786a210120022d00042108200241086a21022008410271450d000b413121012000418f8cc6003602040c030b200d200c470d000b0b200741306c2108410021010240034020082001460d01200b20016a2102200141306a220d210120022d00004102470d000b200441106a200b200d6a41546a10fa0320042802142201450d002004280210220220014104746a211103402002450d01200241106a210e200420022d000d22083a00c0032002280200220120022802086a210c410021024100200441c0036a20084104461b210d024003400240024002400240200241ff01710e03000102000b2001200c460d014100210220012108200141016a21010c020b2001200c460d034101210220012108200141016a21010c010b200d450d0241022102200d21084100210d0b20082d0000410271450d000b41392101200041d68bc6003602040c030b200e2102200e2011470d000b0b200741306c21084100210c4100210102400340024020082001470d000c020b200b20016a2102200141306a220d210120022d00004102470d000b200441086a200b200d6a41546a10fa032004280208210c200428020c21010b4100210e20014100200c1b2110200741306c2108200c4104200c1b21124100210102400340024020082001470d000c020b200b20016a2102200141306a220d210120022d00004103470d000b2004200b200d6a41546a10fa032004280200210e200428020421010b200e4104200e1b220220014100200e1b41286c6a210d41002113024002400340024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402002200d460d00412d2101418e91c400210820022802084103470d2102402002280200220c41f8e2c500460d00200c41f8e2c5004103109c050d220b200241286a21114115210c418790c400210e4114210141fa90c400210802400240024020022d00180e0400240123000b4136210c41d18fc400210e2010200228021c22014d0d22201220014104746a220f450d222002280214210c200228020c210220092d00700d01200c410b470d014138210141c290c4002108200241ac81c600460d23200241ac81c600410b109c05450d230c210b412f210141bb91c400210820022802144106470d220240200228020c220c41cb8fc400460d00200c41cb8fc4004106109c050d230b02402013450d00411f2101200041ea91c4003602040c280b2002411c6a2113201121020c240b41262101419c90c4002108200c417d6a220c41134b0d2102400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200c0e14003e3e3e0e043e073c0b0a120114111b103e0c19000b200241effec500460d3d200241effec5004103109c05450d3d41effec50020024103109c050d3d41011028220e450d1d200e41003a0000200f2d000c41e000460d010c3a0b200241f2fec500460d0141f2fec5002002410f109c05450d0120024181ffc500460d034181ffc5002002410f109c05450d03024020024198ffc500460d004198ffc5002002410f109c050d3d0b41071028220e450d20200e4100360003200e41013a0002200e41003b0000200f2d000c41e000460d060c380b200f2802084101470d380240200f2802002214200e460d0041002102034020024101460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d3a0c000b0b200f2d000d4104470d38200e102a201121020c3d0b41041028220e450d1b200e4100360000200f2d000c41e000470d35200f2802084104470d350240200f2802002214200e460d0041002102034020024104460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d370c000b0b200f2d000d4104470d35200e102a201121020c3c0b024020024190ffc500460d00200229000042e5f0d1fbb5ac98b6ec00520d3a0b41071028220e450d1c200e4100360003200e41013a0002200e41003b0000200f2d000c41e000460d010c330b41011028220e450d1a200e41003a0000200f2d000c41e000470d31200f2802084101470d31200f2802002214200e460d3041002102034020024101460d31200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d320c000b0b200f2802084107470d31200f2802002214200e460d2e41002102034020024107460d2f200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d320c000b0b200241a7ffc500460d0141a7ffc5002002410a109c05450d010240200241b1ffc500460d0041b1ffc5002002410a109c050d060b4126210c419c90c400210e200f2d000c41e000470d35200f2802080d3520112102200f2d000d4104460d380c350b200f2802084107470d31200f2802002214200e460d2b41002102034020024107460d2c200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d320c000b0b41021028220e450d19200e41003b0000200f2d000c41e000470d29200f2802084102470d290240200f2802002214200e460d0041002102034020024102460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d2b0c000b0b200f2d000d4104470d29200e102a201121020c360b0240200241c6ffc500460d0041c6ffc5002002410d109c050d340b4126210c419c90c400210e200f2d000c41e000470d32200f2802080d3220112102200f2d000d4104460d350c320b0240200241d3ffc500460d0041d3ffc5002002410c109c050d330b4126210c419c90c400210e200f2d000c41e000470d31200f2802080d3120112102200f2d000d4104460d340c310b0240200241eaffc500460d0041eaffc50020024115109c050d320b4126210c419c90c400210e200f2d000c41e000470d30200f2802080d3020112102200f2d000d4104460d330c300b0240200241ffffc500460d0041ffffc5002002410a109c050d310b41021028220e450d16200e41003b0000200f2d000c41e000460d010c240b02402002418980c600460d00418980c60020024107109c050d300b4126210c419c90c400210e200f2d000c41e000470d2e200f2802080d2e20112102200f2d000d4104460d310c2e0b200f2802084102470d220240200f2802002214200e460d0041002102034020024102460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d240c000b0b200f2d000d4104470d22200e102a201121020c300b02402002419080c600460d00419080c60020024113109c050d2e0b4126210c419c90c400210e200f2d000c41e000470d2c200f2802080d2c20112102200f2d000d4104460d2f0c2c0b200241a380c600460d0141a380c60020024111109c05450d01200241e280c600460d0641e280c60020024111109c05450d060240200241f380c600460d0041f380c60020024111109c050d2d0b41041028220e450d17200e4100360000200f2d000c41e000460d080c1f0b0240200241b480c600460d0041b480c6002002410e109c050d2c0b41081028220e450d13200e4200370000200f2d000c41e000460d020c1d0b41021028220e450d11200e41003b0000200f2d000c41e000470d1b200f2802084102470d1b0240200f2802002214200e460d0041002102034020024102460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d1d0c000b0b200f2d000d4104470d1b200e102a201121020c2c0b200241c280c600460d0141c280c60020024110109c05450d01200241d280c600460d0241d280c60020024110109c05450d020240200241b781c600460d0041b781c60020024110109c050d2a0b4126210c419c90c400210e200f2d000c41e000470d28200f2802080d2820112102200f2d000d4104460d2b0c280b200f2802084108470d1a0240200f2802002214200e460d0041002102034020024108460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d1c0c000b0b200f2d000d4104470d1a200e102a201121020c2a0b4126210c419c90c400210e200f2d000c41e000470d26200f2802080d26200f2d000d22014104460d2620112102200141fb0171450d290c260b41031028220e450d0f200e41003a0002200e41003b0000200f2d000c41e000470d16200f2802084103470d160240200f2802002214200e460d0041002102034020024103460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d180c000b0b200f2d000d4104470d16200e102a201121020c280b41021028220e450d0f200e41003b0000200f2d000c41e000470d14200f2802084102470d140240200f2802002214200e460d0041002102034020024102460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d160c000b0b200f2d000d4104470d14200e102a201121020c270b02402002418481c600460d00418481c60020024116109c050d250b41021028220e450d10200e41003b0000200f2d000c41e000460d020c120b200f2802084104470d160240200f2802002214200e460d0041002102034020024104460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d180c000b0b200f2d000d4104470d16200e102a201121020c250b02402002419a81c600460d00419a81c60020024112109c050d230b4126210c419c90c400210e200f2d000c41e000470d21200f2802080d2120112102200f2d000d4104460d240c210b200f2802084102470d0f0240200f2802002214200e460d0041002102034020024102460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d110c000b0b200f2d000d4104470d0f200e102a201121020c230b024020130d0041002116410021170c0e0b024020132802040d002000418992c400360204413221010c260b024020132802002216201341086a28020022174d0d00200041bb92c40036020441c90021010c260b201720032802644d0d0d2000418493c40036020441c10021010c250b410141011037000b410441011037000b410141011037000b410741011037000b410741011037000b410241011037000b410241011037000b410241011037000b410841011037000b410341011037000b410241011037000b410441011037000b410241011037000b20092903082118200441c0036a41086a22024200370300200441f8b9c0003602c4032009290310211920042018a7417f2018428080808010541b3602d00320042019a7417f2019428080808010541b3602c003200441c0036a4104722201410d10fb032001410c10fb032001410710fb032001410f10fb03200441d8006a41106a20042802d003360200200441d8006a41086a2002290300370300200420042903c003370358200441c0036a41106a22082007360200200441c0036a410c6a200a3602002004200b3602c803200420053602c403200420063602c003200441f0006a200441c0036a10fc03024002400240410110282201450d00200141003a0000200420042f01c003220d3b01b002200841e0083b01002002428180808010370300200420013602c403200441013602c0032004200d3b01d203200441f0006a200441c0036a10fd03210c0240410310282202450d00200241026a41002d00fae2453a0000200241002f00f8e2453b00000240410310282208450d00200841026a41002d00f1fe453a0000200841002f00effe453b0000200441b0026a41026a200441c0036a41026a220b2d000022073a0000200420042f00c003220e3b01b00220044184016a280200210d200441f0006a41106a2802002101200b20073a00002004200e3b01c00302400240024002400240024002400240200d2001470d00200141016a220d2001490d012001410174220b200d200b200d4b1b220dad42287e2218422088a70d012018a7220b4100480d010240024020010d00200b102821010c010b200428027c200141286c200b102c21010b2001450d072004200d360280012004200136027c200428028401210d0b200428027c200d41286c6a220141003a00182001200836020c200142838080803037020420012002360200200141106a428380808030370200200141196a20042f01c0033b00002001411b6a200441c2036a2d00003a00002001411c6a200c360200200420042802840141016a36028401200441c0036a200441f0006a418c01109a051a20044180026a200441c0036a10fe0320044180026a41106a280200220e41306c2101200428028802220741546a210202400340410021082001450d01200141506a21012002412c6a210d200241306a220c2102200d2d00004103470d000b200c41086a2802002201450d00200141286c2102200c28020041186a2101410021080340200820012d0000456a2108200141286a2101200241586a22020d000b0b200e41306c2101200741546a21022008417f6a210d02400340410021082001450d01200141506a21012002412c6a210c200241306a220b2102200c2d00004103470d000b200b41086a2802002201450d00200141286c2102200b28020041186a2101410021080340200820012d0000456a2108200141286a2101200241586a22020d000b0b200e41306c21012007415c6a21020240034041002111024020010d00410021010c020b200141506a2101200241246a210c200241306a220b2102200c2d00004104470d000b200b28020021010b0240024002400240200e450d00200120086a211a2007200e41306c6a2112200441d8006a410472211b4100211c4100211d0340024020072d000041786a220141044b0d00024002400240024020010e050301020400030b200728020c2201450d032007280204220c200141186c6a211e201d210103402001211d0240200c22082802144104742202450d00200828020c21010340024020012d0000410b470d00200141046a220c280200220b200d490d00200c200b41016a3602000b200141106a2101200241706a22020d000b0b200442003703d00320044280808080c0003703c803200442043703c003024002400240411010282201450d0020042802c8032102200420013602c003200441013602c403200120024104746a22014200370200200141056a4200370000200420042802c80341016a3602c80302402008280214221f450d0041002106201f210103400240024002400240024002400240024002400240024002400240200620014f0d004110210c0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200828020c222020064104746a2d000022140eac010001020202020202020202020202020303030404050506060707080809090a0a0b0b0c0d0d0e0e0f0f1010111213131414151516161717181819191a1a1b1b1c1c1d1d1e1e1f1f2020212122222323242425252627272828292a2a2b2b2c2d2d2e2e2f2f303031313232333434353536363737383839393a3a3b3b3c3c3d3d3e3e3f3f40404141424243434444454546464747484a4a4a4a49494a4a4a4a4a4a4a4a4a4a4a4a4a4a4b4b4b4b000b4111210c0c4a0b4112210c0c490b410a210c0c480b4108210c0c470b4108210c0c460b4104210c0c450b4104210c0c440b4104210c0c430b4104210c0c420b4104210c0c410b4104210c0c400b4104210c0c3f0b4105210c0c3e0b4105210c0c3d0b4105210c0c3c0b4105210c0c3b0b4105210c0c3a0b4113210c0c390b4114210c0c380b4106210c0c370b4107210c0c360b410b210c0c350b410b210c0c340b410b210c0c330b410b210c0c320b410b210c0c310b410b210c0c300b410b210c0c2f0b410b210c0c2e0b410b210c0c2d0b410b210c0c2c0b410b210c0c2b0b410c210c0c2a0b410c210c0c290b410c210c0c280b410c210c0c270b410c210c0c260b410c210c0c250b4100210c0c240b4100210c0c230b4101210c0c220b4102210c0c210b4103210c0c200b4103210c0c1f0b4100210c0c1e0b4100210c0c1d0b4100210c0c1c0b4100210c0c1b0b4100210c0c1a0b4100210c0c190b4101210c0c180b4102210c0c170b4103210c0c160b4103210c0c150b4100210c0c140b4100210c0c130b4100210c0c120b4100210c0c110b410d210c0c100b410d210c0c0f0b410d210c0c0e0b410d210c0c0d0b410d210c0c0c0b410d210c0c0b0b410d210c0c0a0b410d210c0c090b410d210c0c080b410d210c0c070b410d210c0c060b410d210c0c050b410d210c0c040b410d210c0c030b410e210c0c020b410e210c0c010b410f210c0b200641016a210a2004280260210f201b2101024003402001280200221141086a210520112f0106210b41002102024002400340200b20022201460d01200141016a210202404100417f4101200520016a2d00002213200c4b1b2013200c461b41016a0e03000301000b0b2002417f6a210b0b0240200f0d00200441d8006a21020c030b200f417f6a210f2011200b4102746a41ec006a21010c010b0b200441d8006a21020240201120014103746a41146a22012802000e04010d0001010b200141046a21020b20022802002102024002400240024002400240024002402014417e6a220141084b0d0020010e09010302120405050607010b20042802c8032201417f6a220c20014f0d12200c20014b0d1220042802c003200c4104746a220c280208220120026a22022001490d12200c41086a20023602000c130b20042802c8032201417f6a220c20014f0d11200c20014b0d1120042802c003200c4104746a220c280208220120026a22022001490d11200c41086a200236020020042802c8032201417f6a220c20014f0d11200c20014b0d1120042802c0032202200c4104746a280204210c02400240200120042802c403460d002001210b0c010b200141016a220b2001490d2320014101742211200b2011200b4b1b220b41ffffffff0071200b470d23200b41047422114100480d23200220014104742011102c2202450d082004200b3602c403200420023602c00320042802c803210b0b2002200b4104746a2202200e3b000d200241003a000c2002200c360204200220013602002002410f6a200e4110763a0000200241086a4100360200200420042802c80341016a3602c8030c120b20042802c8032201417f6a220c20014f0d10200c20014b0d1020042802c003200c4104746a220c280208220120026a22022001490d10200c41086a200236020020042802c803220221010240200220042802c403470d00200241016a22012002490d222002410174220c2001200c20014b1b220141ffffffff00712001470d222001410474220b4100480d220240024020020d00200b1028210c0c010b20042802c0032002410474200b102c210c0b200c450d08200420013602c4032004200c3602c00320042802c80321010b20042802c00320014104746a2201200e3b000d200141003a000c2001200a360204200120023602002001410f6a200e4110763a0000200141086a4100360200200420042802c80341016a3602c8030c110b20042802c8032201417f6a220c20014f0d0f200c20014b0d0f20042802c003200c4104746a220c280208220120026a22022001490d0f200c41086a200236020020042802c803220221010240200220042802c403470d00200241016a22012002490d212002410174220c2001200c20014b1b220141ffffffff00712001470d212001410474220b4100480d210240024020020d00200b1028210c0c010b20042802c0032002410474200b102c210c0b200c450d08200420013602c4032004200c3602c00320042802c80321010b20042802c00320014104746a2201200e3b000d200141013a000c2001200a360204200120023602002001410f6a200e4110763a0000200141086a4100360200200420042802c80341016a3602c8030c100b200441c0036a200610ff030d0e20042802c8032202450d0e20042002417f6a22013602c80320042802c003220c20014104746a220b2d000c4102460d0e2001450d0f2002417e6a220220014f0d0e200c20024104746a220c200b2802002202200c280200220c200c20024b1b360200200220014f0d0f200441c0036a200610ff030d0e0c0f0b20042802c8032201417f6a220c20014f0d0d200c20014b0d0d20042802c003200c4104746a220c280208220120026a22022001490d0d202020064104746a41046a280200210b200c41086a200236020020042802c8032201417f6a220220014b0d0d2002200b6b220120024b0d0d200441c0036a200610ff030d0d20042802c803220220014d0d0d20042802c003220c20014104746a2d000c0d0e2002410474200c6a41706a2202200120022802002202200220014b1b3602000c0e0b20042802c8032201417f6a220c20014f0d0c200c20014b0d0c20042802c003200c4104746a220c280208220120026a22022001490d0c200c41086a200236020020042802c8032201417f6a220520014b0d0c202020064104746a41046a280200220128020021022001280204210c2004200520012802086b220b20054b22013a00b00220010d0c410410282213450d052013200b36020002400240200c4104490d00200520022802006b220f20054b0d08200241046a21010c010b0240200c0d0041012102410121110c0b0b200520022802006b220f20054b0d07200241046a21010b2002200c4102746a2120410121114104210c4102210b41022102034002402002417f6a22142011470d00201441016a22112014490d1f200b2011200b20114b1b221141ffffffff03712011470d1f201141027422144100480d1f0240024020024101470d002014102821130c010b2013200c2014102c21130b2013450d090b2013200c6a200f36020002400240202020016b410d490d000240200520012802006b220f20054b0d00200141046a21010c020b200441013a00b0020c0d0b20202001460d0b200520012802006b220f20054b0d0a200141046a21010b200b41026a210b200241016a2102200c41046a210c0c000b0b20042802c8032201417f6a220c20014f0d0b200c20014b0d0b20042802c003200c4104746a220c280208220120026a22022001490d0b200c41086a2002360200200441c0036a200610ff030d0b20042802c8032201450d0b20042802c00322022d000c0d0c200141047420026a41706a41003602000c0c0b41fce2c500200620011034000b201141041037000b200b41041037000b200b41041037000b410441041037000b41012111200441013a00b0020c030b201441041037000b200441013a00b0020c010b20042d00b0020d002013450d022002ad4220862011ad842118410121050240200441c0036a200610ff030d0002402018422088a72201450d002001410274210c20132101034020042802c803220b200128020022024d0d02024020042802c003221120024104746a2d000c0d00200b41047420116a41706a220b2002200b280200220b200b20024b1b3602000b200141046a2101200c417c6a220c0d000b0b410021050b02402018a7450d002013102a0b20050d020c030b2011450d012013102a0c010b200441c0036a200610ff03450d010b024020042802c403450d0020042802c003102a0b024020042802d003450d0020042802cc03102a0b4101211c0c0a0b200a201f460d0120082802142101200a21060c000b0b20042802cc0320042802d4032201410041202001676b10800420042903d003212120042802cc03211f024020042802c403450d0020042802c003102a0b0240201f0d004101211c0c080b0240200828021422022021422088a722114101746a220141ffffffff00712001470d002001410474220c417f4c0d00024002400240200c0d004108210b0c010b200c1028220b450d01200828021421020b20084100360214200828020c21222008200b36020c200841106a220b2802002123200b2001360200202220024104746a210f201f20114103746a212041022111024020020d00201f210a202221010c040b41002101201f210a4100210c20222102024002400340200241016a2f0000200241036a2d000041107472210e024020022d0000221341ac01470d00200241106a21010c070b200241086a2900002118200241046a280000210502400240024020114102470d000240200a2020470d00410021112020210a0c020b200a2902002219422088a721152019a7211041012111200a41086a210a0b20114101470d00200c2010470d0002402001200b280200470d00200141016a22112001490d15200141017422062011200620114b1b221141ffffffff00712011470d15201141047422064100480d150240024020010d002006102821010c010b200828020c20014104742006102c21010b2001450d022008200136020c200b2011360200200828021421010b200828020c20014104746a220120042f00c0033b00012001412d3a000020012015360204200141036a200441c0036a41026a2d00003a00002008200828021441016a220136021402402001200b280200470d00200141016a22112001490d15200141017422062011200620114b1b221141ffffffff00712011470d15201141047422064100480d150240024020010d002006102821010c010b200828020c20014104742006102c21010b2001450d042008200136020c200b2011360200200828021421010b200828020c20014104746a220120042f00c0033b00012001410b3a00002001200d36020441022111200141036a200441c0036a41026a2d00003a00002008200828021441016a2201360214200c21100b02402001200b280200470d00200141016a22062001490d14200141017422142006201420064b1b220641ffffffff00712006470d14200641047422144100480d140240024020010d002014102821010c010b200828020c20014104742014102c21010b2001450d042008200136020c200b2006360200200828021421010b200c41016a210c200828020c20014104746a22012018370308200120053602042001200e3b0001200120133a0000200141036a200e4110763a00002008200828021441016a2201360214200241106a2202200f470d010c080b0b200641081037000b200641081037000b201441081037000b200c41081037000b1036000b411041041037000b2001200f460d0003400240024020012d000022024109460d00200241ac01470d010c030b0240200141046a280200220228020441ffffffff0371450d002002280200102a0b2002102a0b200141106a2201200f470d000b0b2021a7210102402023450d002022102a0b200a202047201120114102461b210202402001450d00201f102a0b024020024101470d004101211c0c050b200841186a210c024002402004280268450d0020082802142202450d00200828020c210120024104742102410021080340024020012d0000412c470d002001410b3a0000200141046a201a360200200841016a21080b200141106a2101200241706a22020d000b4101210120080d010b201d21010b200c201e470d000b2001211d0c030b20072802042201200d490d022007200141016a3602040c020b200728020c2201450d012007280204220c2001411c6c6a210b0340200c2201411c6a210c024020012802182202450d0020012802102101200241027421020340024020012802002208200d490d002001200841016a3602000b200141046a21012002417c6a22020d000b0b200c200b460d020c000b0b200728020c2201450d00200141146c2102200728020441106a2101034002402001417c6a2802000d0020012802002208200d490d002001200841016a3602000b200141146a21012002416c6a22020d000b0b200741306a22072012470d000b201c4101710d02201d4101710d01200428029002211120042802880221070b2004418c026a280200210f20042802840221132004280280022105410021060c020b200441c0036a41106a20044180026a41106a280200360200200441c0036a41086a20044180026a41086a29030037030020042004290380023703c003200441b0026a200441c0036a10fc03411010282202450d07200241063a0000410110282201450d06200141003a000041011028220c450d05200c20012d00003a00002001102a411010282208450d04200841063a000041f00010282201450d03200141063a00602001412c3b01502001200d3602442001410b3a0040200141d8003a0030200120042802683602242001412d3a0020200141003602142001410f3a0010200141003602042001410f3a0000024020082d00004109470d0002402008280204220d28020441ffffffff0371450d00200d280200102a2008280204210d0b200d102a0b2008102a024020022d00004109470d0002402002280204220828020441ffffffff0371450d002008280200102a200228020421080b2008102a0b2002102a200441e4036a4287808080f000370200200441e0036a2001360200200441dc036a4100360200200441c0036a410c6a4281808080800c370200200441c8036a4101360200200441003602ec03200442043702d4032004200c3602c403200441013602c003200441b0026a200441c0036a108104200441c0036a200441b0026a418c01109a051a20044198026a200441c0036a10fe0320044198026a410c6a280200210f200441a8026a28020021112004280298022105200428029c02211320042802a0022107410021060c010b2004418c026a280200210f200428028802210702402004280290022211450d00201141306c21022007210103402001108204200141306a2101200241506a22020d000b0b41012106411a211341f28cc60021050240200f450d002007102a0b0b200441e4006a280200210e200428025c21080240200441e0006a2802002201450d000340200828026c21082001417f6a22010d000b0b4100210d4100210102400340200e450d0102400240200120082f01064f0d00200820014103746a41146a2902002118200141016a21010c010b02400240200828020022010d00200dad21184100210c410021010c010b2008330104422086200dad8421184101210c0b2008102a2018a7210d024002402018422088a7220b20012f01064f0d00200121020c010b034002400240200128020022020d00200dad2118410021020c010b200c41016a210c2001330104422086200dad8421180b2001102a2018a7210d200221012018422088a7220b20022f01064f0d000b0b200b41027420026a41f0006a28020021082002200b4103746a41146a29020021180240200c417f6a2201450d000340200828026c21082001417f6a22010d000b0b410021010b200e417f6a210e2018a74103470d000b0b0240200841f8b9c000460d00200828020021012008102a2001450d00200128020021022001102a2002450d00024020022802002201450d0003402002102a2001210220012802002208210120080d000b0b2002102a0b02402006450d002000200536020420004101360200200041086a20133602000c250b200441b0026a41106a2011360200200441b0026a410c6a200f360200200420073602b802200420133602b402200420053602b002200441c0036a200441b0026a2009280260108304024020042802c0034101470d000240200441c0036a41086a280200450d0020042802c403102a0b2000418c8dc60036020420004101360200200041086a41233602000c250b200441d4036a2802002102200441c0036a41106a280200210f200441c0036a410c6a2802002106200441c8036a280200210d20042802c403210820032802582110200441003602a002200442013703980202400240410410282201450d002004410436029c02200420042802a002220c41046a3602a00220042001360298022001200c6a200836000002400240200428029c02220820042802a00222016b4104490d0020042802980221080c010b200141046a220c2001490d0320084101742201200c2001200c4b1b22014100480d030240024020080d002001102821080c010b20042802980220082001102c21080b2008450d022004200136029c02200420083602980220042802a00221010b2004200141046a3602a002200820016a200d3600002006200241306c22016a210d024020020d00200621010c0e0b200141506a2111200441c0036a4101722102200441c0036a41276a210c200441c0036a41206a210b200441c0036a41186a2107200441c0036a41086a210e20062101034020012d00002108200c200141286a290000370000200b200141216a2900003703002007200141196a290000370300200441c0036a41106a2203200141116a290000370300200e200141096a2900003703002004200141016a2900003703c003024020084110470d00200141306a21010c0f0b200441b0026a41276a2213200c290000370000200441b0026a41206a2205200b290300370300200441b0026a41186a20072903002218370300200441b0026a41106a20032903002219370300200441b0026a41086a200e2903002221370300200420042903c00322243703b00220022024370000200241086a2021370000200241106a2019370000200241186a2018370000200241206a2005290300370000200241276a2013290000370000200420083a00c003200441f0006a200441c0036a20044198026a10840420042d00702208411f470d0d201141506a2111200141306a2201200d470d000b200d21010c0d0b410441011037000b200141011037000b1031000b41f00041081037000b411041081037000b410141011037000b410141011037000b411041081037000b200b41041037000b410341011037000b410341011037000b410141011037000b200428027421122004280278211002402011450d00200141306a2101200441c0036a4101722102200441c0036a41276a210b200441c0036a41206a2107200441c0036a41186a210e200441c0036a41086a2111034020012d0000210c200b200141286a2900003700002007200141216a290000370300200e200141196a290000370300200441c0036a41106a2203200141116a2900003703002011200141096a2900003703002004200141016a2900003703c003200c4110460d01200441b0026a41276a2213200b290000370000200441b0026a41206a22052007290300370300200441b0026a41186a200e2903002218370300200441b0026a41106a20032903002219370300200441b0026a41086a20112903002221370300200420042903c00322243703b00220022024370000200241086a2021370000200241106a2019370000200241186a2018370000200241206a2005290300370000200241276a20132900003700002004200c3a00c003200441c0036a108204200141306a2201200d470d000b0b0240200f450d002006102a0b0240200428029c02450d00200428029802102a0b024020084105470d002010450d002012102a0b200041cd8fc60036020420004101360200200041086a41253602000c190b02402001200d460d00200441c0036a4101722102200441c0036a41276a210c200441c0036a41206a210b200441c0036a41186a2107200441c0036a41086a210e034020012d00002108200c200141286a290000370000200b200141216a2900003703002007200141196a290000370300200441c0036a41106a2211200141116a290000370300200e200141096a2900003703002004200141016a2900003703c00320084110460d01200441b0026a41276a2203200c290000370000200441b0026a41206a2213200b290300370300200441b0026a41186a20072903002218370300200441b0026a41106a20112903002219370300200441b0026a41086a200e2903002221370300200420042903c00322243703b00220022024370000200241086a2021370000200241106a2019370000200241186a2018370000200241206a2013290300370000200241276a2003290000370000200420083a00c003200441c0036a108204200141306a2201200d470d000b0b0240200f450d002006102a0b2004280298022101200429029c0221182000411c6a41003a0000200041146a2018370200200041106a20013602002000410c6a2017360200200041086a2016360200200020103602042000411d6a20042f0080023b0000200041003602002000411f6a20044182026a2d00003a00000c180b200e102a2000419c90c4003602040c160b200e102a2000419c90c4003602040c150b200e102a2000419c90c4003602040c140b200e102a2000419c90c4003602040c130b200e102a2000419c90c4003602040c120b200e102a2000419c90c4003602040c110b200e102a2000419c90c4003602040c100b200e102a2000419c90c4003602040c0f0b200f2d000d22024104460d05200241fb01710d05200e102a201121020c0b0b200f2d000d22024104460d02200241fb01710d02200e102a201121020c0a0b200f2d000d22024104460d00200241fb01710d00200e102a201121020c090b200e102a2000419c90c4003602040c0b0b200e102a2000419c90c4003602040c0a0b200e102a2000419c90c4003602040c090b200e102a2000419c90c4003602040c080b200e102a2000419c90c4003602040c070b02400240200241bbffc500460d0041bbffc5002002410b109c050d010b4126210c419c90c400210e200f2d000c41e000470d01200f2802080d0120112102200f2d000d4104460d040c010b0240200241dfffc500460d0041dfffc5002002410b109c050d030b4126210c419c90c400210e200f2d000c41e000470d00200f2802080d0020112102200f2d000d4104460d030b200e2108200c21010b200020083602040c040b0240200241ac81c600460d0041ac81c6002002410b109c050d030b024041021028220c450d00200c41003b0000200f2d000c41e000470d02200f2802084102470d020240200f280200220e200c460d0041002101034020014102460d01200c20016a2102200e20016a2108200141016a210120082d000020022d0000470d040c000b0b200f2d000d4104470d02200c102a201121020c010b0b410241011037000b200c102a0b412621012000419c90c4003602040b20004101360200200041086a200136020002402007450d00200b200741306c6a2111200b210703402007220041306a21070240024020002d00002201410e4b0d00024002400240024002400240024002400240024002400240024020010e0f0001020304050607080e090e0a0b0c000b200041086a280200450d0d200041046a280200102a0c0d0b0240200041086a280200450d00200041046a280200102a0b200041146a280200450d0c200041106a280200102a0c0c0b02402000410c6a2802002202450d00200041046a28020021012002410474210203400240200141046a280200450d002001280200102a0b200141106a2101200241706a22020d000b0b200041086a280200450d0b2000280204102a0c0b0b02402000410c6a2802002202450d00200041046a2802002101200241286c210203400240200141046a280200450d002001280200102a0b0240200141106a280200450d002001410c6a280200102a0b200141286a2101200241586a22020d000b0b200041086a280200450d0a2000280204102a0c0a0b200041086a280200450d09200041046a280200102a0c090b200041086a280200450d08200041046a280200102a0c080b200041086a280200450d07200041046a280200102a0c070b02402000410c6a2802002201450d00200041046a280200220c20014104746a210e03400240200c2802082202450d00200c2802002101200241047421020340024020012d00004109470d000240200141046a220d280200220828020441ffffffff0371450d002008280200102a200d28020021080b2008102a0b200141106a2101200241706a22020d000b0b200c41106a21010240200c41046a280200450d00200c280200102a0b2001210c2001200e470d000b0b200041086a280200450d062000280204102a0c060b02402000410c6a2802002202450d00200041046a2802002101200241146c210203400240200141046a280200450d002001280200102a0b200141146a21012002416c6a22020d000b0b200041086a280200450d052000280204102a0c050b02402000410c6a2802002201450d00200041046a280200220c2001411c6c6a210e03400240200c2802042201450d000240200c410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a220d280200220828020441ffffffff0371450d002008280200102a200d28020021080b2008102a0b200141106a2101200241706a22020d000b0b200c41086a280200450d00200c280204102a0b200c411c6a21010240200c41146a280200450d00200c280210102a0b2001210c2001200e470d000b0b200041086a280200450d042000280204102a0c040b02402000410c6a2802002201450d00200041046a280200220c200141186c6a210e03400240200c41046a280200450d00200c280200102a0b0240200c41146a2802002202450d00200c28020c2101200241047421020340024020012d00004109470d000240200141046a220d280200220828020441ffffffff0371450d002008280200102a200d28020021080b2008102a0b200141106a2101200241706a22020d000b0b200c41186a21010240200c41106a280200450d00200c28020c102a0b2001210c2001200e470d000b0b200041086a280200450d032000280204102a0c030b02402000410c6a2802002201450d00200041046a280200220c2001411c6c6a210e03400240200c2802042201450d000240200c410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a220d280200220828020441ffffffff0371450d002008280200102a200d28020021080b2008102a0b200141106a2101200241706a22020d000b0b200c41086a280200450d00200c280204102a0b200c411c6a21010240200c41146a280200450d00200c280210102a0b2001210c2001200e470d000b0b200041086a280200450d022000280204102a0c020b0240200041046a2802002201450d00200041086a280200450d002001102a0b0240200041146a2802002201450d0002402000411c6a2802002202450d002002410c6c21020340024020012802002208450d00200141046a280200450d002008102a0b2001410c6a2101200241746a22020d000b0b200041186a280200450d002000280214102a0b200041246a280200220c450d0102402000412c6a2802002201450d00200c20014104746a210e0340200c220d41106a210c0240200d2802042201450d000240200d410c6a2802002202450d002002410c6c21020340024020012802002208450d00200141046a280200450d002008102a0b2001410c6a2101200241746a22020d000b0b200d41086a280200450d00200d280204102a0b200c200e470d000b0b200041286a280200450d012000280224102a0c010b0240200041086a280200450d00200041046a280200102a0b0240200041146a2802002201450d00200041186a280200450d002001102a0b200041246a280200450d00200041206a280200102a0b20072011470d000b0b200a450d00200b102a0b200441d0046a24000ba20301067f230041106b2202240020024100360208200242013703002000200210a001200041046a200210a001200041086a200210a00120002d0018210302400240024002400240200228020420022802082204460d00200228020021050c010b200441016a22052004490d03200441017422062005200620054b1b22064100480d030240024020040d002006102821050c010b200228020020042006102c21050b2005450d0120022006360204200220053602000b2002200441016a360208200520046a20033a0000200028020c2106200041146a2802002204200210b4010240024020022802042203200228020822056b2004490d00200228020021000c010b200520046a22002005490d03200341017422072000200720004b1b22074100480d030240024020030d002007102821000c010b200228020020032007102c21000b2000450d022002200736020420022000360200200721030b200020056a20062004109a051a200128020020012802042000200520046a100702402003450d002000102a0b200241106a24000f0b200641011037000b200741011037000b1031000bd60801037f024002400240024002400240024002400240410110282202450d00200220002d00003a0000200241014102102c2202450d01200220002d00013a0001200241024104102c2202450d02200220002d00023a0002200220002d00033a0003200241044108102c2202450d03200220002d00043a0004200220002d00053a0005200220002d00063a0006200220002d00073a0007200241084110102c2202450d04200220002d00083a0008200220002d00093a0009200220002d000a3a000a200220002d000b3a000b200220002d000c3a000c200220002d000d3a000d200220002d000e3a000e200220002d000f3a000f200241104120102c2202450d05200220002d00103a0010200220002d00113a0011200220002d00123a0012200220002d00133a0013200220002d00143a0014200220002d00153a0015200220002d00163a0016200220002d00173a0017200220002d00183a0018200220002d00193a0019200220002d001a3a001a200220002d001b3a001b200220002d001c3a001c200220002d001d3a001d200220002d001e3a001e200220002d001f3a001f2002412041c000102c2202450d06200220002d00203a0020200220002d00213a0021200220002d00223a0022200220002d00233a0023200220002d00243a0024200220002d00253a0025200220002d00263a0026200220002d00273a0027200220002d00283a0028200220002d00293a0029200220002d002a3a002a200220002d002b3a002b200220002d002c3a002c200220002d002d3a002d200220002d002e3a002e200220002d002f3a002f200220002d00303a0030200220002d00313a0031200220002d00323a0032200220002d00333a0033200220002d00343a0034200220002d00353a0035200220002d00363a0036200220002d00373a0037200220002d00383a0038200220002d00393a0039200220002d003a3a003a200220002d003b3a003b200220002d003c3a003c200220002d003d3a003d200220002d003e3a003e200220002d003f3a003f024002402001280200220041046a2802002203200041086a28020022016b41c000490d00200028020021030c010b200141c0006a22042001490d09200341017422012004200120044b1b22014100480d090240024020030d002001102821030c010b200028020020032001102c21030b2003450d0820002003360200200041046a2001360200200041086a28020021010b200041086a200141c0006a360200200320016a220041386a200241386a290000370000200041306a200241306a290000370000200041286a200241286a290000370000200041206a200241206a290000370000200041186a200241186a290000370000200041106a200241106a290000370000200041086a200241086a290000370000200020022900003700002002102a0f0b410141011037000b410241011037000b410441011037000b410841011037000b411041011037000b412041011037000b41c00041011037000b200141011037000b1031000bc32205017f057e097f047e0f7f230041c0056b22032400200241206a2903002104200241186a2903002105200241106a2903002106200241c8006a29030021072002290308210820022802002109200341086a41186a220a200241c0006a220b290300370300200341086a41106a220c200241386a220d290300370300200341086a41086a220e200241306a220f2903003703002003200241286a2202290300370308200341286a41186a2210200b290300370300200341286a41106a2211200d290300370300200341286a41086a220d200f290300370300200320022903003703282001280200210b20034180026a41186a2202200a29030037030020034180026a41106a220f200c29030037030020034180026a41086a220c200e2903003703002003200329030837038002024002400240024041381028220a450d00200a4200370308200a4200370300200a2009360210200a2003290328370214200a411c6a200d290300370200200a41246a2011290300370200200a412c6a2010290300370200200341d0016a41086a200c290300370300200341d0016a41106a200f290300370300200341d0016a41186a200229030037030020032003290380023703d001024002400240200b2802082202200b41046a280200470d00200241016a220c2002490d012002410174220d200c200d200c4b1b220cad42d0007e2212422088a70d012012a7220d4100480d010240024020020d00200d102821020c010b200b280200200241d0006c200d102c21020b2002450d02200b2002360200200b41046a200c360200200b28020821020b200b280200200241d0006c6a2202420037031020022004370308200220053703002002200a360220200220032903d00137022c200241186a4200370300200241246a428180808010370200200241346a200341d0016a41086a220a2903003702002002413c6a200341d0016a41106a220e290300370200200241c4006a200341d0016a41186a2202290300370200200b200b28020841016a3602082001280204210f20034190016a41186a200341286a41186a29030037030020034190016a41106a200341286a41106a29030037030020034190016a41086a200341286a41086a2903003703002003200329032837039001024002400240200f280200220c41f8b9c000460d00200f280204210d0c010b4100210d20034180026a410041e0021099051a200341f8016a220b4100360200200341f0016a2201420037030020024200370300200e4200370300200a4200370300200342003703d0014194031028220c450d01200c41003b0106200c4100360200200c41086a20034180026a41e002109a051a200c4190036a200b280200360200200c4188036a2001290300370200200c4180036a200341e8016a290300370200200c41f8026a200341e0016a290300370200200c41f0026a200341d0016a41086a290300370200200c20032903d0013702e802200f4100360204200f200c3602000b02400340200c41086a210a200c41066a2110200c2f0106220e41057421024100210b0240024003402002450d0120034190016a200a4120109c052201450d02200241606a2102200b41016a210b200a41206a210a2001417f4a0d000b200b417f6a210e0b200d450d02200d417f6a210d200c200e4102746a4194036a280200210c0c010b0b200c200b4102746a41e8026a20093602000c060b200341c8006a41186a20034190016a41186a22022903002212370300200341c8006a41106a20034190016a41106a220a2903002213370300200341c8006a41086a20034190016a41086a220b290300221437030020032003290390012215370348200f200f28020841016a36020820022012370300200a2013370300200b20143703002003201537039001024002400240024020102f0100220d410b490d0020034180026a410041e0021099051a200341f8016a22024100360200200341f0016a220a4200370300200341d0016a41186a4200370300200341d0016a41106a4200370300200341d0016a41086a4200370300200342003703d00141940310282211450d03201141003b010620114100360200201141086a20034180026a41e002109a05210b20114190036a200228020036020020114188036a200a29030037020020114180036a200341d0016a41186a290300370200201141f8026a200341d0016a41106a290300370200201141f0026a200341d0016a41086a290300370200201120032903d0013702e8022003200c2f00c8013b01cc012003200c41ca016a2d00003a00ce01200c41cb016a2800002116200c41cf016a2800002117200c41d3016a2800002118200c41d7016a28000021192003200c41e0016a2900003700bd012003200c2900db013703b801200c28028003211a200b200c41e8016a200c2f010641796a2202410574109a05210b201141e8026a200c4184036a2002410274109a052101200c41063b0106201120023b0106200320032f01cc013b01b401200320032d00ce013a00b601200320032903b8013703d001200320032900bd013700d501200e4107490d01201141066a2110200b200e417a6a220d4105746a200b200e41796a220a4105746a220b200241ffff0371200a6b410574109b051a200b41186a20034190016a41186a290300370000200b41106a20034190016a41106a290300370000200b41086a20034190016a41086a290300370000200b2003290390013700002001200d4102746a210b2001200a4102746a21020c020b200c41086a2201200e41016a220f4105746a2001200e4105746a2201200d200e6b410574109b051a200141186a2002290300370000200141106a200a290300370000200141086a200b2903003700002001200329039001370000200c41e8026a2202200f4102746a2002200e4102746a2202200c2f0106200e6b410274109b051a20022009360200200c200c2f010641016a3b01060c080b200c41086a2202200e41016a220a4105746a2002200e4105746a220220102f0100200e6b410574109b051a200241186a20034190016a41186a290300370000200241106a20034190016a41106a290300370000200241086a20034190016a41086a2903003700002002200329039001370000200c41e8026a220b200e4102746a2102200b200a4102746a210b200e210a0b200b200220102f0100200a6b410274109b051a20022009360200201020102f010041016a3b0100200341b0016a41026a221b20032d00b60122023a0000200341fc006a41026a221c20023a0000200320032900d50137008501200320032903d00137038001200320032f01b40122023b01b001200320032900850137006d2003200329038001370368200320023b017c200c280200220d450d05200c2f0104211020034180026a410272211d0340201b201c2d00003a0000200320032f017c3b01b00120032003290368370390012003200329006d37009501201041ffff0371210c02400240024002400240200d2f01062202410b490d00201d410041be031099051a41c40310282201450d0320014100360200200141046a20034180026a41c003109a051a2003200d2f00c8013b01cc012003200d41ca016a2d00003a00ce012003200d41db016a2900003703b8012003200d41e0016a2900003700bd01200d41cb016a280000211e200d41cf016a280000211f200d41d3016a2800002120200d41d7016a2800002121200d4180036a2802002122200141086a200d41e8016a200d2f0106220a41796a2202410574109a052123200141e8026a200d4184036a2002410274109a05212420014194036a200d41b0036a200a417a6a220e410274109a052109200d41063b0106200120023b01060240200e450d00410021022009210a0340200a280200220b20023b0104200b2001360200200a41046a210a200e200241016a2202470d000b0b200320032d00ce0122023a00b601200320032f01cc01220a3b01b401200320032903b8013703d001200320032900bd013700d50120034180016a41026a220e20023a00002003200a3b018001200320032903d00137038002200320032900d50137008502201041ffff0371220a4107490d012023200c417a6a220b4105746a2023200c41796a22024105746a220a20012f010620026b410574109b051a200a41186a200329009501370000200a201936000f200a201836000b200a2017360007200a2016360003200a41026a201b2d00003a0000200a20032f01b0013b0000200a2003290390013700132024200b410274220a6a202420024102746a221020012f0106221620026b410274109b051a2010201a3602002001201641016a22103b0106200c410274221620096a416c6a2009200a6a220a201041ffff0371220c200b6b410274109b051a200a2011360200200c200b490d02200120166a41fc026a210a0340200a280200220b200241016a22023b0104200b2001360200200a41046a210a2002200c490d000c030b0b200d41086a220a200c41016a220b4105746a200a200c4105746a220a2002200c6b410574109b051a200a41186a200329009501370000200a201936000f200a201836000b200a2017360007200a2016360003200a41026a200341b0016a41026a2d00003a0000200a20032f01b0013b0000200a200329039001370013200d41e8026a2202200b410274220a6a2002200c41027422016a2202200d2f0106220e200c6b410274109b051a2002201a360200200d200e41016a22023b01062001200d4194036a220c6a41086a200c200a6a220a200241ffff03712201200b6b410274109b051a200a2011360200201041ffff037120014f0d0b200d200b417f6a22024102746a4198036a210a0340200a280200220b200241016a22023b0104200b200d360200200a41046a210a20022001490d000c0c0b0b200d41086a2202200c41016a22104105746a2002200c4105746a2202200d2f0106200c6b410574109b051a200241186a2003290095013700002002201936000f2002201836000b2002201736000720022016360003200241026a201b2d00003a0000200220032f01b0013b00002002200329039001370013200d41e8026a220b201041027422096a200b200c41027422026a220b200d2f01062216200c6b410274109b051a200b201a360200200d201641016a220b3b01062002200d4194036a22166a41086a201620096a2209200b41ffff0371220b20106b410274109b051a20092011360200200a200b4f0d00200d20026a4198036a210203402002280200220a200c41016a220c3b0104200a200d360200200241046a2102200b200c470d000b0b201c200e2d00003a0000200320032f0180013b017c2003200329038002370368200320032900850237006d200d28020022020d01201e21162021211920202118201f2117200121112022211a0c080b41c40341041037000b200d2f01042110201e21162021211920202118201f21172002210d2022211a200121110c000b0b41940341041037000b41940341041037000b1031000b200d41081037000b413841081037000b20034180026a410272410041be031099051a41c40310282202450d0120024100360200200241046a20034180026a41c003109a051a2002200f280200220a36029403200f2002360200200f200f28020441016a360204200a41003b0104200a2002360200200220022f0106220b4105746a220a41086a20032f017c3b0000200a410a6a200341fc006a41026a2d00003a0000200a41176a2019360000200a41136a2018360000200a410f6a2017360000200a410b6a2016360000200a411b6a2003290368370000200a41206a200329006d37000020024194036a200b41016a220a4102746a20113602002002200b4102746a41e8026a201a3602002002200a3b01062011200a3b0104201120023602000b20002005370310200020083703002000200329032837032020002007370340200041186a200437030020002006370308200041286a200341306a290300370300200041306a200341386a290300370300200041386a200341286a41186a290300370300200341c0056a24000f0b41c40341041037000b0a0041c8c2c2001032000b5101027e024002402003450d002002280200450d010b41b698c40041f4031050000b2001280218220342002003290308220420023502047d2205200520045622021b37030820004105410420021b3602000bee0201047f024002400240024002402002417f4c0d000240024020020d00410121060c010b200210282206450d020b200620012002109a0521062004417f4c0d000240024020040d0041012101410021070c010b20042107200410282201450d030b200120032004109a052103024020002802082201200041046a280200470d00200141016a22082001490d05200141017422092008200920084b1b220841ffffff3f712008470d05200841057422094100480d050240024020010d002009102821010c010b200028020020014105742009102c21010b2001450d0420002001360200200041046a2008360200200028020821010b200028020020014105746a220141003602182001200336020c2001200236020820012002360204200120063602002001411c6a2005360200200141146a2004360200200141106a20073602002000200028020841016a3602080f0b1036000b200241011037000b200441011037000b200941041037000b1031000bf90e05047f027e027f017e027f230041c00c6b2204240002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d0220034103460d0320022802300d0320022802042105200241246a2802002106200241346a280200210302400240200241146a2802002207450d004105210220012802002802182802402802bc012003490d010b200441286a4200370300200441206a4200370300200441186a420037030020012802182202420020022903082208427f20012802102903482209420586200942ffffffffffffffff07832009521b7d22092009200856220a1b3703082004420037031041052102200a0d000240024020012802142802082005200441106a4120101741026a220a41024b0d00200a0e03020001020b41a0fac5001032000b0240024020070d00410121034100210b0c010b2004200128021029034842002003ad220c4200109f052001280218220a4200200a2903082209427f200429030020042903084200521b7d22082008200956220a1b370308200a0d012003417f4c0d060240024020030d004101210b02402001280214280208200641014100101741026a220341024b0d0020030e03040002040b41a0fac5001032000b024002402003102e220b450d00024020012802142802082006200b2003101741026a220341024b0d0020030e03020003020b41a0fac5001032000b200341011037000b200b102a0c020b200c422086200c842109200b4521030b20012802002101200441306a41186a220a200441106a41186a290300370300200441306a41106a2205200441106a41106a290300370300200441306a41086a2206200441106a41086a2903003703002004200429031037033020012802182107024020030d0020072802402802bc012009422088a74f0d002009a7450d01200b102a0c010b200441d0006a41186a200a290300370300200441d0006a41106a2005290300370300200441d0006a41086a20062903003703002004200429033037035020072802180d062007417f360218200441a8016a200741e8006a290000370300200441a0016a200741e0006a29000037030020044198016a200741d8006a2900003703002004200729005037039001024002402007411c6a220d280200220a41f8b9c000460d00200741206a28020021060c010b41002106200441e0096a410041e0021099051a200441c0016a410041a0081099051a41880b1028220a450d08200a41003b0106200a4100360200200a41086a200441e0096a41e002109a051a200a41e8026a200441c0016a41a008109a051a200741206a41003602002007200a36021c0b024002400340200a2f0106220e4105742105410021024100210302400240034020052002460d0120044190016a200a20026a41086a4120109c052201450d02200241206a2102200341016a21032001417f4a0d000b2003417f6a210e0b2006450d022006417f6a2106200a200e4102746a41880b6a280200210a0c010b0b200741246a2101410121020c010b200441f0006a41186a20044190016a41186a290300370300200441f0006a41106a20044190016a41106a290300370300200441f0006a41086a20044190016a41086a2903003703002004200429039001370370200741246a210141002106200e2103410021020b0240024020020d00200441fc096a200441f0006a41086a290300370200200441840a6a200441f0006a41106a2903003702002004418c0a6a200441f0006a41186a290300370200200420013602f009200420033602ec092004200d3602e8092004200a3602e409200420063602e009200420042903703702f409200441e0016a20042903b001370300200441e8016a200441b0016a41086a290300370300200441f4016a4200370200200442003703d801200442003703c001200441f8b9c0003602f001200441003a00fc01200441fd016a20042900900137000020044185026a20044190016a41086a2900003700002004418d026a20044190016a41106a29000037000020044195026a20044190016a41186a290000370000200441003a009d02200441e0096a200441c0016a10b70121020c010b200441d8016a4200370300200441d4016a41f8b9c000360200200441003602e001200441003602d001200442003703c801200441f8b9c0003602c401200441003602c001200a200341e0006c6a41e8026a2102200441c0016a1095010b200441c0016a41186a200441d0006a41186a290300370300200441c0016a41106a200441d0006a41106a290300370300200441c0016a41086a200441d0006a41086a290300370300200420042903503703c00120042009370294012004200b36029001200441e0096a200241306a200441c0016a20044190016a10bd01024020042802e009450d0020042802e4092202450d00200441e8096a280200450d002002102a0b2007200728021841016a360218410421020b20002002360200200441c00c6a24000f0b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b1036000b41a8b8c0004110200441c0016a41d0b8c0001038000b41880b41081037000b900302017f027e230041c0006b22042400024002402003450d0020022802000d0020022802042103200441186a4200370300200441106a4200370300200441086a420037030020012802182202420020022903082205427f20012802102903482206420586200642ffffffffffffffff07832006521b7d2206200620055622021b3703082004420037030002400240024020020d00024002402001280214280208200320044120101741026a220241024b0d0020020e03020001020b41a0fac5001032000b200441206a2001280200280218220241186a200241d0006a2002410c6a4100200228020c1b200410a7012004280220450d01200441306a41086a2203200441206a41086a28020036020020042004290320370330200141046a21020240200141086a280200450d002002280200102a0b20022004290330370200200241086a2003280200360200410021010c020b200041053602000c030b2001410c6a4100360200410121010b20004100360200200020013602040c010b41b698c40041f4031050000b200441c0006a24000bae0f06017f017e057f027e037f027e230041d0016b220424000240024002400240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802204101470d0220034103460d0320022802300d0320034104460d0420022802400d0420034105460d0520022802500d0520034106460d0620022802600d0620022802042103200241286a2903002105200241346a2802002106200241c4006a2802002107200241d4006a2802002108200241e4006a2802002109200441286a20012802102903484200200241146a280200220aad4200109f052001280218220242002002290308220b427f200429032820042903304200521b7d220c200c200b5622021b370308024020020d00200a417f4c0d0802400240024002400240200a0d004101210d02402001280214280208200341014100101741026a220241024b0d00200141146a210e20020e03060002060b41a0fac5001032000b0240200a102e220d450d00024020012802142802082003200d200a101741026a220241024b0d00200141146a210e20020e03030002030b41a0fac5001032000b200a41011037000b41002102200441003a00980102400340200a2002460d01200441f8006a20026a200d20026a2d00003a00002004200241016a22033a0098012003210220034120470d000b200441a0016a41186a2202200441f8006a41186a290300370300200441a0016a41106a2203200441f8006a41106a290300370300200441a0016a41086a220f200441f8006a41086a290300370300200420042903783703a0010240200a450d00200d102a0b200441386a41086a200f290300370300200441386a41106a2003290300370300200441386a41186a2002290300370300200420042903a001370338200441186a200128021029034842002007ad4200109f052001280218220242002002290308220b427f200429031820042903204200521b7d220c200c200b5622021b37030820020d042007417f4c0d0c20070d03200e280200280208200641014100101741026a220241024b0d0220020e03040204040b0240200241ff0171450d00200441003a0098010b200a450d030b200d102a0c020b41a0fac5001032000b0240024002402007102e2202450d000240200e280200280208200620022007101741026a220341024b0d0020030e03030002030b41a0fac5001032000b200741011037000b2007410f4d0d00200241086a2900002110200229000021112002102a200441086a200128021029034842002009ad4200109f052001280218220242002002290308220b427f200429030820042903104200521b7d220c200c200b5622021b37030820020d01200141046a210a0240024020092001410c6a220d28020022034b0d00200921020c010b02400240200141086a280200220220036b200920036b2206490d00200a2802002107200321020c010b200320066a22072003490d0d2002410174220e2007200e20074b1b220e4100480d0d0240024020020d00200e102821070c010b200a2802002002200e102c21070b2007450d0c20012007360204200141086a200e3602002001410c6a28020021020b200720026a210e0240024020064102490d00200e410020092003417f7322036a22061099051a2007200920026a20036a6a210e200620026a21020c010b2006450d010b200e41003a0000200241016a21020b200d2002360200024002402001280214280208200820012802042002101741026a220241024b0d0020020e03030001030b41a0fac5001032000b2001410c6a2202280200210720024100360200200141086a28020021032001280204210d2001420137020420012802182202290308220c210b024002402005500d002005210b200c2005540d010b2002200c200b7d3703082002290310210c200441a0016a41186a200241186a2903003703002004200b3703a8012004200b3703a0012004200c3703b001200128020041186a2802002106200441f8006a41186a200441386a41186a290300370300200441f8006a41106a200441386a41106a290300370300200441f8006a41086a200441386a41086a29030037030020042004290338370378200420073602c801200420033602c4012004200d3602c001200441d8006a2006200441f8006a20112010200441a0016a200441c0016a10c101410121090240024020042802584101460d00200441d8006a410472210d200441d8006a41106a2d00002107200441e4006a2802002106200441e0006a2802002103410021090c010b200441e4006a210d200441ec006a2802002106200441d8006a41106a2802002103410021070b200d280200210d200220042903a80120022903087c370308200141086a2802002102024020090d0002402002450d00200a280200102a0b200a200d3602000c0e0b2002450d00200a280200102a0b200a200d3602004180022107410021060c0c0b2002102a0b200041053602000c0b0b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b1036000b200e41011037000b1031000b2001410c6a2006360200200141086a200336020020004100360200200020073602040b200441d0016a24000bc71006017f017e057f027e037f027e230041e0016b2204240002400240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802204101470d0220034103460d0320022802300d0320034104460d0420022802400d0420034105460d0520022802500d0520034106460d0620022802600d0620022802042103200241286a2903002105200241346a2802002106200241c4006a2802002107200241d4006a2802002108200241e4006a2802002109200441206a20012802102903484200200241146a280200220aad4200109f052001280218220242002002290308220b427f200429032020042903284200521b7d220c200c200b5622021b3703080240024020020d00200a417f4c0d0902400240024002400240200a0d004101210d02402001280214280208200341014100101741026a220241024b0d00200141146a210e20020e03060002060b41a0fac5001032000b0240200a102e220d450d00024020012802142802082003200d200a101741026a220241024b0d00200141146a210e20020e03030002030b41a0fac5001032000b200a41011037000b41002102200441003a00c80102400340200a2002460d01200441a8016a20026a200d20026a2d00003a00002004200241016a22033a00c8012003210220034120470d000b20044188016a41186a2202200441a8016a41186a29030037030020044188016a41106a2203200441a8016a41106a29030037030020044188016a41086a220f200441a8016a41086a290300370300200420042903a801370388010240200a450d00200d102a0b200441306a41086a200f290300370300200441306a41106a2003290300370300200441306a41186a20022903003703002004200429038801370330200441106a200128021029034842002007ad4200109f052001280218220242002002290308220b427f200429031020042903184200521b7d220c200c200b5622021b37030820020d042007417f4c0d0d20070d03200e280200280208200641014100101741026a220241024b0d0220020e03040204040b0240200241ff0171450d00200441003a00c8010b200a450d030b200d102a0c020b41a0fac5001032000b0240024002402007102e2202450d000240200e280200280208200620022007101741026a220341024b0d0020030e03030002030b41a0fac5001032000b200741011037000b2007410f4d0d00200241086a2900002110200229000021112002102a2004200128021029034842002009ad4200109f052001280218220242002002290308220b427f200429030020042903084200521b7d220c200c200b5622021b37030820020d01200141046a21070240024020092001410c6a220a28020022034b0d00200921020c010b02400240200141086a280200220220036b200920036b2206490d002007280200210d200321020c010b200320066a220d2003490d0e2002410174220e200d200e200d4b1b220e4100480d0e0240024020020d00200e1028210d0c010b20072802002002200e102c210d0b200d450d0d2001200d360204200141086a200e3602002001410c6a28020021020b200d20026a210e0240024020064102490d00200e410020092003417f7322036a22061099051a200d200920026a20036a6a210e200620026a21020c010b2006450d010b200e41003a0000200241016a21020b200a2002360200024002402001280214280208200820012802042002101741026a220241024b0d0020020e03030001030b41a0fac5001032000b2001410c6a2202280200210d20024100360200200141086a28020021032001280204210a2001420137020420012802182202290308220c210b0240024002402005500d002005210b200c2005540d010b2002200c200b7d3703082002290310210c20044188016a41186a200241186a2903003703002004200b370390012004200b370388012004200c37039801200128020041186a28020021062004200d360258200420033602542004200a360250200441a8016a20062011201020044188016a200441306a200441d0006a10b5014101210d0240024020042802a8014101460d00200441d0006a41086a200441a8016a41186a290300370300200441d0006a41106a200441c8016a2802003602002004200441a8016a41106a290300370350200441d8016a2d00002106200441d0016a2802002109200441cc016a2802002108200441b4016a280200210e200441a8016a41086a28020021034100210d20042802ac01210a0c010b200441bc016a280200210e200441b8016a2802002103200441b4016a280200210a410021060b200220042903900120022903087c370308200441f0006a41086a2202200441d0006a41086a290300370300200441f0006a41106a220f200441d0006a41106a280200360200200420042903503703700240200d0d00200441bc016a2002290300370200200441c4016a200f2802003602002004200e3602b001200420033602ac012004200a3602a801200420042903703702b4010240200141086a280200450d002007280200102a0b200120083602042001410c6a4100360200200141086a2009360200200641ff017122020d02200441a8016a2007108f010c020b200141086a280200450d002007280200102a0b2001200a3602042001410c6a4100360200200141086a200336020041800221020b20004100360200200020023602040c020b2002102a0b200041053602000b200441e0016a24000f0b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b1036000b200e41011037000b1031000b9d0503027f037e057f230041206b2204240002400240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200441106a20012802102903184200200241146a2802002203ad22064200109f0520012802182202420020022903082207427f200429031020042903184200521b7d2208200820075622021b370308024020020d0020042001280210290348420020064200109f0520012802182202420020022903082207427f200429030020042903084200521b7d2208200820075622021b37030820020d000240024020032001410c6a2209280200220a4b0d00200321020c010b02400240200141086a2802002202200a6b2003200a6b220b490d002001280204210c200a21020c010b200a200b6a220c200a490d062002410174220d200c200d200c4b1b220d4100480d060240024020020d00200d1028210c0c010b20012802042002200d102c210c0b200c450d052001200c360204200141086a200d3602002001410c6a28020021020b200c20026a210d02400240200b4102490d00200d41002003200a417f73220a6a220b1099051a200c200320026a200a6a6a210d200b20026a21020c010b200b450d010b200d41003a0000200241016a21020b20092002360200024002402001280214280208200520012802042002101741026a220241024b0d0020020e03020001020b41a0fac5001032000b2001410c6a2202280200210320024100360200200141086a280200210220012802042105200142013702040240200128021c220a450d00200141206a280200450d00200a102a0b2001200536021c200141246a2003360200200141206a20023602000b20004105360200200441206a24000f0b41b698c40041f4031050000b41b698c40041f4031050000b200d41011037000b1031000b23002001410c6a4100360200200128020041206a200141046a108f01200041043602000b27002001410c6a4100360200200128020028021841d0006a200141046a108f01200041043602000bd50102027f027e410021042001410c6a41003602002001280218220541186a2903002106200529031021070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102821050c010b200128020420052004102c21050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b200441011037000b1031000bc20103017f017e017f410021042001410c6a4100360200200128021829030821050240024002400240200141086a28020022064108490d00200128020421060c010b200641017422044108200441084b1b22044100480d020240024020060d002004102821060c010b200128020420062004102c21060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441086a360200200620046a2005370000200041043602000f0b200441011037000b1031000bb804020b7f027e230041206b220424002001410c6a41003602000240024002402001280200280218220528021841016a220641004c0d00200541d0006a2107200520063602182005411c6a2108200541206a28020021090240024003402008280200220a41086a210b200a2f0106220c41057421084100210d0240024003402008450d012007200b4120109c05220e450d02200841606a2108200d41016a210d200b41206a210b200e417f4a0d000b200d417f6a210c0b2009450d022009417f6a2109200a200c4102746a41880b6a21080c010b0b200a200d41e0006c6a220841c5036a310000200841e8026a290300220f200f50220b1ba7450d004200200841f8026a290300200b1b210f4200200841f0026a290300200b1b21100c010b200441086a200541286a28020020072005412c6a28020028021c110500200441106a290300210f20052802182106200429030821100b20052006417f6a36021802400240200141086a280200220b2001410c6a28020022086b4110490d002001280204210b0c010b200841106a220d2008490d03200b4101742208200d2008200d4b1b22084100480d0302400240200b0d0020081028210b0c010b2001280204200b2008102c210b0b200b450d022001200b360204200141086a20083602002001410c6a28020021080b2001410c6a200841106a360200200b20086a2208200f3700082008201037000020004104360200200441206a24000f0b41b8b8c0004118200441186a41e0b8c0001038000b200841011037000b1031000bd50102027f027e410021042001410c6a41003602002001280200220541086a2903002106200529030021070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102821050c010b200128020420052004102c21050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b200441011037000b1031000b860302047f027e230041c0006b220424000240024002402003450d0020022802000d0020034101460d0120022802100d01410521050240200241146a28020022032001280210220628026c4b0d0020022802042107200441086a200629034842002003ad4200109f0520012802182202420020022903082208427f200429030820042903104200521b7d2209200920085622021b37030820020d002003417f4c0d0302400240024020030d004101210202402001280214280208200741014100101741026a220641024b0d0020060e03040002040b41a0fac5001032000b02402003102e2202450d0002402001280214280208200720022003101741026a220641024b0d0020060e03030002030b41a0fac5001032000b200341011037000b2001410c6a4100360200200441186a2002200310a803410421052004200141046a36023c200441186a2004413c6a10c8012003450d010b2002102a0b20002005360200200441c0006a24000f0b41b698c40041f4031050000b41b698c40041f4031050000b1036000bc20103017f017e017f410021042001410c6a4100360200200128020029031021050240024002400240200141086a28020022064108490d00200128020421060c010b200641017422044108200441084b1b22044100480d020240024020060d002004102821060c010b200128020420062004102c21060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441086a360200200620046a2005370000200041043602000f0b200441011037000b1031000bdc0102027f027e410021042001410c6a4100360200200128020028021828024022054180016a2903002106200529037821070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102821050c010b200128020420052004102c21050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b200441011037000b1031000bb20803027f047e027f230041e0046b2204240002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200441286a20012802102903484200200241146a2802002202ad4200109f0520012802182203420020032903082206427f200429032820042903304200521b7d2207200720065622031b3703080240024020030d002002417f4c0d0402400240024020020d004101210302402001280214280208200541014100101741026a220541024b0d0020050e03040002040b41a0fac5001032000b02402002102e2203450d0002402001280214280208200520032002101741026a220541024b0d0020050e03030002030b41a0fac5001032000b200241011037000b2004200236023c20042003360238200441d0036a200441386a108101024020042802d00322054113460d00200441c8026a200441d0036a410472418401109a051a02402002450d002003102a0b200441c0016a200441c8026a418401109a051a20042005360238200441386a410472200441c0016a418401109a051a200441003602d803200442013703d003200441386a200441d0036a10eb0120042802d8032103024020042802d403450d0020042802d003102a0b200128021822022903102206200241186a2903002207844200510d07200441186a2003ad42004280c8afa0254200109f05200441086a200429031822084280a094a58d1d7c2209200441186a41086a2903002009200854ad7c2006200710a00520024200200229030822062004290308427f200441086a41086a290300501b7d220720072006561b37030820072006580d03200441386a106a0c020b2002450d010b2003102a0b410521020c070b20012802002102200441c8026a200441386a418801109a051a200441c0016a41086a2002280218220241d8006a290000370300200441d0016a2203200241e0006a290000370300200441d8016a2205200241e8006a290000370300200420022900503703c001200441d7036a200441c8026a418801109a051a02402002413c6a2802002201200241386a280200470d00200141016a220a2001490d062001410174220b200a200b200a4b1b220aad42b0017e2206422088a70d062006a7220b4100480d060240024020010d00200b102821010c010b2002280234200141b0016c200b102c21010b2001450d0520022001360234200241386a200a360200200228023c21010b2002280234200141b0016c6a220141013a0000200120042903c001370001200141096a200441c8016a290300370000200141116a2003290300370000200141196a2005290300370000200141216a200441d0036a418f01109a051a2002200228023c41016a36023c410421020c060b41b698c40041f4031050000b41b698c40041f4031050000b1036000b419cb7c0001032000b200b41081037000b1031000b20002002360200200441e0046a24000b8c1705087f027e037f027e047f230041a0026b22042400024002400240024002400240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d0220034103460d0320022802300d0320034104460d0420022802400d0420034105460d0520022802500d0520034106460d0620022802600d0620034107460d0720022802700d0720022802042103200241246a2802002105200241346a2802002106200241c4006a2802002107200241d4006a2802002108200241e4006a2802002109200241f4006a280200210a200441206a20012802102903484200200241146a280200220bad4200109f052001280218220242002002290308220c427f200429032020042903284200521b7d220d200d200c5622021b3703080240024020020d00200b417f4c0d0a024002400240200b0d004101210e02402001280214280208200341014100101741026a220241024b0d00200141146a210f20020e03040002040b41a0fac5001032000b0240200b102e220e450d00024020012802142802082003200e200b101741026a220241024b0d00200141146a210f20020e03030002030b41a0fac5001032000b200b41011037000b41002102200441003a00f00102400340200b2002460d01200441d0016a20026a200e20026a2d00003a00002004200241016a22033a00f0012003210220034120470d000b20044180026a41086a2202200441d0016a41086a29030037030020044180026a41106a2203200441d0016a41106a29030037030020044180026a41186a2210200441d0016a41186a290300370300200420042903d001370380020240200b450d00200e102a0b200441306a41086a2002290300370300200441306a41106a2003290300370300200441306a41186a20102903003703002004200429038002370330200441106a200128021029034842002006ad4200109f052001280218220242002002290308220c427f200429031020042903184200521b7d220d200d200c5622021b3703082002450d030c100b0240200241ff0171450d00200441003a00f0010b200b450d010b200e102a0b200441f0006a41186a20044180026a41186a290300370300200441f0006a41106a20044180026a41106a290300370300200441f0006a41086a20044180026a41086a2903003703002004200429038002370370410521020c0e0b2006417f4c0d080240024002400240024020060d004101210b0240200f280200280208200541014100101741026a220241024b0d0020020e03120002120b41a0fac5001032000b02402006102e220b450d000240200f2802002802082005200b2006101741026a220241024b0d0020020e03030002030b41a0fac5001032000b200641011037000b41002102200441003a00f0010240034020062002460d01200441d0016a20026a200b20026a2d00003a00002004200241016a22033a00f0012003210220034120470d000b20044180026a41086a2202200441d0016a41086a29030037030020044180026a41106a2203200441d0016a41106a29030037030020044180026a41186a220e200441d0016a41186a290300370300200420042903d0013703800202402006450d00200b102a0b200441d0006a41086a2002290300370300200441d0006a41106a2003290300370300200441d0006a41186a200e29030037030020042004290380023703502004200128021029034842002008ad4200109f052001280218220242002002290308220c427f200429030020042903084200521b7d220d200d200c5622031b3703084105210220030d112008417f4c0d0c20080d03200f280200280208200741014100101741026a220341024b0d0220030e03110211110b0240200241ff0171450d00200441003a00f0010b2006450d0f0b200b102a410521020c0f0b41a0fac5001032000b024002400240024002402008102e2203450d000240200f280200280208200720032008101741026a220b41024b0d00200b0e03030002030b41a0fac5001032000b200841011037000b2008410f4d0d00200341086a2900002111200329000021122003102a024002400240200a0d00410121064100210b4100210e0c010b20044180026a41186a210320044180026a41106a210520044180026a41086a210841002110410021024100210b4100210e4101210603402003420037030020054200370300200842003703002001280218220742002007290308220d427f2001280210290348220c420586200c42ffffffffffffffff0783200c521b7d220c200c200d5622071b370308200442003703800220070d1102400240200f280200280208200920026a221320044180026a4120101741026a220741024b0d0020070e03130001130b41a0fac5001032000b200441d0016a41186a22142003290300370300200441d0016a41106a22152005290300370300200441d0016a41086a2216200829030037030020042004290380023703d0010240200b200e470d002010200b41016a220e2010200e4b1b220e41ffffff3f71200e470d03200e41057422074100480d0302400240200b0d002007102821060c010b200620022007102c21060b2006450d100b200620026a220720042903d001370000200741186a2014290300370000200741106a2015290300370000200741086a2016290300370000201341206a2013490d11201041026a2110200241206a2102200a200b41016a220b470d000b0b2001280200280218210320044190016a41086a200441306a41086a29030037030020044190016a41106a2201200441306a41106a29030037030020044190016a41186a2205200441306a41186a290300370300200441b0016a41086a200341d8006a290000370300200441b0016a41106a2208200341e0006a290000370300200441b0016a41186a2207200341e8006a2900003703002004200429033037039001200420032900503703b00120044180026a41186a220a200441d0006a41186a29030037030020044180026a41106a2209200441d0006a41106a29030037030020044180026a41086a200441d0006a41086a29030037030020042004290350370380022003413c6a2802002202200341386a280200470d03200241016a220f2002490d0020024101742210200f2010200f4b1b220fad42b0017e220c422088a70d00200ca7221041004e0d020b1031000b2003102a0c0f0b0240024020020d002010102821020c010b2003280234200241b0016c2010102c21020b2002450d0b20032002360234200341386a200f360200200328023c21020b2003280234200241b0016c6a220241023a0000200220042903b0013700012002200429039001370021200241096a200441b0016a41086a290300370000200241116a2008290300370000200241196a2007290300370000200241296a20044190016a41086a290300370000200241316a2001290300370000200241396a2005290300370000200220063600642002200e3600682002200b36006c20022012370370200241f8006a20113703002002200429038002370041200241c9006a20044180026a41086a290300370000200241d1006a2009290300370000200241d9006a200a290300370000200220042f00703b0061200241e3006a200441f0006a41026a2d00003a0000200220042903d0013703800120024188016a200441d0016a41086a29030037030020024190016a200441d0016a41106a29030037030020024198016a200441d0016a41186a290300370300200241a0016a200441f0016a290300370300200241a8016a200441f8016a2903003703002003200328023c41016a36023c410421020c0d0b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b1036000b200741011037000b201041081037000b41052102200e450d012006102a0c010b410521020b20002002360200200441a0026a24000b16002000410036020020002001410c6a2802003602040bab0202057f027e230041106b220424000240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d024105210302402001410c6a2802002205200241146a2802002206490d00200520066b200241246a2802002205470d0020022802042107200128020421082004200128021029035042002005ad4200109f0520012802182202420020022903082209427f200429030020042903084200521b7d220a200a20095622021b37030820020d000240024020012802142802082007200820066a2005101841026a220241024b0d0020020e03020001020b41b0fbc5001032000b410421030b20002003360200200441106a24000f0b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000bf90303027f027e067f230041106b2204240002400240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200420012802102903484200200241146a2802002203ad4200109f0520012802182202420020022903082206427f200429030020042903084200521b7d2207200720065622021b37030841052108024020020d000240024020032001410c6a2209280200220a4b0d00200321020c010b02400240200141086a2802002202200a6b2003200a6b220b490d002001280204210c200a21020c010b200a200b6a220c200a490d062002410174220d200c200d200c4b1b220d4100480d060240024020020d00200d1028210c0c010b20012802042002200d102c210c0b200c450d052001200c360204200141086a200d3602002001410c6a28020021020b200c20026a210d02400240200b4102490d00200d41002003200a417f73220a6a220b1099051a200c200320026a200a6a6a210d200b20026a21020c010b200b450d010b200d41003a0000200241016a21020b20092002360200024002402001280214280208200520012802042002101741026a220141024b0d0020010e03020001020b41a0fac5001032000b410421080b20002008360200200441106a24000f0b41b698c40041f4031050000b41b698c40041f4031050000b200d41011037000b1031000bbb0b05047f027e037f017e037f230041e0016b2204240002400240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d0220034103460d0320022802300d03200241246a2802002105200241346a280200210602400240024002400240200241146a2802002203450d0020022802042107200441306a200128021029034842002003ad4200109f0520012802182202420020022903082208427f200429033020042903384200521b7d22092009200856220a1b37030841052102200a0d0e2003417f4c0d092003102e220a450d0a024020012802142802082007200a2003101741026a220741024b0d0020070e03040002040b41a0fac5001032000b4101210b410021074100210c0c010b2004200336028c012004200a36028801200441c0006a20044188016a106d200429024421082004280240210b200a102a200b450d0c2008a7210c200128021028025c2008422088a72207490d0b0b200b2007410041202007676b10c402024020074102490d00200b21022007210303402002200241206a220a4120109c05450d0c200a21022003417f6a220341024f0d000b0b200441206a200128021029034842002006ad220d4200109f0520012802182202420020022903082208427f200429032020042903284200521b7d2209200920085622021b37030820020d0a2006417f4c0d060240024020060d004101210a02402001280214280208200541014100101741026a220241024b0d0020020e030d00020d0b41a0fac5001032000b024002402006102e220a450d00024020012802142802082005200a2006101741026a220241024b0d0020020e03020003020b41a0fac5001032000b200641011037000b200a102a0c0b0b20042001280210220329032842002007ad4200109f05200441106a20032903204200200d4200109f0520012802182102427f2109024020042903184200520d0020042903084200520d002004290310220820042903007c220d2008540d00427f200d20032903307c22082008200d541b21090b200242002002290308220820097d220920092008561b37030820092008580d012006450d0a200a102a0c0a0b200a102a0c0a0b200441b8016a41086a22052001280200280218220341d8006a290000370300200441b8016a41106a2201200341e0006a290000370300200441b8016a41186a220e200341e8006a290000370300200420032900503703b80102402003413c6a2802002202200341386a280200470d00200241016a220f2002490d0820024101742210200f2010200f4b1b2210ad42b0017e2208422088a70d082008a7220f4100480d080240024020020d00200f102821020c010b2003280234200241b0016c200f102c21020b2002450d0720032002360234200341386a2010360200200328023c21020b2003280234200241b0016c6a220241003a0000200220042f00dd013b0001200241053a00102002200736000c2002200c3600082002200b360004200220042903b801370011200241036a200441dd016a41026a2d00003a0000200241196a2005290300370000200241216a2001290300370000200241296a200e2903003700002002200a360034200220063600382002200636003c200220042f00b5013b0031200241336a200441b5016a41026a2d00003a00002002200429038801370340200241c8006a20044188016a41086a290300370300200241d0006a20044188016a41106a290300370300200241d8006a20044188016a41186a290300370300200241e0006a200441a8016a290300370300200241e8006a200441c0006a41c800109a051a2003200328023c41016a36023c410421020c090b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b41b698c40041f4031050000b1036000b200341011037000b200f41081037000b1031000b41052102200c450d00200b102a0b20002002360200200441e0016a24000b8e0a03027f027e057f230041e00b6b220424000240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200420012802102903484200200241146a2802002202ad4200109f0520012802182203420020032903082206427f200429030020042903084200521b7d2207200720065622081b3703084105210320080d052002417f4c0d02024020020d0002402001280214280208200541014100101741026a220241024b0d0020020e03070007070b41a0fac5001032000b02400240024002402002102e2208450d0002402001280214280208200520082002101741026a220541024b0d0020050e03030002030b41a0fac5001032000b200241011037000b2002410f4b0d010b2008102a0c060b200841086a2900002106200829000021072008102a200128020028021822092802180d032009417f360218200441c8006a200941e8006a290000370300200441c0006a200941e0006a290000370300200441306a41086a200941d8006a29000037030020042009290050370330024002402009411c6a220a280200220841f8b9c000460d00200941206a280200210b0c010b4100210b20044180096a410041e0021099051a200441e0006a410041a0081099051a41880b10282208450d05200841003b010620084100360200200841086a20044180096a41e002109a051a200841e8026a200441e0006a41a008109a051a200941206a41003602002009200836021c0b02400240034020082f0106220c4105742105410021024100210102400240034020052002460d01200441306a200820026a41086a4120109c052203450d02200241206a2102200141016a21012003417f4a0d000b2001417f6a210c0b200b450d02200b417f6a210b2008200c4102746a41880b6a28020021080c010b0b200941246a2103410121020c010b200441106a41186a200441306a41186a290300370300200441106a41106a200441306a41106a290300370300200441106a41086a200441306a41086a29030037030020042004290330370310200941246a21034100210b200c2101410021020b0240024020020d002004419c096a200441106a41086a290300370200200441a4096a200441106a41106a290300370200200441ac096a200441106a41186a29030037020020042003360290092004200136028c092004200a3602880920042008360284092004200b36028009200420042903103702940920044180016a200429035037030020044188016a200441d0006a41086a29030037030020044194016a42003702002004420037037820044200370360200441f8b9c00036029001200441003a009c012004419d016a2004290030370000200441a5016a200441306a41086a290000370000200441ad016a200441306a41106a290000370000200441b5016a200441306a41186a290000370000200441003a00bd0120044180096a200441e0006a10b70121020c010b200441f8006a4200370300200441f4006a41f8b9c00036020020044100360280012004410036027020044200370368200441f8b9c000360264200441003602602008200141e0006c6a41e8026a2102200441e0006a1095010b200241286a2006370300200241206a2007370300200242013703182009200928021841016a360218410421030c050b41b698c40041f4031050000b41b698c40041f4031050000b1036000b41a8b8c0004110200441e0006a41d0b8c0001038000b41880b41081037000b20002003360200200441e00b6a24000ba30203037f027e027f230041206b220424002001410c6a22054100360200200441086a2001280200280218220641186a200641d0006a10a801200441086a41106a290300210720042802082106200429031021080240024002400240200141086a2802002209200528020022056b4110490d00200128020421090c010b200541106a220a2005490d0220094101742205200a2005200a4b1b22054100480d020240024020090d002005102821090c010b200128020420092005102c21090b2009450d0120012009360204200141086a20053602002001410c6a28020021050b2001410c6a200541106a360200200920056a22012007427f20061b37000820012008427f20061b37000020004104360200200441206a24000f0b200541011037000b1031000bee0203027f027e017f230041206b220424000240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200420012802102903484200200241146a2802002202ad4200109f0520012802182203420020032903082206427f200429030020042903084200521b7d2207200720065622081b37030841052103024020080d002002417f4c0d0302400240024020020d004101210802402001280214280208200541014100101741026a220141024b0d0020010e03040002040b41a0fac5001032000b02402002102e2208450d0002402001280214280208200520082002101741026a220141024b0d0020010e03030002030b41a0fac5001032000b200241011037000b200441106a200820021054024020042802100d002004280214200441186a280200100b0b410421032002450d010b2008102a0b20002003360200200441206a24000f0b41b698c40041f4031050000b41b698c40041f4031050000b1036000bbe0101037f410021042001410c6a4100360200200128020028021c21050240024002400240200141086a28020022064104490d00200128020421060c010b200641017422044104200441044b1b22044100480d020240024020060d002004102821060c010b200128020420062004102c21060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441046a360200200620046a2005360000200041043602000f0b200441011037000b1031000bc205020a7f017e230041c0006b220424002004200136020c20042000410120011b3602082004200441086a106c024020042802000d000240024002400240024002400240200428020c22014170712200417f4c0d002004280204210502400240200141047622060d00410821070c010b200010282207450d020b02402005450d00200441206a4104722108410021094100210a410021000340200441206a200441086a109803200441306a41086a220b200841086a2802003602002004200829020037033002402004280220220c4104470d002006450d0a2007102a0c0a0b200041016a2101200441106a41086a220d200b28020036020020042004290330370310024020002006470d0020092001200920014b1b220641ffffffff00712006470d062006410474220b4100480d060240024020000d00200b102821070c010b2007200a200b102c21070b2007450d050b2007200a6a2200200c360200200041046a20042903103702002000410c6a200d280200360200200941026a2109200a41106a210a2001210020052001470d000b0b2007450d07200441206a200220072005200311060020042802202100410110282201450d042004428180808010370234200420013602300240024020004105460d00200141003a0000200141014102102c2101024020004104470d002001450d08200141003a00012004428280808020370234200420013602304202210e0c020b2001450d08200141013a0001200442828080802037023420042001360230200441206a200441306a1099032004350238210e200428023021010c010b200141013a00004201210e0b2001ad422086200e84210e02402006450d002007102a0b200441c0006a2400200e0f0b1036000b200041081037000b200b41081037000b1031000b410141011037000b410241011037000b410241011037000b41b8c6c20041f000200441206a41c0c5c2001038000bde0202047f017e02400240024002400240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a3602002004417f6a220441034b0d0520040e0401020304010b200041043602000f0b0240200541034b0d00200041043602000f0b200041003602002003280001210420012002417b6a3602042001200341056a360200200020043602040f0b024020054108490d0020004101360200200329000121062001200241776a3602042001200341096a360200200041086a20063703000f0b200041043602000f0b0240200541034b0d00200041043602000f0b200041023602002003280001210420012002417b6a3602042001200341056a360200200020043602040f0b024020054108490d0020004103360200200329000121062001200241776a3602042001200341096a360200200041086a20063703000f0b200041043602000f0b200041043602000b840b02037f017e024002400240024002400240024002400240024002400240024020002802000e0400010203000b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d0c200241017422042003200420034b1b22044100480d0c0240024020020d002004102821030c010b200128020020022004102c21030b2003450d0420012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41013a00002000280204210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d0c200241017422002004200020044b1b22004100480d0c0240024020020d002000102821020c010b200128020020022000102c21020b2002450d0520012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d0b200241017422042003200420034b1b22044100480d0b0240024020020d002004102821030c010b200128020020022004102c21030b2003450d0520012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41023a00002000290308210502400240200141046a2802002202200428020022006b4108490d00200128020021020c010b200041086a22032000490d0b200241017422002003200020034b1b22004100480d0b0240024020020d002000102821020c010b200128020020022000102c21020b2002450d0620012002360200200141046a2000360200200141086a28020021000b200141086a200041086a360200200220006a20053700000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d0a200241017422042003200420034b1b22044100480d0a0240024020020d002004102821030c010b200128020020022004102c21030b2003450d0620012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a00002000280204210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d0a200241017422002004200020044b1b22004100480d0a0240024020020d002000102821020c010b200128020020022000102c21020b2002450d0720012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d09200241017422042003200420034b1b22044100480d090240024020020d002004102821030c010b200128020020022004102c21030b2003450d0720012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41043a00002000290308210502400240200141046a2802002202200428020022006b4108490d00200128020021020c010b200041086a22032000490d09200241017422002003200020034b1b22004100480d090240024020020d002000102821020c010b200128020020022000102c21020b2002450d0820012002360200200141046a2000360200200141086a28020021000b200141086a200041086a360200200220006a20053700000f0b200441011037000b200041011037000b200441011037000b200041011037000b200441011037000b200041011037000b200441011037000b200041011037000b1031000bfd0201057f230041d0006b220224002002410036022820014110200241286a10062103024002400240024020022802282204417f460d0020030d010b200041023a00000c010b2004450d0120032d0000220541014b0d01410021010240024020050e020100010b41002101200241003a00482004417f6a2105200341016a21060340024020052001470d00200141ff0171450d04200241003a00480c040b200241286a20016a200620016a2d00003a00002002200141016a22043a00482004210120044120470d000b200241086a41186a200241286a41186a290300370300200241086a41106a200241286a41106a290300370300200241086a41086a200241286a41086a29030037030020022002290328370308410121010b200020013a000020002002290308370001200041096a200241106a290300370000200041116a200241186a290300370000200041196a200241206a2903003700002003102a0b200241d0006a24000f0b41c4d1c3004133200241286a419cd9c3001038000b1300200041013602042000418cc8c2003602000b340020004195c9c20036020420004100360200200041146a4103360200200041106a41a0c9c200360200200041086a420a3702000b2f01017f02404101102822020d00410141011037000b200042818080801037020420002002360200200241003a00000b8b5606077f017e067f027e037f037e230041e0036b22012400200141d8006a41086a220242003703002001420037035841e7fcc5004110200141d8006a100820014190016a41086a20022903003703002001200129035837039001200141e8026a20014190016a109a0302400240024002400240024002400240024002400240024020012d00e80222024102470d00200141d8006a21030c010b20014190016a4110100920014188026a41086a200141f1026a29000037030020014188026a41106a200141e8026a41116a29000037030020014188026a41186a220420014181036a290000370300200120012900e90237038802200141d8006a21030240200241037122024103460d0020020e03010001010b200141a0016a41186a2004290300370300200141a0016a41106a20014188026a41106a290300370300200141a0016a41086a20014188026a41086a29030037030020012001290388023703a001200141d8006a41086a220242003703002001420037035841c0fcc5004111200141d8006a100820014190016a41086a2002290300370300200120012903583703900141002105200141003602e80220014190016a4110200141e8026a10062102024020012802e8022204417f460d002002450d0020044104490d02200228000021052002102a0b411610282202450d022002410e6a41002900dffc45370000200241086a41002900d9fc45370000200241002900d1fc4537000020024116412c102c2202450d0320022005360016200141d8006a41186a22044200370300200141d8006a41106a22064200370300200141d8006a41086a22074200370300200142003703582002411a200141d8006a1000200141e8026a41186a2004290300370300200141e8026a41106a2006290300370300200141e8026a41086a2007290300370300200120012903583703e8022002102a20014100360258200141e8026a4120200141d8006a1006210202400240024020012802582206417f460d002002450d0020012006360294012001200236029001200141d8006a20014190016a107320012802582204450d07200129025c210802402006450d002002102a0b200120043602782001200837027c2008a721022008422088a72206418002490d01412010282206450d08200620012903a001370000200641186a200141a0016a41186a290300370000200641106a200141a0016a41106a290300370000200641086a200141a0016a41086a29030037000020014281808080103702ec02200120063602e802200541016a2205200141e8026a109f032006102a200141d8006a41086a220642003703002001420037035841c0fcc5004111200141d8006a100820014190016a41086a20062903003703002001200129035837039001200120053602e80220014190016a4110200141e8026a410410070c020b4100210620014100360280012001420137037841012104410021020b200141e8026a41186a2209200141a0016a41186a290300370300200141e8026a41106a220a200141a0016a41106a290300370300200141e8026a41086a220b200141a0016a41086a290300370300200120012903a0013703e802024020062002470d00200241016a22072002490d0c2002410174220c2007200c20074b1b220741ffffff3f712007470d0c2007410574220c4100480d0c0240024020020d00200c102821040c010b20042002410574200c102c21040b2004450d082001200736027c20012004360278200721020b200420064105746a220720012903e802370000200741186a2009290300370000200741106a200a290300370000200741086a200b2903003700002001200641016a360280012005200141f8006a109f030b2002450d002004102a0b200141d8006a41086a220242003703002001420037035841d8a1c6004113200141d8006a1008200141e8026a41086a2002290300370300200120012903583703e802200141003602a001200141e8026a4110200141a0016a1006210202400240024020012802a0012204417f460d002002450d002004450d0120022d000021042002102a200141e8026a4110100920044102460d0020044101710d020b41c0acc3001032000b41c4d1c3004133200141d8036a419cd9c3001038000b200141d8006a41086a220242003703002001420037035841afc5c2004111200141d8006a100820014190016a41086a22042002290300370300200120012903583703900120014190016a41101009200242003703002001420037035841c8fbc5004117200141d8006a100820042002290300370300200120012903583703900120014190016a41101009200242003703002001420037035841feadc4004117200141d8006a1008200141e8026a41086a22042002290300370300200120012903583703e8020240200141e8026a41104101410041001003417f470d0010a0032108200242003703002001420037035841feadc4004117200141d8006a100820042002290300370300200120012903583703e802200120083703a001200141e8026a4110200141a0016a410810070b2002420037030020014200370358418194c1004110200141d8006a1008200141a0016a41086a2002290300370300200120012903583703a001200141003602e802200141a0016a4110200141e8026a1006210220012802e8022204417f460d072002450d0720044104490d062002280000210d2002102a200141a0016a41101009410121090c080b41c4d1c3004133200141d8036a419cd9c3001038000b411641011037000b412c41011037000b41c4d1c3004133200141d8036a419cd9c3001038000b412041011037000b200c41011037000b41c4d1c3004133200141d8036a419cd9c3001038000b410021090b200141d8006a41086a220242003703002001420037035841d591c6004115200141d8006a1008200141a0016a41086a2002290300370300200120012903583703a001200141003602e802200141a0016a4110200141e8026a10062102024002400240024002400240024002400240024002400240024020012802e8022204417f460d002002450d002004450d0b20022d000021042002102a20044102460d0020044101710d010b410410282204450d0120044100360200200141d8006a41086a2202420037030020014200370358419194c1004115200141d8006a1008200141a0016a41086a2002290300370300200120012903583703a001200141003602f002200142013703e8024101200141e8026a10b401200428020021070240024020012802ec02220520012802f00222066b4104490d0020012802e80221020c010b200641046a22022006490d0d2005410174220a2002200a20024b1b220a4100480d0d0240024020050d00200a102821020c010b20012802e8022005200a102c21020b2002450d032001200a3602ec02200120023602e802200a21050b2001200641046a220a3602f002200220066a2007360000200141a0016a41102002200a100702402005450d002002102a0b2004102a410410282204450d0320044100360200200141d8006a41086a2202420037030020014200370358418898c1004116200141d8006a1008200141a0016a41086a2002290300370300200120012903583703a001200141003602f002200142013703e8024101200141e8026a10b401200428020021070240024020012802ec02220520012802f00222066b4104490d0020012802e80221020c010b200641046a22022006490d0d2005410174220a2002200a20024b1b220a4100480d0d0240024020050d00200a102821020c010b20012802e8022005200a102c21020b2002450d052001200a3602ec02200120023602e802200a21050b2001200641046a220a3602f002200220066a2007360000200141a0016a41102002200a100702402005450d002002102a0b2004102a200141d8006a41086a2202420037030020014200370358419e98c1004110200141d8006a1008200141a0016a41086a22042002290300370300200120012903583703a001200141003602e802200141a0016a4110200141e8026a41041007200141013a00e802200242003703002001420037035841d591c6004115200141d8006a100820042002290300370300200120012903583703a001200141a0016a4110200141e8026a410110070b200141d8006a41086a2202420037030020014200370358419194c1004115200141d8006a1008200141a0016a41086a2002290300370300200120012903583703a001200141003602e802200141a0016a4110200141e8026a100621020240024020012802e8022204417f460d002002450d002001200436028c022001200236028802200141e8026a20014188026a10820120012802e802220e450d0620012902ec02210f2004450d012002102a0c010b4104210e4200210f0b200141d8006a41086a2202420037030020014200370358418898c1004116200141d8006a1008200141a0016a41086a2002290300370300200120012903583703a001200141003602e802200141a0016a4110200141e8026a100621020240024020012802e8022204417f460d002002450d002001200436028c022001200236028802200141e8026a20014188026a10820120012802e8022207450d0720012902ec02211002402004450d002002102a0b20012007360288022010422088a7210c0c010b4104210720014104360288024100210c420021100b200f422088a72111024020090d002011417f6a220220114f0d07200220114b0d07200e20024102746a280200210d0b41002011419c7f6a22022002201141016a4b1b221220114b0d07200e20124102746a21132012450d0a200cad2108200e210b0340200b2802002109024002400240024002402008a7220a41014b0d0041002102200a0e020201020b41002102200a2104034020022004410176220620026a22052009200720054102746a280200491b2102200420066b220441014b0d000b0b20092007200241027422046a2802002206460d022002200920064b6a21020c010b410021020b200120023602e80241d498c100412e200141e8026a418499c1001038000b20082002ad580d09200720046a2204200441046a2002417f73200a6a410274109b051a201042ffffffff0f83200a417f6a220cad422086842110200b41046a220b2013460d0b2008427f7c210820012802880221070c000b0b410441041037000b200a41011037000b410441041037000b200a41011037000b41c4d1c3004133200141d8036a419cd9c3001038000b41c4d1c3004133200141d8036a419cd9c3001038000b41ae98c10041261050000b41e4e8c5001032000b41b0b1c0001032000b41c4d1c3004133200141d8036a419cd9c3001038000b200f42ffffffff0f8321080240201120126b2202450d0002402012450d00200e20132002410274109b051a2010422088a7210c0b20082002ad4220868421080b2001280288022107410021020240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200c41014b0d00200c0e020201020b200c2104034020022004410176220620026a2205200d200720054102746a280200491b2102200420066b220441014b0d000b0b0240200d200720024102746a2802002204460d002002200d20044b6a21020b200c2002490d010b200c2010a7470d02200c41016a2204200c490d13200c41017422062004200620044b1b220441ffffffff03712004470d132004410274220641004e0d010c130b41f8b0c0001032000b02400240200c0d002006102821070c010b2007200c4102742006102c21070b2007450d0120012007360288022004ad21100b200720024102746a220441046a2004200c20026b410274109b051a2004200d36020002402008422088220fa722042008a7470d00200441016a22022004490d11200fa722054101742206200220022006491b220241ffffffff03712002470d11200241027422064100480d110240024020040d0020061028210e0c010b200e20054102742006102c210e0b200e450d022008422088a721042002ad21080b200e20044102746a200d3602000240200c41016a22130d00419499c1001032000b2013201341017622024d0d02200128028802220620024102746a280200210d024020134101710d0020132002417f6a22024d0d04200620024102746a280200200d6a410176210d0b200141d8006a41086a2202420037030020014200370358419194c1004115200141d8006a1008200141a0016a41086a2002290300370300200120012903583703a001200141003602f002200142013703e802200441016a2211200141e8026a10b4010240024020110d0020012802f002210920012802ec02210720012802e80221040c010b410020012802f00222026b2106200441027441046a210a20012802ec022107200e210503402005280200210b02400240200720066a4104490d0020012802e80221040c010b200241046a22042002490d13200741017422092004200920044b1b22094100480d130240024020070d002009102821040c010b20012802e80220072009102c21040b2004450d07200120093602ec02200120043602e802200921070b200541046a21052001200241046a22093602f002200420026a200b3600002006417c6a210620092102200a417c6a220a0d000b0b2008a72102200141a0016a411020042009100702402007450d002004102a0b02402002450d00200e102a0b200128028802210e200141d8006a41086a2202420037030020014200370358418898c1004116200141d8006a1008200141a0016a41086a2002290300370300200120012903583703a001200142013703e802200141003602f0022013200141e8026a10b401200c41027441046a2109410020012802f00222026b21062010a7210c20012802ec022107200e210503402005280200210b02400240200720066a4104490d0020012802e80221040c010b200241046a22042002490d122007410174220a2004200a20044b1b220a4100480d120240024020070d00200a102821040c010b20012802e8022007200a102c21040b2004450d072001200a3602ec02200120043602e802200a21070b200541046a21052001200241046a220a3602f002200420026a200b3600002006417c6a2106200a21022009417c6a22090d000b200141a0016a41102004200a100702402007450d002004102a0b0240200c450d00200e102a0b200141d8006a41086a2202420037030020014200370358419e98c1004110200141d8006a1008200141a0016a41086a2002290300370300200120012903583703a0012001200d3602e802200141a0016a4110200141e8026a410410070240201141e500470d00200d419a086a1098014b0d00200141d8006a41086a220442003703002001420037035841d985c2004117200141d8006a1008200141e8026a41086a2004290300370300200120012903583703e802410810282204450d072004200d360004200441e400360000200141e8026a41102004410810072004102a0b200242003703002001420037035841f9b5c200411d200141d8006a1008200141e8026a41086a2002290300370300200120012903583703e802200141003602a001200141e8026a4110200141a0016a10062102024020012802a0012204417f460d002002450d0020012002360288022001200436028c0220044104490d0c2001200241046a3602880220012004417c6a220636028c0220064104490d0c200228000021072001200441786a36028c022001200241086a360288022002280004210b200141a0016a20014188026a107720012802a001220a450d0c20012902a40121144100210502400240200128028c0222040d000c010b20012004417f6a220936028c022001200128028802220641016a36028802024020062d00004101460d000c010b20094104490d0020012004417b6a36028c022001200641056a360288022006280001210c410121050b2002102a2014422088a72109024020072000470d00024020050d002009ad42287e2208422088a70d0a2008a72202417f4c0d0a0240024020020d004108210c0c010b20021028220c450d0c0b4100210602402009450d00200941286c210541002106200c2102200a21040340200441086a2903002108200441106a2903002110200441186a290300210f20042903002115200241206a200441206a290300370300200241186a200f370300200241106a2010370300200241086a200837030020022015370300200241286a2102200641016a2106200441286a2104200541586a22050d000b0b200141b0016a200b360200200141a0016a410c6a2006360200200141a0016a41086a20093602002001200c3602a401200141003602a001200141e8026a200141a0016a10c30120014193026a200141e8026a41086a280200360000200120012903e80237008b02200141e8026a410c6a2001418f026a290000370000200141c6a4b9da043600e902200141023a00e80220012001290088023700ed02200141e8026a10ce012009450d01200c102a0c010b2009ad42287e2208422088a70d092008a72202417f4c0d090240024020020d00410821130c010b200210282213450d0c0b0240024020090d00410021060c010b200941286c21054100210620132102200a21040340200441086a2903002108200441106a2903002110200441186a290300210f20042903002115200241206a200441206a290300370300200241186a200f370300200241106a2010370300200241086a200837030020022015370300200241286a2102200641016a2106200441286a2104200541586a22050d000b0b200141b4016a200b360200200141b0016a2006360200200141a0016a410c6a2009360200200141a0016a41086a20133602002001200c3602a401200141013602a001200141e8026a200141a0016a10c30120014193026a200141e8026a41086a280200360000200120012903e80237008b02200141e8026a410c6a2001418f026a290000370000200141c6a4b9da043600e902200141023a00e80220012001290088023700ed02200141e8026a10ce012009450d002013102a0b2014a7210c0240200b20076a2000470d00200141d8006a41086a220242003703002001420037035841c694c600411b200141d8006a1008200141e8026a41086a2002290300370300200120012903583703e802200141003602a801200142013703a0012009200141a0016a10b40102402009450d00200a200941286c6a2107200a210403402004200141a0016a108f01200441206a29030021080240024020012802a401220620012802a80122026b4108490d0020012802a00121060c010b200241086a22052002490d15200641017422022005200220054b1b22024100480d150240024020060d002002102821060c010b20012802a00120062002102c21060b2006450d0f200120023602a401200120063602a00120012802a80121020b2001200241086a3602a801200620026a20083700002007200441286a2204470d000b0b20012802a4012102200141e8026a411020012802a001220420012802a801100702402002450d002004102a0b200141e8026a41106a2009360200200141f4026a200c360200200141e8026a41086a2202200a360200200141003602ec022001410a3a00e80241014100200141e8026a10cc01200141d8006a41086a220442003703002001420037035841f9b5c200411d200141d8006a100820022004290300370300200120012903583703e802200141e8026a411010090c010b200c450d00200a102a0b200141d8006a41086a22024200370300200142003703584196b6c2004115200141d8006a1008200141e8026a41086a2002290300370300200120012903583703e802200141003602a001200141e8026a4110200141a0016a1006210220012802a0012204417f460d0f2002450d0f2004450d0e20022d0000220641034b0d0e0240024020060e04010f0100010b2004417f6a41074b0d0d0c0f0b2002102a0c0f0b200641041037000b200641041037000b41ac99c100200220131034000b41ac99c100200220131034000b200941011037000b200a41011037000b410841011037000b1036000b200241081037000b200241081037000b200241011037000b41c4d1c3004133200141d8036a419cd9c3001038000b20022800052106200228000121042002102a024020042000470d00200141043602a001200120063602a401200141e8026a200141a0016a10c30120014193026a200141f0026a280200360000200120012903e80237008b02200141f4026a2001418f026a290000370000200141c6a4b9da043600e902200141023a00e80220012001290088023700ed02200141e8026a10ce010b200620046a2000470d022001410036028802200141d8006a41086a22024200370300200142003703584196b6c2004115200141d8006a1008200141e8026a41086a2002290300370300200120012903583703e802200141a0016a20014188026a10da02200141e8026a411020012802a001220220012802a8011007024020012802a401450d002002102a0b200141023602ec022001410a3a00e80241014100200141e8026a10cc010c020b2004417f6a4108490d0020022800052106200228000121042002102a024020042000470d00200141033602a001200120063602a401200141e8026a200141a0016a10c30120014193026a200141f0026a280200360000200120012903e80237008b02200141f4026a2001418f026a290000370000200141c6a4b9da043600e902200141023a00e80220012001290088023700ed02200141e8026a10ce010b200620046a2000470d012001410236028802200141d8006a41086a22024200370300200142003703584196b6c2004115200141d8006a1008200141e8026a41086a2002290300370300200120012903583703e802200141a0016a20014188026a10da02200141e8026a411020012802a001220220012802a8011007024020012802a401450d002002102a0b200141013602ec022001410a3a00e80241014100200141e8026a10cc010c010b41c4d1c3004133200141d8036a419cd9c3001038000b02400240024002400240024020004180e101700d00200141e8026a10d301200141c8006a200141e8026a1091012001200141c8006a41086a29030022083703800120012001290348221037037820014180036a2008370300200141e8026a41106a2010370300200141e8026a41086a220441013a00002001410b3a00e8024100210241014100200141e8026a10cc01200141003a008f012001420037039801200142003703900120044200370300200142003703e8024181a2c6004112200141e8026a1008200141a0016a41086a2004290300370300200120012903e8023703a001200141003602e802200141a0016a4110200141e8026a100621040240024020012802e8022206417f470d000c010b024020040d000c010b2001200636028c022001200436028802200141e8026a20014188026a10820120012802e8022202450d0620012902ec0221082006450d002004102a0b2002410420021b210c024002402008420020021b2214422088a722040d004100210b0c010b200141f1026a210d200141c8026a211320014188026a41206a210e200141a0016a41086a2109200141a0036a21114100210a4100210b41002102024003400240024002400240200b450d00200c20024102746a2106200c2002200a6a4102746a21050340200220044f0d02200141a0016a2006280200220710e90220012903a0014201520d0420014188026a200941e000109a051a2001290378220f200129038802221554200141f8006a41086a290300220820014188026a41086a29030022105420082010511b450d03200141013a008f010240200a20026a220720044f0d0020052006280200360200200641046a2106200541046a2105200241016a22022004490d010c070b0b41c4b2c000200720041034000b200c20024102746a21060340200220044f0d01200141a0016a2006280200220710e90220012903a0014201520d0320014188026a200941e000109a051a2001290378220f20012903880222155a200141f8006a41086a290300220820014188026a41086a29030022105a20082010511b0d02200641046a2106200141013a008f01200241016a22022004490d000b4100210b0c050b41e8b1c000200220041034000b2001200f20157d3703782001200820107d200f201554ad7d37038001411210282206450d05200641106a41002f008086423b0000200641086a41002900f88542370000200641002900f08542370000200641124124102c2206450d0620062007360012200341186a22054200370000200341106a22124200370000200341086a22004200370000200342003700002006411620031000200141e8026a41186a2005290000370300200141e8026a41106a2012290000370300200141e8026a41086a2000290000370300200120032900003703e8022006102a200141e8026a41201009200e20012903980220014188026a41186a29030010aa02200141386a201320012903880220014188026a41086a220629030010d00120014190016a41086a2205427f20052903002208200141386a41086a2903007c200129039001221020012903387c220f2010542205ad7c22102005201020085420102008511b22051b3703002001427f200f20051b37039001200129038802210820112006290300370300200d2013290000370000200d41086a201341086a290000370000200d41106a201341106a290000370000200d41186a201341186a2900003700002001200837039803200141023a00f0022001410b3a00e802200120073602940341014100200141e8026a10cc010b200a417f6a210a200b41016a210b200241016a22022004490d000b0b200b450d00200220044f0d00200c20024102746a2206200b4102746b2006200420026b410274109b051a0b200141e8026a41086a22024200370300200142003703e8024181a2c6004112200141e8026a1008200141a0016a41086a2002290300370300200120012903e8023703a00102400240200c0d00200141a0016a411010090c010b200141003602f002200142013703e8022004200b6b2204200141e8026a10b4010240024020040d0020012802f002210920012802ec02210720012802e80221040c010b410020012802f00222026b2106200c20044102746a210b20012802ec022107200c210503402005280200210a02400240200720066a4104490d0020012802e80221040c010b200241046a22042002490d0a200741017422092004200920044b1b22094100480d0a0240024020070d002009102821040c010b20012802e80220072009102c21040b2004450d07200120093602ec02200120043602e802200921070b2001200241046a22093602f002200420026a200a3600002006417c6a210620092102200b200541046a2205470d000b0b2014a72102200141a0016a411020042009100702402007450d002004102a0b2002450d00200c102a0b024020012d008f010d004200210f200141286a20012903782208200141f8006a41086a2202290300221042c0843d420010a005200141186a20012903282215200141286a41086a290300221442c0fb42427f109f05200141086a2015201442a0c21e4200109f05200220102010200141086a41086a29030020012903082215200820012903187c42018842ffffffff0f837c2214201554ad7c22152014200856201520105620152010511b22041b22157d20082008201420041b221054ad7d3703002001200820107d370378200141e8026a41086a22024200370300200142003703e80241ace1c0004116200141e8026a1008200141d8006a41086a2002290300370300200120012903e802370358200141003602e802200141d8006a4110200141e8026a100621020240024020012802e8022204417f470d00420021080c010b20044110490d06200241086a29000021082002290000210f2002102a0b200141e8026a41086a22044200370300200142003703e80241ace1c0004116200141e8026a1008200141d8006a41086a2004290300370300200120012903e80237035820014200200820157d200f201054ad7d2214200f20107d2216200f56201420085620142008511b22021b3703f00220014200201620021b3703e802200141d8006a4110200141e8026a4110100720014190016a41086a2206427f200629030022142008201520021b7c2001290390012208200f201020021b7c220f2008542202ad7c22082002200820145420082014511b22021b3703002001427f200f20021b3703900120014180036a2015370300200141e8026a41106a2010370300200441033a00002001410b3a00e80241014100200141e8026a10cc010b200141e8026a10d30120014188026a200141e8026a200129039001220820014190016a41086a29030022104102109802024002402001280288020d00200141a0016a41106a201020014188026a41106a29030022157d2008200129039002220f54ad7d201520107d200f200854ad7d200f2008582015201058201520105122021b22041b37030020012008200f7d200f20087d20041b3703a8012001200f200856201520105620021b2202ad3703a001200141a0016a41086a2104024020020d0020012004360258200141d8006a109c010c020b20012004360258200141d8006a109d010c010b41abb6c20041ca00100b200120103703a801200120083703a0012001200141a0016a3602880220014188026a109c010b2001290378210820014180036a200141f8006a41086a290300370300200141f8026a2008370300200141e8026a41086a41043a00002001410b3a00e80241014100200141e8026a10cc010b200141d8006a41086a220242003703002001420037035841affec5004111200141d8006a1008200141e8026a41086a2002290300370300200120012903583703e802200141e8026a41101009200141e0036a24000f0b411241011037000b412441011037000b200941011037000b41c4d1c3004133200141d8036a419cd9c3001038000b41c4d1c3004133200141d8036a419cd9c3001038000b1031000bf52901047f230041c0006b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240411610282203450d002003410e6a41002900dffc45370000200341086a41002900d9fc45370000200341002900d1fc4537000020034116412c102c2203450d0120032000360016200241206a41186a22004200370300200241206a41106a22044200370300200241206a41086a22054200370300200242003703202003411a200241206a1000200241186a2000290300370300200241106a2004290300370300200241086a2005290300370300200220022903203703002003102a200128020021032001280208210120024100360228200242013703202001200241206a10b40102402001450d00200320014105746a2105034002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d052002200436022420022000360220200228022821010b2002200141016a360228200020016a20032d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d062002200436022420022000360220200228022821010b2002200141016a360228200020016a200341016a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d072002200436022420022000360220200228022821010b2002200141016a360228200020016a200341026a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d082002200436022420022000360220200228022821010b2002200141016a360228200020016a200341036a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d092002200436022420022000360220200228022821010b2002200141016a360228200020016a200341046a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d0a2002200436022420022000360220200228022821010b2002200141016a360228200020016a200341056a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d0b2002200436022420022000360220200228022821010b2002200141016a360228200020016a200341066a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d0c2002200436022420022000360220200228022821010b2002200141016a360228200020016a200341076a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d0d2002200436022420022000360220200228022821010b2002200141016a360228200020016a200341086a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d0e2002200436022420022000360220200228022821010b2002200141016a360228200020016a200341096a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d0f2002200436022420022000360220200228022821010b2002200141016a360228200020016a2003410a6a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d102002200436022420022000360220200228022821010b2002200141016a360228200020016a2003410b6a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d112002200436022420022000360220200228022821010b2002200141016a360228200020016a2003410c6a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d122002200436022420022000360220200228022821010b2002200141016a360228200020016a2003410d6a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d132002200436022420022000360220200228022821010b2002200141016a360228200020016a2003410e6a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d142002200436022420022000360220200228022821010b2002200141016a360228200020016a2003410f6a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d152002200436022420022000360220200228022821010b2002200141016a360228200020016a200341106a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d162002200436022420022000360220200228022821010b2002200141016a360228200020016a200341116a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d172002200436022420022000360220200228022821010b2002200141016a360228200020016a200341126a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d182002200436022420022000360220200228022821010b2002200141016a360228200020016a200341136a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d192002200436022420022000360220200228022821010b2002200141016a360228200020016a200341146a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d1a2002200436022420022000360220200228022821010b2002200141016a360228200020016a200341156a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d1b2002200436022420022000360220200228022821010b2002200141016a360228200020016a200341166a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d1c2002200436022420022000360220200228022821010b2002200141016a360228200020016a200341176a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d1d2002200436022420022000360220200228022821010b2002200141016a360228200020016a200341186a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d1e2002200436022420022000360220200228022821010b2002200141016a360228200020016a200341196a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d1f2002200436022420022000360220200228022821010b2002200141016a360228200020016a2003411a6a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d202002200436022420022000360220200228022821010b2002200141016a360228200020016a2003411b6a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d212002200436022420022000360220200228022821010b2002200141016a360228200020016a2003411c6a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d222002200436022420022000360220200228022821010b2002200141016a360228200020016a2003411d6a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d232002200436022420022000360220200228022821010b2002200141016a360228200020016a2003411e6a2d00003a000002400240200228022420022802282201460d00200228022021000c010b200141016a22002001490d25200141017422042000200420004b1b22044100480d250240024020010d002004102821000c010b200228022020012004102c21000b2000450d242002200436022420022000360220200228022821010b2002200141016a360228200020016a2003411f6a2d00003a0000200341206a22032005470d000b0b2002280224210320024120200228022022012002280228100702402003450d002001102a0b200241c0006a24000f0b411641011037000b412c41011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b200441011037000b1031000bab0103017f017e027f230041206b2200240042002101200041106a41086a220242003703002000420037031041feb3c300410d200041106a1008200041086a2002290300370300200020002903103703002000410036021020004110200041106a100621020240024020002802102203417f460d002002450d0020034108490d01200229000021012002102a0b200041206a240020010f0b41c4d1c3004133200041106a419cd9c3001038000b0a0041d0c5c2001032000b3400200041bfcec20036020420004100360200200041146a4109360200200041106a41c4cec200360200200041086a42043702000bcf0101017f024002400240024002400240410110282202450d00200241003a0000200241014102102c2202450d01200241003a0001200241024104102c2202450d02200241003b0002200241044108102c2202450d0320024100360004200241084110102c2202450d0420024200370008200241104120102c2202450d052002420037001820024200370010200042a08080808004370204200020023602000f0b410141011037000b410241011037000b410441011037000b410841011037000b411041011037000b412041011037000b130020004102360204200041a0e1c2003602000b3101017f02404108102822020d00410841011037000b20004288808080800137020420002002360200200242b8173700000b3101017f02404108102822020d00410841011037000b20004288808080800137020420002002360200200242c8013700000bcb0201047f230041d0006b220324002003410036022820012002200341286a1006210402400240024020032802282205417f460d0020040d010b200041003a00000c010b41002101200341003a00480340024020052001470d000240200141ff0171450d00200341003a00480b41c4d1c3004133200341286a419cd9c3001038000b200341286a20016a200420016a2d00003a00002003200141016a22023a00482002210120024120470d000b200341086a41186a2201200341286a41186a290300370300200341086a41106a2202200341286a41106a290300370300200341086a41086a2206200341286a41086a2903003703002003200329032837030802402005450d002004102a0b20002003290308370001200041013a0000200041196a2001290300370000200041116a2002290300370000200041096a20062903003700000b200341d0006a24000bd31803017f017e2b7f230041b00d6b22032400200320023602042003200136020042002104200341086a41086a220142003703002003420037030841aef2c2004115200341086a1008200341900d6a41086a2001290300370300200320032903083703900d200341e80c6a200341900d6a10a903024002400240024020032802ec0c22050d00410121050c010b20032903f00c220442ffffffff0f560d010b20004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20032802e80c2101200341086a410041e00c1099051a200541206a21062001411874411875210120052004422088a74105746a210741002108410021094100210a4100210b4100210c4100210d4100210e4100210f410021104100211141002112410021134100211441002115410021164100211741002118410021194100211a4100211b4100211c4100211d4100211e4100211f4100212041002121410021224100212341002124410021254100212641002127200521024100212841d1002129024003402028212a02400240024002402001450d0020072005460d01200141016a210103400240024020022007470d002006212b200621022005212c0c010b2002212c200241206a222b21020b2001417f6a22010d000c030b0b024020022007460d00200241206a212b2002212c0c030b2006212b2005212c20072005460d040c010b200141016a2101034020072002460d04200241206a21022001417f6a22010d000b200241606a212c2002212b0b202c450d020b202b21020240024002400240024002402003280204220141056a222b417f4c0d002003280200212d02400240202b450d00202b10282228450d034100212e200341003602980d2003202b3602940d200320283602900d0c010b200341003602980d2003202b3602940d200341013602900d410110282228450d03200341013602940d200320283602900d20032802980d212e0b2003202e41016a3602980d2028202e6a202a3a00002001200341900d6a10b4010240024020032802940d222e20032802980d222b6b2001490d0020032802900d212e0c010b202b20016a2228202b490d05202e410174222b2028202b20284b1b222b4100480d0502400240202e0d00202b1028212e0c010b20032802900d202e202b102c212e0b202e450d042003202b3602940d2003202e3602900d20032802980d212b0b2003202b20016a3602980d202e202b6a202d2001109a051a2003200341900d6a36028c0d202c2003418c0d6a10c80120032802940d212c20032802900d210120032802980d212b200341900d6a41186a222e4200370300200341900d6a41106a22284200370300200341900d6a41086a222d4200370300200342003703900d2001202b200341900d6a1000200341e80c6a41186a222b202e290300370300200341e80c6a41106a222e2028290300370300200341e80c6a41086a222f202d290300370300200320032903900d3703e80c0240202c450d002001102a0b2029417f6a2129202a41016a2128200341086a202a4103704105746a220120032903e80c370000200141186a202b290300370000200141106a202e290300370000200141086a202f2903003700004100212c0340202a202a41036e222b417d6c6a4102470d06200341086a202c6a220141df006a2d000022082001411f6a2d000022097120082009722001413f6a2d00007172211f200141de006a2d000022082001411e6a2d000022097120082009722001413e6a2d00007172211e200141dd006a2d000022082001411d6a2d000022097120082009722001413d6a2d00007172211d200141dc006a2d000022082001411c6a2d000022097120082009722001413c6a2d00007172211c200141db006a2d000022082001411b6a2d000022097120082009722001413b6a2d00007172211b200141da006a2d000022082001411a6a2d000022097120082009722001413a6a2d00007172211a200141d9006a2d00002208200141196a2d00002209712008200972200141396a2d000071722119200141d8006a2d00002208200141186a2d00002209712008200972200141386a2d000071722118200141d7006a2d00002208200141176a2d00002209712008200972200141376a2d000071722117200141d6006a2d00002208200141166a2d00002209712008200972200141366a2d000071722116200141d5006a2d00002208200141156a2d00002209712008200972200141356a2d000071722115200141d4006a2d00002208200141146a2d00002209712008200972200141346a2d000071722114200141d3006a2d00002208200141136a2d00002209712008200972200141336a2d000071722113200141d2006a2d00002208200141126a2d00002209712008200972200141326a2d000071722112200141d1006a2d00002208200141116a2d00002209712008200972200141316a2d000071722111200141d0006a2d00002208200141106a2d00002209712008200972200141306a2d000071722110200141cf006a2d000022082001410f6a2d000022097120082009722001412f6a2d00007172210f200141ce006a2d000022082001410e6a2d000022097120082009722001412e6a2d00007172210e200141cd006a2d000022082001410d6a2d000022097120082009722001412d6a2d00007172210d200141cc006a2d000022082001410c6a2d000022097120082009722001412c6a2d00007172210c200141cb006a2d000022082001410b6a2d000022097120082009722001412b6a2d00007172210b200141ca006a2d000022082001410a6a2d000022097120082009722001412a6a2d00007172210a200141c9006a2d00002208200141096a2d00002209712008200972200141296a2d000071722109200141c8006a2d00002208200141086a2d00002220712008202072200141286a2d000071722108200141c7006a2d00002220200141076a2d00002221712020202172200141276a2d000071722120200141c6006a2d00002221200141066a2d00002222712021202272200141266a2d000071722121200141c5006a2d00002222200141056a2d00002223712022202372200141256a2d000071722122200141c4006a2d00002223200141046a2d00002224712023202472200141246a2d000071722123200141c3006a2d00002224200141036a2d00002225712024202572200141236a2d000071722124200141c2006a2d00002225200141026a2d00002226712025202672200141226a2d000071722125200141c1006a2d00002226200141016a2d00002227712026202772200141216a2d000071722126200141c0006a2d0000222720012d0000222e712027202e72200141206a2d000071722127202c41800c460d06200341086a202c202b410574202a41096e41e0006c6b6a6a220141ff006a201f3a0000200141fe006a201e3a0000200141fd006a201d3a0000200141fc006a201c3a0000200141fb006a201b3a0000200141fa006a201a3a0000200141f9006a20193a0000200141f8006a20183a0000200141f7006a20173a0000200141f6006a20163a0000200141f5006a20153a0000200141f4006a20143a0000200141f3006a20133a0000200141f2006a20123a0000200141f1006a20113a0000200141f0006a20103a0000200141ef006a200f3a0000200141ee006a200e3a0000200141ed006a200d3a0000200141ec006a200c3a0000200141eb006a200b3a0000200141ea006a200a3a0000200141e9006a20093a0000200141e8006a20083a0000200141e7006a20203a0000200141e6006a20213a0000200141e5006a20223a0000200141e4006a20233a0000200141e3006a20243a0000200141e2006a20253a0000200141e1006a20263a0000200141e0006a20273a0000202b212a202c41e0006a222c41e00c470d000c060b0b1036000b202b41011037000b410141011037000b202b41011037000b1031000b4100210120290d000b0b2000201f3a001f2000201e3a001e2000201d3a001d2000201c3a001c2000201b3a001b2000201a3a001a200020193a0019200020183a0018200020173a0017200020163a0016200020153a0015200020143a0014200020133a0013200020123a0012200020113a0011200020103a00102000200f3a000f2000200e3a000e2000200d3a000d2000200c3a000c2000200b3a000b2000200a3a000a200020093a0009200020083a0008200020203a0007200020213a0006200020223a0005200020233a0004200020243a0003200020253a0002200020263a0001200020273a00000b02402004a7450d002005102a0b200341b00d6a24000bfd0102057f017e230041306b220224002002410036022020014110200241206a10062101024002400240024020022802202203417f460d0020010d010b200041003602040c010b20022003360214200220013602102003450d0120022003417f6a3602142002200141016a36021020012d00002103200241206a200241106a106d20022802202204450d012002410c6a41026a2002411d6a41026a2d000022053a0000200220022f001d22063b010c20022902242107200020033a0000200020063b0001200041036a20053a000020002007370208200020043602042001102a0b200241306a24000f0b41c4d1c3004133200241206a419cd9c3001038000bfb0401057f230041106b2202240002400240024002400240024020002802704101460d0002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102821040c010b200128020020032005102c21040b2004450d0320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280274210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d06200441017422032005200320054b1b22034100480d060240024020040d002003102821040c010b200128020020042003102c21040b2004450d0420012004360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200420036a20063600000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102821040c010b200128020020032005102c21040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00000b2000200110f1012000280278210320004180016a2802002200200110b40102402000450d002000410574210003402002200136020c20032002410c6a10c801200341206a2103200041606a22000d000b0b200241106a24000f0b200541011037000b200341011037000b200541011037000b1031000b860201017f0240024020002d00002201410e4b0d00024002400240024020010e0f050505050500050501050205030505050b200041086a2d00004101470d04200041146a280200450d04200041106a280200102a0c040b200041046a2d00004103470d0302402000410c6a280200450d00200041086a280200102a0b200041186a280200450d03200041146a280200102a0c030b200041046a2802000d022000410c6a280200450d02200041086a280200102a0c020b200041086a2d00004105490d01200041306a280200450d012000412c6a280200102a0c010b200041086a280200450d00200041046a280200102a0b0240200041fc006a280200450d002000280278102a0b0b130020004106360204200041c8f3c2003602000b3400200041d3f9c20036020420004100360200200041146a410f360200200041106a41dcf9c200360200200041086a42063702000b5501017f230041206b22022400200241003602082002420837030020024100360218200242013703104100200241106a10b401200041086a20022802183602002000200229031037020020021072200241206a24000b7201017f230041306b22022400200241186a4200370300200241106a4200370300200241086a42003703002002420037030020024100360228200242013703202002200241206a36022c20022002412c6a10c801200041086a200228022836020020002002290320370200200241306a24000b5d01027f230041106b2202240002404101102822030d00410141011037000b200341003a00002002428180808010370204200220033602004100200210b401200041086a200228020836020020002002290300370200200241106a24000b0900200042043702000b851805047f017e027f047e017f23004190026b22012400200141a8016a41086a22024200370300200142003703a80141f99fc6004115200141a8016a1008200141d0016a41086a22032002290300370300200120012903a8013703d001200141d0016a4110100920024200370300200142003703a801418ea0c600411a200141a8016a100820032002290300370300200120012903a8013703d00141002102200141003602a801200141d0016a4110200141a8016a100621030240024002400240024002400240024020012802a8012204417f460d002003450d0020044104490d01200328000021022003102a0b200141a8016a41086a22034200370300200142003703a80141bfa0c600411b200141a8016a1008200141d0016a41086a22042003290300370300200120012903a8013703d001200141186a200141d0016a109f02200129032021052001280218210620034200370300200142003703a80141bfa0c600411b200141a8016a1008200141086a4180e59af700200220024180e59af7004922071b20024180e59af70020071b6b2207ad2208420020084200109f0520042003290300370300200120012903a8013703d0012005420020061b2105200842a8c30180210842ffffffffffffffffff00428080808080808080807f20071b2001290308220920012903102009423f87521b42808090bbbad6adf00d7f210902400240200241ffe49af7004b0d0042ffffffffffffffffff00428080808080808080807f2005200820097d22097d22084200531b20082005427f5522022009427f554720022008427f5547711b22084280ec94a37c20084280ec94a37c551b21080c010b42ffffffffffffffffff00428080808080808080807f2005200820097c22097c22084200531b20082005427f5522022009427f554620022008427f5547711b21080b200120083703a801200141d0016a4110200141a8016a41081007200141a8016a41086a22024200370300200142003703a801418ea0c600411a200141a8016a1008200141d0016a41086a22032002290300370300200120012903a8013703d001200141d0016a4110100920024200370300200142003703a80141a8a0c6004117200141a8016a100820032002290300370300200120012903a8013703d001200141d0016a4110100920024200370300200142003703a80141d9efc200410d200141a8016a100820032002290300370300200120012903a8013703d00141002106200141003602a801200141d0016a4110200141a8016a10062102024020012802a8012203417f460d002002450d0020034104490d02200228000021062002102a200141d0016a411010090b200141a8016a41086a22024200370300200142003703a801419df2c2004111200141a8016a1008200141d0016a41086a2002290300370300200120012903a8013703d001200141a8016a200141d0016a411010a7030240024020012d00a8014101460d00200141286a41086a4200370300200141286a41106a4200370300200141286a41186a4200370300200141f0016a41186a200141c1016a290000370300200141f0016a41106a200141a8016a41116a290000370300200141f0016a41086a200141b1016a290000370300200120012900a9013703f00120014200370328200141f0016a21020c010b200141d0016a41101009200141f0016a41186a200141c1016a2900002208370300200141f0016a41106a200141a8016a41116a2900002205370300200141f0016a41086a200141b1016a2900002209370300200141286a41086a2009370300200141286a41106a2005370300200141286a41186a2008370300200120012900a90122083703f00120012008370328200141f0016a21020b42002108200141a8016a41086a22034200370300200142003703a80141b1f0c200410d200141a8016a1008200141d0016a41086a2003290300370300200120012903a8013703d001200141003602a801200141d0016a4110200141a8016a100621040240024020012802a8012203417f470d00410421070c010b200120033602f401200120043602f001200141a8016a200141f0016a107620012802a8012207450d0320012902ac01210802402003450d002004102a0b200141d0016a411010090b200141a8016a41086a22034200370300200142003703a80141e6efc2004115200141a8016a1008200141d0016a41086a2003290300370300200120012903a8013703d001200141a8016a200141d0016a411010a7030240024020012d00a8014101460d00200220012900a901370000200141c8006a41086a4200370300200141c8006a41106a4200370300200141c8006a41186a4200370300200241186a200141c1016a290000370000200241106a200141b9016a290000370000200241086a200141b1016a290000370000200142003703480c010b200141d0016a41101009200241186a200141c1016a2900002205370000200241106a200141b9016a2900002209370000200241086a200141b1016a290000220a370000200220012900a901220b370000200141c8006a41086a200a370300200141c8006a41106a2009370300200141c8006a41186a20053703002001200b3703480b0240200641fb01490d00200641857e6a2203450d00411010282202450d04200241086a41002900c6f042370000200241002900bef042370000200241104120102c2202450d0520022003360010200141a8016a41186a22034200370300200141a8016a41106a22044200370300200141a8016a41086a220c4200370300200142003703a80120024114200141a8016a1000200141f0016a41186a2003290300370300200141f0016a41106a2004290300370300200141f0016a41086a200c290300370300200120012903a8013703f0012002102a200141f0016a412010090b200141a8016a41186a22024200370300200141a8016a41106a22034200370300200141a8016a41086a22044200370300200142003703a801200141a8016a1014200141e8006a41186a2002290300370300200141e8006a41106a2003290300370300200141e8006a41086a2004290300370300200120012903a801370368200141f0016a41186a200141286a41186a290300370300200141f0016a41106a200141286a41106a290300370300200141f0016a41086a200141286a41086a290300370300200120012903283703f001200242003703002003420037030020044200370300200142003703a8010240200141f0016a4120200141a8016a1015450d0020014188016a41086a2004290300220537030020014188016a41106a2003290300220937030020014188016a41186a2002290300220a370300200120012903a801220b3703880120042005370300200320093703002002200a3703002001200b3703a8010240024020084220882205a722022008a7460d00200821090c010b200241016a22032002490d082005a74101742204200320032004491bad220942247e2205422088a70d082005a722034100480d080240024020020d002003102821070c010b2007200241246c2003102c21070b2007450d0720084220882205a721020b2007200241246c6a220241003a0000200220012903a801370001200241096a200141b0016a290300370000200241116a200141b8016a290300370000200241196a200141c0016a290300370000200220012f00f0013b0021200241236a200141f2016a2d00003a00002005422086200942ffffffff0f83844280808080107c21080b200020012903283700102000200636020020002001290368370030200041286a200141286a41186a290300370000200041206a200141286a41106a290300370000200041186a200141286a41086a290300370000200041386a200141e8006a41086a290300370000200041c0006a200141e8006a41106a290300370000200041c8006a200141e8006a41186a290300370000200041086a200837020020002007360204200041e8006a200141c8006a41186a290300370000200041e0006a200141c8006a41106a290300370000200041d8006a200141c8006a41086a2903003700002000200129034837005020014190026a24000f0b41c4d1c3004133200141a8016a419cd9c3001038000b41c4d1c3004133200141a8016a419cd9c3001038000b41c4d1c3004133200141a8016a419cd9c3001038000b411041011037000b412041011037000b200341041037000b1031000bb40202067f017e230041206b220224000240024002400240200128020422034104490d0020012802002204280000210520012003417c6a22063602042001200441046a36020020064104490d01200428000421062001200341786a3602042001200441086a360200200241106a2001106d200228021022030d02200041003602080c030b200041003602080c020b200041003602080c010b200241106a41086a280200210720022802142104200241106a2001106d02402002280210450d00200241086a200241106a41086a2802002201360200200220022903102208370300200041106a20073602002000200436020c200020033602082000200636020420002005360200200041146a20083702002000411c6a20013602000c010b200041003602082004450d002003102a0b200241206a24000ba60301067f230041106b22022400200241003602082002420137030020002802002103024002400240410410282204450d0020024284808080c0003702042002200436020020042003360000200028020421050240024020022802042206200228020822046b4104490d00200441046a2103200228020021060c010b200441046a22032004490d03200641017422072003200720034b1b22074100480d030240024020060d002007102821060c010b200228020020062007102c21060b2006450d0220022007360204200220063602000b20022003360208200620046a200536000020002802082104200041106a2802002203200210b40102402003450d0020034105742103034020042002108f01200441206a2104200341606a22030d000b0b200028021421042000411c6a2802002203200210b40102402003450d0020034105742103034020042002108f01200441206a2104200341606a22030d000b0b2002280204210420012802002001280204200228020022032002280208100702402004450d002003102a0b200241106a24000f0b410441011037000b200741011037000b1031000b1300200041043602042000418897c3003602000b3400200041879fc30036020420004100360200200041146a4105360200200041106a41a0a2c300360200200041086a42133702000b34002000418ca2c30036020420004100360200200041146a4105360200200041106a41a0a2c300360200200041086a42133702000bf90101047f230041206b22032400200341106a41086a220442003703002003420037031041a8a0c6004117200341106a1008200341086a200429030037030020032003290310370300410021042003410036021020034110200341106a100621050240024020032802102206417f460d002005450d0020064104490d01200528000021042005102a0b02400240417f200420026a220520052004491b2204418080c002418080f00120011b4b0d00200041046a2004360200410021040c010b200041800c3b0001200041036a41003a0000410121040b200020043a0000200341206a24000f0b41c4d1c3004133200341106a419cd9c3001038000b850201047f230041206b22032400200341106a41086a2204420037030020034200370310418ea0c600411a200341106a1008200341086a200429030037030020032003290310370300410021042003410036021020034110200341106a100621050240024020032802102206417f460d002005450d0020064104490d01200528000021042005102a0b02400240417f2004418094ebdc034180afd0e50220021b2205200120052001491b6a220120012004491b220420054b0d00200041046a2004360200410021040c010b200041800c3b0001200041036a41003a0000410121040b200020043a0000200341206a24000f0b41c4d1c3004133200341106a419cd9c3001038000bef1a04057f017e037f017e230041e0016b220124000240024002400240024002400240024041880110282202450d000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200028020022002802000e1500011402030405060708090a0b0c0d0e0f10111213000b0240024002400240024002400240200041086a280200417f6a220341054b0d004101210420030e06060102030405060b41e4f0c2001032000b200041146a2802002204417f4c0d1b2000410c6a28020021000240024020040d0020014200370360410121050c010b200410282205450d1d20014100360264200120043602600b20012004360264200520002004109a051a20012903602106410221040c040b200041106a2903002106410321040c030b200041146a2802002204417f4c0d192000410c6a28020021000240024020040d0020014200370360410121050c010b200410282205450d1c20014100360264200120043602600b20012004360264200520002004109a051a20012903602106410421040c020b200141e0006a2000410c6a106f2001290264210620012802602105410521040c010b200141e0006a2000410c6a10712001290264210620012802602105410621040b200220063703102002200536020c20022004360208200241003602000c140b10a103000b200141e0006a200041046a1070200241033602002002410c6a200141e8006a280200360200200220012903603702040c120b10bb03000b200141e0006a200041086a10ae02200241086a200141e0006a41e000109a051a200241053602000c100b200141e0006a200041086a10bc0320024106360200200241386a200141e0006a41306a290300370300200241306a200141e0006a41286a290300370300200241286a200141e0006a41206a290300370300200241206a200141e0006a41186a290300370300200241186a200141e0006a41106a290300370300200241106a200141e0006a41086a290300370300200220012903603703080c0f0b200141e0006a41186a200041286a290000370300200141e0006a41106a200041206a290000370300200141e8006a200041186a290000370300200141e0006a41286a200041386a290000370300200141e0006a41306a200041c0006a290000370300200141e0006a41386a200041c8006a290000370300200141e0006a41c8006a200041d8006a290000370300200141e0006a41d0006a200041e0006a290000370300200141e0006a41d8006a200041e8006a2900003703002001200041106a2900003703602001200041306a290000370380012001200041d0006a2900003703a0012000410c6a2802002205417f4c0d10200028020421030240024020050d0041012100410021040c010b20052104200510282200450d140b200020032005109a0521002001200141e0006a41e000109a0521032002200536020c2002200436020820022000360204200241106a200341e000109a051a200241073602000c0e0b200141e0006a200041086a10bd0320024108360200200241306a200141e0006a41286a290300370300200241286a200141e0006a41206a290300370300200241206a200141e0006a41186a290300370300200241186a200141e0006a41106a290300370300200241106a200141e0006a41086a290300370300200220012903603703080c0d0b02400240024002400240024020002d0004417f6a220541034b0d0020050e0401020304010b41c0f1c2001032000b200041106a280200220341ffffff3f712003470d1220034105742204417f4c0d12200041086a2802002100410121054101210702402004450d00200410282207450d170b024020030d0041002104410021030c040b2003410574210420072105034020052000290000370000200541186a200041186a290000370000200541106a200041106a290000370000200541086a200041086a290000370000200541206a2105200041206a2100200441606a22040d000b41012105200341057441606a41057641016a21040c030b200041086a10ba032107410221050c020b200041086a28020021072000410c6a10ba032103410321050c010b200141026a200041046a220541036a2d00003a0000200141e0006a41086a2000411c6a290000370300200141e0006a41106a200041246a2d00003a0000200120052f00013b01002001200041146a29000037036020002d00254100472108200041286a2802002109200041106a28000021042000410c6a2800002103200041086a2800002107410421050b200220053a0004200220012f01003b0005200220043602102002200336020c200220073602082002200129036037021420022009360228200220083a002520024109360200200241076a200141026a2d00003a00002002411c6a200141e8006a290300370200200241246a200141f0006a2d00003a00000c0c0b02400240024002400240024020002d0004417f6a220541034b0d0020050e0401020304010b41c0f1c2001032000b200041106a280200220341ffffff3f712003470d1120034105742204417f4c0d11200041086a2802002100410121054101210702402004450d00200410282207450d170b024020030d0041002104410021030c040b2003410574210420072105034020052000290000370000200541186a200041186a290000370000200541106a200041106a290000370000200541086a200041086a290000370000200541206a2105200041206a2100200441606a22040d000b41012105200341057441606a41057641016a21040c030b200041086a10ba032107410221050c020b200041086a28020021072000410c6a10ba032103410321050c010b200141026a200041046a220541036a2d00003a0000200141e0006a41086a2000411c6a290000370300200141e0006a41106a200041246a2d00003a0000200120052f00013b01002001200041146a29000037036020002d00254100472108200041286a2802002109200041106a28000021042000410c6a2800002103200041086a2800002107410421050b200220053a0004200220012f01003b0005200220043602102002200336020c200220073602082002200129036037021420022009360228200220083a00252002410a360200200241076a200141026a2d00003a00002002411c6a200141e8006a290300370200200241246a200141f0006a2d00003a00000c0b0b200141e0006a200041086a10d3022002410b360200200241c0006a200141e0006a41386a290300370300200241386a200141e0006a41306a290300370300200241306a200141e0006a41286a290300370300200241286a200141e0006a41206a290300370300200241206a200141e0006a41186a290300370300200241186a200141e0006a41106a290300370300200241106a200141e0006a41086a290300370300200220012903603703080c0a0b200141e0006a200041046a10be03200241046a200141e0006a41c400109a051a2002410c3602000c090b200028020421002002410d360200200220003602040c080b2000410c6a2802002205417f4c0d09200028020421030240024020050d0041012100410021040c010b20052104200510282200450d100b200020032005109a0521002002200536020c20022004360208200220003602042002410e3602000c070b024002400240024002400240200041086a280200417f6a220541024b0d0020050e03010203010b418486c2001032000b200041386a2903002106200041306a290300210a41012105024002402000410c6a2d00004101460d00200141e8006a2000411c6a290200370300200141e0006a41106a200041246a290200370300200141f8006a2000412c6a2d00003a00002001200041146a29020037036020002f000d2000410f6a2d0000411074722104200041106a2802002103410021050c010b200041106a28020021030b200141186a200141e0006a41186a280200360200200141106a200141e0006a41106a290300370300200141086a200141e0006a41086a29030037030020012001290360370300410121000c030b2000410c6a28020022054108762104410221000c010b2000410c6a28020022054108762104410321000b0b2002200a3703302002200336021020022000360208200220012903003702142002410f360200200241386a200637030020022004410874200541ff01717236020c2002411c6a200141086a290300370200200241246a200141106a2903003702002002412c6a200141186a2802003602000c060b200141e0006a200041086a10bf03200241086a200141e0006a418001109a051a200241103602000c050b200141e0006a200041046a10c003200241113602002002412c6a20014188016a280200360200200241246a20014180016a2903003702002002411c6a200141f8006a290300370200200241146a200141f0006a2903003702002002410c6a200141e8006a290300370200200220012903603702040c040b200141e0006a200041046a10af02200241046a200141e0006a41e400109a051a200241123602000c030b10c103000b10d501000b200041086a290300210620024102360200200220063703080b200141e0016a240020020f0b41880141081037000b1036000b200441011037000b200441011037000b200541011037000b200441011037000b200441011037000b200541011037000b0a0041acb4c3001032000b910c03047f017e057f230041206b2202240002400240024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a2203410c4b0d0020030e0d0102030405060708090a0b0c0d010b41e0ffc4001032000b4101210302400240200141046a2d00004101460d002002411e6a200141076a2d00003a0000200241086a200141146a290000370300200241106a2001411c6a290000370300200241186a200141246a2d00003a00002002200141056a2f00003b011c20022001410c6a290000370300200141086a2800002104410021030c010b200141086a28020021040b200041286a2001290328370300200041046a20033a0000200041056a20022f011c3b0000200041086a20043602002000410c6a2002290300370200200041306a200141306a290300370300200041076a2002411e6a2d00003a0000200041146a200241086a2903003702002000411c6a200241106a290300370200200041246a200241186a28020036020020012d00012101200041013a0000200020013a00010c0c0b200041023a0000200041106a200141106a290300370300200041086a200141086a2903003703000c0b0b200041033a0000200041106a200141106a290300370300200041086a200141086a2903003703000c0a0b200041043a00000c090b200041053a0000200041106a200141106a290300370300200041086a200141086a2903003703000c080b2001410c6a2802002205ad42247e2206422088a70d082006a72204417f4c0d08200141046a28020021030240024020040d00410421070c010b200410282207450d0a0b0240024020050d00410021040c010b200541246c2108410021042002411e6a21092007210103400240024020032d00004101460d002009200341036a2d00003a0000200341046a280000210a200341016a2f0000210b200241086a200341106a290000370300200241106a200341186a290000370300200241186a200341206a2d00003a00002002200b3b011c2002200341086a2900003703004100210b0c010b200341046a280200210a4101210b0b200341246a21032001200b3a0000200141046a200a360200200141016a20022f011c3b0000200141036a20092d00003a0000200141086a2002290300370200200141106a200241086a290300370200200141186a200241106a290300370200200141206a200241186a280200360200200141246a2101200441016a21042008415c6a22080d000b0b200041063a00002000410c6a2004360200200041086a2005360200200041046a20073602000c070b200041073a00000c060b200041083a0000200020012d00013a00010c050b4101210302400240200141046a2d00004101460d002002411e6a200141076a2d00003a0000200241086a200141146a290000370300200241106a2001411c6a290000370300200241186a200141246a2d00003a00002002200141056a2f00003b011c20022001410c6a290000370300200141086a2800002101410021030c010b200141086a28020021010b200041093a0000200041046a20033a0000200041056a20022f011c3b0000200041086a20013602002000410c6a2002290300370200200041076a2002411e6a2d00003a0000200041146a200241086a2903003702002000411c6a200241106a290300370200200041246a200241186a2802003602000c040b2000410a3a0000200041046a200141046a2802003602000c030b2000410b3a00000c020b2000410c3a00000c010b2001410c6a280200220841ffffff3f712008470d0120084105742203417f4c0d01200141046a28020021010240024020030d004101210a0c010b20031028220a450d040b0240024020080d0041002108410021010c010b20084105742104200a2103034020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a290000370000200341206a2103200141206a2101200441606a22040d000b200841057441606a41057641016a21010b2000410d3a00002000410c6a2001360200200041086a2008360200200041046a200a3602000b200241206a24000f0b1036000b200441041037000b200341011037000bab0701017f024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a220241104b0d0020020e110102030405060708090a0b0c0d0e0f1011010b41e8d0c5001032000b41880110282202450d102002200141046a28020010cf03200041046a2002360200200041013a0000200041106a200141106a290300370300200041086a200141086a2903003703000f0b200041023a0000200041046a200141046a2802003602000f0b200041033a0000200041046a200141046a280200360200200041026a200141026a2d00003a0000200020012d00014101713a00010f0b200041043a0000200041046a200141046a280200360200200041026a200141026a2d00003a0000200020012d00014101713a00010f0b200041053a0000200041046a200141046a2802003602000f0b41880110282202450d0c2002200141046a28020010cf03200041063a0000200041046a20023602000f0b41880110282202450d0c2002200141046a28020010cf03200041073a0000200041046a20023602000f0b41880110282202450d0c2002200141046a28020010cf03200041083a0000200041046a20023602000f0b200041093a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2902003702000f0b2000410a3a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000f0b2000410b3a0000200041046a200141046a2802003602000f0b2000410c3a00002000410c6a2001410c6a280200360200200041046a200141046a2902003702000f0b2000410d3a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000f0b2000410e3a00000f0b2000410f3a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000f0b200041103a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041216a200141216a2d00003a00000f0b200041113a00000f0b41880141081037000b41880141081037000b41880141081037000b41880141081037000bb60401047f0240024002400240024020012d0000417f6a220241034b0d0020020e0401020304010b4188b5c3001032000b200041013a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000f0b200041023a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000f0b200041033a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a290000370000200041216a200141216a290000370000200041296a200141296a290000370000200041316a200141316a290000370000200041396a200141396a2900003700000f0b024002402001410c6a280200220341ffffff3f712003470d0020034105742202417f4c0d00200141046a28020021010240024020020d00410121040c010b200210282204450d020b0240024020030d0041002103410021010c010b2003410574210520042102034020022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a290000370000200241206a2102200141206a2101200541606a22050d000b200341057441606a41057641016a21010b200041043a00002000410c6a2001360200200041086a2003360200200041046a20043602000f0b1036000b200241011037000b8d0c07037f017e017f017e017f017e017f230041c0006b220224000240024002400240024002400240024002400240024020012d0000417f6a220341044b0d0020030e050102030405010b41d093c4001032000b200041f9006a2002280020360000200041086a200141086a290300370300200041fc006a200241236a280000360000200041106a200141106a290300370300200041186a200141186a290300370300200041206a200141206a290300370300200041286a200141286a290300370300200041306a200141306a290300370300200041386a200141386a290300370300200041c0006a200141c0006a290300370300200041c8006a200141c8006a290300370300200041d0006a200141d0006a290300370300200041d8006a200141d8006a290300370300200041e0006a200141e0006a290300370300200041e8006a200141e8006a290300370300200041f0006a200141f0006a290300370300200041f8006a200141f8006a2d00004100473a0000200041013a00000c040b2001410c6a2802002203417f4c0d04200141046a2802002104200141106a29030021050240024020030d0041002101410121060c010b20032101200310282206450d060b200620042003109a0521042000410c6a2003360200200041086a2001360200200041046a2004360200200041106a2005370300200041023a00000c030b4101210402400240200141046a2d00004101460d00200241026a200141076a2d00003a0000200241206a41086a200141146a290000370300200241306a2001411c6a290000370300200241386a200141246a2d00003a00002002200141056a2f00003b010020022001410c6a290000370320200141086a2800002106410021040c010b200141086a28020021060b200141306a2802002203417f4c0d03200141c0006a29030021052001290338210720012802282108200129034821090240024020030d00410021014101210a0c010b2003210120031028220a450d060b200a20082003109a052108200041c0006a2005370300200041386a2007370300200041046a20043a0000200041086a2006360200200041c8006a2009370300200041306a20033602002000412c6a2001360200200041286a2008360200200041056a20022f01003b0000200041076a200241026a2d00003a00002000410c6a2002290320370200200041146a200241206a41086a2903003702002000411c6a200241306a290300370200200041246a200241386a280200360200200041033a00000c020b200141386a2903002105200141306a2903002107200141c0006a2903002109200241386a200141196a290000370300200241306a200141116a290000370300200241286a200141096a290000370300200220012900013703202001412c6a2802002203417f4c0d02200141246a28020021010240024020030d0041012104410021060c010b20032106200310282204450d060b200420012003109a052101200041386a2005370300200041306a2007370300200041c0006a20093703002000412c6a2003360200200041286a2006360200200041246a2001360200200041043a000020002002290320370001200041096a200241286a290300370000200041116a200241306a290300370000200041196a200241386a2903003700000c010b200241186a2204200141196a290000370300200241106a2206200141116a290000370300200241086a2208200141096a29000037030020022001290001370300410021030240200141216a2d00004101470d00200241206a41186a2001413a6a290000370300200241206a41106a200141326a290000370300200241206a41086a2001412a6a2900003703002002200141226a290000370320410121030b20002002290300370001200041216a20033a0000200041226a2002290320370000200041196a2004290300370000200041116a2006290300370000200041096a20082903003700002000412a6a200241206a41086a290300370000200041326a200241206a41106a2903003700002000413a6a200241206a41186a290300370000200041053a00000b200241c0006a24000f0b1036000b200341011037000b200341011037000b200341011037000b920501047f230041206b2202240002400240024002400240024002402001280200417f6a220341024b0d0020030e03010203010b41dc9cc4001032000b41880110282203450d032003200128020410cf0320004101360200200020033602040c020b410121030240024020012d00044101460d002002411e6a200141046a220341036a2d00003a0000200241086a200141146a290200370300200241106a2001411c6a290200370300200241186a200141246a2d00003a0000200220032f00013b011c20022001410c6a290200370300200141086a2802002101410021030c010b200141086a28020021010b200020033a0004200020022f011c3b000520004102360200200041086a20013602002000410c6a2002290300370200200041076a2002411c6a41026a2d00003a0000200041146a200241086a2903003702002000411c6a200241106a290300370200200041246a200241186a2802003602000c010b410121040240024020012d00044101460d002002411e6a200141046a220341036a2d00003a0000200241086a200141146a290200370300200241106a2001411c6a290200370300200241186a200141246a2d00003a0000200220032f00013b011c20022001410c6a290200370300200141086a2802002105410021040c010b200141086a28020021050b41880110282203450d022003200128022810cf03200020043a0004200041086a2005360200200041286a200336020020004103360200200020022f011c3b0005200041076a2002411e6a2d00003a00002000410c6a2002290300370200200041146a200241086a2903003702002000411c6a200241106a290300370200200041246a200241186a2802003602000b200241206a24000f0b41880141081037000b41880141081037000b0a0041b095c4001032000bad0301047f230041106b22022400024002400240024002400240024002400240024002402001280200417f6a220341054b0d0020030e06010203040506010b41e4f0c2001032000b200041013602000c050b2001410c6a2802002203417f4c0d05200128020421010240024020030d0041002104410121050c010b20032104200310282205450d070b200520012003109a0521012000410c6a2003360200200041086a200436020020002001360204200041023602000c040b20004103360200200041086a200141086a2903003703000c030b2001410c6a2802002203417f4c0d03200128020421010240024020030d0041012104410021050c010b20032105200310282204450d060b200420012003109a0521012000410c6a2003360200200041086a200536020020002001360204200041043602000c020b2002200141046a106f200041053602002000410c6a200241086a280200360200200020022903003702040c010b2002200141046a1071200041063602002000410c6a200241086a280200360200200020022903003702040b200241106a24000f0b1036000b200341011037000b200341011037000bdd0301047f024002400240024002400240024020012d0000417f6a220241034b0d0020020e0401020304010b41c0f1c2001032000b2001410c6a280200220341ffffff3f712003470d0320034105742202417f4c0d03200141046a28020021010240024020020d00410121040c010b200210282204450d050b0240024020030d0041002103410021010c010b2003410574210520042102034020022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a290000370000200241206a2102200141206a2101200541606a22050d000b200341057441606a41057641016a21010b200041013a00002000410c6a2001360200200041086a2003360200200041046a20043602000f0b200141046a10ba032101200041023a0000200041046a20013602000f0b200141046a2802002102200041086a200141086a10ba03360200200041046a2002360200200041033a00000f0b200041043a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a280200360200200041216a200141216a2d00004100473a00000f0b1036000b200241011037000b3400200041c5b6c30036020420004100360200200041146a4102360200200041106a41ccb6c300360200200041086a42073702000be40201047f230041c0006b2202240002400240410f10282203450d00200341076a4100290092b4433700002003410029008bb4433700002003410f411e102c2203450d012003200036000f200241206a41186a22004200370300200241206a41106a22044200370300200241206a41086a220542003703002002420037032020034113200241206a1000200241186a2000290300370300200241106a2004290300370300200241086a2005290300370300200220022903203703002003102a200128020021042001280208210320024100360228200242013703202003200241206a10b40102402003450d00200341057421002004210303402003200241206a108f01200341206a2103200041606a22000d000b0b2002280224210320024120200228022022002002280228100702402003450d002000102a0b0240200141046a280200450d002004102a0b200241c0006a24000f0b410f41011037000b411e41011037000b8a1401037f200141046a2802002102200141086a28020021030240024002400240024002400240024002400240024002400240024002400240024020002d00004101460d000240024020022003460d00200128020021020c010b200341016a22022003490d11200341017422042002200420024b1b22044100480d110240024020030d002004102821020c010b200128020020032004102c21020b2002450d0220012002360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200220036a41003a00000240024002400240024002400240024020002d00010e080001020304050607000b02400240200141046a28020020042802002203460d00200128020021000c010b200341016a22002003490d18200341017422022000200220004b1b22024100480d180240024020030d002002102821000c010b200128020020032002102c21000b2000450d0a20012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000f0b02400240200141046a28020020042802002203460d00200128020021000c010b200341016a22002003490d17200341017422022000200220004b1b22024100480d170240024020030d002002102821000c010b200128020020032002102c21000b2000450d0a20012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41013a00000f0b02400240200141046a28020020042802002203460d00200128020021000c010b200341016a22002003490d16200341017422022000200220004b1b22024100480d160240024020030d002002102821000c010b200128020020032002102c21000b2000450d0a20012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41023a00000f0b02400240200141046a28020020042802002203460d00200128020021000c010b200341016a22002003490d15200341017422022000200220004b1b22024100480d150240024020030d002002102821000c010b200128020020032002102c21000b2000450d0a20012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41033a00000f0b02400240200141046a28020020042802002203460d00200128020021000c010b200341016a22002003490d14200341017422022000200220004b1b22024100480d140240024020030d002002102821000c010b200128020020032002102c21000b2000450d0a20012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41043a00000f0b02400240200141046a28020020042802002203460d00200128020021000c010b200341016a22002003490d13200341017422022000200220004b1b22024100480d130240024020030d002002102821000c010b200128020020032002102c21000b2000450d0a20012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41053a00000f0b02400240200141046a28020020042802002203460d00200128020021000c010b200341016a22002003490d12200341017422022000200220004b1b22024100480d120240024020030d002002102821000c010b200128020020032002102c21000b2000450d0a20012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41063a00000f0b02400240200141046a28020020042802002203460d00200128020021020c010b200341016a22022003490d11200341017422042002200420024b1b22044100480d110240024020030d002004102821020c010b200128020020032004102c21020b2002450d0a20012002360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200220036a41073a000002400240200141046a28020020042802002203460d00200128020021020c010b200341016a22022003490d11200341017422042002200420024b1b22044100480d110240024020030d002004102821020c010b200128020020032004102c21020b2002450d0b20012002360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200220036a20002d00023a00000f0b0240024020022003460d00200128020021020c010b200341016a22022003490d10200341017422042002200420024b1b22044100480d100240024020030d002004102821020c010b200128020020032004102c21020b2002450d0b20012002360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200220036a41013a0000024020002d0001220341024b0d0002400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d13200341017422022000200220004b1b22024100480d130240024020030d002002102821000c010b200128020020032002102c21000b2000450d0f20012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000f0b02400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d12200341017422022000200220004b1b22024100480d120240024020030d002002102821000c010b200128020020032002102c21000b2000450d0f20012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41013a00000f0b02400240200141046a280200200141086a2802002203460d00200128020021020c010b200341016a22022003490d11200341017422042002200420024b1b22044100480d110240024020030d002004102821020c010b200128020020032004102c21020b2002450d0f20012002360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200220036a41023a000002400240200141046a28020020042802002203460d00200128020021020c010b200341016a22022003490d11200341017422042002200420024b1b22044100480d110240024020030d002004102821020c010b200128020020032004102c21020b2002450d1020012002360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200220036a20002d00023a00000b0f0b200441011037000b200241011037000b200241011037000b200241011037000b200241011037000b200241011037000b200241011037000b200241011037000b200441011037000b200441011037000b200441011037000b200241011037000b200241011037000b200441011037000b200441011037000b1031000bac64070e7f017e047f017e047f0f7e087f230041900b6b220124004100210241002103410421040240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402000410c6a28020041246c2205450d00200028020421064104210441002102410021030340024020062d00004101470d00200641106a2802002207417f4c0d1a200641086a2802002108200641016a28000021090240024020070d004101210a4100210b0c010b2007210b20071028220a450d040b200a20082007109a05210a20014188076a41026a220c200141f0056a41026a2d00003a0000200141a0086a41086a220d200141c0096a41086a290200370300200120012f00f0053b018807200120012902c0093703a008024020022003470d00200241016a22082002490d1d2002410174220e2008200e20084b1b2203ad42247e220f422088a70d1d200fa722084100480d1d0240024020020d002008102821040c010b2004200241246c2008102c21040b2004450d050b2004200241246c6a220841013a000020082009360001200820073600102008200b36000c2008200a360008200820012f0188073b0005200841076a200c2d00003a0000200820012903a0083702142008411c6a200d290300370200200241016a21020b200641246a21062005415c6a22050d000b0b200141003602a0084188e8c2004110200141a0086a4104100720014188076a41086a22064200370300200142003703880741d9efc200410d20014188076a1008200141f0056a41086a2208200629030037030020012001290388073703f0052001200028020022073602a008200141f0056a4110200141a0086a4104100720064200370300200142003703880741b1f0c200410d20014188076a10082008200629030037030020012001290388073703f005200141103602a4082001200141f0056a3602a00820042002200141a0086a10e102200642003703002001420037038807419df2c200411120014188076a10082008200629030037030020012001290388073703f005200141103602a4082001200141f0056a3602a008200041106a2205200141a0086a10f002411010282206450d02200641086a41002900c6f042370000200641002900bef042370000200641104120102c2208450d0320082007417f6a360010200141d8046a41186a22064200370300200141d8046a41106a22074200370300200141d8046a41086a22094200370300200142003703d80420084114200141d8046a100020014188076a41186a200629030037030020014188076a41106a200729030037030020014188076a41086a22062009290300370300200120012903d804370388072008102a200141203602a408200120014188076a3602a0082005200141a0086a10f00220064200370300200142003703880741e6efc200411520014188076a1008200141f0056a41086a2208200629030037030020012001290388073703f005200141103602a4082001200141f0056a3602a008200041d0006a200141a0086a10f00220064200370300200142003703880741aef2c200411520014188076a10082008200629030037030020012001290388073703f005200141a0086a200141f0056a10a903024020012802a40822070d00200141013602d804410021094100210641002105410021080c060b200120073602d804200141ac086a280200210620012802a008210920012802a8082105024020012903a808220f422088a741d1004f0d00200fa721080c060b200141a0086a41186a220a200041286a290000370300200141a0086a41106a220b200041206a290000370300200141a0086a41086a220c200041186a290000370300200120002900103703a00820062009411874220941187522084d0d04200720084105746a220820012903a008370000200841186a200a290300370000200841106a200b290300370000200841086a200c290300370000200941808080086a41187541d1006f21090c060b200741011037000b200841041037000b411041011037000b412041011037000b41c4f2c200200820061034000b200141a0086a41186a220a200041286a290000370300200141a0086a41106a220b200041206a290000370300200141a0086a41086a220c200041186a290000370300200120002900103703a008024020062008470d0020052006470d00200641016a22082006490d14200641017422072008200720084b1b220541ffffff3f712005470d14200541057422074100480d140240024020060d002007102821080c010b20012802d80420064105742007102c21080b2008450d02200120083602d8040b20012802d804220720064105746a220820012903a008370000200841086a200c290300370000200841106a200b290300370000200841186a200a290300370000200641016a21060b20014188076a41086a22084200370300200142003703880741aef2c200411520014188076a1008200141f0056a41086a200829030037030020012001290388073703f0050240024020070d00200141f0056a411010090c010b410110282208450d0220014281808080103702a408200120083602a008200820093a00002006200141a0086a10b40102402006450d00200641057421082007210603402001200141a0086a3602c0092006200141c0096a10c801200641206a2106200841606a22080d000b0b20012802a4082106200141f0056a411020012802a008220820012802a808100702402006450d002008102a0b2007450d002005450d002007102a0b20014188076a41086a22084200370300200142003703880741d4f2c200410d20014188076a1008200141f0056a41086a2206200829030037030020012001290388073703f005200141f0056a4110100920084200370300200142003703880741eea0c600411120014188076a10082006200829030037030020012001290388073703f005200141f0056a41101009411210282206450d02200641106a41002f00f1f2423b0000200641086a41002900e9f242370000200641002900e1f242370000200141d8046a41186a22074200370300200141d8046a41106a22054200370300200141d8046a41086a22094200370300200142003703d80420064112200141d8046a100020014188076a41186a200729030037030020014188076a41106a200529030037030020082009290300370300200120012903d804370388072006102a20014188076a4120100e2000280200211010eb0220104105490d07200141f0056a41086a22064200370300200142003703f0054193cdc2004111200141f0056a1008200141a0086a41086a2006290300370300200120012903f0053703a008200141003602c009200141a0086a4110200141c0096a100621060240024020012802c0092208417f460d002006450d002001200836028c072001200636028807200141c0096a20014188076a107b20012802c009220a450d0520012902c409210f2008450d012006102a0c010b4104210a4200210f0b2010417b6a2105200a200f422088a7220b41c4006c22066a21090240200641cd014f0d0041002106200a21080c060b200a41d0016a21084100210603400240200841b07e6a22072d00004101460d00200841b47e6a28020020054f0d080b0240200741c4006a2d00004101460d00200841f87e6a2802002005490d00200641016a21060c080b024020074188016a2d00004101460d00200841bc7f6a2802002005490d00200641026a21060c080b02400240200741cc016a2d00004101460d00200828020020054f0d010b20084190026a2108200641046a2106200920074190026a6b41cc014d0d060c010b0b200641036a21060c060b200741011037000b410141011037000b411241011037000b41c4d1c3004133200141f0056a419cd9c3001038000b200841b07e6a21080b20082009460d00200a200b41c4006c6a21070340024020082d00004101460d00200841046a28020020054f0d020b200641016a21062007200841c4006a2208470d000b0b2006200b4b0d01200f42ffffffff0f83210f0240200b20066b2208450d0002402006450d00200a200a200641c4006c6a200841c4006c109b051a0b2008ad422086200f84210f0b200141f0056a41086a22064200370300200142003703f0054193cdc2004111200141f0056a1008200141a0086a41086a2006290300370300200120012903f0053703a008200141c0096a200a200f422088a7109202200141a0086a411020012802c009220820012802c8091007200fa72106024020012802c409450d002008102a0b2006450d00200a102a0b200141003a00c009200141f0056a41086a22064200370300200142003703f00541c8fbc5004117200141f0056a1008200141a0086a41086a22082006290300370300200120012903f0053703a008200141a0086a4110200141c0096a41011007200141a0086a10f801412410282206450d01200620012903a00837000020064114360220200641186a200141a0086a41186a290300370000200641106a200141a0086a41106a290300370000200641086a200829030037000020014281808080103702c409200120063602c009200141c0096a10f901201010ea0202400240201041809c3170450d0020014188076a21110c010b200141f0056a41086a22064200370300200142003703f00541d590c600411f200141f0056a100820014188076a41086a2006290300370300200120012903f00537038807200141003602a00820014188076a4110200141a0086a1006210602400240024020012802a0082208417f460d002006450d002008450d0120062d000021082006102a20014188076a4110100920084102460d0020084101710d020b20014188076a2111201010c803450d02201010c9031a0c020b41c4d1c3004133200141f0056a419cd9c3001038000b20014188076a2111201010c903450d00201010c8031a0b200141f0056a41086a22064200370300200142003703f00541c290c6004113200141f0056a100820014188076a41086a2006290300370300200120012903f0053703880741002106200141003602a00820114110200141a0086a10062108024020012802a0082207417f460d002008450d0020074104490d03200828000021062008102a0b200141f0056a41086a22084200370300200142003703f00541a990c6004119200141f0056a100820014188076a41086a2008290300370300200120012903f0053703880741002108200141003602a00820114110200141a0086a10062107024020012802a0082205417f460d002007450d0020054104490d04200728000021082007102a0b02400240200620084f0d0002400340200141c0096a200610ca0320012802c00922074113470d012008200641016a2206470d000c020b0b20014188076a200141c0096a410472419401109a051a200141f0056a20014188076a419401109a051a200141d8046a200141f0056a419401109a051a200120073602a80820012006ad220f3703a008200141ac086a200141d8046a419401109a052105200141b0096a2802002010460d01200141a8086a106a0b4108211241002106410021130c080b200141c0036a2005419401109a051a200141a0086a200141c0036a419401109a051a41a00110282212450d04201220073602082012200f3703002012410c6a200141a0086a419401109a051a02400240200641016a220720084f0d000340200141c0096a200710ca0320012802c00922054113470d022008200741016a2207470d000b0b41012106410121130c080b20014188076a200141c0096a410472220c419401109a051a200141f0056a20014188076a419401109a051a200141d8046a200141f0056a419401109a051a200120053602a80820012007ad220f3703a008200141a0086a410c6a200141d8046a419401109a05210a41012106200141a8086a210b200141b0096a2802002010470d06200741016a2107200141c0036a200a419401109a051a41012106410121130340200141a0086a200141c0036a419401109a051a024020132006470d00200641016a22092006490d0c2006410174220d2009200d20094b1b2213ad42a0017e2214422088a70d0c2014a722094100480d0c024002402006450d002012200641a0016c2009102c21120c010b2009102821120b2012450d070b2012200641a0016c6a220920053602082009200f3703002009410c6a200141a0086a419401109a051a200641016a2106200720084f0d0802400340200141c0096a200710ca03024020012802c00922054113460d0020014188076a200c419401109a051a200141f0056a20014188076a419401109a051a200141d8046a200141f0056a419401109a051a200120053602a80820012007ad220f3703a008200a200141d8046a419401109a05210920012802b0092010470d02200741016a2107200141c0036a2009419401109a051a0c030b2008200741016a2207470d000c0a0b0b0b200b106a0c070b41e4e8c5001032000b412441041037000b41c4d1c3004133200141f0056a419cd9c3001038000b41c4d1c3004133200141f0056a419cd9c3001038000b41a00141081037000b200941081037000b200b106a410121130b2012200641a0016c6a2115024020060d00201221160c020b20014188076a4104722106200141a0086a410472211720014198026a41086a21182012211603402016280200210520162802082108200141a0086a2016410c6a419401109a051a201641a0016a211620084113460d02200141c0096a200141a0086a419401109a051a200120083602a0082017200141c0096a419401109a051a200141f0056a200510cb0320012802f005210b0240024020012802f80522080d00420021194200211a4200211b4200211c4200211d4200211e0c010b200841057421094200211d200b21084200211e4200211b4200211c420021194200211a034020014198036a2008109d0220014198036a41086a2903002114200129039803210f20062008290000370000200641086a200841086a290000370000200641106a200841106a290000370000200641186a200841186a290000370000200120053602880720014190036a20014188076a10cc0320012d00900341017121070240024020012d009103220a0d00200141d0026a200f2014420a420010a00520012903d002221f210f200141d0026a41086a290300222021140c010b200141f0026a20144200200aad221f4200109f0520014180036a200f4200201f4200109f05200141e0026a42004200200f4200109f05427f20014180036a41086a290300221f20012903f00220012903e0027c7c222020012903f80220012903e802844200522020201f5472220a1b2120427f200129038003200a1b211f0b200841206a21084200202020071b201c7c4200201f20071b2221201b7c221b202154ad7c211c2020420020071b201a7c201f420020071b221f20197c2219201f54ad7c211a2014201e7c200f201d7c221d200f54ad7c211e200941606a22090d000b0b024020012802f405450d00200b102a0b200141f0056a200510cb0320012802f00521000240024020012802f80522080d004200212142002122420021234200212442002120420021250c010b2008410574210942002120200021084200212542002123420021244200212142002122034020062008290000370000200641086a200841086a2207290000370000200641106a200841106a220a290000370000200641186a200841186a220b2900003700002001200536028807200141c8026a20014188076a10cc0320012d00c802210c20012d00c902210d20014188076a41186a200b29000037030020014188076a41106a200a29000037030020014188076a41086a20072900003703002001200829000037038807200141a8026a200520014188076a200d411010cd03200141a8026a41186a29030020257c20012903b802220f20207c2220200f54ad7c21254200200141a8026a41086a290300220f200c41017122071b20247c420020012903a802221420071b221f20237c2223201f54ad7c2124200f420020071b20227c2014420020071b220f20217c2221200f54ad7c2122200841206a2108200941606a22090d000b0b024020012802f405450d002000102a0b20014198026a10a1022018290300210f2001290398022114024002402020201d7c221f4202882025201e7c201f202054ad7c2220423e8684221d2020420288221e84500d00201d201f85201e20208584500d00410021080240034020014188026a201f2020200841046a41fe0071109e05200841026a2108200129038802221d20014188026a41086a290300221e84500d01201d201f85201e2020858450450d000b0b200141f8016a201f2020200841fe0071109e0520012903f801200141f8016a41086a29030084211d4200211e024020080d00201d420052ad211d0c020b201d420052ad211d0340200141d8016a201f202041002008417e6a2207200720084b1b220841ff0071109e05200141e8016a201d42018622264201842225201e420186201d423f8884221e2025201e109f052026202520012903e80120012903d80156200141e8016a41086a290300221d200141d8016a41086a290300222756201d2027511b1b211d20080d000c020b0b4200211e201f202084420052ad211d0b024002402014420288200f423e8684221f200f420288222084500d00201f2014852020200f8584500d004100210802400340200141c8016a2014200f200841046a41fe0071109e05200841026a210820012903c801221f200141c8016a41086a290300222084500d01201f2014852020200f858450450d000b0b200141b8016a2014200f200841fe0071109e0520012903b801200141b8016a41086a29030084211f42002120024020080d00201f420052ad211f0c020b201f420052ad211f034020014198016a2014200f41002008417e6a2207200720084b1b220841ff0071109e05200141a8016a201f420186222642018422252020420186201f423f8884222020252020109f052026202520012903a80120012903980156200141a8016a41086a290300221f20014198016a41086a290300222756201f2027511b1b211f20080d000c020b0b420021202014200f84420052ad211f0b02400240024002400240201d201e8450450d004100210b0c010b2024201c7c2023201b7c2214202354ad7c21232022201a7c202120197c220f202154ad7c212102400240024020012d00b0090e03010200010b200f201456202120235620212023511b210b0c020b0340200141c8006a20142023201d201e10a005201f22192020221a844200510d04200141c8006a41086a290300211f20012903482120200141386a200f20212019201a10a0054101210b20202001290338221b54201f200141386a41086a290300222554201f20255122081b0d020240201b2020542025201f5420081b450d004100210b0c030b200141286a2020201f201d201e109f05200141186a201b20252019201a109f050240200f2001290318221f7d22202021200141186a41086a2903007d200f201f54ad7d222584500d002023200141286a41086a2903007d211b20142001290328220f5421082014200f7d211f201d210f201e21212020211d2025211e20192114201a2123201f201b2008ad7d222084500d030c010b0b4100210b0c010b0340201e2125201d2119201f2020844200510d02200141f8006a200f20212019202510a00520014188016a20142023201f202010a0054101210b200129038801221a2001290378221b5420014188016a41086a290300221d200141f8006a41086a290300221e54201d201e5122081b0d010240201b201a54201e201d5420081b450d004100210b0c020b200141e8006a201a201d201f2020109f05200141d8006a201b201e20192025109f050240200f2001290358221d7d221e2021200141d8006a41086a2903007d200f201d54ad7d221a8450450d004100210b0c020b2023200141e8006a41086a2903007d211b20142001290368220f5421082014200f7d211d201f210f20202121201e211f201a21202019211420252123201d201b2008ad7d221e844200520d000b0b20014188076a200510cb032001280288072128200128028c0721292001280290072208450d0220282008410574222a6a212b2028210802400340200141f0056a41186a2207200841186a220c290000370300200141f0056a41106a2209200841106a220d290000370300200141f0056a41086a220a200841086a2200290000370300200120082900003703f0052008290000210f200641186a222c200c2900003700002006200f370000200641086a222d2000290000370000200641106a222e200d2900003700002001200536028807200141106a20014188076a10cc0320012d0011210e20012d0010212f20014188076a41186a220c200729030037030020014188076a41106a220d200929030037030020014188076a41086a2200200a290300370300200120012903f005370388070240200b202f41017145734101470d00200841206a21080c020b200841206a2108202a41606a222a0d000c040b0b0340200141d8046a41186a200c290300220f370300200141d8046a41106a200d2903002214370300200141d8046a41086a2000290300221f370300200120012903880722203703d804200c200f370300200d20143703002000201f370300200142e4cab5fbb6ccdcb0e3003703a8032001202037038807200141a8036a20014188076a200e41187441187541027441f48fc6006a2802004180de346c20106a10a8022008202b460d03024003402007200841186a220e2900003703002009200841106a222f290000370300200a200841086a222a290000370300200120082900003703f0052001200536028807202a290000210f202f29000021142008290000211f202c200e290000370000202e2014370000202d200f3700002006201f370000200141086a20014188076a10cc0320012d0009210e20012d0008212f200c2007290300370300200d20092903003703002000200a290300370300200120012903f00537038807200b202f41017145730d01202b200841206a2208470d000c050b0b200841206a21080c000b0b41f895c1001032000b41f895c1001032000b02402029450d002028102a0b200510ce0302400240200b0d00200141053a009007200141053a00880720012005360294074101410020014188076a10cc01200141f0056a41086a22084200370300200142003703f00541c290c6004113200141f0056a100820014188076a41086a2008290300370300200120012903f005370388072001200541016a3602f00520114110200141f0056a41041007200141a0086a106a0c010b2001200536029407200141043a009007200141053a0088074101410020014188076a10cc01024020012802ac092207450d00200141f0056a200141a0086a418801109a051a200120053602f80602400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240411710282208450d002008410f6a41002900918945220f370000200841086a410029008a89452214370000200841002900828945221f37000020084117412e102c2208450d012008200720106a2200360017200141d8046a41186a22074200370300200141d8046a41106a22094200370300200141d8046a41086a220a4200370300200142003703d8042008411b200141d8046a100020014188076a41186a220e200729030037030020014188076a41106a222f200929030037030020014188076a41086a220c200a290300370300200120012903d804370388072008102a200141003602d80420014188076a4120200141d8046a1006210b0240024020012802d8042208417f470d00200141003602e004200142013703d8044100200141d8046a10b40120012802e004210820012802dc04210d20012802d804210b0c010b2008210d0b200120083602b8032001200d3602b4032001200b3602b003024002400240024002402008450d00200141d8046a200b2008410110d60220012802d8044101460d0420012802dc04212a20012802e404220820012802e004220b460d0320012802b8032008200b6b6a220d4190016a222c417f4c0d1f202c0d014101212d0c020b4101200141b0036a10b40120012802b403210b20012802b8032108024020012802f0054113470d0002400240200b2008460d0020012802b003210b0c010b200841016a220b2008490d222008410174220d200b200d200b4b1b220d4100480d220240024020080d00200d1028210b0c010b20012802b0032008200d102c210b0b200b450d082001200d3602b4032001200b3602b00320012802b80321080b2001200841016a3602b803200b20086a41003a00000c150b02400240200b2008460d0020012802b003210b0c010b200841016a220b2008490d212008410174220d200b200d200b4b1b220d4100480d210240024020080d00200d1028210b0c010b20012802b0032008200d102c210b0b200b450d082001200d3602b4032001200b3602b00320012802b80321080b2001200841016a3602b803200b20086a41013a0000200141f0056a200141b0036a10eb01200141f0056a4188016a280200210d0240024020012802b403220b20012802b80322086b4104490d0020012802b003210b0c010b200841046a222a2008490d21200b4101742208202a2008202a4b1b22084100480d2102400240200b0d0020081028210b0c010b20012802b003200b2008102c210b0b200b450d09200120083602b4032001200b3602b00320012802b80321080b2001200841046a3602b803200b20086a200d3600000c140b202c1028222d450d080b2001202c3602dc0a2001202d3602d80a2001200d3602e00a2001200141d80a6a3602d804202a200141d8046a200810d701200d2008490d0820012802e00a222a200d490d0920012802b803222a200b490d0a20012802d80a212c20012802b003212d2001200d20086b220d3602e80a2001202a200b6b222a3602ec0a200d202a470d0b202c20086a202d200b6a200d109a051a20012802dc0a210b20012802e00a21080240024020012802f0054113470d0002400240200b2008460d0020012802d80a210b0c010b200841016a220b2008490d212008410174220d200b200d200b4b1b220d4100480d210240024020080d00200d1028210b0c010b20012802d80a2008200d102c210b0b200b450d0f2001200d3602dc0a2001200b3602d80a20012802e00a21080b2001200841016a3602e00a200b20086a41003a00000c010b02400240200b2008460d0020012802d80a210b0c010b200841016a220b2008490d202008410174220d200b200d200b4b1b220d4100480d200240024020080d00200d1028210b0c010b20012802d80a2008200d102c210b0b200b450d0f2001200d3602dc0a2001200b3602d80a20012802e00a21080b2001200841016a3602e00a200b20086a41013a0000200141f0056a200141d80a6a10eb01200141f0056a4188016a280200210d0240024020012802dc0a220b20012802e00a22086b4104490d0020012802d80a210b0c010b200841046a222a2008490d20200b4101742208202a2008202a4b1b22084100480d2002400240200b0d0020081028210b0c010b20012802d80a200b2008102c210b0b200b450d10200120083602dc0a2001200b3602d80a20012802e00a21080b2001200841046a3602e00a200b20086a200d3600000b20012802e00a210b20012802dc0a210d20012802d80a210820012802b403450d1320012802b003102a0c130b2001200141b0036a3602d804202a200141d8046a200b10d70120012802b403210b20012802b8032108024020012802f0054113470d0002400240200b2008460d0020012802b003210b0c010b200841016a220b2008490d1f2008410174220d200b200d200b4b1b220d4100480d1f0240024020080d00200d1028210b0c010b20012802b0032008200d102c210b0b200b450d102001200d3602b4032001200b3602b00320012802b80321080b2001200841016a3602b803200b20086a41003a00000c120b02400240200b2008460d0020012802b003210b0c010b200841016a220b2008490d1e2008410174220d200b200d200b4b1b220d4100480d1e0240024020080d00200d1028210b0c010b20012802b0032008200d102c210b0b200b450d102001200d3602b4032001200b3602b00320012802b80321080b2001200841016a3602b803200b20086a41013a0000200141f0056a200141b0036a10eb01200141f0056a4188016a280200210d0240024020012802b403220b20012802b80322086b4104490d0020012802b003210b0c010b200841046a222a2008490d1e200b4101742208202a2008202a4b1b22084100480d1e02400240200b0d0020081028210b0c010b20012802b003200b2008102c210b0b200b450d11200120083602b4032001200b3602b00320012802b80321080b2001200841046a3602b803200b20086a200d3600000c110b20012802b403450d1220012802b003102a0c120b411741011037000b412e41011037000b200d41011037000b200d41011037000b200841011037000b202c41011037000b2008200d1044000b200d202a103c000b200b202a1044000b200141c0036a41146a4108360200200141cc036a4125360200200141f00a6a41146a4103360200200142033702f40a200141c8afc6003602f00a200141253602c4032001200141e80a6a3602880b2001200141ec0a6a36028c0b200142043703e804200142013702dc042001419cb0c6003602d8042001200141c0036a3602800b2001200141d8046a3602d00320012001418c0b6a3602c8032001200141880b6a3602c003200141f00a6a41d8b0c600103e000b200d41011037000b200d41011037000b200841011037000b200d41011037000b200d41011037000b200841011037000b20012802b803210b20012802b403210d20012802b00321080b2008450d0020014188076a41202008200b1007200d450d012008102a0c010b41900110282208450d014113210b024020012802f0054113460d0020014188076a200141f0056a10cf032001200141f0056a4188016a28020036029008200128028807210b200141d8046a2006418c01109a051a0b2008200b360200200841046a200141d8046a418c01109a051a41171028220b450d02200b410f6a200f370000200b41086a2014370000200b201f370000200b4117412e102c220b450d03200b20003600172007420037030020094200370300200a4200370300200142003703d804200b411b200141d8046a1000200e2007290300370300202f2009290300370300200c200a290300370300200120012903d80437038807200b102a200141d8046a2008410110ac0220014188076a412020012802d804220720012802e0041007024020012802dc04450d002007102a0b024020082802004113460d002008106a0b2008102a0b024020012802f0054113460d00200141f0056a106a0b200141f0056a41086a22084200370300200142003703f00541c290c6004113200141f0056a1008200c2008290300370300200120012903f005370388072001200541016a3602f00520114110200141f0056a410410070c040b41900141081037000b411741011037000b412e41011037000b20014188076a200141a0086a418801109a051a200141003b01f005200141d8046a20014188076a200141f0056a10f401200120012d00e0044102463a009107200141073a009007200141053a00880720012005360294074101410020014188076a10cc01200141f0056a41086a22084200370300200142003703f00541c290c6004113200141f0056a100820014188076a41086a2008290300370300200120012903f005370388072001200541016a3602f00520114110200141f0056a410410070b20162015470d000b201521160c010b1036000b024020162015460d00200141a0086a41086a2108200141a0086a410c6a21070340201641086a28020021062016290300210f200141a0086a2016410c6a419401109a051a20064113460d01200141c0096a200141a0086a419401109a051a200120063602a8082001200f3703a0082007200141c0096a419401109a051a2008106a201641a0016a22162015470d000b0b02402013450d002012102a0b0240024002400240411710282206450d002006410f6a41002900918945370000200641086a410029008a894537000020064100290082894537000020064117412e102c2206450d01200620103600174200210f200141d8046a41186a22084200370300200141d8046a41106a22074200370300200141d8046a41086a22054200370300200142003703d8042006411b200141d8046a100020014188076a41186a200829030037030020014188076a41106a200729030037030020014188076a41086a2005290300370300200120012903d804370388072006102a200141003602a00820014188076a4120200141a0086a100621080240024020012802a0082206417f470d004108210b0c010b200120063602c409200120083602c009200141a0086a200141c0096a10800120012802a008220b450d0320012902a408210f02402006450d002008102a0b20014188076a412010090b200b200f422088a722084190016c22076a2105200b210602402008450d00200741f07e6a2107200141a0086a410472210a200b21060240034020062802002108200141c0096a200641046a418401109a051a20084114460d01200141a0086a200141c0096a418401109a051a02400240024020084113470d0020070d01200521060c050b20064188016a280200210920014188076a200141a0086a418401109a051a200120083602a008200a20014188076a418401109a051a200141003b01c009200141f0056a200141a0086a200141c0096a10f40120012d00f8052108200120093602ac08200120084102463a00a908200141073a00a808200141053a00a00841014100200141a0086a10cc012007450d010b20064190016a2106200741f07e6a21070c010b0b200521060c010b20064190016a21060b200fa7210920062005460d03200141a0086a4104722107034020062802002108200141a0086a200641046a418c01109a051a20084114460d04200141c0096a200141a0086a418c01109a051a200120083602a0082007200141c0096a418c01109a051a024020084113460d00200141a0086a106a0b20064190016a22062005470d000c040b0b411741011037000b412e41011037000b41c4d1c3004133200141f0056a419cd9c3001038000b02402009450d00200b102a0b201010bd0202402002450d00200241246c21082004210603400240024020062d0000220741034b0d0002400240024020070e0404000102040b2006410c6a280200450d03200641086a280200102a0c030b2006410c6a280200450d02200641086a280200102a0c020b2006410c6a280200450d01200641086a280200102a0c010b200641086a280200450d00200641046a280200102a0b200641246a21062008415c6a22080d000b0b02402003450d002004102a0b200141900b6a24000f0b1031000be80201067f230041b0026b2201240020014198016a41086a22024200370300200142003703980141988bc500411620014198016a100820014188016a41086a2203200229030037030020012001290398013703880120014198016a20014188016a10df030240024020012802980122044113470d0041ae8bc50021020c010b20014188016a41101009200141046a20014198016a4104722205418401109a051a200141a0026a2d00002106200141013a00af0220024200370300200142003703980141d590c600411f20014198016a10082003200229030037030020012001290398013703880120014188016a4110200141af026a41011007200241023a0000200141053a009801410021024101410020014198016a10cc0120012004360298012005200141046a418401109a051a20014188016a200041809c316a20014198016a20064180de3410b7042001280288014101470d00200128028c0121020b200141b0026a240020020bc01802117f187e230041f0056b22012400200141a0046a41086a22024200370300200142003703a00441ac89c5004115200141a0046a1008200141306a41086a2002290300370300200120012903a004370330200141003602a004200141306a4110200141a0046a10062103024002400240024002400240024002400240024020012802a0042204417f460d002003450d002001200436024420012003360240200141286a200141c0006a106c20012802280d09200128024441b0016e220541b0016c2202417f4c0d02200128022c21060240024020020d00410821070c010b200210282207450d040b02402006450d0020014198036a4104722108410021094100210a0340024002400240200128024422024104490d002001280240220b280000210c20012002417c6a3602442001200b41046a360240200141a0046a200141c0006a10810120012802a0044113460d00200a41016a210d20014198036a200141a0046a418801109a051a4100210b200141003a00e8052001280244417f6a2102024003402002417f460d01200141c8056a200b6a2001280240220e2d00003a00002001200e41016a3602402001200b41016a220e3a00e805200120023602442002417f6a2102200e210b200e4120470d000b200141a8056a41186a2202200141c8056a41186a290300370300200141a8056a41106a220e200141c8056a41106a290300370300200141a8056a41086a220f200141c8056a41086a290300370300200120012903c8053703a805200128029803210b20014190026a2008418401109a051a200141f0016a41086a2210200f290300370300200141f0016a41106a220f200e290300370300200141f0016a41186a220e2002290300370300200120012903a8053703f001200b4113460d01200141ec006a20014190026a418401109a051a200141c8006a41186a2211200e290300370300200141c8006a41106a220e200f290300370300200141c8006a41086a220f2010290300370300200120012903f0013703482005200a470d030240200a4101742202200d2002200d4b1b2205ad42b0017e2212422088a70d002012a7220241004e0d030b1031000b0240200b41ff0171450d00200141003a00e8050b20014198036a106a0b0240200a450d002007210203402002106a200241b0016a2102200941d07e6a22090d000b0b2005450d0d2007102a0c0d0b02400240200a0d002002102821070c010b2007200a41b0016c2002102c21070b2007450d070b2007200a41b0016c6a2202200b360200200241046a200141ec006a418401109a051a2002200c360288012002200129034837028c0120024194016a200f2903003702002002419c016a200e290300370200200241a4016a2011290300370200200941b0016a2109200d210a200d2006470d000b0b2007450d092006ad42208621122005ad211302402004450d002003102a0b201220138421140c010b41082107420021140b024002402014422088a72204450d00200141a0046a20072802880110b8040240024020012802b00422020d0042002115420021120c010b200141186a20012903a004200141a0046a41086a290300200141b8046a3502004200109f05200141186a41086a29030021122001290318211520012802b404450d002002102a0b4100210e20044101460d012007200441b0016c6a210a200741b0016a21024100210e200721034101210b0340200141a0046a20024188016a28020010b8040240024020012802b00422090d0042002116420021130c010b200141086a20012903a004200141a0046a41086a29030020013502b8044200109f05200141086a41086a29030021132001290308211620012802b404450d002009102a0b201220132015201656201220135620122013511b22091b21122015201620091b21152003200220091b2103200e200b20091b210e200b41016a210b200241b0016a2202200a470d000b20030d01200441b0016c21092007210203402002106a200241b0016a2102200941d07e6a22090d000b0b41e789c50021022014a7450d072007102a0c070b200e20044f0d0320072004417f6a220941b0016c6a22024180016a290300211320024188016a290300211520024190016a290300211620024198016a2903002117200241e0006a2903002118200241e8006a2903002119200241f0006a290300211a200241f8006a290300211b200241c0006a290300211c200241c8006a290300211d200241d0006a290300211e200241d8006a290300211f200241206a2903002120200241286a2903002121200241306a2903002122200241386a2903002123200229030021242002290308212520022903102126200241186a2903002127200241a0016a2903002112200141306a41086a220b200241a8016a29030022283703002007200e41b0016c6a220241186a220e2903002129200e2027370300200229031021272002202637031020022903082126200220253703082002290300212520022024370300200241386a220e2902002124200e2023370200200241306a220e2902002123200e2022370200200241286a220e2902002122200e2021370200200241206a220e2902002121200e2020370200200241d8006a220e2902002120200e201f370200200241d0006a220e290200211f200e201e370200200241c8006a220e290200211e200e201d370200200241c0006a220e290200211d200e201c370200200241f8006a220e290200211c200e201b370200200241f0006a220e290200211b200e201a370200200241e8006a220e290200211a200e2019370200200241e0006a220e2902002119200e201837020020024198016a201737020020024190016a201637020020024188016a2203280200210e2003201537020020024180016a220329020021152003201337020020012012370330200241a0016a2012370200200241a8016a202837020020014198036a41f8006a201c37030020014198036a41f0006a201b37030020014198036a41e8006a201a37030020014198036a41e0006a201937030020014198036a41d8006a202037030020014198036a41d0006a201f37030020014198036a41c8006a201e37030020014198036a41c0006a201d37030020014198036a41386a202437030020014198036a41306a202337030020014198036a41286a202237030020014198036a41206a202137030020014198036a41186a202937030020014198036a4180016a2015370300200120273703a803200120263703a0032001202537039803200141a0046a41086a22024200370300200142003703a00441ac89c5004115200141a0046a1008200b2002290300370300200120012903a004370330200141103602a4042001200141306a3602a00420072009200141a0046a10ef0102402009450d00200441b0016c41d07e6a21092007210203402002106a200241b0016a2102200941d07e6a22090d000b0b02402014a7450d002007102a0b411310282202450d042002410f6a41002800e38945360000200241086a41002900dc8945370000200241002900d48945370000200241134126102c2202450d052002200e360013200141a8056a41186a22094200370300200141a8056a41106a220b4200370300200141a8056a41086a22034200370300200142003703a80520024117200141a8056a100020014190026a41186a200929030037030020014190026a41106a200b29030037030020014190026a41086a2003290300370300200120012903a805370390022002102a200141a0046a20014190026a10e003024020012802b004220b450d0020014190026a412010090b02400240200b450d00200141a8046a290300211220012903a004211320012802b40421030240200141a0046a41186a280200220a4105742209450d00200b2102034020022013201210aa02200241206a2102200941606a22090d000b0b200141c8046a2012370300200141c0046a2013370300200141b8046a200a360200200141b4046a2003360200200141b0046a200b360200200141ac046a200e360200200141a8046a41013a0000200141053a00a00441014100200141a0046a10cc01200141a0046a20014198036a418801109a051a20014190026a200041809c316a200141a0046a41004180de3410b7042001280290024101470d0120012802940221020c080b20014198036a106a0b410021020c060b1036000b200241081037000b200241081037000b41c489c500200e20041034000b411341011037000b412641011037000b200141f0056a240020020f0b41c4d1c3004133200141a0046a419cd9c3001038000b810601067f230041d0026b2202240002400240024002400240411a10282203450d00200341186a41002f00ce88453b0000200341106a41002900c68845370000200341086a41002900be8845370000200341002900b688453700002003411a4134102c2203450d012003200136001a200241c0016a41186a22014200370300200241c0016a41106a22044200370300200241c0016a41086a22054200370300200242003703c0012003411e200241c0016a1000200241186a2001290300370300200241106a2004290300370300200241086a2005290300370300200220022903c0013703002003102a200241003602c00120024120200241c0016a1006210320022802c0012201417f460d032003450d03200220033602282002200136022c20014104490d022003280000210620022001417c6a36022c2002200341046a360228200241c0016a200241286a10810120022802c0014113460d02200241386a200241c0016a418801109a051a02400240200228022c2207450d00200228022822012d0000210420022007417f6a220536022c2002200141016a360228200441034f0d00200541034b0d01200241386a106a0c040b200241386a106a0c030b2001280001210520022007417b6a36022c2002200141056a36022820022802382101200241c0016a200241386a410472418401109a051a200220022800303602202002200241336a28000036002320014113460d02200241386a200241c0016a418401109a051a20022002280023360033200220022802203602302003102a0c040b411a41011037000b413441011037000b41c4d1c3004133200241c8026a419cd9c3001038000b411321010b200241c0016a200241386a418401109a051a2002200228003336002b200220022802303602280240024020014113470d00200041133602000c010b20002001360200200041046a200241c0016a418401109a051a20004190016a20043a00002000418c016a200536020020004188016a2006360200200020022802283600910120004194016a200228002b3600000b200241d0026a24000bfb0202047f017e230041d0006b22022400024002400240411310282203450d002003410f6a41002800a88945360000200341086a41002900a18945370000200341002900998945370000200341134126102c2203450d0120032001360013200241286a41186a22014200370300200241286a41106a22044200370300200241286a41086a220542003703002002420037032820034117200241286a1000200241186a2001290300370300200241106a2004290300370300200241086a2005290300370300200220022903283703002003102a2002410036022820024120200241286a100621010240024020022802282203417f460d002002200336022420022001360220200241286a200241206a106d20022802282204450d04200229022c210602402003450d002001102a0b20002006370204200020043602000c010b20004100360208200042013702000b200241d0006a24000f0b411341011037000b412641011037000b41c4d1c3004133200241c8006a419cd9c3001038000ba40301057f230041d0006b22022400024002400240411010282203450d00200341002900a68845370000200341086a41002900ae88453700002002429080808080023702242002200336022020012802002104200341104120102c2203450d0120032004360010200242a0808080c00237022420022003360220200141046a200241206a108f012002280228210320022802202101200241306a41186a22044200370300200241306a41106a22054200370300200241306a41086a220642003703002002420037033020012003200241306a1000200241186a2004290300370300200241106a2005290300370300200241086a20062903003703002002200229033037030002402002280224450d002002280220102a0b410021032002410036023020024120200241306a100621010240024020022802302204417f470d00410021010c010b2004450d0320012d0000220441ff0071220341074f0d032001102a200441077621010b200020033a0001200020013a0000200241d0006a24000f0b411041011037000b412041011037000b41c4d1c3004133200241306a419cd9c3001038000bf00b04017f047e117f087e23004190046b22052400024002400240024020040d00420021064200210742002108420021090c010b42002108200541f0036a41186a220a4200370300200541f0036a41106a220b4200370300200541f0036a41086a220c4200370300200542003703f00341e588c500411d200541f0036a100020054198036a41186a220d200a29030037030020054198036a41106a220e200b29030037030020054198036a41086a220f200c290300370300200520052903f0033703980320054198016a20054198036a412010fd01200541c0016a41206a20054198016a41206a2d00003a0000200541c0016a41186a20054198016a41186a290300370300200541c0016a41106a20054198016a41106a290300370300200541c0016a41086a20054198016a41086a29030037030020052005290398013703c001200541e8016a200541c0016a10af0142002109420021064200210720052d00a8024107460d002004417f6a2110200541b8036a4104722111200541f0026a2112200541b0026a41206a2113200541b0026a41186a211442002106420021074200210842002109034020142007370300200520063703c002200520083703b002200520093703b8022013200541e8016a41c100109a0521040240024020122002460d00201220024120109c050d010b20112004290200370200201141086a200441086a2215290200370200201141106a200441106a2216290200370200201141186a200441186a2217290200370200200520013602b803411010282218450d03201841002900a68845370000201841086a41002900ae88453700002005429080808080023702e403200520183602e00320052802b8032119201841104120102c2218450d04200541203602e403200520052802e803221a41046a3602e803200520183602e0032018201a6a20193600002011200541e0036a108f0120052802e803211820052802e0032119200a4200370300200b4200370300200c4200370300200542003703f00320192018200541f0036a1000200d200a290300370300200e200b290300370300200f200c290300370300200520052903f00337039803024020052802e403450d0020052802e003102a0b20054198036a41204101410041001003417f470d0020052d0090032118200a2017290000370300200b2016290000370300200c2015290000370300200520042900003703f00320054188016a200541f0036a109d0220054188016a41086a290300211b200529038801211c02400240201820032018200341ff0171491b220441ff01710d00200541086a201c201b420a420010a005200541b8036a41186a200a290300370300200541b8036a41106a200b290300370300200541b8036a41086a200c290300370300200520052903f0033703b803200541186a2001200541b8036a4100201010cd03200541186a41186a290300211d200541186a41086a290300211e2005290328211f2005290318212020052903082221211c200541086a41086a2903002222211b0c010b200541c8006a201b42002004ad42ff018322214200109f05200541d8006a201c420020214200109f05200541b8036a41186a200a290300370300200541b8036a41106a200b290300370300200541b8036a41086a200c290300370300200520052903f0033703b803200541e8006a2001200541b8036a2004201010cd03200541386a42004200201c4200109f05427f200541d8006a41086a2903002221200529034820052903387c7c221d2005290350200529034084420052201d2021547222041b2122427f200529035820041b2121200541e8006a41186a290300211d200541e8006a41086a290300211e2005290378211f200529036821200b201b20077c201c20067c2207201c54ad7c201d7c2007201f7c2206200754ad7c2107202220097c202120087c2209202154ad7c201e7c200920207c2208200954ad7c21090b200541e8016a200541c0016a10af0120052d00a8024107470d000b0b2000200637031020002008370300200041186a20073703002000200937030820054190046a24000f0b411041011037000b412041011037000be907030b7f047e027f230041a0016b22012400024002400240024002400240411a10282202450d00200241186a41002f00ce88453b0000200241106a41002900c68845370000200241086a41002900be8845370000200241002900b688453700002002411a4134102c2202450d012002200036001a20014180016a41186a2203420037030020014180016a41106a2204420037030020014180016a41086a2205420037030020014200370380012002411e20014180016a1000200141286a41186a2003290300370300200141286a41106a2004290300370300200141286a41086a200529030037030020012001290380013703282002102a200141286a41201009411310282202450d022002410f6a41002800a88945360000200241086a41002900a18945370000200241002900998945370000200241134126102c2202450d032002200036001320014180016a41186a2205420037030020014180016a41106a2206420037030020014180016a41086a2203420037030020014200370380012002411720014180016a1000200141286a41186a22072005290300370300200141286a41106a22082006290300370300200141286a41086a200329030037030020012001290380013703282002102a200141286a41201009200141c8006a200010cb03200128024c21092001280248210a024020012802502202450d002002410574210b200141c8006a4104722103200a21020340200141086a41186a200241186a290000220c370300200141086a41106a200241106a290000220d370300200141086a41086a200241086a290000220e37030020012002290000220f3703082003200f370200200341086a200e370200200341106a200d370200200341186a200c37020020012000360248411010282204450d06200441002900a68845370000200441086a41002900ae88453700002001429080808080023702742001200436027020012802482110200441104120102c2204450d072001412036027420012001280278221141046a36027820012004360270200420116a20103600002003200141f0006a108f012001280278210420012802702110200542003703002006420037030020014180016a41086a2211420037030020014200370380012010200420014180016a10002007200529030037030020082006290300370300200141286a41086a2011290300370300200120012903800137032802402001280274450d002001280270102a0b200241206a2102200141286a41201009200b41606a220b0d000b0b02402009450d00200a102a0b200141a0016a24000f0b411a41011037000b413441011037000b411341011037000b412641011037000b411041011037000b412041011037000b801102047f027e230041e0016b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1514000102030405060708090a0b0c0d0e0f10111213140b10a103000b20004102360200200041086a200141086a2903003703000c130b200241e0006a200141046a1070200041033602002000410c6a200241e8006a280200360200200020022903603702040c120b10bb03000b200241e0006a200141086a10ae02200041086a200241e0006a41e000109a051a200041053602000c100b200241e0006a200141086a10bc0320004106360200200041386a200241e0006a41306a290300370300200041306a200241e0006a41286a290300370300200041286a200241e0006a41206a290300370300200041206a200241e0006a41186a290300370300200041186a200241e0006a41106a290300370300200041106a200241e0006a41086a290300370300200041086a20022903603703000c0f0b200241e0006a41186a200141286a290000370300200241e0006a41106a200141206a290000370300200241e8006a200141186a290000370300200241e0006a41286a200141386a290000370300200241e0006a41306a200141c0006a290000370300200241e0006a41386a200141c8006a290000370300200241e0006a41c8006a200141d8006a290000370300200241e0006a41d0006a200141e0006a290000370300200241e0006a41d8006a200141e8006a2900003703002002200141106a2900003703602002200141306a290000370380012002200141d0006a2900003703a0012001410c6a2802002203417f4c0d0f200128020421010240024020030d0041012104410021050c010b20032105200310282204450d110b200420012003109a0521012002200241e0006a41e000109a0521042000410c6a2003360200200041086a200536020020002001360204200041106a200441e000109a051a200041073602000c0e0b200241e0006a200141086a10bd0320004108360200200041306a200241e0006a41286a290300370300200041286a200241e0006a41206a290300370300200041206a200241e0006a41186a290300370300200041186a200241e0006a41106a290300370300200041106a200241e0006a41086a290300370300200041086a20022903603703000c0d0b200241e0006a200141046a10c30320004109360200200041246a20024180016a2903003702002000411c6a200241f8006a290300370200200041146a200241f0006a2903003702002000410c6a200241e8006a290300370200200020022903603702040c0c0b200241e0006a200141046a10c3032000410a360200200041246a20024180016a2903003702002000411c6a200241f8006a290300370200200041146a200241f0006a2903003702002000410c6a200241e8006a290300370200200020022903603702040c0b0b200241e0006a200141086a10d3022000410b360200200041c0006a200241e0006a41386a290300370300200041386a200241e0006a41306a290300370300200041306a200241e0006a41286a290300370300200041286a200241e0006a41206a290300370300200041206a200241e0006a41186a290300370300200041186a200241e0006a41106a290300370300200041106a200241e0006a41086a290300370300200041086a20022903603703000c0a0b200241e0006a200141046a10be03200041046a200241e0006a41c400109a051a2000410c3602000c090b2000410d360200200020012802043602040c080b2001410c6a2802002203417f4c0d08200128020421010240024020030d0041002104410121050c010b20032104200310282205450d0b0b200520012003109a0521012000410c6a2003360200200041086a2004360200200020013602042000410e3602000c070b024002400240024002400240200141086a280200417f6a220341024b0d0020030e03010203010b418486c2001032000b200141386a2903002106200141306a290300210741012103024002402001410c6a2d00004101460d00200241e8006a2001411c6a290200370300200241e0006a41106a200141246a290200370300200241f8006a2001412c6a2d00003a00002002200141146a29020037036020012f000d2001410f6a2d0000411074722104200141106a2802002105410021030c010b200141106a28020021050b200241186a200241e0006a41186a280200360200200241106a200241e0006a41106a290300370300200241086a200241e0006a41086a29030037030020022002290360370300410121010c030b2001410c6a28020022034108762104410221010c010b2001410c6a28020022034108762104410321010b0b2000410f360200200041386a2006370300200041306a2007370300200041106a2005360200200041086a2001360200200041146a20022903003702002000410c6a2004410874200341ff0171723602002000411c6a200241086a290300370200200041246a200241106a2903003702002000412c6a200241186a2802003602000c060b200241e0006a200141086a10bf03200041086a200241e0006a418001109a051a200041103602000c050b200241e0006a200141046a10c003200041113602002000412c6a20024188016a280200360200200041246a20024180016a2903003702002000411c6a200241f8006a290300370200200041146a200241f0006a2903003702002000410c6a200241e8006a290300370200200020022903603702040c040b200241e0006a200141046a10af02200041046a200241e0006a41e400109a051a200041123602000c030b10c103000b10d501000b200241e0006a200141086a10c20320004100360200200041106a200241e0006a41086a290300370300200041086a20022903603703000b200241e0016a24000f0b1036000b200341011037000b200341011037000bfe1a03087f047e037f23004180076b22042400200441c8036a200141a002109a051a200441e8016a200441c8036a10d10341012105024002400240024002400240024020042d00e8014101470d00200020042f00e9013b0001200041013a0000200041036a20042d00eb013a000020032802002106410021000c010b200441106a200441e8016a41086a41d801109a051a0240024002400240024002400240024002400240024020032802002206450d00200341086a28020021072003280204210841002109200441003602c8034188e8c2004110200441c8036a10062101024020042802c8032205417f460d002001450d0020054104490d02200128000021092001102a0b411410282201450d0241002105200141106a41002800eaa046360000200141086a41002900e2a046370000200141002900daa046370000200141144128102c2201450d0320012009360014200441e8016a41186a22094200370300200441e8016a41106a220a4200370300200441e8016a41086a220b4200370300200442003703e80120014118200441e8016a1000200441c0066a41186a2009290300370300200441c0066a41106a200a290300370300200441c0066a41086a200b290300370300200420042903e8013703c0062001102a200441203602cc032004200441c0066a3602c80320062007200441c8036a10cb012008450d002006102a0b200441086a200441106a41d0006a10f3012004280208210720042d000c2108200441c8036a200441106a41d801109a051a4100210120042903e803220c4202510d0c20044198066a41186a200441c8036a41186a29030037030020044198066a41106a200441c8036a41106a29030037030020044198066a41086a200441c8036a41086a290300370300200420042903c8033703980620044188046a290300210d20044180046a290300210e20044190046a280200210920042903f003210f200441e8016a41086a22014200370300200442003703e80141d9efc200410d200441e8016a1008200441c0066a41086a2001290300370300200420042903e8013703c006200441003602e801200441c0066a4110200441e8016a10062101024020042802e801220a417f460d002001450d00200a41034d0d042001102a0b0240200c4201520d00200f4200510d050b411310282201450d05200141002900cef0423700002001410f6a41002800ddf042360000200141086a41002900d6f04237000020044293808080b0023702fc05200420013602f80520044198066a200441f8056a108f01200428028006210120042802f805210a200441e8016a41186a220b4200370300200441e8016a41106a22104200370300200441e8016a41086a22114200370300200442003703e801200a2001200441e8016a1000200441c0066a41186a200b290300370300200441c0066a41106a2010290300370300200441c0066a41086a2011290300370300200420042903e8013703c006024020042802fc05450d0020042802f805102a0b200441003602e801200441c0066a4120200441e8016a1006210a0240024020042802e8012201417f470d00410021010c010b0240200a0d00410021010c010b20014104490d07200a2800002101200a102a0b200441c8036a41d0006a210a024020012009470d00411310282201450d0820084101712108200941016a2109200141002900cef0423700002001410f6a41002800ddf042360000200141086a41002900d6f04237000020044293808080b0023702fc05200420013602f80520044198066a200441f8056a108f01200428028006210120042802f805210b200441e8016a41186a22104200370300200441e8016a41106a22114200370300200441e8016a41086a22124200370300200442003703e801200b2001200441e8016a1000200441c0066a41186a2010290300370300200441c0066a41106a2011290300370300200441c0066a41086a2012290300370300200420042903e8013703c006024020042802fc05450d0020042802f805102a0b200420093602e801200441c0066a4120200441e8016a41041007200441e8016a2008200210b803024020042903e801220ca741ff01714101460d00200441e8016a41086a22014200370300200442003703e80141a8a0c6004117200441e8016a1008200441c0066a41086a22092001290300370300200420042903e8013703c0062004200c4220883e02e801200441c0066a4110200441e8016a41041007200441e8016a2007200810b90320042903e801220ca741ff01714101460d0020014200370300200442003703e801418ea0c600411a200441e8016a100820092001290300370300200420042903e8013703c0062004200c4220883e02e801200441c0066a4110200441e8016a410410070c0a0b200c420888a7220941ff01714104460d09200c421088a721010c0a0b41034102200120094b1b2101410021090c090b41c4d1c3004133200441e8016a419cd9c3001038000b411441011037000b412841011037000b41c4d1c3004133200441e8016a419cd9c3001038000b41fcf8c5001032000b411341011037000b41c4d1c3004133200441e8016a419cd9c3001038000b411341011037000b200441e8016a200e200d20044198066a200720082002109e020240024020042d00e8014101460d0020044194026a280200210920044190026a280200210b2004418c026a280200210720044184026a280200211020044180026a2802002108024020044188026a2802002201450d002001410c6c21022008210103400240200141046a280200450d002001280200102a0b2001410c6a2101200241746a22020d000b0b02402010450d002008102a0b02402009450d002009410c6c21022007210103400240200141046a280200450d002001280200102a0b2001410c6a2101200241746a22020d000b0b200b450d012007102a0c010b20042f01ea01210120042d00e9012209417e6a220241024b0d0120020e03000100000b200441e8016a200a10d203024020042d00e8014101460d0020044194026a280200210920044190026a280200210a2004418c026a280200210720044184026a280200210b20044180026a2802002108024020044188026a2802002201450d002001410c6c21022008210103400240200141046a280200450d002001280200102a0b2001410c6a2101200241746a22020d000b0b0240200b450d002008102a0b02402009450d002009410c6c21022007210103400240200141046a280200450d002001280200102a0b2001410c6a2101200241746a22020d000b0b200a450d032007102a0c030b20042f01ea01210120042d00e9012209417e6a220241024b0d0020020e03020002020b200a106a200441f0056a41026a200441f4056a41026a2d00003a0000200420042f00f4053b01f005200041036a20014108763a000020002001410874200941ff0171723b0001200041013a000020054521000b20000d032006450d03200341046a2802000d020c030b200441e0066a41186a20044198066a41186a290300370300200441e0066a41106a20044198066a41106a290300370300200441e0066a41086a20044198066a41086a29030037030020042004290398063703e006410121010b200441f8056a41186a2208200441e0066a41186a2202290300370300200441f8056a41106a220a200441e0066a41106a2209290300370300200441f8056a41086a220b200441e0066a41086a2207290300370300200420042903e0063703f805200441e8016a200441c8036a41d0006a418801109a051a200220082903003703002009200a2903003703002007200b290300370300200420042903f8053703e0064102210802402001450d00200441c0066a41186a2002290300370300200441c0066a41106a2009290300370300200441c0066a41086a2007290300370300200420042903e0063703c006410121080b200441a2066a200441c0066a41086a290300370100200441aa066a200441c0066a41106a290300370100200441b2066a200441c0066a41186a290300370100200420083a009906200420042903c00637019a06200441003a009806200441e0066a200441e8016a20044198066a10f401200441e8016a41026a200441eb066a2d00003a0000200420042f00e9063b01e80120042903e006210c024020042d00e80622014102460d0020044198066a41026a200441e8016a41026a2d00003a0000200420042f01e8013b0198060b200441ec056a41026a220220044198066a41026a2d00003a0000200420042f0198063b01ec05024020014102460d00200441e8016a41026a20022d00003a0000200420042f01ec053b01e8010b200441d4036a20013a0000200441d5036a20042f01e8013b0000200441d7036a200441e8016a41026a2d00003a00002004200c3702cc03200441003a00c8034101210941014100200441c8036a10cc01200441003602c8034188e8c2004110200441c8036a10062102024020042802c8032207417f460d002002450d0020074104490d03200228000021092002102a200941016a21090b200420093602c8034188e8c2004110200441c8036a410410072000410c6a20013a0000200041046a200c3702002000410d6a20042f01ec053b00002000410f6a200441ee056a2d00003a0000200041003a00002006450d012005450d01200341046a280200450d010b2006102a0b20044180076a24000f0b41c4d1c3004133200441e8016a419cd9c3001038000bf41f05017f037e077f017e037f230041a00a6b22022400420221030240024002400240024002400240024002400240024002400240200129036822044202520d00200220014198016a418801109a051a0c010b20024188026a200141dc006a29000037030020024180026a200141d4006a290000370300200241f8016a200141cc006a290000370300200241d0016a41206a200141c4006a290000370300200241d0016a41186a2001413c6a290000370300200241d0016a41106a200141346a290000370300200241d0016a41086a2001412c6a290000370300200220012900243703d00120024190026a41086a20014188016a29030037030020024190026a41106a20014190016a290300370300200220014180016a29030037039002200141f8006a2903002103200129037021052001280204210620012d00002107200241800a6a41026a2208200141036a2d00003a0000200241c8026a41086a2209200141106a290200370300200241c8026a41106a220a200141186a290200370300200241c8026a41186a220b200141206a280200360200200220012f00013b01800a200220012902083703c80202400240024020074101460d00200241e0096a41026a20082d00003a0000200241b0066a41086a2009290300370300200241b0066a41106a200a290300370300200241b0066a41186a200b2d00003a0000200220022f01800a3b01e009200220022903c8023703b0060c010b200241c0076a200641067610fe0120022802c00721070240024020022802c8072006413f7122064b0d00410021080c010b200241e0096a41026a200720064105746a220641026a2d00003a0000200241b8066a2006410f6a290000370300200241c0066a200641176a290000370300200241c8066a2006411f6a2d00003a0000200220062f00003b01e009200220062900073703b00620062800032106410121080b024020022802c407450d002007102a0b20080d00410121070c010b200241c0076a41026a200241e0096a41026a2d00003a0000200241c8026a41086a200241b0066a41086a290300370300200241c8026a41106a200241b0066a41106a290300370300200241c8026a41186a200241b0066a41186a2d00003a0000200220022f01e0093b01c007200220022903b0063703c802410021070b200241c0096a41026a2208200241c0076a41026a2d00003a0000200241a0056a41086a2209200241c8026a41086a290300370300200241a0056a41106a220a200241c8026a41106a290300370300200241a0056a41186a220b200241c8026a41186a2d00003a0000200220022f01c0073b01c009200220022903c8023703a00502402007450d00200041013b0001200041013a0000200041036a41003a000020014198016a106a0c0c0b200241b7026a2009290300370000200241bf026a200a290300370000200241c7026a200b2d00003a0000200220022f01c0093b01a802200220063600ab02200220022903a0053700af02200220082d00003a00aa02200241c0076a20014198016a418801109a051a200241c8086a41106a20024190026a41106a290300370300200241c8086a41086a20024190026a41086a29030037030020022002290390023703c80841002107200241800a6a410010f701200241c0096a41086a2002418b0a6a290000370300200241c0096a41106a200241930a6a290000370300200241d5096a200241800a6a41186a290000370000200220022900830a3703c00920022f01800a210b20022d00820a210c200241800a6a41086a22014200370300200242003703800a41d9efc200410d200241800a6a1008200241e0096a41086a2001290300370300200220022903800a3703e009200241003602800a200241e0096a4110200241800a6a10062101024020022802800a2206417f460d002001450d0020064104490d02200128000021072001102a0b41002106024020044201520d0020054200510d03417f21062007ad220d20032003200d541b220d200d20037d2005827d220d42ffffffff0f560d00200da721060b411010282201450d03200141086a41002900c6f042370000200141002900bef042370000200141104120102c2201450d0420012006360010200241800a6a41186a22074200370300200241800a6a41106a22084200370300200241800a6a41086a22094200370300200242003703800a20014114200241800a6a1000200241e0096a41186a2007290300370300200241e0096a41106a220a2008290300370300200241e0096a41086a2009290300370300200220022903800a3703e0092001102a4101210102400240200241e0096a41204101410041001003417f470d000c010b200241800a6a200610f701200241a0096a41086a2002418b0a6a290000370300200241a0096a41106a200241930a6a290000370300200241a0096a41156a2007290000370000200241e0096a41086a200241c0096a41086a290300370300200a200241c0096a41106a290300370300200241e0096a41156a200241c0096a41156a290000370000200220022900830a3703a009200220022903c0093703e00920022f01800a20022d00820a411074722106410021010b20024180096a41156a2207200241e0096a41156a29000037000020024180096a41106a2208200241e0096a41106a29030037030020024180096a41086a2209200241e0096a41086a290300370300200241e0086a41086a220a200241a0096a41086a290300370300200241e0086a41106a220e200241a0096a41106a290300370300200241e0086a41156a220f200241a0096a41156a290000370000200220022903e00937038009200220022903a0093703e00802402001450d00200241c0076a106a200041036a41003a0000200041800a3b0001200041013a00000c0c0b200241e8046a41156a22012007290000370000200241e8046a41106a22072008290300370300200241e8046a41086a22082009290300370300200241c8046a41086a2209200a290300370300200241c8046a41106a220a200e290300370300200241c8046a41156a220e200f29000037000020022002290380093703e804200220022903e0083703c80420024188056a41106a220f200241c8086a41106a29030037030020024188056a41086a2210200241c8086a41086a290300370300200220022903c80837038805200241b0066a41046a200241c0076a418801109a051a200241a0056a200241b0066a418c01109a051a200241c8026a200241a0056a41046a418801109a051a20024186046a200b200c41107472220b4110763a000020024184046a220c200b3b0100200241e0036a2003370300200241d8036a2005370300200241e8036a220b200229038805370300200241f0036a2010290300370300200241f8036a2210200f29030037030020024187046a20022903e8043700002002418f046a200829030037000020024197046a20072903003700002002419c046a2001290000370000200220043703d003200241a30136028004200241a6046a20064110763a0000200241a4046a220720063b0100200241a7046a20022903c804370000200241af046a2009290300370000200241b7046a200a290300370000200241bc046a200e290000370000410410282201450d05200242043702b406200220013602b006200241c8026a200241b0066a10eb010240024020022903d0034201510d000240024020022802b40620022802b8062201460d0020022802b00621060c010b200141016a22062001490d0c200141017422082006200820064b1b22084100480d0c0240024020010d002008102821060c010b20022802b00620012008102c21060b2006450d09200220083602b406200220063602b00620022802b80621010b2002200141016a3602b806200620016a41003a00000c010b20022903e00320022903d8032203420c882204420120044201561b8021040240024020022802b406220620022802b80622016b4102490d0020022802b00621060c010b200141026a22082001490d0b200641017422012008200120084b1b22014100480d0b0240024020060d002001102821060c010b20022802b00620062001102c21060b2006450d09200220013602b406200220063602b00620022802b80621010b2002200141026a3602b806200620016a2004a741047420037aa7417f6a22014101200141014b1b2201410f2001410f491b723b00000b2010200241b0066a10a0012002200b3602a005200241a0056a200241b0066a10a30120022802800421080240024020022802b406220620022802b80622016b4104490d0020022802b00621060c010b200141046a22092001490d0a200641017422012009200120094b1b22014100480d0a0240024020060d002001102821060c010b20022802b00620062001102c21060b2006450d09200220013602b406200220063602b00620022802b80621010b2002200141046a3602b806200620016a20083600002002200241b0066a3602a005200c200241a0056a10c8012002200241b0066a3602a0052007200241a0056a10c80120022802b006210120022802b40621060240024020022802b80622074180024b0d00200241d0016a20012007200241a8026a10dd0321070c010b200241800a6a41186a22084200370300200241800a6a41106a22094200370300200241800a6a41086a220a4200370300200242003703800a20012007200241800a6a1000200241e0096a41186a2008290300370300200241e0096a41106a2009290300370300200241e0096a41086a200a290300370300200220022903800a3703e009200241d0016a200241e0096a4120200241a8026a10dd0321070b02402006450d002001102a0b2007450d0a200241b0016a41086a200241a8026a41086a290300370300200241b0016a41106a200241a8026a41106a290300370300200241b0016a41186a200241a8026a41186a29030037030020024188016a41086a200241e0036a29030037030020024188016a41106a200241e8036a29030037030020024188016a41186a200241f0036a290300370300200241a8016a200241f8036a290300370300200220022903a8023703b0012002200241d8036a2903003703880120022903d00321032002200241c8026a418801109a051a0b200041086a20022903b001370300200041286a2003370300200041306a200229038801370300200041206a200241b0016a41186a290300370300200041186a200241b0016a41106a290300370300200041106a200241b0016a41086a290300370300200041386a20024188016a41086a290300370300200041c0006a20024188016a41106a290300370300200041c8006a20024188016a41186a290300370300200041d0006a20024188016a41206a290300370300200041d8006a2002418801109a051a200041003a0000200241a00a6a24000f0b41c4d1c3004133200241800a6a419cd9c3001038000b41fcf8c5001032000b411041011037000b412041011037000b410441011037000b200841011037000b200141011037000b200141011037000b1031000b20004180083b0001200041013a0000200041036a41003a0000200241c8026a106a0b200241a00a6a24000be00402037f017e230041306b220224000240024020012802004110460d00200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c010b024002400240024002400240200141086a2d00000e06050402010004050b200141c8006a21030c020b200141d0006a21030c010b200141186a21030b200241086a41086a220142003703002002420037030841affec5004111200241086a1008200241206a41086a20012903003703002002200229030837032020024100360208200241206a4110200241086a1006210102400240024020022802082204417f470d004280ade20421050c010b024020010d004280ade20421050c010b20044108490d01200129000021052001102a4280ade20420057d21050b024020032903002005560d00200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c040b200041800c3b0001200041013a0000200041036a41003a00000c030b41c4d1c3004133200241086a419cd9c3001038000b200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c010b2002411c6a41013602002002420137020c200241ccd1c50036020820024104360224200241ccd0c3003602202002200241206a360218200241086a41f0d0c300103e000b200241306a24000ba60201037f412e210241f8f4c50021030240024002402001417e6a22044102200441ff01714102491b41ff01710e03020001020b4130210241c8f4c50021030c010b20014180feff07714108762104024020014101710d00411f210241b4f5c50021030240024002400240024002400240200441ff01710e080006010203040508000b4120210241baf7c50021030c070b4127210241daf6c50021030c060b4117210241c3f6c50021030c050b41a4f6c50021030c040b4126210241fef5c50021030c030b412b210241d3f5c50021030c020b413921024181f7c50021030c010b411f210241daf7c500210302400240200441ff01710e03000102000b41c100210241baf8c50021030c010b41c100210241f9f7c50021030b20002002360204200020033602000b13002000410136020420004188bcc3003602000b3400200041e7bfc30036020420004100360200200041146a4102360200200041106a41f0bfc300360200200041086a42093702000b130020004101360204200041bcc2c3003602000b3101017f02404108102822020d00410841011037000b20004288808080800137020420002002360200200242dc0b3700000b130020004104360204200041e0c5c3003602000b3400200041beccc30036020420004100360200200041146a4101360200200041106a41d4ccc300360200200041086a42133702000beb050a067f017e017f017e017f017e017f017e017f017e230041206b2202240002400240024020014108490d00200141017641feffffff07712203417f6a220420014f0d022001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d01200020044105746a22042900002108200020054105746a220541086a2209290000210a200541106a220b290000210c200541186a220d290000210e20042005290000370000200441186a220f2900002110200f200e370000200441106a220f290000210e200f200c370000200441086a2204290000210c2004200a370000200d2010370000200b200e3700002009200c37000020052008370000024020032001490d00200321040c030b2006410d7420067322054111762005732205410574200573220620077122054100200120052001491b6b220520014f0d01200020034105746a22042900002108200020054105746a220541086a2209290000210a200541106a220b290000210c200541186a220d290000210e20042005290000370000200441186a220f2900002110200f200e370000200441106a220f290000210e200f200c370000200441086a2204290000210c2004200a370000200d2010370000200b200e3700002009200c370000200520083700002003410172220420014f0d022006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d01200020044105746a22012900002108200020054105746a220041086a2205290000210a200041106a2204290000210c200041186a2203290000210e20012000290000370000200141186a220629000021102006200e370000200141106a2206290000210e2006200c370000200141086a2201290000210c2001200a370000200320103700002004200e3700002005200c370000200020083700000b200241206a24000f0b4190cec300200520011034000b4180cec300200420011034000be90609067f017e017f017e017f027e017f017e027f230041206b22022400024020014101762203450d0003402003417f6a2203210402400240024003402004410174220541017221060240200541026a220520014f0d00200620014f0d0220052006200020064105746a200020054105746a4120109c054100481b21060b200620014f0d03200420014f0d02200020044105746a2204200020064105746a22054120109c0541004e0d03200541086a22072900002108200541106a2209290000210a200541186a220b290000210c2004290000210d20042005290000370000200441186a220e290000210f200e200c370000200441106a220e290000210c200e200a370000200441086a2204290000210a20042008370000200b200f3700002009200c3700002007200a3700002005200d370000200621040c000b0b41c8cfc300200620011034000b41d8cfc300200420011034000b20030d000b0b0240024020014102490d002001210703402007417f6a220720014f0d02200241186a2209200041186a2204290000370300200241106a220b200041106a2205290000370300200241086a220e200041086a2203290000370300200020074105746a220641086a2900002108200641106a290000210a200641186a290000210c2000290000210d200020062900003700002004200c3700002005200a370000200320083700002002200d37030041002105024002400240034020062002290300370000200641186a2009290300370000200641106a200b290300370000200641086a200e2903003700002005410174220641017221040240200641026a220620074f0d00200420074f0d0220062004200020044105746a200020064105746a4120109c054100481b21040b200420074f0d03200520074f0d02200020054105746a2205200020044105746a22064120109c0541004e0d032009200541186a2203290000370300200b200541106a2210290000370300200e200541086a2211290000370300200641086a2900002108200641106a290000210a200641186a290000210c2005290000210d200520062900003700002003200c3700002010200a370000201120083700002002200d370300200421050c000b0b41c8cfc300200420071034000b41d8cfc300200520071034000b200741014b0d000b0b200241206a24000f0b4190cec300200720011034000b9009030a7f017e0a7f230041c0006b22022400200041807f6a21032001417f6a2104200141324921054101210641002107024003400240024020062001490d00410021080c010b41012108200020064105746a2209200941606a4120109c054100480d0003404101210a20042006460d03200641016a2106200941206a220a20094120109c052108200a21092008417f4a0d000b200620014921080b2006200146210a20050d0120062001460d01024002400240024002402006417f6a220920014f0d002008450d0120002006410574220b6a220a290000210c200a200020094105746a22092900003700002009200c370000200a41086a220d290000210c200d200941086a22082900003700002008200c370000200a41106a220e290000210c200e200941106a220f290000370000200f200c370000200a41186a2210290000210c2010200941186a22112900003700002011200c37000020064102490d04200920002006417e6a22124105746a22134120109c05417f4a0d042009290000210c20092013290000370000200241206a41186a22142011290000370300200241206a41106a2215200f290000370300200241206a41086a221620082900003703002008201341086a290000370000200f201341106a2900003700002011201341186a2900003700002002200c370320024020120d00410021120c040b200241206a20002006417d6a22084105746a4120109c05417f4a0d032003200b6a21090340200941d8006a200941386a290000370000200941d0006a200941306a290000370000200941c8006a200941286a290000370000200941c0006a200941206a2900003700002008450d032008417f6a2108200241206a20094120109c05210f200941606a2109200f4100480d000b200841016a21120c030b4180cec300200920011034000b4190cec300200620011034000b410021120b200020124105746a22092002290320370000200941186a2014290300370000200941106a2015290300370000200941086a20162903003700000b200741016a21070240200120066b220f4102490d00200a41206a2209200a4120109c05417f4a0d00200a290000210c200a2009290000370000200241206a41186a22112010290000370300200241206a41106a2213200e290000370300200241206a41086a2212200d290000370300200d200941086a290000370000200e200941106a2900003700002010200941186a2900003700002002200c3703204101210d0240200f4103490d00200a41c0006a2209200241206a4120109c05417f4a0d00410321084102210e02400340200e410574200a6a41606a220d2009290000370000200d41186a200941186a290000370000200d41106a200941106a290000370000200d41086a200941086a2900003700002008200f4f0d0120084105742109200e210d2008210e200841016a2108200a20096a2209200241206a4120109c054100480d000c020b0b200e210d0b200a200d4105746a22092002290320370000200941186a2011290300370000200941106a2013290300370000200941086a20122903003700000b20074105470d000b4100210a0b200241c0006a2400200a0b8305010f7f230041a0026b22042400200441c0016a41386a2205200041386a2206290000370300200441c0016a41306a2207200041306a2208290000370300200441c0016a41286a2209200041286a220a290000370300200441c0016a41206a220b200041206a220c290000370300200441c0016a41186a220d200041186a220e290000370300200441c0016a41106a220f200041106a2210290000370300200441c0016a41086a2211200041086a2212290000370300200420002900003703c0010240024020012002200441c0016a2003100a0d00410121000c010b20052006290000370300200720082900003703002009200a290000370300200b200c290000370300200d200e290000370300200f20102900003703002011201229000037030020044188026a2205200341086a29000037030020044190026a2206200341106a29000037030020044198026a2207200341186a290000370300200420002900003703c00120042003290000370380022004200441c0016a41e000109a05220041c0016a200041e000109a051a200041e0006a41386a200041386a290000370300200041e0006a41306a200041306a290000370300200041e0006a41286a200041286a290000370300200041e0006a41206a200041206a290000370300200041e0006a41186a200041186a290000370300200041e0006a41106a200041106a290000370300200041e0006a41086a200041086a29000037030020002000290000370360200041a0016a41186a2007290300370300200041a0016a41106a2006290300370300200041a0016a41086a200529030037030020002000290380023703a00120012002200041e0006a200041a0016a10164521000b200441a0026a240020000bc50101037f230041206b220224002002410036021020014110200241106a10062101024002400240024020022802102203417f460d0020010d010b200041003602040c010b200220013602082002200336020c20034104490d0120022003417c6a36020c2002200141046a36020820012800002103200241106a200241086a10820120022802102204450d012000200229021437020820002004360204200020033602002001102a0b200241206a24000f0b41c4d1c3004133200241106a419cd9c3001038000be80201057f230041b0036b22022400200241003602a80220014110200241a8026a1006210302400240024020022802a8022201417f470d00200041133602000c010b20022001360294012002200336029001200241a8026a20024190016a10810120022802a8024113460d01200241a0016a200241a8026a418801109a051a024002402002280294012204450d0020022802900122052d0000210620022004417f6a360294012002200541016a3602900120064103490d010b200241a0016a106a0c020b20022802a00121042002410c6a200241a0016a410472418401109a051a2002200228009901360204200220024199016a41036a28000036000720044113460d0120002004360200200041046a2002410c6a418401109a051a20004188016a20063a000020002002280204360089012000418c016a20022800073600002001450d002003102a0b200241b0036a24000f0b41c4d1c3004133200241a8026a419cd9c3001038000bdb0102027f037e230041206b220224002002410036021020014120200241106a10062101024002400240024020022802102203417f460d0020010d010b200041003602100c010b200220013602082002200336020c20034110490d012002200341706a36020c2002200141106a360208200141086a290000210420012900002105200241106a200241086a106d20022802102203450d0120022902142106200020043703082000200537030020002006370214200020033602102001102a0b200241206a24000f0b41c4d1c3004133200241106a419cd9c3001038000bc40101037f230041206b220224002002410036021020014120200241106a10062101024002400240024020022802102203417f460d0020010d010b200041003602040c010b200220013602082002200336020c20034104490d0120022003417c6a36020c2002200141046a36020820012800002103200241106a200241086a106d20022802102204450d012000200229021437020820002004360204200020033602002001102a0b200241206a24000f0b41c4d1c3004133200241106a419cd9c3001038000bd20101037f230041106b22022400200241003602082002420137030020012d00002103410110282104024002400240024020034101460d002004450d02200242818080801037020420022004360200200441003a0000200141086a200210e3030c010b2004450d02200242818080801037020420022004360200200441013a00002002200236020c200141016a2002410c6a10c8010b2002280204210420004120200228020022012002280208100702402004450d002001102a0b200241106a24000f0b410141011037000b410141011037000ba60a02067f027e230041106b2202240020002802102103200041186a2802002204200110b4010240024002400240024002400240024002400240200141046a2802002205200141086a28020022066b2004490d00200128020021050c010b200620046a22072006490d08200541017422062007200620074b1b22064100480d080240024020050d002006102821050c010b200128020020052006102c21050b2005450d0120012005360200200141046a2006360200200141086a28020021060b200141086a2207200620046a360200200520066a20032004109a051a200028021c210502400240200141046a2802002206200728020022046b4104490d00200128020021060c010b200441046a22032004490d08200641017422042003200420034b1b22044100480d080240024020060d002004102821060c010b200128020020062004102c21060b2006450d0220012006360200200141046a2004360200200141086a28020021040b200141086a2203200441046a360200200620046a20053600002002200136020c2000412c6a2002410c6a10c801200041086a29030021082000290300210902400240200141046a2802002206200328020022046b4110490d00200128020021060c010b200441106a22052004490d08200641017422042005200420054b1b22044100480d080240024020060d002004102821060c010b200128020020062004102c21060b2006450d0320012006360200200141046a2004360200200141086a28020021040b200141086a2205200441106a360200200620046a22042008370008200420093700002000280220210302400240200141046a2802002206200528020022046b4104490d00200128020021060c010b200441046a22052004490d08200641017422042005200420054b1b22044100480d080240024020060d002004102821060c010b200128020020062004102c21060b2006450d0420012006360200200141046a2004360200200141086a28020021040b200141086a2205200441046a360200200620046a20033600000240024020002802244101460d0002400240200141046a28020020052802002200460d00200128020021040c010b200041016a22042000490d0a200041017422062004200620044b1b22064100480d0a0240024020000d002006102821040c010b200128020020002006102c21040b2004450d0720012004360200200141046a2006360200200141086a28020021000b200141086a200041016a360200200420006a41003a00000c010b02400240200141046a28020020052802002204460d00200128020021060c010b200441016a22062004490d09200441017422052006200520064b1b22054100480d090240024020040d002005102821060c010b200128020020042005102c21060b2006450d0720012006360200200141046a2005360200200141086a28020021040b200141086a2205200441016a360200200620046a41013a00002000280228210602400240200141046a2802002204200528020022006b4104490d00200128020021040c010b200041046a22052000490d09200441017422002005200020054b1b22004100480d090240024020040d002000102821040c010b200128020020042000102c21040b2004450d0820012004360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200420006a20063600000b200241106a24000f0b200641011037000b200441011037000b200441011037000b200441011037000b200641011037000b200541011037000b200041011037000b1031000b910101047f230041106b2201240041002102200141003602044188e8c2004110200141046a1006210302400240024020012802042204417f470d000c010b024020030d000c010b20044104490d01200328000021042003102a4188e8c20041101009410121020b2000200236020020002004360204200141106a24000f0b41c4d1c3004133200141086a419cd9c3001038000bfb0103017f017e027f230041206b2201240042002102200141106a41086a220342003703002001420037031041affec5004111200141106a1008200141086a2003290300370300200120012903103703002001410036021020014110200141106a100621030240024020012802102204417f460d002003450d0020044108490d01200329000021022003102a0b200141106a41086a220342003703002001420037031041affec5004111200141106a1008200141086a2003290300370300200120012903103703002001200220007c37031020014110200141106a41081007200141206a24000f0b41c4d1c3004133200141106a419cd9c3001038000b1300200041053602042000418cdac3003602000b3400200041a4d5c30036020420004100360200200041146a4107360200200041106a41e4ecc300360200200041086a42083702000b3701017f02404110102822020d00411041011037000b2002420037000820024201370000200042908080808002370204200020023602000bc70101017f23004190016b22022400200241003a00782002428080848080023703682002420137035820024201370350200242af0137034820024287013703402002420137033820024201370330200242013703282002420137032020024201370318200242013703102002420137030820024280808080c00037036020024280808180800437037020024100360288012002420137038001200241086a20024180016a10ee01200041086a200228028801360200200020022903800137020020024190016a24000b130020004110360204200041c0f6c3003602000b3301017f02404108102822020d00410841011037000b2000428880808080013702042000200236020020024280ade2043700000b3201017f02404104102822020d00410441011037000b20004284808080c000370204200020023602002002418080013600000b3101017f02404104102822020d00410441011037000b20004284808080c0003702042000200236020020024180083600000b3101017f02404108102822020d00410841011037000b20004288808080800137020420002002360200200242e8073700000b3c01017f02404110102822020d00411041011037000b2002420037000820024280a094a58d1d370000200042908080808002370204200020023602000b3b01017f02404110102822020d00411041011037000b2002420037000820024280c8afa025370000200042908080808002370204200020023602000b3e01017f02404110102822020d00411041011037000b20024200370008200242808086bdbacdd21a370000200042908080808002370204200020023602000b3f01017f02404110102822020d00411041011037000b200242003700082002428080a8ec85afd1b101370000200042908080808002370204200020023602000b3001017f02404104102822020d00410441011037000b20004284808080c00037020420002002360200200241083600000b3001017f02404104102822020d00410441011037000b20004284808080c00037020420002002360200200241023600000bc81603027f047e117f230041a0096b22072400200741e0006a41186a200141186a290000370300200741e0006a41106a200141106a290000370300200741e0006a41086a200141086a2900003703002007200129000037036020074180016a41186a200241186a29000037030020074180016a41106a200241106a29000037030020074180016a41086a200241086a2900003703002007200229000037038001200628020021012006280204210220062802082108200741d0006a10f6030240024002400240024020072903502209200741d0006a41086a290300220a8450450d004200210b4200210c0c010b200741306a200a420020054200109f05200741c0006a2009420020054200109f05200741206a4200420020094200109f0502402007290338200729032884420052200741c0006a41086a290300220b200729033020072903207c7c220c200b5472450d004127210641a6b5c00021080c020b2007290340210b0b200741c0016a200741e0006a200b200c41081098024101210d20072802c0014101470d0120072802c801210620072802c40121080b2000200836020420004101360200200041146a41003602002000410c6a4201370200200041086a20063602002002450d012001102a0c010b200741c0016a41106a290300210b20072903c801210c200741a0016a41186a220e200a370300200720093703b001200720053703a801200720053703a001200741c0016a10f703200741c0026a4200370300200741f0026a4200370300200741e0026a4200370300200741d0026a42003703002007428080e983b1de163703b80220074280a094a58d1d3703e80220074280a094a58d1d3703d80220074280a094a58d1d3703c802200742808880808080103703f8022007200741c0016a360280032007200741c0016a36028403200741d0056a41186a220f200741e0006a41186a290300370300200741d0056a41106a2206200741e0006a41106a290300370300200741d0056a41086a2210200741e0006a41086a290300370300200720072903603703d00510a00321051098012111200741c0036a4200370300200741b4036a41d0b5c000360200200741b0036a4101360200200741a8036a4200370300200741a4036a41f8b9c000360200200741e0036a2010290300370300200741e8036a2006290300370300200741f0036a200f29030037030020074200370390032007428080808080013703b803200741003602a003200720072903d0053703d803200720074184036a3602d003200720074180036a3602cc032007200741c0016a3602c803200720113602d4032007200537038803200f20074180016a41186a290300370300200620074180016a41106a290300370300201020074180016a41086a29030037030020072007290380013703d005200720083602a804200720023602a404200720013602a004200741f8036a20074188036a200741d0056a20032004200741a0016a200741a0046a10c101024020072802f8030d00200741f8036a41106a2d00000d00200741d0056a41086a200741a8036a290300370300200741a0046a41086a200741dc056a280200360200200720072903a0033703d005200720072902d4053703a00420074198096a200741a0046a1092014100210d0b200720072903b001200e29030020072903a80122054200109f0520072903a00120057d10e503200741106a200741e0006a2007290300200741086a29030010d0012006200b200741106a41086a29030022097d200c2007290310220554ad7d2009200b7d2005200c54ad7d2005200c582009200b582009200b5122021b22011b220a3703002007200c20057d2005200c7d20011b22033703d80520072005200c562009200b5620021b2202ad22053703d00541012101024020020d00200720033703a0042007200a3703a8042007200741a0046a3602e007200741e0076a109d014100210120072903d00521050b0240024020054200520d002001450d01200720103602a004200741a0046a109d010c010b200720103602a004200741a0046a109c010b20072802c403210120072802c0032106200720072802bc032202360298042007200636029404200720023602900420072002200141b0016c6a221236029c0402402001450d00200741e0076a410172211320074187076a2114200741e9076a210820074180076a4102722110200741d0056a41106a2115200741f8056a2116200741b4066a211720074191066a210f200741f1056a210e200741d0056a4101722118200741c8066a2119034020022d00002101200741a0046a200241016a41af01109a051a0240024020014103460d00200720013a00d0052018200741a0046a41af01109a052106024002400240024020010e03000102000b20072802d805211a20072802dc05210620072802d40521012014201541d800109a051a2007410c3a00e007201320074180076a41df00109a051a20012006200741e0076a10cc0141012106410021110240201a450d002001102a0b4100211a0c020b200741e8086a41186a2201200641186a2211290000370300200741e8086a41106a221a200641106a221b290000370300200741e8086a41086a221c200641086a221d290000370300200720062900003703e808200741e0076a2016418801109a051a20102006290000370000201041086a201d290000370000201041106a201b290000370000201041186a201129000037000020074180023b01800720074188096a200741e0076a20074180076a10f40120072d0090092106200820072903e808370000200841086a201c290300370000200841106a201a290300370000200841186a2001290300370000200741043a00e8072007410c3a00e007200720064102463a008908410021064101211141014100200741e0076a10cc014100211a0c010b2019290300210520072903c0062109200741e8086a41186a200641186a290000370300200741e8086a41106a200641106a290000370300200741e8086a41086a200641086a290000370300200720062900003703e80820074180076a41186a200e41186a29000037030020074180076a41106a200e41106a29000037030020074180076a41086a200e41086a2900003703002007200e29000037038007200741e0076a41186a200f41186a290000370300200741e0076a41106a200f41106a290000370300200741e0076a41086a200f41086a2900003703002007200f2900003703e00720074188096a41086a201741086a2802003602002007201729020037038809200741e8086a20074180076a200741e0076a2009200520074188096a10f80341012111410121064101211a0b024020072d00d005220141014b0d000240024020010e020001000b2011450d03024020072802d805450d0020072802d405102a0b20072d00e0054105490d03200728028806450d03200728028406102a0c030b2006450d022016106a0c020b201a20072802b80645720d0120072802b406102a0c010b2007200241b0016a360298040c020b200241b0016a22022012470d000b20072012360298040b20074190046a1069200041106a200741f8036a41106a290300370200200041086a200741f8036a41086a290300370200200020072903f80337020002402007280294032202450d0020074188036a41106a280200450d002002102a0b200d450d0020074188036a411c6a280200210220072802ac0321080240024020072802a80322060d00200221010c010b2006210020022101034020012802880b21012000417f6a22000d000b0340200220022f01064102746a41880b6a28020021022006417f6a22060d000b0b200741d0056a411c6a20022f0106360200200741e8056a4100360200200741e4056a2002360200200720083602f005200741003602e005200742003703d805200720013602d405200741003602d005200741d0056a109b010b200741a0096a24000bc70104017f017e027f017e230041206b2201240042002102200141106a41086a22034200370300200142003703104188d9c3004111200141106a1008200141086a2003290300370300200120012903103703002001410036021020014110200141106a1006210302400240024020012802102204417f470d00420121050c010b20044110490d01200341086a2900002102200329000021052003102a0b2000200537030020002002370308200141206a24000f0b41c4d1c3004133200141106a419cd9c3001038000be20301047f23004190026b2201240020014190016a41086a22024200370300200142003703900141c0fec500411820014190016a100820014180016a41086a2002290300370300200120012903900137038001200141003602900120014180016a411020014190016a100621030240024002402001280290012204417f470d00410221020c010b2001200436028c02200120033602880220014190016a20014188026a10ea0120012d00800222024102460d01200141106a20014190016a41f000109a051a200120014184026a28000036000b20012001280081023602082004450d002003102a0b20014190016a200141106a41f000109a051a2001200128000b3600830120012001280208360280010240024020024102470d002000428080818080043703682000428080848080023703602000420137035020004201370348200042af0137034020004287013703382000420137033020004201370328200042013703202000420137031820004201370310200042013703082000420137030020004280808080c000370358410021020c010b200020014190016a41f000109a05220441f4006a20012800830136000020042001280280013600710b200020023a007020014190026a24000f0b41c4d1c3004133200141106a419cd9c3001038000b891d01117f230041b0036b2206240020064190026a2000108c01410221070240024020062d00900222084102470d00410121094134210a410221080c010b20064190036a41086a2209200641a4026a29020037030020064190036a41106a220b200641ac026a29020037030020064190036a41186a220c200641b4026a290200370300200641e8026a41086a220d200641c8026a290300370300200641e8026a41106a220e200641d0026a290300370300200641e8026a41186a220f200641d8026a290300370300200641e8026a41206a2210200641e0026a29030037030020062006419c026a290200370390032006200641c0026a2903003703e80220064190026a41086a280200210a024020080d00200641bc026a2802002107200641e8016a41186a200c290300370300200641e8016a41106a200b290300370300200641e8016a41086a2009290300370300200641c0016a41086a200d290300370300200641c0016a41106a200e290300370300200641c0016a41186a200f290300370300200641c0016a41206a201029030037030020062006290390033703e801200620062903e8023703c0010b41022108024020074102470d00410121094134210a0c010b200641e8026a41186a200641e8016a41186a290300370300200641e8026a41106a200641e8016a41106a290300370300200641e8026a41086a200641e8016a41086a29030037030020064190026a41086a200641c0016a41086a29030037030020064190026a41106a200641c0016a41106a29030037030020064190026a41186a200641c0016a41186a29030037030020064190026a41206a200641c0016a41206a290300370300200620062903e8013703e802200620062903c0013703900241002109200721080b200641a0016a41086a2207200641e8026a41086a290300370300200641a0016a41106a220b200641e8026a41106a290300370300200641a0016a41186a220c200641e8026a41186a290300370300200641f8006a41086a220d20064190026a41086a290300370300200641f8006a41106a220e20064190026a41106a290300370300200641f8006a41186a220f20064190026a41186a290300370300200641f8006a41206a221020064190026a41206a290300370300200620062903e8023703a00120062006290390023703780240024020090d00200641d0006a22112006290378370300200641346a20072903003702002006413c6a200b290300370200200641c4006a200c290300370200200641d8006a200d290300370300200641e0006a200e290300370300200641e8006a200f290300370300200641f0006a20102903003703002006200a360228200620062903a00137022c2006200836024c41012109109801210d0240024020084101470d002011280200200d460d010b20064190026a2001108c010240024020062d009002220a4102470d00412e210a419d8fc400210b0c010b200641e8016a41026a20062d0093023a0000200641e8026a41086a2209200641a4026a280200360200200620062f0091023b01e80120062006419c026a2902003703e802200641ac026a2802002108200641a8026a28020021070240200a0d0041012109412e210a419d8fc400210b024020080d000c020b2007102a0c010b20064190026a41086a280200210a200628029402210b200641a0016a41026a200641e8016a41026a2d00003a0000200641c0016a41086a2009280200360200200620062f01e8013b01a001200620062903e8023703c001200641b0026a2d0000210c410021090b2006418c026a41026a200641a0016a41026a2d00003a000020064190036a41086a220e200641c0016a41086a280200360200200620062f01a0013b018c02200620062903c0013703900320090d002006418b016a200e280200360000200620062f018c023b01782006200a36007f2006200b36007b2006200629039003370083012006200c3a00970120062008360093012006200736008f0120062006418e026a2d00003a007a200628024c211220062802502113200620052802002211200541086a28020022144105746a3602940320062011360290032006200641286a3602980320064190026a20064190036a106802400240024002400240024002400240024002402006280290020d0041002109200641003602f001200642043703e801410421074100210a0c010b411010282207450d012007200629039002370200200741086a20064190026a41086a220b290300370200200641c0016a41086a20064190036a41086a28020036020020062006290390033703c001200641e8026a200641c0016a10680240024020062802e8020d00410121094101210a0c010b410121084101210a0340200b200641e8026a41086a290300370300200620062903e8023703900202400240200a2008460d00200841016a21090c010b200841016a22092008490d082008410174220a2009200a20094b1b220a41ffffffff0071200a470d08200a410474220c4100480d080240024020080d00200c102821070c010b20072008410474200c102c21070b2007450d050b200720084104746a2208200629039002370200200841086a200b290300370200200641e8026a200641c0016a10682009210820062802e8020d000b0b200620093602f0012006200a3602ec01200620073602e8010b200641286a41186a28020021082006280238210b2006410036029002200b200820064190026a100d2110200628029002220f417f460d02200641e8026a41186a200241186a290000370300200641e8026a41106a200241106a290000370300200641e8026a41086a200241086a290000370300200620022900003703e802200641003602980320064201370390032010200f20064190036a10b20202400240200628029403220e200628029803220c6b4120490d00200c41206a210b20062802900321080c010b200c41206a220b200c490d05200e4101742208200b2008200b4b1b22154100480d0502400240200e0d002015102821080c010b200628029003200e2015102c21080b2008450d04200620153602940320062008360290032015210e0b2006200b360298032008200c6a220c20062903e802370000200c41086a200641e8026a41086a290300370000200c41106a200641e8026a41106a290300370000200c41186a200641e8026a41186a29030037000020064190026a41186a220c420037030020064190026a41106a2215420037030020064190026a41086a2216420037030020064200370390022008200b20064190026a1000200641c0016a41186a200c290300370300200641c0016a41106a2015290300370300200641c0016a41086a201629030037030020062006290390023703c0010240200e450d002008102a0b0240200f450d002010102a0b0240200641c0016a200641f8006a4120109c050d000240024020090d004100210b0c010b2009410474210c2007410c6a21084100210b03402008280200200b6a210b200841106a2108200c41706a220c0d000b0b20062006280244200b6b360244411710282208450d06200d201320141b210f4101201220141b2110200641286a41106a210b200841002900f1d8433700002008410f6a4100290080d943370000200841086a41002900f9d84337000020064297808080f002370294032006200836029003200020064190036a108f012006280298032115200628029003211620064190026a41186a2208420037030020064190026a41106a220c420037030020064190026a41086a220e420037030020064200370390022016201520064190026a1000200641e8026a41186a2008290300370300200641e8026a41106a200c290300370300200641e8026a41086a200e29030037030020062006290390023703e8020240200628029403450d00200628029003102a0b200641e8026a41201009200c2004370300200641c0026a200f360200200641bc026a2010360200200641b8026a200d360200200641b4026a20062802443602002008200b29030037030020064190026a41206a200b41086a280200360200200641c4026a2002290000370200200641cc026a200241086a290000370200200641d4026a200241106a290000370200200641dc026a200241186a2900003702002006200337039802200641003a009002200120064190026a109a01200641186a2000109101200641186a41086a29030021032006290318210420064190026a200042004200109401024002402006290390024200520d002006200e3602e802200641e8026a109c010c010b2006200e3602e802200641e8026a109d010b200641086a20012004200310d0012006200641106a290300370398022006200629030837039002200620064190026a3602e802200641e8026a109c0102402009450d0020094104742109200741046a210803400240200841046a280200450d002008280200102a0b200841106a2108200941706a22090d000b0b0240200a450d002007102a0b200541046a280200450d0b2011102a0c0b0b200720094104746a2101200721082009450d0620072108034002402008280200220b0d00200841106a21080c080b200841046a2802002109200841086a28020021002008410c6a280200210c200628024021022006280238210d20064190026a41186a220e420037030020064190026a41106a220f420037030020064190026a41086a221042003703002006420037039002200b412020064190026a1000200641e8026a41186a200e290300370300200641e8026a41106a200f290300370300200641e8026a41086a201029030037030020062006290390023703e802200d2002200641e8026a41202009200c100502402000450d002009102a0b200841106a22082001470d000c080b0b411041041037000b200c41041037000b41eef3c50041381050000b201541011037000b1031000b411741011037000b20082001460d0003402008280200450d010240200841086a280200450d00200841046a280200102a0b200841106a22082001470d000b0b200a450d002007102a0b2006413c6a280200450d002006280238102a0b200541046a280200450d002005280200102a0b200641b0036a24000bf46504177f017e077f017e23004180036b2204240041002105200441003602f002200420023602ec02200420013602e8020240024002400240024002400240200241034b0d0041012106200441013a00d002200441ec016a4101360200200442013702dc01200441a4e2c5003602d801200441263602c4022004200441c0026a3602e8012004200441d0026a3602c00220044180016a200441d8016a10332004280280012107200428028401210820042802880121094105210a4100210b0c010b200441043602f002024020012800004180c2cdeb06460d004101210a410121060c010b024002402002417c714104460d00200241074b0d0141082002103c000b41012106200441013a00d002200441ec016a4101360200200442013702dc01200441a4e2c5003602d801200441263602c4022004200441c0026a3602e8012004200441d0026a3602c00220044180016a200441d8016a10332004280280012107200428028401210820042802880121094105210a410021054100210b0c010b200441083602f002410121060240200128000422074101460d004102210a0c010b200441d8016a200441e8026a10fa0402400240024020042802d8014101470d00410421084100210c410021090c010b200441d8016a410572210d41042108412c210a410021054100210c410021094100210b02400340200441d0026a41026a2201200d41026a2d00003a00002004200d2f00003b01d002200428028802210e200428028402210f200428028002211020042802fc01211120042802f801211220042802f401211320042802f001211420042802ec01211520042802e801211620042802e401211720042802e0012118024020042d00dc012206417e6a41ff0171410b4b0d0041002119024002400240024002400240024002400240024002400240024020060e100c0c000102030405060708090a0b0c0c0c0b410121190c0b0b410221190c0a0b410321190c090b410421190c080b410521190c070b410621190c060b410721190c050b410821190c040b410921190c030b410a21190c020b410b21190c010b410c21190b0240200b41ff0171221a20194d0d004113210a0c030b41002119024002400240024002400240024002400240024002400240024020060e100c0c000102030405060708090a0b0c0c0c0b410121190c0b0b410221190c0a0b410321190c090b410421190c080b410521190c070b410621190c060b410721190c050b410821190c040b410921190c030b410a21190c020b410b21190c010b410c21190b0240201a2019470d004114210a0c030b4100210b02400240024002400240024002400240024002400240024020060e100c0c000102030405060708090a0b0c0c0c0b4101210b0c0b0b4102210b0c0a0b4103210b0c090b4104210b0c080b4105210b0c070b4106210b0c060b4107210b0c050b4108210b0c040b4109210b0c030b410a210b0c020b410b210b0c010b410c210b0b20044180016a41026a221920012d00003a0000200420042f01d0023b01800102400240200c2009470d00200c41016a2201200c490d0720052001200520014b1b2209ad42307e221b422088a70d07201ba722014100480d0702400240200c0d002001102821080c010b2008200a41546a2001102c21080b2008450d010b2008200a6a220141546a20063a00002001200e3602002001417c6a200f360200200141786a2010360200200141746a2011360200200141706a20123602002001416c6a2013360200200141686a2014360200200141646a2015360200200141606a20163602002001415c6a2017360200200141586a2018360200200141556a220120042f0180013b0000200141026a20192d00003a0000200541026a2105200a41306a210a200c41016a210c200441d8016a200441e8026a10fa0420042802d8014101460d030c010b0b200141041037000b024002402006410e4b0d00024002400240024002400240024002400240024002400240024020060e0f0001020304050607080e090e0a0b0c000b2017450d0d2018102a0c0d0b02402017450d002018102a0b2014450d0c2015102a0c0c0b02402016450d00201641047421062018210103400240200141046a280200450d002001280200102a0b200141106a2101200641706a22060d000b0b2017450d0b2018102a0c0b0b02402016450d00201641286c21062018210103400240200141046a280200450d002001280200102a0b0240200141106a280200450d002001410c6a280200102a0b200141286a2101200641586a22060d000b0b2017450d0a2018102a0c0a0b2017450d092018102a0c090b2017450d082018102a0c080b2017450d072018102a0c070b02402016450d00201820164104746a2114201821160340024020162802082206450d0020162802002101200641047421060340024020012d00004109470d000240200141046a220d280200220528020441ffffffff0371450d002005280200102a200d28020021050b2005102a0b200141106a2101200641706a22060d000b0b201641106a21010240201641046a280200450d002016280200102a0b2001211620012014470d000b0b2017450d062018102a0c060b02402016450d00201641146c21062018210103400240200141046a280200450d002001280200102a0b200141146a21012006416c6a22060d000b0b2017450d052018102a0c050b02402016450d0020182016411c6c6a2114201821160340024020162802042201450d0002402016410c6a2802002206450d00200641047421060340024020012d00004109470d000240200141046a220d280200220528020441ffffffff0371450d002005280200102a200d28020021050b2005102a0b200141106a2101200641706a22060d000b0b201641086a280200450d002016280204102a0b2016411c6a21010240201641146a280200450d002016280210102a0b2001211620012014470d000b0b2017450d042018102a0c040b02402016450d002018201641186c6a21142018211603400240201641046a280200450d002016280200102a0b0240201641146a2802002206450d00201628020c2101200641047421060340024020012d00004109470d000240200141046a220d280200220528020441ffffffff0371450d002005280200102a200d28020021050b2005102a0b200141106a2101200641706a22060d000b0b201641186a21010240201641106a280200450d00201628020c102a0b2001211620012014470d000b0b2017450d032018102a0c030b02402016450d0020182016411c6c6a2114201821160340024020162802042201450d0002402016410c6a2802002206450d00200641047421060340024020012d00004109470d000240200141046a220d280200220528020441ffffffff0371450d002005280200102a200d28020021050b2005102a0b200141106a2101200641706a22060d000b0b201641086a280200450d002016280204102a0b2016411c6a21010240201641146a280200450d002016280210102a0b2001211620012014470d000b0b2017450d022018102a0c020b02402018450d002017450d002018102a0b02402014450d0002402012450d002012410c6c2106201421010340024020012802002205450d00200141046a280200450d002005102a0b2001410c6a2101200641746a22060d000b0b2013450d002014102a0b2010450d010240200e450d002010200e4104746a21172010211803402018220d41106a21180240200d2802042201450d000240200d410c6a2802002206450d002006410c6c21060340024020012802002205450d00200141046a280200450d002005102a0b2001410c6a2101200641746a22060d000b0b200d41086a280200450d00200d280204102a0b20182017470d000b0b200f450d012010102a0c010b02402017450d002018102a0b02402014450d002013450d002014102a0b2010450d002011102a0b0c010b024020042d00dc010d002008200c41306c6a21062008210102400340024020062001470d004100210d0c020b20012d0000210a200141306a220b2101200a410c470d000b200b415c6a280200210d0b2008200c41306c6a210b20082101024003404100210a0240200b2001470d00410021010c020b20012d00002106200141306a2205210120064104470d000b200441f8006a200541546a10fa03200428027c21010b0240200d2001470d004101210741e100210b41f3da012105410021060c030b0240200c450d00200c41306c210a2008210103402001108204200141306a2101200a41506a220a0d000b0b41012106411a210a024020090d000c030b2008102a0c020b20042802dc01220a4110762105200a410876210b200441d8016a41106a280200210d200441e4016a2802002118200441d8016a41086a28020021070b0240200c450d00200c41306c21062008210103402001108204200141306a2101200641506a22060d000b0b4101210602402009450d002008102a0b200d2109201821080b02402006450d00200821060c040b20042802f0022002470d022005411074200b41ff017141087472200a41ff017172211c2008200c41306c6a210a200821010240024002400240024002400240024002400240024002400340200a2001460d0120012d00002102200141306a2206210120024102470d000b200441f0006a200641546a10fa034104211d02402004280274221e0d004100211e0c020b201e41047422014100480d0c2004280270210220011028221d450d0a201e410474210641002115201d21010340200241086a280200220a417f4c0d042002410c6a2d0000210b2002280200210502400240200a0d004101210d0c010b200a1028220d450d060b200d2005200a109a0521052001410d6a2002410d6a2d00003a00002001410c6a200b3a0000200141086a200a360200200141046a200a36020020012005360200200141106a2101201541016a2115200241106a2102200641706a22060d000b201d0d020b4100211e4104211d0b410021150b2008200c41306c6a210a2008210102400340410021174104210b0240200a2001470d0041042102410021010c020b20012d00002102200141306a2206210120024103470d000b200441e8006a200641546a10fa0341042102410021012004280268220a450d00200428026c2101200a21020b024020010d004101211a41002102410021184100210541002110410121124100210a4100211141042116410021064100211f410421134100210e0c090b200141286c210d2002411c6a21014104210b410021174101211a41002102410021184100210541002110410121124100210a4100211141042116410021064100211f410421134100210e0340024002400240024002402001417c6a2d00000e0400010203000b20012802002114024020022018470d00200241016a22182002490d0f2002410174220f2018200f20184b1b221841ffffffff03712018470d0f2018410274220f4100480d0f0240024020020d00200f1028210b0c010b200b2002410274200f102c210b0b200b450d080b200b20024102746a2014360200200241016a21020c030b200441d8016a41086a2214200141086a280200360200200420012902003703d8010240200a2011470d00200a41016a2211200a490d0e200a410174220f2011200f20114b1b2211ad420c7e221b422088a70d0e201ba7220f4100480d0e02400240200a0d00200f102821160c010b2016200a410c6c200f102c21160b2016450d080b2016200a410c6c6a220f20042903d801370200200f41086a2014280200360200200a41016a210a0c020b200441d8016a41086a2214200141086a280200360200200420012902003703d80102402006201f470d00200641016a220f2006490d0d20064101742219200f2019200f4b1b221fad420c7e221b422088a70d0d201ba7220f4100480d0d0240024020060d00200f102821130c010b20132006410c6c200f102c21130b2013450d080b20132006410c6c6a220f20042903d801370200200f41086a2014280200360200200641016a21060c010b2001417e6a22142d0000210f2001417d6a22192d00002120024020052010470d00200541016a22102005490d0c200541017422212010202120104b1b221020106a22222010490d0c20224100480d0c0240024020050d002022102821120c010b201220212022102c21120b2012450d080b201220054101746a2222200f4101713a0001202220203a000020142d0000211420192d0000210f02400240200e2017460d00200e21190c010b201741016a22192017490d0c201741017422222019202220194b1b222020206a22192020490d0c20194100480d0c0240024020170d0020191028211a0c010b201a20222019102c211a0b201a450d0920172119202021170b200541016a2105201a20194101746a221920144101713a00012019200f3a0000200e41016a210e0b200141286a2101200d41586a220d450d090c000b0b1036000b200a41011037000b200f41041037000b200f41041037000b200f41041037000b202241011037000b201941011037000b200141041037000b2008200c41306c6a21142008210102400240024002400240024002400240024002400240024002400240034020142001460d0120012d0000210d200141306a220f2101200d4104470d000b200441e0006a200f41546a10fa0320042802642201450d002004280260210d2001410274210f20024101742114200241027421010340200d2802002119024020022018470d00200241016a22182002490d1020142018201420184b1b221841ffffffff03712018470d10201841027422204100480d100240024020020d0020201028210b0c010b200b20012020102c210b0b200b450d030b200d41046a210d200b20016a2019360200201441026a2114200141046a2101200241016a2102200f417c6a220f0d000b0b2008200c41306c6a21142008210102400240034020142001460d0120012d0000210d200141306a220f2101200d4105470d000b200441d8006a200f41546a10fa03200428025c410c6c2219450d0020042802582101200a4101742114200a410c6c210d0340200141086a210f024002400240200141046a2802004101470d002004200f28020022203602c0022001280200222220204b0d010b20044100360280010c010b200441023602ec01200442023702dc01200441e8a7c6003602d801200441013602f402200441013602ec02200420223602d0022004200441e8026a3602e8012004200441d0026a3602f0022004200441c0026a3602e80220044180016a200441d8016a1033200428028001450d0020044180016a21010c0e0b2001290200211b200441d8016a41086a2220200f2802003602002004201b3703d8010240200a2011470d00200a41016a2211200a490d1120142011201420114b1b2211ad420c7e221b422088a70d11201ba7220f4100480d1102400240200a0d00200f102821160c010b2016200d200f102c21160b2016450d030b2001410c6a21012016200d6a220f20042903d801370200200f41086a2020280200360200201441026a2114200d410c6a210d200a41016a210a201941746a22190d000b0b2008200c41306c6a21142008210102400240034020142001460d0120012d0000210d200141306a220f2101200d4106470d000b200441d0006a200f41546a10fa032004280254220d450d0020042802502101200d410c6c210f200641017421142006410c6c210d0340200441d8016a2001108305024020042802d801450d00200441d8016a21010c0f0b2001290200211b200441d8016a41086a2219200141086a2802003602002004201b3703d80102402006201f470d00200641016a221f2006490d122014201f2014201f4b1b221fad420c7e221b422088a70d12201ba722204100480d120240024020060d002020102821130c010b2013200d2020102c21130b2013450d030b2001410c6a21012013200d6a222020042903d801370200202041086a2019280200360200201441026a2114200d410c6a210d200641016a2106200f41746a220f0d000b0b2008200c41306c6a21142008210102400240034020142001460d0120012d0000210d200141306a220f2101200d4107470d000b200441c8006a200f41546a10fa03200428024c220d450d0020042802482201200d4104746a21222005410174210d200441d8016a41047221200340200441d8016a2001201a200e10840502400240024020042d00d8014101460d00200420042d00d90122143a00c002024020142001410c6a2d0000220f470d0020044100360280010c030b200441023602ec01200442023702dc01200441fca8c6003602d801200441273602f402200441273602ec022004200f3a00d0022004200441e8026a3602e8012004200441c0026a3602f0022004200441d0026a3602e80220044180016a200441d8016a10330c010b20044180016a41086a202041086a28020036020020042020290200370380010b0240200428028001450d0020044180016a21010c110b2001410c6a2d000021140b2001410d6a2d0000210f024020052010470d00200541016a22102005490d13200d2010200d20104b1b221020106a22192010490d1320194100480d130240024020050d002019102821120c010b2012200d2019102c21120b2012450d030b2012200d6a221920143a0000201941016a200f4101713a0000200d41026a210d200541016a2105200141106a22012022470d000b0b200441b8016a2002360200200441b4016a2018360200200441ac016a2015360200200441a8016a201e360200200441a0016a20053602002004419c016a201036020020044194016a200a36020020044190016a20113602002004200b3602b0012004201d3602a40120042012360298012004201636028c0120042006360288012004201f3602840120042013360280012008200c41306c6a210a20082101024003400240200a2001470d004100210b0c020b20012d00002102200141306a2206210120024104470d000b200441c0006a200641546a10fa032004280244210b0b2004200b3602bc012008200c41306c6a210a20082101024003400240200a2001470d00410021010c020b20012d00002102200141306a220621012002410c470d000b2006415c6a28020021010b200420013602c001200b2001470d0a024002400240200b450d002008200c41306c6a210a200821010340200a2001460d0320012d00002102200141306a2206210120024104470d000b2008200c41306c6a210b200821010340200b2001460d0220012d00002102200141306a220a21012002410c470d000b200441386a200641546a10fa03200428023c2201450d002004280238220d20014102746a2114200a415c6a2118200a41546a211620044191026a210f410021050340200420053602c4012018280200210120162802002102200442013702dc012004418487c6003602d801200441013602d402200441013602ec012004200441d0026a3602e8012004200441c4016a3602d002200441e8026a200441d8016a103320042802e802210a20042902ec02211b200120054d0d100240201ba7450d00200a102a0b2004200d28020022013602c002024002400240024020042802ac0120014b0d00200441013602ec01200442023702dc0120044188acc6003602d801200441013602d4022004200441d0026a3602e8012004200441c0026a3602d002200441e8026a200441d8016a103320042902ec02221b422088a7210120042802e8022106201ba721020c010b0240024002402002200541186c6a22022802142215450d0020042802a40120014104746a220a2d000d2110200a2802002111200228020c210120022802002113200a2802082212210602402002280208220e450d00200e410374210b201221022013210a034002402002200a2802006a220620024f0d0002404120102822060d00412041011037000b200641186a41002900e8ae46370000200641106a41002900e0ae46370000200641086a41002900d8ae46370000200641002900d0ae463700000c040b200a41086a210a20062102200b41786a220b0d000b0b0240410810282202450d0020022010ad42ff0183422886370200200441d0026a41026a220a200441e8026a41026a2d00003a0000200420042f00e8023b01d002200420103a00900220044180800136028c022004428180808010370284022004200236028002200442808080808080103703f801200442013703f001200420063602ec012004200e3602e801200420133602e401200420123602e001200420113602dc01200420044180016a3602d801200f20042f01d0023b0000200f41026a200a2d00003a00002015410474210a41002102034020042002360298022004200136029c02200441b0026a200441d8016a2001108505024020042802b002450d00200441c0026a41086a200441b0026a41086a280200360200200420042903b0023703c002200441033602e402200442033702d402200441e881c6003602d002200441283602fc02200441013602f402200441293602ec022004200441e8026a3602e0022004200441c0026a3602f802200420044198026a3602f00220042004419c026a3602e802200441a0026a200441d0026a1033024020042802c402450d0020042802c002102a0b20042802a0022206450d0020042902a402211b024020042802f401450d0020042802f001102a0b201b42208821230240200428028402450d00200428028002102a0b2023a72101201ba721020c070b200141106a2101200241016a2102200a41706a220a0d000b02402004280288020d00024020042802f401450d0020042802f001102a0b200428028402450d07200428028002102a0c070b418082c6001032000b410841041037000b412010282206450d01200641186a41002900df8146370000200641106a41002900d78146370000200641086a41002900cf8146370000200641002900c781463700000b41202102412021010c010b412041011037000b2006450d010b200420063602d00220042001ad4220862002ad843702d4022004200441d0026a3602c002200441023602ec01200442023702dc012004418c87c6003602d8012004412a3602f402200441013602ec022004200441e8026a3602e8012004200441c0026a3602f0022004200441c4016a3602e802200441c8016a200441d8016a1033024020042802d402450d0020042802d002102a0b20042802c801220a450d0020042902cc01211b0c110b200541016a2105200d41046a220d2014470d000b0b2008200c41306c6a210a200821010240024002400340200a2001460d0120012d00002102200141306a2206210120024109470d000b2004200641546a28020022013602b002024020042802b80120014b0d00200441ec016a4101360200200442023702dc01200441e4abc6003602d801200441013602d4022004200441d0026a3602e8012004200441b0026a3602d002200441e8026a200441d8016a10330c0c0b200420042802b00120014102746a28020022013602c002024020042802ac0120014b0d00200441ec016a4101360200200442023702dc0120044188acc6003602d801200441013602d4022004200441d0026a3602e8012004200441c0026a3602d002200441e8026a200441d8016a10330c0c0b20042802a40120014104746a220131000d4220862001350208844280808080c000510d00412d1028220a450d01200a41256a41002900c18746370000200a41206a41002900bc8746370000200a41186a41002900b48746370000200a41106a41002900ac8746370000200a41086a41002900a48746370000200a410029009c874637000042ad808080d005211b0c110b2008200c41306c6a210a200821010340200a2001460d0a20012d00002102200141306a2206210120024108470d000b200441306a200641546a221610fa03200428023021014100210a02400240200428023422020d004104210b410021180c010b200241ffffffff01712002470d15200241037422064100480d1520061028220b450d02200221180b02402002450d002001200241146c6a21062002410274417c6a2105200b210203402001280200210a200241046a200141086a2802003602002002200a360200200241086a2102200141146a22012006470d000b200541027641016a210a0b200b200a200441d8016a41004120200a676b10fd04200b200a4103746a2206200b460d084101210a200b2101200b2102034002400240200a450d00200620016b410376200a4d0d0b2001200a4103746a22010d010c0b0b20062001460d0a0b200420023602c00202400240200241046a280200220a200141046a280200470d00200228020022052001280200220d460d012005200d200a109c05450d010b200141086a21014100210a200241086a22022006470d010c0a0b0b200441ec016a4101360200200442013702dc01200441cc87c6003602d8012004412b3602d4022004200441d0026a3602e8012004200441c0026a3602d002200441e8026a200441d8016a10330c0c0b412d41011037000b200641041037000b41ba86c60041c8001050000b419c86c600411e1050000b201941011037000b202041041037000b200f41041037000b202041041037000b200441286a201610fa030240200428022c2201450d00200141146c2102200428022841106a210102400340024002400240024002402001417c6a2802000e0400030201000b20042001280200220a3602b002024020042802b801200a4b0d00200441ec016a4101360200200442023702dc01200441e4abc6003602d801200441013602d4022004200441d0026a3602e8012004200441b0026a3602d002200441e8026a200441d8016a10330c0b0b200420042802b001200a4102746a280200220a3602c00220042802ac01200a4b0d03200441013602ec01200442023702dc0120044188acc6003602d801200441013602d4022004200441d0026a3602e8012004200441c0026a3602d002200441e8026a200441d8016a10330c0a0b20042001280200220a3602b002024020042802a001200a4b0d00200441ec016a4101360200200442023702dc01200441a8acc6003602d801200441013602d4022004200441d0026a3602e8012004200441b0026a3602d002200441e8026a200441d8016a10330c0a0b200428029801200a4101746a2d0001450d02200441ec016a4101360200200442023702dc01200441c8acc6003602d801200441013602d4022004200441d0026a3602e8012004200441b0026a3602d002200441e8026a200441d8016a10330c090b20042001280200220a3602c002200428028801200a4b0d01200441013602ec01200442023702dc0120044194abc6003602d801200441013602d4022004200441d0026a3602e8012004200441c0026a3602d002200441e8026a200441d8016a103320042802e802220a0d090c010b20042001280200220a3602c002200428029401200a4d0d020b200141146a21012002416c6a22020d000c020b0b200441ec016a4101360200200442023702dc01200441c4abc6003602d801200441013602d4022004200441d0026a3602e8012004200441c0026a3602d002200441e8026a200441d8016a10330c040b2018450d00200b102a0b2008200c41306c6a210a2008210102400340200a2001460d0120012d00002102200141306a2206210120024103470d000b200441206a200641546a10fa0320042802242201450d0020042802202106200141286c210b41002101034002400240024002400240200620016a220241186a2d00000e0400030201000b20042002411c6a28020022023602c00220042802ac0120024b0d03200441ec016a4101360200200442023702dc0120044188acc6003602d801200441013602d4022004200441d0026a3602e8012004200441c0026a3602d002200441e8026a200441d8016a10330c060b2002411a6a2d0000450d022002410c6a2802002101200241146a2802002102200441d8016a41146a4101360200200420023602d402200420013602d002200441043602c402200442013702dc01200441d487c6003602d8012004200441d0026a3602c0022004200441c0026a3602e801200441e8026a200441d8016a10330c050b200441d8016a2002411c6a10830520042802d801220a450d0120042902dc01211b0c0a0b200241206a2802004101470d002002411c6a280200210a2004200241246a28020022023602b002200a20024d0d00200441023602ec01200442023702dc01200441e8a7c6003602d801200441013602f402200441013602ec022004200a3602c0022004200441e8026a3602e8012004200441c0026a3602f0022004200441b0026a3602e802200441d0026a200441d8016a103320042802d002220a0d080b200b200141286a2201470d000b0b02400240024002400240200428029401220141014b0d00200428028801220141014b0d012008200c41306c6a210a200821010240024002400240024002400340200a2001460d0120012d00002102200141306a220621012002410d470d000b200441186a200641546a10fa0320042802182201200428021c411c6c6a2106034020012006460d012004200128020022023602c002024020042802880120024b0d00200441013602ec01200442023702dc0120044194abc6003602d801200441013602d4022004200441d0026a3602e8012004200441c0026a3602d002200441e8026a200441d8016a103320042802e802220a450d0020042902ec02211b0c130b200141046a2201280200450d02200441d8016a200120042802980120042802a00110840520042d00d8014101460d03200141186a210120042d00d901450d000b41201028220a450d08200a41186a41002900848846370000200a41106a41002900fc8746370000200a41086a41002900f48746370000200a41002900ec874637000042a08080808004211b0c110b2008200c41306c6a210a2008210102400340200a2001460d0120012d00002102200141306a220621012002410a470d000b200441106a200641546a10fa0320042802142201450d002004280210220b2001411c6c6a21050340200b450d012004200b28020022013602c00220042802940120014d0d04200b280204450d05200441d8016a200b41046a20042802980120042802a00110840520042d00d8014101460d0620042d00d9010d0d200441086a200b10cd0402400240200428020c2201450d00200428020821022001410274210a20042802b801210603402004200228020022013602b0020240200620014b0d00200441ec016a4101360200200442023702dc01200441e4abc6003602d801200441013602d4022004200441d0026a3602e8012004200441b0026a3602d002200441e8026a200441d8016a10330c100b200420042802b00120014102746a28020022013602c00220042802ac0120014d0d02200241046a2102200a417c6a220a0d000b0b200b411c6a220b2005460d020c010b0b200441013602ec01200442023702dc0120044188acc6003602d801200441013602d4022004200441d0026a3602e8012004200441c0026a3602d002200441e8026a200441d8016a10330c0b0b0240200428028401450d00200428028001102a0b0240200428029001450d00200428028c01102a0b0240200428029c01450d00200428029801102a0b024020042802ac012202450d0020042802a40121012002410474210203400240200141046a280200450d002001280200102a0b200141106a2101200241706a22020d000b0b024020042802a801450d0020042802a401102a0b024020042802b401450d0020042802b001102a0b2017450d13201a102a0c130b41291028220a450d07200a41286a41002d00b488463a0000200a41206a41002900ac8846370000200a41186a41002900a48846370000200a41106a410029009c8846370000200a41086a41002900948846370000200a410029008c884637000042a98080809005211b0c0f0b200441e0016a290300211b20042802dc01210a0c0e0b200441ec016a4101360200200442023702dc01200441c4abc6003602d801200441013602d4022004200441d0026a3602e8012004200441c0026a3602d002200441e8026a200441d8016a10330c070b412a1028220a450d05200a41286a41002f00dd88463b0000200a41206a41002900d58846370000200a41186a41002900cd8846370000200a41106a41002900c58846370000200a41086a41002900bd8846370000200a41002900b5884637000042aa808080a005211b0c0c0b200441e0016a290300211b20042802dc01210a0c0b0b200441ec016a4101360200200442013702dc01200441dc87c6003602d801200441013602d402200420013602c0022004200441d0026a3602e8012004200441c0026a3602d002200441e8026a200441d8016a10330c040b200441ec016a4101360200200442013702dc01200441e487c6003602d801200441013602d402200420013602c0022004200441d0026a3602e8012004200441c0026a3602d002200441e8026a200441d8016a10330c030b412041011037000b412941011037000b412a41011037000b20042802e802210a20042902ec02211b0c050b024041201028220a450d00200a41186a41002900848846370000200a41106a41002900fc8746370000200a41086a41002900f48746370000200a41002900ec874637000042a08080808004211b0c050b412041011037000b20042802e802210a0b20042902ec02211b2018450d02200b102a0c020b200441ec016a4102360200200441f4026a4101360200200442023702dc012004418c86c6003602d801200441013602ec022004200441e8026a3602e8012004200441c0016a3602f0022004200441bc016a3602e802200441d0026a200441d8016a103320042802d002210a0b20042902d402211b0b0240200428028401450d00200428028001102a0b0240200428029001450d00200428028c01102a0b0240200428029c01450d00200428029801102a0b024020042802ac012202450d0020042802a40121012002410474210203400240200141046a280200450d002001280200102a0b200141106a2101200241706a22020d000b0b024020042802a801450d0020042802a401102a0b024020042802b401450d0020042802b001102a0b2017450d01201a102a200a0d040c020b2001290204211b2001280200210a02402017450d00201a102a0b0240201f450d002013102a0b02402011450d002016102a0b02402010450d002012102a0b02402015450d0020154104742102201d210103400240200141046a280200450d002001280200102a0b200141106a2101200241706a22020d000b0b0240201e450d00201d102a0b2018450d00200b102a0b200a0d020b2000201c36020420004100360200200041186a2003360200200041146a200c360200200041106a20093602002000410c6a2008360200200041086a20073602000c040b1031000b0240201ba7450d00200a102a0b200041ea8ac60036020420004101360200200041086a41133602000240200c450d00200c41306c21022008210103402001108204200141306a2101200241506a22020d000b0b2009450d022008102a0c020b200441003a00d002200441ec016a4101360200200442013702dc01200441a4e2c5003602d801200441263602c4022004200441c0026a3602e8012004200441d0026a3602c00220044180016a200441d8016a1033200428028001210720042802840121060240200c450d00200c41306c21022008210103402001108204200141306a2101200241506a22020d000b0b4105210a2009450d002008102a0b02402006450d00200a41ff01714105470d002007102a0b200041d48ac60036020420004101360200200041086a41163602000b20044180036a24000b160020002001280208360204200020012802003602000bd21301177f23004190026b220224000240024002400240024002402000280200220341f8b9c000460d00200028020421040c010b41002104200241b8016a410041d8001099051a2002411f6a220542003700002002420037011a41ec0010282203450d0120034100360200200320022902183702042003410b6a2005290000370000200341136a200241b7016a41d900109a051a20004100360204200020033602000b200141ff0171210602400340200341066a210720032f01062108410c21094100210502400240034020082005460d01200320056a210a200941086a2109200541016a210502404100417f4101200a41086a2d0000220a20064b1b200a2006461b41016a0e03000301000b0b2005417f6a21080b2004450d022004417f6a2104200320084102746a41ec006a28020021030c010b0b200320096a42013702000c030b2000200028020841016a360208024002400240024020072f01002205410b490d00200241276a41016a410041d8001099051a200241003a001941ec001028220b450d03200b4100360200200b410036000f200b4200370007200b20022f01183b0005200b41136a200241276a41d900109a051a2003410e6a2d0000210c2003280248210d2003280244210e200b41086a2003410f6a20032f010641796a2205109a052109200b41146a200341cc006a2005410374109a052106200341063b0106200b20053b010620084107490d0120092008417a6a220a6a2009200841796a22086a2209200541ffff037120086b109b051a200920013a00002006200a4103746a200620084103746a2205200b41066a22072f010020086b410374109b051a2005410136020020072f010021050c020b200341086a2209200841016a22066a200920086a2209200520086b220a109b051a200920013a0000200341146a220920064103746a200920084103746a2209200a410374109b051a200941013602002003200541016a3b01060c050b200341086a2205200841016a22096a200520086a220620072f0100220520086b220a109b051a200620013a0000200341146a220620094103746a200620084103746a2209200a410374109b051a200941013602000b2007200541016a3b01002003280200220a450d02200341046a2105200241276a41016a210f200241a8016a2101200241a0016a211020024198016a211120024190016a211220024180016a41086a2113034020052f0100210602400240024002400240200a2f01062205410b490d00200f410041d8001099051a200241003a0019200220022f01183b0108200241b7016a200241276a41d900109a051a20014200370300201042003703002011420037030020124200370300201342003703002002420037038001419c0110282209450d03200941003602002009410036000f20094200370007200920022f01083b0005200941136a200241b7016a41d900109a051a20094194016a20012903003702002009418c016a201029030037020020094184016a2011290300370200200941fc006a2012290300370200200941f4006a2013290300370200200920022903800137026c200a41c8006a2802002114200a41c4006a2802002115200a410e6a2d00002116200941086a200a410f6a200a2f0106220341796a2205109a052117200941146a200a41cc006a2005410374109a052118200941ec006a200a4188016a2003417a6a2204410274109a052107200a41063b0106200920053b010602402004450d00410021052007210303402003280200220820053b010420082009360200200341046a21032004200541016a2205470d000b0b20064107490d0120172006417a6a22036a2017200641796a22056a220820092f010620056b109b051a2008200c3a0000201820034103746a201820054103746a220820092f010620056b410374109b051a2008200e3602002008200d360204200920092f010641016a22083b01062006410274220c20076a416c6a200720034102746a2204200841ffff0371220620036b410274109b051a2004200b36020020062003490d022009200c6a41d4006a2103034020032802002208200541016a22053b010420082009360200200341046a210320052006490d000c030b0b200a41086a2209200641016a22036a200920066a2209200520066b2208109b051a2009200c3a0000200a41146a220920034103746a200920064103746a22092008410374109b051a2009200e3602002009200d360204200a200541016a22053b01062006410274200a41ec006a22096a41086a200920034102746a2209200541ffff0371220820036b410274109b051a2009200b360200200620084f0d08200a2003417f6a22054102746a41f0006a2103034020032802002209200541016a22053b01042009200a360200200341046a210320052008490d000c090b0b200a41086a2203200641016a22056a200320066a2203200a2f0106220820066b2204109b051a2003200c3a0000200a41146a220320054103746a200320064103746a22032004410374109b051a2003200e3602002003200d360204200a200841016a22033b010620064102742207200a41ec006a22086a41086a200820054102746a2204200341ffff0371220820056b410274109b051a2004200b360200200620084f0d00200a20076a41f0006a2105034020052802002203200641016a22063b01042003200a360200200541046a210520082006470d000b0b200a28020022030d012009210b2014210d2015210e2016210c0c050b419c0141041037000b200a41046a21052003210a2016210c2015210e2014210d2009210b0c000b0b41ec0041041037000b41ec0041041037000b200241b7016a41016a410041d8001099051a2002411f6a220542003700002002420037011a200220022902183703082002200529000037000f200241276a200241b7016a41d900109a051a200241a8016a22034200370300200241a0016a2209420037030020024180016a41186a2208420037030020024190016a2206420037030020024180016a41086a220a42003703002002420037038001419c0110282205450d0120054100360200200520022903083702042005410b6a200229000f370000200541136a200241276a41d900109a051a20054194016a20032903003702002005418c016a200929030037020020054184016a2008290300370200200541fc006a2006290300370200200541f4006a200a290300370200200520022903800137026c20052000280200220336026c200020053602002000200028020441016a360204200341003b010420032005360200200520052f010622034103746a220941186a200d360200200941146a200e360200200520036a41086a200c3a0000200541ec006a200341016a22034102746a200b360200200520033b0106200b20033b0104200b20053602000b20024190026a24000f0b419c0141041037000b822701377f2001410c6a28020021022001280208210341002104024002400240200141106a28020022050d00410021064100210741002108410021094100210a4100210b4100210c4100210d4100210e410021050c010b410021044100210e4100210d4100210c4100210b4100210a4100210941002108410021074100210f4100211002400340200121112010210620032005417f6a220541306c6a220128002c2112200128002821132001280024211420012800202115200128001c2116200128001821172001280014211820012800102119200128000c211a2001280008211b2001280004211c41012110024002400240024002400240024020012d0000221d417e6a221e410e4d0d004101211f0c010b4101211f4101212041012121410121224101212341012124201c21010240024002400240024002400240024002400240024002400240024002400240024002400240201e0e0f00010203040506180717080917171a000b0240200f0d002006211020112101201c210f201b2125201a21260c180b02402026450d0020264104742110200f210103400240200141046a280200450d002001280200102a0b200141106a2101201041706a22100d000b0b4101211f410021102025450d11200f102a0c110b024020070d002006211020112101201c2107201b2127201a21280c170b02402028450d00202841286c21102007210103400240200141046a280200450d002001280200102a0b0240200141106a280200450d002001410c6a280200102a0b200141286a2101201041586a22100d000b0b4100211f410121102027450d0f2007102a0c0f0b2029450d0d2008450d0d2008102a0c0d0b202a450d0b2009450d0b2009102a0c0b0b202b450d09200a450d09200a102a0c090b0240200b0d002006211020112101201c210b201b212c201a212d0c130b0240202d450d00200b202d4104746a2121200b21200340024020202802082210450d0020202802002101201041047421100340024020012d00004109470d000240200141046a221f280200222428020441ffffffff0371450d002024280200102a201f28020021240b2024102a0b200141106a2101201041706a22100d000b0b202041106a21010240202041046a280200450d002020280200102a0b2001212020012021470d000b0b4100212041012110202c450d07200b102a0c070b0240200c0d002006211020112101201c210c201b212e201a212f0c120b0240202f450d00202f41146c2110200c210103400240200141046a280200450d002001280200102a0b200141146a21012010416c6a22100d000b0b4100212141012110202e450d05200c102a0c050b0240200d0d002006211020112101201c210d201b2130201a21310c110b02402031450d00200d2031411c6c6a2121200d21200340024020202802042201450d0002402020410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a221f280200222428020441ffffffff0371450d002024280200102a201f28020021240b2024102a0b200141106a2101201041706a22100d000b0b202041086a280200450d002020280204102a0b2020411c6a21010240202041146a280200450d002020280210102a0b2001212020012021470d000b0b41002122410121102030450d03200d102a0c030b0240200e0d002006211020112101201c210e201b2132201a21330c100b02402033450d00200e203341186c6a2121200e212003400240202041046a280200450d002020280200102a0b0240202041146a2802002210450d00202028020c2101201041047421100340024020012d00004109470d000240200141046a221f280200222428020441ffffffff0371450d002024280200102a201f28020021240b2024102a0b200141106a2101201041706a22100d000b0b202041186a21010240202041106a280200450d00202028020c102a0b2001212020012021470d000b0b41002123410121102032450d01200e102a0c010b024020040d002006211020112101201a2134201b2135201c21040c0f0b02402034450d0020042034411c6c6a2121200421200340024020202802042201450d0002402020410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a221f280200222428020441ffffffff0371450d002024280200102a201f28020021240b2024102a0b200141106a2101201041706a22100d000b0b202041086a280200450d002020280204102a0b2020411c6a21010240202041146a280200450d002020280210102a0b2001212020012021470d000b0b410021244101211002402035450d002004102a0b201c2104201b2135201a21344101211f410121204101212141012122410121230c0d0b201a2133201b2132201c210e4101211f4101212041012121410121220c0b0b201a2131201b2130201c210d4101211f4101212041012121410121230c0a0b201a212f201b212e201c210c4101211f410121200c080b201a212d201b212c201c210b4101211f0c060b2006211020112101201c210a201b212b201a21360c090b2006211020112101201c2109201b212a201a21370c080b2006211020112101201c2108201b2129201a21380c070b201a2128201b2127201c21070c010b201a2126201b2125201c210f0b410121200b410121210b41012122410121230b410121240b024002400240201e410b4b0d000240024002400240024002400240024002400240201e0e0c000102030405060a070a0809000b2010450d0b0240201a450d00201a4104742110201c210103400240200141046a280200450d002001280200102a0b200141106a2101201041706a22100d000b0b201b450d0b0c0a0b201f450d0a0240201a450d00201a41286c2110201c210103400240200141046a280200450d002001280200102a0b0240200141106a280200450d002001410c6a280200102a0b200141286a2101201041586a22100d000b0b201b0d090c0a0b41000d09201b0d080c090b41000d08201b0d070c080b41000d07201b0d060c070b2020450d060240201a450d00201c201a4104746a211e201c21200340024020202802082210450d0020202802002101201041047421100340024020012d00004109470d000240200141046a221f280200222428020441ffffffff0371450d002024280200102a201f28020021240b2024102a0b200141106a2101201041706a22100d000b0b202041106a21010240202041046a280200450d002020280200102a0b200121202001201e470d000b0b201b0d050c060b2021450d050240201a450d00201a41146c2110201c210103400240200141046a280200450d002001280200102a0b200141146a21012010416c6a22100d000b0b201b0d040c050b2022450d040240201a450d00201c201a411c6c6a211e201c21200340024020202802042201450d0002402020410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a221f280200222428020441ffffffff0371450d002024280200102a201f28020021240b2024102a0b200141106a2101201041706a22100d000b0b202041086a280200450d002020280204102a0b2020411c6a21010240202041146a280200450d002020280210102a0b200121202001201e470d000b0b201b0d030c040b2023450d030240201a450d00201c201a41186c6a211e201c212003400240202041046a280200450d002020280200102a0b0240202041146a2802002210450d00202028020c2101201041047421100340024020012d00004109470d000240200141046a221f280200222428020441ffffffff0371450d002024280200102a201f28020021240b2024102a0b200141106a2101201041706a22100d000b0b202041186a21010240202041106a280200450d00202028020c102a0b200121202001201e470d000b0b201b0d020c030b2024450d020240201a450d00201c201a411c6c6a211e201c21200340024020202802042201450d0002402020410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a221f280200222428020441ffffffff0371450d002024280200102a201f28020021240b2024102a0b200141106a2101201041706a22100d000b0b202041086a280200450d002020280204102a0b2020411c6a21010240202041146a280200450d002020280210102a0b200121202001201e470d000b0b201b0d010c020b0240201d410e4b0d00200621102011210102400240024002400240024002400240024002400240201d0e0f0001020304040405060e070e08090a000b201b0d0b0c0c0b0240201b450d00201c102a0b2018450d0b2019102a0c0b0b0240201a450d00201a4104742110201c210103400240200141046a280200450d002001280200102a0b200141106a2101201041706a22100d000b0b201b0d090c0a0b201a450d00201a41286c2110201c210103400240200141046a280200450d002001280200102a0b0240200141106a280200450d002001410c6a280200102a0b200141286a2101201041586a22100d000b0b201b0d070c080b0240201a450d00201c201a4104746a211e201c21200340024020202802082210450d0020202802002101201041047421100340024020012d00004109470d000240200141046a221f280200222428020441ffffffff0371450d002024280200102a201f28020021240b2024102a0b200141106a2101201041706a22100d000b0b202041106a21010240202041046a280200450d002020280200102a0b200121202001201e470d000b0b201b0d060c070b0240201a450d00201a41146c2110201c210103400240200141046a280200450d002001280200102a0b200141146a21012010416c6a22100d000b0b201b0d050c060b0240201a450d00201c201a411c6c6a211e201c21200340024020202802042201450d0002402020410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a221f280200222428020441ffffffff0371450d002024280200102a201f28020021240b2024102a0b200141106a2101201041706a22100d000b0b202041086a280200450d002020280204102a0b2020411c6a21010240202041146a280200450d002020280210102a0b200121202001201e470d000b0b201b0d040c050b0240201a450d00201c201a41186c6a211e201c212003400240202041046a280200450d002020280200102a0b0240202041146a2802002210450d00202028020c2101201041047421100340024020012d00004109470d000240200141046a221f280200222428020441ffffffff0371450d002024280200102a201f28020021240b2024102a0b200141106a2101201041706a22100d000b0b202041186a21010240202041106a280200450d00202028020c102a0b200121202001201e470d000b0b201b0d030c040b0240201a450d00201c201a411c6c6a211e201c21200340024020202802042201450d0002402020410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a221f280200222428020441ffffffff0371450d002024280200102a201f28020021240b2024102a0b200141106a2101201041706a22100d000b0b202041086a280200450d002020280204102a0b2020411c6a21010240202041146a280200450d002020280210102a0b200121202001201e470d000b0b201b0d020c030b0240201c450d00201b450d00201c102a0b02402018450d0002402016450d002016410c6c2110201821010340024020012802002224450d00200141046a280200450d002024102a0b2001410c6a2101201041746a22100d000b0b2017450d002018102a0b2014450d0202402012450d00201420124104746a211c2014212003402020221f41106a21200240201f2802042201450d000240201f410c6a2802002210450d002010410c6c21100340024020012802002224450d00200141046a280200450d002024102a0b2001410c6a2101201041746a22100d000b0b201f41086a280200450d00201f280204102a0b2020201c470d000b0b2013450d022014102a0c020b0240201b450d00201c102a0b02402018450d002017450d002018102a0b2014450d012015102a0c010b201c102a0b20062110201121010b20050d000b4100210520012111201021060b200f0d010b4104210f41002125410021260b20002003360280012000200636025420002026360208200020253602042000200f36020020004188016a200536020020004184016a2002360200200041fc006a2034410020041b360200200041f8006a2035410020041b36020020002004410420041b360274200041f0006a20334100200e1b360200200041ec006a20324100200e1b3602002000200e4104200e1b360268200041e4006a20314100200d1b360200200041e0006a20304100200d1b3602002000200d4104200d1b36025c200041d8006a2011360200200041d0006a202f4100200c1b360200200041cc006a202e4100200c1b3602002000200c4104200c1b360248200041c4006a202d4100200b1b360200200041c0006a202c4100200b1b3602002000200b4104200b1b36023c200041386a20364100200a1b360200200041346a202b4100200a1b3602002000200a4104200a1b3602302000412c6a2037410020091b360200200041286a202a410020091b36020020002009410420091b360224200041206a2038410020081b3602002000411c6a2029410020081b36020020002008410420081b360218200041146a2028410020071b360200200041106a2027410020071b36020020002007410420071b36020c0bb10a010e7f230041106b2202240002400240024002400240024020012802004101470d00200141106a2d000021032001410c6a2802002104200141086a280200210520012f0112210620012d0011210720012802042108200241086a200010fa0320022802082201200228020c22094104746a210a4100210b20094104490d01200341ff0171210c02400340024020012d000c200c470d0020012802082004470d000240200128020022092008460d002004450d002004210d2008210e034020092d0000200e2d0000470d02200941016a2109200e41016a210e200d417f6a220d0d000b0b200741ff0171220941044720012d000d220e410446220d460d00200e2009460d0520094104460d05200d0d050b02400240024002402001411c6a2d0000200c470d00200141186a2802002004470d000240200128021022092008460d002004450d002004210d2008210e034020092d0000200e2d0000470d02200941016a2109200e41016a210e200d417f6a220d0d000b0b200741ff0171220941044720012d001d220e410446220d460d00200e2009460d0120094104460d01200d0d010b2001412c6a2d0000200c470d02200141286a2802002004470d02200128022022092008460d012004450d012004210d2008210e034020092d0000200e2d0000470d03200941016a2109200e41016a210e200d417f6a220d450d020c000b0b200b410172210b0c060b200741ff0171220941044720012d002d220e410446220d460d00200e2009460d0220094104460d02200d0d020b024002402001413c6a2d0000200c470d00200141386a2802002004470d000240200128023022092008460d002004450d002004210d2008210e034020092d0000200e2d0000470d02200941016a2109200e41016a210e200d417f6a220d0d000b0b200741ff0171220941044720012d003d220e410446220d460d00200e2009460d0120094104460d01200d0d010b200b41046a210b200a200141c0006a22016b41304d0d040c010b0b200b410372210b0c030b200b410272210b0c020b2001280204210b0c030b2001200a460d0102400240200741ff0171220f4104460d00200341ff0171210c0c010b200341ff0171210c0340024020012d000c200c470d0020012802082004470d000240200128020022092008460d002004450d002004210d2008210e034020092d0000200e2d0000470d02200941016a2109200e41016a210e200d417f6a220d0d000b0b20012d000d4104460d030b200b41016a210b200141106a2201200a470d000c030b0b0340024020012d000c200c470d0020012802082004470d000240200128020022092008460d002004450d002004210d2008210e034020092d0000200e2d0000470d02200941016a2109200e41016a210e200d417f6a220d0d000b0b20012d000d2209200f470d0020094104470d020b200b41016a210b200141106a2201200a460d020c000b0b2005450d012008102a0c010b024020002802082201200041046a280200470d0002400240200141016a22092001490d002001410174220e2009200e20094b1b220941ffffffff00712009470d002009410474220e41004e0d010b1031000b0240024020010d00200e102821010c010b20002802002001410474200e102c21010b2001450d0220002001360200200041046a2009360200200028020821010b200028020020014104746a220120063b010e200120073a000d200120033a000c2001200436020820012005360204200120083602002000200028020841016a3602082002200010fa032002280204417f6a210b0b200241106a2400200b0f0b200e41041037000bf722032d7f017e017f230041306b22022400200241043602002001280204210320012802002104410121050240024002400240024002400240024002400240024002400240024002400240200128020822060d0041002107410121080c010b413010282207450d012007200636000c200720033600082007200436000420022007360200200741023a000041002108410121070b200141106a2802002109200128020c210a02400240200141146a280200220b0d002007210c0c010b2007410174220d200741016a220c200d200c4b1b220c41306c210e0240024020070d00200e1028210d0c010b2002280200200741306c200e102c210d0b200d450d022002200d360200200d200741306c6a220d41033a0000200d20022f002d3b0001200d200b36000c200d2009360008200d200a360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021050b2001411c6a280200210f200128021821104100211102400240200141206a28020022120d00200c210e410021130c010b024002402007200c460d00200c210e0c010b41000d0e41000d0e200c410174220d200c41016a220e200d200e4b1b220ead42307ea722144100480d0e02400240200c0d0020141028210d0c010b2002280200200c41306c2014102c210d0b200d450d042002200d3602000b2002280200200741306c6a220d41043a0000200d20022f002d3b0001200d201236000c200d200f360008200d2010360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a29020037020041012113200741016a21070b200141286a280200211420012802242115024002402001412c6a28020022120d00200e210c0c010b024002402007200e460d00200e210c0c010b41000d0e41000d0e200e410174220d200e41016a220c200d200c4b1b220cad42307ea722114100480d0e02400240200e0d0020111028210d0c010b2002280200200e41306c2011102c210d0b200d450d052002200d3602000b2002280200200741306c6a220d41053a0000200d20022f002d3b0001200d201236000c200d2014360008200d2015360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a29020037020041012111200741016a21070b200141346a28020021162001280230211702400240200141386a280200220e0d00410021180c010b02402007200c470d0041000d0e41000d0e200c410174220d200c41016a2212200d20124b1b2212ad42307ea722194100480d0e02400240200c0d0020191028210d0c010b2002280200200c41306c2019102c210d0b200d450d062002200d3602002012210c0b2002280200200741306c6a220d41063a0000200d20022f002d3b0001200d200e36000c200d2016360008200d2017360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a29020037020041012118200741016a21070b200141c0006a280200211a200128023c211b4101211902400240200141c4006a280200221c0d00200c210e4101211d0c010b024002402007200c460d00200c210e0c010b41000d0e41000d0e200c410174220d200c41016a220e200d200e4b1b220ead42307ea722124100480d0e02400240200c0d0020121028210d0c010b2002280200200c41306c2012102c210d0b200d450d072002200d3602000b2002280200200741306c6a220d41073a0000200d20022f002d3b0001200d201c36000c200d201a360008200d201b360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a21074100211d0b200141cc006a280200211e2001280248211f02400240200141d0006a28020022200d00200e21120c010b024002402007200e460d00200e21120c010b41000d0e41000d0e200e410174220d200e41016a220c200d200c4b1b2212ad42307ea7220c4100480d0e02400240200e0d00200c1028210d0c010b2002280200200e41306c200c102c210d0b200d450d082002200d3602000b2002280200200741306c6a220d41083a0000200d20022f002d3b0001200d202036000c200d201e360008200d201f360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a200241046a41086a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021190b410121210240024020012802544101460d002012210c0c010b200141d8006a280200210e0240024020072012460d002012210c0c010b41000d0e41000d0e2012410174220d201241016a220c200d200c4b1b220cad42307ea722224100480d0e0240024020120d0020221028210d0c010b2002280200201241306c2022102c210d0b200d450d092002200d3602000b2002280200200741306c6a220d41093a0000200d20022f002d3b0001200d200e360204200d2002290204370208200d41036a2002412f6a2d00003a0000200d41106a2002410c6a290200370200200d41186a200241046a41106a290200370200200d41206a200241046a41186a290200370200200d41286a200241046a41206a290200370200200741016a21070b200141e0006a2802002123200128025c212402400240200141e4006a28020022250d00200c210e0c010b024002402007200c460d00200c210e0c010b41000d0e41000d0e200c410174220d200c41016a220e200d200e4b1b220ead42307ea722124100480d0e02400240200c0d0020121028210d0c010b2002280200200c41306c2012102c210d0b200d450d0a2002200d3602000b2002280200200741306c6a220d410a3a0000200d20022f002d3b0001200d202536000c200d2023360008200d2024360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021210b200141ec006a2802002126200128026821274101212202400240200141f0006a28020022280d00200e2112410121290c010b024002402007200e460d00200e21120c010b41000d0e41000d0e200e410174220d200e41016a220c200d200c4b1b2212ad42307ea7220c4100480d0e02400240200e0d00200c1028210d0c010b2002280200200e41306c200c102c210d0b200d450d0b2002200d3602000b2002280200200741306c6a220d410c3a0000200d20022f002d3b0001200d202836000c200d2026360008200d2027360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021290b200141f8006a280200212a2001280274212b02400240200141fc006a280200222c0d002012210c0c010b0240024020072012460d002012210c0c010b41000d0e41000d0e2012410174220d201241016a220c200d200c4b1b220cad42307ea7220e4100480d0e0240024020120d00200e1028210d0c010b2002280200201241306c200e102c210d0b200d450d0c2002200d3602000b2002280200200741306c6a220d410d3a0000200d20022f002d3b0001200d202c36000c200d202a360008200d202b360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021220b20014184016a2802002112200128028001210d02400240200c20076b20014188016a28020041306c222d41306d220e490d00200228020021010c010b2007200e6a22012007490d0d200c410174222e2001202e20014b1b222ead42307e222f422088a70d0d202fa722304100480d0d02400240200c0d002030102821010c010b2002280200200c41306c2030102c21010b2001450d0c20022001360200202e210c0b2001200741306c6a200d202d109a051a2007200e6a210702402012450d00200d102a0b2000200136020820004280c2cdeb16370200200041106a20073602002000410c6a200c3602002022450d0d0240202c450d00202b202c411c6c6a210e202b21000340024020002802042201450d0002402000410c6a2802002207450d00200741047421070340024020012d00004109470d000240200141046a220c280200220d28020441ffffffff0371450d00200d280200102a200c280200210d0b200d102a0b200141106a2101200741706a22070d000b0b200041086a280200450d002000280204102a0b2000411c6a21010240200041146a280200450d002000280210102a0b200121002001200e470d000b0b202a450d0d202b102a0c0d0b413041041037000b200e41041037000b201441041037000b201141041037000b201941041037000b201241041037000b200c41041037000b202241041037000b201241041037000b200c41041037000b200e41041037000b203041041037000b1031000b02402029450d0002402028450d002027202841186c6a210e2027210003400240200041046a280200450d002000280200102a0b0240200041146a2802002207450d00200028020c2101200741047421070340024020012d00004109470d000240200141046a220c280200220d28020441ffffffff0371450d00200d280200102a200c280200210d0b200d102a0b200141106a2101200741706a22070d000b0b200041186a21010240200041106a280200450d00200028020c102a0b200121002001200e470d000b0b2026450d002027102a0b02402021450d0002402025450d0020242025411c6c6a210e202421000340024020002802042201450d0002402000410c6a2802002207450d00200741047421070340024020012d00004109470d000240200141046a220c280200220d28020441ffffffff0371450d00200d280200102a200c280200210d0b200d102a0b200141106a2101200741706a22070d000b0b200041086a280200450d002000280204102a0b2000411c6a21010240200041146a280200450d002000280210102a0b200121002001200e470d000b0b2023450d002024102a0b02402019450d0002402020450d00202041146c2107201f210103400240200141046a280200450d002001280200102a0b200141146a21012007416c6a22070d000b0b201e450d00201f102a0b0240201d450d000240201c450d00201b201c4104746a210e201b21000340024020002802082207450d0020002802002101200741047421070340024020012d00004109470d000240200141046a220c280200220d28020441ffffffff0371450d00200d280200102a200c280200210d0b200d102a0b200141106a2101200741706a22070d000b0b200041106a21010240200041046a280200450d002000280200102a0b200121002001200e470d000b0b201a450d00201b102a0b02402016410047201841017371450d002017102a0b02402014410047201141017371450d002015102a0b0240200f410047201341017371450d002010102a0b02402005450d000240200b450d00200b41286c2107200a210103400240200141046a280200450d002001280200102a0b0240200141106a280200450d002001410c6a280200102a0b200141286a2101200741586a22070d000b0b2009450d00200a102a0b02402008450d0002402006450d00200641047421072004210103400240200141046a280200450d002001280200102a0b200141106a2101200741706a22070d000b0b2003450d002004102a0b200241306a24000bee0203037f017e027f410121020240024002400240200041086a2802002203417f6a220420034f0d00200420034b0d00200028020020044104746a220329020421052003200141016aad3702042005a721012005422088a721030240200041086a28020022024101460d002002450d0220002802002002417e6a4104746a22022802042001470d002002200228020820036a36020841000f0b410021022003450d000240200041146a2802002204200041106a280200470d00200441016a22062004490d04200441017422072006200720064b1b220641ffffffff01712006470d04200641037422074100480d040240024020040d002007102821040c010b200028020c20044103742007102c21040b2004450d032000200436020c200041106a2006360200200028021421040b200028020c20044103746a22042003360204200420013602002000200028021441016a3602140b20020f0b41ede3c500413f1050000b200741041037000b1031000b8a1302147f027e23004180026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d002000200110de042003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200b200b417f6a220d2000200b4103746a280200220e2000200d4103746a280200220f4922101b2211200b41016a2212200d200b20101b200020124103746a280200220b200f200e20101b220d49220f1b200b200d200f1b200020114103746a2802004922131b210b200c200c417f6a220d2000200c4103746a28020022112000200d4103746a280200221249220e1b2214200c4101722206200d200c200e1b200020064103746a280200220c20122011200e1b220d4922111b200c200d20111b200020144103746a2802004922141b210c200a200a417f6a22122000200a4103746a2802002206200020124103746a280200221549220d1b2216200a41016a22172012200a200d1b200020174103746a280200220a20152006200d1b22064922121b200a200620121b200020164103746a2802004922061b210a41024101200d1b200d20121b20066a200e6a20116a20146a20106a200f6a20136a210d0b200d2000200c4103746a280200220e2000200a4103746a280200220f4922106a2000200b4103746a280200220d200f200e20101b221149220f6a210e200d2011200f1b2000200c200a20101b220d4103746a280200490d01200b200a200c20101b200f1b210d0c020b2000200110df040c0f0b200e41016a220e410c490d0002402001410176220b450d00200020014103746a41786a210a2000210c0340200c2902002118200c200a290200370200200a2018370200200c41086a210c200a41786a210a200b417f6a220b0d000b0b2001200d417f736a210d4101210a0c010b200e45210a0b0240200a452009724101710d002000200110e0040d0d0b2002450d02200d20014f0d01024020022802002000200d4103746a220a2802004f0d0020002108200121070c040b200029020021182000200a290200370200200a2018370200200041786a210f200041086a211120002902002218a721104100210c2001210b03400240200c200b417f6a220d4f0d002011200c4103746a210a0340200a28020020104b0d01200a41086a210a200d200c41016a220c470d000b200d210c0b200f200b4103746a210a02400340200c200b417f6a220b4f0d01200a280200210d200a41786a220e210a200d20104b0d000b2011200c4103746a220a2902002119200a200e41086a220d290200370200200d2019370200200c41016a210c0c010b0b2000201837020002402001200c41016a220a490d002000200a4103746a21002001200a6b220141154f0d010c0c0b0b200a20011044000b41b8e9c500200d20011034000b2007450d010b200d20074f0d012008290200211820082008200d4103746a220a290200370200200a2018370200200841086a210e20082902002219a72111410021142007417f6a2210450d02200e210a0340200a28020020114f0d03200a41086a210a2010201441016a2214470d000b201021140c020b4198e9c500410041001034000b41a8e9c500200d20071034000b200820074103746a210c2010210b02400340200c210d200b220a20144d22060d01200a417f6a210b200d41786a220c28020020114f0d000b0b0240200a2014490d002010200a490d0241800121054100210b410021014100210c4100210f4180012109200e20144103746a2215211003400240200d20106b220a4187104b22130d00200a410376220a41807f6a200a2001200b49200f200c49220e7222001b210a02402000450d002009200a200e1b2109200a2005200e1b21050c010b200a200a41017622096b21050b0240200f200c470d00024020090d002004220c210f0c010b4100210a2004220f210c2010210e0340200c200a3a0000200c200e28020020114f6a210c200e41086a210e2009200a41016a220a470d000b0b02402001200b470d00024020050d0020044180016a220b21010c010b200d41786a210a4100210e20044180016a2201210b0340200b200e3a0000200b200a2802002011496a210b200a41786a210a2005200e41016a220e470d000b0b0240200b20016b220a200c200f6b220e200e200a4b1b2212450d002010200f2d00004103746a220a2902002118200a200d20012d0000417f734103746a290200370200024020124101460d004100210a0340200d2001200a6a220e2d0000417f734103746a2010200f200a6a41016a22002d00004103746a290200370200201020002d00004103746a200d200e41016a2d0000417f734103746a290200370200200a41026a210e200a41016a2200210a200e2012490d000b200120006a2101200f20006a210f0b200d20012d0000417f734103746a2018370200200141016a2101200f41016a210f0b200d20054103746b200d2001200b461b210d201020094103746a2010200f200c461b211020130d000b02400240200f200c4f0d00200d210a03402010200c417f6a220c2d00004103746a220b2902002118200b200a41786a220a290200370200200a2018370200200f200c490d000c020b0b2010210a2001200b4f0d000340200a2902002118200a200d200b417f6a220b2d0000417f734103746a220c290200370200200c2018370200200a41086a210a2001200b490d000b0b200820193702002007200a20156b41037620146a22014d0d032008200820014103746a220a290200370200200a2019370200200720016b220c450d04200c20012001200c4b1b210b2007410376210d200a41086a2100024002402001200c417f6a220c490d002000200c200a2003108004200821000c010b2008200120022003108004200a2102200c21010b200b200d4f2105200141154f0d010c050b0b2014200a1044000b200a2010103c000b41a8e9c500200120071034000b41dc83c6001032000b20014102490d00200041786a21104100210e4101210b0340200b410374210c200b417f6a210a200b41016a210b02402000200c6a220d2802002000200a4103746a220f2802004f0d00200d2902002118200d200f2902003702000240200a450d00200e210c2010210a200d41706a2802002018a7220d4d0d00024002400340200a41086a200a290200370200200c4101460d01200c417f6a210c200a41786a220a280200200d4b0d000c020b0b4100210c0b2000200c4103746a210f0b200f20183702000b200e41016a210e201041086a2110200b2001470d000b0b20044180026a24000be00402097f017e230041306b22022400200241106a2203200141246a290200370300200241086a22042001411c6a29020037030020022001290214370300200241186a41106a2205200141106a280200360200200241186a41086a2206200141086a290200370300200220012902003703182000200241186a10fd0321070240024002400240200041206a28020022082000411c6a280200470d00200841016a22092008490d032008410174220a2009200a20094b1b220941ffffffff03712009470d032009410274220a4100480d030240024020080d00200a102821080c010b20002802182008410274200a102c21080b2008450d01200020083602182000411c6a2009360200200028022021080b200028021820084102746a20073602002000200028022041016a3602202005200329030037030020062004290300370300200220022903003703180240200041f0006a22032802002208200041ec006a280200470d00200841016a22042008490d03200841017422052004200520044b1b2204ad42187e220b422088a70d03200ba722054100480d030240024020080d002005102821080c010b2000280268200841186c2005102c21080b2008450d0220002008360268200041ec006a2004360200200041f0006a28020021080b2000280268200841186c6a22082002290318370200200841106a200241186a41106a290300370200200841086a200241186a41086a29030037020020032003280200220841016a360200024020012d002c450d0020004101360254200041d8006a20083602000b200241306a24000f0b200a41041037000b200541041037000b1031000bb20c01067f0240024020002d00002201410e4b0d00024002400240024002400240024002400240024002400240024020010e0f0001020304050607080e090e0a0b0c000b200041086a280200450d0d200041046a280200102a0f0b0240200041086a280200450d00200041046a280200102a0b200041146a280200450d0c200041106a280200102a0f0b02402000410c6a2802002202450d00200041046a28020021012002410474210203400240200141046a280200450d002001280200102a0b200141106a2101200241706a22020d000b0b200041086a280200450d0b2000280204102a0f0b02402000410c6a2802002202450d00200041046a2802002101200241286c210203400240200141046a280200450d002001280200102a0b0240200141106a280200450d002001410c6a280200102a0b200141286a2101200241586a22020d000b0b200041086a280200450d0a2000280204102a0f0b200041086a280200450d09200041046a280200102a0f0b200041086a280200450d08200041046a280200102a0f0b200041086a280200450d07200041046a280200102a0f0b02402000410c6a2802002201450d00200041046a280200220320014104746a21040340024020032802082202450d0020032802002101200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102a200528020021060b2006102a0b200141106a2101200241706a22020d000b0b200341106a21010240200341046a280200450d002003280200102a0b2001210320012004470d000b0b200041086a280200450d062000280204102a0f0b02402000410c6a2802002202450d00200041046a2802002101200241146c210203400240200141046a280200450d002001280200102a0b200141146a21012002416c6a22020d000b0b200041086a280200450d052000280204102a0f0b02402000410c6a2802002201450d00200041046a28020022032001411c6c6a21040340024020032802042201450d0002402003410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102a200528020021060b2006102a0b200141106a2101200241706a22020d000b0b200341086a280200450d002003280204102a0b2003411c6a21010240200341146a280200450d002003280210102a0b2001210320012004470d000b0b200041086a280200450d042000280204102a0f0b02402000410c6a2802002201450d00200041046a2802002203200141186c6a210403400240200341046a280200450d002003280200102a0b0240200341146a2802002202450d00200328020c2101200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102a200528020021060b2006102a0b200141106a2101200241706a22020d000b0b200341186a21010240200341106a280200450d00200328020c102a0b2001210320012004470d000b0b200041086a280200450d032000280204102a0f0b200041046a220110f904200041086a280200450d022001280200102a0f0b0240200041046a2802002201450d00200041086a280200450d002001102a0b0240200041146a2802002201450d0002402000411c6a2802002202450d002002410c6c21020340024020012802002206450d00200141046a280200450d002006102a0b2001410c6a2101200241746a22020d000b0b200041186a280200450d002000280214102a0b200041246a2802002203450d0102402000412c6a2802002201450d00200320014104746a210403402003220541106a2103024020052802042201450d0002402005410c6a2802002202450d002002410c6c21020340024020012802002206450d00200141046a280200450d002006102a0b2001410c6a2101200241746a22020d000b0b200541086a280200450d002005280204102a0b20032004470d000b0b200041286a280200450d012000280224102a0c010b0240200041086a280200450d00200041046a280200102a0b0240200041146a2802002201450d00200041186a280200450d002001102a0b200041246a280200450d00200041206a280200102a0f0b0bff7f05077f017e277f037e0f7f23002203210420034180096b4160712203240002400240024002400240024002400240024002400240411010282205450d00200541063a0000412010282206450d01200641063a001020064100360204200620032f00f0053b00012006412d3a0000200641036a200341f2056a2d00003a0000024020052d00004109470d0002402005280204220728020441ffffffff0371450d002007280200102a200528020421070b2007102a0b2005102a200141106a28020041306c2105200128020841546a210702400340024020050d00411010282207450d0520074180023b010c200742828080802037020420072006360200200720032f01d0033b010e0240200128021022052001410c6a280200470d00200541016a22082005490d0e200541017422092008200920084b1b2208ad42307e220a422088a70d0e200aa722094100480d0e0240024020050d002009102821050c010b2001280208200541306c2009102c21050b2005450d07200120053602082001410c6a2008360200200128021021050b2001280208200541306c6a220520032f00e0043b0001200541073a0000200542818080801037000820052007360004200520032902f005370210200541036a200341e2046a2d00003a0000200541186a200341f8056a290200370200200541206a20034180066a290200370200200541286a200341f0056a41186a2902003702002001200128021041016a220b3602104100210c0c020b200541506a21052007412c6a2108200741306a2209210720082d00004107470d000b200320032f01d0033b01f0050240200941086a22072802002205200941046a280200470d00200541016a22082005490d0c2005410174220d2008200d20084b1b220841ffffffff00712008470d0c2008410474220d4100480d0c0240024020050d00200d102821050c010b20092802002005410474200d102c21050b2005450d0620092005360200200941046a2008360200200941086a28020021050b200928020020054104746a22054180023b010c200542828080802037020420052006360200200520032f01f0053b010e2007200728020041016a360200200341c0006a200910fa032003280244417f6a210c2001280210210b0b200b41306c21052001280208220e41546a210702400340410021082005450d01200541506a21052007412c6a2109200741306a2206210720092d00004103470d000b200641086a2802002205450d00200541286c2107200628020041186a2105410021080340200820052d0000456a2108200541286a2105200741586a22070d000b0b200b41306c2105200e41546a210702400340410021092005450d01200541506a21052007412c6a2106200741306a220d210720062d00004103470d000b200d41086a2802002205450d00200541286c2107200d28020041186a2105410021090340200920052d0000456a2109200541286a2105200741586a22070d000b0b200b41306c2105200e415c6a2107024003404100210f024020050d00410021050c020b200541506a2105200741246a2106200741306a220d210720062d00004104470d000b200d28020021050b200341003602e0040240200520096a220b0d0041042110410021110c080b02402008450d00200342003703f005410021050c060b200341f0056a4100200110d60420032802f405210520032802f0054101470d05200341f8056a290300210a024020032802e0042207450d0020032802e404450d002007102a0b2003200a3702e404200320053602e00441002111410421104100210f0c060b411041081037000b412041081037000b411041041037000b200941041037000b200d41041037000b0240024002400240410410282210450d0020102005360200200b4102490d02024020084102490d00200342003703f0054100210d0c020b200341f0056a4101200110d60420032802f405210d20032802f0054101470d01200341f8056a290300210a024020032802e004450d0020032802e404450d0020032802e004102a0b2003200a3702e4042003200d3602e0040c020b410441041037000b410221064104210741012109410121110340200941016a210502400240024020092011470d0020062005200620054b1b221141ffffffff03712011470d0a2011410274220e4100480d0a20102007200e102c2210450d010b201020076a200d36020002402005200b4f0d000240200820054d0d00200342003703f0054100210d0c030b200341f0056a2005200110d60420032802f405210d20032802f0054101470d0220032903f805210a024020032802e004450d0020032802e404450d0020032802e004102a0b200941016a210f2003200a3702e4042003200d3602e0040c050b200941016a210f0c040b200e41041037000b200641026a2106200741046a2107200521090c000b0b4101210f410121110b20032802e00421050b2005450d0020032902e404210a02402011450d002010102a0b2000200536020420004101360200200041086a200a3702000c010b024020012802102205450d0020012802082212200541306c6a2113200341e0046a41146a2114200341e0076a211520034194066a2116200341a4066a2117200341b4066a2118200341c4066a2119200341d4066a211a200341e4066a211b200341f4066a211c20034184076a211d20034194076a211e200341a4076a211f200341b4076a2120200341c4076a2121200341d4076a212202400240024002400340024020122d0000410c470d00201228020c2205450d0020122802042206200541186c6a212303400240200641146a220e2802002205450d002006410c6a212441002109024002400340200920054f0d014101210502402024280200200941047422256a22072d0000410b470d002003200741046a22073602c00220072802002207200f4f0d03201020074102746a2802002208450d002003200c3602d407200341133a00d007200341d7003a00c007200320083602b4072003412d3a00b0072003200c3602a407200341123a00a00720032007360294072003410b3a009007200341063a008007200341003a00f00620034184083b01e006200341373a00d006200320023602c4062003412d3a00c0062003200c3602b406200341123a00b0062003200c3602a406200341133a00a006200341d6003a00900620032008360284062003412d3a0080062003200c3602f405200341123a00f005200e280200222620094d0d09200e2009360200200628020c2105200320153602f804200320243602f0042003200520256a220b41106a220d3602e8042003200941016a22273602e0042003202620276b22283602e40420032005202741047422296a222a3602ec042003200341f0056a3602f404200d21050240200b2d0000220841ac01460d004100210502400340200b20056a21070240200841ff01714109470d000240200741046a280200220828020441ffffffff0371450d002008280200102a0b2008102a0b2005450d012003200741206a3602e804200541106a2105200741106a2d0000220841ac01470d000b200b20056a41106a21050c010b200741106a21050b02402005202a460d0003402003200541106a22073602e80420052d0000220841ac01460d01024020084109470d000240200541046a280200220528020441ffffffff0371450d002005280200102a0b2005102a0b20072105200d2007470d000b0b02400240024002402028450d000240202720062802142205470d00200341f0056a21052015210b0c030b2025200541047422056b2108200628020c20056a2107200341f0056a21052015210d0340024002402005200d470d00410021050c010b2003200541106a3602f4040b200341d0036a200510d30420032d00d00341ac01460d04200720032903d003370300200741086a200341d0036a41086a2903003703002006200628021441016a3602142008450d02200741106a2107200841706a210820032802f804210d20032802f40421050c000b0b2024201410d7040c020b20032802f804210b20032802f40421050b0240200b20056b2207450d000240024020032802f004220d41046a222a280200222520266b20074104762208490d00200d28020021070c010b202620086a22072026490d12202541017422262007202620074b1b222641ffffffff00712026470d122026410474222b4100480d120240024020250d00202b102821070c010b200d2802002025410474202b102c21070b2007450d0d200d2007360200202a20263602000b2007202720086a22254104746a200720296a2028410474109b051a200320253602e0042025200d2802082207460d00200920086a410474200741047422076b2108200d28020020076a21070340024002402005200b470d00410021050c010b2003200541106a3602f4040b200341d0036a200510d30420032d00d00341ac01460d02200720032903d003370300200741086a200341d0036a41086a290300370300200d200d28020841016a3602082008450d01200741106a2107200841706a210820032802f804210b20032802f40421050c000b0b200341003602d803200342083703d003200341d0036a201410d70420032802d003222820032802d8032207410474220b6a210d20032802d40321292028210502402007450d000240024020032802f004222541046a222a280200220520032802e404222720032802e00422076a22266b200b4104752208490d00202528020021050c010b202620086a222b2026490d1220054101742226202b2026202b4b1b222641ffffffff00712026470d122026410474222b4100480d120240024020050d00202b102821050c010b20252802002005410474202b102c21050b2005450d0e20252005360200202a20263602000b2005200720086a220841047422266a200520074104746a2027410474109b051a200320083602e00420282105200820252802082207460d002025280200220520266a212a200520074104746a21082028210703400240200b0d00200d21050c020b200341d0036a41026a2205200741036a2d00003a0000200320072f00013b01d003024020072d0000222741ac01470d00200741106a21050c020b200741046a2802002126200741086a290300210a200820273a0000200841086a200a370300200841046a202636020020032f01d0032127200841036a20052d00003a0000200841016a20273b00002025202528020841016a360208200b41706a210b200741106a22052107200841106a2208202a470d000b0b02402005200d460d0003400240024020052d000022074109460d00200741ac01470d010c030b0240200541046a280200220728020441ffffffff0371450d002007280200102a0b2007102a0b200541106a2205200d470d000b0b2029450d002028102a0b024020032802e804220520032802ec04220d460d0003402003200541106a22073602e80420052d0000220841ac01460d01024020084109470d000240200541046a280200220528020441ffffffff0371450d002005280200102a0b2005102a0b20072105200d2007470d000b0b024020032802e4042205450d00024020032802e004220d20032802f004220b41086a22082802002207460d00200b280200220b20074104746a200b200d4104746a2005410474109b051a0b2008200520076a3602000b024020032d00f0054109470d00024020032802f405220528020441ffffffff0371450d002005280200102a20032802f40521050b2005102a0b024020032d0080064109470d000240200341f0056a41146a280200220528020441ffffffff0371450d002005280200102a20032802840621050b2005102a0b024020032d0090064109470d0002402016280200220528020441ffffffff0371450d002005280200102a20032802940621050b2005102a0b024020032d00a0064109470d0002402017280200220528020441ffffffff0371450d002005280200102a20032802a40621050b2005102a0b024020032d00b0064109470d0002402018280200220528020441ffffffff0371450d002005280200102a20032802b40621050b2005102a0b024020032d00c0064109470d0002402019280200220528020441ffffffff0371450d002005280200102a20032802c40621050b2005102a0b024020032d00d0064109470d000240201a280200220528020441ffffffff0371450d002005280200102a20032802d40621050b2005102a0b024020032d00e0064109470d000240201b280200220528020441ffffffff0371450d002005280200102a20032802e40621050b2005102a0b024020032d00f0064109470d000240201c280200220528020441ffffffff0371450d002005280200102a20032802f40621050b2005102a0b024020032d0080074109470d000240201d280200220528020441ffffffff0371450d002005280200102a20032802840721050b2005102a0b024020032d0090074109470d000240201e280200220528020441ffffffff0371450d002005280200102a20032802940721050b2005102a0b024020032d00a0074109470d000240201f280200220528020441ffffffff0371450d002005280200102a20032802a40721050b2005102a0b024020032d00b0074109470d0002402020280200220528020441ffffffff0371450d002005280200102a20032802b40721050b2005102a0b024020032d00c0074109470d0002402021280200220528020441ffffffff0371450d002005280200102a20032802c40721050b2005102a0b024020032d00d0074109470d0002402022280200220528020441ffffffff0371450d002005280200102a20032802d40721050b2005102a0b410f21050b200520096a2209200e2802002205490d000c030b0b41ace4c500200920051034000b2003410136028406200342013702f405200341bce4c5003602f0052003412c3602d4032003200341d0036a360280062003200341c0026a3602d003200341e0046a200341f0056a103320032802e00422050d040b200641186a22062023470d000b0b201241306a22122013470d000c050b0b20032902e404210a2000200536020420004101360200200041086a200a3702002011450d042010102a0c040b41e4e8c5001032000b202b41081037000b202b41081037000b200341c8006a41106a200141106a2802002220360200200341c8006a41086a200141086a290200220a37030020032001290200370348202041306c2105200aa7221241546a210702400340024020050d00410021080c020b200541506a21052007412c6a2108200741306a2209210720082d00004108470d000b200341386a200910fa0320032802382108200328023c21050b2005410020081b210d202041306c2105201241546a21072008410420081b210802400340024020050d00410021090c020b200541506a21052007412c6a2109200741306a2206210720092d0000410a470d000b200341306a200610fa0320032802302109200328023421050b2005410020091b210b202041306c2105201241546a21072009410420091b211702400340024020050d004100211c0c020b200541506a21052007412c6a2109200741306a2206210720092d00004109470d000b200628020021074101211c0b20034200370274200341f8b9c0003602702017200b411c6c6a211f2008200d41146c6a210d200341e0046a410272221b41266a2121201b41186a2122201b41086a212b4104211641002124410021264100211e4100211d410021140240024002400240410041ff01710e03000102000b410021050c020b410221050c010b410121050b03400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020050e03000104040b0240201441ff01710e03020300020b201e4101470d04410021050c0b0b201c450d0f4100211c410221284100212a200721050c1d0b034002400240024002400240200d200822056b413c4b0d002005200d470d01200521080c020b200528020c0d03200541146a2108200541106a28020021050c1f0b200541106a21090340200528020c450d02200941146a2109200541146a2205200d470d000b200d21080b201e4101470d07410021050c0a0b200941046a2108200928020021050c1c0b200541206a280200450d1a200541346a280200450d19200541d0006a2108200541c8006a280200450d180c000b0b0340024002400240200d200822056b413c4b0d00410121142005200d470d01200521080c2b0b200528020c0d01200541146a2108200541106a28020021050c180b200541106a210902400340200528020c450d01200941146a2109200541146a2205200d470d000b200d21080c2a0b200941046a2108200928020021050c170b200541206a280200450d15200541346a280200450d14200541d0006a2108200541c8006a280200450d130c000b0b024002400240201441ff01710e03010200010b201e4101470d03410021050c080b034002400240024002400240200d200822056b413c4b0d002005200d470d01200521080c020b200528020c0d03200541146a2108200541106a28020021050c160b200541106a21090340200528020c450d02200941146a2109200541146a2205200d470d000b200d21080b201e4101470d07410021050c080b200941046a2108200928020021050c130b200541206a280200450d11200541346a280200450d10200541d0006a2108200541c8006a280200450d0f0c000b0b0340024002400240200d200822056b413c4b0d002005200d460d10200541106a21090340200528020c450d02200941146a2109200541146a2205200d470d000c110b0b200528020c0d01200541146a2108200541106a28020021050c0e0b200941046a2108200928020021050c0d0b200541206a280200450d0b200541346a280200450d0a200541d0006a2108200541c8006a280200450d090c000b0b410121050c060b410121050c040b410121050c020b410121050b0340024002400240024020050e020001010b2029201d470d01410121050c030b2017201f460d0a200341206a201710cd0420032802202229450d0a2017411c6a2117202920032802244102746a211d0c010b2029450d09202928020021054101211e41022114202941046a2129410121280c160b410021050c000b0b0340024002400240024020050e020001010b2029201d470d014101211e2029211d410121050c030b410221142017201f460d22200341106a201710cd042017411c6a211720032802102205450d23200520032802144102746a211d200521290c010b202941046a2109024020290d00410221144101211e200921290c230b2029280200210541002128410221144101211e200921290c150b410021050c000b0b0340024002400240024020050e020001010b2029201d470d01410121050c030b2017201f460d08200341286a201710cd0420032802282229450d082017411c6a21172029200328022c4102746a211d0c010b2029450d07202928020021054101211e41022114202941046a2129410121280c140b410021050c000b0b0340024002400240024020050e020001010b2029201d470d014101211e2029211d410121050c030b410221142017201f460d20200341186a201710cd042017411c6a211720032802182205450d212005200328021c4102746a211d200521290c010b202941046a2109024020290d00410221144101211e200921290c210b2029280200210541002128410221144101211e200921290c130b410021050c000b0b200541cc006a28020021050c020b2005413c6a2108200541386a28020021050c010b200541286a2108200541246a28020021050b41012114410121280c0d0b200341e0006a41086a200341f0006a41086a280200360200200320032903703703602003280258220d41306c21052003280250220b41546a210702400340410021082005450d01200541506a21052007412c6a2109200741306a2206210720092d00004103470d000b200641086a2802002205450d00200541286c2107200628020041186a2105410021080340200820052d0000456a2108200541286a2105200741586a22070d000b0b200d41306c2105200b415c6a210702400340024020050d00410021050c020b200541506a2105200741246a2109200741306a2206210720092d00004104470d000b200628020021050b200341f0056a41106a2228200341c8006a41106a280200360200200341f0056a41086a200341c8006a41086a290300370300200320032903483703f005200341b0016a200341f0056a10fc0302402026450d00201620264102746a212a200520086a2125200341f0056a41e0016a210f200341f0056a41d0016a2115200341f0056a41c0016a2129200341f0056a41b0016a2114200341f0056a41a0016a2117200341f0056a4190016a2118200341f0056a4180016a2119200341f0056a41f0006a211a200341f0056a41e0006a211b200341f0056a41d0006a211c200341f0056a41c0006a211d200341f0056a41306a211e200341f0056a41206a211f200341e7046a212020034184066a212120034194066a2122200341b4066a212b200341c4066a2123200341d4066a2112200341e4066a2101200341f4066a211320034184076a212c20034194076a212d200341a4076a212e200341b4076a212f200341c4076a2130200341d4076a21312016212703402027220541046a212720052802002106200341e0006a21052003280264210b03402005280200220d41086a2107200d2f0106220e4102742105417f210802400340024020050d00200e21080c020b20072802002109200841016a21082005417c6a2105200741046a21070240417f2009200647200920064b1b41016a0e03020001020b0b200d41346a20084105746a220e2802182107200e28021c21052003200c3602d407200341133a00d007200341d7003a00c007200320053602b4072003412d3a00b0072003200c3602a407200341123a00a00720032007360294072003410b3a009007200341063a008007200341003a00f00620034184083b01e006200341373a00d006200320023602c4062003412d3a00c0062003200c3602b406200341123a00b0062003200c3602a406200341133a00a006200341d6003a00900620032005360284062003412d3a0080062003200c3602f405200341123a00f005200e280208220d41106a220541ffffffff00712005470d1220054104742207417f4c0d12200e41086a21260240024002400240024020070d00410821060c010b200710282206450d012026280200210d0b0240200d0d00410021080c030b41002109410021070340024020072005470d00200541016a22082005490d262005410174220b2008200b20084b1b220841ffffffff00712008470d262008410474220b4100480d260240024020050d00200b102821060c010b20062005410474200b102c21060b2006450d03200821050b200620096a2208410f3a0000200841046a2007360200200841016a20032f01d0033b0000200841036a200341d0036a41026a2d00003a0000200941106a2109200741016a22082107200d2008460d030c000b0b200741081037000b200b41081037000b02400240024002400240024002400240200520086b410e4d0d00200521090c010b2008410f6a22072008490d28200541017422092007200920074b1b220941ffffffff00712009470d28200941047422074100480d280240024020050d002007102821060c010b200620054104742007102c21060b2006450d010b200341e0046a200341f0056a10d904200620084104746a220520032903e004370300200541086a200341e0046a41086a2207290300370300200341e0046a202810d904200541186a2007290300370300200520032903e004370310200341e0046a201f10d904200541286a2007290300370300200541206a20032903e004370300200341e0046a201e10d904200541386a2007290300370300200541306a20032903e004370300200341e0046a201d10d904200541c8006a2007290300370300200541c0006a20032903e004370300200341e0046a201c10d904200541d8006a2007290300370300200541d0006a20032903e004370300200341e0046a201b10d904200541e8006a2007290300370300200541e0006a20032903e004370300200341e0046a201a10d904200541f8006a2007290300370300200541f0006a20032903e004370300200341e0046a201910d90420054188016a200729030037030020054180016a20032903e004370300200341e0046a201810d90420054198016a200729030037030020054190016a20032903e004370300200341e0046a201710d904200541a8016a2007290300370300200541a0016a20032903e004370300200341e0046a201410d904200541b8016a2007290300370300200541b0016a20032903e004370300200341e0046a202910d904200541c8016a2007290300370300200541c0016a20032903e004370300200341e0046a201510d904200541d8016a2007290300370300200541d0016a20032903e004370300200341e0046a200f10d904200541e8016a2007290300370300200541e0016a20032903e004370300024002402008410f6a22052009460d002009210d200521090c010b200941016a22052009490d28200941017422072005200720054b1b220d41ffffffff0071200d470d28200d41047422054100480d280240024020090d002005102821060c010b200620094104742005102c21060b2006450d020b200620094104746a220541063a0000200520032900e004370001200541086a2020290000370000200341e0046a200341b0016a418c01109a051a411010282207450d02200741063a0000200341d0036a200341e0046a418c01109a051a20262802002205417f4c0d18200e28020021090240024020050d004101210b410120092005109a05220920092005109a051a2005ad2132410021050c010b20051028220b450d04200b20092005109a05210920051028220b450d05200b20092005109a051a2009102a2005ad21320b200341e0046a200341d0036a418c01109a051a200e31000d2133200341d0036a200341e0046a418c01109a051a200341e0046a200341d0036a418c01109a051a200341c0026a200341e0046a418c01109a051a411010282209450d05200841106a2108200a428080808080804083220a2032842033422886844280808080800c842132200941063a00002009102a200341d0036a200341c0026a418c01109a051a200341e0046a200341d0036a418c01109a051a024020072d00004109470d0002402007280204220928020441ffffffff0371450d002009280200102a200728020421090b2009102a0b2007102a200341c0026a200341e0046a418c01109a051a200341e0046a200341c0026a418c01109a051a200341003602fc03200320083602f8032003200d3602f403200320063602f003200341003602ec03200342043702e403200320323702dc03200320053602d8032003200b3602d403200341013602d003200341e0046a200341d0036a108104200341b0016a200341e0046a418c01109a051a200e4101360210200e2025360214024020032d00f0054109470d00024020032802f405220528020441ffffffff0371450d002005280200102a20032802f40521050b2005102a0b024020032d0080064109470d0002402021280200220528020441ffffffff0371450d002005280200102a20032802840621050b2005102a0b024020032d0090064109470d0002402022280200220528020441ffffffff0371450d002005280200102a20032802940621050b2005102a0b024020032d00a0064109470d000240200341f0056a41346a280200220528020441ffffffff0371450d002005280200102a20032802a40621050b2005102a0b024020032d00b0064109470d000240202b280200220528020441ffffffff0371450d002005280200102a20032802b40621050b2005102a0b024020032d00c0064109470d0002402023280200220528020441ffffffff0371450d002005280200102a20032802c40621050b2005102a0b024020032d00d0064109470d0002402012280200220528020441ffffffff0371450d002005280200102a20032802d40621050b2005102a0b024020032d00e0064109470d0002402001280200220528020441ffffffff0371450d002005280200102a20032802e40621050b2005102a0b024020032d00f0064109470d0002402013280200220528020441ffffffff0371450d002005280200102a20032802f40621050b2005102a0b024020032d0080074109470d000240202c280200220528020441ffffffff0371450d002005280200102a20032802840721050b2005102a0b024020032d0090074109470d000240202d280200220528020441ffffffff0371450d002005280200102a20032802940721050b2005102a0b024020032d00a0074109470d000240202e280200220528020441ffffffff0371450d002005280200102a20032802a40721050b2005102a0b024020032d00b0074109470d000240202f280200220528020441ffffffff0371450d002005280200102a20032802b40721050b2005102a0b024020032d00c0074109470d0002402030280200220528020441ffffffff0371450d002005280200102a20032802c40721050b2005102a0b024020032d00d0074109470d0002402031280200220528020441ffffffff0371450d002005280200102a20032802d40721050b2005102a0b200a4280808080808c0184210a202541016a21252027202a470d080c090b200741081037000b200541081037000b411041081037000b200541011037000b200541011037000b411041081037000b0240200b450d00200b417f6a210b200d20084102746a4194036a21050c010b0b0b4198ebc5004180011050000b02402024450d002016102a0b200341f0056a200341b0016a418c01109a051a200341e0046a200341f0056a10fe030240200341e0046a41106a2802002205450d0020032802e8042228200541306c6a212a0340024020282d000041786a220541024b0d0002400240024020050e03000102000b202828020c2205450d0220282802042208200541146c6a210c03400240200828020c0d002008280210210d200341e0006a21052003280264210e03402005280200220b41086a2107200b2f010622244102742105417f210902400340024020050d00202421090c020b20072802002106200941016a21092005417c6a2105200741046a21070240417f2006200d472006200d4b1b41016a0e03020001020b0b0240200b41346a20094105746a2205280210450d00200820052802143602100c030b4198ecc50041351050000b200e450d01200e417f6a210e200b20094102746a4194036a21050c000b0b200841146a2208200c470d000c030b0b20282802042106200341e0006a21052003280264210b03402005280200220d41086a2107200d2f0106220e4102742105417f210802400340024020050d00200e21080c020b20072802002109200841016a21082005417c6a2105200741046a21070240417f2009200647200920064b1b41016a0e03020001020b0b0240200d41346a20084105746a2205280210450d00202820052802143602040c040b4198ecc50041351050000b200b450d02200b417f6a210b200d20084102746a4194036a21050c000b0b202828020c2205450d00202828020422272005411c6c6a21260340024020272802182205450d002027280210220e20054102746a21250340200e220c41046a210e200c2802002106200341e0006a21052003280264210b03402005280200220d41086a2107200d2f010622244102742105417f2108024002400340024020050d00202421080c020b20072802002109200841016a21082005417c6a2105200741046a21070240417f2009200647200920064b1b41016a0e03020001020b0b0240200d41346a20084105746a2205280210450d00200c20052802143602000c020b4198ecc50041351050000b200b450d00200b417f6a210b200d20084102746a4194036a21050c010b0b200e2025470d000b0b2027411c6a22272026470d000b0b202841306a2228202a470d000b0b200341ec046a290200210a20032802e004210520032902e404213220032802602003280264200328026810da04200041106a200a370200200041086a203237020020002005360204200041003602002011450d1c2010102a200424000f0b200541cc006a28020021050c020b2005413c6a2108200541386a28020021050c010b200541286a2108200541246a28020021050b41012128410021140c080b200541cc006a28020021050c020b2005413c6a2108200541386a28020021050c010b200541286a2108200541246a28020021050b41002128410121140c040b200541cc006a28020021050c020b2005413c6a2108200541386a28020021050c010b200541286a2108200541246a28020021050b41002114410021280b2007212a0b2003200536027c02402005200f490d002003410136028406200342023702f40520034188ebc5003602f005200341013602d4032003200341d0036a360280062003200341fc006a3602d003200341e0046a200341f0056a103320032902e404220a422088a7210820032802e0042125200aa7211a0c0a0b201020054102746a2802002207450d050240024020262024460d0020242115202621240c010b202441016a22092024490d10202441017422062009200620094b1b221541ffffffff03712015470d10201541027422094100480d100240024020240d002009102821160c010b201620244102742009102c21160b2016450d020b201620244102746a2005360200200341f0056a200328027c220b200341c8006a10db0420032802f805211a20032802f4052125024020032802f00522194101470d0020032802fc052108201521240c0a0b20252802082205417f4c0d002025280200210920252d000c210602400240024020050d004100210e410121240c010b2005210e200510282224450d010b202420092005109a05210920032005360288012003200e360284012003200936028001200320063a008c01200320252d000d3a008d0120034100360290012003200328027c360298012003200736029c010240024002402003280270220741f8b9c000460d00200328027421270c010b20214200370100201b41206a420037010020224200370100201b41106a4200370100202b4200370100201b4200370100200341f0056a410041e0021099051a41940310282207450d014100212720074100360200200720032903e0043702042007410c6a200341e0046a41086a290300370200200741146a200341e0046a41106a2903003702002007411c6a200341e0046a41186a290300370200200741246a200341e0046a41206a2903003702002007412c6a200341e0046a41286a290300370200200741346a200341f0056a41e002109a051a20034100360274200320073602700b202641016a2126034020072f0106221841027421244100210541142106417f210902400340024020242005470d00201821090c020b200720056a210e200941016a2109200641206a2106200541046a21050240417f200e41086a280200220e200b47200e200b4b1b41016a0e03020001020b0b200720066a2205290200210a2005200329038001370200200541186a200329039801370200200541106a220729020021322007200329039001370200200541086a200329038801370200203242ffffffff0f83420285500d08200a42808080807083500d08200aa7102a0c080b02402027450d002027417f6a2127200720094102746a4194036a28020021070c010b0b2003200328027841016a360278200329039801210a20032903900121322003290388012133200329038001213420072f01062206410b490d0420214200370100201b41206a2235420037010020224200370100201b41106a22364200370100202b4200370100201b4200370100200341f0056a410041e0021099051a024041940310282205450d0020054100360200200520032903e0043702042005410c6a200341e0046a41086a222c290300370200200541146a200341e0046a41106a222d2903003702002005411c6a200341e0046a41186a222e290300370200200541246a200341e0046a41206a22372903003702002005412c6a200341e0046a41286a2238290300370200200541346a200341f0056a41e002109a05210e200341f0056a41086a2227200741fc016a290200370300200341f0056a41106a221820074184026a290200370300200341f0056a41186a22232007418c026a290200370300200320072902f4013703f00520072802202139200541086a200741246a20072f010641796a2206410274109a052124200e20074194026a2006410574109a05210e200741063b0106200520063b0106202e2023290300370300202d2018290300370300202c2027290300370300200320032903f0053703e0040240024020094107490d0020242009417a6a22134102746a2024200941796a22014102746a2209200641ffff037120016b410274109b051a2009200b360200200e20134105746a200e20014105746a2209200541066a22062f010020016b410574109b051a200941186a200a37020020092032370210200920333702082009203437020020062f0100210e0c010b200741086a2206200941016a22244102746a200620094102746a2201200741066a22062f0100220e20096b2213410274109b051a2001200b360200200741346a220b20244105746a200b20094105746a22092013410574109b051a200941186a200a3702002009203237021020092033370208200920343702000b2006200e41016a3b0100200341d0036a41186a222f202e290300220a370300200341d0036a41106a2230202d2903002232370300200341d0036a41086a2231202c2903002233370300200341b0016a41186a223a200a370300200341b0016a41106a223b2032370300200341b0016a41086a223c2033370300200320032903e004220a3703d0032003200a3703b00102402007280200220e0d00200521090c070b20072f010421012005213d0340200341c0026a41186a223e203a290300370300200341c0026a41106a223f203b290300370300200341c0026a41086a2240203c290300370300200320032903b0013703c002200141ffff0371210b02400240024002400240200e2f01062205410b490d0020214200370100203542003701002022420037010020364200370100202b4200370100201b42003701002031202c2903003703002030202d290300370300202f202e290300370300200341d0036a41206a22052037290300370300200341d0036a41286a22072038290300370300200320032903e0043703d003200341f0056a41004190031099051a41c40310282209450d0320094100360200200920032903d0033702042009410c6a2031290300370200200941146a20302903003702002009411c6a202f290300370200200941246a20052903003702002009412c6a2007290300370200200941346a200341f0056a419003109a052107200e41206a28020021412023200e418c026a2902003703002018200e4184026a2902003703002027200e41fc016a2902003703002003200e41f4016a2902003703f005200941086a200e41246a200e2f0106220641796a2205410274109a0521422007200e4194026a2005410574109a05214320094194036a200e41b0036a2006417a6a2224410274109a052113200e41063b0106200920053b010602402024450d00410021052013210703402007280200220620053b010420062009360200200741046a21072024200541016a2205470d000b0b202e2023290300220a370300202d20182903002232370300202c20272903002233370300200320032903f00522343703e0042023200a3703002018203237030020272033370300200320343703f005200141ffff037122074107490d012042200b417a6a220641027422246a2042200b41796a22054102746a220720092f010620056b410274109b051a20072039360200204320064105746a204320054105746a220720092f010620056b410574109b051a200741186a203e290300370200200741106a203f290300370200200741086a2040290300370200200720032903c002370200200920092f010641016a22073b0106200b410274220120136a416c6a201320246a2224200741ffff0371220b20066b410274109b051a2024203d360200200b2006490d02200920016a41fc026a2107034020072802002206200541016a22053b010420062009360200200741046a21072005200b490d000c030b0b200e41086a2207200b41016a220941027422066a2007200b41027422246a22072005200b6b2227410274109b051a20072039360200200e41346a220720094105746a2007200b4105746a22072027410574109b051a200741186a203e290300370200200741106a203f290300370200200741086a2040290300370200200720032903c002370200200e200541016a22053b01062024200e4194036a22076a41086a200720066a2207200541ffff0371220620096b410274109b051a2007203d360200200b20064f0d0c200e2009417f6a22054102746a4198036a2107034020072802002209200541016a22053b01042009200e360200200741046a210720052006490d000c0d0b0b200e41086a2205200b41016a222441027422066a2005200b41027422016a2205200e2f01062213200b6b2242410274109b051a20052039360200200e41346a220520244105746a2005200b4105746a22052042410574109b051a200541186a203e290300370200200541106a203f290300370200200541086a2040290300370200200520032903c002370200200e201341016a22053b01062001200e4194036a22136a41086a201320066a2213200541ffff0371220620246b410274109b051a2013203d360200200720064f0d00200e20016a4198036a2105034020052802002207200b41016a220b3b01042007200e360200200541046a21052006200b470d000b0b203a2023290300370300203b2018290300370300203c2027290300370300200320032903f0053703b001200e28020022050d01204121390c090b41c40341041037000b200e2f010421012005210e204121392009213d0c000b0b41940341041037000b41940341041037000b200541011037000b1036000b200941041037000b200741086a2205200941016a220e4102746a200520094102746a2205200620096b2224410274109b051a2005200b360200200741346a2205200e4105746a200520094105746a22052024410574109b051a200541186a200a3702002005203237021020052033370208200520343702002007200641016a3b01060c010b20214200370100203542003701002022420037010020364200370100202b4200370100201b42003701002031202c2903003703002030202d290300370300202f202e290300370300200341d0036a41206a22072037290300370300200341d0036a41286a22062038290300370300200320032903e0043703d003200341f0056a41004190031099051a41c40310282205450d0220054100360200200520032903d0033702042005410c6a2031290300370200200541146a20302903003702002005411c6a202f290300370200200541246a20072903003702002005412c6a2006290300370200200541346a200341f0056a419003109a05210b20052003280270220736029403200320053602702003200328027441016a36027420072005360200200741003b0104200b20052f010622064105746a220720032903b001370200200741186a203a290300370200200741106a203b290300370200200741086a203c290300370200200520064102746a41086a203936020020054194036a200641016a22074102746a2009360200200520073b0106200920073b0104200920053602000b02402019450d00201a450d002025102a0b201521240b202a2107202841ff01710e03010205010b41c40341041037000b410021050c040b410221050c030b20032802702003280274200328027810da0402402024450d002016102a0b02402020450d00202041306c2107201221050340200510dc04200541306a2105200741506a22070d000b0b0240200341d4006a280200450d002012102a0b2000202536020420004101360200200041086a2008ad422086201aad843702002011450d042010102a200424000f0b201f21170b410121050c000b0b024020012802102205450d0020012802082103200541306c21050340200310dc04200341306a2103200541506a22050d000b0b2001410c6a280200450d002001280208102a0b200424000f0b1031000bfc8c0204117f017e0b7f017e230041e0006b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e100100021817161514130d0b0c09080706010b200141186a2802002104200141146a2802002105200141106a28020021062001410c6a2802002107200141086a2802002108200141046a28020021090240200241046a280200200241086a280200220a460d002002280200210b0c1e0b200a41016a220b200a490d1a200a410174220c200b200c200b4b1b220c4100480d1a02400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d042002200b360200200241046a200c360200200241086a280200210a0c1d0b2001410c6a280200210b200141086a2802002105200141046a280200210420012d0001210d02400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d1a200a4101742206200c2006200c4b1b22064100480d1a02400240200a0d0020061028210c0c010b2002280200200a2006102c210c0b200c450d032002200c360200200241046a2006360200200241086a280200210a0b200241086a2206200a41016a360200200c200a6a200d3a000002400240200241046a280200220c2006280200220a6b200b490d002002280200210c0c010b200a200b6a220d200a490d1a200c410174220a200d200a200d4b1b220a4100480d1a02400240200c0d00200a1028210c0c010b2002280200200c200a102c210c0b200c450d022002200c360200200241046a200a360200200241086a280200210a0b200241086a200a200b6a360200200c200a6a2004200b109a051a4100210b4101210d024020050d004101210c0c270b2004102a4101210c0c260b2001410c6a2802002106200141086a280200210e200141046a280200210f024002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d1a200a410174220c200b200c200b4b1b220c4100480d1a02400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d012002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41013a0000200f20064104746a21104100210c4100210b41002105410121042006210a024003400240200b2005470d00200c200b41016a220d200c200d4b1b22054100480d1c02400240200c0d002005102821040c010b2004200b2005102c21040b2004450d020b2004200b6a200a41807f72200a41ff0071200a410776220d1b3a0000200c41026a210c200b41016a210b200d210a200d0d000b024020060d00200f21080c190b200f210a02400340200a41106a2108200a2d000d22114105460d1a200a2d000c210c200a2802082109200a2802042112200a28020021130240024002400240024002402005200b470d00200b41016a220a200b490d22200b410174220d200a200d200a4b1b22054100480d2202400240200b0d002005102821040c010b2004200b2005102c21040b2004450d010b2004200b6a200c3a0000200b41016a210a200b410174220b41046a2107200b41026a210c2009210b0340200721060240200a2005470d00200a41016a220d200a490d23200c200d200c200d4b1b22054100480d2302400240200a0d002005102821040c010b2004200a2005102c21040b2004450d030b2004200a6a200b41807f72200b41ff0071200b410776220d1b3a0000200641026a2107200c41026a210c200a41016a210a200d210b200d0d000b0240024020090d00200a210b0c010b4100210c0340200a200c6a210b41fc00210d02400240024002402013200c6a2d00000e050200010305020b41fe00210d0c020b41fd00210d0c010b41ff00210d0b0240200b2005470d00200b41016a2205200b490d2420062005200620054b1b22054100480d2402400240200b0d002005102821040c010b2004200b2005102c21040b2004450d050b2004200a6a200c6a200d3a0000200641026a21062009200c41016a220c470d000b200a200c6a210b0b20120d030c040b200541011037000b200541011037000b200541011037000b2013102a0b4100210a0240024020114104460d0002402005200b470d00200b41016a220a200b490d1f200b410174220c200a200c200a4b1b22054100480d1f02400240200b0d002005102821040c010b2004200b2005102c21040b2004450d020b2004200b6a41013a0000200b41016a210b201141077141ff0073210a0b02402005200b470d00200b41016a220c200b490d1e200b410174220d200c200d200c4b1b22054100480d1e02400240200b0d002005102821040c010b2004200b2005102c21040b2004450d030b2004200b6a200a3a0000200b41016a210b2008210a20082010470d010c1c0b0b200541011037000b200541011037000b200541011037000b200c41011037000b200a41011037000b200641011037000b200c41011037000b200141286a2802002113200141246a280200210f200141206a28020021082001411c6a2802002107200141186a2802002112200141146a28020021092001410c6a2902002114200141086a2802002110200141046a28020021110240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d27200a410174220c200b200c200b4b1b220c4100480d2702400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d012002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41003a0000200341dc006a410036020020034201370254200320023602502014422088a7210d4100210a4100210b2014a72206210c034002400240200a200b460d002003280254210a0c010b200a41016a2204200a490d28200a41017422052004200520044b1b22044100480d2802400240200a0d0020041028210a0c010b2003280254200a2004102c210a0b200a450d03200320043602582003200a3602540b2003200b41016a36025c200a200b6a200c41807f72200c41ff0071200c41077622041b3a00002003280258210a200328025c210b2004210c20040d000b02400240200a200b6b2006490d00200328025421040c010b200b20066a220c200b490d27200a4101742204200c2004200c4b1b220c4100480d2702400240200a0d00200c102821040c010b2003280254200a200c102c21040b2004450d032003200c36025820032004360254200c210a0b2003200b20066a220c36025c2004200b6a20112006109a051a02402010450d002011102a0b034002400240200a200c460d002003280254210a0c010b200a41016a220b200a490d28200a4101742204200b2004200b4b1b220b4100480d2802400240200a0d00200b1028210a0c010b2003280254200a200b102c210a0b200a450d052003200b3602582003200a3602540b2003200c41016a36025c200a200c6a200d41807f72200d41ff0071200d410776220b1b3a00000240200b450d002003280258210a200328025c210c200b210d0c010b0b4101211102402009450d002007210b0340024002402003280258200328025c220a460d002003280254210c0c010b200a41016a220c200a490d29200a410174220d200c200d200c4b1b220d4100480d2902400240200a0d00200d1028210c0c010b2003280254200a200d102c210c0b200c450d072003200d3602582003200c3602540b2003200a41016a36025c200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024002402003280258220b200328025c220a6b2007490d002003280254210b0c010b200a20076a220c200a490d28200b410174220d200c200d200c4b1b220c4100480d2802400240200b0d00200c1028210b0c010b2003280254200b200c102c210b0b200b450d072003200c3602582003200b3602540b2003200a20076a36025c200b200a6a20092007109a051a410021112012450d002009102a0b200820134104746a21062013210b0340024002402003280258200328025c220a460d002003280254210c0c010b200a41016a220c200a490d28200a410174220d200c200d200c4b1b220d4100480d2802400240200a0d00200d1028210c0c010b2003280254200a200d102c210c0b200c450d082003200d3602582003200c3602540b2003200a41016a36025c200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b2008210402402013450d00411021072008210403402004220b41106a2104200b280200220c4108460d01200b410c6a2802002102200b41086a280200210a200b280204210b024002400240024002400240024002400240200c0e080001020304050607000b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d31200c4101742205200d2005200d4b1b22054100480d3102400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d12200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41003a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d32200c4101742205200d2005200d4b1b22054100480d3202400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d14200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d32200b410174220d200c200d200c4b1b220d4100480d3202400240200b0d00200d1028210c0c010b2003280254200b200d102c210c0b200c450d152003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000c080b0b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d30200c4101742205200d2005200d4b1b22054100480d3002400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d14200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41013a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d31200c4101742205200d2005200d4b1b22054100480d3102400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d16200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d31200b410174220d200c200d200c4b1b220d4100480d3102400240200b0d00200d1028210c0c010b2003280254200b200d102c210c0b200c450d172003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000c070b0b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2f200c4101742205200d2005200d4b1b22054100480d2f02400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d16200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41023a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d30200c4101742205200d2005200d4b1b22054100480d3002400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d18200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d30200b410174220d200c200d200c4b1b220d4100480d3002400240200b0d00200d1028210c0c010b2003280254200b200d102c210c0b200c450d192003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000c060b0b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2e200c4101742205200d2005200d4b1b22054100480d2e02400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d18200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41033a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2f200c4101742205200d2005200d4b1b22054100480d2f02400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d1a200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d2f200b410174220d200c200d200c4b1b220d4100480d2f02400240200b0d00200d1028210c0c010b2003280254200b200d102c210c0b200c450d1b2003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000b20032002200341d0006a10eb0420032d0000220a411f460d0420032f000120032d000341107472210d0c280b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2d200c4101742205200d2005200d4b1b22054100480d2d02400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d1a200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41043a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2e200c4101742205200d2005200d4b1b22054100480d2e02400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d1c200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d2e200b410174220d200c200d200c4b1b220d4100480d2e02400240200b0d00200d1028210c0c010b2003280254200b200d102c210c0b200c450d1d2003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000b20032002200341d0006a10eb0420032d0000220a411f460d0320032f000120032d000341107472210d0c270b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2c200c4101742205200d2005200d4b1b22054100480d2c02400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d1c200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41053a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2d200c4101742205200d2005200d4b1b22054100480d2d02400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d1e200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d2d200b410174220d200c200d200c4b1b220d4100480d2d02400240200b0d00200d1028210c0c010b2003280254200b200d102c210c0b200c450d1f2003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000b20032002200341d0006a10eb0420032d0000220a411f460d0220032f000120032d000341107472210d0c260b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2b200c4101742205200d2005200d4b1b22054100480d2b02400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d1e200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41063a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2c200c4101742205200d2005200d4b1b22054100480d2c02400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d20200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d2c200b410174220d200c200d200c4b1b220d4100480d2c02400240200b0d00200d1028210c0c010b2003280254200b200d102c210c0b200c450d212003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000c020b0b024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2a200c4101742205200d2005200d4b1b22054100480d2a02400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d20200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a41073a00000340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2b200c4101742205200d2005200d4b1b22054100480d2b02400240200c0d0020051028210d0c010b2003280254200c2005102c210d0b200d450d22200320053602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200b41807f72200b41ff0071200b410776220c1b3a0000200c210b200c0d000b0340024002402003280258200328025c220b460d002003280254210c0c010b200b41016a220c200b490d2b200b410174220d200c200d200c4b1b220d4100480d2b02400240200b0d00200d1028210c0c010b2003280254200b200d102c210c0b200c450d232003200d3602582003200c360254200328025c210b0b2003200b41016a36025c200c200b6a200a41807f72200a41ff0071200a410776220b1b3a0000200b210a200b0d000b0b200741106a210720042006470d000b200621040b0240034020062004460d012004280200210a200441106a2104200a4108470d000b0b0240200f450d002008102a0b20032802582108200328025421022003280250220441086a210d200441046a2105200328025c2207210b0340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d28200a4101742206200c2006200c4b1b22064100480d2802400240200a0d0020061028210c0c010b2004280200200a2006102c210c0b200c450d212004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d27200b410174220a200c200a200c4b1b220a4100480d2702400240200b0d00200a1028210b0c010b2004280200200b200a102c210b0b200b450d212004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a20022007109a051a02402008450d002002102a0b410021104101210d2009450d222011450d222012450d222009102a0c220b200c41011037000b200441011037000b200c41011037000b200b41011037000b200d41011037000b200c41011037000b200d41011037000b200541011037000b200541011037000b200d41011037000b200541011037000b200541011037000b200d41011037000b200541011037000b200541011037000b200d41011037000b200541011037000b200541011037000b200d41011037000b200541011037000b200541011037000b200d41011037000b200541011037000b200541011037000b200d41011037000b200541011037000b200541011037000b200d41011037000b200541011037000b200541011037000b200d41011037000b200641011037000b200a41011037000b20032903082114200328020421042013410474210c02400340200c2007460d01200820076a210b200741106a2107200b2802004108470d000b0b0240200f450d002008102a0b02402003280258450d002003280254102a0b02402009450d002011450d002012450d002009102a0b200a411f470d17410021104101210d0b4101210b4101210c410121044101210641012105410121074101210241012112410121084101210941012113410121110c3a0b2001412c6a280200210e200141286a2802002115200141246a2802002111200141206a28020021162001411c6a2802002117200141186a2802002118200141146a28020021102001410c6a2902002114200141086a2802002119200141046a28020021120240024002400240024002400240024002400240024002400240024002400240024002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d14200a410174220c200b200c200b4b1b220c4100480d1402400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d012002200b360200200241046a200c360200200241086a280200210a0b4101210d200241086a200a41016a36020041002109200b200a6a41003a0000024041041028220f450d00200f41eec2b5ab063600000240024002400240024020120d00410021044100211a0c010b410121074100210a410021062014a72209210b034002400240200a2006460d00200a21082006210c0c010b200a41016a220c200a490d1a200a410174220d200c200d200c4b1b22084100480d1a02400240200a0d002008102821070c010b2007200a2008102c21070b02402007450d00200a210c2008210a0c010b200841011037000b2007200c6a200b41807f72200b41ff0071200b410776220d1b3a0000200c41016a2106200d210b200d0d000b02400240024002400240200820066b20094f0d00200620096a220a2006490d1d2008410174220b200a200b200a4b1b220a4100480d1d0240024020080d00200a102821070c010b20072008200a102c21070b2007450d01200a21080b200720066a20122009109a051a02402019450d002012102a0b41011028220d450d07200d41003a0000410221054101210a41012104200620096a2213210b03400240200a2004470d002005200a41016a2204200520044b1b22044100480d1e200d200a2004102c220d450d080b200d200a6a200b41807f72200b41ff0071200b41077622061b3a0000200541026a2105200a41016a210a2006210b20060d000b2004200a6b20134f0d03200a20136a220b200a490d1c20044101742205200b2005200b4b1b220b4100480d1c20040d01200b1028210d0c020b200a41011037000b200d2004200b102c210d0b200d450d02200b21040b200d200a6a20072013109a051a4101211a2009200c6a200a6a41016a21092008450d002007102a0b0240024002400240024020100d004101211b0c010b4100211b20034100360240200342013703382003410c6a2017360200200341086a201836020020032010360204200320144220883e0200200341d0006a2003200341386a10f104024020032d00502213411f460d0020032f005120032d0053411074722108200341d0006a41086a290300211420032802542116200328023c0d140c150b024020042009470d00200941016a220a2009490d1c2009410174220b200a200b200a4b1b22044100480d1c0240024020090d0020041028210d0c010b200d20092004102c210d0b200d450d040b200d20096a41013a0000200941016a210a200941017441026a210c20032802402206210b03400240200a2004470d00200a41016a2204200a490d1d200c2004200c20044b1b22044100480d1d02400240200a0d0020041028210d0c010b200d200a2004102c210d0b200d450d040b200d200a6a200b41807f72200b41ff0071200b41077622051b3a0000200c41026a210c200a41016a210a2005210b20050d000b2003280238210b02402004200a6b20064f0d00200a20066a220c200a490d1c20044101742205200c2005200c4b1b220c4100480d1c0240024020040d00200c1028210d0c010b200d2004200c102c210d0b200d450d02200c21040b200d200a6a200b2006109a051a0240200328023c450d00200b102a0b2006200a6a21094100211b0b024020110d00410021050c0e0b2003410036024020034201370338410121064100210c4100210a2016210b024003400240200a200c470d00200c41016a2205200c490d1d200c41017422072005200720054b1b22054100480d1d02400240200c0d002005102821060c010b2006200c2005102c21060b2006450d022003200536023c200320063602382005210c0b2003200a41016a22073602402006200a6a200b41807f72200b41ff0071200b41077622051b3a00002007210a2005210b20050d000b2011200e4104746a21080240200e0d00201121050c0c0b201121052016450d0b200841706a211c4100210a2011211d0340201d210502400340200541046a28020022130d01200a41016a210a2008200541106a2205470d000c0f0b0b200541106a211d200a41016a211e2016417f6a2116200541086a29020021142005280200211f200328023c210c2003280240210b02400240034002400240200b200c460d00200328023821060c010b200c41016a2206200c490d20200c41017422072006200720064b1b22074100480d2002400240200c0d002007102821060c010b2003280238200c2007102c21060b2006450d022003200736023c200320063602382007210c0b2003200b41016a22073602402006200b6a200a41807f72200a41ff0071200a41077622061b3a00002007210b2006210a20060d000b20032014370308200320133602042003201f360200200341d0006a2003200341386a10f10420032d00502213411f460d010c0c0b200741011037000b201c2005460d0b201e210a20160d000c0b0b0b200541011037000b200c41011037000b200441011037000b200441011037000b200b41011037000b200441011037000b410141011037000b410441011037000b200c41011037000b20032d0053211d20032f0051211f20032802542116200329035821140240200841706a2005460d00200541106a210503402005220a41106a21050240200a2802042206450d00200a28020821070240200a410c6a280200220a450d00200a410c6c210b2006210a03400240200a280200220c450d00200a41046a280200450d00200c102a0b200a410c6a210a200b41746a220b0d000b0b2007450d002006102a0b20052008470d000b0b02402015450d002011102a0b2013411f460d03201f201d41107472210841012105200328023c450d0b2003280238102a0c0b0b200541106a21050b20052008460d0003402005220a41106a21050240200a2802042206450d00200a28020821070240200a410c6a280200220a450d00200a410c6c210b2006210a03400240200a280200220c450d00200a41046a280200450d00200c102a0b200a410c6a210a200b41746a220b0d000b0b2007450d002006102a0b20052008470d000b0b2015450d002011102a0b024020042009470d00200941016a220a2009490d0e2009410174220b200a200b200a4b1b22044100480d0e0240024020090d0020041028210d0c010b200d20092004102c210d0b200d450d020b200d20096a41023a0000200941016a210a200941017441026a210c20032802402206210b03400240200a2004470d00200a41016a2204200a490d0f200c2004200c20044b1b22044100480d0f02400240200a0d0020041028210d0c010b200d200a2004102c210d0b200d450d040b200d200a6a200b41807f72200b41ff0071200b41077622051b3a0000200c41026a210c200a41016a210a2005210b20050d000b2003280238210b02402004200a6b20064f0d00200a20066a220c200a490d0e20044101742205200c2005200c4b1b220c4100480d0e0240024020040d00200c1028210d0c010b200d2004200c102c210d0b200d450d04200c21040b200d200a6a200b2006109a051a0240200328023c450d00200b102a0b2006200a6a2109410121050b201a201245720d032019450d032012102a0c030b200441011037000b200441011037000b200c41011037000b02402010450d00201b4101730d0002402017450d002017410c6c210b2010210a03400240200a280200220c450d00200a41046a280200450d00200c102a0b200a410c6a210a200b41746a220b0d000b0b2018450d002010102a0b2011452005720d030240200e450d002011200e4104746a21072011210603402006220541106a210602402005280204220a450d0002402005410c6a280200220b450d00200b410c6c210b03400240200a280200220c450d00200a41046a280200450d00200c102a0b200a410c6a210a200b41746a220b0d000b0b200541086a280200450d002005280204102a0b20062007470d000b0b2015450d032011102a0c030b2003280238102a0b410021050b0240201a201245720d002019450d002012102a0b02402010450d00201b4101730d0002402017450d002017410c6c210b2010210a03400240200a280200220c450d00200a41046a280200450d00200c102a0b200a410c6a210a200b41746a220b0d000b0b2018450d002010102a0b02402005201145720d000240200e450d002011200e4104746a21072011210603402006220541106a210602402005280204220a450d0002402005410c6a280200220b450d00200b410c6c210b03400240200a280200220c450d00200a41046a280200450d00200c102a0b200a410c6a210a200b41746a220b0d000b0b200541086a280200450d002005280204102a0b20062007470d000b0b2015450d002011102a0b2013411f460d002008410874201372210a02402004450d00200d102a0b2000200a360200200041086a2014370200200041046a2016360200200f102a0c010b200341146a2009360200200341106a20043602002003200d36020c20034284808080c0003702042003200f360200200341d0006a2003200210f504200320032900513703382003200341d0006a41086a29000037003f20032d0050220a411f460d012000200a3a000020002003290338370001200041086a200329003f3700000b410021084101210d4101210c4101210b4101210441012105410121064101210741012102410121090c1f0b410021114101210d4101210b4101210c4101210441012106410121054101210741012102410121124101210841012109410121130c380b2001410c6a2802002105200141086a2802002107200141046a28020021060240024002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d04200a410174220c200b200c200b4b1b220c4100480d0402400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d012002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a410b3a0000200341c4006a41003602002003420137023c2003200236023820062005411c6c6a21114100210a4100210b2005210c0240034002400240200a200b460d00200328023c210a0c010b200a41016a220d200a490d06200a4101742204200d2004200d4b1b220d4100480d0602400240200a0d00200d1028210a0c010b200328023c200a200d102c210a0b200a450d022003200d3602402003200a36023c0b2003200b41016a360244200a200b6a200c41807f72200c41ff0071200c410776220c1b3a00000240200c450d002003280240210a2003280244210b200c210c0c010b0b2003201136025c2003200636025820032007360254200320063602502005450d02034020032006220a411c6a2206360258200a2802102207450d03200a410c6a2802002102200a41086a2802002108200a2802042105200a41146a2902002114200a280200210b024002400240024003400240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d0b200a410174220d200c200d200c4b1b220d4100480d0b02400240200a0d00200d1028210c0c010b200328023c200a200d102c210c0b200c450d022003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024002400240024020050d00410121130c010b200320023602302003200836022c200320053602282003200341286a200341386a10e80420032d0000220a411f470d01410021130b2014a721092014422088a72204210b03400240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d0d200a410174220d200c200d200c4b1b220d4100480d0d02400240200a0d00200d1028210c0c010b200328023c200a200d102c210c0b200c450d052003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024002402003280240220b2003280244220a6b2004490d00200328023c210b0c010b200a20046a220c200a490d0c200b410174220a200c200a200c4b1b220a4100480d0c02400240200b0d00200a1028210b0c010b200328023c200b200a102c210b0b200b450d052003200a3602402003200b36023c2003280244210a0b2003200a20046a360244200b200a6a20072004109a051a02402009450d002007102a0b2005450d0520130d010c050b20032d0003411074210b20032f0001210c200329030821202003280204210d02402014a7450d002007102a0b200c200b72210b200341d0006a10f60402402003280240450d00200328023c102a0b2000200b3b00012000200a3a0000200041036a200b4110763a0000200041086a2020370000200041046a200d360000410021024101210d4101210c4101210b410121044101210541012106410121070c250b02402002450d002002410474210b2005210a03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102a200d280200210c0b200c102a0b200a41106a210a200b41706a220b0d000b0b2008450d032005102a0c030b200d41011037000b200d41011037000b200a41011037000b20062011470d000c030b0b200d41011037000b200c41011037000b200341d0006a10f60420032802402108200328023c21022003280238220441086a210d200441046a210520032802442207210b024002400340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d05200a4101742206200c2006200c4b1b22064100480d0502400240200a0d0020061028210c0c010b2004280200200a2006102c210c0b200c450d022004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d04200b410174220a200c200a200c4b1b220a4100480d0402400240200b0d00200a1028210b0c010b2004280200200b200a102c210b0b200b450d022004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a20022007109a051a02402008450d002002102a0b410021134101210d4101210b4101210c4101210441012106410121054101210741012102410121124101210841012109410121110c390b200641011037000b200a41011037000b2001410c6a2802002106200141086a2802002107200141046a280200210d0240024002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d14200a410174220c200b200c200b4b1b220c4100480d1402400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d012002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a410a3a0000200341246a41003602002003420137021c20032002360218200d200641186c6a210f4100210a4100210b2006210c0240034002400240200a200b460d00200328021c210a0c010b200a41016a2204200a490d16200a41017422052004200520044b1b22044100480d1602400240200a0d0020041028210a0c010b200328021c200a2004102c210a0b200a450d02200320043602202003200a36021c0b2003200b41016a360224200a200b6a200c41807f72200c41ff0071200c410776220c1b3a00000240200c450d002003280220210a2003280224210b200c210c0c010b0b2003200f3602342003200d3602302003200736022c2003200d3602282006450d0220034101722102200341026a2107024003402003200d41186a2213360230200d2802002208450d04200d41146a2802002111200d41106a2802002110200d28020c2109200d280208210c200d28020421124100210b200341003602442003420137023c2008200c4103746a21062003200341186a3602384100210a02400240034002400240200b200a460d00200328023c210b0c010b200b41016a220a200b490d1a200b410174220d200a200d200a4b1b220a4100480d1a02400240200b0d00200a1028210b0c010b200328023c200b200a102c210b0b200b450d022003200a3602402003200b36023c2003280244210a0b2003200a41016a360244200b200a6a200c41807f72200c41ff0071200c410776220c1b3a00000240200c450d002003280240210b2003280244210a200c210c0c010b0b024020062008470d00200821040c020b2008210a0340200a41086a2104200a2902002214422088a7220a41ff01714104460d02200a41187441187521052014a7210b02400240024003400240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d0d200a410174220d200c200d200c4b1b220d4100480d0d02400240200a0d00200d1028210c0c010b200328023c200a200d102c210c0b200c450d022003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024020032802402003280244220a460d00200328023c210b0c030b200a41016a220b200a490d0b200a410174220c200b200c200b4b1b220c4100480d0b02400240200a0d00200c1028210b0c010b200328023c200a200c102c210b0b200b450d012003200c3602402003200b36023c2003280244210a0c020b200d41011037000b200c41011037000b2003200a41016a360244200b200a6a2005417f73220a413f7141c00072200a2005417f4a1b3a00002004210a20042006470d000b200621040c010b200a41011037000b0240034020062004460d0120042d0004210a200441086a2104200a4104470d000b0b02402012450d002008102a0b20092011410474220a6a210c0240024002400240024020110d002009210a0c010b200a41706a210d2009210a0340200a2d0000210b2007200a41036a2d00003a00002003200a41016a2f00003b01000240200b41ac01470d00200a41106a210a0c020b200341cc006a41026a20072d000022043a0000200320032f010022053b014c200a41046a2802002106200a41086a2903002114200220053b0000200241026a20043a00002003200b3a00002003201437030820032006360204200341d0006a2003200341386a10f004024020032d00502204411f46220b450d00200d41706a210d200a41106a220a200c470d010c030b0b20032d0053210520032f0051210620032802542108200329035821140240200d450d00200a41106a210a034002400240200a2d0000220d4109460d00200d41ac01470d010c030b0240200a41046a280200220d28020441ffffffff0371450d00200d280200102a0b200d102a0b200a41106a220a200c470d000b0b02402010450d002009102a0b02402003280240450d00200328023c102a0b200b0d022006200541107472210a200341286a10f70402402003280220450d00200328021c102a0b2000200a3b0001200020043a0000200041036a200a4110763a0000200041086a2014370000200041046a2008360000410021074101210d4101210c4101210b4101210441012105410121060c230b200a200c460d00034002400240200a2d0000220b4109460d00200b41ac01470d010c030b0240200a41046a280200220b28020441ffffffff0371450d00200b280200102a0b200b102a0b200a41106a220a200c470d000b0b02402010450d002009102a0b20032802402111200328023c21092003280238210c20032802442208210b034002400240200c41086a2205280200200c410c6a2204280200220a460d00200c280204210d0c010b200a41016a220d200a490d09200a4101742206200d2006200d4b1b22064100480d0902400240200a0d0020061028210d0c010b200c280204200a2006102c210d0b200d450d03200c200d360204200520063602002004280200210a0b2004200a41016a360200200d200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024002402005280200220b2004280200220a6b2008490d00200c280204210b0c010b200a20086a220d200a490d08200b410174220a200d200a200d4b1b220a4100480d0802400240200b0d00200a1028210b0c010b200c280204200b200a102c210b0b200b450d04200c200b3602042005200a3602002004280200210a0b2004200a20086a360200200b200a6a20092008109a051a2011450d002009102a0b2013210d2013200f470d010c050b0b200641011037000b200a41011037000b200441011037000b200c41011037000b200341286a10f70420032802202108200328021c21022003280218220441086a210d200441046a210520032802242207210b024002400340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d04200a4101742206200c2006200c4b1b22064100480d0402400240200a0d0020061028210c0c010b2004280200200a2006102c210c0b200c450d022004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d03200b410174220a200c200a200c4b1b220a4100480d0302400240200b0d00200a1028210b0c010b2004280200200b200a102c210b0b200b450d022004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a20022007109a051a02402008450d002002102a0b410021094101210d4101210b4101210c410121044101210641012105410121074101210241012112410121080c280b200641011037000b200a41011037000b1031000b2001410c6a2802002105200141086a2802002106200141046a28020021080240024002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d12200a410174220c200b200c200b4b1b220c4100480d1202400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d012002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41093a0000200341c4006a41003602002003420137023c2003200236023820082005411c6c6a21124100210a4100210b2005210c0240034002400240200a200b460d00200328023c210a0c010b200a41016a220d200a490d14200a4101742204200d2004200d4b1b220d4100480d1402400240200a0d00200d1028210a0c010b200328023c200a200d102c210a0b200a450d022003200d3602402003200a36023c0b2003200b41016a360244200a200b6a200c41807f72200c41ff0071200c410776220c1b3a00000240200c450d002003280240210a2003280244210b200c210c0c010b0b2003201236025c2003200836025820032006360254200320083602502005450d02034020032008220a411c6a2208360258200a2802102206450d03200a410c6a2802002102200a41086a2802002109200a2802042107200a41146a2902002114200a280200210b024002400240024003400240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d19200a410174220d200c200d200c4b1b220d4100480d1902400240200a0d00200d1028210c0c010b200328023c200a200d102c210c0b200c450d022003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024002400240024020070d00410121110c010b200320023602302003200936022c200320073602282003200341286a200341386a10e80420032d0000220a411f470d01410021110b20062014422088a7220b4102746a21052014a7211303400240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d1b200a410174220d200c200d200c4b1b220d4100480d1b02400240200a0d00200d1028210c0c010b200328023c200a200d102c210c0b200c450d052003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024020052006460d002006210403402004280200210b03400240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d1d200a410174220d200c200d200c4b1b220d4100480d1d02400240200a0d00200d1028210c0c010b200328023c200a200d102c210c0b200c450d082003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b200441046a22042005470d000b0b02402013450d002006102a0b2007450d0520110d010c050b20032d0003411074210b20032f0001210c200329030821202003280204210d02402014a7450d002006102a0b200c200b72210b200341d0006a10f80402402003280240450d00200328023c102a0b2000200b3b00012000200a3a0000200041036a200b4110763a0000200041086a2020370000200041046a200d360000410021064101210d4101210c4101210b41012104410121050c200b02402002450d002002410474210b2007210a03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102a200d280200210c0b200c102a0b200a41106a210a200b41706a220b0d000b0b2009450d032007102a0c030b200d41011037000b200d41011037000b200d41011037000b20082012470d000c030b0b200d41011037000b200c41011037000b200341d0006a10f80420032802402108200328023c21022003280238220441086a210d200441046a210520032802442207210b024002400340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d13200a4101742206200c2006200c4b1b22064100480d1302400240200a0d0020061028210c0c010b2004280200200a2006102c210c0b200c450d022004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d12200b410174220a200c200a200c4b1b220a4100480d1202400240200b0d00200a1028210b0c010b2004280200200b200a102c210b0b200b450d022004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a20022007109a051a02402008450d002002102a0b410021084101210d4101210b4101210c4101210441012106410121054101210741012102410121120c250b200641011037000b200a41011037000b200141046a280200210a024002400240024002400240200241046a280200200241086a280200220b460d002002280200210c0c010b200b41016a220c200b490d13200b410174220d200c200d200c4b1b220d4100480d1302400240200b0d00200d1028210c0c010b2002280200200b200d102c210c0b200c450d012002200c360200200241046a200d360200200241086a280200210b0b200241086a200b41016a360200200c200b6a410c3a00004100210c4100210b410021064101210503400240200b2006470d00200c200b41016a220d200c200d4b1b22064100480d1402400240200c0d002006102821050c010b2005200b2006102c21050b2005450d030b2005200b6a200a41807f72200a41ff0071200a410776220d1b3a0000200c41026a210c200b41016a210b200d210a200d0d000b200b417f6a2109200241086a2104200241046a2107200b210c03400240024020072802002004280200220a460d002002280200210d0c010b200a41016a220d200a490d14200a4101742208200d2008200d4b1b22084100480d1402400240200a0d0020081028210d0c010b2002280200200a2008102c210d0b200d450d042002200d360200200720083602002004280200210a0b2004200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200241046a280200220c200241086a280200220a6b20094d0d002002280200210c0c010b200a200b6a220d200a490d13200c410174220a200d200a200d4b1b220a4100480d1302400240200c0d00200a1028210c0c010b2002280200200c200a102c210c0b200c450d042002200c360200200241046a200a360200200241086a280200210a0b200241086a200a200b6a360200200c200a6a2005200b109a051a4101210d2006450d052005102a0c050b200d41011037000b200641011037000b200841011037000b200a41011037000b200141046a280200210a02400240200241046a280200200241086a280200220b460d002002280200210c0c010b200b41016a220c200b490d0e200b410174220d200c200d200c4b1b220d4100480d0e02400240200b0d00200d1028210c0c010b2002280200200b200d102c210c0b200c450d022002200c360200200241046a200d360200200241086a280200210b0b200241086a200b41016a360200200c200b6a41083a00004100210c4100210b410021064101210503400240200b2006470d00200c200b41016a220d200c200d4b1b22064100480d0f02400240200c0d002006102821050c010b2005200b2006102c21050b2005450d040b2005200b6a200a41807f72200a41ff0071200a410776220d1b3a0000200c41026a210c200b41016a210b200d210a200d0d000b200b417f6a2109200241086a2104200241046a2107200b210c03400240024020072802002004280200220a460d002002280200210d0c010b200a41016a220d200a490d0f200a4101742208200d2008200d4b1b22084100480d0f02400240200a0d0020081028210d0c010b2002280200200a2008102c210d0b200d450d052002200d360200200720083602002004280200210a0b2004200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200241046a280200220c200241086a280200220a6b20094d0d002002280200210c0c010b200a200b6a220d200a490d0e200c410174220a200d200a200d4b1b220a4100480d0e02400240200c0d00200a1028210c0c010b2002280200200c200a102c210c0b200c450d052002200c360200200241046a200a360200200241086a280200210a0b200241086a200a200b6a360200200c200a6a2005200b109a051a4101210d2006450d002005102a0b4101210b4101210c0c190b200d41011037000b200641011037000b200841011037000b200a41011037000b2001410c6a2802002106200141086a280200210f200141046a28020021100240024002400240024002400240024002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d10200a410174220c200b200c200b4b1b220c4100480d1002400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d012002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41073a00002010200641146c6a2112410021044100210a4100210c4101210b2006210d03400240200a200c470d002004200a41016a220c2004200c4b1b220c4100480d110240024020040d00200c1028210b0c010b200b200a200c102c210b0b200b450d030b200b200a6a200d41807f72200d41ff0071200d41077622051b3a0000200441026a2104200a41016a210a2005210d20050d000b024020060d00201021080c070b201021040340200441146a2108200428020c22134104460d072004280204211120042802002109200a4101742105200441106a280200210d20042802082207210403400240200a200c470d00200a41016a220c200a490d122005200c2005200c4b1b220c4100480d1202400240200a0d00200c1028210b0c010b200b200a200c102c210b0b200b450d050b200b200a6a200441807f72200441ff0071200441077622061b3a0000200541026a2105200a41016a210a2006210420060d000b02400240200c200a6b2007490d00200c21040c010b200a20076a2204200a490d11200c41017422052004200520044b1b22044100480d1102400240200c0d0020041028210b0c010b200b200c2004102c210b0b200b450d050b200b200a6a20092007109a051a200720046b200a6a210c02402011450d002009102a0b02400240200c450d002004210c0c010b200441016a220c2004490d1120044101742205200c2005200c4b1b220c4100480d110240024020040d00200c1028210b0c010b200b2004200c102c210b0b200b450d060b200b20076a200a6a20133a00002007200a6a41016a210a03400240200a200c470d00200a41016a220c200a490d12200a4101742204200c2004200c4b1b220c4100480d1202400240200a0d00200c1028210b0c010b200b200a200c102c210b0b200b450d080b200b200a6a200d41807f72200d41ff0071200d41077622041b3a0000200a41016a210a2004210d20040d000b2008210420082012470d000c080b0b200c41011037000b200c41011037000b200c41011037000b200441011037000b200c41011037000b200c41011037000b20082012460d0003402008410c6a2802004104460d010240200841046a280200450d002008280200102a0b200841146a22082012470d000b0b0240200f450d002010102a0b200241086a2106200241046a2107200a210402400240024003400240024020072802002006280200220d460d00200228020021050c010b200d41016a2205200d490d0c200d41017422082005200820054b1b22084100480d0c02400240200d0d002008102821050c010b2002280200200d2008102c21050b2005450d0220022005360200200720083602002006280200210d0b2006200d41016a3602002005200d6a200441807f72200441ff00712004410776220d1b3a0000200d2104200d0d000b02400240200241046a2802002204200241086a280200220d6b200a490d00200228020021040c010b200d200a6a2205200d490d0b2004410174220d2005200d20054b1b220d4100480d0b0240024020040d00200d102821040c010b20022802002004200d102c21040b2004450d0220022004360200200241046a200d360200200241086a280200210d0b200241086a200d200a6a3602002004200d6a200b200a109a051a410021124101210d200c450d02200b102a0c020b200841011037000b200d41011037000b4101210b4101210c41012104410121064101210541012107410121020c1a0b2001410c6a2802002105200141086a2802002112200141046a2802002108024002400240024002400240024002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d0e200a410174220c200b200c200b4b1b220c4100480d0e02400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d012002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41063a0000200341dc006a41003602002003420137025420032002360250200820054104746a21134100210a4100210b2005210c034002400240200a200b460d002003280254210a0c010b200a41016a220d200a490d0f200a4101742204200d2004200d4b1b220d4100480d0f02400240200a0d00200d1028210a0c010b2003280254200a200d102c210a0b200a450d032003200d3602582003200a3602540b2003200b41016a36025c200a200b6a200c41807f72200c41ff0071200c410776220c1b3a00000240200c450d002003280258210a200328025c210b200c210c0c010b0b200821042005450d05200541047421114100210c034002402008200c6a220b410d6a2d000022044102470d00200b41106a21040c070b200b2802002105200b41086a2802002106200b41046a2802002107200b410c6a2d00002102024002402003280258200328025c220a460d002003280254210d0c010b200a41016a220d200a490d0f200a4101742209200d2009200d4b1b22094100480d0f02400240200a0d0020091028210d0c010b2003280254200a2009102c210d0b200d450d04200320093602582003200d360254200328025c210a0b2003200a41016a36025c200d200a6a200241ff00733a0000024002402003280258200328025c220a460d002003280254210d0c010b200a41016a220d200a490d0f200a4101742202200d2002200d4b1b22024100480d0f02400240200a0d0020021028210d0c010b2003280254200a2002102c210d0b200d450d05200320023602582003200d360254200328025c210a0b2003200a41016a36025c200d200a6a20043a0000200320063602402003200736023c200320053602382003200341386a200341d0006a10e80420032d00002205411f470d052011200c41106a220c470d000c070b0b200c41011037000b200d41011037000b200941011037000b200241011037000b20032d0003210220032f0001210920032802042111200329030821140240200b41106a2013460d00200b41106a210403402004410d6a2d00004102460d01200428020421072004280200210602402004280208220a450d00200a410474210b2006210a03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102a200d280200210c0b200c102a0b200a41106a210a200b41706a220b0d000b0b200441106a210402402007450d002006102a0b20042013470d000b0b2002411074210a02402012450d002008102a0b2009200a72210a02402003280258450d002003280254102a0b2000200a3b0001200020053a0000200041036a200a4110763a0000200041086a2014370000200041046a2011360000410021054101210d4101210c4101210b410121040c0f0b20042013460d0003402004410d6a2d00004102460d01200428020421062004280200210502402004280208220a450d00200a410474210b2005210a03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102a200d280200210c0b200c102a0b200a41106a210a200b41706a220b0d000b0b200441106a210402402006450d002005102a0b20042013470d000b0b02402012450d002008102a0b20032802582108200328025421022003280250220441086a210d200441046a2105200328025c2207210b024002400340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d0a200a4101742206200c2006200c4b1b22064100480d0a02400240200a0d0020061028210c0c010b2004280200200a2006102c210c0b200c450d022004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d09200b410174220a200c200a200c4b1b220a4100480d0902400240200b0d00200a1028210b0c010b2004280200200b200a102c210b0b200b450d022004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a20022007109a051a02402008450d002002102a0b410021024101210d4101210b4101210c410121044101210641012105410121070c1a0b200641011037000b200a41011037000b2001410c6a2802002107200141086a2802002108200141046a280200210602400240024002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d09200a410174220c200b200c200b4b1b220c4100480d0902400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d012002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41053a0000200341d0006a410c6a4100360200200342013702542003200236025020062007410c6c6a2102410121044100210c4100210a2007210b03400240200a200c470d00200c41016a220d200c490d0a200c4101742205200d2005200d4b1b220d4100480d0a02400240200c0d00200d102821040c010b2004200c200d102c21040b2004450d04200d210c0b2004200a6a200b41807f72200b41ff0071200b410776220d1b3a0000200a41016a210a200d210b200d0d000b2003200c3602582003200a36025c200320043602542006210a2007450d012007410c6c210d4100210b0340024002402006200b6a220a41046a280200220c4102460d002003200a280200200c200a41086a280200200341d0006a10f20420032d00002204411f460d0120032f000120032d00034110747221052003290308211420032802042107200a410c6a210c200d200b6b41746a210a02400340200a450d01200a41746a210a200c280204210b200c410c6a210c200b4102470d000b0b02402008450d002006102a0b02402003280258450d002003280254102a0b200020053b0001200020043a0000200041036a20054110763a0000200041086a2014370000200041046a2007360000410021044101210d4101210c4101210b0c110b200a410c6a210a0c030b200d200b410c6a220b470d000b2002210a0c010b200c41011037000b200a410020076b410c6c6a210b024003402006200b460d01200b410c6a210b200a280204210c200a410c6a210a200c4102470d000b0b02402008450d002006102a0b20032802582108200328025421022003280250220441086a210d200441046a2105200328025c2207210b024002400340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d0a200a4101742206200c2006200c4b1b22064100480d0a02400240200a0d0020061028210c0c010b2004280200200a2006102c210c0b200c450d022004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d09200b410174220a200c200a200c4b1b220a4100480d0902400240200b0d00200a1028210b0c010b2004280200200b200a102c210b0b200b450d022004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a20022007109a051a02402008450d002002102a0b410021074101210d4101210b4101210c4101210441012106410121050c190b200641011037000b200a41011037000b200d41011037000b2001410c6a2802002109200141086a2802002113200141046a2802002106024002400240024002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d09200a410174220c200b200c200b4b1b220c4100480d0902400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d012002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41043a0000200341d0006a410c6a4100360200200342013702542003200236025020062009410c6c6a2111410121044100210c4100210a2009210b03400240200a200c470d00200c41016a220d200c490d0a200c4101742205200d2005200d4b1b220d4100480d0a02400240200c0d00200d102821040c010b2004200c200d102c21040b2004450d05200d210c0b2004200a6a200b41807f72200b41ff0071200b410776220d1b3a0000200a41016a210a200d210b200d0d000b2003200c3602582003200a36025c200320043602542006210a2009450d022009410c6c21084100210c03400240024002402006200c6a220b41046a28020022044102460d00200b2802002105200b41086a28020021072003280258200328025c220a460d012003280254210d0c020b200b410c6a210a0c050b200a41016a220d200a490d0a200a4101742202200d2002200d4b1b22024100480d0a02400240200a0d0020021028210d0c010b2003280254200a2002102c210d0b200d450d03200320023602582003200d3602540b2003200a41016a36025c200d200a6a41f0003a00002003200520042007200341d0006a10f204024020032d0000220d411f460d0020032f000120032d00034110747221042003290308211420032802042105200b410c6a210b2008200c6b41746a210a02400340200a450d01200a41746a210a200b280204210c200b410c6a210b200c4102470d000b0b02402013450d002006102a0b02402003280258450d002003280254102a0b200020043b00012000200d3a0000200041036a20044110763a0000200041086a2014370000200041046a20053600004100210b4101210d4101210c0c0f0b2008200c410c6a220c470d000b2011210a0c020b200c41011037000b200241011037000b200a410020096b410c6c6a210b024003402006200b460d01200b410c6a210b200a280204210c200a410c6a210a200c4102470d000b0b02402013450d002006102a0b20032802582108200328025421022003280250220441086a210d200441046a2105200328025c2207210b024002400340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d09200a4101742206200c2006200c4b1b22064100480d0902400240200a0d0020061028210c0c010b2004280200200a2006102c210c0b200c450d022004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d08200b410174220a200c200a200c4b1b220a4100480d0802400240200b0d00200a1028210b0c010b2004280200200b200a102c210b0b200b450d022004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a20022007109a051a02402008450d002002102a0b410021054101210d4101210b4101210c41012104410121060c170b200641011037000b200a41011037000b200d41011037000b2001410c6a2802002106200141086a2802002109200141046a280200210802400240024002400240024002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d0a200a410174220c200b200c200b4b1b220c4100480d0a02400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d012002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41033a0000200820064102746a21074100210c4100210a41002105410121042006210b03400240200a2005470d00200c200a41016a220d200c200d4b1b22054100480d0b02400240200c0d002005102821040c010b2004200a2005102c21040b2004450d030b2004200a6a200b41807f72200b41ff0071200b410776220d1b3a0000200c41026a210c200a41016a210a200d210b200d0d000b02402006450d00200821060340200a410174210c2006280200210b03400240200a2005470d00200a41016a220d200a490d0d200c200d200c200d4b1b22054100480d0d02400240200a0d002005102821040c010b2004200a2005102c21040b2004450d060b2004200a6a200b41807f72200b41ff0071200b410776220d1b3a0000200c41026a210c200a41016a210a200d210b200d0d000b200641046a22062007470d000b0b02402009450d002008102a0b200241086a2106200241046a2107200a210c03400240024020072802002006280200220b460d002002280200210d0c010b200b41016a220d200b490d0b200b4101742208200d2008200d4b1b22084100480d0b02400240200b0d0020081028210d0c010b2002280200200b2008102c210d0b200d450d052002200d360200200720083602002006280200210b0b2006200b41016a360200200d200b6a200c41807f72200c41ff0071200c410776220b1b3a0000200b210c200b0d000b02400240200241046a280200220c200241086a280200220b6b200a490d002002280200210c0c010b200b200a6a220d200b490d0a200c410174220b200d200b200d4b1b220b4100480d0a02400240200c0d00200b1028210c0c010b2002280200200c200b102c210c0b200c450d052002200c360200200241046a200b360200200241086a280200210b0b200241086a200b200a6a360200200c200b6a2004200a109a051a410021064101210d2005450d052004102a0c050b200c41011037000b200541011037000b200541011037000b200841011037000b200b41011037000b4101210b4101210c410121040c120b2001410c6a2802002106200141086a2802002117200141046a280200210e0240024002400240024002400240024002400240024002400240024002400240024002400240200241046a280200200241086a280200220a460d002002280200210b0c010b200a41016a220b200a490d14200a410174220c200b200c200b4b1b220c4100480d1402400240200a0d00200c1028210b0c010b2002280200200a200c102c210b0b200b450d012002200b360200200241046a200c360200200241086a280200210a0b200241086a200a41016a360200200b200a6a41023a0000200341dc006a41003602002003420137025420032002360250200e200641286c6a21094100210a4100210b2006210c034002400240200a200b460d002003280254210a0c010b200a41016a220d200a490d15200a4101742204200d2004200d4b1b220d4100480d1502400240200a0d00200d1028210a0c010b2003280254200a200d102c210a0b200a450d032003200d3602582003200a3602540b2003200b41016a36025c200a200b6a200c41807f72200c41ff0071200c410776220c1b3a00000240200c450d002003280258210a200328025c210b200c210c0c010b0b200e21052006450d0f200e210503402005220a41286a2105200a2d001822134104460d10200a41206a2900002114200a411c6a2800002104200a411a6a2d0000210f200a41196a2c00002110200a41146a2802002106200a41106a2802002111200a28020c2102200a2802042112200a2802002108200a2802082207210b0340024002402003280258200328025c220a460d002003280254210c0c010b200a41016a220c200a490d16200a410174220d200c200d200c4b1b220d4100480d1602400240200a0d00200d1028210c0c010b2003280254200a200d102c210c0b200c450d052003200d3602582003200c360254200328025c210a0b2003200a41016a36025c200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024002402003280258220b200328025c220a6b2007490d002003280254210b0c010b200a20076a220c200a490d15200b410174220a200c200a200c4b1b220a4100480d1502400240200b0d00200a1028210b0c010b2003280254200b200a102c210b0b200b450d052003200a3602582003200b360254200328025c210a0b2003200a20076a36025c200b200a6a20082007109a051a02402012450d002008102a0b2006210b0340024002402003280258200328025c220a460d002003280254210c0c010b200a41016a220c200a490d16200a410174220d200c200d200c4b1b220d4100480d1602400240200a0d00200d1028210c0c010b2003280254200a200d102c210c0b200c450d072003200d3602582003200c360254200328025c210a0b2003200a41016a36025c200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b024002402003280258220b200328025c220a6b2006490d002003280254210b0c010b200a20066a220c200a490d15200b410174220a200c200a200c4b1b220a4100480d1502400240200b0d00200a1028210b0c010b2003280254200b200a102c210b0b200b450d072003200a3602582003200b360254200328025c210a0b2003200a20066a36025c200b200a6a20022006109a051a02402011450d002002102a0b0240024002400240024020130e0400010203000b024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d19200a410174220c200b200c200b4b1b220c4100480d1902400240200a0d00200c1028210b0c010b2003280254200a200c102c210b0b200b450d0c2003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a41003a00000340024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d1a200a410174220c200b200c200b4b1b220c4100480d1a02400240200a0d00200c1028210b0c010b2003280254200a200c102c210b0b200b450d0e2003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a200441807f72200441ff00712004410776220a1b3a0000200a2104200a0d000c040b0b024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d18200a410174220c200b200c200b4b1b220c4100480d1802400240200a0d00200c1028210b0c010b2003280254200a200c102c210b0b200b450d0d2003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a41013a0000024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d18200a410174220c200b200c200b4b1b220c4100480d1802400240200a0d00200c1028210b0c010b2003280254200a200c102c210b0b200b450d0e2003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a41f0003a0000200320042014a72014422088a7200341d0006a10f20420032d0000220a411f460d0220032f000120032d000341107472210d0c120b024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d17200a410174220c200b200c200b4b1b220c4100480d1702400240200a0d00200c1028210b0c010b2003280254200a200c102c210b0b200b450d0e2003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a41023a0000200320042014a72014422088a7200341d0006a10f20420032d0000220a411f460d0120032f000120032d000341107472210d0c110b024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d16200a410174220c200b200c200b4b1b220c4100480d1602400240200a0d00200c1028210b0c010b2003280254200a200c102c210b0b200b450d0e2003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a41033a0000024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d16200a410174220c200b200c200b4b1b220c4100480d1602400240200a0d00200c1028210b0c010b2003280254200a200c102c210b0b200b450d0f2003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a2010417f73220a413f7141c00072200a2010417f4a1b3a0000024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d16200a410174220c200b200c200b4b1b220c4100480d1602400240200a0d00200c1028210b0c010b2003280254200a200c102c210b0b200b450d102003200c3602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a200f41ff01714100473a00000b20052009470d000c110b0b200c41011037000b200d41011037000b200d41011037000b200a41011037000b200d41011037000b200a41011037000b200c41011037000b200c41011037000b200c41011037000b200c41011037000b200c41011037000b200c41011037000b200c41011037000b200c41011037000b2003290308211420032802042104024020052009460d000340200541186a2d00004104460d01200541106a280200210b2005410c6a280200210c0240200541046a280200450d002005280200102a0b0240200b450d00200c102a0b200541286a22052009470d000b0b02402017450d00200e102a0b02402003280258450d002003280254102a0b2000200d3b00012000200a3a0000200041036a200d4110763a0000200041086a2014370000200041046a20043600004100210c4101210d0c080b20052009460d000340200541186a2d00004104460d01200541106a280200210a2005410c6a280200210b0240200541046a280200450d002005280200102a0b0240200a450d00200b102a0b200541286a22052009470d000b0b02402017450d00200e102a0b20032802582108200328025421022003280250220441086a210d200441046a2105200328025c2207210b024002400340024002402005280200200d280200220a460d002004280200210c0c010b200a41016a220c200a490d06200a4101742206200c2006200c4b1b22064100480d0602400240200a0d0020061028210c0c010b2004280200200a2006102c210c0b200c450d022004200c36020020052006360200200d280200210a0b200d200a41016a360200200c200a6a200b41807f72200b41ff0071200b410776220a1b3a0000200a210b200a0d000b02400240200441046a280200220b200441086a280200220a6b2007490d002004280200210b0c010b200a20076a220c200a490d05200b410174220a200c200a200c4b1b220a4100480d0502400240200b0d00200a1028210b0c010b2004280200200b200a102c210b0b200b450d022004200b360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200b200a6a20022007109a051a02402008450d002002102a0b410021044101210d4101210b4101210c0c120b200641011037000b200a41011037000b20082010460d0003402008410d6a2d00004105460d010240200841046a280200450d002008280200102a0b200841106a22082010470d000b0b0240200e450d00200f102a0b200241086a2106200241046a2107200b210c0240024003400240024020072802002006280200220a460d002002280200210d0c010b200a41016a220d200a490d04200a4101742208200d2008200d4b1b22084100480d0402400240200a0d0020081028210d0c010b2002280200200a2008102c210d0b200d450d022002200d360200200720083602002006280200210a0b2006200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200241046a280200220c200241086a280200220a6b200b490d002002280200210c0c010b200a200b6a220d200a490d03200c410174220a200d200a200d4b1b220a4100480d0302400240200c0d00200a1028210c0c010b2002280200200c200a102c210c0b200c450d022002200c360200200241046a200a360200200241086a280200210a0b200241086a200a200b6a360200200c200a6a2004200b109a051a4100210c4101210d2005450d032004102a0c030b200841011037000b200a41011037000b1031000b4101210b0c0b0b2000200d3b00012000200a3a0000200041036a200d4110763a0000200041086a2014370000200041046a2004360000410021094101210d4101210c4101210b4101210441012105410121064101210741012102410121080c080b4101210c200241086a200a41016a3602004100210d200b200a6a41003a0000200341146a2004360200200341106a20053602002003200636020c200320073602082003200836020420032009360200200341d0006a2003200210f504200320032900513703382003200341d0006a41086a29000037003f20032d0050220a411f460d082000200a3a000020002003290338370001200041086a200329003f3700000b4101210b0b410121040b410121050b410121060b410121070b410121020b41012108410121090b20012d0000220a410f4b0d18200a0e100a0b0c0d0e0f101112181318141516170a0b4101210b4100210d4101210c0b410121040b410121060b410121050b410121070b410121020b410121120b410121080b410121090b41012113410121110c0f0b200141086a280200450d10200141046a280200102a0c100b200d450d0f0240200141086a280200450d00200141046a280200102a0b200141146a280200450d0f200141106a280200102a0c0f0b02402001410c6a280200220b450d00200141046a280200210a200b410474210b03400240200a41046a280200450d00200a280200102a0b200a41106a210a200b41706a220b0d000b0b200141086a280200450d0e2001280204102a0c0e0b200c450d0d02402001410c6a280200220b450d00200141046a280200210a200b41286c210b03400240200a41046a280200450d00200a280200102a0b0240200a41106a280200450d00200a410c6a280200102a0b200a41286a210a200b41586a220b0d000b0b200141086a280200450d0d2001280204102a0c0d0b200141086a280200450d0c200141046a280200102a0c0c0b200b450d0b200141086a280200450d0b200141046a280200102a0c0b0b2004450d0a200141086a280200450d0a200141046a280200102a0c0a0b2005450d0902402001410c6a280200220a450d00200141046a2802002204200a4104746a2105034002402004280208220b450d002004280200210a200b410474210b03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102a200d280200210c0b200c102a0b200a41106a210a200b41706a220b0d000b0b200441106a210a0240200441046a280200450d002004280200102a0b200a2104200a2005470d000b0b200141086a280200450d092001280204102a0c090b02402001410c6a280200220b450d00200141046a280200210a200b41146c210b03400240200a41046a280200450d00200a280200102a0b200a41146a210a200b416c6a220b0d000b0b200141086a280200450d082001280204102a0c080b2006450d0702402001410c6a280200220a450d00200141046a2802002204200a411c6c6a2105034002402004280204220a450d0002402004410c6a280200220b450d00200b410474210b03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102a200d280200210c0b200c102a0b200a41106a210a200b41706a220b0d000b0b200441086a280200450d002004280204102a0b2004411c6a210a0240200441146a280200450d002004280210102a0b200a2104200a2005470d000b0b200141086a280200450d072001280204102a0c070b2007450d0602402001410c6a280200220a450d00200141046a2802002204200a41186c6a210503400240200441046a280200450d002004280200102a0b0240200441146a280200220b450d00200428020c210a200b410474210b03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102a200d280200210c0b200c102a0b200a41106a210a200b41706a220b0d000b0b200441186a210a0240200441106a280200450d00200428020c102a0b200a2104200a2005470d000b0b200141086a280200450d062001280204102a0c060b2002450d05200141046a220a10f904200141086a280200450d05200a280200102a0c050b2008450d040240200141046a280200220a450d00200141086a280200450d00200a102a0b0240200141146a280200220a450d0002402001411c6a280200220b450d00200b410c6c210b03400240200a280200220c450d00200a41046a280200450d00200c102a0b200a410c6a210a200b41746a220b0d000b0b200141186a280200450d002001280214102a0b200141246a2802002204450d0402402001412c6a280200220a450d002004200a4104746a210503402004220d41106a21040240200d280204220a450d000240200d410c6a280200220b450d00200b410c6c210b03400240200a280200220c450d00200a41046a280200450d00200c102a0b200a410c6a210a200b41746a220b0d000b0b200d41086a280200450d00200d280204102a0b20042005470d000b0b200141286a280200450d042001280224102a0c040b2009450d030240200141086a280200450d00200141046a280200102a0b0240200141146a280200220a450d00200141186a280200450d00200a102a0b200141246a280200450d03200141206a280200102a0c030b20011082040c020b410121100b2000411f3a0000024020012d0000220a410f4b0d0002400240024002400240024002400240024002400240024002400240200a0e100001020304050607080e090e0a0b0c0d000b200b450d0e200141086a280200450d0e200141046a280200102a0c0e0b200d450d0d0240200141086a280200450d00200141046a280200102a0b200141146a280200450d0d200141106a280200102a0c0d0b200c450d0c02402001410c6a280200220b450d00200141046a280200210a200b410474210b03400240200a41046a280200450d00200a280200102a0b200a41106a210a200b41706a220b0d000b0b200141086a280200450d0c2001280204102a0c0c0b2004450d0b02402001410c6a280200220b450d00200141046a280200210a200b41286c210b03400240200a41046a280200450d00200a280200102a0b0240200a41106a280200450d00200a410c6a280200102a0b200a41286a210a200b41586a220b0d000b0b200141086a280200450d0b2001280204102a0c0b0b2006450d0a200141086a280200450d0a200141046a280200102a0c0a0b2005450d09200141086a280200450d09200141046a280200102a0c090b2007450d08200141086a280200450d08200141046a280200102a0c080b2002450d0702402001410c6a280200220a450d00200141046a2802002204200a4104746a2105034002402004280208220b450d002004280200210a200b410474210b03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102a200d280200210c0b200c102a0b200a41106a210a200b41706a220b0d000b0b200441106a210a0240200441046a280200450d002004280200102a0b200a2104200a2005470d000b0b200141086a280200450d072001280204102a0c070b2012450d0602402001410c6a280200220b450d00200141046a280200210a200b41146c210b03400240200a41046a280200450d00200a280200102a0b200a41146a210a200b416c6a220b0d000b0b200141086a280200450d062001280204102a0c060b2008450d0502402001410c6a280200220a450d00200141046a2802002204200a411c6c6a2105034002402004280204220a450d0002402004410c6a280200220b450d00200b410474210b03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102a200d280200210c0b200c102a0b200a41106a210a200b41706a220b0d000b0b200441086a280200450d002004280204102a0b2004411c6a210a0240200441146a280200450d002004280210102a0b200a2104200a2005470d000b0b200141086a280200450d052001280204102a0c050b2009450d0402402001410c6a280200220a450d00200141046a2802002204200a41186c6a210503400240200441046a280200450d002004280200102a0b0240200441146a280200220b450d00200428020c210a200b410474210b03400240200a2d00004109470d000240200a41046a220d280200220c28020441ffffffff0371450d00200c280200102a200d280200210c0b200c102a0b200a41106a210a200b41706a220b0d000b0b200441186a210a0240200441106a280200450d00200428020c102a0b200a2104200a2005470d000b0b200141086a280200450d042001280204102a0c040b2013450d03200141046a220a10f904200141086a280200450d03200a280200102a0c030b2011450d020240200141046a280200220a450d00200141086a280200450d00200a102a0b0240200141146a280200220a450d0002402001411c6a280200220b450d00200b410c6c210b03400240200a280200220c450d00200a41046a280200450d00200c102a0b200a410c6a210a200b41746a220b0d000b0b200141186a280200450d002001280214102a0b200141246a2802002204450d0202402001412c6a280200220a450d002004200a4104746a210503402004220d41106a21040240200d280204220a450d000240200d410c6a280200220b450d00200b410c6c210b03400240200a280200220c450d00200a41046a280200450d00200c102a0b200a410c6a210a200b41746a220b0d000b0b200d41086a280200450d00200d280204102a0b20042005470d000b0b200141286a280200450d022001280224102a0c020b2010450d010240200141086a280200450d00200141046a280200102a0b0240200141146a280200220a450d00200141186a280200450d00200a102a0b200141246a280200450d01200141206a280200102a0c010b20011082040b200341e0006a24000bb309010a7f230041b0016b2202240041002103024020012802102204450d0020012802082205200128020c460d00200128021421062001200541246a360208200241c4006a41026a2207200541036a2d00003a0000200241286a41086a2208200541106a290000370300200241286a41106a2209200541186a290000370300200241286a41186a220a200541206a280000360200200220052f00013b01442002200541086a29000037032820052d0000220b4102460d00200541046a280000210520012004417f6a360210200241086a41026a20072d00003a000020024190016a41086a200829030037030020024190016a41106a200929030037030020024190016a41186a200a280200360200200220022f01443b01082002200229032837039001024002400240200b4101460d002002418c016a41026a200241086a41026a2d00003a0000200241f0006a41086a20024190016a41086a290300370300200241f0006a41106a20024190016a41106a290300370300200241f0006a41186a20024190016a41186a2d00003a0000200220022f01083b018c0120022002290390013703700c010b200241c8006a200541067610fe01200228024821040240024020022802502005413f7122014b0d00410021010c010b2002418c016a41026a200420014105746a220141026a2d00003a0000200241f8006a2001410f6a29000037030020024180016a200141176a29000037030020024188016a2001411f6a2d00003a0000200220012f00003b018c012002200129000737037020012800032105410121010b0240200228024c450d002004102a0b20010d00410121010c010b200241ec006a41026a2002418c016a41026a2d00003a000020024190016a41086a200241f0006a41086a29030037030020024190016a41106a200241f0006a41106a29030037030020024190016a41186a200241f0006a41186a2d00003a0000200220022f018c013b016c2002200229037037039001410021010b200241e8006a41026a2204200241ec006a41026a2d00003a0000200241c8006a41086a220720024190016a41086a290300370300200241c8006a41106a220820024190016a41106a290300370300200241c8006a41186a220920024190016a41186a2d00003a0000200220022f016c3b016820022002290390013703480240024020010d002002418c016a41026a20042d00003a0000200241f0006a41086a2007290300370300200241f0006a41106a2008290300370300200241f0006a41186a20092d00003a0000200220022f01683b018c0120022002290348370370410121010c010b200641013a0000410021010b200241246a41026a22042002418c016a41026a2d00003a0000200241086a41086a2207200241f0006a41086a290300370300200241086a41106a2208200241f0006a41106a290300370300200241086a41186a2209200241f0006a41186a2d00003a0000200220022f018c013b0124200220022903703703082001450d00200020022f01243b0001200041046a2005360000200041086a2002290308370000200041036a20042d00003a0000200041106a2007290300370000200041186a2008290300370000200041206a20092d00003a0000410121030b200020033a0000200241b0016a24000bd50505067f017e047f017e027f23004180026b22022400024002400240024002402000280200220320002802044f0d00200028020c2104200141086a2105200241a0016a4102722106024003402000200341016a360200200241186a20002802082802002207109b0220022d00184101460d0120022900192108200241086a2007106c20022802080d012007280204200228020c2203490d012003417f4c0d0302400240024020030d00410121090c010b2003102e2209450d0820072802042003490d01200920072802002003109a051a2007280204220a2003490d062007200a20036b3602042007200728020020036a3602000b20022008370310024002402001280200220b41f8b9c000460d002001280204210c0c010b2006410041da001099051a200241186a41004184011099051a41e4011028220b450d074100210c200b4100360200200b41046a200241a0016a41dc00109a051a200b41e0006a200241186a418401109a051a200141003602042001200b3602000b2003ad220d422086200d84210d024002400340200b41086a2107200b2f0106220e41037421034100210a024003402003450d01200241106a20074108109c05220f450d03200341786a2103200a41016a210a200741086a2107200f417f4a0d000b200a417f6a210e0b0240200c450d00200c417f6a210c200b200e4102746a41e4016a280200210b0c010b0b2002200837022c200220053602282002200e360224200220013602202002200b36021c200241003602182002200d3702a401200220093602a001200241186a200241a0016a10bb020c010b200b200a410c6c6a220341e4006a2207280200210a2007200d370200200341e0006a22072802002103200720093602002003450d00200a450d002003102a0b200028020022032000280204490d010c030b0b2009102a0b200441013a00000b20024180026a24000f0b1036000b2003200a1044000b41e40141041037000b200341011037000bfd0e03047f027e087f230041206b2202240002400240024002400240024002400240024002400240024002400240024041a20210282203450d00200241a20236020420022003360200200341003b0000200241023602080240024020012903684202520d00024020022802044102470d00200228020041024104102c2203450d0420024104360204200220033602000b200228020041033a00022002200228020841016a3602080c010b024020022802044102470d00200228020041024104102c2203450d0420024104360204200220033602000b20022802004183013a00022002200228020841016a3602082001200210a60120022002360210200141246a200241106a10fa020240024020012903684201510d0002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102821040c010b200228020020032005102c21040b2004450d072002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a00000c010b200141f8006a29030020012903702206420c882207420120074201561b8021070240024020022802042204200228020822036b4102490d00200228020021040c010b200341026a22052003490d11200441017422032005200320054b1b22034100480d110240024020040d002003102821040c010b200228020020042003102c21040b2004450d072002200336020420022004360200200228020821030b2002200341026a360208200420036a2007a741047420067aa7417f6a22034101200341014b1b2203410f2003410f491b723b00000b20014190016a200210a001200220014180016a360210200241106a200210a3010b20014198016a200210eb012002280208210120024100360218200242013703102001417e6a200241106a10b4012002280208220341014d0d052002280218210520022802142108200228021021092002410036020820022802002101024002402003417e6a220a450d004102210b2005450d0d200120092d00003a00004101210c2002200228020841016a36020820054101460d0d200920056a210d200120092d00013a00012002200228020841016a3602084102210b200941026a21042005417e6a220e0d014100210e0c0b0b0240024002402002280204220320054f0d00200341017422042005200420054b1b22044100480d120240024020030d002004102821010c010b200120032004102c21010b2001450d0a20022004360204200220013602002002280208210b0c010b4100210b2005450d010b2001200b6a220320092d00003a0000024020054101470d00200b41016a210b0c010b2005417f6a2104200941016a2101200341016a21030340200320012d00003a0000200341016a2103200141016a21012004417f6a22040d000b200b20056a210b0b2002200b3602084102210b0c0b0b024002402002280204220120036b200e490d00200228020021010c010b2003200e6a220b2003490d0f20014101742203200b2003200b4b1b22034100480d0f0240024020010d002003102821010c010b200228020020012003102c21010b2001450d0820022003360204200220013602000b200120056a200141026a200a109b051a0240200520022802082201460d00200520016b210b2005417e6a2103200228020020016a210c410021010340024020032001470d002005210b0c0d0b200c20016a20042d00003a00002002200228020841016a360208200441016a2104200b200141016a2201470d000b200d20046b220e0d004100210e4101210c0c090b200e4100480d0e200e1028220c0d08200e41011037000b41a20241011037000b410441011037000b410441011037000b200541011037000b200341011037000b41e4e8c5001032000b200441011037000b200341011037000b2005210b0b0240200d2004460d00200c20042d00003a00004101210f02400240200441016a2201200d470d00200c41016a21050c010b200c41016a21032009200520046b6a21040340200320012d00003a0000200341016a2103200d200141016a2201470d000b2004450d01200c20046a21052004210f0b0240024020022802042201200a200b6a22036b200f490d00200228020021010c010b2003200f6a22042003490d06200141017422032004200320044b1b22034100480d060240024020010d002003102821010c010b200228020020012003102c21010b2001450d0520022003360204200220013602000b2001200b200f6a220d6a2001200b6a200a109b051a0240200d20022802082201460d00200228020020016a2103200b200f6a20016b2104200c2101034020052001460d01200320012d00003a00002002200228020841016a360208200141016a2101200341016a21032004417f6a22040d000b0b200d210b0b200e450d00200c102a0b200a450d010b0240200b20022802082201460d002002280200220320016a2003200b6a200a109b051a0b2002200a20016a3602080b02402008450d002009102a0b20002002290300370200200041086a200241086a280200360200200241206a24000f0b200341011037000b1031000b130020004103360204200041889fc4003602000b340020004196a6c40036020420004100360200200041146a4101360200200041106a419ca6c400360200200041086a42043702000b4001017f230041206b22022400200241186a4200370300200241106a4200370300200241086a42003703002002420037030020002002108b04200241206a24000bde0301017f024002400240024002400240410110282202450d00200220012d00003a0000200241014102102c2202450d01200220012d00013a0001200241024104102c2202450d02200220012d00023a0002200220012d00033a0003200241044108102c2202450d03200220012d00043a0004200220012d00053a0005200220012d00063a0006200220012d00073a0007200241084110102c2202450d04200220012d00083a0008200220012d00093a0009200220012d000a3a000a200220012d000b3a000b200220012d000c3a000c200220012d000d3a000d200220012d000e3a000e200220012d000f3a000f200241104120102c2202450d05200220012d00103a0010200220012d00113a0011200220012d00123a0012200220012d00133a0013200220012d00143a0014200220012d00153a0015200220012d00163a0016200220012d00173a0017200220012d00183a0018200220012d00193a0019200220012d001a3a001a200220012d001b3a001b200220012d001c3a001c200220012d001d3a001d200220012d001e3a001e200220012d001f3a001f200042a08080808004370204200020023602000f0b410141011037000b410241011037000b410441011037000b410841011037000b411041011037000b412041011037000bb31102077f027e230041106b2202240020024100360208200242013703004104200210b4010240024002400240024002400240024002400240024002400240024002400240024020022802042203200228020822046b4104490d00200441046a2105200228020021030c010b200441046a22052004490d0f200341017422062005200620054b1b22064100480d0f0240024020030d002006102821030c010b200228020020032006102c21030b2003450d0120022006360204200220033602000b20022005360208200320046a41eede91ab06360000410e200210b4010240024020022802042203200228020822066b410e490d002006410e6a2104200228020021050c010b2006410e6a22042006490d0f200341017422052004200520044b1b22074100480d0f0240024020030d002007102821050c010b200228020020032007102c21050b2005450d022002200736020420022005360200200721030b20022004360208200520066a220641002900e4c740370000200641066a41002900eac7403700000240200320046b41034b0d00200441046a22062004490d0f200341017422072006200720064b1b22064100480d0f0240024020030d002006102821050c010b200520032006102c21050b2005450d0320022006360204200220053602000b2002200441046a360208200520046a410a3600000240024020022802042205200228020822046b4104490d00200228020021050c010b200441046a22032004490d0f200541017422062003200620034b1b22034100480d0f0240024020050d002003102821050c010b200228020020052003102c21050b2005450d0420022003360204200220053602000b2002200441046a360208200520046a41a3013600000240024020022802042205200228020822046b4104490d00200228020021050c010b200441046a22032004490d0f200541017422062003200620034b1b22034100480d0f0240024020050d002003102821050c010b200228020020052003102c21050b2005450d0520022003360204200220053602000b2002200441046a360208200520046a41a301360000410b200210b40141f4c7c0002104034002400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422062003200620034b1b22064100480d100240024020050d002006102821030c010b200228020020052006102c21030b2003450d0720022006360204200220033602000b2002200541016a360208200320056a20042d00003a000002400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422062003200620034b1b22064100480d100240024020050d002006102821030c010b200228020020052006102c21030b2003450d0820022006360204200220033602000b2002200541016a360208200320056a200441016a2d00003a000002400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422062003200620034b1b22064100480d100240024020050d002006102821030c010b200228020020052006102c21030b2003450d0920022006360204200220033602000b2002200541016a360208200320056a200441026a2d00003a000002400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422062003200620034b1b22064100480d100240024020050d002006102821030c010b200228020020052006102c21030b2003450d0a20022006360204200220033602000b2002200541016a360208200320056a200441036a2d00003a000002400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422062003200620034b1b22064100480d100240024020050d002006102821030c010b200228020020052006102c21030b2003450d0b20022006360204200220033602000b2002200541016a360208200320056a200441046a2d00003a000002400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422062003200620034b1b22064100480d100240024020050d002006102821030c010b200228020020052006102c21030b2003450d0c20022006360204200220033602000b2002200541016a360208200320056a200441056a2d00003a000002400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422062003200620034b1b22064100480d100240024020050d002006102821030c010b200228020020052006102c21030b2003450d0d20022006360204200220033602000b2002200541016a360208200320056a200441066a2d00003a000002400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422062003200620034b1b22064100480d100240024020050d002006102821030c010b200228020020052006102c21030b2003450d0e20022006360204200220033602000b2002200541016a360208200320056a200441076a2d00003a0000200441086a28020021060240024020022802042203200228020822056b4104490d00200228020021030c010b200541046a22072005490d10200341017422082007200820074b1b22074100480d100240024020030d002007102821030c010b200228020020032007102c21030b2003450d0f20022007360204200220033602000b2002200541046a360208200320056a20063600002004410c6a220441f8c8c000470d000b200235020821092002350200210a200241106a2400200a2009422086840f0b200641011037000b200741011037000b200641011037000b200341011037000b200341011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200741011037000b1031000b961b04057f017e037f017e230041800a6b22022400024002402001450d00200220003602180c010b200241013602180b2002200136021c200241e0076a200241186a107f024020022802e4072203450d00200241e0076a410c6a280200210120022802e807210420022802e0072100200241b0046a200241e0076a41106a41e000109a051a200241e0076a200241186a1079024020022802e007450d0020024180036a41086a2205200241e0076a41086a280200360200200220022903e00737038003200241e0076a200241b0046a41e000109a051a200241306a200241e0076a41e000109a051a200241206a41086a22062005280200360200200220022903800337032020024190016a410c6a200136020020024190016a41086a20043602002002200336029401200220003602900120024190016a41106a200241306a41e000109a05210120024188026a2006280200360200200220022903203703800220024190016a10c703024002402002280290012200450d00200241e0076a2000417f6a10f701200241e0076a20014120109c050d000240024020024188026a28020022030d004100210341042104410021010c010b024002402003ad420c7e2207422088a70d002007a722014100480d0020022802800221002001102822040d01200141041037000b1031000b200341a0026c210520034105742106200421010340200241e0076a2000108704200141086a200241e0076a41086a280200360200200120022903e0073702002001410c6a2101200041a0026a2100200541e07d6a22050d000b200641606a41057641016a21010b200220013602b804200220033602b404200220043602b004200241e0076a200241b0046a108e040240200241e0016a2201200241e0076a4120109c05450d004190fac500410e100b200141201019200241e0076a412010190b02402001200241e0076a4120109c050d0020024184026a28020021082002280280022109200228028802210520024190026a20024190016a41f000109a051a2009200541a0026c6a2100200228029002210a20092101024002402005450d00200241b0046a41f0006a21042009210102400340200241f8066a200141e800109a051a200141e8006a290300210720024180036a200141f0006a41b001109a051a20074203510d01200241b0046a200241f8066a41e800109a051a2002200737039805200420024180036a41b001109a051a200241e0076a200241b0046a10870420022802e8072105024020022802e407450d0020022802e007102a0b200241e0076a200241b0046a41a002109a051a200241003602e006200241d0066a200241e0076a2005200241e0066a10d00320022d00d0064101460d03024020022d00dc0622054102460d0020023100de06210720023100dd06210b20022802d806210620022802d406210341f19ec600410d100b02402005450d00200b100c0b2007100c2003450d0020032006100b0b200141a0026a22012000470d000b200021010c010b200141a0026a21010b20012000460d03200241f8086a2105200241e0076a41f0006a2103034020024180036a200141e800109a051a200141e8006a2903002107200241e0076a200141f0006a41b001109a051a20074203510d04200241f8066a20024180036a41e800109a051a200241b0046a200241e0076a41b001109a051a200241e0076a200241f8066a41e800109a051a200220073703c8082003200241b0046a41b001109a051a2005106a200141a0026a22012000470d000c040b0b200241106a20022f00d10620022d00d3064110747210d30320022903102107200241ec076a42c4808080d01b370200200241323602f407200241b8b9c3003602e807200220073703e007200241e0076a1032000b41a0b9c3001032000b4188b9c3001032000b02402008450d002009102a0b200241086a10e403200228020c210120022802082100200241e0076a41086a22054200370300200242003703e00741f99fc6004115200241e0076a1008200241b0046a41086a2005290300370300200220022903e0073703b00420022001410020001b3602e007200241b0046a4110200241e0076a41041007200a109e03200241e0076a10b203200220024190026a410c6a28020022033602f00620022802940221062002200241e0076a410c6a28020022013602f406024020032001470d0002402003450d0020022802e407210941002105034002400240024002400240024002400240200620056a22012d00002204200920056a22002d0000470d000240024002400240024020040e050001020304000b20012000460d09200141016a200041016a4120109c050d040c090b024020012000460d00200141016a280000200041016a280000470d040b200141106a2802002204200041106a280200470d03200141086a2802002208200041086a280200220a460d072008200a2004109c050d030c070b024020012000460d00200141016a280000200041016a280000470d030b200141106a2802002204200041106a280200470d02200141086a2802002208200041086a280200220a460d052008200a2004109c050d020c050b024020012000460d00200141016a280000200041016a280000470d020b200141106a2802002204200041106a280200470d01200141086a2802002208200041086a280200220a460d032008200a2004109c050d010c030b2001410c6a28020022042000410c6a280200470d00200141046a2802002208200041046a280200220a460d012008200a2004109c05450d010b41df86c2004114100b200241b0046a200110ec0120022802b004220420022802b8041019024020022802b404450d002004102a0b200241b0046a200010ec0120022802b004220420022802b8041019024020022802b404450d002004102a0b20012d000020002d00002204470d0520040e050403020100040b2001410c6a28020022042000410c6a280200470d04200141046a2802002201200041046a2802002200460d05200120002004109c050d040c050b024020012000460d00200141016a280000200041016a280000470d040b200141106a2802002204200041106a280200470d03200141086a2802002201200041086a2802002200460d04200120002004109c05450d040c030b024020012000460d00200141016a280000200041016a280000470d030b200141106a2802002204200041106a280200470d02200141086a2802002201200041086a2802002200460d03200120002004109c050d020c030b024020012000460d00200141016a280000200041016a280000470d020b200141106a2802002204200041106a280200470d01200141086a2802002201200041086a2802002200460d02200120002004109c050d010c020b20012000460d01200141016a200041016a4120109c05450d010b4194bac3001032000b200541246a21052003417f6a22030d000b0b024020024190026a41306a2201200241e0076a41306a22004120109c05450d004190fac500410e100b2001412010192000412010190b0240200120004120109c05450d0041acbac3001032000b024020022802ec072200450d0020022802e4072101200041246c210003400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a280200102a0c030b2001410c6a280200450d02200141086a280200102a0c020b2001410c6a280200450d01200141086a280200102a0c010b200141086a280200450d00200141046a280200102a0b200141246a21012000415c6a22000d000b0b0240200241e8076a280200450d0020022802e407102a0b0240200228029c022200450d002002280294022101200041246c210003400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a280200102a0c030b2001410c6a280200450d02200141086a280200102a0c020b2001410c6a280200450d01200141086a280200102a0c010b200141086a280200450d00200141046a280200102a0b200141246a21012000415c6a22000d000b0b024020024198026a280200450d00200228029402102a0b200241800a6a240042010f0b20024180036a41146a410836020020024180036a410c6a4125360200200241f8066a41146a4103360200200242033702fc06200241c8afc6003602f80620024125360284032002200241f0066a3602e0062002200241f4066a3602d006200242043703c004200242013702b404200241fcb9c3003602b004200220024180036a360288072002200241b0046a360290032002200241d0066a360288032002200241e0066a36028003200241f8066a4184bac300103e000b02402001450d00200141246c21002003210103400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a280200102a0c030b2001410c6a280200450d02200141086a280200102a0c020b2001410c6a280200450d01200141086a280200102a0c010b200141086a280200450d00200141046a280200102a0b200141246a21012000415c6a22000d000b0b2004450d002003102a0b200241f4076a4102360200200241bc046a4104360200200242023702e407200241bca7c4003602e007200241043602b404200241b4a7c4003602b0042002410036028403200241b8aec600360280032002200241b0046a3602f007200220024180036a3602b804200241e0076a41cca7c400103e000b8d05030b7f017e037f230041206b220224002001280200220320012802082204410c6c6a21052001280204210602400240024020040d00410421074100210841012109410021014100210a200321040c010b41012109410021084100210441042107410021014100210a2003210b0240024003400240200b280200220c0d00200b410c6a21040c040b024002400240200820046b200b41046a290200220d422088a7220e490d002004200e6a210f0c010b2004200e6a220f2004490d0420084101742210200f2010200f4b1b22104100480d040240024020080d002010102821090c010b200920082010102c21090b2009450d01201021080b200920046a200c200e109a051a02400240200a2001460d0020012110200a21010c010b200141016a22042001490d04200141017422102004201020044b1b221041ffffffff03712010470d04201041027422044100480d040240024020010d002004102821070c010b200720014102742004102c21070b2007450d030b200720014102746a200e3602000240200da7450d00200c102a0b200a41016a210a200f210420102101200b410c6a220b2005470d010c050b0b201041011037000b200441041037000b1031000b024020042005460d0003402004280200220b450d010240200441046a280200450d00200b102a0b2004410c6a22042005470d000b0b200121100b02402006450d002003102a0b200241186a22014200370300200241106a22044200370300200241086a220b42003703002002420037030020092007200a20021023200041186a2001290300370000200041106a2004290300370000200041086a200b2903003700002000200229030037000002402010450d002007102a0b02402008450d002009102a0b200241206a24000ba10301027f23004180026b22022400024002402001450d00200220003602000c010b200241013602000b20022001360204200241f8006a2002107f0240200228027c450d00200241086a200241f8006a41f000109a051a200241086a10c7030240200241086a410c6a2802002200450d00200228020c2101200041246c210003400240024020012d0000220341034b0d0002400240024020030e0404000102040b2001410c6a280200450d03200141086a280200102a0c030b2001410c6a280200450d02200141086a280200102a0c020b2001410c6a280200450d01200141086a280200102a0c010b200141086a280200450d00200141046a280200102a0b200141246a21012000415c6a22000d000b0b0240200241106a280200450d00200228020c102a0b20024180026a240042010f0b200241f4016a41043602002002411c6a41023602002002420237020c200241bca7c400360208200241043602ec01200241c8a8c4003602e801200241003602fc01200241b8aec6003602f8012002200241e8016a3602182002200241f8016a3602f001200241086a41cca7c400103e000be328010b7f230041d0006b220224002002410036022820024201370320024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240410410282203450d0020024284808080c00037022420022003360220200341edcad18b0636000002400240200228022420022802282203460d00200228022021040c010b200341016a22042003490d1b200341017422052004200520044b1b22054100480d1b0240024020030d002005102821040c010b200228022020032005102c21040b2004450d0220022005360224200220043602200b2002200341016a360228200420036a41073a00004115200241206a10b40141accbc000210603402006280204210720062802082203200241206a10b4010240024020022802242205200228022822046b2003490d00200228022021050c010b200420036a22082004490d1c200541017422042008200420084b1b22044100480d1c0240024020050d002004102821050c010b200228022020052004102c21050b2005450d042002200436022420022005360220200228022821040b2002200420036a360228200520046a20072003109a051a200228022421042002280228210302400240200628020c4102470d000240024020042003460d00200228022021040c010b200341016a22042003490d1e200341017422052004200520044b1b22054100480d1e0240024020030d002005102821040c010b200228022020032005102c21040b2004450d072002200536022420022004360220200228022821030b2002200341016a360228200420036a41003a00000c010b0240024020042003460d00200228022021040c010b200341016a22042003490d1d200341017422052004200520044b1b22054100480d1d0240024020030d002005102821040c010b200228022020032005102c21040b2004450d072002200536022420022004360220200228022821030b2002200341016a360228200420036a41013a00000240200628020c4101460d00200241306a20062802101103002002280234210720022802382203200241206a10b4010240024020022802242205200228022822046b2003490d00200228022021050c010b200420036a22082004490d1e200541017422042008200420084b1b22044100480d1e0240024020050d002004102821050c010b200228022020052004102c21050b2005450d092002200436022420022005360220200228022821040b2002200420036a360228200520046a20072003109a051a200228024021050240200228023c4101460d0020052002280244200241206a1091040c020b200520022802482203200241206a10910402402003450d00200341d8006c21074100210403400240200520046a220341346a280200450d002003413c6a280200450d00200341386a280200102a0b0240200341c4006a280200450d00200341cc006a280200450d00200341c8006a280200102a0b2007200441d8006a2204470d000b0b2002280244450d012005102a0c010b2006280214210720062802182203200241206a10b4010240024020022802242205200228022822046b2003490d00200228022021050c010b200420036a22082004490d1d200541017422042008200420084b1b22044100480d1d0240024020050d002004102821050c010b200228022020052004102c21050b2005450d092002200436022420022005360220200228022821040b2002200420036a360228200520046a20072003109a051a200628022021030240200628021c4101460d002003200641246a280200200241206a1091040c010b20032006280228200241206a1091040b200228022421042002280228210302400240200628022c4102470d000240024020042003460d00200228022021040c010b200341016a22042003490d1e200341017422052004200520044b1b22054100480d1e0240024020030d002005102821040c010b200228022020032005102c21040b2004450d0b2002200536022420022004360220200228022821030b2002200341016a360228200420036a41003a00000c010b0240024020042003460d00200228022021040c010b200341016a22042003490d1d200341017422052004200520044b1b22054100480d1d0240024020030d002005102821040c010b200228022020032005102c21040b2004450d0b2002200536022420022004360220200228022821030b2002200341016a360228200420036a41013a00000240200628022c4101460d00200241186a200628023011030020022802182104200228021c2203200241206a10b4012003450d012003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a10b4010240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d1f20074101742205200a2005200a4b1b22054100480d1f0240024020070d002005102821070c010b200228022020072005102c21070b2007450d0e2002200536022420022007360220200228022821050b2002200520046a360228200720056a20092004109a051a200341706a200241206a1092042003200241206a1093042003412c6a2103200841546a22080d000c020b0b2006280230210420062802382203200241206a10b4012003450d002003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a10b4010240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d1e20074101742205200a2005200a4b1b22054100480d1e0240024020070d002005102821070c010b200228022020072005102c21070b2007450d0e2002200536022420022007360220200228022821050b2002200520046a360228200720056a20092004109a051a200341706a200241206a1092042003200241206a1093042003412c6a2103200841546a22080d000b0b200228022421042002280228210302400240200628023c4102470d000240024020042003460d00200228022021040c010b200341016a22042003490d1e200341017422052004200520044b1b22054100480d1e0240024020030d002005102821040c010b200228022020032005102c21040b2004450d0f2002200536022420022004360220200228022821030b2002200341016a360228200420036a41003a00000c010b0240024020042003460d00200228022021040c010b200341016a22042003490d1d200341017422052004200520044b1b22054100480d1d0240024020030d002005102821040c010b200228022020032005102c21040b2004450d0f2002200536022420022004360220200228022821030b2002200341016a360228200420036a41013a00000240200628023c4101460d00200241106a20062802401103002002280210210420022802142203200241206a10b4012003450d012003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a10b4010240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d1f20074101742205200a2005200a4b1b22054100480d1f0240024020070d002005102821070c010b200228022020072005102c21070b2007450d122002200536022420022007360220200228022821050b2002200520046a360228200720056a20092004109a051a200341706a200241206a1093042003200241206a1093042003412c6a2103200841546a22080d000c020b0b2006280240210420062802482203200241206a10b4012003450d002003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a10b4010240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d1e20074101742205200a2005200a4b1b22054100480d1e0240024020070d002005102821070c010b200228022020072005102c21070b2007450d122002200536022420022007360220200228022821050b2002200520046a360228200720056a20092004109a051a200341706a200241206a1093042003200241206a1093042003412c6a2103200841546a22080d000b0b02400240200628024c4101460d00200241086a20062802501103002002280208210b200228020c2203200241206a10b4012003450d01200341386c210c410021070340200b20076a220341046a2802002109200341086a2802002204200241206a10b4010240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d1f20084101742205200a2005200a4b1b22054100480d1f0240024020080d002005102821080c010b200228022020082005102c21080b2008450d142002200536022420022008360220200228022821050b2002200520046a360228200820056a20092004109a051a200341106a2802002109200341146a2802002204200241206a10b4010240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d1f20084101742205200a2005200a4b1b22054100480d1f0240024020080d002005102821080c010b200228022020082005102c21080b2008450d152002200536022420022008360220200228022821050b2002200520046a360228200820056a20092004109a051a02400240200341186a2802004101460d00200241306a2003411c6a280200200341206a28020028020c1102002002280230210920022802382204200241206a10b4010240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2120084101742205200a2005200a4b1b22054100480d210240024020080d002005102821080c010b200228022020082005102c21080b2008450d182002200536022420022008360220200228022821050b2002200520046a360228200820056a20092004109a051a2002280234450d012009102a0c010b2003411c6a2802002109200341246a2802002204200241206a10b4010240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2020084101742205200a2005200a4b1b22054100480d200240024020080d002005102821080c010b200228022020082005102c21080b2008450d182002200536022420022008360220200228022821050b2002200520046a360228200820056a20092004109a051a0b200341286a200241206a109304200c200741386a2207470d000c020b0b2006280250210b20062802582203200241206a10b4012003450d00200341386c210c410021070340200b20076a220341046a2802002109200341086a2802002204200241206a10b4010240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d1e20084101742205200a2005200a4b1b22054100480d1e0240024020080d002005102821080c010b200228022020082005102c21080b2008450d172002200536022420022008360220200228022821050b2002200520046a360228200820056a20092004109a051a200341106a2802002109200341146a2802002204200241206a10b4010240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d1e20084101742205200a2005200a4b1b22054100480d1e0240024020080d002005102821080c010b200228022020082005102c21080b2008450d182002200536022420022008360220200228022821050b2002200520046a360228200820056a20092004109a051a02400240200341186a2802004101460d00200241306a2003411c6a280200200341206a28020028020c1102002002280230210920022802382204200241206a10b4010240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2020084101742205200a2005200a4b1b22054100480d200240024020080d002005102821080c010b200228022020082005102c21080b2008450d1b2002200536022420022008360220200228022821050b2002200520046a360228200820056a20092004109a051a2002280234450d012009102a0c010b2003411c6a2802002109200341246a2802002204200241206a10b4010240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d1f20084101742205200a2005200a4b1b22054100480d1f0240024020080d002005102821080c010b200228022020082005102c21080b2008450d1b2002200536022420022008360220200228022821050b2002200520046a360228200820056a20092004109a051a0b200341286a200241206a109304200c200741386a2207470d000b0b200641dc006a220641b8dac000470d000b2002280228220341046a2204417f4c0d1720022802242108200228022021070240024020040d00410121050c010b200410282205450d190b2002410036023820022004360234200220053602302003200241306a10b4010240024020022802342205200228023822046b2003490d00200228023021050c010b200420036a22092004490d1b2005410174220a2009200a20094b1b22094100480d1b0240024020050d002009102821050c010b200228023020052009102c21050b2005450d1a20022009360234200220053602300b200520046a20072003109a051a200420036a210302402008450d002007102a0b200241d0006a24002003ad4220862005ad840f0b410441011037000b200541011037000b200441011037000b200541011037000b200541011037000b200441011037000b200441011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b200541011037000b1036000b200441011037000b200941011037000b1031000b9c1d010a7f230041106b220324002001200210b401024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402001450d00200141d8006c2104410021050340200020056a220641046a2802002107200641086a2802002208200210b40102400240200241046a2209280200220a200241086a2201280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d18200a410174220b200c200b200c4b1b220b4100480d1802400240200a0d00200b1028210a0c010b2002280200200a200b102c210a0b200a450d032002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a20072008109a051a200641d4006a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1820084101742207200b2007200b4b1b22074100480d180240024020080d0020071028210b0c010b200228020020082007102c210b0b200b450d042002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a000002402006410c6a2d0000220841024b0d0002400240024020080e03000102000b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1b2008410174220a200b200a200b4b1b220a4100480d1b0240024020080d00200a1028210b0c010b20022802002008200a102c210b0b200b450d082002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41003a0000200641146a2802002107200641186a2802002208200210b401024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d1b200a410174220b200c200b200c4b1b220b4100480d1b02400240200a0d00200b1028210a0c010b2002280200200a200b102c210a0b200a450d092002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a20072008109a051a0c020b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1a2008410174220a200b200a200b4b1b220a4100480d1a0240024020080d00200a1028210b0c010b20022802002008200a102c210b0b200b450d092002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41013a00002006410d6a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1a20084101742207200b2007200b4b1b22074100480d1a0240024020080d0020071028210b0c010b200228020020082007102c210b0b200b450d0a2002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a0000200641146a2802002107200641186a2802002208200210b401024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d1a200a410174220b200c200b200c4b1b220b4100480d1a02400240200a0d00200b1028210a0c010b2002280200200a200b102c210a0b200a450d0b2002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a20072008109a051a200641206a2802002107200641246a2802002208200210b401024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d1a200a410174220b200c200b200c4b1b220b4100480d1a02400240200a0d00200b1028210a0c010b2002280200200a200b102c210a0b200a450d0c2002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a20072008109a051a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1a2008410174220a200b200a200b4b1b220a4100480d1a0240024020080d00200a1028210b0c010b20022802002008200a102c210b0b200b450d0d2002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a2006410e6a2d00003a00000c010b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d192008410174220a200b200a200b4b1b220a4100480d190240024020080d00200a1028210b0c010b20022802002008200a102c210b0b200b450d0d2002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41023a00002006410d6a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1920084101742207200b2007200b4b1b22074100480d190240024020080d0020071028210b0c010b200228020020082007102c210b0b200b450d0e2002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a0000200641146a2802002107200641186a2802002208200210b401024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d19200a410174220b200c200b200c4b1b220b4100480d1902400240200a0d00200b1028210a0c010b2002280200200a200b102c210a0b200a450d0f2002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a20072008109a051a200641206a2802002107200641246a2802002208200210b401024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d19200a410174220b200c200b200c4b1b220b4100480d1902400240200a0d00200b1028210a0c010b2002280200200a200b102c210a0b200a450d102002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a20072008109a051a2006412c6a2802002107200641306a2802002208200210b401024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d19200a410174220b200c200b200c4b1b220b4100480d1902400240200a0d00200b1028210a0c010b2002280200200a200b102c210a0b200a450d112002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a20072008109a051a2006410e6a2d0000220841044b0d000240024002400240024020080e050001020304000b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1d2008410174220a200b200a200b4b1b220a4100480d1d0240024020080d00200a1028210b0c010b20022802002008200a102c210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41003a00000c040b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1c2008410174220a200b200a200b4b1b220a4100480d1c0240024020080d00200a1028210b0c010b20022802002008200a102c210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41013a00000c030b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1b2008410174220a200b200a200b4b1b220a4100480d1b0240024020080d00200a1028210b0c010b20022802002008200a102c210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41023a00000c020b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1a2008410174220a200b200a200b4b1b220a4100480d1a0240024020080d00200a1028210b0c010b20022802002008200a102c210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41033a00000c010b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d192008410174220a200b200a200b4b1b220a4100480d190240024020080d00200a1028210b0c010b20022802002008200a102c210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41043a00000b02400240200641346a2802004101460d002003200641386a2802002006413c6a28020028020c1102002003280200210720032802082208200210b401024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d1a200a410174220b200c200b200c4b1b220b4100480d1a02400240200a0d00200b1028210a0c010b2002280200200a200b102c210a0b200a450d182002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a20072008109a051a2003280204450d012007102a0c010b200641386a2802002107200641c0006a2802002208200210b401024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d19200a410174220b200c200b200c4b1b220b4100480d1902400240200a0d00200b1028210a0c010b2002280200200a200b102c210a0b200a450d182002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a20072008109a051a0b200641c4006a20021093042004200541d8006a2205470d000b0b200341106a24000f0b200b41011037000b200741011037000b200a41011037000b200b41011037000b200a41011037000b200741011037000b200b41011037000b200b41011037000b200a41011037000b200a41011037000b200741011037000b200b41011037000b200b41011037000b200b41011037000b200a41011037000b200a41011037000b200a41011037000b200a41011037000b200a41011037000b200b41011037000b200b41011037000b1031000b840701087f20002802042102024002400240024002400240024020002802004101460d00200041086a2802002200200110b4012000450d01200041186c2103200241146a2100200141086a2102200141046a21040340200041706a2802002105200041746a2802002206200110b4010240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d08200741017422082009200820094b1b22084100480d080240024020070d002008102821070c010b200128020020072008102c21070b2007450d042001200736020020042008360200200228020021080b2002200820066a360200200720086a20052006109a051a2000417c6a280200210520002802002206200110b4010240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d08200741017422082009200820094b1b22084100480d080240024020070d002008102821070c010b200128020020072008102c21070b2007450d052001200736020020042008360200200228020021080b2002200820066a360200200720086a20052006109a051a200041186a2100200341686a22030d000c020b0b2000410c6a2802002200200110b4012000450d00200041186c2103200241146a2100200141086a2102200141046a21040340200041706a2802002105200041746a2802002206200110b4010240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d07200741017422082009200820094b1b22084100480d070240024020070d002008102821070c010b200128020020072008102c21070b2007450d052001200736020020042008360200200228020021080b2002200820066a360200200720086a20052006109a051a2000417c6a280200210520002802002206200110b4010240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d07200741017422082009200820094b1b22084100480d070240024020070d002008102821070c010b200128020020072008102c21070b2007450d062001200736020020042008360200200228020021080b2002200820066a360200200720086a20052006109a051a200041186a2100200341686a22030d000b0b0f0b200841011037000b200841011037000b200841011037000b200841011037000b1031000b840401087f200028020421020240024002400240024020002802004101460d00200041086a2802002200200110b40120004103742200450d01200220006a2103200141086a2104034020022802002105200241046a2802002200200110b40102400240200141046a22062802002207200428020022086b2000490d00200128020021070c010b200820006a22092008490d06200741017422082009200820094b1b22084100480d060240024020070d002008102821070c010b200128020020072008102c21070b2007450d042001200736020020062008360200200428020021080b2004200820006a360200200720086a20052000109a051a200241086a22022003470d000c020b0b2000410c6a2802002200200110b40120004103742200450d00200220006a2103200141086a2104034020022802002105200241046a2802002200200110b40102400240200141046a22062802002207200428020022086b2000490d00200128020021070c010b200820006a22092008490d05200741017422082009200820094b1b22084100480d050240024020070d002008102821070c010b200128020020072008102c21070b2007450d042001200736020020062008360200200428020021080b2004200820006a360200200720086a20052000109a051a200241086a22022003470d000b0b0f0b200841011037000b200841011037000b1031000bd10f02037f027e230041a0076b22022400024002402001450d00200220003602080c010b200241013602080b2002200136020c200241f0046a200241086a107a02400240024002400240024002400240024002400240024020022903d8054203510d00200241106a200241f0046a41a002109a051a200241c0026a200241106a41a002109a051a200241e0046a200241c0026a10870420022802e8042101200241f0046a200241c0026a41a002109a051a20024198076a20022802e804360200200220022903e00437039007200241b0026a200241f0046a200120024190076a10d0034101410220022d00b00241014622001b220310282201450d01200241003602f804200220033602f404200220013602f0040240024020000d00200241013602f804200141003a000020022802f404210020022802f80421010240200241bc026a2d000022034102470d000240024020002001460d0020022802f00421000c010b200141016a22002001490d0f200141017422032000200320004b1b22034100480d0f0240024020010d002003102821000c010b20022802f00420012003102c21000b2000450d06200220033602f404200220003602f00420022802f80421010b2002200141016a3602f804200020016a41003a00000c020b0240024020002001460d0020022802f00421000c010b200141016a22002001490d0e200141017422042000200420004b1b22044100480d0e0240024020010d002004102821000c010b20022802f00420012004102c21000b2000450d06200220043602f404200220003602f00420022802f80421010b2002200141016a3602f804200020016a41013a00000240024020034101460d000240024020022802f40420022802f8042201460d0020022802f00421000c010b200141016a22002001490d10200141017422032000200320004b1b22034100480d100240024020010d002003102821000c010b20022802f00420012003102c21000b2000450d09200220033602f404200220003602f00420022802f80421010b2002200141016a3602f804200020016a41003a00000c010b0240024020022802f40420022802f8042201460d0020022802f00421000c010b200141016a22002001490d0f200141017422032000200320004b1b22034100480d0f0240024020010d002003102821000c010b20022802f00420012003102c21000b2000450d09200220033602f404200220003602f00420022802f80421010b2002200141016a3602f804200020016a41013a00000240024020022802f40420022802f8042201460d0020022802f00421000c010b200141016a22002001490d0f200141017422032000200320004b1b22034100480d0f0240024020010d002003102821000c010b20022802f00420012003102c21000b2000450d0a200220033602f404200220003602f00420022802f80421010b2002200141016a3602f804200020016a20022d00bd023a00000b0240024020022802f40420022802f8042201460d0020022802f00421000c010b200141016a22002001490d0e200141017422032000200320004b1b22034100480d0e0240024020010d002003102821000c010b20022802f00420012003102c21000b2000450d0a200220033602f404200220003602f00420022802f80421010b2002200141016a3602f804200020016a20022d00be023a00000c010b200241013602f804200141013a000020022d00b102417e6a22014102200141ff01714102491b41ff0171220141024b0d0002400240024020010e03000102000b0240024020022802f40420022802f8042201460d0020022802f00421000c010b200141016a22002001490d0f200141017422032000200320004b1b22034100480d0f0240024020010d002003102821000c010b20022802f00420012003102c21000b2000450d0c200220033602f404200220003602f00420022802f80421010b2002200141016a3602f804200020016a41003a00000c020b0240024020022802f40420022802f8042201460d0020022802f00421000c010b200141016a22002001490d0e200141017422032000200320004b1b22034100480d0e0240024020010d002003102821000c010b20022802f00420012003102c21000b2000450d0c200220033602f404200220003602f00420022802f80421010b2002200141016a3602f804200020016a41013a00000c010b0240024020022802f40420022802f8042201460d0020022802f00421000c010b200141016a22002001490d0d200141017422032000200320004b1b22034100480d0d0240024020010d002003102821000c010b20022802f00420012003102c21000b2000450d0c200220033602f404200220003602f00420022802f80421010b2002200141016a3602f804200020016a41023a0000200241b0026a410172200241f0046a10c6030b20023502f804210520023502f0042106200241a0076a240020062005422086840f0b2002411c6a4104360200200241d4026a4102360200200242023702c402200241bca7c4003602c00220024104360214200241e0a8c400360210200241003602b402200241b8aec6003602b0022002200241106a3602d0022002200241b0026a360218200241c0026a41cca7c400103e000b200341011037000b200341011037000b200441011037000b200341011037000b200341011037000b200341011037000b200341011037000b200341011037000b200341011037000b200341011037000b1031000baf0d04067f017e057f017e230041c0016b22022400200241086a10e403200228020c21032002280208210420024180016a41086a22054200370300200242003703800141f99fc600411520024180016a1008200241106a41086a2005290300370300200220022903800137031020022003410020041b3602a001200241106a4110200241a0016a41041007109801109e0320054200370300200242003703800141f99fc600411520024180016a100820024190016a41086a20052903003703002002200229038001370390012002410036021020024190016a4110200241106a1006210502400240024002400240024020022802102203417f460d002005450d00200341034d0d05200528000021062005102a20060d010b41042107410021060c010b2006ad420c7e2208422088a70d012008a722054100480d01200510282207450d022007210341002104034002400240024002400240411410282205450d00200541106a41002800eaa046360000200541086a41002900e2a046370000200541002900daa046370000200541144128102c2205450d0120052004360014200241106a41186a22094200370300200241106a41106a220a4200370300200241106a41086a220b42003703002002420037031020054118200241106a1000200241a0016a41186a2009290300370300200241a0016a41106a200a290300370300200241a0016a41086a200b290300370300200220022903103703a0012005102a20024100360210200241a0016a4120200241106a1006210a2002280210220b417f460d03200a450d032002200b3602142002200a3602102002200241106a106c02400240024020022802000d002002280214220c20022802042209490d002009417f4c0d050240024020090d00410121050c010b2009102e2205450d0220052002280210220d2009109a051a2002200c20096b3602142002200d20096a3602100b20050d020b41c4d1c300413320024180016a419cd9c3001038000b200941011037000b2009ad2208422086210e0240200b450d00200a102a0b200e2008842108200241a0016a412010090c040b411441011037000b412841011037000b1036000b41012105420021080b20032005360200200341046a20083702002003410c6a21032006200441016a2204470d000b0b200220063602182002200636021420022007360210200241a0016a200241106a108e04200241106a41186a200241a0016a41186a290300370300200241106a41106a2205200241a0016a41106a290300370300200241106a41086a200241a0016a41086a290300370300200220022903a00137031020024180016a41086a22034200370300200242003703800141e6efc200411520024180016a100820024190016a41086a20032903003703002002200229038001370390012002411036028401200220024190016a36028001200241106a20024180016a10f002200241106a10b20320024100360298012002420137039001200220024190016a3602a0012005200241a0016a10c801200241106a20024190016a10a001200220024190016a3602a001200241c0006a200241a0016a10c801200220024190016a3602a001200241e0006a200241a0016a10c801200228021421042002411c6a280200220520024190016a10b401024002402005450d00200541246c210b0340200241a0016a200410ec0120022802a001210a02400240200228029401220920022802980122056b20022802a8012203490d0020022802900121090c010b200520036a22062005490d04200941017422052006200520064b1b22054100480d040240024020090d002005102821090c010b20022802900120092005102c21090b2009450d032002200536029401200220093602900120022802980121050b2002200520036a36029801200920056a200a2003109a051a024020022802a401450d00200a102a0b200441246a2104200b415c6a220b0d000b0b200235029801210820022802900121090240200228021c2203450d0020022802142105200341246c210303400240024020052d0000220441034b0d0002400240024020040e0404000102040b2005410c6a280200450d03200541086a280200102a0c030b2005410c6a280200450d02200541086a280200102a0c020b2005410c6a280200450d01200541086a280200102a0c010b200541086a280200450d00200541046a280200102a0b200541246a21052003415c6a22030d000b0b0240200241186a280200450d002002280214102a0b200241c0016a240020084220862009ad840f0b200541011037000b1031000b200541041037000b41c4d1c300413320024180016a419cd9c3001038000bee2605017f027e0d7f027e067f230041b0036b22022400024002402001450d00200220003602080c010b200241013602080b2002200136020c2002200241086a106c024020022802000d00200228020421012002200241086a36029801200241003a0090032002420037028402200241f8b9c000360280022002200136022420024100360220200220024190036a36022c200220024198016a360228200241206a20024180026a10860420022802800221012002290284022103024020022d009003450d0020012003a72003422088a710b0020c010b2001450d002002200337021420022001360210200241206a200241106a1097040240024002400240024002400240024002400240024020022802204101460d00200241206a41086a2201290300210342002104200142003703002002420037032041feb3c300410d200241206a100820024180026a41086a200129030037030020022002290320370380022002410036022020024180026a4110200241206a100621010240024020022802202200417f460d002001450d0020004108490d01200129000021042001102a0b024041a00210282205450d0020054102360298012005420237036820052003200442dc0b7c220420032004561b3703a001200241106a21012002280214210603402001280200220741086a210020072f010622084103742101410021090240024003402001450d0141bee6c20020004108109c05220a450d02200141786a2101200941016a2109200041086a2100200a417f4a0d000b2009417f6a21080b024020060d004101210b0c080b2006417f6a2106200720084102746a41e4016a21010c010b0b200220072009410c6c6a220141e8006a280200360284022002200141e0006a28020036028002200241206a20024180026a107e02402002280220220c0d004101210b0c060b2002280224210d200241206a41086a22012802002208450d0320014200370300200242003703204193cdc2004111200241206a100820024180026a41086a200129030037030020022002290320370380022002410036022020024180026a4110200241206a1006210102400240024020022802202200417f460d002001450d002002200036029c012002200136029801200241206a20024198016a107b20022802202206450d02200229022421032000450d012001102a0c010b42002103410421060b2003a7210b2006210020062101024002400240024002402003422088a7220e450d002006200e41c4006c6a21004100210902400340200620096a22012d0000210a200241206a200141016a41c300109a051a200a4102460d0120024180026a41186a200241206a41186a29000037030020024180026a41106a200241206a41106a29000037030020024180026a41086a200241206a41086a2900003703002002200229002037038002200a4101460d03200941c4006a2109200141c4006a2000470d000b200021010c010b200141c4006a21010b0240034020002001460d0120012d00002109200141c4006a210120094102470d000b0b410121074100210f0240200b0d00410021100c020b2006102a410021100c010b20024198016a41086a220a20024180026a41086a29030037030020024198016a41106a220f20024180026a41106a29030037030020024198016a41186a221120024180026a41186a290300370300200220022903800222033703f0022002200337039801412010282207450d022007200229039801370000200741186a2011290300370000200741106a200f290300370000200741086a200a2903003700004101210f024002400240200e41c4006c41bc7f6a2009470d00410121100c010b200141c4006a2d00002109200241206a200141c5006a41c300109a051a20014188016a210a024020094102470d0041012110200a21010c020b4101210f410121100340200a21010240034020024180026a41186a220a200241206a41186a29000037030020024180026a41106a220e200241206a41106a29000037030020024180026a41086a2211200241206a41086a2900003703002002200229002037038002200941ff01714101460d0120002001460d0320012d00002109200241206a200141016a41c300109a051a200141c4006a210120094102460d040c000b0b20024198016a41086a2011290300220337030020024198016a41106a200e290300220437030020024198016a41186a200a29030022123703002002200229038002221337039801200241f0026a41186a220a2012370300200241f0026a41106a220e2004370300200241f0026a41086a22112003370300200220133703f00202402010200f470d00200f41016a2209200f490d14200f41017422142009201420094b1b221041ffffff3f712010470d14201041057422094100480d1402400240200f0d002009102821070c010b2007200f4105742009102c21070b2007450d050b2007200f4105746a220920022903f002370000200941186a200a290300370000200941106a200e290300370000200941086a2011290300370000200f41016a210f20002001460d0120012d00002109200241206a200141016a41c300109a051a200141c4006a210a20094102470d000b200141c4006a21010c010b200021010b0240034020002001460d0120012d00002109200141c4006a210120094102470d000b0b200b450d002006102a0b200c200841f0006c6a210820024180026a41106a211520024180026a41086a21144200210341042116200c210a02400340200a2802042101200a2802002100200241206a200a41086a41e800109a051a200a41f0006a210a024020010d00200a2008460d0a0340200a2802042206450d0b200a41086a280200210b0240200a410c6a2802002201450d00200141246c21002006210103400240024020012d0000220941034b0d0002400240024020090e0404000102040b2001410c6a280200450d03200141086a280200102a0c030b2001410c6a280200450d02200141086a280200102a0c020b2001410c6a280200450d01200141086a280200102a0c010b200141086a280200450d00200141046a280200102a0b200141246a21012000415c6a22000d000b0b200a41f0006a210a0240200b450d002006102a0b200a2008470d000c0b0b0b20024198016a200241206a41e800109a051a20022001360284022002200036028002201420024198016a41e800109a051a109801210120024190036a20024180026a10f6010240024002400240200228028002417f6a220020014f0d00200241206a200010f701200241206a20154120109c050d00200228028002221741002001417b6a2200200020014b1b490d0020024190036a20076b220641606a210e200641406a2111200641a07f6a21182007200f41057422096a210b410021010240024002400340024002400240200b200720016a22006b41e0004b0d00200f4105742001470d01410021000c060b024020062001470d0020024190036a21000c060b200020024190036a4120109c05450d05200e2001470d0120024190036a21000c050b0340024020024190036a2000470d0020024190036a21000c060b200020024190036a4120109c05450d05200041206a2100200941606a22090d000b410021000c040b200041206a221920024190036a4120109c05450d02024020112001470d0020024190036a21000c040b200041c0006a221920024190036a4120109c05450d01024020182001470d0020024190036a21000c040b200941807f6a210920014180016a2101200041e0006a20024190036a4120109c050d000b200720016a41606a21000c020b201921000c010b201921000b200241206a201710f701200241206a20024190036a4120109c05210120000d0020010d010b0240200228028c022200450d002002280284022101200041246c210003400240024020012d0000220941034b0d0002400240024020090e0404000102040b2001410c6a280200450d03200141086a280200102a0c030b2001410c6a280200450d02200141086a280200102a0c020b2001410c6a280200450d01200141086a280200102a0c010b200141086a280200450d00200141046a280200102a0b200141246a21012000415c6a22000d000b0b200228028802450d01200228028402102a0c010b20024190036a20024180026a10f601200241206a20024180026a41f000109a051a0240024020034220882204a722012003a7460d00200121000c010b200141016a22092001490d142004a722004101742206200920092006491bad220342f0007e2204422088a70d142004a722094100480d140240024020010d002009102821160c010b2016200141f0006c2009102c21160b2016450d020b2016200041f0006c6a200241206a41f000109a051a200241206a41186a220920024190036a41186a290300370300200241206a41106a220620024190036a41106a290300370300200241206a41086a220b20024190036a41086a29030037030020022002290390033703200240200f2010470d00200f41016a2201200f490d14200f410174220e2001200e20014b1b221041ffffff3f712010470d14201041057422014100480d1402400240200f0d002001102821070c010b2007200f4105742001102c21070b2007450d040b200342ffffffff0f83200041016aad4220868421032007200f4105746a22012002290320370000200141186a2009290300370000200141106a2006290300370000200141086a200b290300370000200f41016a210f0b200a2008470d010c0a0b0b200941041037000b200141011037000b200941011037000b412041011037000b41c4d1c300413320024190036a419cd9c3001038000b41a00241081037000b41c4d1c300413320024190036a419cd9c3001038000b2002200229022437038002419db6c300412820024180026a419cb4c3001038000b4101210b200d450d01200c102a0c010b0240200d450d00200c102a0b02402010450d002007102a0b0240200342ffffffff0f560d004101210b2003a7450d012016102a0c010b024020160d004101210b0c010b200541a00241c004102c2205450d01200541a0026a20024180026a41e800109a051a2005420237038803200520033703c003200520163602bc03200541033602b80320052002290398013703900320054198036a200241a0016a290300370300200541a0036a200241a8016a290300370300200541a8036a200241b0016a290300370300200541b0036a200241b8016a290300370300200541c8036a200241206a41f800109a051a4102210b0b200241106a210120022802142106024003402001280200220741086a210020072f010622084103742101410021090240024003402001450d0141a7c5c20020004108109c05220a450d02200141786a2101200941016a2109200041086a2100200a417f4a0d000b2009417f6a21080b2006450d022006417f6a2106200720084102746a41e4016a21010c010b0b200741e0006a2009410c6c6a22012802084104490d002001280200280000210742002103200241206a41086a2201420037030020024200370320419194c1004115200241206a100820024180026a41086a200129030037030020022002290320370380022002410036022020024180026a4110200241206a100621000240024020022802202201417f460d002002200136029c012002200036029801200241206a20024198016a10820120022802202209450d04200229022421032001450d012000102a0c010b410421090b4100210002402003422088a72201417f6a220a20014b0d00200a20014f0d002009200a4102746a2201450d00200128020020074721000b02402003a7450d002009102a0b20000d030b200b210f0c030b41c00441081037000b41c4d1c300413320024190036a419cd9c3001038000b2005200b41a0026c2201200b4101742200200b41016a220f2000200f4b1b41a0026c2200102c2205450d01200520016a20024180026a41e800109a05220142023703682001200229039801370370200141f8006a200241a0016a29030037030020014180016a200241a8016a29030037030020014188016a200241b0016a29030037030020014190016a200241b8016a2903003703002001419c016a20073602002001410d36029801200141a8016a200241206a41f800109a051a0b20022802102002280214200228021810b00220024100360288022002420137038002200f20024180026a10b401200f41a0026c210b20022802840221062002280288022101200521090340200241206a20091087042002280220210802400240200620016b20022802282207490d00200120076a2100200228028002210a0c010b200120076a22002001490d042006410174220a2000200a20004b1b220e4100480d040240024020060d00200e1028210a0c010b2002280280022006200e102c210a0b200a450d032002200e360284022002200a36028002200e21060b2002200036028802200a20016a20082007109a051a02402002280224450d002008102a0b200941a0026a210920002101200b41e07d6a220b0d000b200f41a0026c210920054198016a210103402001106a200141a0026a2101200941e07d6a22090d000b2005102a200241b0036a24002000ad422086200aad840f0b200041081037000b200e41011037000b1031000b2002418c026a4104360200200241346a410236020020024202370224200241bca7c4003602202002410436028402200241f8a8c400360280022002410036029c01200241b8aec60036029801200220024180026a360230200220024198016a36028802200241206a41cca7c400103e000bf00101067f2001280204210202400240024003402001280200220341086a210420032f01062205410374210141002106024003402001450d0141ffa0c60020044108109c052207450d03200141786a2101200641016a2106200441086a21042007417f4a0d000b2006417f6a21050b02402002450d002002417f6a2102200320054102746a41e4016a21010c010b0b20004187a1c600360204200041086a41283602000c010b200341e0006a2006410c6c6a220128020841074b0d01200041afa1c600360204200041086a41293602000b200041013602000f0b200041086a2001280200290000370300200041003602000be92c06087f017e097f027e017f027e230041b0026b22022400024002402001450d00200220003602100c010b200241013602100b20022001360214200241c8006a200241106a107f02400240200228024c2203450d00200241d4006a280200210420022802502105200241c8006a200241106a1079200228024822060d0102402004450d00200441246c21002003210103400240024020012d0000220741034b0d0002400240024020070e0404000102040b2001410c6a280200450d03200141086a280200102a0c030b2001410c6a280200450d02200141086a280200102a0c020b2001410c6a280200450d01200141086a280200102a0c010b200141086a280200450d00200141046a280200102a0b200141246a21012000415c6a22000d000b0b2005450d002003102a0b200241dc016a4104360200200241dc006a41023602002002420237024c200241bca7c400360248200241043602d40120024194a9c4003602d0012002410036022c200241b8aec6003602282002200241d0016a3602582002200241286a3602d801200241c8006a41cca7c400103e000b200241d0006a2802002108200228024c2109200241086a200241106a106c0240024020022802080d00200228020c21012002200241106a360228200241003a0038200242003702d401200241f8b9c0003602d0012002200136024c200241003602482002200241386a3602542002200241286a360250200241c8006a200241d0016a10860420022802d001210120022902d401210a024020022d0038450d002001200aa7200a422088a710b0020c010b20010d010b200241dc016a4104360200200241dc006a41023602002002420237024c200241bca7c400360248200241043602d40120024194a9c4003602d0012002410036022c200241b8aec6003602282002200241d0016a3602582002200241286a3602d801200241c8006a41cca7c400103e000b2002200a37021c20022001360218200241013b01342002420037022c200241f8b9c000360228200241286a41086a210b024002400240024002402008450d002006200841a0026c6a210c200241d0016a410272210d2006210e024002400240024002400240024002400340200e41e8006a2903004202520d0902400240200e28029801410247220f0d00200e2903a001210a200241186a2101200228021c211002400240024002400240024002400240024002400240024002400240024002400240024003402001280200221141086a210020112f010622124103742101410021070240024003402001450d0141f7fcc50020004108109c052213450d02200141786a2101200741016a2107200041086a21002013417f4a0d000b2007417f6a21120b2010450d022010417f6a2110201120124102746a41e4016a21010c010b0b0240201141e0006a2007410c6c6a220128020841074b0d00201442808080807083422984210a41fffcc50021120c020b200a42b8178020012802002900002214510d0341c6e6c2002112413121100c020b201442808080807083421c84210a41a8fdc50021120b200aa721100b024002400240024020022d0035450d004131210141f7e6c20021000c010b2002280228200228022c200228023010b0022002420037022c200241f8b9c000360228200242e2c289abb68edbb7f400370338200241d0016a410272410041da001099051a200241c8006a41004184011099051a41e40110282213450d0420134100360200201341046a200241d0016a41dc00109a051a201341e0006a200241c8006a418401109a051a2002410036022c2002201336022820132f0106220e4103742111417f210041002101024002400340024020112001470d00200e21000c020b200241386a201320016a41086a4108109c052207450d02200141086a2101200041016a2100200741004e0d000b0b200242e2c289abb68edbb7f40037025c2002200b360258200220003602542002201336024c200241003602482002200241286a360250201041046a2200417f4c0d062000450d02200010282201450d07200241003602ac02200220013602d0012010413f4b0d03200120104102743a0000410121070c1b0b412d210141a8e7c20021000b2002200136024c2002200036024841d5e7c2004122200241c8006a41f8e7c2001038000b200241003602ac0241012100200241013602d001410110282201450d05200141033a0000200241013602ac02200220013602d001410521070c130b201041808001490d162010418080808004490d150c100b200f0d0e200e2903a0012115200241c8006a200241186a10970402400240024020022802484101470d002002350250210a200228024c21160c010b2002290350210a200241c8006a41086a220142003703002002420037034841feb3c300410d200241c8006a1008200241d0016a41086a2001290300370300200220022903483703d00120024100360248200241d0016a4110200241c8006a100621010240024020022802482200417f470d00420021170c010b024020010d00420021170c010b200041074d0d07200129000021172001102a0b02402015200a423c7c560d004100210f2015201742dc0b7c220a540d020c110b201842808080807083422584210a41f8b5c30021160b4101210f0b024020022d0035450d004131210141f7e6c20021000c080b0240200f450d002002280228200228022c200228023010b0022002420037022c200241f8b9c000360228200242f4d2b59bc7ae98b8303703380c060b20022802282111200242f4d2b59bc7ae98b830370338201141f8b9c000460d05200228022c21100c060b41e40141041037000b1036000b200041011037000b410141011037000b41c4d1c3004133200241c8006a419cd9c3001038000b200d410041da001099051a200241c8006a41004184011099051a41e40110282211450d034100211020114100360200201141046a200241d0016a41dc00109a051a201141e0006a200241c8006a418401109a051a2002410036022c200220113602280b0340201141086a210020112f010622124103742101410021070240024003402001450d01200241386a20004108109c052213450d02200141786a2101200741016a2107200041086a21002013417f4a0d000b2007417f6a21120b2010450d032010417f6a2110201120124102746a41e4016a28020021110c010b0b412d210141a8e7c20021000b2002200136024c2002200036024841d5e7c2004122200241c8006a41f8e7c2001038000b200242f4d2b59bc7ae98b83037025c2002200b360258200220123602542002201136024c200241003602482002200241286a360250200241003602d801200242013703d00141011028210102400240200f0d002001450d03200141003a000020024281808080103702d401200220013602d001200141014109102c2201450d042001200a3700012002428980808090013702d401200220013602d0010c010b2001450d04200141013a000020024281808080103702d401200220013602d001200aa72201200241d0016a10b4010240024020022802d401220720022802d80122006b2001490d0020022802d00121070c010b200020016a22132000490d14200741017422112013201120134b1b22134100480d140240024020070d002013102821070c010b20022802d00120072013102c21070b2007450d06200220133602d401200220073602d0010b2002200020016a3602d801200720006a20162001109a051a0b200241386a41086a200241d0016a41086a280200360200200220022903d001370338200241c8006a200241386a10bb022002200f3a0035200241003a0034200a2118200f450d05200241d0016a41086a200241286a41086a290300370300200220022903283703d0010c110b41e40141041037000b410141011037000b410941011037000b410141011037000b201341011037000b200e41a0026a220e200c470d010c0a0b0b200141033a0000200241013602ac022000417f6a41034b0d01200041017422074105200741054b1b22074100480d0a0b200120002007102c2201450d01200220013602d001200721000b20012010360001410521070c030b200741011037000b02400240200041034b0d00200041017422074104200741044b1b22074100480d08200120002007102c2201450d01200220013602d001200721000b20012010410274410272360000410421070c020b200741011037000b0240200041014b0d0020012000200041017422074102200741024b1b2207102c2201450d02200220013602d001200721000b41022107200120104102744101723b00000b200220073602ac0202400240200020076b2010490d00200021130c010b200720106a22132007490d05200041017422112013201120134b1b22134100480d05200120002013102c2201450d02200220013602d0010b2002200720106a3602ac02200120076a20122010109a051a2002201336023c200220022802d001360238200220022802ac02360240200241c8006a200241386a10bb0220024180023b0134200241d0016a41086a200241286a41086a290300370300200220022903283703d0010c030b200741011037000b201341011037000b200241d0016a41086a200b290300370300200220022903283703d0010b2002280218200228021c200228022010b00202402004450d00200441246c21002003210103400240024020012d0000220741034b0d0002400240024020070e0404000102040b2001410c6a280200450d03200141086a280200102a0c030b2001410c6a280200450d02200141086a280200102a0c020b2001410c6a280200450d01200141086a280200102a0c010b200141086a280200450d00200141046a280200102a0b200141246a21012000415c6a22000d000b0b02402005450d002003102a0b02402008450d00200841a0026c210020064198016a210103402001106a200141a0026a2101200041e07d6a22000d000b0b02402009450d002006102a0b2002410036025020024201370348410110282201450d022002410136024c20022002280250220041016a36025020022001360248200120006a20022d00dc013a000002400240200228024c20022802502201460d00200228024821000c010b200141016a22002001490d01200141017422072000200720004b1b22074100480d010240024020010d002007102821000c010b200228024820012007102c21000b2000450d022002200736024c20022000360248200228025021010b2002200141016a360250200020016a20022d00dd013a000020022802d801200241c8006a10b40120022802d00122072100024020022802d4012213450d002013210120072100034020002802e40121002001417f6a22010d000b0b0240024002400240024002400240024002400240024020022802d80122120d00410021010c010b200241d0016a210f41002113034002400240201320002f01064f0d0020002013410c6c6a41e0006a2111200020134103746a41086a2101201341016a21130c010b02400240200028020022010d00201542808080807083200fad84211541002107410021010c010b2000330104422086200fad842115410121070b201521142015210a02402015422088a7220020012f0106490d000340200a221442ffffffff0f83210a200741016a210720012f01042200200128020022012f01064f0d000b0b20012000410c6c6a2113200120004103746a2110200041027420016a41e8016a28020021002014a7210f02402007417f6a2201450d00034020002802e40121002001417f6a22010d000b0b201341e0006a2111201041086a2101410021130b02400240200228024c20022802502207460d00200228024821100c010b200741016a22102007490d0c2007410174220e2010200e20104b1b220e4100480d0c0240024020070d00200e102821100c010b20022802482007200e102c21100b2010450d032002200e36024c20022010360248200228025021070b2002200741016a360250201020076a20012d00003a000002400240200228024c20022802502207460d00200228024821100c010b200741016a22102007490d0c2007410174220e2010200e20104b1b220e4100480d0c0240024020070d00200e102821100c010b20022802482007200e102c21100b2010450d042002200e36024c20022010360248200228025021070b2002200741016a360250201020076a20012d00013a000002400240200228024c20022802502207460d00200228024821100c010b200741016a22102007490d0c2007410174220e2010200e20104b1b220e4100480d0c0240024020070d00200e102821100c010b20022802482007200e102c21100b2010450d052002200e36024c20022010360248200228025021070b2002200741016a360250201020076a20012d00023a000002400240200228024c20022802502207460d00200228024821100c010b200741016a22102007490d0c2007410174220e2010200e20104b1b220e4100480d0c0240024020070d00200e102821100c010b20022802482007200e102c21100b2010450d062002200e36024c20022010360248200228025021070b2002200741016a360250201020076a20012d00033a000002400240200228024c20022802502207460d00200228024821100c010b200741016a22102007490d0c2007410174220e2010200e20104b1b220e4100480d0c0240024020070d00200e102821100c010b20022802482007200e102c21100b2010450d072002200e36024c20022010360248200228025021070b2002200741016a360250201020076a20012d00043a000002400240200228024c20022802502207460d00200228024821100c010b200741016a22102007490d0c2007410174220e2010200e20104b1b220e4100480d0c0240024020070d00200e102821100c010b20022802482007200e102c21100b2010450d082002200e36024c20022010360248200228025021070b2002200741016a360250201020076a20012d00053a000002400240200228024c20022802502207460d00200228024821100c010b200741016a22102007490d0c2007410174220e2010200e20104b1b220e4100480d0c0240024020070d00200e102821100c010b20022802482007200e102c21100b2010450d092002200e36024c20022010360248200228025021070b2002200741016a360250201020076a20012d00063a000002400240200228024c20022802502207460d00200228024821100c010b200741016a22102007490d0c2007410174220e2010200e20104b1b220e4100480d0c0240024020070d00200e102821100c010b20022802482007200e102c21100b2010450d0a2002200e36024c20022010360248200228025021070b2002200741016a360250201020076a20012d00073a00002011280200211020112802082201200241c8006a10b40102400240200228024c2211200228025022076b2001490d00200228024821110c010b200720016a220e2007490d0c20114101742207200e2007200e4b1b22074100480d0c0240024020110d002007102821110c010b200228024820112007102c21110b2011450d0b2002200736024c20022011360248200228025021070b2002200720016a360250201120076a20102001109a051a2012417f6a22120d000b20022802d801210120022802d401211320022802d00121070b2002350248210a2002350250211420072013200110b002200241b0026a2400200a2014422086840f0b200e41011037000b200e41011037000b200e41011037000b200e41011037000b200e41011037000b200e41011037000b200e41011037000b200e41011037000b200741011037000b1031000b200741011037000b410141011037000b5702017f027e230041306b2202240020024101410010a80320024100360228200242013703202002200241206a36022c20022002412c6a10c8012002350228210320023502202104200241306a240020042003422086840bba48030b7f047e017f230041d00c6b22022400024002402001450d00200220003602100c010b200241013602100b20022001360214200241f0066a200241106a107a024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022903d8074203510d00200241186a200241f0066a41a002109a051a200241f0026a200241186a41a002109a051a200241f0066a200241f0026a10870420022802f8062103024020022802f406450d0020022802f006102a0b200241f0066a200241f0026a41a002109a051a20024190056a200241f0066a10d10341012100024020022d0090054101470d00200220022d0093053a00bb02200220022f0091053b00b902200241013a00b8020c180b200241f0066a20024190056a41086a41d801109a051a200241086a200241c0076a220410f301024002402002290390074202520d00200241b8026a41206a22014200370300200241b8026a41186a22004280808080c000370300200241013a00e002200242043703c8022002427f3703c002200242003703b80220024190056a41206a2203420037030020024190056a41186a22054280808080c000370300200241013a00b805200242043703a0052002427f370398052002420037039005200241c8096a200241b8026a20024190056a109b04200241b8026a41286a2206200241c8096a41286a2903003703002001200241c8096a41206a2903003703002000200241c8096a41186a290300370300200241b8026a41106a2207200241c8096a41106a290300370300200241b8026a41086a2208200241c8096a41086a290300370300200220022903c8093703b8022003420037030020054280808080c000370300200241013a00b805200242043703a0052002427f370398052002420037039005200241f8096a200241b8026a20024190056a109b042006200241f8096a41286a2903003703002001200241f8096a41206a2903003703002000200241f8096a41186a2903003703002007200241f8096a41106a2903003703002008200241f8096a41086a290300370300200220022903f8093703b8022003420037030020054280808080c000370300200241013a00b805200242043703a0052002427f370398052002420037039005200241a80a6a200241b8026a20024190056a109b042006200241a80a6a41286a2903003703002001200241a80a6a41206a2903003703002000200241a80a6a41186a2903003703002007200241a80a6a41106a2903003703002008200241a80a6a41086a290300370300200220022903a80a3703b8022003420037030020054280808080c000370300200241013a00b805200242043703a0052002427f370398052002420037039005200241d80a6a200241b8026a20024190056a109b042006200241d80a6a41286a2903003703002001200241d80a6a41206a2903003703002000200241d80a6a41186a2903003703002007200241d80a6a41106a2903003703002008200241d80a6a41086a290300370300200220022903d80a3703b8022003420037030020054280808080c000370300200241013a00b805200242043703a0052002427f370398052002420037039005200241880b6a200241b8026a20024190056a109b042006200241880b6a41286a2903003703002001200241880b6a41206a2903003703002000200241880b6a41186a2903003703002007200241880b6a41106a2903003703002008200241880b6a41086a290300370300200220022903880b3703b8022003420037030020054280808080c000370300200241013a00b805200242043703a0052002427f370398052002420037039005200241b80b6a200241b8026a20024190056a109b04200241980c6a41286a2203200241b80b6a41286a290300370300200241980c6a41206a2206200241b80b6a41206a290300370300200241980c6a41186a2205200241b80b6a41186a290300370300200241980c6a41106a2207200241b80b6a41106a290300370300200241980c6a41086a2208200241b80b6a41086a290300370300200220022903b80b3703980c2001420037030020004280808080c000370300200241013a00e002200242043703c8022002427f3703c002200242003703b802200241e80b6a200241980c6a200241b8026a109b042002419c056a2201200241e80b6a41086a290300370200200241a4056a2200200241e80b6a41106a290300370200200241ac056a2209200241e80b6a41186a290300370200200241b4056a220a200241e80b6a41206a290300370200200241bc056a220b200241e80b6a41286a290300370200200220022903e80b3702940520024198096a41286a220c200b29020037030020024198096a41206a220b200a29020037030020024198096a41186a220a200929020037030020024198096a41106a2209200029020037030020024198096a41086a220020012902003703002002200229029405370398092003200c2903003703002006200b2903003703002005200a290300370300200720092903003703002008200029030037030020022002290398093703980c418102210120022802c0074112460d010c170b20022d000c210b20022802082108200241b8026a41206a22014200370300200241b8026a41186a22004280808080c000370300200241013a00e002200242043703c8022002427f3703c002200242003703b80220024190056a41206a2205420037030020024190056a41186a22064280808080c000370300200241013a00b805200242043703a0052002427f37039805200242003703900520024198096a200241b8026a20024190056a109b04200241b8026a41286a220720024198096a41286a290300370300200120024198096a41206a290300370300200020024198096a41186a290300370300200241b8026a41106a220920024198096a41106a290300370300200241b8026a41086a220a20024198096a41086a29030037030020022002290398093703b8022005420037030020064280808080c000370300200241013a00b805200242043703a0052002427f370398052002420037039005200241c8096a200241b8026a20024190056a109b042007200241c8096a41286a2903003703002001200241c8096a41206a2903003703002000200241c8096a41186a2903003703002009200241c8096a41106a290300370300200a200241c8096a41086a290300370300200220022903c8093703b802200241b80b6a41086a22014200370300200242003703b80b41d9efc200410d200241b80b6a1008200241880b6a41086a2001290300370300200220022903b80b3703880b410021002002410036029005200241880b6a411020024190056a1006210102402002280290052205417f460d002001450d0020054104490d03200128000021002001102a0b2000ad210d427f210e02402002290390074201520d00200229039807220e4200510d04200d200241a0076a290300220f200f200d541b2210200e7c2010200f7d200e827d210e0b20024190056a41206a420037030020024190056a41186a4280808080c000370300200241bc056a2002419b0c6a280000360000200241013a00b805200242043703a0052002420037039005200220022800980c3600b90520024200200e200d7d220d200d200e561b37039805200241f8096a200241b8026a20024190056a109b04200241980c6a41286a200241f8096a41286a290300370300200241980c6a41206a200241f8096a41206a290300370300200241980c6a41186a200241f8096a41186a290300370300200241980c6a41106a200241f8096a41106a290300370300200241980c6a41086a200241f8096a41086a290300370300200220022903f8093703980c20022802b8072100411310282201450d04200141002900cef0423700002001410f6a41002800ddf042360000200141086a41002900d6f04237000020024293808080b0023702bc0b200220013602b80b200241f0066a200241b80b6a108f0120022802c00b210120022802b80b2105200241b8026a41186a22064200370300200241b8026a41106a22074200370300200241b8026a41086a22094200370300200242003703b80220052001200241b8026a1000200241e80b6a41186a2006290300370300200241e80b6a41106a2007290300370300200241e80b6a41086a2009290300370300200220022903b8023703e80b024020022802bc0b450d0020022802b80b102a0b200241003602b802200241e80b6a4120200241b8026a100621010240024020022802b8022205417f460d002001450d00024020054104490d00200128000021092001102a200920004d0d02200220022800880b3602900920022002418b0b6a28000036009309200241003a00bb0220024180063b00b902200241013a00b80220022802a80c21030240200241b00c6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102a0b2001410c6a2101200041746a22000d000b0b0240200241ac0c6a280200450d002003102a0b20022802b40c21030240200241bc0c6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102a0b2001410c6a2101200041746a22000d000b0b200241b80c6a280200450d1a2003102a0c1a0b41c4d1c3004133200241c80c6a419cd9c3001038000b410021090b410c10282205450d05410410282201450d06200242043702bc02200220013602b802200241f0066a200241b8026a108f010240024020022802bc02220620022802c00222016b4104490d0020022802b80221070c010b200141046a22072001490d1a200641017422012007200120074b1b22014100480d1a0240024020060d002001102821070c010b20022802b80220062001102c21070b2007450d08200220013602bc02200220073602b80220022802c00221010b410421062002200141046a3602c002200720016a2000360000200241e80b6a41086a20022802c0022201360200200220022903b802220e3703e80b200541086a20013602002005200e370200410021010240200920004f0d00410c10282206450d09410410282201450d0a200242043702bc02200220013602b802200241f0066a200241b8026a108f010240024020022802bc02220720022802c00222016b4104490d0020022802b80221070c010b200141046a22092001490d1b200741017422012009200120094b1b22014100480d1b0240024020070d002001102821070c010b20022802b80220072001102c21070b2007450d0c200220013602bc02200220073602b80220022802c00221010b2002200141046a3602c002200720016a2000417f6a360000200241e80b6a41086a20022802c0022201360200200220022903b802220e3703e80b200641086a20013602002006200e370200410121010b20024190056a41206a42818080801037030020024190056a41186a2001360200200241a4056a2001360200200220022800880b3602900920022002418b0b6a28000036009309200241bc056a200228009309360000200241013a00b805200220053602ac05200220063602a0052002427f3703980520022008ad220e3703900520022002280290093600b905200241a80a6a200241980c6a20024190056a109b04200241980c6a41286a200241a80a6a41286a290300370300200241980c6a41206a200241a80a6a41206a290300370300200241980c6a41186a200241a80a6a41186a290300370300200241980c6a41106a200241a80a6a41106a290300370300200241980c6a41086a200241a80a6a41086a290300370300200220022903a80a3703980c200241b8026a200b4101712201200310b80320022d00b8020d14200241b8026a2008200110b90320022d00b802450d1320022f00b90220022d00bb024110747221010c150b200241e4076a2802002100200241b8026a10fb01200010fc0120022802b802220120022802c00241014100410010032103024020022802bc02450d002001102a0b41800621012003417f470d1510fb01220c200241e0076a280200470d15200241b80b6a41086a22014200370300200242003703b80b41c2e1c000410d200241b80b6a1008200241880b6a41086a2001290300370300200220022903b80b3703880b200241003602b802200241880b6a4110200241b8026a100621010240024020022802b8022203417f460d002001450d00200220033602bc0b200220013602b80b200241b8026a200241b80b6a107c20022802b802220b450d0c20022902bc02210e2003450d012001102a0c010b4101210b4200210e20022802e40721000b024002402000200e422088a74f0d00200b20004105746a2211450d00200241003602c002200242013703b802200241c4076a2802002100410410282201450d0d20024284808080c0003702bc02200220013602b80220012000360000200241c8076a2802002106200241d0076a2802002201200241b8026a10b4010240024020022802bc02220320022802c00222006b2001490d0020022802b80221030c010b200020016a22072000490d1b200341017422082007200820074b1b22074100480d1b0240024020030d002007102821030c010b20022802b80220032007102c21030b2003450d0f200220073602bc02200220033602b8020b2002200020016a3602c002200320006a20062001109a051a200241d4076a2802002100200241dc076a2802002201200241b8026a10b4010240024020010d0020022802bc02210620022802c00221090c010b20002001410c6c6a210a034020002802002108200041086a2802002201200241b8026a10b4010240024020022802bc02220620022802c00222036b2001490d0020022802b80221070c010b200320016a22072003490d1d200641017422092007200920074b1b22094100480d1d0240024020060d002009102821070c010b20022802b80220062009102c21070b2007450d12200220093602bc02200220073602b802200921060b2002200320016a22093602c002200720036a20082001109a051a2000410c6a2200200a470d000b0b20022802e007210302400240200620096b4104490d0020022802b80221010c010b200941046a22012009490d1b200641017422002001200020014b1b22004100480d1b0240024020060d002000102821010c010b20022802b80220062000102c21010b2001450d11200220003602bc02200220013602b802200021060b2002200941046a22003602c002200120096a200336000020022802e407210702400240200620006b41034d0d00200621030c010b200041046a22032000490d1b200641017422082003200820034b1b22034100480d1b0240024020060d002003102821010c010b200120062003102c21010b2001450d12200220033602bc02200220013602b8020b200120006a20073600002001200941086a200241e8076a2011100a210002402003450d002001102a0b2000450d010b4180082101200ea7450d16200b102a0c160b410c10282201450d10410410282200450d1120024284808080c0003702bc02200220003602b8022000200c3600002011200241b8026a108f01200241b80b6a41086a20022802c0022200360200200220022903b802220d3703b80b200141086a20003602002001200d370200200220022800880b3602d80a20022002418b0b6a2800003600db0a0240200ea7450d00200b102a0b20024190056a41206a42818080801037030020024190056a41186a4100360200200241bc056a20022800db0a360000200241013a00b805200220013602ac05200242043703a0052002427f370398052002420037039005200220022802d80a3600b905200241e80b6a200241980c6a20024190056a109b04200241b8026a41086a20022903e80b370300200241b8026a41106a200241e80b6a41086a290300370300200241b8026a41186a200241e80b6a41106a290300370300200241b8026a41206a200241e80b6a41186a290300370300200241b8026a41286a200241e80b6a41206a290300370300200241e8026a200241e80b6a41286a290300370300200241003a00b8020c160b200241246a410436020020024184036a4102360200200242023702f402200241bca7c4003602f0022002410436021c200241aca9c4003602182002410036029405200241b8aec600360290052002200241186a36028003200220024190056a360220200241f0026a41cca7c400103e000b41c4d1c3004133200241c80c6a419cd9c3001038000b41fcf8c5001032000b411341011037000b410c41041037000b410441011037000b200141011037000b410c41041037000b410441011037000b200141011037000b41c4d1c3004133200241c80c6a419cd9c3001038000b410441011037000b200741011037000b200941011037000b200041011037000b200341011037000b410c41041037000b410441011037000b20024190056a41206a2205420037030020024190056a41186a22064280808080c000370300200220022800880b3602e80b20022002418b0b6a2800003600eb0b200241bc056a20022800eb0b360000200242043703a0052002427f370398052002427f200e20011b37039005200220022802e80b3600b905200241013a00b805200241d80a6a200241980c6a20024190056a109b04200241e80b6a41286a2207200241d80a6a41286a290300370300200241e80b6a41206a2209200241d80a6a41206a290300370300200241e80b6a41186a2200200241d80a6a41186a290300370300200241e80b6a41106a220a200241d80a6a41106a290300370300200241e80b6a41086a220b200241d80a6a41086a290300370300200220022903d80a3703e80b20024190056a20022903a807200241b0076a290300200241f0066a200820012003109e02024020022d0090054101470d00200220022d0093053a00bb02200220022f0091053b00b902200241013a00b80220022802f80b2103024020002802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102a0b2001410c6a2101200041746a22000d000b0b0240200241fc0b6a280200450d002003102a0b20022802840c210302402002418c0c6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102a0b2001410c6a2101200041746a22000d000b0b200241880c6a280200450d042003102a0c040b200241980c6a41286a20024190056a41306a2201290300370300200241980c6a41206a20024190056a41286a290300370300200241980c6a41186a2005290300370300200241980c6a41106a2006290300370300200241980c6a41086a20024190056a41106a29030037030020022002290398053703980c200241880b6a200241e80b6a200241980c6a109b042007200241880b6a41286a2903003703002009200241880b6a41206a2903003703002000200241880b6a41186a290300370300200a200241880b6a41106a290300370300200b200241880b6a41086a290300370300200220022903880b3703e80b20024190056a200410d203024020022d0090054101470d00200220022d0093053a00bb02200220022f0091053b00b902200241013a00b80220022802f80b21030240200241800c6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102a0b2001410c6a2101200041746a22000d000b0b0240200241fc0b6a280200450d002003102a0b20022802840c210302402002418c0c6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102a0b2001410c6a2101200041746a22000d000b0b200241880c6a280200450d042003102a0c040b200241980c6a41286a2001290300370300200241980c6a41206a20024190056a41286a290300370300200241980c6a41186a20024190056a41206a290300370300200241980c6a41106a20024190056a41186a290300370300200241980c6a41086a20024190056a41106a29030037030020022002290398053703980c200241b80b6a200241e80b6a200241980c6a109b04200241b8026a41086a20022903b80b370300200241b8026a41106a200241b80b6a41086a290300370300200241b8026a41186a200241b80b6a41106a290300370300200241b8026a41206a200241b80b6a41186a290300370300200241b8026a41286a200241b80b6a41206a290300370300200241b8026a41306a200241b80b6a41286a290300370300200241003a00b8020c030b20022f00b90220022d00bb024110747221010b200220022800880b3602e80b20022002418b0b6a2800003600eb0b200241013a00b802200220013b00b902200220014110763a00bb0220022802a80c21030240200241b00c6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102a0b2001410c6a2101200041746a22000d000b0b0240200241ac0c6a280200450d002003102a0b20022802b40c21030240200241bc0c6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102a0b2001410c6a2101200041746a22000d000b0b200241b80c6a280200450d012003102a0c010b200241003a00bb02200220013b00b902200241013a00b80220022802a80c2103024020052802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102a0b2001410c6a2101200041746a22000d000b0b0240200241ac0c6a280200450d002003102a0b20022802b40c21030240200241bc0c6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102a0b2001410c6a2101200041746a22000d000b0b200241b80c6a280200450d002003102a0b2004106a20022d00b80221000b024002400240024002400240410110282201450d00200242013702f406200220013602f00602400240200041ff01714101460d00200241013602f806200141003a0000200241c0026a290300210e024020022802f4062200417f6a41074b0d00200041017422034109200341094b1b22034100480d09200120002003102c2201450d04200220033602f406200220013602f0060b200241093602f8062001200e370001200241d0026a2802002100200241d8026a2802002201200241f0066a10b40102402001450d0020002001410c6c6a2108034020002802002106200041086a2802002201200241f0066a10b4010240024020022802f406220520022802f80622036b2001490d0020022802f00621050c010b200320016a22072003490d0b200541017422042007200420074b1b22074100480d0b0240024020050d002007102821050c010b20022802f00620052007102c21050b2005450d07200220073602f406200220053602f0060b2002200320016a3602f806200520036a20062001109a051a2000410c6a22002008470d000b0b200241dc026a2802002100200241e4026a2802002201200241f0066a10b4010240024020010d0020022802f406210620022802f80621080c010b20002001410c6c6a2104034020002802002107200041086a2802002201200241f0066a10b4010240024020022802f406220620022802f80622036b2001490d0020022802f00621050c010b200320016a22052003490d0b200641017422082005200820054b1b22084100480d0b0240024020060d002008102821050c010b20022802f00620062008102c21050b2005450d08200220083602f406200220053602f006200821060b2002200320016a22083602f806200520036a20072001109a051a2000410c6a22002004470d000b0b200241c8026a290300210e02400240200620086b4108490d0020022802f00621030c010b200841086a22012008490d09200641017422002001200020014b1b22014100480d090240024020060d002001102821030c010b20022802f00620062001102c21030b2003450d07200220013602f406200220033602f0060b2002200841086a3602f806200320086a200e370000024020022802f40620022802f8062201470d00200141016a22002001490d09200141017422052000200520004b1b22004100480d090240024020010d002000102821030c010b200320012000102c21030b2003450d08200220003602f406200220033602f0060b2002200141016a22053602f806200320016a20022d00e8023a00000c010b200241013602f806200141013a0000200241b8026a410172200241f0066a10c60320022802f806210520022802f00621030b024020022d00b8020d000240200241d8026a2802002200450d00200241d0026a28020021012000410c6c210003400240200141046a280200450d002001280200102a0b2001410c6a2101200041746a22000d000b0b0240200241d4026a280200450d0020022802d002102a0b0240200241e4026a2802002200450d00200241dc026a28020021012000410c6c210003400240200141046a280200450d002001280200102a0b2001410c6a2101200041746a22000d000b0b200241e0026a280200450d0020022802dc02102a0b200241d00c6a24002005ad4220862003ad840f0b410141011037000b200341011037000b200741011037000b200841011037000b200141011037000b200041011037000b1031000bd40505017f027e077f017e017f230041206b220324002002290300210420012903002105200141106a2106200228021021070240024002400240024002400240200141146a2802002208200141186a28020022096b200241186a280200220a490d00200628020021080c010b2009200a6a220b2009490d032008410174220c200b200c200b4b1b220bad420c7e220d422088a70d03200da7220c4100480d030240024020080d00200c102821080c010b20062802002008410c6c200c102c21080b2008450d0120012008360210200141146a200b3602000b20082009410c6c6a2007200a410c6c109a051a200141186a2009200a6a36020020024100360218200341086a200641086a280200360200200320062902003703002001411c6a2106200228021c210b02400240200141206a2802002208200141246a28020022096b200241246a280200220a490d00200628020021080c010b2009200a6a220c2009490d032008410174220e200c200e200c4b1b220cad420c7e220d422088a70d03200da7220e4100480d030240024020080d00200e102821080c010b20062802002008410c6c200e102c21080b2008450d022001200836021c200141206a200c3602000b427f200520047c220420042005541b210520082009410c6c6a200b200a410c6c109a051a200141246a2009200a6a36020020024100360224200341106a41086a200641086a28020036020020032006290200370310200229030822042001290308220d200d2004561b210420012d0028450d034101210120022d0028450d030c040b200c41041037000b200e41041037000b1031000b410021010b20002005370300200020032903003702102000200329031037021c200020013a002820002004370308200041186a200341086a280200360200200041246a200341106a41086a2802003602000240200241146a280200450d002007102a0b0240200241206a280200450d00200b102a0b200341206a24000ba13507037f017e037f017e147f027e107f230041d0036b2202240002400240024002400240024002400240024020014104490d0020002800002103101a4101470d07200241a8016a41086a22004200370300200242003703a801419be1c0004111200241a8016a1008200241e8006a41086a2000290300370300200220022903a80137036841002101200241003602a801200241e8006a4110200241a8016a100621000240024020022802a8012204417f460d002000450d0020044104490d01200028000021012000102a0b200241003602a801410141838ac100411c200241a8016a101b2100024002400240024020022802a8012204417f470d00410121040c010b2004ad22054220862005842105200045210420000d010b41002100410121060c010b2005422088a74105490d04200028000121070240024020002d00000d0020072003460d0141002106200720034f0d02410121060c020b4101210620072001490d010b410021060b200120034f0d022006450d020240410110282201450d00200141003a00000240200141014105102c2201450d0020012003360001410141838ac100411c4100200020041b22062005422088a7417f20061b20014105101c21062001102a024020042005a745720d002000102a0b20060d0a200241a8016a41086a22004200370300200242003703a80141c2e1c000410d200241a8016a1008200241e8006a41086a2000290300370300200220022903a801370368200241003602a801200241e8006a4110200241a8016a1006210002400240024020022802a8012201417f460d002000450d002002200136022c20022000360228200241a8016a200241286a107c20022802a8012208450d0220022902ac0121092001450d012000102a0c010b42002109410121080b200241186a109d042002280218210a2002280220220b4115490d07200b410176220c41ffffff3f71200c470d09200c4105742200417f4c0d094101210d024002402000450d0020001028220d450d010b200a41606a210e200a41a07f6a210f41002110410021114104211241002113200b211403400240024020142215417f6a22040d0041012107410021140c010b024002400240024002400240200a20044105746a20154105742216200a6a41406a4120109c054100480d002015417e6a2106200f20166a210041002114410021010340024020062001470d00201521070c080b200141016a2101200041206a20004120109c052104200041606a21002004417f4a0d000b200141016a21072001417f7320156a21040c010b200f20166a210002400340024020044101470d00410021040c020b2004417f6a2104200041206a20004120109c052101200041606a210020014100480d000b0b20152004490d012015200b4b0d03201520046b22074101762206450d00200e20166a2100200a20044105746a21010340200241a8016a41186a2216200141186a2217290000370300200241a8016a41106a2218200141106a2219290000370300200241a8016a41086a221a200141086a221b290000370300200220012900003703a801200041086a221c2900002105200041106a221d290000211e200041186a2214290000211f200120002900003700002017201f3700002019201e370000201b200537000020142016290300370000201d2018290300370000201c201a290300370000200020022903a801370000200041606a2100200141206a21012006417f6a22060d000b0b024020040d00200421140c050b0240200741094d0d00200421140c050b2015200b4b0d01201520046b2106200a20044105746a2116034020152004417f6a2214490d040240201520146b22074102490d00200a20044105746a2200200a20144105746a22044120109c05417f4a0d002004290000210520042000290000370000200241a8016a41186a221a200441186a2201290000370300200241a8016a41106a221b200441106a2217290000370300200241a8016a41086a221c200441086a22182900003703002018200041086a2900003700002017200041106a2900003700002001200041186a290000370000200220053703a80141012119024020074103490d00200441c0006a200241a8016a4120109c05417f4a0d00410221012016210002400340200041186a200041386a290000370000200041106a200041306a290000370000200041086a200041286a2900003700002000200041206a221729000037000020062001460d01200041c0006a21182001211920172100200141016a21012018200241a8016a4120109c05417f4a0d020c000b0b200121190b200420194105746a220020022903a801370000200041186a201a290300370000200041106a201b290300370000200041086a201c2903003700000b2014450d05201641606a2116200641016a2106201421042007410a4f0d050c000b0b200420151044000b20152004417f6a2214490d010b2015200b103c000b201420151044000b02400240024020132011470d00201141016a22002011490d11201141017422012000200120004b1b220041ffffffff01712000470d11200041037422014100480d110240024020110d002001102821120c010b201220114103742001102c21120b2012450d0120002111201021130b201220134103746a2200200736020420002014360200201041016a2213211020134102490d0102400340024002400240024020122013417f6a22104103746a2200280200450d00201341037420126a220641746a2802002204200028020422014d0d000240201341024b0d0020132110410221130c080b20122013417d6a221a4103746a2802042200200120046a4d0d010240201341034b0d0020132110410321130c080b200641646a280200200020046a4d0d01201321100c070b20134103490d012000280204210120122013417d6a221a4103746a28020421000b20002001490d010b2013417e6a211a0b0240024002400240024002402013201a41016a22204b2221450d002013201a4b2222450d012012201a4103746a221b2802042223201b2802006a2200201220204103746a221c280200221d490d022000200b4b0d03200a201d4105746a2218201c280204221941057422016a2106200041057421042000201d6b221520196b220020194f0d04200d200620004105742201109a05221720016a21070240024020194101480d00200041014e0d010b20062100201721010c060b200e20046a21042006210003402004200041606a2206200741606a2215201520064120109c0541004822161b2201290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a2900003700002007201520161b2107024020182006200020161b2200490d00201721010c070b200441606a21042017210120172007490d000c060b0b41b8dbc000202020131034000b41b8dbc000201a20131034000b201d20001044000b2000200b103c000b200d20182001109a05221720016a21070240024020194101480d00201520194a0d010b20182100201721010c010b200a20046a211620172101201821000340200020062001200620014120109c0541004822151b2204290000370000200041186a200441186a290000370000200041106a200441106a290000370000200041086a200441086a2900003700002001200141206a20151b2101200041206a2100200641206a200620151b220620164f0d01200720014b0d000b0b20002001200720016b416071109a051a02402022450d00201b201d360200201b41046a202320196a3602002021450d02201c201c41086a20132020417f736a410374109b051a20102113201041014d0d040c010b0b41c8dbc000201a20131034000b41b0b1c0001032000b200141041037000b20140d000b02402011450d002012102a0b200c450d09200d102a0c090b200041011037000b41c4d1c3004133200241186a419cd9c3001038000b410541011037000b410141011037000b41c4d1c3004133200241186a419cd9c3001038000b200241f4006a4104360200200241bc016a4102360200200242023702ac01200241bca7c4003602a8012002410436026c200241c8a9c4003602682002410036022c200241b8aec6003602282002200241e8006a3602b8012002200241286a360270200241a8016a41cca7c400103e000b20042005a745720d052000102a0c050b02402005a7450d002000102a0b41e695c600412d100b0c040b200b4102490d00200a200b417f6a22014105746a21074101210403400240024002400240200b20012200417f6a2201490d00200b20016b22154102490d03200a20004105746a2200200a20014105746a22064120109c05417f4a0d032006290000210520062000290000370000200241a8016a41186a2213200641186a2216290000370300200241a8016a41106a2219200641106a2217290000370300200241a8016a41086a2212200641086a22182900003703002018200041086a2900003700002017200041106a2900003700002016200041186a290000370000200220053703a8014101210020154103490d02200641c0006a200241a8016a4120109c05417f4a0d0241002115200721000340200041186a200041386a290000370000200041106a200041306a290000370000200041086a200041286a2900003700002000200041206a2217290000370000200420152216460d022016417f6a2115200041c0006a2118201721002018200241a8016a4120109c05417f4a0d020c000b0b2001200b1044000b410220166b21000b200620004105746a220020022903a801370000200041186a2013290300370000200041106a2019290300370000200041086a20122903003700000b200741606a21072004417f6a210420010d000b0b2009a721102009422088a72200450d01200820004105746a2118200241a8016a41016a211a200241c0026a2124200241e9026a211b200241e0016a2125200241a8016a41306a2126200241a8016a41286a212741002115200821070240024002400240024002400340024002400240200b41014b0d000240200b0e020c000c0b0340200241a8016a41186a200741186a290000370300200241a8016a41106a200741106a290000370300200241a8016a41086a200741086a290000370300200220072900003703a801200a200241a8016a4120109c05450d02201541016a21152018200741206a2207470d000c0c0b0b0340200241a8016a41186a200741186a290000370300200241a8016a41106a200741106a290000370300200241a8016a41086a200741086a290000370300200220072900003703a801200741206a21070240200b450d0041002100200b210103402001410176220420006a22062000200a20064105746a200241a8016a4120109c054101481b2100200120046b220141014b0d000b200a20004105746a200241a8016a4120109c05450d030b201541016a211520072018460d0b0c000b0b200741206a2107410021000b0240024002400240024002400240200b20004d0d0020024100360268200241e8006a101d2104024020022802682201417f470d00410221060c0a0b200220013602ac01200220043602a8012001450d0320042d0000210620022001417f6a3602ac012002200441016a3602a801200641014b0d030240024020060e020100010b410021202021210c2012211c2019211420132128201721292016211d2021212a2012212b2019212c2013212d2017212e2016212f0c060b200241106a200241a8016a106c20022802100d0320022802ac0122062002280214222b490d03202b417f4c0d0e02400240202b0d004101212041010d010c050b202b102e2220450d02202020022802a801221c202b109a05211d20022006202b6b3602ac012002201c202b6a3602a801201d450d040b200241086a200241a8016a106c20022802080d0220022802ac01410c6e222e410c6c2206417f4c0d0e200228020c212f0240024002400240024020060d004104212d0c010b20061028222d450d010b024002400240202f0d00202d212c0c010b4100210c4100211c41002114202d212c03402002200241a8016a106c20022802000d0220022802ac01221d20022802042206490d022006417f4c0d140240024020060d00410121290c010b2006102e2229450d05202920022802a80122282006109a051a2002201d20066b3602ac012002202820066a3602a8010b201441016a211d02402014202e470d00200c201d200c201d4b1b222ead420c7e2205422088a70d182005a722284100480d180240024020140d0020281028212d0c010b202d201c2028102c212d0b202d450d06202d212c0b202c201c6a22142029360200201441046a2006ad2205422086200584370200200c41026a210c201c410c6a211c201d2114202f201d470d000b0b202c450d06202b212a202f211d202e2129202d2128202c2114202b211c202b210c20200d080c070b02402014450d004100210603400240202c20066a221d41046a280200450d00201d280200102a0b201c2006410c6a2206470d000b0b202e450d05202d102a0c050b200641041037000b200641011037000b202841041037000b41a08ac1002000200b1034000b202b41011037000b202b450d002020102a0b410021202016212f2017212e2013212d2019212c2012212b2021212a2022211d20232129200d212820112114200e211c200f210c0b2001450d010b2004102a0b024020200d00410221060c030b10fb012121200241003602b001200242013703a80102400240024002400240410410282201450d0020024284808080c0003702ac01200220013602a80120012003360000201c200241a8016a10b4010240024020022802ac01220420022802b00122016b201c490d0020022802a80121040c010b2001201c6a22062001490d10200441017422162006201620064b1b22064100480d100240024020040d002006102821040c010b20022802a80120042006102c21040b2004450d02200220063602ac01200220043602a8010b20022001201c6a3602b001200420016a2020201c109a051a201d200241a8016a10b401201d450d022014201d410c6c6a211220142104034020042802002113200441086a2802002201200241a8016a10b4010240024020022802ac01221620022802b00122066b2001490d0020022802a80121170c010b200620016a22172006490d11201641017422192017201920174b1b22194100480d110240024020160d002019102821170c010b20022802a80120162019102c21170b2017450d05200220193602ac01200220173602a801201921160b2002200620016a22193602b001201720066a20132001109a051a2004410c6a22042012470d000c050b0b410441011037000b200641011037000b20022802ac01211620022802b00121190c010b201941011037000b02400240201620196b4104490d0020022802a80121010c010b201941046a22012019490d0b201641017422042001200420014b1b22044100480d0b0240024020160d002004102821010c010b20022802a80120162004102c21010b2001450d04200220043602ac01200220013602a801200421160b2002201941046a22043602b001200120196a202136000002400240201620046b41034d0d00201621060c010b200441046a22062004490d0b201641017422172006201720064b1b22064100480d0b0240024020160d002006102821010c010b200120162006102c21010b2001450d05200220063602ac01200220013602a8010b200120046a2015360000200241e9dabdf3063602cc03202542003703002026420037030020274200370300200241a8016a41206a4200370300200241a8016a41186a4200370300200241a8016a41106a4200370300200241a8016a41086a4200370300200242003703a8010240200241cc036a200a20004105746a2001201941086a200241a8016a101e0d00200241e8006a41086a2200201a41086a290000370300200241e8006a41106a2204201a41106a290000370300200241e8006a41186a2216201a41186a290000370300200241e8006a41206a2217201a41206a290000370300200241e8006a41286a2213201a41286a290000370300200241e8006a41306a2219201a41306a290000370300200241e8006a41376a2212201a41376a2900003700002002201a29000037036820022d00a8012122200241286a41086a22232000290300370300200241286a41106a22002004290300370300200241286a41186a22042016290300370300200241286a41206a22162017290300370300200241286a41286a22172013290300370300200241286a41306a22132019290300370300200241286a41376a221920122900003700002002200229036837032802402006450d002001102a0b201b2002290328370000201b41086a2023290300370000201b41106a2000290300370000201b41186a2004290300370000201b41206a2016290300370000201b41286a2017290300370000201b41306a2013290300370000201b41376a2019290000370000200220223a00e802200220153602e402200220213602e0022002201d3602dc02200220293602d802200220283602d4022002201c3602d0022002200c3602cc02200220203602c802200220033602c402200241123602c0022002420237039002200241e8006a200241a8016a108704200228026c2100200228026822042002280270101f210102402000450d002004102a0b2024106a20010d02410110282200450d06200041013a0000200041014105102c2200450d07201541016a211520002003360001410141838ac100411c2000410510202000102a202f2116202e2117202d2113202c2119202b2112202a2121201d2122202921232028210d20142111201c210e200c210f20072018470d010c090b0b02402006450d002001102a0b0240200c450d002020102a0b0240201d450d00201d410c6c210003400240201441046a280200450d002014280200102a0b2014410c6a2114200041746a22000d000b0b410121062029450d012028102a0c010b410321060b02402010450d002008102a0b0240200228021c450d00200a102a0b412e2104419396c6002100200241186a2101024002400240024020060e0400010203000b412d210441e695c6002100200241286a21010c020b411f210441c795c6002100200241e8006a21010c010b419995c6002100200241a8016a21010b200120043602042001200036020020002004100b0c060b200441011037000b200641011037000b410141011037000b410541011037000b1036000b02402010450d002008102a0b200228021c450d00200a102a0b200241d0036a240042010f0b1031000bcb06020d7f037e230041e0006b22012400200141e9dabdf306360208410021022001410036020c200141086a2001410c6a102621032001200128020c360214200120033602102001200141106a106c2001280204210441002105024002400240024020012802000d00200128021422034160712206417f4c0d0202400240200341057622070d00410121050c010b200610282205450d020b2004450d0041002108034020032109200141003a00582008220a41016a2108410021030240024002400240034020092003460d01200141386a20036a200128021022062d00003a00002001200641016a3602102001200341016a22063a00582006210320064120470d000b200141186a41186a220b200141386a41186a290300370300200141186a41106a220c200141386a41106a290300370300200141186a41086a220d200141386a41086a290300370300200120012903383703182007200a470d03200a41017422032008200320084b1b220741ffffff3f712007470d082007410574220341004e0d010c080b200141003602140240200341ff0171450d00200141003a00580b2007450d012005102a0c010b02400240200a0d002003102821050c010b2005200a4105742003102c21050b20050d01200341011037000b410021050c020b200920066b21032005200a4105746a220a2001290318370000200a41186a200b290300370000200a41106a200c290300370000200a41086a200d29030037000020082004470d000b2001200920066b3602140b4101210a2005410120051b21084100210302402004410020051b2206450d0020064105742203410575220241ffffff3f712002470d03200241057422094100480d03024020091028220a0d00200941011037000b200820036a210420064105742109200a2103200821060340200641086a290000210e200641106a290000210f20062900002110200341186a200641186a290000370000200341106a200f370000200341086a200e37000020032010370000200341206a2103200641206a2106200941606a22090d000b200420086b41606a41057641016a21030b02402005450d002007450d002008102a0b20002003360208200020023602042000200a360200200141e0006a24000f0b200641011037000b1036000b1031000bf80303047f027e037f230041306b22022400200241106a41086a220342003703002002420037031041c694c600411b200241106a1008200241086a200329030037030020022002290310370300410021032002410036021020024110200241106a100621040240024002400240024020022802102205417f470d000c010b2002200536022420022004360220200241106a200241206a107720022802102203450d01200229021421062005450d002004102a0b20024100360218200242013703102006420020031b2207422088a72205200241106a10b4012003410820031b210802402005450d002008200541286c6a21092008210503402005200241106a108f01200541206a29030021060240024020022802142204200228021822036b4108490d00200228021021040c010b200341086a220a2003490d0520044101742203200a2003200a4b1b22034100480d050240024020040d002003102821040c010b200228021020042003102c21040b2004450d042002200336021420022004360210200228021821030b2002200341086a360218200420036a20063700002009200541286a2205470d000b0b200235021821062002280210210302402007a7450d002008102a0b200241306a240020064220862003ad840f0b41c4d1c3004133200241286a419cd9c3001038000b200341011037000b1031000b9d0d04047f017e027f017e230041c0016b22022400200241086a41086a220342003703002002420037030841eefbc5004110200241086a1008200241a0016a41086a2003290300370300200220022903083703a0014100210320024100360208200241a0016a4110200241086a10062104024002400240024002400240024002400240024020022802082205417f470d000c010b024020040d000c010b2002200536027c20022004360278200241086a200241f8006a107720022802082203450d01200229020c21062005450d002004102a0b200241086a41086a2205420037030020024200370308419efcc500410f200241086a1008200241a0016a41086a22042005290300370300200220022903083703a001200241f8006a200241a0016a10ef0220022d00782105200241a0016a41186a220720024191016a290000370300200241a0016a41106a220820024189016a290000370300200420024181016a290000370300200220022900793703a0012006420020031b21062003410820031b21030240024020054101460d00200241d8006a41186a4200370300200241d8006a41106a4200370300200241d8006a41086a4200370300200242003703580c010b200241d8006a41186a2007290300370300200241d8006a41106a2008290300370300200241d8006a41086a2004290300370300200220022903a0013703580b2002412c6a2006370200200241086a41186a42043703002002413c6a200241d8006a41086a290300370200200241c4006a200241e8006a290300370200200241cc006a200241d8006a41186a2903003702002002200336022820024201370318200242c801370310200242b81737030820022002290358370234200241013a0054200241003602800120024201370378410810282203450d012002410836027c2002200228028001220441086a3602800120022003360278200320046a42b8173700002002290310210602400240200228027c220420022802800122036b4108490d00200228027821040c010b200341086a22052003490d08200441017422032005200320054b1b22034100480d080240024020040d002003102821040c010b200228027820042003102c21040b2004450d032002200336027c2002200436027820022802800121030b2002200341086a36028001200420036a20063700002002290318210602400240200228027c220420022802800122036b4108490d00200228027821040c010b200341086a22052003490d08200441017422032005200320054b1b22034100480d080240024020040d002003102821040c010b200228027820042003102c21040b2004450d042002200336027c2002200436027820022802800121030b2002200341086a36028001200420036a20063700002002290320210602400240200228027c220420022802800122036b4108490d00200228027821040c010b200341086a22052003490d08200441017422032005200320054b1b22034100480d080240024020040d002003102821040c010b200228027820042003102c21040b2004450d052002200336027c2002200436027820022802800121030b2002200341086a36028001200420036a200637000020022802282104200241086a41286a2802002203200241f8006a10b40102402003450d002004200341286c6a210803402004200241f8006a108f01200441206a290300210602400240200228027c220520022802800122036b4108490d00200228027821050c010b200341086a22072003490d0a200541017422032007200320074b1b22034100480d0a0240024020050d002003102821050c010b200228027820052003102c21050b2005450d082002200336027c2002200536027820022802800121030b2002200341086a36028001200520036a20063700002008200441286a2204470d000b0b200241346a200241f8006a10f10202400240200228027c2002280280012203460d00200228027821040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102821040c010b200228027820032005102c21040b2004450d072002200536027c2002200436027820022802800121030b2002200341016a36028001200420036a20022d00543a00002002350280012106200235027821090240200228022c450d002002280228102a0b200241c0016a240020064220862009840f0b41c4d1c3004133200241d8006a419cd9c3001038000b410841011037000b200341011037000b200341011037000b200341011037000b200341011037000b200541011037000b1031000baa0607017f017e077f017e027f017e027f230041c0006b2202240042002103200241086a2204420037030020024200370300419695c400411720021008200241206a41086a20042903003703002002200229030037032020024100360200200241206a411020021006210502400240024002400240024020022802002204417f460d0020022004360234200220053602302002200241306a107c20022802002206450d02200229020421032004450d012005102a0c010b410121060b41002107024002402003422088a7220441057422080d00410421094100210a0c010b2008410575220aad420c7e220b422088a70d04200ba722054100480d04200510282209450d020b2003a7210c02402004450d00200841606a210d20092105200621040340200441086a2900002103200441106a290000210b2004290000210e200241186a200441186a290000370300200241106a200b370300200241086a20033703002002200e370300200241206a2002108b04200541086a200241206a41086a280200360200200520022903203702002005410c6a2105200441206a2104200841606a22080d000b200d41057641016a21070b0240200c450d002006102a0b20024100360208200242013703002007200210b4010240024020070d002002280208210d200228020021060c010b20092007410c6c6a210f2009210503402005280200210c200541086a2802002204200210b4010240024020022802042206200228020822086b2004490d00200228020021060c010b200820046a220d2008490d0620064101742210200d2010200d4b1b220d4100480d060240024020060d00200d102821060c010b20022802002006200d102c21060b2006450d052002200d360204200220063602000b2002200820046a220d360208200620086a200c2004109a051a2005410c6a2205200f470d000b2007410c6c21052009210403400240200441046a280200450d002004280200102a0b2004410c6a2104200541746a22050d000b0b0240200a450d002009102a0b200241c0006a2400200dad4220862006ad840f0b41c4d1c3004133200241386a419cd9c3001038000b200541041037000b200d41011037000b1031000baf1905047f017e057f037e3c7f230041d0016b22022400024002402001450d00200220003602100c010b200241013602100b20022001360214200241086a200241106a106c024002400240024002400240024002400240024002400240024020022802080d0020022802142201200228020c2200490d002000417f4c0d010240024020000d00410121030c010b2000102e2203450d032003200228021022042000109a051a2002200120006b3602142002200420006a3602100b2003450d0020024188016a41086a220142003703002002420037038801419695c400411720024188016a1008200241e8006a41086a200129030037030020022002290388013703682002410036028801200241e8006a411020024188016a10062101024002402002280288012204417f460d002001450d002002200436025c2002200136025820024188016a200241d8006a107c2002280288012205450d05200229028c0121062004450d012001102a0c010b41012105420021060b200241d8006a109d044100210702402006422088a72201450d00200520014105746a21082002280258220920022802604105746a210a2005210b0340200b41086a290000210c200b41106a290000210d200b290000210e20024188016a41186a200b41186a29000037030020024188016a41106a200d37030020024188016a41086a200c3703002002200e37038801200b41206a210b20092101024003400240200a20016b41e0004b0d0002402001200a460d00034020024188016a2001460d04200120024188016a4120109c05450d04200a200141206a2201470d000b0b200b2008470d030c040b200120024188016a460d01200120024188016a4120109c05450d01200141206a220420024188016a460d01200420024188016a4120109c05450d01200141c0006a220420024188016a460d01200420024188016a4120109c05450d01200141e0006a220420024188016a460d0120014180016a2101200420024188016a4120109c050d000b0b0b200241e8006a41186a20024188016a41186a290300220c370300200241386a41086a20024188016a41086a290300370300200241386a41106a20024188016a41106a290300370300200241386a41186a200c3703002002200229038801370338410121070b2006a721010240200228025c450d002002280258102a0b02402001450d002005102a0b200241e8006a41186a2201200241386a41186a290300370300200241e8006a41106a2204200241386a41106a290300370300200241e8006a41086a220b200241386a41086a290300370300200220022903383703682007450d0b200241186a41186a2001290300370300200241186a41106a2004290300370300200241186a41086a200b29030037030020022002290368370318200241e9dabdf306360268200241c0016a4200370300200241b8016a4200370300200241b0016a4200370300200241a8016a420037030020024188016a41186a420037030020024188016a41106a420037030020024188016a41086a4200370300200242003703880102400240200241e8006a200241186a2003200020024188016a101e450d00410021010c010b4101210120022d00c701210f20022d00c601211020022d00c501211120022d00c401211220022d00c301211320022d00c201211420022d00c101211520022d00c001211620022d00bf01211720022d00be01211820022d00bd01211920022d00bc01211a20022d00bb01211b20022d00ba01211c20022d00b901211d20022d00b801211e20022d00b701211f20022d00b601212020022d00b501212120022d00b401212220022d00b301212320022d00b201212420022d00b101212520022d00b001212620022d00af01212720022d00ae01212820022d00ad01212920022d00ac01212a20022d00ab01212b20022d00aa01212c20022d00a901212d20022d00a801212e20022d00a701212f20022d00a601213020022d00a501213120022d00a401213220022d00a301213320022d00a201213420022d00a101213520022d00a001213620022d009f01213720022d009e01213820022d009d01213920022d009c01213a20022d009b01213b20022d009a01213c20022d009901213d20022d009801213e20022d009701213f20022d009601214020022d009501214120022d009401214220022d009301214320022d009201214420022d009101214520022d009001214620022d008f01214720022d008e01214820022d008d01214920022d008c01214a20022d008b01210820022d008a01210920022d008901210720022d00880121050b20024188016a41186a2204200241186a41186a29030037030020024188016a41106a220b200241186a41106a29030037030020024188016a41086a220a200241186a41086a29030037030020022002290318370388012001450d0b200241e8006a41186a20042903002206370300200241e8006a41106a200b290300220c370300200241e8006a41086a200a290300220d3703002002200229038801220e37036820042006370300200b200c370300200a200d3703002002200e37038801410110282201450d04200120053a0000200141014102102c2201450d05200120073a0001200141024104102c2201450d06200120083a0003200120093a0002200141044108102c2201450d07200120473a0007200120483a0006200120493a00052001204a3a0004200141084110102c2201450d082001203f3a000f200120403a000e200120413a000d200120423a000c200120433a000b200120443a000a200120453a0009200120463a0008200141104120102c2201450d092001202f3a001f200120303a001e200120313a001d200120323a001c200120333a001b200120343a001a200120353a0019200120363a0018200120373a0017200120383a0016200120393a00152001203a3a00142001203b3a00132001203c3a00122001203d3a00112001203e3a00102001412041c000102c2201450d0a2001200f3a003f200120103a003e200120113a003d200120123a003c200120133a003b200120143a003a200120153a0039200120163a0038200120173a0037200120183a0036200120193a00352001201a3a00342001201b3a00332001201c3a00322001201d3a00312001201e3a00302001201f3a002f200120203a002e200120213a002d200120223a002c200120233a002b200120243a002a200120253a0029200120263a0028200120273a0027200120283a0026200120293a00252001202a3a00242001202b3a00232001202c3a00222001202d3a00212001202e3a0020200241386a20024188016a108b042002280240210b200228023c2109200228023821050c0c0b200241f4006a41043602002002419c016a41023602002002420237028c01200241bca7c400360288012002410436026c200241e0a9c4003602682002410036023c200241b8aec6003602382002200241e8006a360298012002200241386a36027020024188016a41cca7c400103e000b1036000b200041011037000b41c4d1c3004133200241c8016a419cd9c3001038000b410141011037000b410241011037000b410441011037000b410841011037000b411041011037000b412041011037000b41c00041011037000b410021010b0240024002400240410110282204450d00200242818080801037028c0120022004360288010240024020010d00200441003a000042808080801021060c010b200441013a000041c00020024188016a10b40102400240200228028c01220720022802900122046b41c000490d00200441c0006a210a20022802880121070c010b200441c0006a220a2004490d0520074101742208200a2008200a4b1b22084100480d050240024020070d002008102821070c010b20022802880120072008102c21070b2007450d032002200836028c0120022007360288010b200720046a220441086a200141086a290000370000200441106a200141106a290000370000200441186a200141186a290000370000200441206a200141206a290000370000200441286a200141286a290000370000200441306a200141306a290000370000200441386a200141386a2900003700002002200a3602900120042001290000370000200b20024188016a10b40102400240200228028c012204200228029001220a6b200b490d0020022802880121040c010b200a200b6a2207200a490d05200441017422082007200820074b1b22074100480d050240024020040d002007102821040c010b20022802880120042007102c21040b2004450d042002200736028c0120022004360288010b2002200a200b6a2207360290012004200a6a2005200b109a051a2001102a2007ad42208621062009450d002005102a0b02402000450d002003102a0b200241d0016a240020062004ad840f0b410141011037000b200841011037000b200741011037000b1031000baf0e04077f027e047f077e23004190026b22022400024002402001450d00200220003602200c010b200241013602200b20022001360224200241186a200241206a106c024002400240024020022802180d0020022802242201200228021c2203490d000240024002402003417f4c0d000240024020030d00410121040c010b2003102e2204450d022004200228022022002003109a051a2002200120036b3602242002200020036a3602200b2004450d03200241106a200241206a106c20022802100d052002280224220120022802142200490d052000417f4c0d000240024020000d00410121050c010b2000102e2205450d032005200228022022062000109a051a2002200120006b3602242002200620006a3602200b2005450d05200241086a200241206a106c024020022802080d0020022802242206200228020c2201490d002001417f4c0d010240024020010d00410121070c010b2001102e2207450d062007200228022022082001109a051a2002200620016b3602242002200820016a3602200b2007450d002001ad2209422086200984210941002101200241003a00c8012000ad220a422086200a84220a422088a72108200521000240024002400240034020082001460d0120024188016a20016a20002d00003a00002002200141016a22063a00c801200041016a210020062101200641c000470d000b200241d0016a41386a220120024188016a41386a290300370300200241d0016a41306a220020024188016a41306a290300370300200241d0016a41286a220820024188016a41286a290300370300200241d0016a41206a220b20024188016a41206a290300370300200241d0016a41186a220c20024188016a41186a290300370300200241d0016a41106a220d20024188016a41106a290300370300200241d0016a41086a220e20024188016a41086a29030037030020022002290388013703d001200641ff017141c000490d02200241c8006a41386a22062001290300370300200241c8006a41306a2000290300220f370300200241c8006a41286a20082903002210370300200241c8006a41206a200b2903002211370300200241c8006a41186a200c2903002212370300200241c8006a41106a200d2903002213370300200241c8006a41086a200e2903002214370300200220022903d00122153703482000200f37030020082010370300200b2011370300200c2012370300200d2013370300200e201437030020012006290300370300200220153703d00141002101200241003a00a8012009422088a7210820072100034020082001460d0220024188016a20016a20002d00003a00002002200141016a22063a00a801200041016a21002006210120064120470d000b200241286a41186a220120024188016a41186a2200290300370300200241286a41106a220620024188016a41106a2208290300370300200241286a41086a220b20024188016a41086a220c290300370300200220022903880137032820024188016a41386a200241d0016a41386a29030037030020024188016a41306a200241d0016a41306a29030037030020024188016a41286a200241d0016a41286a29030037030020024188016a41206a200241d0016a41206a2903003703002000200241d0016a41186a2903003703002008200241d0016a41106a290300370300200c200241d0016a41086a290300370300200220022903d00137038801200241c8006a41186a2001290300370300200241c8006a41106a2006290300370300200241c8006a41086a200b290300370300200220022903283703482004200320024188016a200241c8006a100a4521000c030b200141ff0171450d01200241003a00c8010c010b200141ff0171450d00200241003a00a8010b410021000b410110282201450d07200120003a000002402009a7450d002007102a0b0240200aa7450d002005102a0b02402003450d002004102a0b20024190026a24002001ad428080808010840f0b200241dc016a41043602002002419c016a41023602002002420237028c01200241bca7c40036028801200241043602d401200241eca9c4003602d0012002410036024c200241b8aec6003602482002200241d0016a360298012002200241c8006a3602d80120024188016a41cca7c400103e000b1036000b200341011037000b200041011037000b200241dc016a41043602002002419c016a41023602002002420237028c01200241bca7c40036028801200241043602d401200241eca9c4003602d0012002410036024c200241b8aec6003602482002200241d0016a360298012002200241c8006a3602d80120024188016a41cca7c400103e000b200141011037000b200241dc016a41043602002002419c016a41023602002002420237028c01200241bca7c40036028801200241043602d401200241eca9c4003602d0012002410036024c200241b8aec6003602482002200241d0016a360298012002200241c8006a3602d80120024188016a41cca7c400103e000b410141011037000be30503037f047e017f230041a0016b2202240041002103200241003a00482000410120011b2104024002400240024002400240034020012003460d01200241286a20036a200420036a2d00003a00002002200341016a22003a00482000210320004120470d000b200241086a41186a200241286a41186a22002903002205370300200241086a41106a200241286a41106a22012903002206370300200241086a41086a200241286a41086a22042903002207370300200220022903282208370308200241d0006a41186a2005370300200241d0006a41106a2006370300200241d0006a41086a200737030020022008370350411310282203450d03200341002900cef0423700002003410f6a41002800ddf042360000200341086a41002900d6f04237000020024293808080b002370294012002200336029001200241d0006a20024190016a108f01200228029801210320022802900121092000420037030020014200370300200442003703002002420037032820092003200241286a1000200241f0006a41186a2000290300370300200241f0006a41106a2001290300370300200241f0006a41086a2004290300370300200220022903283703700240200228029401450d00200228029001102a0b20024100360228200241f0006a4120200241286a1006210320022802282200417f470d01410021000c020b0240200341ff0171450d00200241003a00480b2002413c6a4102360200200241fc006a41043602002002420237022c200241bca7c40036022820024104360274200241fca9c40036027020024100360254200241b8aec6003602502002200241f0006a3602382002200241d0006a360278200241286a41cca7c400103e000b024020030d00410021000c010b20004104490d02200328000021002003102a0b410410282203450d0220032000360000200241a0016a24002003ad4280808080c000840f0b411341011037000b41c4d1c3004133200241286a419cd9c3001038000b410441011037000b880f03057f037e017f230041c0016b22022400024020010d00410121000b200220003602082002200136020c41002103200241003a00702001417f6a21040340024020012003470d000240200341ff0171450d00200241003a00700b200241e4006a41023602002002419c016a410436020020024202370254200241bca7c400360250200241043602940120024194aac4003602900120024100360234200241b8aec600360230200220024190016a3602602002200241306a36029801200241d0006a41cca7c400103e000b200241d0006a20036a200020036a22052d00003a00002002200541016a3602082002200341016a22053a00702002200436020c2004417f6a21042005210320054120470d000b200241106a41086a200241d0006a41086a290300370300200241106a41106a200241d0006a41106a290300370300200241106a41186a200241d0006a41186a2903003703002002200229035037031041002103200241003a0070200120056b2106200020056a2100417f21010340024020062003470d000240200341ff0171450d00200241003a00700b200241e4006a41023602002002419c016a410436020020024202370254200241bca7c400360250200241043602940120024194aac4003602900120024100360234200241b8aec600360230200220024190016a3602602002200241306a36029801200241d0006a41cca7c400103e000b200241d0006a20036a200020036a22052d00003a00002002200420036b36020c2002200541016a3602082002200341016a22053a00702001417f6a21012005210320054120470d000b200241306a41086a200241d0006a41086a290300370300200241306a41106a200241d0006a41106a290300370300200241306a41186a200241d0006a41186a290300370300200220022903503703300240024002400240024002400240024002400240024002400240200420056b220441016a4110490d002002200020056a220341106a3602082002200441716a220536020c20054108490d0220032900002107200341086a29000021082002200441696a36020c2002200341186a360208200341106a29000021092002200241086a106c20022802000d0c200228020c2205200228020422034f0d010c0c0b2002419c016a4104360200200241e4006a410236020020024202370254200241bca7c400360250200241043602940120024194aac400360290012002410036027c200241b8aec600360278200220024190016a3602602002200241f8006a36029801200241d0006a41cca7c400103e000b2003417f4c0d0302400240024020030d00410121044101450d0d0c010b2003102e2204450d012004200228020822012003109a0521002002200520036b36020c2002200120036a3602082000450d0c0b20024190016a41186a200241106a41186a29030037030020024190016a41106a200241106a41106a29030037030020024190016a41086a200241106a41086a2903003703002002200229031037039001200241d0006a41186a200241306a41186a290300370300200241d0006a41106a200241306a41106a290300370300200241d0006a41086a200241306a41086a29030037030020022002290330370350200220033602b801200220033602b401200220043602b001200241f8006a20024190016a200241d0006a200720082009200241b0016a10f50320022802784101460d0220024184016a2802002104200241f8006a41086a2802002100200228027c210520022d00880121010c030b200341011037000b2002419c016a4104360200200241e4006a410236020020024202370254200241bca7c400360250200241043602940120024194aac400360290012002410036027c200241b8aec600360278200220024190016a3602602002200241f8006a36029801200241d0006a41cca7c400103e000b0240200228028801450d0020024184016a280200102a0b410021050b200241003602582002420137035041011028210302402005450d002003450d02200242818080801037025420022003360250200341003a0000200341014102102c2203450d03200242828080802037025420022003360250200320013a00012004200241d0006a10b401024020022802542203200228025822016b2004490d00200228025021030c070b0240200120046a22062001490d002003410174220a2006200a20064b1b22064100480d000240024020030d002006102821030c010b200228025020032006102c21030b2003450d0520022006360254200220033602500c070b1031000b2003450d04200242818080801037025420022003360250200341013a000042808080801021070c060b1036000b410141011037000b410241011037000b200641011037000b410141011037000b2002200120046a2206360258200320016a20052004109a051a2006ad42208621072005450d002000450d002005102a0b200241c0016a240020072003ad840f0b2002419c016a4104360200200241e4006a410236020020024202370254200241bca7c400360250200241043602940120024194aac400360290012002410036027c200241b8aec600360278200220024190016a3602602002200241f8006a36029801200241d0006a41cca7c400103e000bc00c03047f017e067f23004180026b220224000240024020010d002002200136020c200241013602080c010b20022001417f6a36020c410121032002200041016a36020820002d0000220141014b0d0041002104410021000240024002400240024002400240024020010e020100010b2002200241086a106c20022802000d07200228020c220120022802042200490d072000417f4c0d010240024020000d00410121040c010b2000102e2204450d032004200228020822052000109a051a2002200120006b36020c2002200520006a3602080b2004450d07200241106a20042000ad22064220862006842206422088a7105420022802104101460d03200241186a280200210520022802142100410021030b2002200536021420022000360210200241e7e485f3063602b001200241d0016a41186a22074200370300200241d0016a41106a22084200370300200241d0016a41086a22094200370300200242003703d00141002101200241106a410020001b210a0240024020000d004100210b0c010b200a41046a280200210c200a280200210b0b200241b0016a200b4101200b1b200c4100200b1b200241d0016a1021200241f0006a41186a2007290300370300200241f0006a41106a2008290300370300200241f0006a41086a2009290300370300200220022903d0013703702002200536021420022000360210200241e2c289ab063602b001200742003703002008420037030020094200370300200242003703d0010240024020000d000c010b200a41046a280200210b200a28020021010b200241b0016a2001410120011b200b410020011b200241d0016a102220024190016a41186a2207200241d0016a41186a220129030037030020024190016a41106a2208200241d0016a41106a220b29030037030020024190016a41086a2209200241d0016a41086a220a290300370300200220022903d00137039001200220053602fc01200220003602f801200241e9dabdf3063602f40120014200370300200b4200370300200a4200370300200242003703d0010240024020000d00410021000c010b200241f8016a410020001b220041046a2802002105200028020021000b200241f4016a2000410120001b2005410020001b200241d0016a1022200241b0016a41186a22002001290300370300200241b0016a41106a2201200b290300370300200241b0016a41086a2205200a290300370300200241106a41086a200241f0006a41086a290300370300200241106a41106a200241f0006a41106a290300370300200241106a41186a200241f0006a41186a290300370300200220022903d0013703b00120022002290370370310200241c8006a2007290300370300200241c0006a2008290300370300200241386a20092903003703002002200229039001370330200241e8006a2000290300370300200241e0006a2001290300370300200241d8006a2005290300370300200220022903b001370350200241003602d801200242013703d001200241106a200241d0016a108f01200241306a200241d0016a108f01200241d0006a200241d0016a108f0120022802d801210020022802d401210a20022802d001210b024020032006a745720d002004102a0b200041046a2201417f4c0d000240024020010d00410121050c010b200110282205450d040b2002410036021820022001360214200220053602102000200241106a10b4010240024020022802142205200228021822016b2000490d00200228021021050c010b200120006a22042001490d06200541017422072004200720044b1b22044100480d060240024020050d002004102821050c010b200228021020052004102c21050b2005450d0520022004360214200220053602100b200520016a200b2000109a051a200120006a21000240200a450d00200b102a0b20024180026a24002000ad4220862005ad840f0b1036000b200041011037000b200220022902143703d001419fdbc0004116200241d0016a41d4c7c0001038000b200141011037000b200441011037000b1031000b200241dc016a4104360200200241246a410236020020024202370214200241bca7c400360210200241043602d4012002419caac4003602d001200241003602b401200241b8aec6003602b0012002200241d0016a3602202002200241b0016a3602d801200241106a41cca7c400103e000b823305087f017e067f037e037f23004180066b220124000240024002400240411210282202450d00200241002900c1ae44370000200241106a41002f00d1ae443b0000200241086a41002900c9ae4437000020014292808080a0023702e404200120023602e0042000200141e0046a108f0120012802e804210220012802e0042100200141a0046a41186a22034200370300200141a0046a41106a22044200370300200141a0046a41086a22054200370300200142003703a00420002002200141a0046a1000200141c8006a41186a2003290300370300200141c8006a41106a2004290300370300200141c8006a41086a2005290300370300200120012903a004370348024020012802e404450d0020012802e004102a0b200141003602e004200141c8006a4120200141e0046a1006210620012802e0042207417f460d022006450d02200120073602e405200120063602e005200141306a200141e0056a109f0120012802300d0120012802e4052202450d0120012002417f6a22033602e405200120012802e005220541016a22043602e00520052d0000220241014b0d01410021080240024020020e020100010b41002102200141003a0080050340024020032002470d00200141003602e405200241ff0171450d04200141003a0080050c040b200141e0046a20026a200520026a220041016a2d00003a00002001200041026a3602e0052001200241016a22003a0080052000210220004120470d000b200141a0046a41086a200141e0046a41086a2903002209370300200141e8016a41186a200141e0046a41186a290300370300200141e8016a41106a200141e0046a41106a290300370300200141e8016a41086a20093703002001200320006b22033602e405200120012903e00422093703a004200120093703e80141012108200520006a41016a21040b20014180046a41186a200141e8016a41186a29030037030020014180046a41106a200141e8016a41106a29030037030020014180046a41086a200141e8016a41086a290300370300200120012903e801370380042003450d0120012003417f6a22033602e4052001200441016a3602e00520042d0000220041014b0d01410021020240024020000e020100010b41002102200141003a0080050340024020032002470d00200141003602e405200241ff0171450d04200141003a0080050c040b200141e0046a20026a200420026a220041016a2d00003a00002001200041026a3602e0052001200241016a22003a0080052000210220004120470d000b200141c0046a41086a200141e0046a41086a2903002209370300200141e8016a41186a200141e0046a41186a290300370300200141e8016a41106a200141e0046a41106a290300370300200141e8016a41086a20093703002001200320006b3602e405200120012903e00422093703c004200120093703e801410121020b200141c0036a41186a2205200141e8016a41186a2200290300370300200141c0036a41106a220a200141e8016a41106a2203290300370300200141c0036a41086a220b200141e8016a41086a2204290300370300200141e0036a41086a220c20014180046a41086a290300370300200141e0036a41106a220d20014180046a41106a290300370300200141e0036a41186a220e20014180046a41186a290300370300200120012903e8013703c00320012001290380043703e003200141a0036a41186a220f200e290300370300200141a0036a41106a220e200d290300370300200141a0036a41086a220d200c290300370300200120012903e0033703a00320014180036a41186a220c200529030037030020014180036a41106a2205200a29030037030020014180036a41086a220a200b290300370300200120012903c00337038003200141e0046a41186a220b200f290300370300200141e0046a41106a220f200e290300370300200141e0046a41086a220e200d290300370300200120012903a0033703e0042000200c290300370300200320052903003703002004200a29030037030020012001290380033703e801200141c0056a41046a2205200141fa026a41046a2f01003b0100200120012801fa023602c00520084102460d01200141d8026a41186a200b290300370300200141d8026a41106a200f290300370300200141d8026a41086a200e290300370300200141b8026a41086a2004290300370300200141b8026a41106a2003290300370300200141b8026a41186a2000290300370300200141b0026a41046a20052f01003b0100200120012903e0043703d802200120012903e8013703b802200120012802c0053602b00202402007450d002006102a0b200141c8006a412010090c030b411241011037000b41c4d1c3004133200141a0046a419cd9c3001038000b410221080b20014188016a41186a2200200141d8026a41186a29030037030020014188016a41106a2203200141d8026a41106a29030037030020014188016a41086a2204200141d8026a41086a290300370300200141e8006a41086a2205200141b8026a41086a290300370300200141e8006a41106a2206200141b8026a41106a290300370300200141e8006a41186a2207200141b8026a41186a290300370300200120012903d80237038801200120012903b802370368200141c8016a41086a220a2004290300370300200141c8016a41106a22042003290300370300200141c8016a41186a2203200029030037030020012001290388013703c801200141a8016a41086a22002005290300370300200141a8016a41106a22052006290300370300200141a8016a41186a22062007290300370300200120012903683703a8010240024020084102460d002001418a026a220720012903a801370100200141f1016a200a290300370000200141f9016a200429030037000020014181026a200329030037000020014192026a20002903003701002001419a026a2005290300370100200141a2026a2006290300370100200120083a00e801200120012903c8013700e901200120023a0089024100210602400240024002400240024002400240200241ff01714101470d00200141e0046a200710ac01200141e0056a41186a200141e0046a41186a22022900002209370300200141e0056a41106a200141e0046a41106a22002900002210370300200141e0056a41086a200141e0046a41086a22032900002211370300200120012900e00422123703e005200220093703002000201037030020032011370300200120123703e004412010282206450d01200620012903e004370000200641186a2002290300370000200641106a2000290300370000200641086a200329030037000020012d00e80121080b0240200841ff01714101460d0020012d0089024101460d03200141c0056a41186a22024200370300200141c0056a41106a22004200370300200141c0056a41086a22034200370300200142003703c00541d3aec400411a200141c0056a1000200141e0046a41186a2002290300370300200141e0046a41106a2000290300370300200141e0046a41086a2003290300370300200120012903c0053703e004200141e0046a412010090c060b200141e0046a200141e8016a41017210ac01200141e0056a41186a200141e0046a41186a22022903002209370300200141e0056a41106a200141e0046a41106a22002903002210370300200141e0056a41086a200141e0046a41086a22032903002211370300200120012903e00422123703e005200220093703002000201037030020032011370300200120123703e004412010282208450d01200820012903e004370000200841186a2002290300370000200841106a2000290300370000200841086a2003290300370000200141003602e00420084120200141e0046a1006210720012802e004220b417f460d032007450d032001200b360284042001200736028004200141186a20014180046a109f012001290318a70d042001280284042202450d04200141286a29030021092001290320211020012002417f6a2203360284042001200128028004220541016a22043602800420052d0000220241014b0d044100210a0240024020020e020100010b41002102200141003a0080050340024020032002470d002001410036028404200241ff0171450d07200141003a0080050c070b200141e0046a20026a200520026a220041016a2d00003a00002001200041026a360280042001200241016a22003a0080052000210220004120470d000b200141e0056a41086a200141e0046a41086a290300370300200141e0056a41106a200141e0046a41106a290300370300200141e0056a41186a200141e0046a41186a290300370300200120012903e0043703e0052001200320006b2203360284044101210a200520006a41016a21040b200141c0056a41186a200141e0056a41186a290300370300200141c0056a41106a200141e0056a41106a290300370300200141c0056a41086a200141e0056a41086a290300370300200120012903e0053703c0052003450d0420012003417f6a2203360284042001200441016a3602800420042d0000220241014b0d040240024020020e020100010b41002102200141003a0080050340024020032002470d002001410036028404200241ff0171450d07200141003a0080050c070b200141e0046a20026a200420026a220041016a2d00003a00002001200041026a360280042001200241016a22003a0080052000210220004120470d000b200141a0046a41086a200141e0046a41086a2903002211370300200141e0056a41186a200141e0046a41186a290300370300200141e0056a41106a200141e0046a41106a290300370300200141e0056a41086a20113703002001200320006b36028404200120012903e00422113703a004200120113703e0050b200141c0036a41186a2202200141e0056a41186a2200290300370300200141c0036a41106a2203200141e0056a41106a2204290300370300200141c0036a41086a2205200141e0056a41086a220c290300370300200141e0036a41086a220d200141c0056a41086a290300370300200141e0036a41106a220e200141c0056a41106a290300370300200141e0036a41186a220f200141c0056a41186a290300370300200120012903e0053703c003200120012903c0053703e003200141a0036a41186a2213200f290300370300200141a0036a41106a220f200e290300370300200141a0036a41086a220e200d290300370300200120012903e0033703a00320014180036a41186a200229030037030020014180036a41106a200329030037030020014180036a41086a2005290300370300200120012903c00337038003200141e0046a41186a22032013290300370300200141e0046a41106a2205200f290300370300200141e0046a41086a220d200e290300370300200120012903a0033703e004200141c0056a41046a220e200141fa026a41046a2f01003b0100200120012801fa023602c005200a4102460d0420014189026a21022000200329030037030020042005290300370300200c200d290300370300200141c0046a41046a200e2f01003b0100200120012903e0043703e005200120012802c0053602c0040240200b450d002007102a0b200141f1046a20012903e005370000200141f9046a200141e0056a41086a29030037000020014181056a200141e0056a41106a29030037000020014189056a200141e0056a41186a290300370000200141b6056a200141c4046a2f01003b0100200120103703e0042001200a3a00f004200120012802c0043601b205200120093703e80420014191056a200229000037000020014199056a200241086a290000370000200141a1056a200241106a290000370000200141a9056a200241186a290000370000200141b1056a200241206a2d00003a0000200141003602e805200142013703e0052001200141e0046a3602c005200141c0056a200141e0056a10a301200141e0046a41106a200141e0056a10a90120012802e40521022008412020012802e005220020012802e805100702402002450d002000102a0b2008102a4101210a0c060b412041011037000b412041011037000b200141c0056a41186a22024200370300200141c0056a41106a22004200370300200141c0056a41086a22034200370300200142003703c00541d3aec400411a200141c0056a1000200141e0046a41186a2002290300370300200141e0046a41106a2000290300370300200141e0046a41086a2003290300370300200120012903c0053703e004200141203602e4052001200141e0046a3602e0052007200141e0056a10ff010c020b41e2bbc00041d8001050000b41c4d1c3004133200141a0046a419cd9c3001038000b410021084100210a0b0240024002400240024020060d00410021020c010b200141003602e00420064120200141e0046a1006210720012802e004220b417f460d012007450d012001200b3602bc05200120073602b8052001200141b8056a109f012001290300a70d0520012802bc052202450d05200141106a29030021092001290308211020012002417f6a22033602bc05200120012802b805220541016a22043602b80520052d0000220241014b0d054100210c0240024020020e020100010b41002102200141003a0080050340024020032002470d00200141003602bc05200241ff0171450d08200141003a0080050c080b200141e0046a20026a200520026a220041016a2d00003a00002001200041026a3602b8052001200241016a22003a0080052000210220004120470d000b20014180046a41106a200141e0046a41106a2903002211370300200141e0056a41086a200141e0046a41086a290300370300200141e0056a41106a2011370300200141e0056a41186a200141e0046a41186a2903003703002001200320006b22033602bc05200120012903e0043703e0054101210c200520006a41016a21040b200141c0056a41186a200141e0056a41186a290300370300200141c0056a41106a200141e0056a41106a290300370300200141c0056a41086a200141e0056a41086a290300370300200120012903e0053703c0052003450d0520012003417f6a22033602bc052001200441016a3602b80520042d0000220241014b0d05410021050240024020020e020100010b41002102200141003a0080050340024020032002470d00200141003602bc05200241ff0171450d08200141003a0080050c080b200141e0046a20026a200420026a220041016a2d00003a00002001200041026a3602b8052001200241016a22003a0080052000210220004120470d000b200141c0046a41086a200141e0046a41086a2903002211370300200141e0056a41186a200141e0046a41186a290300370300200141e0056a41106a200141e0046a41106a290300370300200141e0056a41086a20113703002001200320006b3602bc05200120012903e00422113703c004200120113703e005410121050b200141c0036a41186a2204200141e0056a41186a2202290300370300200141c0036a41106a220d200141e0056a41106a2200290300370300200141c0036a41086a220e200141e0056a41086a2203290300370300200141e0036a41086a220f200141c0056a41086a290300370300200141e0036a41106a2213200141c0056a41106a290300370300200141e0036a41186a2214200141c0056a41186a290300370300200120012903e0053703c003200120012903c0053703e003200141a0036a41186a22152014290300370300200141a0036a41106a22142013290300370300200141a0036a41086a2213200f290300370300200120012903e0033703a00320014180036a41186a220f200429030037030020014180036a41106a2204200d29030037030020014180036a41086a220d200e290300370300200120012903c00337038003200141e0046a41186a220e2015290300370300200141e0046a41106a22152014290300370300200141e0046a41086a22142013290300370300200120012903a0033703e0042002200f290300370300200020042903003703002003200d29030037030020012001290380033703e005200141c0056a41046a2204200141fa026a41046a2f01003b0100200120012801fa023602c005200c4102460d05200141d8026a41186a200e290300370300200141d8026a41106a2015290300370300200141d8026a41086a2014290300370300200141b8026a41086a2003290300370300200141b8026a41106a2000290300370300200141b8026a41186a2002290300370300200141b0026a41046a20042f01003b0100200120012903e0043703d802200120012903e0053703b802200120012802c0053602b0020240200b450d002007102a0b20014191056a20053a000020014192056a20012903b8023701002001419a056a200141b8026a41086a290300370100200141a2056a200141b8026a41106a290300370100200141aa056a200141b8026a41186a290300370100200141b6056a200141b4026a2f01003b0100200120103703e004200120012802b0023601b205200120093703e80420014190056a200141e8016a41206a2d00003a000020014188056a200141e8016a41186a290300370300200141e0046a41206a200141e8016a41106a290300370300200141e0046a41186a200141e8016a41086a290300370300200120012903e8013703f004200141003602e805200142013703e0052001200141e0046a3602c005200141c0056a200141e0056a10a301200141e0046a41106a200141e0056a10a90120012802e40521022006412020012802e005220020012802e805100702402002450d002000102a0b2006102a410121020b200a20084572450d010c020b41e2bbc00041d8001050000b2008102a0b2006452002720d002006102a0b20014180066a24000f0b41c4d1c3004133200141a0046a419cd9c3001038000bde3305097f017e077f037e057f230041a0056b22012400024002400240024002400240411210282202450d0020024100290095ae44370000200241106a41002f00a5ae443b0000200241086a410029009dae4437000020014292808080a00237028c042001200236028804200020014188046a108f0120012802900421022001280288042100200141c8036a41186a22034200370300200141c8036a41106a22044200370300200141c8036a41086a22054200370300200142003703c80320002002200141c8036a1000200141186a2003290300370300200141106a2004290300370300200141086a2005290300370300200120012903c8033703000240200128028c04450d00200128028804102a0b20014100360288042001412020014188046a100621032001280288042204417f460d042003450d04200120043602e404200120033602e00420014180056a200141e0046a106d2001280280052206450d02200128028405210720012802e4042202450d0120012002417f6a22053602e404200120012802e004220841016a22093602e00420082d0000220041014b0d01410021020240024020000e020100010b41002102200141003a00a8040340024020052002470d00200141003602e404200241ff0171450d04200141003a00a8040c040b20014188046a20026a200820026a220041016a2d00003a00002001200041026a3602e0042001200241016a22003a00a8042000210220004120470d000b200141c8036a41086a20014188046a41086a290300220a370300200141a0016a41186a20014188046a41186a290300370300200141a0016a41106a20014188046a41106a290300370300200141a0016a41086a200a3703002001200520006b22053602e4042001200129038804220a3703c8032001200a3703a00141012102200820006a41016a21090b200141a8036a41186a200141a0016a41186a290300370300200141a8036a41106a200141a0016a41106a290300370300200141a8036a41086a200141a0016a41086a290300370300200120012903a0013703a8032005450d0120012005417f6a22083602e4042001200941016a3602e00420092d0000220541014b0d01410021000240024020050e020100010b41002100200141003a00a8040340024020082000470d00200141003602e404200041ff0171450d04200141003a00a8040c040b20014188046a20006a200920006a220541016a2d00003a00002001200541026a3602e0042001200041016a22053a00a8042005210020054120470d000b200141e8036a41086a20014188046a41086a290300220a370300200141a0016a41186a20014188046a41186a290300370300200141a0016a41106a20014188046a41106a290300370300200141a0016a41086a200a3703002001200820056b3602e4042001200129038804220a3703e8032001200a3703a001410121000b200141e8026a41186a2205200141a0016a41186a2208290300370300200141e8026a41106a2209200141a0016a41106a220b290300370300200141e8026a41086a220c200141a0016a41086a220d29030037030020014188036a41086a220e200141a8036a41086a29030037030020014188036a41106a220f200141a8036a41106a29030037030020014188036a41186a2210200141a8036a41186a290300370300200120012903a0013703e802200120012903a80337038803200141c8026a41186a22112010290300370300200141c8026a41106a2210200f290300370300200141c8026a41086a220f200e29030037030020012001290388033703c802200141a8026a41186a220e2005290300370300200141a8026a41106a22052009290300370300200141a8026a41086a2209200c290300370300200120012903e8023703a80220014188046a41186a201129030037030020014188046a41106a201029030037030020014188046a41086a200f290300370300200120012903c802370388042008200e290300370300200b2005290300370300200d2009290300370300200120012903a8023703a0010c030b411241011037000b2007450d002006102a0b410221020b024020024102460d0020014188026a41186a20014188046a41186a29030037030020014188026a41106a20014188046a41106a29030037030020014188026a41086a20014188046a41086a290300370300200141e8016a41086a200141a0016a41086a290300370300200141e8016a41106a200141a0016a41106a290300370300200141e8016a41186a200141a0016a41186a290300370300200120012903880437038802200120012903a0013703e801200120012f0180053b01e60102402004450d002003102a0b2001412010090c020b41c4d1c3004133200141a8036a419cd9c3001038000b410221020b200141c0006a41186a220320014188026a41186a290300370300200141c0006a41106a220420014188026a41106a290300370300200141c0006a41086a220520014188026a41086a290300370300200141206a41086a2208200141e8016a41086a290300370300200141206a41106a2209200141e8016a41106a290300370300200141206a41186a220b200141e8016a41186a2903003703002001200129038802370340200120012903e80137032020014180016a41086a220c200529030037030020014180016a41106a2205200429030037030020014180016a41186a220420032903003703002001200129034037038001200141e0006a41086a22032008290300370300200141e0006a41106a22082009290300370300200141e0006a41186a2209200b29030037030020012001290320370360024020024102460d00200141c2016a220b2001290360370100200141a9016a200c290300370000200141b1016a2005290300370000200141b9016a2004290300370000200141ca016a2003290300370100200141d2016a2008290300370100200141da016a2009290300370100200120023a00a00120012001290380013700a101200120003a00c101410021030240024002400240024002400240024002400240200041ff01714101470d0020014188046a200b10ae0120014180056a41186a20014188046a41186a2202290000220a37030020014180056a41106a20014188046a41106a2200290000221237030020014180056a41086a20014188046a41086a2204290000221337030020012001290088042214370380052002200a37030020002012370300200420133703002001201437038804412010282203450d012003200129038804370000200341186a2002290300370000200341106a2000290300370000200341086a200429030037000020012d00a00121020b0240200241ff01714101460d0020012d00c1014101460d03200141e0046a41186a22024200370300200141e0046a41106a22004200370300200141e0046a41086a22044200370300200142003703e00441a7aec400411a200141e0046a100020014188046a41186a200229030037030020014188046a41106a200029030037030020014188046a41086a2004290300370300200120012903e0043703880420014188046a412010090c080b20014188046a200141a0016a41017210ae0120014180056a41186a20014188046a41186a2202290300220a37030020014180056a41106a20014188046a41106a2200290300221237030020014180056a41086a20014188046a41086a2205290300221337030020012001290388042214370380052002200a37030020002012370300200520133703002001201437038804412010282204450d012004200129038804370000200441186a2002290300370000200441106a2000290300370000200441086a200529030037000020014100360288042004412020014188046a10062109200128028804220d417f460d032009450d032001200d3602cc03200120093602c803200141e8036a200141c8036a106d20012802e8032202450d0520012802ec03210c20012802cc032200450d04200141f0036a280200210820012000417f6a220e3602cc03200120012802c803220f41016a22103602c803200f2d0000220041014b0d044100210b0240024020000e020100010b41002100200141003a00a80403400240200e2000470d00200141003602cc03200041ff0171450d07200141003a00a8040c070b20014188046a20006a200f20006a220541016a2d00003a00002001200541026a3602c8032001200041016a22053a00a8042005210020054120470d000b20014180056a41086a20014188046a41086a29030037030020014180056a41106a20014188046a41106a29030037030020014180056a41186a20014188046a41186a2903003703002001200129038804370380052001200e20056b220e3602cc034101210b200f20056a41016a21100b200141e0046a41186a20014180056a41186a290300370300200141e0046a41106a20014180056a41106a290300370300200141e0046a41086a20014180056a41086a29030037030020012001290380053703e004200e450d042001200e417f6a220e3602cc032001201041016a3602c80320102d0000220041014b0d040240024020000e020100010b41002100200141003a00a80403400240200e2000470d00200141003602cc03200041ff0171450d07200141003a00a8040c070b20014188046a20006a201020006a220541016a2d00003a00002001200541026a3602c8032001200041016a22053a00a8042005210020054120470d000b200141a8036a41106a20014188046a41106a290300220a37030020014180056a41086a20014188046a41086a29030037030020014180056a41106a200a37030020014180056a41186a20014188046a41186a2903003703002001200e20056b3602cc032001200129038804370380050b200141e8026a41186a220020014180056a41186a290300370300200141e8026a41106a220520014180056a41106a290300370300200141e8026a41086a220e20014180056a41086a29030037030020014188036a41086a220f200141e0046a41086a29030037030020014188036a41106a2210200141e0046a41106a29030037030020014188036a41186a2211200141e0046a41186a29030037030020012001290380053703e802200120012903e00437038803200141c8026a41186a22152011290300370300200141c8026a41106a22112010290300370300200141c8026a41086a2210200f29030037030020012001290388033703c802200141a8026a41186a2000290300370300200141a8026a41106a2005290300370300200141a8026a41086a200e290300370300200120012903e8023703a80220014188046a41186a201529030037030020014188046a41106a201129030037030020014188046a41086a2010290300370300200120012903c802370388040c060b412041011037000b412041011037000b200141e0046a41186a22024200370300200141e0046a41106a22004200370300200141e0046a41086a22044200370300200142003703e00441a7aec400411a200141e0046a100020014188046a41186a200229030037030020014188046a41106a200029030037030020014188046a41086a2004290300370300200120012903e004370388042001412036028405200120014188046a36028005200b20014180056a10ff010c040b41e2bbc00041d8001050000b200c450d002002102a0b4102210b0b0240200b4102460d00200141c1016a210020014180056a41186a220520014188046a41186a29030037030020014180056a41106a220e20014188046a41106a29030037030020014180056a41086a220f20014188046a41086a290300370300200120012903880437038005200120012f01e0043b01e8030240200d450d002009102a0b20014195046a2001290380053700002001419d046a200f290300370000200141a5046a200e290300370000200141ad046a20052903003700002001200b3a00940420012008360290042001200c36028c042001200236028804200120012f01e8033b01d604200141b5046a2000290000370000200141bd046a200041086a290000370000200141c5046a200041106a290000370000200141cd046a200041186a290000370000200141d5046a200041206a2d00003a000020014100360288052001420137038005200820014180056a10b40120014194046a210502402008450d00200841057421000340200220014180056a108f01200241206a2102200041606a22000d000b0b200520014180056a10a9012001280284052102200441202001280280052200200128028805100702402002450d002000102a0b0240200128028c04450d00200128028804102a0b2004102a410121090c020b41c4d1c3004133200141a8036a419cd9c3001038000b41002104410021090b0240024002400240024020030d00410021020c010b20014100360288042003412020014188046a100621080240024002400240200128028804220b417f460d002008450d002001200b3602dc04200120083602d804200141a8036a200141d8046a106d4200211220012802a8032202450d0220012802ac03211020012802dc042200450d01200141b0036a350200210a20012000417f6a220c3602dc04200120012802d804220d41016a220f3602d804200d2d0000220041014b0d014100210e0240024020000e020100010b41002100200141003a00a80403400240200c2000470d00200141003602dc04200041ff0171450d04200141003a00a8040c040b20014188046a20006a200d20006a220541016a2d00003a00002001200541026a3602d8042001200041016a22053a00a8042005210020054120470d000b200141c8036a41086a20014188046a41086a290300221337030020014180056a41186a20014188046a41186a29030037030020014180056a41106a20014188046a41106a29030037030020014180056a41086a20133703002001200c20056b220c3602dc04200120012903880422133703c80320012013370380054101210e200d20056a41016a210f0b200141e0046a41186a20014180056a41186a290300370300200141e0046a41106a20014180056a41106a290300370300200141e0046a41086a20014180056a41086a29030037030020012001290380053703e004200c450d012001200c417f6a220c3602dc042001200f41016a3602d804200f2d0000220541014b0d01410021000240024020050e020100010b41002100200141003a00a80403400240200c2000470d00200141003602dc04200041ff0171450d04200141003a00a8040c040b20014188046a20006a200f20006a220541016a2d00003a00002001200541026a3602d8042001200041016a22053a00a8042005210020054120470d000b200141e8036a41086a20014188046a41086a290300221237030020014180056a41186a20014188046a41186a29030037030020014180056a41106a20014188046a41106a29030037030020014180056a41086a20123703002001200c20056b3602dc04200120012903880422123703e8032001201237038005410121000b200141e8026a41186a220520014180056a41186a220c290300370300200141e8026a41106a220d20014180056a41106a220f290300370300200141e8026a41086a221120014180056a41086a221529030037030020014188036a41086a2216200141e0046a41086a29030037030020014188036a41106a2217200141e0046a41106a29030037030020014188036a41186a2218200141e0046a41186a29030037030020012001290380053703e802200120012903e00437038803200141c8026a41186a22192018290300370300200141c8026a41106a22182017290300370300200141c8026a41086a2217201629030037030020012001290388033703c802200141a8026a41186a22162005290300370300200141a8026a41106a2205200d290300370300200141a8026a41086a220d2011290300370300200120012903e8023703a80220014188046a41186a201929030037030020014188046a41106a201829030037030020014188046a41086a2017290300370300200120012903c80237038804200c2016290300370300200f20052903003703002015200d290300370300200120012903a80237038005200a422086210a2010ad21120c030b41e2bbc00041d8001050000b2010450d002002102a0b4102210e4200210a0b200e4102460d0120014188026a41186a20014188046a41186a29030037030020014188026a41106a20014188046a41106a29030037030020014188026a41086a20014188046a41086a290300370300200141e8016a41086a220520014180056a41086a290300370300200141e8016a41106a220c20014180056a41106a290300370300200141e8016a41186a220d20014180056a41186a29030037030020012001290388043703880220012001290380053703e801200120012f01e0043b01e601200a20128421120240200b450d002008102a0b200141b5046a20003a0000200141b6046a20012903e801370100200141be046a2005290300370100200141c6046a200c290300370100200141ce046a200d2903003701002001419c046a200141a0016a41086a290300370200200141a4046a200141a0016a41106a290300370200200141ac046a200141a0016a41186a290300370200200141b4046a200141a0016a41206a2d00003a00002001201237028c042001200236028804200120012f01e6013b01d604200120012903a0013702940420014100360288052001420137038005200a422088a7220020014180056a10b40120014194046a210502402000450d00200041057421000340200220014180056a108f01200241206a2102200041606a22000d000b0b200520014180056a10a9012001280284052102200341202001280280052200200128028805100702402002450d002000102a0b0240200128028c04450d00200128028804102a0b2003102a410121020b200920044572450d010c020b41c4d1c3004133200141a8036a419cd9c3001038000b2004102a0b02402003452002720d002003102a0b2006450d002007450d002006102a0b200141a0056a24000b13002000410d360204200041bcafc4003602000b3400200041d9dbc40036020420004100360200200041146a4113360200200041106a41e0dbc400360200200041086a42073702000b09002000410010e6020b6c01027f230041106b22022400200241003602082002420137030002404104102822030d00410441011037000b2003410036000020024284808080c000370204200220033602004100200210b401200041086a200228020836020020002002290300370200200241106a24000b3001017f02404108102822020d00410841011037000b20004288808080800137020420002002360200200242003700000b8e0201037f230041c0006b22022400200241186a4200370300200241106a22034200370300200241086a4200370300200241286a22044100360200200242003703002002420837032020024100360238200242013703302002200236023c2002413c6a200241306a10a3012002200336023c2002413c6a200241306a10a3012002280220210320042802002204200241306a10b40102402004450d00200441306c21040340200341106a200241306a108f012002200336023c200341306a21032002413c6a200241306a10a301200441506a22040d000b0b20002002290330370200200041086a200241306a41086a28020036020002402002280224450d002002280220102a0b200241c0006a24000b7001027f230041306b2202240020024200370310200242003703082002200241086a36021c02404101102822030d00410141011037000b20024201370224200220033602202002411c6a200241206a10a301200041086a200228022836020020002002290320370200200241306a24000b3001017f02404104102822020d00410441011037000b20004284808080c00037020420002002360200200241043600000b9c0402057f027e230041d0016b220224002002200110b1040240024020022d00004101470d00200241286a41186a200241196a290000370300200241286a41106a200241116a290000370300200241286a41086a200241096a2900003703002002200229000137032802400240410e10282201450d002001410029008aaf44370000200141066a4100290090af443700002002428e808080e00137026c20022001360268200241286a200241e8006a108f012002280270210120022802682103200241f8006a41186a22044200370300200241f8006a41106a22054200370300200241f8006a41086a220642003703002002420037037820032001200241f8006a1000200241c8006a41186a2004290300370300200241c8006a41106a2005290300370300200241c8006a41086a2006290300370300200220022903783703480240200228026c450d002002280268102a0b20024100360278200241c8006a4120200241f8006a100621040240024020022802782203417f470d00410021010c010b2002200336026c20022004360268200241f8006a200241e8006a108a022002280298012201450d0220024190016a29030021072002290388012108200228029c0121052003450d002004102a0b2001450d022005450d032001102a0c030b410e41011037000b41c4d1c3004133200241c8016a419cd9c3001038000b42002108420021070b2000200837030020002007370308200241d0016a24000bb70301057f230041f0006b220224000240410e10282203450d00200341002900fcae44370000200341066a4100290082af443700002002428e808080e001370254200220033602502001200241d0006a108f012002280258210320022802502101200241086a41186a22044200370300200241086a41106a22054200370300200241086a41086a220642003703002002420037030820012003200241086a1000200241306a41186a2004290300370300200241306a41106a2005290300370300200241306a41086a20062903003703002002200229030837033002402002280254450d002002280250102a0b200241086a200241306a412010fd01200241d0006a41086a200241086a41096a290000370300200241d0006a41106a200241086a41116a290000370300200241d0006a41186a200241086a41196a290000370300200220022900093703500240024020022d00084101460d00200041003a00000c010b200041013a000020002002290350370001200041096a200241d8006a290300370000200041116a200241e0006a290300370000200041196a200241e8006a2903003700000b200241f0006a24000f0b410e41011037000b13002000410236020420004184fcc4003602000b3101017f02404104102822020d00410441011037000b20004284808080c00037020420002002360200200241a0053600000bdf14030d7f077e0b7f23004180046b22042400024002400240024002400240410d10282205450d0020054100290098af44370000200541056a410029009daf443700002004428d808080d0013702ec02200420053602e8022001200441e8026a108f0120042802f002210520042802e8022106200441a8036a41186a22074200370300200441a8036a41106a22084200370300200441a8036a41086a22094200370300200442003703a80320062005200441a8036a100020044198016a41186a200729030037030020044198016a41106a200829030037030020044198016a41086a2009290300370300200420042903a80337039801024020042802ec02450d0020042802e802102a0b200441003602a80320044198016a4120200441a8036a1006210502400240024020042802a8032206417f460d002005450d002006450d0420052d0000220641034f0d042005102a20060e03000201000b200441f0006a200110b10420042d00704101470d06200441b8016a41186a20044189016a290000370300200441b8016a41106a20044181016a290000370300200441b8016a41086a200441f9006a290000370300200420042900713703b801410e10282205450d042005410029008aaf44370000200541066a4100290090af443700002004428e808080e0013702ec02200420053602e802200441b8016a200441e8026a108f0120042802f002210520042802e8022106200441a8036a41186a22074200370300200441a8036a41106a22084200370300200441a8036a41086a22094200370300200442003703a80320062005200441a8036a100020044198016a41186a200729030037030020044198016a41106a200829030037030020044198016a41086a2009290300370300200420042903a80337039801024020042802ec02450d0020042802e802102a0b200441003602a80320044198016a4120200441a8036a100621070240024020042802a8032206417f470d00410021050c010b200420063602cc02200420073602c802200441a8036a200441c8026a108a0220042802c8032205450d06200441a8026a41186a200441a8036a41186a290300370300200441a8026a41106a200441a8036a41106a290300370300200441a8026a41086a200441a8036a41086a290300370300200441e8026a41086a200441d4036a290200370300200441e8026a41106a200441dc036a290200370300200441e8026a41186a200441e4036a29020037030020044188036a200441ec036a29020037030020044190036a200441f4036a280200360200200420042903a8033703a802200420042902cc033703e8022006450d002007102a0b200441c8026a41086a2209200441a8026a41086a290300370300200441c8026a41106a220a200441a8026a41106a290300370300200441c8026a41186a220b200441a8026a41186a290300370300200441a8036a41086a220c200441e8026a41086a2206290300370300200441a8036a41106a220d200441e8026a41106a2207290300370300200441a8036a41186a220e200441e8026a41186a2208290300370300200441a8036a41206a220f200441e8026a41206a290300370300200441a8036a41286a2210200441e8026a41286a280200360200200420042903a8023703c802200420042903e8023703a80302402005450d0020044188026a41186a200b29030037030020044188026a41106a200a29030037030020044188026a41086a2009290300370300200441d8016a41086a200c290300370300200441d8016a41106a200d290300370300200441d8016a41186a200e290300370300200441d8016a41206a200f290300370300200441d8016a41286a2010280200360200200420042903c80237038802200420042903a8033703d8010b2008200441b8016a41186a2903003703002007200441b8016a41106a2903003703002006200441b8016a41086a290300370300200420042903b8013703e8022005450d06200441306a41206a220c2004290388022211370300200441a8036a41186a2206200441e8026a41186a220d2903002212370300200441a8036a41106a2207200441e8026a41106a220e2903002213370300200441a8036a41086a2208200441e8026a41086a220f2903002214370300200441a8036a41286a20044188026a41086a2903002215370300200441a8036a41306a20044188026a41106a2903002216370300200441a8036a41386a20044188026a41186a2903002217370300200441306a41386a22102017370300200441306a41306a22182016370300200441306a41286a22192015370300200441306a41186a22092012370300200441306a41106a220a2013370300200441306a41086a220b2014370300200420042903e80222123703a803200420113703c80320042012370330200441286a221a200441d8016a41286a280200360200200441206a221b200441d8016a41206a290300370300200441186a221c200441d8016a41186a221d290300370300200441106a221e200441d8016a41106a221f290300370300200441086a2220200441d8016a41086a2221290300370300200420042903d801370300200441e8026a41386a22222010290300370300200441e8026a41306a22102018290300370300200441e8026a41286a22182019290300370300200441e8026a41206a2219200c290300370300200d2009290300370300200e200a290300370300200f200b290300370300200420042903303703e802201d2009290300370300201f200a2903003703002021200b290300370300200420042903303703d801200620222903003703002007201029030037030020082018290300370300200420053602c803200420192903003703a803200441cc036a22052004290300370200200441d4036a2020290300370200200441dc036a201e290300370200200441e4036a201c290300370200200441ec036a201b290300370200200441f4036a201a2802003602002006290300211120072007290300221220027c22133703002006201120037c2013201254ad7c37030020082903002111200420042903a803221220027c22133703a8032008201120037c2013201254ad7c370300200441f0006a20012002200310a50220043502702102200441f0006a41106a2903002111200441f0006a41086a2903002103200441d8016a200441a8036a10b50402402005280200450d0020042802c803102a0b200242018521020c070b200441a8036a200110b10420042d00a8034101470d0520044180036a200441c1036a290000370300200441e8026a41106a200441b9036a290000370300200441e8026a41086a200441b1036a290000370300200420042900a9033703e802200441306a200441e8026a2002200310a50220043502304201852102200441306a41106a2903002111200441306a41086a29030021030c060b200441a8036a20012002200310a50220043502a8034201852102200441b8036a2903002111200441b0036a29030021030c050b410d41011037000b41c4d1c3004133200441f8036a419cd9c3001038000b410e41011037000b41c4d1c3004133200441f8036a419cd9c3001038000b420021020b2000200337030820002002370300200041106a201137030020044180046a24000bc80201057f230041e0006b22022400200242f3e885db96cddbb320370308200241086a2001412c6a2001290300200141086a290300417f410f10a9020240410e10282203450d002003410029008aaf44370000200341066a4100290090af443700002002428e808080e001370234200220033602302000200241306a108f012002280238210320022802302100200241c0006a41186a22044200370300200241c0006a41106a22054200370300200241c0006a41086a220642003703002002420037034020002003200241c0006a1000200241106a41186a2004290300370300200241106a41106a2005290300370300200241106a41086a20062903003703002002200229034037031002402002280234450d002002280230102a0b200241203602442002200241106a3602402001200241c0006a10b604200241e0006a24000f0b410e41011037000bce0101027f230041106b2202240020024100360208200242013703002000412c6a2002108f012002200036020c2002410c6a200210a3012002200041106a36020c2002410c6a200210a30120002802202103200041286a2802002200200210b40102402000450d002003200041186c6a210003402002200336020c2002410c6a200210a301200341106a200210a0012000200341186a2203470d000b0b2002280204210320012802002001280204200228020022002002280208100702402003450d002000102a0b200241106a24000bf30901047f230041e0026b22052400200541a0016a41086a22064200370300200542003703a00141a990c6004119200541a0016a1008200541086a41086a2006290300370300200520052903a00137030841002106200541003602a001200541086a4110200541a0016a10062107024002400240024020052802a0012208417f460d002007450d0020084104490d01200728000021062007102a0b02402006417f6a220720064d0d00200541133602080c020b200541086a200710ca0320052802084113460d01200541a0016a200541086a419801109a051a20052802a8022107200541a0016a106a200720014d0d01200041828ac50036020420004101360200200041086a41c7003602002002106a0c020b41c4d1c3004133200541a0016a419cd9c3001038000b200541a0016a41086a22074200370300200542003703a00141a990c6004119200541a0016a1008200541086a41086a2007290300370300200520052903a0013703082005200641016a3602a001200541086a4110200541a0016a41041007200541a0016a2002418801109a051a200520033a00b002200520043602ac02200520013602a802024002400240024002400240411a10282207450d00200741186a41002f00ce88453b0000200741106a41002900c68845370000200741086a41002900be8845370000200741002900b688453700002007411a4134102c2207450d012007200636001a200541086a41186a22014200370300200541086a41106a22024200370300200541086a41086a22044200370300200542003703082007411e200541086a1000200541b8026a41186a2001290300370300200541b8026a41106a2002290300370300200541b8026a41086a2004290300370300200520052903083703b8022007102a200541003602102005420137030820052802a8022101410410282207450d022005410436020c20052005280210220241046a36021020052007360208200720026a2001360000200541a0016a200541086a10eb01024020052d00b002220741024b0d00024002400240024020070e03000102000b410021010c020b410121010c010b410221010b200520013a00df0202400240200528020c20052802102207460d00200528020821020c010b200741016a22022007490d07200741017422042002200420024b1b22044100480d070240024020070d002004102821020c010b200528020820072004102c21020b2002450d052005200436020c20052002360208200528021021070b2005200741016a360210200220076a20013a00000b20052802ac02210202400240200528020c2201200528021022076b4104490d00200528020821010c010b200741046a22042007490d06200141017422072004200720044b1b22074100480d060240024020010d002007102821010c010b200528020820012007102c21010b2001450d052005200736020c20052001360208200528021021070b2005200741046a360210200120076a2002360000200528020c2107200541b8026a4120200528020822012005280210100702402007450d002001102a0b200541a0016a106a200541ac016a2006360200200541a9016a20033a0000200541a8016a41033a0000200541053a00a00141014100200541a0016a10cc0120004100360200200020063602040c060b411a41011037000b413441011037000b410441011037000b200441011037000b200741011037000b1031000b200541e0026a24000bfe0201047f230041e0006b2202240002400240411310282203450d002003410f6a41002800e38945360000200341086a41002900dc8945370000200341002900d48945370000200341134126102c2203450d0120032001360013200241c0006a41186a22044200370300200241c0006a41106a22054200370300200241c0006a41086a220142003703002002420037034020034117200241c0006a1000200241186a2004290300370300200241106a2005290300370300200241086a2001290300370300200220022903403703002003102a200241c0006a200210e003200241306a41086a2001290300370300200241206a41086a200241c0006a411c6a2802003602002002200229034037033020022002290254370320024020022802502203450d002000200229033037030020002002290320370214200041086a200241306a41086a2903003703002000411c6a200241206a41086a2802003602000b20002003360210200241e0006a24000f0b411341011037000b412641011037000b130020004111360204200041cc8bc5003602000b3400200041f9aac50036020420004100360200200041146a410f360200200041106a4184abc500360200200041086a42093702000b4f01027f230041106b2202240002404101102822030d00410141011037000b200341003a0000200041086a4101360200200241013602042002200336020020002002290300370200200241106a24000b5b01027f23004190016b22022400200241133602000240410110282203450d00200341003a0000200042818080801037020420002003360200024020022802004113460d002002106a0b20024190016a24000f0b410141011037000bfd0201057f230041c0006b22022400200241206a4200370300200241186a4200370300200241086a41086a4200370300200241003a0028200242003703082002410036023820024201370330200241086a200241306a108f0102400240024020022d0028220341064b0d000240024002400240024002400240024020030e0700010203040506000b410021040c060b410121040c050b410221040c040b410321040c030b410421040c020b410521040c010b410621040b200220043a003f02400240200228023420022802382203460d00200228023021050c010b200341016a22052003490d03200341017422062005200620054b1b22064100480d030240024020030d002006102821050c010b200228023020032006102c21050b2005450d022002200636023420022005360230200228023821030b2002200341016a360238200520036a20043a00000b20002002290330370200200041086a200241306a41086a280200360200200241c0006a24000f0b200641011037000b1031000b4001017f230041106b2202240020024100360208200242013703004100200210b401200041086a200228020836020020002002290300370200200241106a24000b130020004106360204200041acc7c5003602000b3201017f02404104102822020d00410441011037000b20004284808080c00037020420002002360200200241809c313600000b3201017f02404104102822020d00410441011037000b20004284808080c0003702042000200236020020024180a3053600000b3e01017f02404110102822020d00411041011037000b20024200370008200242808084fea6dee111370000200042908080808002370204200020023602000b3201017f02404104102822020d00410441011037000b20004284808080c0003702042000200236020020024180de343600000ba30301047f230041c0006b22022400024002400240411310282203450d002003410f6a41002800e38945360000200341086a41002900dc8945370000200341002900d48945370000200341134126102c2203450d0120032000360013200241206a41186a22004200370300200241206a41106a22044200370300200241206a41086a220542003703002002420037032020034117200241206a1000200241186a2000290300370300200241106a2004290300370300200241086a2005290300370300200220022903203703002003102a411010282203450d02200320012903003700002003200141086a2903003700082002429080808080023702242002200336022020012802102104200141186a2802002203200241206a10b40102402003450d00200341057421002004210303402003200241206a108f01200341206a2103200041606a22000d000b0b2002280224210320024120200228022022002002280228100702402003450d002000102a0b0240200141146a280200450d002004102a0b200241c0006a24000f0b411341011037000b412641011037000b411041011037000bc01401077f230041d0016b2204240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240411a10282205450d00200541186a41002f00ce88453b0000200541106a41002900c68845370000200541086a41002900be8845370000200541002900b688453700002005411a4134102c2205450d012005200136001a200441e0006a41186a22064200370300200441e0006a41106a22074200370300200441e0006a41086a22084200370300200442003703602005411e200441e0006a1000200441306a41186a2006290300370300200441306a41106a2007290300370300200441306a41086a2008290300370300200420042903603703302005102a0240200441306a41204101410041001003417f470d0041b7d5c50021000c110b200441146a200041086a2900003702002004411c6a200041106a290000370200200441246a200041186a290000370200200420013602082004200029000037020c411010282205450d02200541002900a68845370000200541086a41002900ae88453700002004429080808080023702b401200420053602b001200541104120102c2205450d03200441203602b401200420042802b801220641046a3602b801200420053602b001200520066a2001360000200441086a410472200441b0016a108f0120042802b801210520042802b0012106200441e0006a41186a22074200370300200441e0006a41106a22084200370300200441e0006a41086a220942003703002004420037036020062005200441e0006a1000200441306a41186a2007290300370300200441306a41106a2008290300370300200441306a41086a200929030037030020042004290360370330024020042802b401450d0020042802b001102a0b200441306a41204101410041001003417f470d0f200441086a41186a200041186a290000370300200441086a41106a200041106a290000370300200441086a41086a200041086a29000037030020042000290000370308411310282205450d042005410f6a41002800a88945360000200541086a41002900a18945370000200541002900998945370000200541134126102c2205450d0520052001360013200441e0006a41186a22064200370300200441e0006a41106a22074200370300200441e0006a41086a220842003703002004420037036020054117200441e0006a1000200441306a41186a2006290300370300200441306a41106a2007290300370300200441306a41086a2008290300370300200420042903603703302005102a20044100360260200441306a4120200441e0006a100621050240024020042802602207417f460d002007210620050d010b20044100360268200442013703604100200441e0006a10b4012004280268210620042802642107200428026021050b200420063602582004200736025420042005360250024002402006450d00200441e0006a20052006410110d60220042802604101470d012004280254450d102004280250102a0c100b4101200441d0006a10b401200441086a200441d0006a108f010c0d0b200428026421080240200441ec006a2802002205200441e8006a2802002206460d002004280258200520066b6a220741206a2209417f4c0d070240024020090d004101210a0c010b20091028220a450d090b20042009360284012004200a360280012004200736028801200420044180016a3602602008200441e0006a200510d70120072005490d0920042802880122082007490d0a200428025822082006490d0b20042802800121092004280250210a2004200720056b2207360290012004200820066b22083602940120072008470d0c200920056a200a20066a2007109a051a200441086a20044180016a108f012004280288012106200428028401210720042802800121052004280254450d0e2004280250102a0c0e0b2004200441d0006a3602602008200441e0006a200610d701200441086a200441d0006a108f010c0c0b411a41011037000b413441011037000b411041011037000b412041011037000b411341011037000b412641011037000b1036000b200941011037000b200520071044000b20072008103c000b200620081044000b200441b0016a41146a4108360200200441bc016a412536020020044198016a41146a41033602002004420337029c01200441c8afc60036029801200441253602b401200420044190016a3602c801200420044194016a3602cc0120044204370370200442013702642004419cb0c6003602602004200441b0016a3602a8012004200441e0006a3602c0012004200441cc016a3602b8012004200441c8016a3602b00120044198016a41d8b0c600103e000b2004280258210620042802542107200428025021050b2005450d00200441306a41202005200610072007450d012005102a0c010b412010282206450d0220062004290308370000200641186a200441086a41186a290300370000200641106a200441086a41106a290300370000200641086a200441086a41086a290300370000411310282207450d03410021052007410f6a41002800a88945360000200741086a41002900a18945370000200741002900998945370000200741134126102c2207450d0420072001360013200441e0006a41186a22084200370300200441e0006a41106a22094200370300200441e0006a41086a220a42003703002004420037036020074117200441e0006a1000200441306a41186a2008290300370300200441306a41106a2009290300370300200441306a41086a200a290300370300200420042903603703302007102a20044100360268200442013703604101200441e0006a10b4010340200620056a200441e0006a108f014120200541206a2205470d000b20042802642105200441306a4120200428026022072004280268100702402005450d002007102a0b2006102a0b200441146a200041086a2900003702002004411c6a200041106a290000370200200441246a200041186a290000370200200420013602082004200029000037020c411010282205450d04200541002900a68845370000200541086a41002900ae88453700002004429080808080023702b401200420053602b001200541104120102c2205450d05200441203602b401200420042802b801220041046a3602b801200420053602b001200520006a2001360000200441086a410472200441b0016a108f0120042802b801210520042802b0012100200441e0006a41186a22064200370300200441e0006a41106a22014200370300200441e0006a41086a220742003703002004420037036020002005200441e0006a1000200441306a41186a2006290300370300200441306a41106a2001290300370300200441306a41086a200729030037030020042004290360370330024020042802b401450d0020042802b001102a0b410110282205450d0641002100200541807f410020021b2003723a0000200441306a41202005410110072005102a0b200441d0016a240020000f0b412041011037000b411341011037000b412641011037000b411041011037000b412041011037000b410141011037000bc76501037f230041206b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d00000eac010102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01ab0100010b2002200128021841dfd6c50041112001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000cab010b2002200128021841f0d6c500410b2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000caa010b2002200128021841fbd6c50041032001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000ca9010b2002200128021841fed6c50041052001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a4184d7c500105d21000ca8010b200220012802184194d7c50041042001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a4184d7c500105d21000ca7010b200220012802184198d7c50041022001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a4184d7c500105d21000ca6010b20022001280218419ad7c50041042001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000ca5010b20022001280218419ed7c50041032001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000ca4010b2002200128021841a1d7c50041022001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21000ca3010b2002200128021841a3d7c50041042001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21000ca2010b2002200128021841a7d7c50041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41b0d7c500105d21000ca1010b2002200128021841c0d7c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000ca0010b2002200128021841c6d7c50041042001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21000c9f010b2002200128021841cad7c500410c2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041016a36020c20012002410c6a41d8d7c500105d21000c9e010b2002200128021841e8d7c50041042001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c9d010b2002200128021841ecd7c50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c9c010b2002200128021841f2d7c50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21000c9b010b2002200128021841fad7c50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21000c9a010b200220012802184182d8c50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21000c99010b20022001280218418ad8c50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21000c98010b200220012802184193d8c50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21000c97010b20022001280218419cd8c50041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c96010b2002200128021841a3d8c50041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c95010b2002200128021841aad8c50041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c94010b2002200128021841b1d8c50041072001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c93010b2002200128021841b8d8c50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c92010b2002200128021841c1d8c50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c91010b2002200128021841cad8c500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c90010b2002200128021841d4d8c500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c8f010b2002200128021841ded8c50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c8e010b2002200128021841e7d8c50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c8d010b2002200128021841f0d8c500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c8c010b2002200128021841fad8c500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c8b010b200220012802184184d9c500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c8a010b20022001280218418ed9c500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c89010b200220012802184198d9c50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c88010b2002200128021841a0d9c50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c87010b2002200128021841a8d9c50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c86010b2002200128021841b0d9c50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c85010b2002200128021841b8d9c50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c84010b2002200128021841c1d9c500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c83010b2002200128021841cbd9c50041092001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c82010b2002200128021841d4d9c500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c81010b2002200128021841ded9c500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21012002200041086a36020c20012002410c6a41a8d6c500105d21000c80010b2002200128021841e8d9c500410d2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41d8d7c500105d21000c7f0b2002200128021841f5d9c500410a2001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41d8d7c500105d21000c7e0b2002200128021841ffd9c50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a4188dac500105d21000c7d0b200220012802184198dac50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041086a36020c200241106a2002410c6a41a0dac500105d21000c7c0b2002200128021841b0dac50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a8d6c500105d21000c7b0b2002200128021841b8dac50041082001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200041086a36020c200241106a2002410c6a41c0dac500105d21000c7a0b2002200128021841d0dac50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c790b2002200128021841d6dac50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c780b2002200128021841dbdac50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c770b2002200128021841e0dac50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c760b2002200128021841e6dac50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c750b2002200128021841ecdac50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c740b2002200128021841f2dac50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c730b2002200128021841f8dac50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c720b2002200128021841fedac50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c710b200220012802184184dbc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c700b20022001280218418adbc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6f0b200220012802184190dbc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6e0b200220012802184196dbc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6d0b20022001280218419bdbc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6c0b2002200128021841a0dbc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6b0b2002200128021841a6dbc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c6a0b2002200128021841acdbc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c690b2002200128021841b2dbc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c680b2002200128021841b8dbc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c670b2002200128021841bedbc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c660b2002200128021841c4dbc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c650b2002200128021841cadbc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c640b2002200128021841d0dbc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c630b2002200128021841d5dbc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c620b2002200128021841dadbc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c610b2002200128021841dfdbc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c600b2002200128021841e4dbc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5f0b2002200128021841e9dbc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5e0b2002200128021841eedbc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5d0b2002200128021841f3dbc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5c0b2002200128021841f8dbc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5b0b2002200128021841fddbc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c5a0b200220012802184182dcc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c590b200220012802184187dcc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c580b20022001280218418cdcc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c570b200220012802184192dcc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c560b200220012802184198dcc50041092001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c550b2002200128021841a1dcc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c540b2002200128021841a7dcc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c530b2002200128021841addcc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c520b2002200128021841b3dcc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c510b2002200128021841badcc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c500b2002200128021841c1dcc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4f0b2002200128021841c8dcc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4e0b2002200128021841cfdcc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4d0b2002200128021841d5dcc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4c0b2002200128021841dadcc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4b0b2002200128021841e0dcc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c4a0b2002200128021841e6dcc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c490b2002200128021841eddcc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c480b2002200128021841f4dcc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c470b2002200128021841fbdcc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c460b200220012802184182ddc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c450b200220012802184188ddc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c440b20022001280218418eddc50041092001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c430b200220012802184197ddc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c420b20022001280218419dddc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c410b2002200128021841a3ddc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c400b2002200128021841a9ddc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3f0b2002200128021841b0ddc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3e0b2002200128021841b7ddc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3d0b2002200128021841beddc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3c0b2002200128021841c5ddc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3b0b2002200128021841cbddc50041052001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c3a0b2002200128021841d0ddc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c390b2002200128021841d6ddc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c380b2002200128021841dcddc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c370b2002200128021841e3ddc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c360b2002200128021841eaddc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c350b2002200128021841f1ddc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c340b2002200128021841f8ddc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c330b2002200128021841feddc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c320b200220012802184184dec50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c310b20022001280218418bdec50041082001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c300b200220012802184193dec50041082001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2f0b20022001280218419bdec500410a2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2e0b2002200128021841a5dec50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2d0b2002200128021841acdec50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2c0b2002200128021841b2dec50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2b0b2002200128021841b8dec50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c2a0b2002200128021841bedec50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c290b2002200128021841c4dec50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c280b2002200128021841cadec50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c270b2002200128021841d0dec500410b2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c260b2002200128021841dbdec50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c250b2002200128021841e1dec50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c240b2002200128021841e7dec50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c230b2002200128021841eedec50041082001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c220b2002200128021841f6dec50041082001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c210b2002200128021841fedec500410a2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c200b200220012802184188dfc50041072001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1f0b20022001280218418fdfc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1e0b200220012802184195dfc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1d0b20022001280218419bdfc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1c0b2002200128021841a1dfc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1b0b2002200128021841a7dfc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c1a0b2002200128021841addfc50041062001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c190b2002200128021841b3dfc500410b2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c180b2002200128021841bedfc500410a2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c170b2002200128021841c8dfc500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c160b2002200128021841d4dfc500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c150b2002200128021841e0dfc500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c140b2002200128021841ecdfc500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c130b2002200128021841f8dfc500410d2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c120b200220012802184185e0c500410d2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c110b200220012802184192e0c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c100b20022001280218419ee0c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0f0b2002200128021841aae0c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0e0b2002200128021841b6e0c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0d0b2002200128021841c2e0c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0c0b2002200128021841d0e0c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0b0b2002200128021841dee0c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c0a0b2002200128021841ece0c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c090b2002200128021841fae0c500410c2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c080b200220012802184186e1c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c070b200220012802184194e1c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c060b2002200128021841a2e1c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c050b2002200128021841b0e1c500410e2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c040b2002200128021841bee1c500410d2001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c030b2002200128021841cbe1c50041112001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c020b2002200128021841dce1c50041112001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000c010b2002200128021841ede1c50041112001411c6a28020028020c1100003a001820022001360210200241003a001920024100360214200241106a21000b20002d00082101024020002802042203450d00200141ff0171210441012101024020040d00024020034101470d0020002d0009450d00200028020022042d00004104710d0041012101200428021841f4afc00041012004411c6a28020028020c1100000d010b2000280200220128021841c8a4c60041012001411c6a28020028020c11000021010b200020013a00080b200241206a2400200141ff01714100470bcd0203027f017e017f23004180016b220224002000280200210002400240024002400240200128020022034110710d002000280200210020034120710d012000ac22042004423f8722047c2004852000417f73411f762001103f21000c020b20002802002103410021000340200220006a41ff006a2003410f712205413072200541d7006a2005410a491b3a00002000417f6a2100200341047622030d000b20004180016a22034181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000c010b410021030340200220036a41ff006a2000410f712205413072200541376a2005410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d0220014101419087c0004102200220036a4180016a410020036b104221000b20024180016a240020000f0b20034180011044000b20004180011044000bcd0202027f027e23004180016b220224002000280200210002400240024002400240200128020022034110710d002000290300210420034120710d0120042004423f8722057c2005852004427f552001103f21000c020b20002903002104410021000340200220006a41ff006a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000c010b410021000340200220006a41ff006a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000b20024180016a240020000f0b20034180011044000b20034180011044000bc00201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d0020002d0000210420034120710d012004ad42ff018341012001103f21000c020b20002d00002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d0220014101419087c0004102200220006a4180016a410020006b104221000b20024180016a240020000f0b20044180011044000b20044180011044000bd30101017f230041106b22022400024002400240024020002d00000e03010200010b2002200128021841fee1c500410b2001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c020b200220012802184189e2c500410c2001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b200220012802184195e2c500410d2001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040b200241106a240020000b8a0201027f230041106b2202240020002802002802002100200128021841b8d6c500410b2001411c6a28020028020c1100002103200241003a0005200220033a0004200220013602002002200036020c200241c3d6c50041052002410c6a41c8d6c500105c21012002200041086a36020c200141d8d6c50041072002410c6a41a8d6c500105c1a20022d00042101024020022d0005450d00200141ff0171210041012101024020000d0020022802002201411c6a28020028020c210020012802182103024020012d00004104710d00200341eeafc0004102200011000021010c010b200341f0afc0004101200011000021010b200220013a00040b200241106a2400200141ff01714100470b890501047f230041d0006b220224002000280200220041046a28020021032000280200210041012104200128021841adafc00041012001411c6a28020028020c110000210502402003450d0020022000360204024020050d00024020012d0000410471450d0041012104200128021841afafc0004101200128021c28020c1100000d012001280200210541012104200241013a001720022005360218200241b0afc00036023420022001290218370308200220012d00303a00482002200128020436021c200220012902283703402002200129022037033820022001290210370328200220012902083703202002200241176a3602102002200241086a360230200241046a200241186a10d8010d01200228023041c8afc0004102200228023428020c11000021040c010b200241046a200110d80121040b024020034101470d00200421050c010b200041046a21002003410274417c6a210320042105034020022000360204200541ff0171210441012105024020040d00024020012802002204410471450d00200241013a001720022004360218200241b0afc00036023420022001290218370308200220012d00303a00482002200128020436021c200220012902283703402002200129022037033820022001290210370328200220012902083703202002200241176a3602102002200241086a360230200241046a200241186a10d8010d01200228023041c8afc0004102200228023428020c11000021050c010b200128021841caafc0004102200128021c28020c1100000d00200241046a200110d80121050b200041046a21002003417c6a22030d000b0b41012100024020050d00200128021841aeafc0004101200128021c28020c11000021000b200241d0006a240020000b19002000200141186a280200360204200020012802103602000bc50201037f230041206b2202240002400240200028020022002d00004104470d002002200128021841b7e2c50041082001411c6a28020028020c11000022003a001820022001360210200241003a0019200241003602140c010b2002200128021841bfe2c50041052001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200036020c200241106a2002410c6a41c4e2c500105d210120022d0018210020022802142203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d0041012100200428021841f4afc00041012004411c6a28020028020c1100000d010b2001280200220028021841c8a4c60041012000411c6a28020028020c11000021000b200120003a00080b200241206a2400200041ff01714100470b0c002000280200200110d0040b8f0201017f230041106b220224000240024002400240024020002d00000e0401020300010b2002200128021841d4e2c50041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c030b2002200128021841d7e2c50041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c020b2002200128021841dae2c50041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b2002200128021841dde2c50041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040b200241106a240020000bc00201037f230041206b220224000240024020002d00004104470d002002200128021841b7e2c50041082001411c6a28020028020c11000022003a001820022001360210200241003a0019200241003602140c010b2002200128021841bfe2c50041052001411c6a28020028020c1100003a001820022001360210200241003a0019200241003602142002200036020c200241106a2002410c6a41c4e2c500105d210120022d0018210020022802142203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d0041012100200428021841f4afc00041012004411c6a28020028020c1100000d010b2001280200220028021841c8a4c60041012000411c6a28020028020c11000021000b200120003a00080b200241206a2400200041ff01714100470b0c002000280200200110c6040bed0902067f017e024020010d00200041ac013a00000f0b024002400240024002400240024020012d00002202414f6a41fb004f0d000c010b02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020020e312c2c0001022c2c0304052c06072c2c08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292c0b20012d00012103410221020c2b0b20012d00012103410321020c2a0b20012d00012103410421020c290b200141046a2802002104410721020c270b200141046a2802002104410821020c260b200141046a2802002105410c10282204450d272005280204220641ffffffff03712006470d2820064102742201417f4c0d280240024020010d00410421070c010b200110282207450d2a0b02402006450d00200528020021012006410274210320072102034020022001280200360200200241046a2102200141046a21012003417c6a22030d000b0b200420063602042004200736020020042005280208360208410921020c250b200141046a2802002104410b21020c240b200141046a280200210420012d00012103410c21020c240b200141046a2802002104410f21020c220b200141046a2802002104411021020c210b200141046a2802002104411121020c200b200141046a2802002104411221020c1f0b200141046a2802002104411321020c1e0b200141046a280200210420013502082108411421020c1d0b200141046a280200210420013502082108411521020c1c0b200141046a280200210420013502082108411621020c1b0b200141046a280200210420013502082108411721020c1a0b200141046a280200210420013502082108411821020c190b200141046a280200210420013502082108411921020c180b200141046a280200210420013502082108411a21020c170b200141046a280200210420013502082108411b21020c160b200141046a280200210420013502082108411c21020c150b200141046a280200210420013502082108411d21020c140b200141046a280200210420013502082108411e21020c130b200141046a280200210420013502082108411f21020c120b200141046a280200210420013502082108412021020c110b200141046a280200210420013502082108412121020c100b200141046a280200210420013502082108412221020c0f0b200141046a280200210420013502082108412321020c0e0b200141046a280200210420013502082108412421020c0d0b200141046a280200210420013502082108412521020c0c0b200141046a280200210420013502082108412621020c0b0b200141046a280200210420013502082108412721020c0a0b200141046a280200210420013502082108412821020c090b200141046a280200210420013502082108412921020c080b200141046a280200210420013502082108412a21020c070b20012d00012103412b21020c070b20012d00012103412c21020c060b200141046a2802002104412d21020c040b20012903082108412e21020c020b200141046a2802002104412f21020c020b20012903082108413021020b0b0b200020033a0001200020023a0000200041086a2008370300200041046a20043602000f0b410c41041037000b1036000b200141041037000bba0201037f230041106b220224000240024020002802000d002002200128021841e0e2c50041042001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b2002200128021841e4e2c50041042001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41e8e2c500105d210120022d0008210020022802042203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d0041012100200428021841f4afc00041012004411c6a28020028020c1100000d010b2001280200220028021841c8a4c60041012000411c6a28020028020c11000021000b200120003a00080b200241106a2400200041ff01714100470b22002001419daec0004198aec00020002802002d000022001b4104410520001b10450bd60501087f230041106b220324002002280208220441546a2105200241106a280200220641306c210702400340410021082007450d01200741506a21072005412c6a2109200541306a220a210520092d00004103470d000b200a41086a2802002207450d00200741286c2105200a28020041186a2107410021080340200820072d0000456a2108200741286a2107200541586a22050d000b0b02400240024002400240024002400240200120086b220a20014b0d00200641306c2107200441546a210503402007450d02200741506a21072005412c6a2108200541306a2209210520082d0000410c470d000b200941086a280200200a4b0d02411e102822070d05411e41011037000b412c102822070d02412c41011037000b412c102822070d02412c41011037000b2009280200200a41186c6a28020821072003200a200210dd0420032802004101460d0320032802042105200041003602002000200520076a3602040c040b2000200736020420004101360200200741286a41002800fee545360000200741206a41002900f6e545370000200741186a41002900eee545370000200741106a41002900e6e545370000200741086a41002900dee545370000200741002900d6e545370000200041086a42ac808080c0053702000c030b2000200736020420004101360200200741286a41002800aae645360000200741206a41002900a2e645370000200741186a410029009ae645370000200741106a4100290092e645370000200741086a410029008ae64537000020074100290082e645370000200041086a42ac808080c0053702000c020b2000200736020420004101360200200741166a41002900c4e645370000200741106a41002900bee645370000200741086a41002900b6e645370000200741002900aee645370000200041086a429e808080e0033702000c010b20002003290204370204200041013602002000410c6a2003410c6a2802003602000b200341106a24000b8d0301067f230041106b220224000240024002400240200041046a2802002203200041086a28020022046b20012802042205200128020022066b4104762207490d00200028020021030c010b200420076a22062004490d02200341017422052006200520064b1b220641ffffffff00712006470d02200641047422054100480d020240024020030d002005102821030c010b200028020020034104742005102c21030b2003450d0120002003360200200041046a2006360200200041086a280200210420012802042105200128020021060b0240024020062005470d00410021060c010b2001200641106a3602000b2002200610d304024020022d000041ac01460d00200320044104746a2106034020062002290300370300200641086a200241086a29030037030002400240200128020022052001280204470d00410021050c010b2001200541106a3602000b200441016a2104200641106a21062002200510d30420022d000041ac01470d000b0b200041086a2004360200200241106a24000f0b200541081037000b1031000b1000200028020035020041012001103f0be00a01067f024002400240024020012d00002202414f6a41fb00490d0002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020020e312a2a0001022a2a0304052a06072a2a08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a0b200020012d00013a0001200041023a00000f0b200020012d00013a0001200041033a00000f0b200020012d00013a0001200041043a00000f0b200041046a200141046a280200360200200041073a00000f0b200041046a200141046a280200360200200041083a00000f0b200141046a2802002103410c10282204450d252003280204220541ffffffff03712005470d2620054102742201417f4c0d260240024020010d00410421060c010b200110282206450d280b02402005450d00200328020021012005410274210720062102034020022001280200360200200241046a2102200141046a21012007417c6a22070d000b0b200420053602042004200636020020042003280208360208200041046a2004360200200041093a00000f0b200041046a200141046a2802003602002000410b3a00000f0b200020012d00013a0001200041046a200141046a2802003602002000410c3a00000f0b200041046a200141046a2802003602002000410f3a00000f0b200041046a200141046a280200360200200041103a00000f0b200041046a200141046a280200360200200041113a00000f0b200041046a200141046a280200360200200041123a00000f0b200041046a200141046a280200360200200041133a00000f0b200041046a200141046a290200370200200041143a00000f0b200041046a200141046a290200370200200041153a00000f0b200041046a200141046a290200370200200041163a00000f0b200041046a200141046a290200370200200041173a00000f0b200041046a200141046a290200370200200041183a00000f0b200041046a200141046a290200370200200041193a00000f0b200041046a200141046a2902003702002000411a3a00000f0b200041046a200141046a2902003702002000411b3a00000f0b200041046a200141046a2902003702002000411c3a00000f0b200041046a200141046a2902003702002000411d3a00000f0b200041046a200141046a2902003702002000411e3a00000f0b200041046a200141046a2902003702002000411f3a00000f0b200041046a200141046a290200370200200041203a00000f0b200041046a200141046a290200370200200041213a00000f0b200041046a200141046a290200370200200041223a00000f0b200041046a200141046a290200370200200041233a00000f0b200041046a200141046a290200370200200041243a00000f0b200041046a200141046a290200370200200041253a00000f0b200041046a200141046a290200370200200041263a00000f0b200041046a200141046a290200370200200041273a00000f0b200041046a200141046a290200370200200041283a00000f0b200041046a200141046a290200370200200041293a00000f0b200041046a200141046a2902003702002000412a3a00000f0b200020012d00013a00012000412b3a00000f0b200020012d00013a00012000412c3a00000f0b200041046a200141046a2802003602002000412d3a00000f0b200041086a200141086a2903003703002000412e3a00000f0b200041046a200141046a2802003602002000412f3a00000f0b200041086a200141086a290300370300413021020b200020023a00000f0b410c41041037000b1036000b200141041037000bea0302057f017e02402001450d00034020002802940321002001417f6a22010d000b0b02402002450d004100210341002101034002400240200120002f01064f0d00200020014105746a220441c4006a2802002105200441386a2802002106200441346a2802002107200141016a21010c010b02400240200028020022010d002003ad210841002104410021010c010b20003301044220862003ad842108410121040b2000102a2008a72103024002402008422088a7220620012f01064f0d00200121050c010b034002400240200128020022050d002003ad2108410021050c010b200441016a210420013301044220862003ad8421080b2001102a2008a72103200521012008422088a7220620052f01064f0d000b0b200641027420056a4198036a2802002100200520064105746a220141c4006a2802002105200141386a2802002106200141346a280200210702402004417f6a2201450d00034020002802940321002001417f6a22010d000b0b410021010b20054102460d012002417f6a210202402006450d002007102a0b20020d000b0b0240200041f8b9c000460d00200028020021012000102a2001450d00200128020021052001102a2005450d00024020052802002201450d0003402005102a2001210520012802002200210120000d000b0b2005102a0b0bba09010b7f230041e0006b22032400200320013602202002280208220441546a2105200241106a280200220641306c210202400340024020020d00410021070c020b200241506a21022005412c6a2107200541306a2208210520072d00004102470d000b200341186a200810fa0320032802182107200328021c21020b2002410020071b2109200641306c2102200441546a21052007410420071b210a02400340024020020d004100210b0c020b200241506a21022005412c6a2107200541306a2208210520072d00004104470d000b200341106a200810fa032003280210210b2003280214210c0b200641306c2102200441546a2105200b4104200b1b210d02400240024002400240024003402002450d01200241506a21022005412c6a2107200541306a2208210520072d00004103470d000b200841086a2802002202450d00200241286c2107200828020041186a2102410021050340200520022d0000456a2105200241286a2102200741586a22070d000b200520014d0d01200641306c2102200441546a2105024003402002450d01200241506a21022005412c6a2107200541306a2208210520072d00004103470d000b200341086a200810fa0320032802082202200328020c41286c6a21070240024002400340024002400240200720026b41f8004b0d0020022007460d0d2002411c6a2105034020022d0018450d02200541286a2105200241286a22022007470d000c0e0b0b20022d00180d01200241186a2105200241286a21080c040b2005410c6a21080c040b200241c0006a22052d0000450d010240200241e8006a22052d0000450d0020024190016a2105200241a0016a2208210220052d00000d010c030b0b200241f8006a21080c010b200241d0006a21080b200541046a21050b2001450d0303402001417f6a210120082102024002400340024002400240200720026b41f8004b0d0020022007460d0d2002411c6a2105034020022d0018450d02200541286a2105200241286a22022007460d0e0c000b0b20022d00180d01200241186a2105200241286a21080c040b2005410c6a210820010d040c080b200241c0006a22052d0000450d010240200241e8006a22052d0000450d0020024190016a2105200241a0016a2208210220052d00000d010c030b0b200241f8006a21080c010b200241d0006a21080b20010d000b200541046a21050c030b41cce6c50041c2001050000b410021050b0240200c4100200b1b200120056b22024d0d00200d20024102746a22050d010b200341cc006a41013602002003420237023c200341ece7c5003602382003410136022c2003200341286a3602482003200341206a360228200341d0006a200341386a1033200341d0006a21020c010b2003200528020022023602240240200920024d0d00200a20024104746a2202450d0020002002360204410021020c020b200341cc006a4102360200200341dc006a41013602002003420337023c200341fce7c500360238200341013602542003200341d0006a3602482003200341206a3602582003200341246a360250200341286a200341386a1033200341286a21020b20022802002105200041086a200229020437020020002005360204410121020b20002002360200200341e0006a24000f0b418ee7c50041dd001050000bf80d01067f0240024020002d00002201410e4b0d00024002400240024002400240024002400240024002400240024020010e0f0001020304050607080e090e0a0b0c000b200041086a280200450d0d200041046a280200102a0f0b0240200041086a280200450d00200041046a280200102a0b200041146a280200450d0c200041106a280200102a0f0b02402000410c6a2802002202450d00200041046a28020021012002410474210203400240200141046a280200450d002001280200102a0b200141106a2101200241706a22020d000b0b200041086a280200450d0b2000280204102a0f0b02402000410c6a2802002202450d00200041046a2802002101200241286c210203400240200141046a280200450d002001280200102a0b0240200141106a280200450d002001410c6a280200102a0b200141286a2101200241586a22020d000b0b200041086a280200450d0a2000280204102a0f0b200041086a280200450d09200041046a280200102a0f0b200041086a280200450d08200041046a280200102a0f0b200041086a280200450d07200041046a280200102a0f0b02402000410c6a2802002201450d00200041046a280200220320014104746a21040340024020032802082202450d0020032802002101200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102a200528020021060b2006102a0b200141106a2101200241706a22020d000b0b200341106a21010240200341046a280200450d002003280200102a0b2001210320012004470d000b0b200041086a280200450d062000280204102a0f0b02402000410c6a2802002202450d00200041046a2802002101200241146c210203400240200141046a280200450d002001280200102a0b200141146a21012002416c6a22020d000b0b200041086a280200450d052000280204102a0f0b02402000410c6a2802002201450d00200041046a28020022032001411c6c6a21040340024020032802042201450d0002402003410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102a200528020021060b2006102a0b200141106a2101200241706a22020d000b0b200341086a280200450d002003280204102a0b2003411c6a21010240200341146a280200450d002003280210102a0b2001210320012004470d000b0b200041086a280200450d042000280204102a0f0b02402000410c6a2802002201450d00200041046a2802002203200141186c6a210403400240200341046a280200450d002003280200102a0b0240200341146a2802002202450d00200328020c2101200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102a200528020021060b2006102a0b200141106a2101200241706a22020d000b0b200341186a21010240200341106a280200450d00200328020c102a0b2001210320012004470d000b0b200041086a280200450d032000280204102a0f0b02402000410c6a2802002201450d00200041046a28020022032001411c6c6a21040340024020032802042201450d0002402003410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d002006280200102a200528020021060b2006102a0b200141106a2101200241706a22020d000b0b200341086a280200450d002003280204102a0b2003411c6a21010240200341146a280200450d002003280210102a0b2001210320012004470d000b0b200041086a280200450d022000280204102a0f0b0240200041046a2802002201450d00200041086a280200450d002001102a0b0240200041146a2802002201450d0002402000411c6a2802002202450d002002410c6c21020340024020012802002206450d00200141046a280200450d002006102a0b2001410c6a2101200241746a22020d000b0b200041186a280200450d002000280214102a0b200041246a2802002203450d0102402000412c6a2802002201450d00200320014104746a210403402003220541106a2103024020052802042201450d0002402005410c6a2802002202450d002002410c6c21020340024020012802002206450d00200141046a280200450d002006102a0b2001410c6a2101200241746a22020d000b0b200541086a280200450d002005280204102a0b20032004470d000b0b200041286a280200450d012000280224102a0c010b0240200041086a280200450d00200041046a280200102a0b0240200041146a2802002201450d00200041186a280200450d002001102a0b200041246a280200450d00200041206a280200102a0f0b0bd65e010c7f23004190016b220324002003200136021c2002280208220441546a2105200241106a280200220641306c21010240024002400240024002400240024002400240024002400240024003402001450d01200141506a21012005412c6a2107200541306a2208210520072d00004104470d000b200641306c2101200441546a210503402001450d02200141506a21012005412c6a2107200541306a2209210520072d0000410c470d000b200641306c2101200441546a210503402001450d03200141506a21012005412c6a2107200541306a2204210520072d00004102470d000b02404100280280b1464105490d002003410136023c20032003411c6a3602384100280284b146210120034188016a41980136020020034180016a42ed80808010370300200341f8006a4125360200200341f0006a4101360200200341e0006a4201370300200341d8006a410a360200200341fcf0c50036027c200341d7f0c500360274200341ec006a200341386a360200200341f8edc50036025c200341cdf0c500360254200341053602504188b1c60041b8aec600200141024622011b200341d0006a41c8b0c00041e0b0c00020011b2802101102000b200341106a200810fa032003280214200328021c22014d0d03200328021020014102746a2201450d03200341086a200410fa030240200328020c200128020022014d0d00200328020820014104746a22010d050b412510282201450d052001411d6a410029009dee45370000200141186a4100290098ee45370000200141106a4100290090ee45370000200141086a4100290088ee4537000020014100290080ee45370000200041086a42a5808080d00437020020002001360204200041013602000c0d0b411310282201450d082001410f6a41002800d3ed45360000200141086a41002900cced45370000200141002900c4ed45370000200041086a4293808080b00237020020002001360204200041013602000c0c0b410f10282201450d06200141076a41002900deed45370000200141002900d7ed45370000200041086a428f808080f00137020020002001360204200041013602000c0b0b410f10282201450d04200141076a41002900eded45370000200141002900e6ed45370000200041086a428f808080f00137020020002001360204200041013602000c0a0b412510282201450d022001411d6a410029009dee45370000200141186a4100290098ee45370000200141106a4100290090ee45370000200141086a4100290088ee4537000020014100290080ee45370000200041086a42a5808080d00437020020002001360204200041013602000c090b02400240200941086a280200200328021c22054b0d00412710282201450d012001411f6a41002900c4ee45370000200141186a41002900bdee45370000200141106a41002900b5ee45370000200141086a41002900adee45370000200141002900a5ee45370000200041086a42a7808080f00437020020002001360204200041013602000c0a0b20092802002109200341206a41086a420037030020034280808080c00037032020012d000d2107410021012003410036024020032007410447220a36023c2003200a360238200341003a0044024002400240024002404100280280b14641044b0d00200341d0006a41086a200341386a41086a29030037030020032003290338370350200341206a410472210b200341d0006a21070c010b2003412d36024c2003200341386a3602484100280284b146210120034188016a41cb0036020020034180016a42ed80808010370300200341f8006a4125360200200341f0006a4101360200200341e0006a4201370300200341d0006a41086a2207410a360200200341fcf0c50036027c200341d7f0c500360274200341ec006a200341c8006a360200200341cceec50036025c200341cdf0c500360254200341053602504188b1c60041b8aec600200141024622011b200341d0006a41c8b0c00041e0b0c00020011b280210110200200328022c2108200328022821012007200341386a41086a29030037030020032003290338370350200341206a410472210b200341d0006a210720082001470d010b200141016a22082001490d01200141017422062008200620084b1b220841ffffffff00712008470d01200841047422064100480d010240024020010d002006102821010c010b200b28020020014104742006102c21010b2001450d02200b200136020020032008360228200328022c21080b200b28020020084104746a22012007290200370200200141086a200741086a2902003702002003200328022c41016a36022c410021072009200541186c6a2201280214450d092009200541186c6a410c6a2109200141146a2108200341d0006a410472210c410021074100210103400240200328022020074d0d00200341d0006a200341206a410010e304024020032802504101470d00200041013602002000200c2902003702042000410c6a200c41086a2802003602000c0d0b2007200328022020032802542d000c1b21070b02400240024002400240024002402001200828020022054f0d002003200928020020014104746a220536023402404100280280b1464105490d002003412936023c2003200341346a3602384100280284b1462105200341c90136028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341b0aec60036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328023421050b024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020052d000022060eac0102220000002201030405060708090a0b0c0d0e0f1010101010101010101010101010111111111111111111121314141414151616161616161616161615161616161616161616161616161616161616161616161717171818181818181818181818181818181717171818181818181818181818181818181717171717171718181818181818171717171717171818181818181819191919191919191919191919191919191919191919191919020b20052d00012105200320032802203602402003200541044722053602382003200641034720057136023c200341003a004402404100280280b1464105490d002003412d36024c2003200341386a3602484100280284b1462105200341cb0036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341cceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341c8006a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b2802101102000b200341d0006a41086a2206200341386a41086a290300370300200320032903383703500240200328022c22052003280228470d00200541016a220d2005490d242005410174220e200d200e200d4b1b220d41ffffffff0071200d470d24200d410474220e4100480d240240024020050d00200e102821050c010b200b2802002005410474200e102c21050b2005450d1d200b20053602002003200d360228200328022c21050b200b28020020054104746a22052003290350370200200541086a20062903003702002003200328022c41016a36022c0c210b4100210502404100280280b1464105490d000240200328022c2206417f6a220d20064b0d00200b280200200d4104746a4100200d2006491b21050b2003412e36024c200320053602382003200341386a3602484100280284b1462105200341d30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341d4eec50036025c2003410a360258200341cdf0c500360254200341053602502003200341c8006a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b2802101102000b0240200328022c2205450d0020032005417f6a220536022c200b28020020054104746a22052d000c4102470d1a0b411710282201450d1c2001410f6a41002900ebee45370000200141086a41002900e4ee45370000200141002900dcee45370000200041086a4297808080f00237020020002001360204200041013602000c2c0b02404100280280b1464105490d004100280284b1462105200341c10036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003420437026c20034201370360200341f4eec50036025c2003410a360258200341cdf0c500360254200341053602504188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b2802101102000b0240200328022c2205417f6a220620054f0d00200620054d0d180b411710282201450d1e2001410f6a41002900ebee45370000200141086a41002900e4ee45370000200141002900dcee45370000200041086a4297808080f00237020020002001360204200041013602000c2b0b200341d0006a200341206a200541046a28020010e304024020032802504101470d00200041013602002000200c2902003702042000410c6a200c41086a2802003602000c2b0b200341d0006a200341206a200328025428020410e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c2b0b02404100280280b1464105490d004100280284b1462105200341c10036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003420437026c20034201370360200341f4eec50036025c2003410a360258200341cdf0c500360254200341053602504188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b2802101102000b024002400240200328022c2205417f6a220620054f0d00200620054d0d010b4117102822010d01411741011037000b200b28020020064104746a41013a000c0c1f0b2001410f6a41002900ebee45370000200141086a41002900e4ee45370000200141002900dcee45370000200041086a4297808080f00237020020002001360204200041013602000c2a0b200341d0006a200341206a200541046a28020010e304024020032802504101470d00200041013602002000200c2902003702042000410c6a200c41086a2802003602000c2a0b200341d0006a200341206a2003280254280204220510e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c2a0b200341d0006a200341206a410110e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c2a0b2003200536024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c1e0b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c290b200341d0006a200341206a200541046a28020028020810e304024020032802504101470d00200041013602002000200c2902003702042000410c6a200c41086a2802003602000c290b2003280254280204210d2005280204220628020441027421052006280200210602400340024020050d00200341d0006a200341206a200d10e4042003280250450d0220002003290350370204200041013602002000410c6a200341d8006a2802003602000c2b0b200341d0006a200341206a200628020010e304024020032802504101470d00200041013602002000200c2902003702042000410c6a200c41086a2802003602000c2b0b2005417c6a2105200641046a21062003280254280204200d460d000b412710282201450d1a2001411f6a41002900b1ef45370000200141186a41002900aaef45370000200141106a41002900a2ef45370000200141086a410029009aef4537000020014100290092ef45370000200041086a42a7808080f00437020020002001360204200041013602000c290b02404100280280b1464105490d004100280284b1462105200341c10036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003420437026c20034201370360200341f4eec50036025c2003410a360258200341cdf0c500360254200341053602504188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b2802101102000b024002400240200328022c2205417f6a220620054f0d00200620054d0d010b4117102822010d01411741011037000b200b28020020064104746a41013a000c0c1d0b2001410f6a41002900ebee45370000200141086a41002900e4ee45370000200141002900dcee45370000200041086a4297808080f00237020020002001360204200041013602000c280b200341d0006a200341206a200a10e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c280b02404100280280b1464105490d004100280284b1462105200341c10036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003420437026c20034201370360200341f4eec50036025c2003410a360258200341cdf0c500360254200341053602504188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b2802101102000b024002400240200328022c2205417f6a220620054f0d00200620054d0d010b4117102822010d01411741011037000b200b28020020064104746a41013a000c0c1c0b2001410f6a41002900ebee45370000200141086a41002900e4ee45370000200141002900dcee45370000200041086a4297808080f00237020020002001360204200041013602000c270b200341d0006a200541046a280200200210db04024020032802504101470d00200041013602002000200c2902003702042000410c6a200c41086a2802003602000c270b200341d0006a200341206a2003280254220528020810e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c270b200320052d000d410447220536024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c1b0b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c260b2003200410fa03024002402003280204200541046a28020022054d0d002003280200220620054104746a220d0d010b410e10282201450d18200141066a41002900bfef45370000200141002900b9ef45370000200041086a428e808080e00137020020002001360204200041013602000c260b200341d0006a200341206a200620054104746a28020810e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c260b2003200d2d000d410447220536024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c1a0b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c250b200341d0006a200341206a410110e4042003280250450d1820002003290350370204200041013602002000410c6a200341d8006a2802003602000c240b200341d0006a200341206a410210e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c240b41012105200341d0006a200341206a410110e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c240b2003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c180b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c230b410121052003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c170b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c220b200341d0006a200341206a410110e4042003280250450d1520002003290350370204200041013602002000410c6a200341d8006a2802003602000c210b41012105200341d0006a200341206a410110e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c210b2003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c150b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c200b410121052003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c140b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c1f0b200341d0006a200341206a410110e4042003280250450d1220002003290350370204200041013602002000410c6a200341d8006a2802003602000c1e0b41012105200341d0006a200341206a410110e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c1e0b2003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c120b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c1d0b200341d0006a200341206a410210e4042003280250450d1020002003290350370204200041013602002000410c6a200341d8006a2802003602000c1c0b410121052003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c100b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c1b0b41012105200341d0006a200341206a410110e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c1b0b2003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c0f0b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c1a0b410121052003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c0e0b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c190b41012105200341d0006a200341206a410110e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c190b2003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c0d0b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c180b200341d0006a200341206a410210e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c180b410121052003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c0c0b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c170b41012105200341d0006a200341206a410110e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c170b2003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c0b0b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c160b200341d0006a200341206a410210e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c160b410121052003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c0a0b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c150b41012105200341d0006a200341206a410110e40402402003280250450d0020002003290350370204200041013602002000410c6a200341d8006a2802003602000c150b2003410136024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328024821050b024002402003280220220620056a220520064f0d00410e102822010d01410e41011037000b200320053602200c090b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c140b200b28020020064104746a41013a000c0c070b2005280200210620032005280208220536023802404100280280b1464105490d002003410136024c2003200341386a3602484100280284b1462105200341db0036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341c8efc50036025c2003410a360258200341cdf0c500360254200341053602502003200341c8006a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b280210110200200328023821050b200320053602202003200636024802404100280280b1464105490d002003410136023c2003200341c8006a3602384100280284b1462105200341e30036028801200342ed8080801037038001200341fcf0c50036027c20034125360278200341d7f0c5003602742003410136027020034201370360200341fceec50036025c2003410a360258200341cdf0c500360254200341053602502003200341386a36026c4188b1c60041b8aec600200541024622051b200341d0006a41c8b0c00041e0b0c00020051b28021011020020032802202105200328024821060b0240200520066a220620054f0d00410e102822010d11410e41011037000b200320063602200c060b41d0efc500200120051034000b200e41041037000b411741011037000b412741011037000b410e41011037000b411741011037000b200141016a22012008280200490d000c0a0b0b1031000b200641041037000b412741011037000b412541011037000b412541011037000b410f41011037000b410f41011037000b411341011037000b200141066a410029008aef4537000020014100290084ef45370000200041086a428e808080e00137020020002001360204200041013602000c010b20004100360200200020073602042003280228450d01200b280200102a0c010b2003280228450d00200b280200102a0b20034190016a24000bf50202057f017e02400240024020014108490d00200141017641feffffff07712202417f6a220320014f0d022001410d74200173220441117620047322044105742004732205417f2001417f6a677622067122044100200120042001491b6b220420014f0d01200020034103746a220329020021072003200020044103746a220429020037020020042007370200024020022001490d00200221030c030b2005410d7420057322044111762004732204410574200473220520067122044100200120042001491b6b220420014f0d01200020024103746a220329020021072003200020044103746a2204290200370200200420073702002002410172220320014f0d022005410d742005732204411176200473220441057420047320067122044100200120042001491b6b220420014f0d01200020034103746a220129020021072001200020044103746a2200290200370200200020073702000b0f0b41a8e9c500200420011034000b4198e9c500200320011034000bd50302047f017e024020014101762202450d0003402002417f6a2202210302400240024003402003410174220441017221050240200441026a220420014f0d00200520014f0d0220042005200020054103746a280200200020044103746a280200491b21050b200520014f0d03200320014f0d02200020034103746a2203280200200020054103746a22042802004f0d03200329020021062003200429020037020020042006370200200521030c000b0b41e8eac500200520011034000b41f8eac500200320011034000b20020d000b0b0240024020014102490d002001210403402004417f6a220420014f0d02200029020021062000200020044103746a2205290200370200200520063702004100210302400240024003402003410174220241017221050240200241026a220220044f0d00200520044f0d0220022005200020054103746a280200200020024103746a280200491b21050b200520044f0d03200320044f0d02200020034103746a2203280200200020054103746a22022802004f0d03200329020021062003200229020037020020022006370200200521030c000b0b41e8eac500200520041034000b41f8eac500200320041034000b200441014b0d000b0b0f0b41a8e9c500200420011034000bea04050a7f017e017f017e027f200041686a21022001417f6a2103200041086a2104410021052001413249210641012107024003400240024020072001490d00410021080c010b410121082000200741037422096a220a280200220b200a41786a280200490d00200420096a210803404101210a20032007460d03200741016a21072008280200220a200b4f2109200841086a2108200a210b20090d000b200720014921080b2007200146210a20060d0120072001460d010240024002400240024002402007417f6a220b20014f0d002008450d012000200b4103746a220b290200210c200b20002007410374220d6a2208290200220e3702002008200c37020020074102490d0520002007417e6a220a4103746a220f280200200ea722094d0d05200b200f290200370200200a450d0420002007417d6a220a4103746a28020020094d0d042002200d6a210b0340200b41086a200b290200370200200a450d03200a417f6a210a200b41786a220b28020020094b0d000b200a41016a210b0c030b4198e9c500200b20011034000b41a8e9c500200720011034000b4100210b0b2000200b4103746a210f0b200f200e3702000b200541016a21050240200120076b220a4102490d00200828020820082802004f0d002008290200210c20082008290208370200200841086a210f0240200a4103490d002008280210200ca722104f0d00200841106a21094103210b4102210d0340200d41037420086a220f41786a2009290200370200200b200a4f0d01200b4103742109200b210d200b41016a210b200820096a22092802002010490d000b0b200f200c3702000b20054105470d000b4100210a0b200a0bcc0201027f230041106b2202240020002802002802002100200128021841ebecc50041052001411c6a28020028020c1100002103200241003a0005200220033a00042002200136020020022000410c6a36020c200241f0ecc500410e2002410c6a4180edc500105c21012002200036020c20014190edc50041092002410c6a419cedc500105c21012002200041046a36020c200141acedc500410c2002410c6a419cedc500105c21012002200041086a36020c200141b8edc500410c2002410c6a419cedc500105c1a20022d00042100024020022d0005450d00200041ff0171210141012100024020010d0020022802002200411c6a28020028020c210120002802182103024020002d00004104710d00200341eeafc0004102200111000021000c010b200341f0afc0004101200111000021000b200220003a00040b200241106a2400200041ff01714100470bc20201027f230041106b22022400200128021841ebecc50041052001411c6a28020028020c1100002103200241003a0005200220033a00042002200136020020022000410c6a36020c200241f0ecc500410e2002410c6a4180edc500105c21012002200036020c20014190edc50041092002410c6a419cedc500105c21012002200041046a36020c200141acedc500410c2002410c6a419cedc500105c21012002200041086a36020c200141b8edc500410c2002410c6a419cedc500105c1a20022d00042100024020022d0005450d00200041ff0171210141012100024020010d0020022802002200411c6a28020028020c210120002802182103024020002d00004104710d00200341eeafc0004102200111000021000c010b200341f0afc0004101200111000021000b200220003a00040b200241106a2400200041ff01714100470b9b0201027f024002400240024002402001410c6a2802002203417f6a220420034d0d00411610282201450d01200020013602042001410e6a41002900ddf245370000200141086a41002900d7f245370000200141002900cff245370000200041086a4296808080e0023702000c040b0240200420026b220220044d0d00411b10282201450d0220002001360204200141176a41002800fcf245360000200141106a41002900f5f245370000200141086a41002900edf245370000200141002900e5f245370000200041086a429b808080b0033702000c040b200320024d0d022000200128020420024104746a360204200041003602000f0b411641011037000b411b41011037000b4180f3c500200220031034000b200041013602000bc50401027f230041d0006b220324002003200236020402404100280280b1464105490d002003410136020c2003200341046a3602084100280284b1462102200341c8006a41ef00360200200341c0006a42ed80808010370300200341386a4125360200200341306a4101360200200341206a4201370300200341186a410a360200200341fcf0c50036023c200341d7f0c5003602342003412c6a200341086a360200200341f8f1c50036021c200341cdf0c500360214200341053602104188b1c60041b8aec600200241024622021b200341106a41c8b0c00041e0b0c00020021b280210110200200328020421020b0240024002402002450d00200341106a2001410010e30420032802104101470d012000200341106a4104722202290200370200200041086a200241086a2802003602000c020b200041003602000c010b02400240024002402001280200220220032802142204280208460d00200220032802046b220420024d0d02410f102822020d01410f41011037000b024020042d000c0d00412510282202450d03200042a5808080d004370204200020023602002002411d6a410029009df245370000200241186a4100290098f245370000200241106a4100290090f245370000200241086a4100290088f24537000020024100290080f2453700000c040b200041003602000c030b2000428f808080f00137020420002002360200200241076a41002900acf245370000200241002900a5f2453700000c020b20004100360200200120043602000c010b412541011037000b200341d0006a24000bac0301047f230041c0006b2202240020002802002100410121030240200128021841baaec000410c2001411c6a28020028020c1100000d0002400240200028020822030d0020002802002203200028020428020c11070042e4aec285979ba58811520d012002200336020c2002412b36021420022002410c6a36021020012802182104200128021c2105410121032002413c6a41013602002002420237022c200241c8aec0003602282002200241106a36023820042005200241286a10350d020c010b2002200336020c2002412f36021420022002410c6a36021020012802182104200128021c2105410121032002413c6a41013602002002420237022c200241c8aec0003602282002200241106a36023820042005200241286a10350d010b200241106a41146a4101360200200241106a410c6a4101360200200241043602142002200041186a3602202002200041146a36021820022000410c6a36021020012802182100200128021c2101200241286a41146a41033602002002420337022c200241d8aec0003602282002200241106a36023820002001200241286a103521030b200241c0006a240020030b1500200120002802002200280200200028020410450b080020002001100b0bbe04020d7f017e230041c0006b22032400200128020022042001280208220541047422066a210720012802042108200421010240024002402005450d00200641706a2109200341306a410172210a200341306a41026a2106200341206a410172220b41076a210c20042101034020012d000021052006200141036a2d00003a00002003200141016a2f00003b01300240200541ac01470d00200141106a21010c020b2003410c6a41026a20062d0000220d3a0000200320032f0130220e3b010c200141046a280200210f200141086a2903002110200a200e3b0000200a41026a200d3a0000200320053a0030200320103703382003200f360234200341206a200341306a200210e9042003200b2900003703102003200c290000370017024020032d00202205411f470d00200941706a2109200141106a22012007470d010c030b0b200020053a000020002003290310370001200041086a200329001737000002402009450d00200141106a210103400240024020012d000022054109460d00200541ac01470d010c030b0240200141046a280200220528020441ffffffff0371450d002005280200102a0b2005102a0b200141106a22012007470d000b0b2008450d022004102a0c020b20012007460d0003400240024020012d000022054109460d00200541ac01470d010c030b0240200141046a280200220528020441ffffffff0371450d002005280200102a0b2005102a0b200141106a22012007470d000b0b02402008450d002004102a0b2000411f3a00000b200341c0006a24000bcbd60202097f017e230041106b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000eac01000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01ab01000b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102821050c010b200228020420042006102c21050b2005450dad0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41003a00000cab010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102821050c010b200228020420042006102c21050b2005450dad0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41013a00000caa010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490df501200441017422082005200820054b1b22084100480df5010240024020040d002008102821050c010b200628020020042008102c21050b2005450dad0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41023a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490df501200441017422082005200820054b1b22084100480df5010240024020040d002008102821050c010b200628020020042008102c21050b2005450dae0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca9010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490df401200441017422082005200820054b1b22084100480df4010240024020040d002008102821050c010b200628020020042008102c21050b2005450dae0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41033a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490df401200441017422082005200820054b1b22084100480df4010240024020040d002008102821050c010b200628020020042008102c21050b2005450daf0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca8010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490df301200441017422082005200820054b1b22084100480df3010240024020040d002008102821050c010b200628020020042008102c21050b2005450daf0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41043a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490df301200441017422082005200820054b1b22084100480df3010240024020040d002008102821050c010b200628020020042008102c21050b2005450db00120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca7010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102821050c010b200228020420042006102c21050b2005450db00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41053a00000ca6010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102821050c010b200228020420042006102c21050b2005450db00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410b3a00000ca5010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490df001200441017422072006200720064b1b22074100480df0010240024020040d002007102821060c010b200928020020042007102c21060b2006450db00120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410c3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490df1012004410174220a2006200a20064b1b220a4100480df1010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db201200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca5010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490def01200441017422072006200720064b1b22074100480def010240024020040d002007102821060c010b200928020020042007102c21060b2006450db10120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410d3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490df0012004410174220a2006200a20064b1b220a4100480df0010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db301200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca4010b0b200241046a210902400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490dee01200441017422062005200620054b1b22064100480dee010240024020040d002006102821050c010b200928020020042006102c21050b2005450db20120022005360204200241086a20063602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a410e3a0000200320012802042204280204220520042802002204200420054102746a200210ea042003210420032d0000411f470d930320012802042802082105200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490def012004410174220a2006200a20064b1b220a4100480def010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db401200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca3010b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490ded01200441017422062005200620054b1b22064100480ded010240024020040d002006102821050c010b200228020420042006102c21050b2005450db30120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410f3a00000ca1010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490dec01200441017422072006200720064b1b22074100480dec010240024020040d002007102821060c010b200928020020042007102c21060b2006450db30120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41103a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490ded012004410174220a2006200a20064b1b220a4100480ded010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db501200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca1010b0b200241046a2109200141046a280200210520012d0001210b02400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490deb01200441017422072006200720064b1b22074100480deb010240024020040d002007102821060c010b200928020020042007102c21060b2006450db40120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41113a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490dec012004410174220a2006200a20064b1b220a4100480dec010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db601200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b02400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490deb01200441017422062005200620054b1b22064100480deb010240024020040d002006102821050c010b200928020020042006102c21050b2005450db60120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a200b3a00000c9f010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dea01200441017422062005200620054b1b22064100480dea010240024020040d002006102821050c010b200228020420042006102c21050b2005450db60120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411a3a00000c9e010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490de901200441017422062005200620054b1b22064100480de9010240024020040d002006102821050c010b200228020420042006102c21050b2005450db60120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411b3a00000c9d010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de801200441017422072006200720064b1b22074100480de8010240024020040d002007102821060c010b200928020020042007102c21060b2006450db60120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41203a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de9012004410174220a2006200a20064b1b220a4100480de9010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db801200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9d010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de701200441017422072006200720064b1b22074100480de7010240024020040d002007102821060c010b200928020020042007102c21060b2006450db70120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41213a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de8012004410174220a2006200a20064b1b220a4100480de8010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db901200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9c010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de601200441017422072006200720064b1b22074100480de6010240024020040d002007102821060c010b200928020020042007102c21060b2006450db80120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41223a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de7012004410174220a2006200a20064b1b220a4100480de7010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450dba01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9b010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de501200441017422072006200720064b1b22074100480de5010240024020040d002007102821060c010b200928020020042007102c21060b2006450db90120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41233a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de6012004410174220a2006200a20064b1b220a4100480de6010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450dbb01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9a010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de401200441017422072006200720064b1b22074100480de4010240024020040d002007102821060c010b200928020020042007102c21060b2006450dba0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41243a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de5012004410174220a2006200a20064b1b220a4100480de5010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450dbc01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c99010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de301200441017422082007200820074b1b22084100480de3010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dbb0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41283a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de4012004410174220b2007200b20074b1b220b4100480de4010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dbd01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de401200441017422092006200920064b1b22094100480de4010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dbe012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c98010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de201200441017422082007200820074b1b22084100480de2010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dbd0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41293a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de3012004410174220b2007200b20074b1b220b4100480de3010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dbf01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de301200441017422092006200920064b1b22094100480de3010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dc0012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c97010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de101200441017422082007200820074b1b22084100480de1010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dbf0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de2012004410174220b2007200b20074b1b220b4100480de2010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dc101200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de201200441017422092006200920064b1b22094100480de2010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dc2012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c96010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de001200441017422082007200820074b1b22084100480de0010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dc10120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de1012004410174220b2007200b20074b1b220b4100480de1010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dc301200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de101200441017422092006200920064b1b22094100480de1010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dc4012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c95010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddf01200441017422082007200820074b1b22084100480ddf010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dc30120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de0012004410174220b2007200b20074b1b220b4100480de0010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dc501200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de001200441017422092006200920064b1b22094100480de0010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dc6012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c94010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dde01200441017422082007200820074b1b22084100480dde010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dc50120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddf012004410174220b2007200b20074b1b220b4100480ddf010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dc701200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddf01200441017422092006200920064b1b22094100480ddf010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dc8012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c93010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddd01200441017422082007200820074b1b22084100480ddd010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dc70120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dde012004410174220b2007200b20074b1b220b4100480dde010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dc901200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dde01200441017422092006200920064b1b22094100480dde010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dca012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c92010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddc01200441017422082007200820074b1b22084100480ddc010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dc90120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412f3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddd012004410174220b2007200b20074b1b220b4100480ddd010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dcb01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddd01200441017422092006200920064b1b22094100480ddd010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dcc012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c91010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddb01200441017422082007200820074b1b22084100480ddb010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dcb0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41303a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddc012004410174220b2007200b20074b1b220b4100480ddc010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dcd01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddc01200441017422092006200920064b1b22094100480ddc010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dce012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c90010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dda01200441017422082007200820074b1b22084100480dda010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dcd0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41313a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddb012004410174220b2007200b20074b1b220b4100480ddb010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dcf01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddb01200441017422092006200920064b1b22094100480ddb010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dd0012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8f010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd901200441017422082007200820074b1b22084100480dd9010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dcf0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41323a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dda012004410174220b2007200b20074b1b220b4100480dda010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dd101200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dda01200441017422092006200920064b1b22094100480dda010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dd2012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8e010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd801200441017422082007200820074b1b22084100480dd8010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dd10120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41333a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dd9012004410174220b2007200b20074b1b220b4100480dd9010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dd301200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dd901200441017422092006200920064b1b22094100480dd9010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dd4012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8d010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd701200441017422082007200820074b1b22084100480dd7010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dd30120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41343a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dd8012004410174220b2007200b20074b1b220b4100480dd8010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dd501200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dd801200441017422092006200920064b1b22094100480dd8010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dd6012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8c010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd601200441017422082007200820074b1b22084100480dd6010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dd50120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41353a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da3022004410174220b2007200b20074b1b220b4100480da3020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dd801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da302200441017422092006200920064b1b22094100480da3020240024020040d002009102821060c010b200a28020020042009102c21060b2006450dd9012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8b010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490da102200441017422082007200820074b1b22084100480da1020240024020040d002008102821070c010b200a28020020042008102c21070b2007450dd80120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41363a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da2022004410174220b2007200b20074b1b220b4100480da2020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dda01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da202200441017422092006200920064b1b22094100480da2020240024020040d002009102821060c010b200a28020020042009102c21060b2006450ddb012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8a010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490da002200441017422082007200820074b1b22084100480da0020240024020040d002008102821070c010b200a28020020042008102c21070b2007450dda0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41373a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da1022004410174220b2007200b20074b1b220b4100480da1020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450ddc01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da102200441017422092006200920064b1b22094100480da1020240024020040d002009102821060c010b200a28020020042009102c21060b2006450ddd012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c89010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9f02200441017422082007200820074b1b22084100480d9f020240024020040d002008102821070c010b200a28020020042008102c21070b2007450ddc0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41383a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da0022004410174220b2007200b20074b1b220b4100480da0020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dde01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da002200441017422092006200920064b1b22094100480da0020240024020040d002009102821060c010b200a28020020042009102c21060b2006450ddf012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c88010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9e02200441017422082007200820074b1b22084100480d9e020240024020040d002008102821070c010b200a28020020042008102c21070b2007450dde0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41393a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9f022004410174220b2007200b20074b1b220b4100480d9f020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450de001200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9f02200441017422092006200920064b1b22094100480d9f020240024020040d002009102821060c010b200a28020020042009102c21060b2006450de1012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c87010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9d02200441017422082007200820074b1b22084100480d9d020240024020040d002008102821070c010b200a28020020042008102c21070b2007450de00120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9e022004410174220b2007200b20074b1b220b4100480d9e020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450de201200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9e02200441017422092006200920064b1b22094100480d9e020240024020040d002009102821060c010b200a28020020042009102c21060b2006450de3012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c86010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9c02200441017422082007200820074b1b22084100480d9c020240024020040d002008102821070c010b200a28020020042008102c21070b2007450de20120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9d022004410174220b2007200b20074b1b220b4100480d9d020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450de401200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9d02200441017422092006200920064b1b22094100480d9d020240024020040d002009102821060c010b200a28020020042009102c21060b2006450de5012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c85010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9b02200441017422082007200820074b1b22084100480d9b020240024020040d002008102821070c010b200a28020020042008102c21070b2007450de40120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9c022004410174220b2007200b20074b1b220b4100480d9c020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450de601200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9c02200441017422092005200920054b1b22094100480d9c020240024020040d002009102821050c010b200a28020020042009102c21050b2005450de7012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c84010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9a02200441017422082007200820074b1b22084100480d9a020240024020040d002008102821070c010b200a28020020042008102c21070b2007450de60120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9b022004410174220b2007200b20074b1b220b4100480d9b020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450de801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9b02200441017422092006200920064b1b22094100480d9b020240024020040d002009102821060c010b200a28020020042009102c21060b2006450de9012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c83010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9902200441017422082007200820074b1b22084100480d99020240024020040d002008102821070c010b200a28020020042008102c21070b2007450de80120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9a022004410174220b2007200b20074b1b220b4100480d9a020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dea01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9a02200441017422092006200920064b1b22094100480d9a020240024020040d002009102821060c010b200a28020020042009102c21060b2006450deb012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c82010b0b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9802200441017422082005200820054b1b22084100480d98020240024020040d002008102821050c010b200628020020042008102c21050b2005450dea0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a413f3a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d9802200441017422082005200820054b1b22084100480d98020240024020040d002008102821050c010b200628020020042008102c21050b2005450deb0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c80010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9702200441017422082005200820054b1b22084100480d97020240024020040d002008102821050c010b200628020020042008102c21050b2005450deb0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c0003a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d9702200441017422082005200820054b1b22084100480d97020240024020040d002008102821050c010b200628020020042008102c21050b2005450dec0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c7f0b200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9602200441017422072005200720054b1b22074100480d96020240024020040d002007102821050c010b200228020420042007102c21050b2005450dec0120022005360204200241086a20073602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c1003a000020032006200210eb042003210420032d0000411f470def020c7e0b200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9502200441017422062005200620054b1b22064100480d95020240024020040d002006102821050c010b200228020420042006102c21050b2005450dec0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c2003a00002003200c200210ec042003210420032d0000411f470dee020c7d0b200241046a2106200141046a280200210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9402200441017422082005200820054b1b22084100480d94020240024020040d002008102821050c010b200628020020042008102c21050b2005450dec0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c3003a000002400240200241086a2802002205200828020022046b4104490d00200628020021050c010b200441046a22082004490d9402200541017422042008200420084b1b22044100480d94020240024020050d002004102821050c010b200628020020052004102c21050b2005450ded0120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441046a360200200520046a20073600000c7c0b200241046a2106200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9302200441017422072005200720054b1b22074100480d93020240024020040d002007102821050c010b200628020020042007102c21050b2005450ded0120022005360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a41c4003a000002400240200241086a2802002205200728020022046b4108490d00200628020021050c010b200441086a22072004490d9302200541017422042007200420074b1b22044100480d93020240024020050d002004102821050c010b200628020020052004102c21050b2005450dee0120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441086a360200200520046a200c3700000c7b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9202200441017422062005200620054b1b22064100480d92020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c5003a00000c7a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9102200441017422062005200620054b1b22064100480d91020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c6003a00000c790b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9002200441017422062005200620054b1b22064100480d90020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c7003a00000c780b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8f02200441017422062005200620054b1b22064100480d8f020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c8003a00000c770b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8e02200441017422062005200620054b1b22064100480d8e020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c9003a00000c760b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8d02200441017422062005200620054b1b22064100480d8d020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ca003a00000c750b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8c02200441017422062005200620054b1b22064100480d8c020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cb003a00000c740b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8b02200441017422062005200620054b1b22064100480d8b020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cc003a00000c730b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8a02200441017422062005200620054b1b22064100480d8a020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cd003a00000c720b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8902200441017422062005200620054b1b22064100480d89020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ce003a00000c710b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8802200441017422062005200620054b1b22064100480d88020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cf003a00000c700b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8702200441017422062005200620054b1b22064100480d87020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d0003a00000c6f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8602200441017422062005200620054b1b22064100480d86020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d1003a00000c6e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8502200441017422062005200620054b1b22064100480d85020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d2003a00000c6d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8402200441017422062005200620054b1b22064100480d84020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d3003a00000c6c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8302200441017422062005200620054b1b22064100480d83020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d4003a00000c6b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8202200441017422062005200620054b1b22064100480d82020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d5003a00000c6a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8102200441017422062005200620054b1b22064100480d81020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d6003a00000c690b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8002200441017422062005200620054b1b22064100480d80020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d7003a00000c680b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dff01200441017422062005200620054b1b22064100480dff010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d8003a00000c670b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfe01200441017422062005200620054b1b22064100480dfe010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d9003a00000c660b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfd01200441017422062005200620054b1b22064100480dfd010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41da003a00000c650b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfc01200441017422062005200620054b1b22064100480dfc010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41db003a00000c640b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfb01200441017422062005200620054b1b22064100480dfb010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dc003a00000c630b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfa01200441017422062005200620054b1b22064100480dfa010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dd003a00000c620b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df901200441017422062005200620054b1b22064100480df9010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41de003a00000c610b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df801200441017422062005200620054b1b22064100480df8010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41df003a00000c600b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e0003a00000c5f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e1003a00000c5e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df501200441017422062005200620054b1b22064100480df5010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e2003a00000c5d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df401200441017422062005200620054b1b22064100480df4010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e3003a00000c5c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df301200441017422062005200620054b1b22064100480df3010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e4003a00000c5b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e5003a00000c5a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e6003a00000c590b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df001200441017422062005200620054b1b22064100480df0010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e7003a00000c580b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490def01200441017422062005200620054b1b22064100480def010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e8003a00000c570b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dba02200441017422062005200620054b1b22064100480dba020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e9003a00000c560b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db902200441017422062005200620054b1b22064100480db9020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ea003a00000c550b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db802200441017422062005200620054b1b22064100480db8020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41eb003a00000c540b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db702200441017422062005200620054b1b22064100480db7020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ec003a00000c530b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db602200441017422062005200620054b1b22064100480db6020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ed003a00000c520b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db502200441017422062005200620054b1b22064100480db5020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ee003a00000c510b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db402200441017422062005200620054b1b22064100480db4020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ef003a00000c500b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db302200441017422062005200620054b1b22064100480db3020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f0003a00000c4f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db202200441017422062005200620054b1b22064100480db2020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f1003a00000c4e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db102200441017422062005200620054b1b22064100480db1020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f2003a00000c4d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db002200441017422062005200620054b1b22064100480db0020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f3003a00000c4c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490daf02200441017422062005200620054b1b22064100480daf020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f4003a00000c4b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dae02200441017422062005200620054b1b22064100480dae020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f5003a00000c4a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dad02200441017422062005200620054b1b22064100480dad020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f6003a00000c490b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dac02200441017422062005200620054b1b22064100480dac020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f7003a00000c480b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dab02200441017422062005200620054b1b22064100480dab020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f8003a00000c470b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490daa02200441017422062005200620054b1b22064100480daa020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f9003a00000c460b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da902200441017422062005200620054b1b22064100480da9020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fa003a00000c450b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da802200441017422062005200620054b1b22064100480da8020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fb003a00000c440b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da702200441017422062005200620054b1b22064100480da7020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fc003a00000c430b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da602200441017422062005200620054b1b22064100480da6020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fd003a00000c420b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da502200441017422062005200620054b1b22064100480da5020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fe003a00000c410b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da402200441017422062005200620054b1b22064100480da4020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ff003a00000c400b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da302200441017422062005200620054b1b22064100480da3020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4180013a00000c3f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da202200441017422062005200620054b1b22064100480da2020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4181013a00000c3e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da102200441017422062005200620054b1b22064100480da1020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4182013a00000c3d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da002200441017422062005200620054b1b22064100480da0020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4183013a00000c3c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9f02200441017422062005200620054b1b22064100480d9f020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4184013a00000c3b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9e02200441017422062005200620054b1b22064100480d9e020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4185013a00000c3a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9d02200441017422062005200620054b1b22064100480d9d020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4186013a00000c390b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9c02200441017422062005200620054b1b22064100480d9c020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4187013a00000c380b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9b02200441017422062005200620054b1b22064100480d9b020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4188013a00000c370b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9a02200441017422062005200620054b1b22064100480d9a020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4189013a00000c360b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9902200441017422062005200620054b1b22064100480d99020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418a013a00000c350b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9802200441017422062005200620054b1b22064100480d98020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418b013a00000c340b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9702200441017422062005200620054b1b22064100480d97020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418c013a00000c330b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9602200441017422062005200620054b1b22064100480d96020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418d013a00000c320b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9502200441017422062005200620054b1b22064100480d95020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418e013a00000c310b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9402200441017422062005200620054b1b22064100480d94020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418f013a00000c300b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9302200441017422062005200620054b1b22064100480d93020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4190013a00000c2f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9202200441017422062005200620054b1b22064100480d92020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4191013a00000c2e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9102200441017422062005200620054b1b22064100480d91020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4192013a00000c2d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9002200441017422062005200620054b1b22064100480d90020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4193013a00000c2c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8f02200441017422062005200620054b1b22064100480d8f020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4194013a00000c2b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8e02200441017422062005200620054b1b22064100480d8e020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4195013a00000c2a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8d02200441017422062005200620054b1b22064100480d8d020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4196013a00000c290b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8c02200441017422062005200620054b1b22064100480d8c020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4197013a00000c280b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8b02200441017422062005200620054b1b22064100480d8b020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4198013a00000c270b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8a02200441017422062005200620054b1b22064100480d8a020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4199013a00000c260b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8902200441017422062005200620054b1b22064100480d89020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419a013a00000c250b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8802200441017422062005200620054b1b22064100480d88020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419b013a00000c240b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8702200441017422062005200620054b1b22064100480d87020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419c013a00000c230b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8602200441017422062005200620054b1b22064100480d86020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419d013a00000c220b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8502200441017422062005200620054b1b22064100480d85020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419e013a00000c210b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8402200441017422062005200620054b1b22064100480d84020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419f013a00000c200b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8302200441017422062005200620054b1b22064100480d83020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a0013a00000c1f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8202200441017422062005200620054b1b22064100480d82020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a1013a00000c1e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8102200441017422062005200620054b1b22064100480d81020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a2013a00000c1d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8002200441017422062005200620054b1b22064100480d80020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a3013a00000c1c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dff01200441017422062005200620054b1b22064100480dff010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a4013a00000c1b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfe01200441017422062005200620054b1b22064100480dfe010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a5013a00000c1a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfd01200441017422062005200620054b1b22064100480dfd010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a6013a00000c190b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfc01200441017422062005200620054b1b22064100480dfc010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a7013a00000c180b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfb01200441017422062005200620054b1b22064100480dfb010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a8013a00000c170b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfa01200441017422062005200620054b1b22064100480dfa010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a9013a00000c160b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df901200441017422062005200620054b1b22064100480df9010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41aa013a00000c150b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df801200441017422062005200620054b1b22064100480df8010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ab013a00000c140b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ac013a00000c130b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ad013a00000c120b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df501200441017422062005200620054b1b22064100480df5010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ae013a00000c110b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df401200441017422062005200620054b1b22064100480df4010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41af013a00000c100b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df301200441017422062005200620054b1b22064100480df3010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b0013a00000c0f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b1013a00000c0e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b2013a00000c0d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df001200441017422062005200620054b1b22064100480df0010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b3013a00000c0c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfc01200441017422062005200620054b1b22064100480dfc010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b4013a00000c0b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfb01200441017422062005200620054b1b22064100480dfb010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b5013a00000c0a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfa01200441017422062005200620054b1b22064100480dfa010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b6013a00000c090b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df901200441017422062005200620054b1b22064100480df9010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b7013a00000c080b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df801200441017422062005200620054b1b22064100480df8010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b8013a00000c070b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b9013a00000c060b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ba013a00000c050b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df501200441017422062005200620054b1b22064100480df5010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bb013a00000c040b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df401200441017422062005200620054b1b22064100480df4010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bc013a00000c030b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df301200441017422062005200620054b1b22064100480df3010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bd013a00000c020b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41be013a00000c010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bf013a00000b2000411f3a000020012d00004109470df1010240200141046a280200220228020441ffffffff0371450d002002280200102a200128020421020b2002102a0cf1010b200641011037000b200641011037000b200841011037000b200841011037000b200841011037000b200841011037000b200841011037000b200841011037000b200641011037000b200641011037000b200741011037000b200a41011037000b200741011037000b200a41011037000b200641011037000b200a41011037000b200641011037000b200741011037000b200a41011037000b200741011037000b200a41011037000b200641011037000b200641011037000b200641011037000b200741011037000b200a41011037000b200741011037000b200a41011037000b200741011037000b200a41011037000b200741011037000b200a41011037000b200741011037000b200a41011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b1031000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200841011037000b200841011037000b200841011037000b200741011037000b200641011037000b200841011037000b200441011037000b200741011037000b200441011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b1031000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b1031000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b1031000b20002004290200370200200041086a200441086a29020037020020012d00004109470d000240200141046a280200220228020441ffffffff0371450d002002280200102a200128020421020b2002102a0b200341106a24000bb60301057f2004410c6a2105200441086a2106024002400240034002400240200628020020052802002207460d00200428020421080c010b200741016a22082007490d04200741017422092008200920084b1b22094100480d040240024020070d002009102821080c010b200428020420072009102c21080b2008450d022004200836020420062009360200200528020021070b2005200741016a360200200820076a200141807f72200141ff0071200141077622071b3a00002007210120070d000b024020022003460d002004410c6a2105200441086a2106034020022802002101034002400240200628020020052802002207460d00200428020421080c010b200741016a22082007490d06200741017422092008200920084b1b22094100480d060240024020070d002009102821080c010b200428020420072009102c21080b2008450d052004200836020420062009360200200528020021070b2005200741016a360200200820076a200141807f72200141ff0071200141077622071b3a00002007210120070d000b200241046a22022003470d000b0b2000411f3a00000f0b200941011037000b200941011037000b1031000baf0301067f024002400240024020014107752203200141c00071220472452003417f4720044572460d002002410c6a2105200241086a2106034002400240200628020020052802002204460d00200228020421070c010b200441016a22072004490d05200441017422082007200820074b1b22084100480d050240024020040d002008102821070c010b200228020420042008102c21070b2007450d032002200736020420062008360200200528020021040b2005200441016a360200200720046a200141807f723a0000200341c000712104200321012003410775220721032007200472452007417f4720044572470d000b0b02400240200241086a2802002002410c6a2802002204460d00200228020421030c010b200441016a22032004490d03200441017422072003200720034b1b22074100480d030240024020040d002007102821030c010b200228020420042007102c21030b2003450d0220022003360204200241086a20073602002002410c6a28020021040b2002410c6a200441016a360200200320046a200141ff00713a00002000411f3a00000f0b200841011037000b200741011037000b1031000bb30302017e067f024002400240024020014207872203502001a7220441c00071452205712003427f52200572460d002002410c6a2106200241086a2107034002400240200728020020062802002205460d00200228020421080c010b200541016a22082005490d05200541017422092008200920084b1b22094100480d050240024020050d002009102821080c010b200228020420052009102c21080b2008450d032002200836020420072009360200200628020021050b2006200541016a360200200820056a200441807f723a00002003a72104200342078722012103200150200441c00071452205712001427f52200572470d000b0b02400240200241086a2802002002410c6a2802002205460d00200228020421080c010b200541016a22082005490d03200541017422062008200620084b1b22064100480d030240024020050d002006102821080c010b200228020420052006102c21080b2008450d0220022008360204200241086a20063602002002410c6a28020021050b2002410c6a200541016a360200200820056a200441ff00713a00002000411f3a00000f0b200941011037000b200641011037000b1031000be103010a7f230041306b22022400200241216a220341076a210441002105410021064100210741002108410821090240024002400340200241186a200110ee04024020022802184101470d002000200229021c370204200041013602002000410c6a200241186a410c6a29020037020002402007450d00200921070340024020072d00004109470d000240200741046a220a280200220528020441ffffffff0371450d002005280200102a200a28020021050b2005102a0b200741106a2107200641706a22060d000b0b2008450d042009102a0c040b200220032900003703082002200429000037000f20022d0020210a2002200229000f37001f200220022903083703180240024020072008470d00200741016a220b2007490d032005200b2005200b4b1b220841ffffffff00712008470d032008410474220b4100480d030240024020070d00200b102821090c010b20092006200b102c21090b2009450d010b200920066a220b200a3a0000200b41016a2002290318370000200b41086a200229001f370000200541026a2105200641106a2106200741016a2107200a41ff01714106460d030c010b0b200b41081037000b1031000b20002009360204200041003602002000410c6a2007360200200041086a20083602000b200241306a24000b80b601020b7f017e230041f0006b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802082203200128020c2204460d00200441016a22052004490d02200320054f0d0120052003103c000b200241013a0048200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a1033200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000c640b2001280200220620046a2d000021072001410c6a2208200536020002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200741bf014b0d0020070ec001b902b902010203b90200000000000405060708090a00000000000000000b0c000000000d0e0f101100000012131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901b9020b2000410b3a000420004101360200200041056a20073a00000cbc020b024002400240024002400240024020032005460d00200441026a21092005417f460de00120032009490da302200620056a2c00002101200820093602004100210a0240200141004e0d00411921090c020b0240200141017441807f71200172220141ff0171220541847e6a220941034d0d0041062109200541c001470d034104210a410221070cbf020b20090e0404030506040b200241013a0047200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241c7006a360238200241c8006a200241d8006a1033200241326a200241d0006a2802003601002002200229034837012a2002200229012837031820022002412e6a29010037011e410521090b2002200229011e37010e200220022903183703080b200020013a0005200020093a000420002002290308370106200041013602002000410c6a200229010e3701000cbf020b4102210a410221070cba020b4103210a410221070cb9020b4101210a0b410221070cb7020b024002400240024002400240024020032005460d00200441026a21092005417f460de00120032009490da302200620056a2c00002101200820093602004100210a0240200141004e0d00411921090c020b0240200141017441807f71200172220141ff0171220541847e6a220941034d0d0041062109200541c001470d034104210a410321070cbe020b20090e0404030506040b200241013a0047200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241c7006a360238200241c8006a200241d8006a1033200241326a200241d0006a2802003601002002200229034837012a2002200229012837031820022002412e6a29010037011e410521090b2002200229011e37010e200220022903183703080b200020013a0005200020093a000420002002290308370106200041013602002000410c6a200229010e3701000cbe020b4102210a410321070cb9020b4103210a410321070cb8020b4101210a0b410321070cb6020b024002400240024002400240024020032005460d00200441026a21092005417f460de00120032009490da302200620056a2c00002101200820093602004100210a0240200141004e0d00411921090c020b0240200141017441807f71200172220141ff0171220541847e6a220941034d0d0041062109200541c001470d034104210a410421070cbd020b20090e0404030506040b200241013a0047200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241c7006a360238200241c8006a200241d8006a1033200241326a200241d0006a2802003601002002200229034837012a2002200229012837031820022002412e6a29010037011e410521090b2002200229011e37010e200220022903183703080b200020013a0005200020093a000420002002290308370106200041013602002000410c6a200229010e3701000cbd020b4102210a410421070cb8020b4103210a410421070cb7020b4101210a0b410421070cb5020b410621070cb4020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddd012003200541016a22074f0d01200541016a2003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000cb8020b410721070cb3020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddd012003200541016a22074f0d01200541016a2003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000cb7020b410821070cb2020b200241d8006a200110ef044104210a200228025822074101460da201200241e0006a280200210b41002106200228025c210c02400240200241e4006a280200220941027422050d00410021040c010b2005410275220441ffffffff03712004470dda01200441027422034100480dda0120031028220a450dd9010b02402009450d00200941027421032005417c6a2106200a2109200c2105034020092005280200360200200941046a2109200541046a21052003417c6a22030d000b200641027641016a21060b0240200b450d00200c102a0b20022d005c4105470db0022007450db00220022802640da3010cb0020b410a21070cb0020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddd012003200541016a22074f0d01200541016a2003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000cb4020b410b21070caf020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddd012003200541016a22044f0d01200541016a2003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010c020b200620056a2d0000210720082004360200200741ff00712001411f71742009722109200141076a2101200421052007418001710d000b20014120490d01410d210120074110490d010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000cb3020b0240024020032004460d00200441016a22012004490ddb01200320014f0d0120012003103c000b200241013a0048200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a1033200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000cb3020b200620046a2d0000210520082001360200024020050d00410c21074100210a0caf020b200041163a000420004101360200200041056a20053a00000cb2020b410d21070cad020b410e21070cac020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddc012003200541016a22074f0d01200541016a2003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000cb0020b410f21070cab020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddc012003200541016a22074f0d01200541016a2003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000caf020b411021070caa020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddc012003200541016a22074f0d01200541016a2003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000cae020b411121070ca9020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddc012003200541016a22074f0d01200541016a2003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000cad020b411221070ca8020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddc012003200541016a22074f0d01200541016a2003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000cac020b411321070ca7020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450ddd01200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000cab020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c9c010b20032001460d9a012001417f460dd9012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9b010b200aad210d411421070ca6020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450dde01200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000caa020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c9d010b20032001460d9b012001417f460dda012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9c010b200aad210d411521070ca5020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450ddf01200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca9020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c9e010b20032001460d9c012001417f460ddb012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9d010b200aad210d411621070ca4020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de001200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca8020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c9f010b20032001460d9d012001417f460ddc012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9e010b200aad210d411721070ca3020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de101200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca7020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca0010b20032001460d9e012001417f460ddd012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9f010b200aad210d411821070ca2020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de201200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca6020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca1010b20032001460d9f012001417f460dde012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da0010b200aad210d411921070ca1020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de301200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca5020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca2010b20032001460da0012001417f460ddf012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da1010b200aad210d411a21070ca0020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de401200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca4020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca3010b20032001460da1012001417f460de0012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da2010b200aad210d411b21070c9f020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de501200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca3020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca4010b20032001460da2012001417f460de1012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da3010b200aad210d411c21070c9e020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de601200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca2020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca5010b20032001460da3012001417f460de2012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da4010b200aad210d411d21070c9d020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de701200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca1020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca6010b20032001460da4012001417f460de3012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da5010b200aad210d411e21070c9c020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de801200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca0020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca7010b20032001460da5012001417f460de4012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da6010b200aad210d411f21070c9b020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de901200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9f020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca8010b20032001460da6012001417f460de5012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b41202107024020054120490d00410d21012004410f4b0da7010b200aad210d0c9a020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450dea01200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9e020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca9010b20032001460da7012001417f460de6012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da8010b200aad210d412121070c99020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450deb01200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9d020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010caa010b20032001460da8012001417f460de7012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da9010b200aad210d412221070c98020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450dec01200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cab010b20032001460da9012001417f460de8012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0daa010b200aad210d412321070c97020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450ded01200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9b020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cac010b20032001460daa012001417f460de9012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0dab010b200aad210d412421070c96020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450dee01200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9a020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cad010b20032001460dab012001417f460dea012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0dac010b200aad210d412521070c95020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450def01200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c99020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cae010b20032001460dac012001417f460deb012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0dad010b200aad210d412621070c94020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450df001200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c98020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010caf010b20032001460dad012001417f460dec012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0dae010b200aad210d412721070c93020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450df101200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c97020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cb0010b20032001460dae012001417f460ded012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0daf010b200aad210d412821070c92020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450df201200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c96020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cb1010b20032001460daf012001417f460dee012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0db0010b200aad210d412921070c91020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450df301200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c95020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cb2010b20032001460db0012001417f460def012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0db1010b200aad210d412a21070c90020b0240024020032005460d00200441026a21012005417f460df001200320014f0d0120012003103c000b200241013a0048200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a1033200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000c94020b200620056a2d0000210920082001360200024020090d00412b21074100210a0c90020b200041153a000420004101360200200041056a20093a00000c93020b0240024020032005460d00200441026a21012005417f460df001200320014f0d0120012003103c000b200241013a0048200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a1033200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000c93020b200620056a2d0000210920082001360200024020090d00412c21074100210a0c8f020b200041153a000420004101360200200041056a20093a00000c92020b41002101410021090240024002400340410d210a2001411f4b0d010240024020032005460d002005417f460df4012003200541016a22074f0d01200541016a2003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a10334105210a0c020b200620056a2c0000210420082007360200200441ff00712001411f71742009722109200141076a21012007210520044100480d000b200441c00071210502402001411f4b0d0020050d020b0240024020014120490d0020050d010b200441ff01714108490d0320014120490d032005450d010c030b20044180017241ff017141f7014b0d020b2000200a36020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c93020b2009417f2001411f71747221090b412d21070c8d020b4200210d4100210102400240024002400340410e21072001413f4b0d010240024020032005460d002005417f460df5012003200541016a22094f0d01200541016a2003103c000b200241013a0008200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241086a360238200241286a200241d8006a10332002290328210d20022802302101410521070c030b200620056a2d0000210420082009360200200441ff0071220aad2001413f71ad86200d84210d200141076a210120092105200441187441187522094100480d000b200941c00071210502402001413f4b0d0020050d030b02400240200141c000490d0020050d010b200141c000490d0420090d010c040b200a41ff00460d030b0b200020073a0004200020022f00183b000520004101360200200041106a2001360200200041086a200d370200200041076a2002411a6a2d00003a00000c92020b200d427f2001413f71ad8684210d0b412e21070c8c020b02400240200320056b4104490d00200441056a21012005417b4b0df001200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a103320004281808080d000370300200041086a2002290228370200200041106a200241286a41086a2802003602000c90020b200620056a280000210920082001360200412f21070c8b020b02400240200320056b4108490d00200441096a2101200541774b0df001200320014f0d0120012003103c000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a10332002290328210d200041106a2002280230360200200041086a200d37020020004281808080d0003703000c8f020b200620056a290000210d20082001360200413021070c8a020b413121070c89020b413221070c88020b413321070c87020b413421070c86020b413521070c85020b413621070c84020b413721070c83020b413821070c82020b413921070c81020b413a21070c80020b413b21070cff010b413c21070cfe010b413d21070cfd010b413e21070cfc010b413f21070cfb010b41c00021070cfa010b41c10021070cf9010b41c20021070cf8010b41c30021070cf7010b41c40021070cf6010b41c50021070cf5010b41c60021070cf4010b41c70021070cf3010b41c80021070cf2010b41c90021070cf1010b41ca0021070cf0010b41cb0021070cef010b41cc0021070cee010b41cd0021070ced010b41ce0021070cec010b41cf0021070ceb010b41d00021070cea010b41d10021070ce9010b41d20021070ce8010b41d30021070ce7010b41d40021070ce6010b41d50021070ce5010b41d60021070ce4010b41d70021070ce3010b41d80021070ce2010b41d90021070ce1010b41da0021070ce0010b41db0021070cdf010b41dc0021070cde010b41dd0021070cdd010b41de0021070cdc010b41df0021070cdb010b41e00021070cda010b41e10021070cd9010b41e20021070cd8010b41e30021070cd7010b41e40021070cd6010b41e50021070cd5010b41e60021070cd4010b41e70021070cd3010b41e80021070cd2010b41e90021070cd1010b41ea0021070cd0010b41eb0021070ccf010b41ec0021070cce010b41ed0021070ccd010b41ee0021070ccc010b41ef0021070ccb010b41f00021070cca010b41f10021070cc9010b41f20021070cc8010b41f30021070cc7010b41f40021070cc6010b41f50021070cc5010b41f60021070cc4010b41f70021070cc3010b41f80021070cc2010b41f90021070cc1010b41fa0021070cc0010b41fb0021070cbf010b41fc0021070cbe010b41fd0021070cbd010b41fe0021070cbc010b41ff0021070cbb010b41800121070cba010b41810121070cb9010b41820121070cb8010b41830121070cb7010b41840121070cb6010b41850121070cb5010b41860121070cb4010b41870121070cb3010b41880121070cb2010b41890121070cb1010b418a0121070cb0010b418b0121070caf010b418c0121070cae010b418d0121070cad010b418e0121070cac010b418f0121070cab010b41900121070caa010b41910121070ca9010b41920121070ca8010b41930121070ca7010b41940121070ca6010b41950121070ca5010b41960121070ca4010b41970121070ca3010b41980121070ca2010b41990121070ca1010b419a0121070ca0010b419b0121070c9f010b419c0121070c9e010b419d0121070c9d010b419e0121070c9c010b419f0121070c9b010b41a00121070c9a010b41a10121070c99010b41a20121070c98010b41a30121070c97010b41a40121070c96010b41a50121070c95010b41a60121070c94010b41a70121070c93010b41a80121070c92010b41a90121070c91010b41aa0121070c90010b41ab0121070c8f010b200041013602002000200241d8006a41047222012902003702042000410c6a200141086a2902003702000c92010b2002280260102a0c8c010b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c8f010b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c8d010b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c8b010b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c89010b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c87010b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c85010b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c83010b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c81010b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c7f0b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c7d0b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c7b0b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c790b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c770b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c750b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c730b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c710b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c6f0b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c6d0b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c6b0b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c690b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c670b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c650b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a2802003602000c630b417f20051044000b417f20091044000b417f20091044000b417f20091044000b417f200541016a1044000b417f200541016a1044000b200341041037000b1031000b417f200541016a1044000b417f200541016a1044000b417f20011044000b417f200541016a1044000b417f200541016a1044000b417f200541016a1044000b417f200541016a1044000b417f200541016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f200141016a1044000b417f20011044000b417f20011044000b417f200541016a1044000b417f200541016a1044000b200520011044000b200520011044000b20092003103c000b20092003103c000b20092003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b200141016a2003103c000b02400240024002400240024020042006460d0020042006490d01024020060d00024020040d004104210a0c020b200a102a4104210a0c010b200a200441027420064102742209102c220a450d020b4100210941002104034002402009411f4d0d00410f21010c0a0b20012802082207200128020c2205460d08200541016a22032005490d0320072003490d04200128020020056a2d0000210520082003360200200541ff00712009411f71742004722104200941076a21092005418001710d000b20094120490d04410d21012005410f4b0d080c040b41dcfdc5001032000b200941041037000b417f20031044000b20032007103c000b410c10282209450d0120092004360208200920063602042009200a360200410921070b20004100360200200041106a200d3703002000410c6a2009360200200041096a200a3a0000200041086a20073a00000c030b410c41041037000b200241013a0018200241ec006a41013602002002420137025c200241a4e2c5003602582002412636023c2002200241386a3602682002200241186a360238200241286a200241d8006a1033410521010b2000200136020420004101360200200041086a2002290228370200200041106a200241286a41086a280200360200200641ffffffff0371450d00200a102a0b200241f0006a24000bd60703067f017e067f230041d0006b220224004100210341002104024002400240024002400240024002400240024002400240034002402003411f4d0d00410f21030c020b0240024020012802082205200128020c2206460d00200641016a22072006490d05200520074f0d0120072005103c000b200241013a0027200241cc006a41013602002002420137023c200241a4e2c5003602382002412636021c2002200241186a3602482002200241276a360218200241286a200241386a1033410521030c020b200128020020066a2d000021062001200736020c200641ff00712003411f71742004722104200341076a21032006418001710d000b20034120490d01410d210320064110490d010b200241086a41086a200241286a41086a280200220136020020022002290228220837030820002003360204200041086a2008370200200041106a2001360200200041013602000c0a0b20024100360210200242043703082004450d0841042109410021034100210a03402003210b200a220c41016a210a410021034100210503402003411f4b0d04024002402001280208220d200128020c2206460d00200641016a22072006490d05200d20074f0d012007200d103c000b2002200b36020c2002200c360210200241013a0027200241cc006a41013602002002420137023c200241a4e2c5003602382002412636021c2002200241186a3602482002200241276a360218200241286a200241386a103320022802282103200228022c2106200228023021074100210e410521010c090b200128020020066a2d000021062001200736020c200641ff00712003411f71742005722105200341076a21032006418001710d000b024020034120490d002006410f4d0d002002200b36020c2002200c360210410d21010c070b02400240200c200b460d00200b2103200c210b0c010b200b41016a2203200b490d06200b41017422062003200620034b1b220341ffffffff03712003470d06200341027422064100480d0602400240200b0d002006102821090c010b2009200b4102742006102c21090b2009450d05200220093602080b2005410876210e2009200b4102746a2005360200200a2004460d080c000b0b417f20071044000b417f20071044000b2002200b36020c2002200c360210410f21010c020b200641041037000b1031000b0b20004101360200200041106a20073602002000410c6a2006360200200041086a20033602002000200e410874200172360204200b450d022009102a0c020b2002200336020c2002200a3602100b20002002290308370204200041003602002000410c6a200241106a2802003602000b200241d0006a24000bcbd60202097f017e230041106b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000eac01000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01ab01000b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102821050c010b200228020420042006102c21050b2005450dad0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41003a00000cab010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102821050c010b200228020420042006102c21050b2005450dad0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41013a00000caa010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490df501200441017422082005200820054b1b22084100480df5010240024020040d002008102821050c010b200628020020042008102c21050b2005450dad0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41023a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490df501200441017422082005200820054b1b22084100480df5010240024020040d002008102821050c010b200628020020042008102c21050b2005450dae0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca9010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490df401200441017422082005200820054b1b22084100480df4010240024020040d002008102821050c010b200628020020042008102c21050b2005450dae0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41033a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490df401200441017422082005200820054b1b22084100480df4010240024020040d002008102821050c010b200628020020042008102c21050b2005450daf0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca8010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490df301200441017422082005200820054b1b22084100480df3010240024020040d002008102821050c010b200628020020042008102c21050b2005450daf0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41043a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490df301200441017422082005200820054b1b22084100480df3010240024020040d002008102821050c010b200628020020042008102c21050b2005450db00120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca7010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102821050c010b200228020420042006102c21050b2005450db00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41053a00000ca6010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102821050c010b200228020420042006102c21050b2005450db00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410b3a00000ca5010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490df001200441017422072006200720064b1b22074100480df0010240024020040d002007102821060c010b200928020020042007102c21060b2006450db00120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410c3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490df1012004410174220a2006200a20064b1b220a4100480df1010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db201200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca5010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490def01200441017422072006200720064b1b22074100480def010240024020040d002007102821060c010b200928020020042007102c21060b2006450db10120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410d3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490df0012004410174220a2006200a20064b1b220a4100480df0010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db301200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca4010b0b200241046a210902400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490dee01200441017422062005200620054b1b22064100480dee010240024020040d002006102821050c010b200928020020042006102c21050b2005450db20120022005360204200241086a20063602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a410e3a0000200320012802042204280204220520042802002204200420054102746a200210ea042003210420032d0000411f470d930320012802042802082105200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490def012004410174220a2006200a20064b1b220a4100480def010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db401200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca3010b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490ded01200441017422062005200620054b1b22064100480ded010240024020040d002006102821050c010b200228020420042006102c21050b2005450db30120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410f3a00000ca1010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490dec01200441017422072006200720064b1b22074100480dec010240024020040d002007102821060c010b200928020020042007102c21060b2006450db30120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41103a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490ded012004410174220a2006200a20064b1b220a4100480ded010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db501200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca1010b0b200241046a2109200141046a280200210520012d0001210b02400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490deb01200441017422072006200720064b1b22074100480deb010240024020040d002007102821060c010b200928020020042007102c21060b2006450db40120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41113a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490dec012004410174220a2006200a20064b1b220a4100480dec010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db601200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b02400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490deb01200441017422062005200620054b1b22064100480deb010240024020040d002006102821050c010b200928020020042006102c21050b2005450db60120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a200b3a00000c9f010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dea01200441017422062005200620054b1b22064100480dea010240024020040d002006102821050c010b200228020420042006102c21050b2005450db60120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411a3a00000c9e010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490de901200441017422062005200620054b1b22064100480de9010240024020040d002006102821050c010b200228020420042006102c21050b2005450db60120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411b3a00000c9d010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de801200441017422072006200720064b1b22074100480de8010240024020040d002007102821060c010b200928020020042007102c21060b2006450db60120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41203a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de9012004410174220a2006200a20064b1b220a4100480de9010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db801200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9d010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de701200441017422072006200720064b1b22074100480de7010240024020040d002007102821060c010b200928020020042007102c21060b2006450db70120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41213a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de8012004410174220a2006200a20064b1b220a4100480de8010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450db901200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9c010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de601200441017422072006200720064b1b22074100480de6010240024020040d002007102821060c010b200928020020042007102c21060b2006450db80120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41223a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de7012004410174220a2006200a20064b1b220a4100480de7010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450dba01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9b010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de501200441017422072006200720064b1b22074100480de5010240024020040d002007102821060c010b200928020020042007102c21060b2006450db90120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41233a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de6012004410174220a2006200a20064b1b220a4100480de6010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450dbb01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9a010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de401200441017422072006200720064b1b22074100480de4010240024020040d002007102821060c010b200928020020042007102c21060b2006450dba0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41243a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de5012004410174220a2006200a20064b1b220a4100480de5010240024020040d00200a102821060c010b20092802002004200a102c21060b2006450dbc01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c99010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de301200441017422082007200820074b1b22084100480de3010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dbb0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41283a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de4012004410174220b2007200b20074b1b220b4100480de4010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dbd01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de401200441017422092006200920064b1b22094100480de4010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dbe012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c98010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de201200441017422082007200820074b1b22084100480de2010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dbd0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41293a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de3012004410174220b2007200b20074b1b220b4100480de3010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dbf01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de301200441017422092006200920064b1b22094100480de3010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dc0012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c97010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de101200441017422082007200820074b1b22084100480de1010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dbf0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de2012004410174220b2007200b20074b1b220b4100480de2010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dc101200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de201200441017422092006200920064b1b22094100480de2010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dc2012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c96010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de001200441017422082007200820074b1b22084100480de0010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dc10120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de1012004410174220b2007200b20074b1b220b4100480de1010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dc301200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de101200441017422092006200920064b1b22094100480de1010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dc4012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c95010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddf01200441017422082007200820074b1b22084100480ddf010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dc30120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de0012004410174220b2007200b20074b1b220b4100480de0010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dc501200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de001200441017422092006200920064b1b22094100480de0010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dc6012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c94010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dde01200441017422082007200820074b1b22084100480dde010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dc50120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddf012004410174220b2007200b20074b1b220b4100480ddf010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dc701200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddf01200441017422092006200920064b1b22094100480ddf010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dc8012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c93010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddd01200441017422082007200820074b1b22084100480ddd010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dc70120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dde012004410174220b2007200b20074b1b220b4100480dde010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dc901200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dde01200441017422092006200920064b1b22094100480dde010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dca012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c92010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddc01200441017422082007200820074b1b22084100480ddc010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dc90120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412f3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddd012004410174220b2007200b20074b1b220b4100480ddd010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dcb01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddd01200441017422092006200920064b1b22094100480ddd010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dcc012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c91010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddb01200441017422082007200820074b1b22084100480ddb010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dcb0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41303a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddc012004410174220b2007200b20074b1b220b4100480ddc010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dcd01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddc01200441017422092006200920064b1b22094100480ddc010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dce012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c90010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dda01200441017422082007200820074b1b22084100480dda010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dcd0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41313a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddb012004410174220b2007200b20074b1b220b4100480ddb010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dcf01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddb01200441017422092006200920064b1b22094100480ddb010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dd0012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8f010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd901200441017422082007200820074b1b22084100480dd9010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dcf0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41323a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dda012004410174220b2007200b20074b1b220b4100480dda010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dd101200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dda01200441017422092006200920064b1b22094100480dda010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dd2012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8e010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd801200441017422082007200820074b1b22084100480dd8010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dd10120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41333a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dd9012004410174220b2007200b20074b1b220b4100480dd9010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dd301200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dd901200441017422092006200920064b1b22094100480dd9010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dd4012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8d010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd701200441017422082007200820074b1b22084100480dd7010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dd30120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41343a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dd8012004410174220b2007200b20074b1b220b4100480dd8010240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dd501200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dd801200441017422092006200920064b1b22094100480dd8010240024020040d002009102821060c010b200a28020020042009102c21060b2006450dd6012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8c010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd601200441017422082007200820074b1b22084100480dd6010240024020040d002008102821070c010b200a28020020042008102c21070b2007450dd50120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41353a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da3022004410174220b2007200b20074b1b220b4100480da3020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dd801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da302200441017422092006200920064b1b22094100480da3020240024020040d002009102821060c010b200a28020020042009102c21060b2006450dd9012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8b010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490da102200441017422082007200820074b1b22084100480da1020240024020040d002008102821070c010b200a28020020042008102c21070b2007450dd80120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41363a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da2022004410174220b2007200b20074b1b220b4100480da2020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dda01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da202200441017422092006200920064b1b22094100480da2020240024020040d002009102821060c010b200a28020020042009102c21060b2006450ddb012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8a010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490da002200441017422082007200820074b1b22084100480da0020240024020040d002008102821070c010b200a28020020042008102c21070b2007450dda0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41373a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da1022004410174220b2007200b20074b1b220b4100480da1020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450ddc01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da102200441017422092006200920064b1b22094100480da1020240024020040d002009102821060c010b200a28020020042009102c21060b2006450ddd012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c89010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9f02200441017422082007200820074b1b22084100480d9f020240024020040d002008102821070c010b200a28020020042008102c21070b2007450ddc0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41383a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da0022004410174220b2007200b20074b1b220b4100480da0020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dde01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da002200441017422092006200920064b1b22094100480da0020240024020040d002009102821060c010b200a28020020042009102c21060b2006450ddf012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c88010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9e02200441017422082007200820074b1b22084100480d9e020240024020040d002008102821070c010b200a28020020042008102c21070b2007450dde0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41393a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9f022004410174220b2007200b20074b1b220b4100480d9f020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450de001200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9f02200441017422092006200920064b1b22094100480d9f020240024020040d002009102821060c010b200a28020020042009102c21060b2006450de1012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c87010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9d02200441017422082007200820074b1b22084100480d9d020240024020040d002008102821070c010b200a28020020042008102c21070b2007450de00120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9e022004410174220b2007200b20074b1b220b4100480d9e020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450de201200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9e02200441017422092006200920064b1b22094100480d9e020240024020040d002009102821060c010b200a28020020042009102c21060b2006450de3012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c86010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9c02200441017422082007200820074b1b22084100480d9c020240024020040d002008102821070c010b200a28020020042008102c21070b2007450de20120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9d022004410174220b2007200b20074b1b220b4100480d9d020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450de401200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9d02200441017422092006200920064b1b22094100480d9d020240024020040d002009102821060c010b200a28020020042009102c21060b2006450de5012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c85010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9b02200441017422082007200820074b1b22084100480d9b020240024020040d002008102821070c010b200a28020020042008102c21070b2007450de40120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9c022004410174220b2007200b20074b1b220b4100480d9c020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450de601200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9c02200441017422092005200920054b1b22094100480d9c020240024020040d002009102821050c010b200a28020020042009102c21050b2005450de7012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c84010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9a02200441017422082007200820074b1b22084100480d9a020240024020040d002008102821070c010b200a28020020042008102c21070b2007450de60120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9b022004410174220b2007200b20074b1b220b4100480d9b020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450de801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9b02200441017422092006200920064b1b22094100480d9b020240024020040d002009102821060c010b200a28020020042009102c21060b2006450de9012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c83010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9902200441017422082007200820074b1b22084100480d99020240024020040d002008102821070c010b200a28020020042008102c21070b2007450de80120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9a022004410174220b2007200b20074b1b220b4100480d9a020240024020040d00200b102821070c010b200a2802002004200b102c21070b2007450dea01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9a02200441017422092006200920064b1b22094100480d9a020240024020040d002009102821060c010b200a28020020042009102c21060b2006450deb012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c82010b0b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9802200441017422082005200820054b1b22084100480d98020240024020040d002008102821050c010b200628020020042008102c21050b2005450dea0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a413f3a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d9802200441017422082005200820054b1b22084100480d98020240024020040d002008102821050c010b200628020020042008102c21050b2005450deb0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c80010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9702200441017422082005200820054b1b22084100480d97020240024020040d002008102821050c010b200628020020042008102c21050b2005450deb0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c0003a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d9702200441017422082005200820054b1b22084100480d97020240024020040d002008102821050c010b200628020020042008102c21050b2005450dec0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c7f0b200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9602200441017422072005200720054b1b22074100480d96020240024020040d002007102821050c010b200228020420042007102c21050b2005450dec0120022005360204200241086a20073602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c1003a000020032006200210eb042003210420032d0000411f470def020c7e0b200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9502200441017422062005200620054b1b22064100480d95020240024020040d002006102821050c010b200228020420042006102c21050b2005450dec0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c2003a00002003200c200210ec042003210420032d0000411f470dee020c7d0b200241046a2106200141046a280200210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9402200441017422082005200820054b1b22084100480d94020240024020040d002008102821050c010b200628020020042008102c21050b2005450dec0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c3003a000002400240200241086a2802002205200828020022046b4104490d00200628020021050c010b200441046a22082004490d9402200541017422042008200420084b1b22044100480d94020240024020050d002004102821050c010b200628020020052004102c21050b2005450ded0120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441046a360200200520046a20073600000c7c0b200241046a2106200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9302200441017422072005200720054b1b22074100480d93020240024020040d002007102821050c010b200628020020042007102c21050b2005450ded0120022005360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a41c4003a000002400240200241086a2802002205200728020022046b4108490d00200628020021050c010b200441086a22072004490d9302200541017422042007200420074b1b22044100480d93020240024020050d002004102821050c010b200628020020052004102c21050b2005450dee0120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441086a360200200520046a200c3700000c7b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9202200441017422062005200620054b1b22064100480d92020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c5003a00000c7a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9102200441017422062005200620054b1b22064100480d91020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c6003a00000c790b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9002200441017422062005200620054b1b22064100480d90020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c7003a00000c780b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8f02200441017422062005200620054b1b22064100480d8f020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c8003a00000c770b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8e02200441017422062005200620054b1b22064100480d8e020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c9003a00000c760b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8d02200441017422062005200620054b1b22064100480d8d020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ca003a00000c750b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8c02200441017422062005200620054b1b22064100480d8c020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cb003a00000c740b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8b02200441017422062005200620054b1b22064100480d8b020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cc003a00000c730b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8a02200441017422062005200620054b1b22064100480d8a020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cd003a00000c720b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8902200441017422062005200620054b1b22064100480d89020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ce003a00000c710b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8802200441017422062005200620054b1b22064100480d88020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cf003a00000c700b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8702200441017422062005200620054b1b22064100480d87020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d0003a00000c6f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8602200441017422062005200620054b1b22064100480d86020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d1003a00000c6e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8502200441017422062005200620054b1b22064100480d85020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d2003a00000c6d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8402200441017422062005200620054b1b22064100480d84020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d3003a00000c6c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8302200441017422062005200620054b1b22064100480d83020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d4003a00000c6b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8202200441017422062005200620054b1b22064100480d82020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d5003a00000c6a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8102200441017422062005200620054b1b22064100480d81020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d6003a00000c690b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8002200441017422062005200620054b1b22064100480d80020240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d7003a00000c680b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dff01200441017422062005200620054b1b22064100480dff010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d8003a00000c670b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfe01200441017422062005200620054b1b22064100480dfe010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d9003a00000c660b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfd01200441017422062005200620054b1b22064100480dfd010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41da003a00000c650b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfc01200441017422062005200620054b1b22064100480dfc010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41db003a00000c640b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfb01200441017422062005200620054b1b22064100480dfb010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dc003a00000c630b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfa01200441017422062005200620054b1b22064100480dfa010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dd003a00000c620b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df901200441017422062005200620054b1b22064100480df9010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41de003a00000c610b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df801200441017422062005200620054b1b22064100480df8010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41df003a00000c600b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e0003a00000c5f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e1003a00000c5e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df501200441017422062005200620054b1b22064100480df5010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e2003a00000c5d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df401200441017422062005200620054b1b22064100480df4010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e3003a00000c5c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df301200441017422062005200620054b1b22064100480df3010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e4003a00000c5b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e5003a00000c5a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e6003a00000c590b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df001200441017422062005200620054b1b22064100480df0010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e7003a00000c580b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490def01200441017422062005200620054b1b22064100480def010240024020040d002006102821050c010b200228020420042006102c21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e8003a00000c570b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dba02200441017422062005200620054b1b22064100480dba020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e9003a00000c560b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db902200441017422062005200620054b1b22064100480db9020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ea003a00000c550b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db802200441017422062005200620054b1b22064100480db8020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41eb003a00000c540b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db702200441017422062005200620054b1b22064100480db7020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ec003a00000c530b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db602200441017422062005200620054b1b22064100480db6020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ed003a00000c520b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db502200441017422062005200620054b1b22064100480db5020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ee003a00000c510b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db402200441017422062005200620054b1b22064100480db4020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ef003a00000c500b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db302200441017422062005200620054b1b22064100480db3020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f0003a00000c4f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db202200441017422062005200620054b1b22064100480db2020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f1003a00000c4e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db102200441017422062005200620054b1b22064100480db1020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f2003a00000c4d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db002200441017422062005200620054b1b22064100480db0020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f3003a00000c4c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490daf02200441017422062005200620054b1b22064100480daf020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f4003a00000c4b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dae02200441017422062005200620054b1b22064100480dae020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f5003a00000c4a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dad02200441017422062005200620054b1b22064100480dad020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f6003a00000c490b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dac02200441017422062005200620054b1b22064100480dac020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f7003a00000c480b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dab02200441017422062005200620054b1b22064100480dab020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f8003a00000c470b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490daa02200441017422062005200620054b1b22064100480daa020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f9003a00000c460b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da902200441017422062005200620054b1b22064100480da9020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fa003a00000c450b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da802200441017422062005200620054b1b22064100480da8020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fb003a00000c440b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da702200441017422062005200620054b1b22064100480da7020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fc003a00000c430b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da602200441017422062005200620054b1b22064100480da6020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fd003a00000c420b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da502200441017422062005200620054b1b22064100480da5020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fe003a00000c410b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da402200441017422062005200620054b1b22064100480da4020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ff003a00000c400b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da302200441017422062005200620054b1b22064100480da3020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4180013a00000c3f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da202200441017422062005200620054b1b22064100480da2020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4181013a00000c3e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da102200441017422062005200620054b1b22064100480da1020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4182013a00000c3d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da002200441017422062005200620054b1b22064100480da0020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4183013a00000c3c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9f02200441017422062005200620054b1b22064100480d9f020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4184013a00000c3b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9e02200441017422062005200620054b1b22064100480d9e020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4185013a00000c3a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9d02200441017422062005200620054b1b22064100480d9d020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4186013a00000c390b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9c02200441017422062005200620054b1b22064100480d9c020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4187013a00000c380b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9b02200441017422062005200620054b1b22064100480d9b020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4188013a00000c370b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9a02200441017422062005200620054b1b22064100480d9a020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4189013a00000c360b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9902200441017422062005200620054b1b22064100480d99020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418a013a00000c350b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9802200441017422062005200620054b1b22064100480d98020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418b013a00000c340b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9702200441017422062005200620054b1b22064100480d97020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418c013a00000c330b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9602200441017422062005200620054b1b22064100480d96020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418d013a00000c320b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9502200441017422062005200620054b1b22064100480d95020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418e013a00000c310b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9402200441017422062005200620054b1b22064100480d94020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418f013a00000c300b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9302200441017422062005200620054b1b22064100480d93020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4190013a00000c2f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9202200441017422062005200620054b1b22064100480d92020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4191013a00000c2e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9102200441017422062005200620054b1b22064100480d91020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4192013a00000c2d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9002200441017422062005200620054b1b22064100480d90020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4193013a00000c2c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8f02200441017422062005200620054b1b22064100480d8f020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4194013a00000c2b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8e02200441017422062005200620054b1b22064100480d8e020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4195013a00000c2a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8d02200441017422062005200620054b1b22064100480d8d020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4196013a00000c290b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8c02200441017422062005200620054b1b22064100480d8c020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4197013a00000c280b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8b02200441017422062005200620054b1b22064100480d8b020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4198013a00000c270b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8a02200441017422062005200620054b1b22064100480d8a020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4199013a00000c260b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8902200441017422062005200620054b1b22064100480d89020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419a013a00000c250b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8802200441017422062005200620054b1b22064100480d88020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419b013a00000c240b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8702200441017422062005200620054b1b22064100480d87020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419c013a00000c230b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8602200441017422062005200620054b1b22064100480d86020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419d013a00000c220b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8502200441017422062005200620054b1b22064100480d85020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419e013a00000c210b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8402200441017422062005200620054b1b22064100480d84020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419f013a00000c200b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8302200441017422062005200620054b1b22064100480d83020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a0013a00000c1f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8202200441017422062005200620054b1b22064100480d82020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a1013a00000c1e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8102200441017422062005200620054b1b22064100480d81020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a2013a00000c1d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8002200441017422062005200620054b1b22064100480d80020240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a3013a00000c1c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dff01200441017422062005200620054b1b22064100480dff010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a4013a00000c1b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfe01200441017422062005200620054b1b22064100480dfe010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a5013a00000c1a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfd01200441017422062005200620054b1b22064100480dfd010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a6013a00000c190b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfc01200441017422062005200620054b1b22064100480dfc010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a7013a00000c180b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfb01200441017422062005200620054b1b22064100480dfb010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a8013a00000c170b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfa01200441017422062005200620054b1b22064100480dfa010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a9013a00000c160b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df901200441017422062005200620054b1b22064100480df9010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41aa013a00000c150b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df801200441017422062005200620054b1b22064100480df8010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ab013a00000c140b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ac013a00000c130b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ad013a00000c120b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df501200441017422062005200620054b1b22064100480df5010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ae013a00000c110b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df401200441017422062005200620054b1b22064100480df4010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41af013a00000c100b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df301200441017422062005200620054b1b22064100480df3010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b0013a00000c0f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b1013a00000c0e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b2013a00000c0d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df001200441017422062005200620054b1b22064100480df0010240024020040d002006102821050c010b200228020420042006102c21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b3013a00000c0c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfc01200441017422062005200620054b1b22064100480dfc010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b4013a00000c0b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfb01200441017422062005200620054b1b22064100480dfb010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b5013a00000c0a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfa01200441017422062005200620054b1b22064100480dfa010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b6013a00000c090b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df901200441017422062005200620054b1b22064100480df9010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b7013a00000c080b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df801200441017422062005200620054b1b22064100480df8010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b8013a00000c070b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b9013a00000c060b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ba013a00000c050b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df501200441017422062005200620054b1b22064100480df5010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bb013a00000c040b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df401200441017422062005200620054b1b22064100480df4010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bc013a00000c030b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df301200441017422062005200620054b1b22064100480df3010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bd013a00000c020b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41be013a00000c010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102821050c010b200228020420042006102c21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bf013a00000b2000411f3a000020012d00004109470df1010240200141046a280200220228020441ffffffff0371450d002002280200102a200128020421020b2002102a0cf1010b200641011037000b200641011037000b200841011037000b200841011037000b200841011037000b200841011037000b200841011037000b200841011037000b200641011037000b200641011037000b200741011037000b200a41011037000b200741011037000b200a41011037000b200641011037000b200a41011037000b200641011037000b200741011037000b200a41011037000b200741011037000b200a41011037000b200641011037000b200641011037000b200641011037000b200741011037000b200a41011037000b200741011037000b200a41011037000b200741011037000b200a41011037000b200741011037000b200a41011037000b200741011037000b200a41011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b1031000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200b41011037000b200941011037000b200841011037000b200841011037000b200841011037000b200841011037000b200741011037000b200641011037000b200841011037000b200441011037000b200741011037000b200441011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b1031000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b1031000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b200641011037000b1031000b20002004290200370200200041086a200441086a29020037020020012d00004109470d000240200141046a280200220228020441ffffffff0371450d002002280200102a200128020421020b2002102a0b200341106a24000bfb07030e7f017e017f200241086a2103200241046a210420012802002205210602400240024002400240034002400240200428020020032802002207460d00200228020021080c010b200741016a22082007490d02200741017422092008200920084b1b22094100480d020240024020070d002009102821080c010b200228020020072009102c21080b2008450d032002200836020020042009360200200328020021070b2003200741016a360200200820076a200641807f72200641ff0071200641077622071b3a00002007210620070d000b2001280204220a2001410c6a2802002206410c6c6a210b200141086a280200210c200a21072006450d03200a21072005450d03200b41746a210d200241086a210841002107200a210e02400340200e2103024003402003280200220f0d01200741016a2107200b2003410c6a2203470d000c080b0b2003410c6a210e200741016a21102005417f6a2105200341046a290200211102400240034002400240200241046a220428020020082802002206460d00200228020021090c010b200641016a22092006490d06200641017422012009200120094b1b22014100480d060240024020060d002001102821090c010b200228020020062001102c21090b2009450d022002200936020020042001360200200828020021060b2008200641016a360200200920066a200741807f72200741ff0071200741077622061b3a0000200621072006450d020c000b0b200141011037000b2011422088a7221221060240034002400240200428020020082802002207460d00200228020021090c010b200741016a22092007490d05200741017422012009200120094b1b22014100480d050240024020070d002001102821090c010b200228020020072001102c21090b2009450d022002200936020020042001360200200828020021070b2008200741016a360200200920076a200641807f72200641ff0071200641077622071b3a00002007210620070d000b0240024020042802002206200828020022076b2012490d00200228020021060c010b200720126a22092007490d04200641017422072009200720094b1b22074100480d040240024020060d002007102821060c010b200228020020062007102c21060b2006450d032002200636020020042007360200200828020021070b2008200720126a360200200620076a200f2012109a051a02402011a7450d00200f102a0b200d2003460d052010210720050d010c050b0b200141011037000b200741011037000b1031000b200941011037000b2003410c6a21070b2007200b460d000340024020072802002206450d00200741046a280200450d002006102a0b2007410c6a2207200b470d000b0b0240200c450d00200a102a0b2000411f3a00000bcb0401067f200441046a2105024002400240024002400240200441086a2802002004410c6a2802002206460d00200528020021070c010b200641016a22072006490d04200641017422082007200820074b1b22084100480d040240024020060d002008102821070c010b200528020020062008102c21070b2007450d0120042007360204200441086a20083602002004410c6a28020021060b2004410c6a2208200641016a360200200720066a20024101463a0000200441086a2109034002400240200928020020082802002206460d00200528020021070c010b200641016a22072006490d052006410174220a2007200a20074b1b220a4100480d050240024020060d00200a102821070c010b20052802002006200a102c21070b2007450d03200420073602042009200a360200200828020021060b2008200641016a360200200720066a200141807f72200141ff0071200141077622061b3a00002006210120060d000b024020024101470d002004410c6a2107200441086a2108034002400240200828020020072802002206460d00200528020021010c010b200641016a22012006490d06200641017422092001200920014b1b22094100480d060240024020060d002009102821010c010b200528020020062009102c21010b2001450d052004200136020420082009360200200728020021060b2007200641016a360200200120066a200341807f72200341ff0071200341077622061b3a00002006210320060d000b0b2000411f3a00000f0b200841011037000b200a41011037000b200941011037000b1031000bb007010a7f230041d0006b2202240002400240024002400240024020012802082203200128020c2204460d00200441016a22052004490d02200320054f0d0120052003103c000b200241013a001f200241cc006a41013602002002420137023c200241a4e2c500360238200241263602342002200241306a36024820022002411f6a360230200241206a200241386a10332002411b6a200241286a28020036000020022002290320370013200220022900103703002002200241176a290000370007200041053a0004200020022903003700052000410c6a2002290007370000200041013602000c040b2001280200220620046a2d000021072001200536020c024020074102490d00200041173a000420004101360200200041056a20073a00000c040b410120036b2108200441026a2104410021054100210902400240034002402005411f4d0d00410f21050c020b02400240200820046a4102460d002004450d06200320044f0d0120042003103c000b200241013a0000200241cc006a41013602002002420137023c200241a4e2c500360238200241263602342002200241306a36024820022002360230200241106a200241386a1033410521050c020b200620046a417f6a2d0000210a2001200436020c200a41ff00712005411f71742009722109200441016a2104200541076a2105200a418001710d000b20054120490d01410d2105200a4110490d010b2000200536020420004101360200200041086a2002290210370200200041106a200241106a41086a2802003602000c040b4100210502402007410171450d002004417f6a2104410021054100210b02400240034002402005411f4d0d00410f21040c020b0240024020032004460d002004417f460d082003200441016a22084f0d01200441016a2003103c000b200241013a0000200241cc006a41013602002002420137023c200241a4e2c500360238200241263602342002200241306a36024820022002360230200241106a200241386a1033410521040c020b200620046a2d0000210a2001200836020c200a41ff00712005411f7174200b72210b200541076a210520082104200a418001710d000b20054120490d01410d2104200a4110490d010b2000200436020420004101360200200041086a2002290210370200200041106a200241106a41086a2802003602000c050b410121050b20002009360204200041003602002000410c6a200b360200200041086a20053602000c030b417f20051044000b417f20041044000b417f200441016a1044000b200241d0006a24000bee0201067f230041c0006b2202240041002103410021040240024003400240024002402003411f4b0d002001280204220520012802082206460d01200641016a22072006490d04200520074f0d0220072005103c000b200041013602002000410f3a00040c040b200241013a000f200241346a410136020020024201370224200241a4e2c5003602202002412636023c2002200241386a36023020022002410f6a360238200241106a200241206a10332002410b6a200241186a28020036000020022002290310370003200041053a0004200020022900003700052000410c6a200241076a290000370000200041013602000c030b200128020020066a2d0000210620012007360208200641ff00712003411f71742004722104200341076a21032006418001710d000b0240024020034120490d002006410f4b0d010b20004100360200200020043602040c020b200041013602002000410d3a00040c010b417f20071044000b200241c0006a24000bd806010a7f20012802042103200128020021044100210541002106410021074101210820012802082209210a02400240024002400340024020062007470d002005200641016a220b2005200b4b1b22074100480d050240024020060d002007102821080c010b200820062007102c21080b2008450d020b200820066a200a41807f72200a41ff0071200a410776220b1b3a0000200541026a2105200641016a2106200b210a200b0d000b0240200720066b20094f0d00200620096a220a2006490d0420074101742205200a2005200a4b1b220a4100480d040240024020070d00200a102821080c010b20082007200a102c21080b2008450d02200a21070b200820066a20042009109a051a02402003450d002004102a0b200128020c210c0240200720096b20066b200141146a280200220a490d002009200a6a20066a21030c030b200920066a2205200a6a22032005490d03200741017422052003200520034b1b22054100480d030240024020070d002005102821080c010b200820072005102c21080b02402008450d00200521070c030b200541011037000b200741011037000b200a41011037000b200820096a20066a200c200a109a051a200241086a210b200241046a21092003210a024002400340024002402009280200200b2802002206460d00200228020021050c010b200641016a22052006490d04200641017422042005200420054b1b22044100480d040240024020060d002004102821050c010b200228020020062004102c21050b2005450d022002200536020020092004360200200b28020021060b200b200641016a360200200520066a200a41807f72200a41ff0071200a41077622061b3a00002006210a20060d000b02400240200241046a280200220a200241086a28020022066b2003490d002002280200210a0c010b200620036a22052006490d03200a41017422062005200620054b1b22064100480d0302400240200a0d0020061028210a0c010b2002280200200a2006102c210a0b200a450d022002200a360200200241046a2006360200200241086a28020021060b200241086a200620036a360200200a20066a20082003109a051a02402007450d002008102a0b2000411f3a00000240200141106a280200450d00200c102a0b0f0b200441011037000b200641011037000b1031000bf20103027f017e057f024020002802082201200028020c460d00034020002001411c6a36020820012802102202450d01200141146a2902002103024020012802042204450d00200141086a280200210502402001410c6a2802002201450d0020014104742106200421010340024020012d00004109470d000240200141046a2207280200220828020441ffffffff0371450d002008280200102a200728020021080b2008102a0b200141106a2101200641706a22060d000b0b2005450d002004102a0b02402003a7450d002002102a0b20002802082201200028020c470d000b0b02402000280204450d002000280200102a0b0be50101067f024020002802082201200028020c460d0003402000200141186a36020820012802002202450d01200141146a2802002103200141106a2802002104200128020c210502402001280204450d002002102a0b02402003450d0020034104742103200521010340024020012d00004109470d000240200141046a2206280200220228020441ffffffff0371450d002002280200102a200628020021020b2002102a0b200141106a2101200341706a22030d000b0b02402004450d002005102a0b20002802082201200028020c470d000b0b02402000280204450d002000280200102a0b0bf20103027f017e057f024020002802082201200028020c460d00034020002001411c6a36020820012802102202450d01200141146a2902002103024020012802042204450d00200141086a280200210502402001410c6a2802002201450d0020014104742106200421010340024020012d00004109470d000240200141046a2207280200220828020441ffffffff0371450d002008280200102a200728020021080b2008102a0b200141106a2101200641706a22060d000b0b2005450d002004102a0b02402003a7450d002002102a0b20002802082201200028020c470d000b0b02402000280204450d002000280200102a0b0bce0101057f024020002802082201450d00200028020022022001411c6c6a21030340024020022802042200450d0002402002410c6a2802002201450d00200141047421010340024020002d00004109470d000240200041046a2204280200220528020441ffffffff0371450d002005280200102a200428020021050b2005102a0b200041106a2100200141706a22010d000b0b200241086a280200450d002002280204102a0b2002411c6a21000240200241146a280200450d002002280210102a0b2000210220002003470d000b0b0b90d20106067f017e057f017e117f027e2300419081046b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402001280204220320012802082204460d00200441016a22052004490d02200320054f0d0120052003103c000b200241013a0030200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103320022802f88004210420022802fc8004210120004101360200200041003a00042001450d2b2004102a0c2b0b200128020020046a2d00002104200120053602082004410c4b0d03024002400240024020040e0d0001161514131211060d0c0b05000b200241e8006a200110f40441012106200228026c2107024020022802684101470d0020074108762101200241f8006a2802002104200241e8006a41086a29030021080c270b41002109200241e8006a4100418080011099051a410021034100210a2007450d20410021054100210a410121064100210b0340024002402001280204220c200128020822036b2007200b6b220441808001200441808001491b2204490d00200320046a220d2003490d05200c200d4f0d01200d200c103c000b200241013a00e880042002418c81046a4101360200200242013702fc8004200241a4e2c5003602f880042002412636021c2002200241186a36028881042002200241e880046a360218200241306a200241f880046a10332002290330210820022802382104410521070240200a450d002006102a0b0c280b200241e8006a200128020020036a2004109a051a2001200d36020802400240200a20056b2004490d00200520046a21030c010b200520046a22032005490d23200a410174220d2003200d20034b1b220d4100480d2302400240200a0d00200d102821060c010b2006200a200d102c21060b2006450d03200d210a0b200620056a200241e8006a2004109a051a2003210520072004200b6a220b4b0d000c210b0b200241e8006a200110fb04024020022802684101470d00200228026c22044108762105200241e8006a41086a2903002208422088210e200241f8006a28020021030c1f0b200241fc006a280200210f200241f8006a2802002101200241f4006a2802002103200241f0006a2802002110200228026c210b4100210441002109024002400240034002402004411f4d0d00410f21040c020b0240024020032001460d002001417f460d052003200141016a22054f0d01200141016a2003103c000b200241013a0030200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241306a360218200241c8006a200241e8006a1033410521040c020b200b20016a2d0000220641ff00712004411f71742009722109200441076a2104200521012006418001710d000b20044120490d01410d210420064110490d010b200241f880046a41086a200241c8006a41086a28020022033602002002200229034822083703f880042008422088a721092008a721060c1f0b200241003602602002420437035802400240024020090d00410421010c010b410020036b2111200b41026a2112410120036b21134100210a410421014100211441002115410021160340201621170240024020032005460d000240200541016a22042005490d000240024020032004490d000240200b20056a2d0000220441e000460d00411821050c250b201741016a211641022118200541026a210441002106410321192012211a4100211b024002400340201a21072019210c2018210d02402006411f4d0d00410f21050c020b02400240201320046a4102460d002004450d06200320044f0d0120042003103c000b200241013a00302002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a1033200241206a41086a200241f880046a41086a280200360200200220022903f88004370320410521050c020b200b20046a417f6a2d0000221c41ff00712006411f7174201b72211b200d41016a2118200c41016a2119200741016a211a200441016a2104200641076a2106201c418001710d000b20064120490d01201c4110490d01410d21050b200241e880046a41086a200241206a41086a28020022033602002002200229032022083703e880042008a721064100210420022802ec800421090c240b41002118200241003602382002420137033002400240201b0d002004417f6a21064101211c4100211a4100211d0c010b201120056a211e410021194101211c4100211a034002400240024002400240201e200d6a450d002005200c6a2204450d02200320044f0d0120042003103c000b200220193602342002201a3602382002201c360230200241013a00e880042002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a103320022802f88004210620022802fc80042109200228028081042103410521050c280b200720056a2c000022044100480d0102400240200441c00071450d00200441807f72220441ff017141fb014b0d010b200220193602342002201a3602382002201c360230410621050c270b0240201a2019460d002019211d201a21060c030b201941016a22062019490d2e2019410174221d2006201d20064b1b221d4100480d2e0240024020190d00201d1028211c0c010b201c2019201d102c211c0b0240201c450d0020192106201d21190c030b201d41011037000b417f20041044000b200220193602342002201a3602382002201c360230411921050c240b201c20066a2004417f733a0000200d41016a210d200c41016a210c200741016a2107201b201a41016a221a470d000b2002201d3602342002201a3602382002201c3602302005200d6a21060b201c411076411074221b201c41087641ff0171410874221972201c41ff0171221c72210c4100210d024003404100210402402018411f4d0d00410f21050c230b0240024020032006460d002006417f460d032003200641016a22054f0d01200641016a2003103c000b200241013a00302002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103320022802f88004210620022802fc8004210920022d00808104210320022d00818104210720022f01828104210d410521050c230b200b20066a2d0000220741ff00712018411f7174200d72210d201841076a2118200521062007418001710d000b20184120490d052007410f4d0d05410d21050c210b417f200641016a1044000b20042003103c000b417f20041044000b417f20041044000b200241013a00302002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103320022802f88004210620022802fc8004210920022d00808104210320022d00818104210720022f01828104210d410521050c200b0240200d41014d0d004104210541e885c6002106412421090c1b0b024002400240200d0e020001000b410421060c010b20032005460d1a024002400240200541016a220d2005490d002003200d490d010240200b20056a2c0000220441004e0d00411921050c200b41062105200441c00071450d02200441807f72220441ff017141fb014d0d022004417f732106200d21050c030b417f200541016a1044000b200541016a2003103c000b0c1c0b024020172015470d00024020142015460d00201421150c010b201441016a22042014490d252014410174220d2004200d20044b1b221541ffffffff00712015470d25201541047422044100480d250240024020140d002004102821010c010b200120144104742004102c21010b2001450d032002201536025c20022001360258201521140b200120174104746a2204201f4180807c71200641ff01714108747241e00072221f36020c2004201a3602082004201d36020420042019201c72201b72360200200a41106a210a2002201636026020162009470d000b0b2005200f462104200229025c2208422088210e02402010450d00200b102a0b200ea721052008a721092004450d1e2005ad4220862009ad842108410221030c2a0b200441041037000b417f200141016a1044000b200d41011037000b2003200d1044000b417f20051044000b200241e8006a200110fb04024020022802684101470d00200041013602002000200241e8006a41047222012902003702042000410c6a200141086a2902003702000c290b200241fc006a280200210d200241f8006a2802002104200241f4006a2802002105200241f0006a280200210a200228026c210b410021034100210102400240034002402003411f4d0d00410f21040c080b20052004460d062004417f460d012005200441016a2206490d02200b20046a2d0000220941ff00712003411f71742001722101200341076a2103200621042009418001710d000b20034120490d04410d21042009410f4b0d060c040b417f200441016a1044000b200441016a2005103c000b200241e8006a200110fb04024020022802684101470d00200041013602002000200241e8006a41047222012902003702042000410c6a200141086a2902003702000c280b200241fc006a280200210d200241f8006a2802002104200241f4006a2802002105200241f0006a280200210a200228026c210b410021034100210102400240034002402003411f4d0d00410f21040c0d0b20052004460d0b2004417f460d012005200441016a2206490d02200b20046a2d0000220941ff00712003411f71742001722101200341076a2103200621042009418001710d000b20034120490d09410d21042009410f4b0d0b0c090b417f200441016a1044000b200441016a2005103c000b200041123a000420004101360200200041056a20043a00000c260b200d20064621040240200a450d00200b102a0b02402004450d00410b21030c220b20024103410220041b3a00e88004200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a10332002418381046a200241386a280200360000200220022903303700fb8004200041053a0004200020022900f880043700052000410c6a200241ff80046a290000370000200041013602000c250b200241013a0030200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a1033410521040b2000200436020420004101360200200041086a20022902f88004370200200041106a200241f880046a41086a280200360200200a450d23200b102a0c230b200241e8006a200110fb040240024020022802684101470d00200228026c22014108762106200241e8006a41086a2903002208422088210e200241f8006a280200210b0c010b200241c0006a200241fc006a280200360200200241386a200241f4006a2902003703002002200229026c37033041002101410021050240024002400240024002400240034002402001411f4d0d00410f210d0c020b0240024020022802382209200228023c2204460d00200441016a22032004490d05200920034f0d0120032009103c000b200241013a00e88004200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241c8006a200241e8006a10334105210d0c020b200228023020046a2d000021042002200336023c200441ff00712001411f71742005722105200141076a21012004418001710d000b20014120490d01410d210d20044110490d010b200241f880046a41086a200241c8006a41086a280200220b3602002002200229034822083703f880042008422088a721072008a7210c410021060c040b200241003602502002420437034802400240024020050d00410421010c010b4100210d0340200d41016a210d41002101410021090240024002400240024002400240034002402001411f4d0d00410f210d0c030b20022802382206200228023c2204460d01200441016a22032004490d0420062003490d06200228023020046a2d000021042002200336023c200441ff00712001411f71742009722109200141076a21012004418001710d000b20014120490d022004410f4d0d02410d210d0c010b200241013a00582002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241f880046a200241e8006a1033200241e880046a41086a200241f880046a41086a280200360200200220022903f8800422083703e880042008a7210c4105210d0b20022802f08004210b20022802ec80042107410021060c0a0b200241e8006a200241306a10ed04024020022802684101470d00200228026c220d41087621062002280278210b200228027421072002280270210c0c0a0b200228027421192002280270211c200228026c211a410021044100210b02400240034002402004411f4d0d00410f210d0c020b0240024020022802382206200228023c2203460d00200341016a22012003490d06200620014f0d0120012006103c000b200241013a00e880042002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a1033200241206a41086a200241f880046a41086a280200360200200220022903f8800422083703202008a7210c4105210d0c030b2002280230220a20036a2d000021032002200136023c200341ff00712004411f7174200b72210b200441076a21042003418001710d000b20044120490d0520034110490d05410d210d0b0b2002280228210b200228022421070c080b417f20031044000b417f20011044000b20032006103c000b4100211b200241e8006a4100418080041099051a02400240200b0d00410121184100210c0c010b4100211b41012118410021034100210702400240034002400240200620016b200b20076b220441808004200441808004491b2204490d00200120046a220c2001490d032006200c4f0d01200c2006103c000b200241013a00202002410136028c8104200242013702fc8004200241a4e2c5003602f880042002412636021c2002200241186a36028881042002200241206a360218200241e880046a200241f880046a103320022802e88004210c20022802ec8004210720022802f08004210b4105210d201b450d092018102a0c090b200241e8006a200a20016a2004109a051a2002200c36023c02400240201b20036b2004490d00200320046a210c0c010b200320046a220c2003490d24201b4101742201200c2001200c4b1b22014100480d2402400240201b0d002001102821180c010b2018201b2001102c21180b2018450d032001211b0b201820036a200241e8006a2004109a051a200b200420076a22074d0d03200228023c2101200228023821062002280230210a200c21030c000b0b2001200c1044000b200141011037000b024020022802502203200228024c470d00200341016a22012003490d20200341017422042001200420014b1b2204ad421c7e2208422088a70d202008a722064100480d200240024020030d002006102821010c010b20022802482003411c6c2006102c21010b2001450d032002200436024c200220013602480b200228024822012003411c6c6a2204200941087622063b0001200420183602102004201a360204200420093a0000200441036a20064110763a0000200441186a200c360200200441146a201b3602002004410c6a2019360200200441086a201c3602002002200341016a360250200d2005470d000b0b200228023c2002280240462104200229024c2208422088210e02402002280234450d002002280230102a0b20014108762105200ea721032008a7210a2004450d052005410874200141ff01717221012003ad422086200aad842108410d21030c250b200641041037000b417f20031044000b02402019450d0020194104742104201a21010340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102a200528020021030b2003102a0b200141106a2101200441706a22040d000b0b41002106201c450d00201a102a0b2002280248211b024020022802502201450d00201b2001411c6c6a210a201b21090340024020092802042201450d0002402009410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102a200528020021030b2003102a0b200141106a2101200441706a22040d000b0b200941086a280200450d002009280204102a0b2009411c6a21010240200941146a280200450d002009280210102a0b200121092001200a470d000b0b200228024c450d00201b102a0b2006410874200d41ff01717221012007ad220e422086200cad8421082002280234450d012002280230102a0c010b2005410874200141ff017172210d20024103410220041b3a00e88004200241e8006a41146a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a103320022903f88004210820022802808104210b02402003450d00200d2003411c6c6a2106200d21090340024020092802042201450d0002402009410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102a200528020021030b2003102a0b200141106a2101200441706a22040d000b0b200941086a280200450d002009280204102a0b2009411c6a21010240200941146a280200450d002009280210102a0b2001210920012006470d000b0b2008422088210e4105210141002106200a450d00200d102a0b20004101360200200041106a200b360200200041086a200e422086200842ffffffff0f838437020020002006410874200141ff0171723602040c220b200241e8006a200110fb040240024020022802684101470d00200228026c220a4108762104200241e8006a41086a2903002208422088210e200241f8006a280200210d0c010b200241fc006a280200211b200241f8006a2802002101200241f4006a2802002105200241f0006a2802002107200228026c210b410021044100210902400240024002400240024002400240024002400240034002402004411f4d0d00410f210a0c020b0240024020052001460d002001417f460d052005200141016a22034f0d01200141016a2005103c000b200241013a00e88004200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a10334105210a0c020b200b20016a2d0000220641ff00712004411f71742009722109200441076a2104200321012006418001710d000b20044120490d01410d210a20064110490d010b200241306a41086a200241f880046a41086a280200220d360200200220022902f8800422083703302008422088a7210c2008a7211b0c080b2002410036026020024204370358024002400240024020090d00410421010c010b200241f1006a21104100211c0340201c41016a211c410021014100210602400240024002400240024002400240024002400240024002400240034002402001411f4d0d00410f210a0c020b0240024020052003460d002003417f460d062005200341016a22044f0d01200341016a2005103c000b200241013a00f880042002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241f880046a360218200241c8006a200241e8006a10334105210a2002280248211b0c030b200b20036a2d0000220a41ff00712001411f71742006722106200141076a210120042103200a418001710d000b20014120490d02200a4110490d02410d210a0b0b2002280250210d200228024c210c0c160b4100210c200241e8006a4100418080011099051a410121180240024020060d00200421034100211a4100210a0c010b4100210d4100211a41002119034002400240200520046b200620196b220141808001200141808001491b2201490d00200420016a22032004490d05200520034f0d0120032005103c000b200241013a00482002410136028c8104200242013702fc8004200241a4e2c5003602f880042002412636021c2002200241186a36028881042002200241c8006a360218200241e880046a200241f880046a103320022802e88004211b20022802ec8004210c20022802f08004210d4105210a201a450d182018102a0c180b200241e8006a200b20046a2001109a051a02400240201a200d6b2001490d00200d20016a210a0c010b200d20016a220a200d490d31201a4101742204200a2004200a4b1b22044100480d3102400240201a0d002004102821180c010b2018201a2004102c21180b2018450d052004211a0b2018200d6a200241e8006a2001109a051a20032104200a210d2006200120196a22194b0d000b0b2002200a3602402002410036023c2002200a3602382002201aad4220862018ad84370330410021014100210d02400240034002402001411f4d0d00410f210a0c020b02400240200a200c460d00200c417f460d08200a200c41016a22064f0d01200c41016a200a103c000b200241013a00482002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241c8006a360218200241f880046a200241e8006a1033200241206a41086a200241f880046a41086a280200360200200220022903f880043703204105210a0c020b2018200c6a2d000021042002200636023c200441ff00712001411f7174200d72210d200141076a21012006210c2004418001710d000b20014120490d0120044110490d01410d210a0b200241e880046a41086a200241206a41086a280200220d3602002002200229032022083703e880042008a7211b20022802ec8004210c0c150b41002119200241003602f08004200242043703e8800402400240200d0d004104210f41002118410021160c010b410021184104210f410021160340201821172016221d41016a2116410021014100210c024002400240034002402001411f4d0d00410f21040c020b0240024020022802382218200228023c2204460d00200441016a22062004490d0c201820064f0d0120062018103c000b200241013a00f880042002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241f880046a360218200241c8006a200241e8006a1033410521042002280248211b0c030b2002280230221a20046a2d0000210a2002200636023c200a41ff00712001411f7174200c72210c200141076a2101200a418001710d000b20014120490d02200a4110490d02410d21040b0b2002280250210d200228024c210c410021010c0c0b02400240024020182006460d00200441026a21042006417f460d0a20182004490d0c201a20066a2c000021012002200436023c0240200141004e0d00411921040c0f0b41062104200141c00071450d0d200141807f72220141ff017141fb014d0d0d201d2017460d0120172118201d21170c020b200241013a00482002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241c8006a360218200241f880046a200241e8006a103320022802f88004211b20022802fc8004210c20022802808104210d410521040c0d0b201741016a22042017490d31201741017422062004200620044b1b221841ffffffff01712018470d31201841037422044100480d310240024020170d0020041028210f0c010b200f20174103742004102c210f0b200f450d092002200f3602e880040b200f20174103746a2204201341807e712001417f7341ff01717222133a00042004200c3602002016200d470d000b200220183602ec8004200220163602f080040b200f20164103746a210d200f2101200f210602400340200d20066b41184d0d01201920012802006a22042019490d132004200141086a2802006a22062004490d132006200141106a2802006a22042006490d13200141186a210a200141206a220621012004200a2802006a22192004490d130c000b0b0340200d2001460d0b201920012802006a22042019492106200141086a21012004211920060d120c000b0b417f200341016a1044000b200420031044000b200441011037000b417f200c41016a1044000b417f20061044000b417f20041044000b200441041037000b20042018103c000b0b200220173602ec80042002201d3602f08004200141ff0171410874200472210a20170d090c0a0b4101210a410021044108211a410021060340200241e8006a200241306a10ee04024020022802684101470d002002280278210d2002280274210c2002280270211b200228026c210a0c070b200241f880046a41026a2201201041026a2d00003a0000200220102f00003b01f8800420022802742117200229037821080240024002400240024020022d0070220d4106470d00200a417f6a210a0c010b200d417e6a41034f0d00200a41016a220c200a4f2119200c210a20190d004115210c41c4fdc500211b4104210a200d4109460d010c0a0b200241e8006a41026a220c20012d00003a0000200220022f01f880043b016820062004460d01200421190c020b0240201728020441ffffffff0371450d002017280200102a0b2017102a0c080b200441016a22012004490d25200441017422062001200620014b1b221941ffffffff00712019470d25201941047422014100480d250240024020040d0020011028211a0c010b201a20044104742001102c211a0b201a450d0420042106201921040b201a20064104746a2201200d3a00002001200837030820012017360204200120022f01683b0001200141036a200c2d00003a0000200641016a2106200a0d000b200228023c200228024046210102402002280234450d002002280230102a0b0240024002402001450d002002280260220a200228025c470d02200a41016a2201200a490d26200a41017422042001200420014b1b220dad42187e2208422088a70d262008a7220441004e0d010c260b20024103410220011b3a00e880042002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a103320022802f88004211b20022802fc8004210c20022802808104210d02402006450d0020064104742104201a21010340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102a200528020021030b2003102a0b200141106a2101200441706a22040d000b0b02402019450d00201a102a0b4105210a2018450d0c200f102a0c0c0b02400240200a0d002004102821010c010b2002280258200a41186c2004102c21010b2001450d042002200d36025c200220013602580b20022802582201200a41186c6a2204201a36020c20042016360208200420183602042004200f360200200441146a2006360200200441106a20193602002002200a41016a360260201c2009470d000b0b2003201b462104200229025c2208422088210e02402007450d00200b102a0b200ea721032008a721072004450d0a2003ad4220862007ad842108410c21030c290b200141081037000b200441041037000b417f200141016a1044000b02402006450d0020064104742103201a21010340024020012d00004109470d000240200141046a2209280200220528020441ffffffff0371450d002005280200102a200928020021050b2005102a0b200141106a2101200341706a22030d000b0b2004450d01201a102a0c010b20022802808104210d20022802fc8004210c411c210a0b2018450d010b200f102a0b2002280234450d002002280230102a0b20022802582118024020022802602201450d002018200141186c6a21062018210903400240200941046a280200450d002009280200102a0b0240200941146a2802002204450d00200928020c2101200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102a200528020021030b2003102a0b200141106a2101200441706a22040d000b0b200941186a21010240200941106a280200450d00200928020c102a0b2001210920012006470d000b0b200228025c450d002018102a0b200a4108762104200cad220e422086201bad8421082007450d01200b102a0c010b20024103410220041b3a0030200241e8006a41146a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103320022903f88004210820022802808104210d02402003450d002001200341186c6a210b2001210603400240200641046a280200450d002006280200102a0b0240200641146a2802002203450d00200628020c2104200341047421030340024020042d00004109470d000240200441046a2209280200220528020441ffffffff0371450d002005280200102a200928020021050b2005102a0b200441106a2104200341706a22030d000b0b200641186a21040240200641106a280200450d00200628020c102a0b200421062004200b470d000b0b2008422088210e4105210a410021042007450d002001102a0b20004101360200200041106a200d360200200041086a200e422086200842ffffffff0f838437020020002004410874200a41ff0171723602040c210b200241e8006a200110fb040240024020022802684101470d00200228026c22044108762106200241e8006a41086a2903002208422088210e200241f8006a280200210b0c010b2002418881046a200241fc006a2802003602002002418081046a200241f4006a2902003703002002200229026c3703f880044100210141002105024002400240024002400240024002400240034002402001411f4d0d00410f210d0c020b02400240200228028081042209200228028481042204460d00200441016a22032004490d05200920034f0d0120032009103c000b200241013a0058200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1033200241e880046a41086a200241306a41086a280200360200200220022903303703e880044105210d0c020b20022802f8800420046a2d00002104200220033602848104200441ff00712001411f71742005722105200141076a21012004418001710d000b20014120490d01410d210d20044110490d010b200241c8006a41086a200241e880046a41086a280200220b360200200220022903e8800422083703482008422088a721072008a7210c410021060c060b200241003602f08004200242043703e880040240024020050d00410421010c010b4100210b0340200b41016a210b410021014100210902400240024002400240034002402001411f4d0d00410f210d0c030b200228028081042206200228028481042204460d01200441016a22032004490d0920062003490d0c20022802f8800420046a2d00002104200220033602848104200441ff00712001411f71742009722109200141076a21012004418001710d000b20014120490d022004410f4d0d02410d210d0c010b200241013a00582002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1033200241206a41086a200241306a41086a2802003602002002200229033022083703202008a7210c4105210d0b2002280228210b20022802242107410021060c010b200241e8006a200241f880046a10ed04024020022802684101470d00200228026c220d41087621062002280278210b200228027421072002280270210c0c010b2002280274211b20022802702119200228026c2118200241e8006a200241f880046a10ef0420022802684101470d01200228026c210d2002280278210b200228027421072002280270210c0240201b450d00201b4104742104201821010340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102a200528020021030b2003102a0b200141106a2101200441706a22040d000b0b200d41087621062019450d002018102a0b20022802e88004211b024020022802f080042201450d00201b2001411c6c6a210a201b21090340024020092802042201450d0002402009410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102a200528020021030b2003102a0b200141106a2101200441706a22040d000b0b200941086a280200450d002009280204102a0b2009411c6a21010240200941146a280200450d002009280210102a0b200121092001200a470d000b0b20022802ec8004450d08201b102a0c080b4100210a2002280270210c200228026c2107024002402002280274220141027422030d004104210d410021060c010b2003410275220641ffffffff03712006470d1f200641027422044100480d1f20041028220d450d050b02402001450d002003417c6a210a200d210120072104034020012004280200360200200141046a2101200441046a21042003417c6a22030d000b200a41027641016a210a0b0240200c450d002007102a0b024020022802f08004220320022802ec8004470d00200341016a22012003490d1f200341017422042001200420014b1b2204ad421c7e2208422088a70d1f2008a722074100480d1f0240024020030d002007102821010c010b20022802e880042003411c6c2007102c21010b2001450d06200220043602ec8004200220013602e880040b20022802e8800422012003411c6c6a2204200941087622073b00012004200d36021020042018360204200420093a0000200441036a20074110763a0000200441186a200a360200200441146a20063602002004410c6a201b360200200441086a20193602002002200341016a3602f08004200b2005470d000b0b200228028481042002280288810446210420022902ec80042208422088210e024020022802fc8004450d0020022802f88004102a0b200ea721032008a7210d2004450d062003ad422086200dad842108410a21030c240b417f20031044000b417f20031044000b200441041037000b200741041037000b20032006103c000b2006410874200d41ff01717221042007ad220e422086200cad84210820022802fc8004450d0120022802f88004102a0c010b20024103410220041b3a00e88004200241e8006a41146a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a1033200229033021082002280238210b02402003450d0020012003411c6c6a210a200121060340024020062802042204450d0002402006410c6a2802002203450d00200341047421030340024020042d00004109470d000240200441046a2209280200220528020441ffffffff0371450d002005280200102a200928020021050b2005102a0b200441106a2104200341706a22030d000b0b200641086a280200450d002006280204102a0b2006411c6a21040240200641146a280200450d002006280210102a0b200421062004200a470d000b0b2008422088210e4105210441002106200d450d002001102a0b20004101360200200041106a200b360200200041086a200e422086200842ffffffff0f838437020020002006410874200441ff0171723602040c200b200d20064621040240200a450d00200b102a0b02402004450d00410921030c1c0b20024103410220041b3a00e88004200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a10332002418381046a200241386a280200360000200220022903303700fb8004200041053a0004200020022900f880043700052000410c6a200241ff80046a290000370000200041013602000c1f0b200241013a0030200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a1033410521040b2000200436020420004101360200200041086a20022902f88004370200200041106a200241f880046a41086a280200360200200a450d1d200b102a0c1d0b200241e8006a200110fb040240024020022802684101470d00200228026c22034108762104200241e8006a41086a2903002208422088210e200241f8006a28020021090c010b2002418881046a200241fc006a2802003602002002418081046a200241f4006a2902003703002002200229026c3703f880044100210141002105024002400240024002400240024002400240024002400240024002400240024002400240034002402001411f4d0d00410f21030c020b02400240200228028081042209200228028481042204460d00200441016a22032004490d05200920034f0d0120032009103c000b200241013a0058200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1033200241206a41086a200241306a41086a28020036020020022002290330370320410521030c020b20022802f8800420046a2d00002104200220033602848104200441ff00712001411f71742005722105200141076a21012004418001710d000b20014120490d01410d210320044110490d010b200241e880046a41086a200241206a41086a28020022093602002002200229032022083703e880042008422088a721062008a7210b0c100b20024100360260200242043703584104210102402005450d004100211b4100210c4100211a0340200241e8006a200241f880046a10fc04024020022802684101470d002002200229027422083703e880042002280270210b200228026c21032008a721060c100b20022802702118200228026c211902400240200228028081042203200228028481042209460d00200941016a22042009490d05200320044f0d0120042003103c000b200241013a00482002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241c8006a360218200241306a200241e8006a10330c0d0b2002280274211c20022802f88004220620096a2d000021072002200436028481040240200741034d0d00410a21040c0f0b0240024002400240024020070e0400010203000b410021074100210b4100210903400240200b411f4d0d00410f21040c140b20032004460d122004417f460d092003200441016a220d490d0e200620046a2d0000210a2002200d3602848104200a41ff0071200b411f71742009722109200b41076a210b200d2104200a418001710d000b41002107200b4120490d03200a410f4d0d03410d21040c120b4100210b410021090340200b411f4b0d0f0240024020032004460d002004417f460d0b2003200441016a220d4f0d01200441016a2003103c000b200241013a00482002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241c8006a360218200241306a200241e8006a10330c110b200620046a2d0000210a2002200d3602848104200a41ff0071200b411f71742009722109200b41076a210b200d2104200a418001710d000b41012107200b4120490d02200a410f4d0d020c0d0b4100210b410021090340200b411f4b0d0e0240024020032004460d002004417f460d0b2003200441016a220d4f0d01200441016a2003103c000b200241013a00482002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241c8006a360218200241306a200241e8006a10330c100b200620046a2d0000210a2002200d3602848104200a41ff0071200b411f71742009722109200b41076a210b200d2104200a418001710d000b41022107200b4120490d01200a410f4b0d0c0c010b4100210b410021090340200b411f4b0d0d0240024020032004460d002004417f460d0b2003200441016a220d4f0d01200441016a2003103c000b200241013a00482002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241c8006a360218200241306a200241e8006a10330c0f0b200620046a2d0000210a2002200d3602848104200a41ff0071200b411f71742009722109200b41076a210b200d2104200a418001710d000b41032107200b4120490d00200a410f4b0d0b0b200220093602f08004200220073602ec800420022902ec8004210802400240200c201b460d00201b21030c010b201b41016a2204201b490d24201b41017422032004200320044b1b2203ad42147e220e422088a70d24200ea722044100480d2402400240201b0d002004102821010c010b2001201b41146c2004102c21010b2001450d0920022001360258201b210c2003211b0b2001200c41146c6a2204200837020c2004201c3602082004201836020420042019360200200c41016a210c201a41016a221a2005470d000b2002200336025c2002200c3602600b2002280284810420022802888104462104200229025c2208422088210e024020022802fc8004450d0020022802f88004102a0b200ea721032008a721052004450d0e2003ad4220862005ad842108410821030c290b417f20031044000b417f20041044000b417f200441016a1044000b417f200441016a1044000b417f200441016a1044000b417f200441016a1044000b200441041037000b200441016a2003103c000b410d2104410021070c030b410f2104410021070c020b2002280230210b2002290234210841052104410021070c010b200241013a00482002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241c8006a360218200241306a200241e8006a10332002280230210b20022902342108410521040b20074108742004722103200220083703e880042008a721062018450d002019102a0b2002200c3602602002201b36025c20022802ec800421090240200c450d00200c41146c21052001210403400240200441046a280200450d002004280200102a0b200441146a21042005416c6a22050d000b0b201b450d012001102a0c010b20024103410220041b3a00e88004200241e8006a41146a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a1033200229033021082002280238210902402003450d00200341146c21032001210403400240200441046a280200450d002004280200102a0b200441146a21042003416c6a22030d000b0b2008422088210e41052103410021042005450d012001102a0c010b200341087621042006ad220e422086200bad84210820022802fc8004450d0020022802f88004102a0b20004101360200200041106a2009360200200041086a200e422086200842ffffffff0f838437020020002004410874200341ff0171723602040c1c0b200241e8006a200110fb040240024020022802684101470d00200228026c220b4108762104200241e8006a41086a2903002208422088210e200241f8006a28020021060c010b200241c0006a200241fc006a280200360200200241386a200241f4006a2902003703002002200229026c37033041002101410021090240024002400240024002400240024002400240024002400240034002402001411f4d0d00410f210b0c020b0240024020022802382205200228023c2204460d00200441016a22032004490d05200520034f0d0120032005103c000b200241013a0058200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241f880046a200241e8006a1033200241206a41086a200241f880046a41086a280200360200200220022903f880043703204105210b0c020b2002280230220620046a2d000021042002200336023c200441ff00712001411f71742009722109200141076a21012004418001710d000b20014120490d01410d210b20044110490d010b200241e880046a41086a200241206a41086a28020022063602002002200229032022083703e880042008422088a721072008a7210d0c0b0b20024100360260200242043703580240024020090d00410421010c010b2009417f6a211b4104210141042110410421094104211c4104211a4100210a4100210c03400240024020052003460d00200341016a220b2003490d052005200b4f0d01200b2005103c000b2002200a36025c2002200c360260200241013a0048200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241c8006a360218200241e880046a200241e8006a103320022802e88004210d20022802ec8004210720022802f080042106410521010c090b200620036a2c000021042002200b36023c20044100480d0402400240200441c00071450d00200441807f72220441ff017141fb014b0d010b2002200a36025c2002200c360260410621010c080b024002400240024002402005200b460d00200341026a210d200b417f460d0a2005200d4f0d01200d2005103c000b2002200a36025c2002200c360260200241013a0048200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241c8006a360218200241e880046a200241e8006a103320022802e88004210d20022802ec8004210720022802f080042106410521010c010b2006200b6a2d000021032002200d36023c0240200341014b0d004100210520030e020302030b2002200a36025c2002200c360260410c21010b2002418881046a20063602002002418481046a20073602002002418081046a200d360200200220033a00fd8004200220013a00fc80040c0b0b41800221050b200241e8006a200241306a10ed04200228027421072002280270210d200228026c210b024020022802684101470d002002200a36025c2002200c360260200241f8006a28020021060c0b0b02400240200c200a460d00200a2118200c210a0c010b200a41016a2201200a490d1e200a41017422032001200320014b1b221841ffffffff00712018470d1e201841047422034100480d1e02400240200a0d002003102821010c010b201c200a4104742003102c21010b2001450d072002200136025820012110200121092001211c2001211a0b201a200a4104746a220320194180807c712004417f7341ff017172200572221936020c200320073602082003200d3602042003200b360200200a41016a210c0240201b450d00201b417f6a211b200228023c210320022802382105200228023021062018210a0c010b0b2002201836025c2002200c3602600b200228023c2002280240462104200229025c2208422088210e02402002280234450d002002280230102a0b200ea721032008a7210d2004450d092003ad422086200dad842108410721030c230b417f20031044000b417f200b1044000b2002200a36025c2002200c360260411921010c020b417f200d1044000b200341041037000b0b2002418881046a20063602002002418481046a20073602002002418081046a200d360200200220043a00fd8004200220013a00fc80040b200241013a00f8800420022802fc8004210b0b0240200c450d002009200c4104746a210c0340024020092802082204450d0020092802002101200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d002003280200102a200528020021030b2003102a0b200141106a2101200441706a22040d000b0b200941106a21010240200941046a280200450d002009280200102a0b200121092001200c470d000b0b200a450d012010102a0c010b20024103410220041b3a00e88004200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a103320022903f88004210820022802808104210602402003450d00200120034104746a210a2001210b03400240200b2802082203450d00200b2802002104200341047421030340024020042d00004109470d000240200441046a2209280200220528020441ffffffff0371450d002005280200102a200928020021050b2005102a0b200441106a2104200341706a22030d000b0b200b41106a21040240200b41046a280200450d00200b280200102a0b2004210b2004200a470d000b0b2008422088210e4105210b41002104200d450d012001102a0c010b200b41087621042007ad220e422086200dad8421082002280234450d002002280230102a0b20004101360200200041106a2006360200200041086a200e422086200842ffffffff0f838437020020002004410874200b41ff0171723602040c1b0b200241e8006a200110fb040240024020022802684101470d00200228026c22034108762105200241e8006a41086a2903002208422088210e200241f8006a28020021040c010b2002418881046a200241fc006a2802003602002002418081046a200241f4006a29020022083703002002200229026c220e3703f88004200ea7210b2008a7210541002104200228028481042101410021030240024002400240024002400240024003402004411f4b0d010240024020052001460d002001417f460d072005200141016a22094f0d01200141016a2005103c000b200220053602848104200241013a0058200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1033200241206a41086a200241306a41086a280200360200200220022903303703204105210b0c030b200b20016a2d0000220641ff00712004411f71742003722103200441076a2104200921012006418001710d000b200220093602848104024020044120490d00410d210b2006410f4b0d020b200241003602382002420437033020030d02410421010c030b200220013602848104410f210b0b200241e880046a41086a200241206a41086a28020022043602002002200229032022083703e880042008422088a7210a2008a7210d410021090c040b4104210141002105410021060340200241e8006a200241f880046a10f30420022f006d20022d006f4110747221092002280274210a2002280270210d20022d006c210b024020022802684101470d002002200536023420022006360238200241f8006a28020021042005450d052001102a0c050b0240024020062005460d0020052107200621040c010b200541016a22042005490d16200541017422072004200720044b1b2207ad420c7e2208422088a70d162008a722044100480d160240024020050d002004102821010c010b20012005410c6c2004102c21010b2001450d042002200136023020052104200721050b20012004410c6c6a220420093b00012004200d3602042004200b3a0000200441036a20094110763a0000200441086a200a3602002003200641016a2206470d000b20022007360234200220063602380b200228028481042002280288810446210420022902342108024020022802fc8004450d0020022802f88004102a0b2008a721092004450d032008422088a7ad4220862009ad842108410621030c1b0b417f200141016a1044000b200441041037000b200941ffffff07712205410874200b41ff0171722103200aad220e422086200dad84210820022802fc8004450d0120022802f88004102a0c010b20024103410220041b3a00e88004200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a103320022903302208422088210e2002280238210441052103410021052009450d002001102a0b20004101360200200041106a2004360200200041086a200e422086200842ffffffff0f838437020020002005410874200341ff0171723602040c1a0b200241e8006a200110fb040240024020022802684101470d00200228026c22034108762105200241e8006a41086a2903002208422088210e200241f8006a28020021040c010b2002418881046a200241fc006a2802003602002002418081046a200241f4006a29020022083703002002200229026c220e3703f88004200ea7210b2008a721034100210420022802848104210141002109024002400240024002400240024002400240024003402004411f4b0d010240024020032001460d002001417f460d072003200141016a22054f0d01200141016a2003103c000b200220033602848104200241013a0058200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1033200241206a41086a200241306a41086a280200360200200220022903303703204105210a0c030b200b20016a2d0000220641ff00712004411f71742009722109200441076a2104200521012006418001710d000b200220053602848104024020044120490d00410d210a2006410f4b0d020b41002107200241003602f08004200242043703e8800420090d02410421014100210d0c030b200220013602848104410f210a0b200241e880046a41086a200241206a41086a28020022043602002002200229032022083703e880042008a7210b4100210320022802ec8004210d0c060b4104210141012107410021060340024002400240024020032005460d00200541016a22042005490d0720032004490d09200b20056a2c000021032002200436028481040240200341004e0d004119210a0c020b4107210a0240200341c000710d000c020b200341807f7222034170470d02200241e8006a200241f880046a10f30420022f006d20022d006f41107472210320022d006c210a20022802684101470d0320034180feff07714108762105200228027821042002280274210d2002280270210b0c020b200241013a00582002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a10332002280230210b2002280234210d200228023821044105210a0b0b200220063602ec800420022007417f6a3602f080042005410874200341ff01717221032006450d072001102a0c070b200228027421052002280270210b024002402007417f6a22042006460d002006210d200421060c010b200641016a22042006490d172006410174220d2004200d20044b1b220dad420c7e2208422088a70d172008a722044100480d170240024020060d002004102821010c010b20012006410c6c2004102c21010b2001450d05200220013602e880040b20012006410c6c6a220420033b0001200420053602082004200b3602042004200a3a0000200441036a20034110763a0000024020092007460d00200741016a210720022802848104210520022802808104210320022802f88004210b200d21060c010b0b2002200d3602ec8004200220073602f080040b2002280284810420022802888104462104024020022802fc8004450d0020022802f88004102a0b2004450d052007ad422086200dad842108410521030c1c0b417f200141016a1044000b417f20041044000b200441041037000b20042003103c000b200341ffffff07712205410874200a41ff0171722103200dad220e422086200bad84210820022802fc8004450d0120022802f88004102a0c010b20024103410220041b3a00e88004200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a103320022903302208422088210e200228023821044105210341002105200d450d002001102a0b20004101360200200041106a2004360200200041086a200e422086200842ffffffff0f838437020020002005410874200341ff0171723602040c190b200241e8006a200110fb040240024020022802684101470d00200228026c22044108762105200241e8006a41086a2903002208422088210e200241f8006a28020021030c010b200241fc006a280200210c200241f8006a2802002101200241f4006a2802002103200241f0006a2802002107200228026c210b41002104410021090240024002400240024002400240024002400240034002402004411f4d0d00410f21040c020b0240024020032001460d002001417f460d052003200141016a22054f0d01200141016a2003103c000b200241013a0030200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a1033200241206a41086a200241f880046a41086a280200360200200220022903f88004370320410521040c020b200b20016a2d0000220641ff00712004411f71742009722109200441076a2104200521012006418001710d000b20044120490d01410d210420064110490d010b200241e880046a41086a200241206a41086a28020022033602002002200229032022083703e880042008a7210520022802ec800421090c070b4100211b20024100360238200242043703300240024020090d0041042101410021060c010b41042101410021064100211b034020062118201b221941016a211b20052104410021064100210a03402006411f4b0d050240024020032004460d002004417f460d062003200441016a22054f0d01200441016a2003103c000b2002201836023420022019360238200241013a00e88004200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241f880046a200241e8006a103320022802f88004210520022802fc80042109200228028081042103410521040c090b200b20046a2d0000220d41ff00712006411f7174200a72210a200641076a210620052104200d418001710d000b024020064120490d00200d410f4d0d002002201836023420022019360238410d21040c070b0240024020192018460d0020182106201921180c010b201841016a22042018490d18201841017422062004200620044b1b220641ffffffff03712006470d18200641027422044100480d180240024020180d002004102821010c010b200120184102742004102c21010b2001450d06200220013602300b200120184102746a200a360200201b2009470d000b200220063602342002201b3602380b2005200c46210402402007450d00200b102a0b2004450d07201bad4220862006ad842108410421030c1d0b417f200141016a1044000b417f200441016a1044000b2002201836023420022019360238410f21040c010b200441041037000b0b2018450d002001102a0b2009ad220e4220862005ad842108410021052007450d01200b102a0c010b20024103410220041b3a0030200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103320022903f880042208422088210e20022802808104210341052104410021052006450d002001102a0b20004101360200200041106a2003360200200041086a200e422086200842ffffffff0f838437020020002005410874200441ff0171723602040c180b200241e8006a200110fb040240024020022802684101470d00200228026c22034108762105200241e8006a41086a2903002208422088210e200241f8006a28020021040c010b2002418881046a200241fc006a2802003602002002418081046a200241f4006a2902003703002002200229026c3703f8800441002101410021050240024002400240024002400240024002400240034002402001411f4d0d00410f21030c020b02400240200228028081042209200228028481042204460d00200441016a22032004490d05200920034f0d0120032009103c000b200241013a0058200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1033200241206a41086a200241306a41086a28020036020020022002290330370320410521030c020b20022802f8800420046a2d00002104200220033602848104200441ff00712001411f71742005722105200141076a21012004418001710d000b20014120490d01410d210320044110490d010b200241e880046a41086a200241206a41086a28020022043602002002200229032022083703e880042008422088a721092008a721060c080b200241003602f08004200242043703e8800402400240024020050d00410421010c010b20022802ec8004210720022802f08004210d410021100340200241e8006a200241f880046a10fc042002280274210920022802702118200228026c211a024020022802684101470d002002280278210420182106201a21030c090b200241e8006a200241f880046a10fc042002280274211320022802702119200228026c211c024020022802684101470d00200228027821042019210620132109201c21030c080b0240024002400240024002400240024002400240024002400240024002400240200228028081042203200228028481042206460d00200641016a22012006490d02200320014f0d0120012003103c000b200241013a00582002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1033200228023021062002290234210e4105210a4100211b410021030c150b20022802f88004220c20066a2d000021042002200136028481044100211b0240200441034d0d004109210a410021030c150b024002400240024020040e0400010203000b4100211b410021044100210a034002402004411f4d0d00410f210a0c170b0240024020032001460d002001417f460d072003200141016a220b4f0d01200141016a2003103c000b200241013a00582002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1033200228023021062002290234210e4105210a4100211b0c180b200c20016a2d000021062002200b3602848104200641ff00712004411f7174200a72210a200441076a2104200b21012006418001710d000b4100211b20044120490d0f2006410f4d0d0f410d210a0c150b0240024020032001460d00200641026a21042001417f460d0620032004490d07200c20016a2c0000210120022004360284810402402001417f4a0d00411921030c0e0b200141c000710d010c0c0b200241013a00582002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a10332002290330210820022802382104410521030c0c0b200141807f7222014170470d0a200241e8006a200241f880046a10f30420022903702108200228026c210a024020022802684101470d00200228027821040c0d0b4101211b0c0f0b200241e8006a200241f880046a10f30420022903702108200228026c210a024020022802684101460d004102211b0c0f0b20022002280278360270200a418080807871211b200a4180807c712103200a41087621040c0c0b0240024020032001460d00200641026a210b2001417f460d062003200b490d08200c20016a2c000021042002200b36028481040240200441004e0d004119210a410021030c170b200441c000710d010c090b200241013a00582002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a10334105210a2002290234210e20022802302106410021030c150b200441807f72220441ff017141fc01490d07024002402003200b460d00200641036a2101200b417f460d07200320014f0d0120012003103c000b200241013a00582002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241d8006a360218200241306a200241e8006a1033200228023021062002290234210e4105210a410021030c150b200c200b6a2d0000210b200220013602848104410021030240200b41014d0d00410c210a4100211b200b21040c150b2004417f7321064103211b0240200b0e020e000e0b410121030c0d0b417f20011044000b417f200141016a1044000b417f20041044000b20042003103c000b417f200b1044000b417f20011044000b200b2003103c000b4106210a410021030c0c0b410721030b200141ff0171410874200372210a0b20022004360270200a418080807871211b200a4180807c712103200a41087621040b20022008370368200229026c210e2008a721060c080b0b02400240200d2007460d002007210b0c010b200741016a22012007490d18200741017422042001200420014b1b220bad42287e220e422088a70d18200ea722044100480d180240024020070d002004102821010c010b20022802e88004200741286c2004102c21010b2001450d03200220013602e880042007210d200b21070b20022802e880042201200d41286c6a2204201c36020c20042009360208200420183602042004201a360200200441206a20083702002004411c6a200a3602002004411a6a20033a0000200441196a20063a0000200441186a201b3a0000200441146a2013360200200441106a2019360200200d41016a210d201041016a22102005470d000b2002200b3602ec80042002200d3602f080040b200228028481042002280288810446210420022902ec80042208422088210e024020022802fc8004450d0020022802f88004102a0b200ea721032008a721092004450d072003ad4220862009ad842108410321030c1d0b200441041037000b417f20031044000b0b41002103410021040b200a41ff0171200441ff0171410874722003418080fc077172201b722103200e422088a72104200ea721092019450d00201c102a0b2018450d00201a102a0b200220073602ec80042002200d3602f0800420022802e88004210b0240200d450d00200d41286c2105200b210103400240200141046a280200450d002001280200102a0b0240200141106a280200450d002001410c6a280200102a0b200141286a2101200541586a22050d000b0b2007450d01200b102a0c010b20024103410220041b3a00e88004200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241e880046a360218200241306a200241e8006a1033200229033021082002280238210402402003450d00200341286c21052001210303400240200341046a280200450d002003280200102a0b0240200341106a280200450d002003410c6a280200102a0b200341286a2103200541586a22050d000b0b2008422088210e41052103410021052009450d012001102a0c010b200341087621052009ad220e4220862006ad84210820022802fc8004450d0020022802f88004102a0b20004101360200200041106a2004360200200041086a200e422086200842ffffffff0f838437020020002005410874200341ff0171723602040c170b200241013a00302002410136027c2002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103320022802f88004210620022802fc8004210920022d00808104210320022d00818104210720022f01828104210d410521050b0b201d450d03200c102a0c030b0b2019450d00201c102a0b2003411076210d200341087621070b200741ff0171410874200341ff0171722103200d411074210d200441ff0171410874210702402017450d002001210403400240200441046a280200450d002004280200102a0b200441106a2104200a41706a220a0d000b0b2003200d722103200720057221042014450d012001102a0c010b20024103410220041b3a0030200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241306a360218200241f880046a200241e8006a103320022903f88004210820022802808104210302402005450d00200541047421052001210403400240200441046a280200450d002004280200102a0b200441106a2104200541706a22050d000b0b2008422088210e41052104410021052009450d012001102a0c010b200441087621052009ad220e4220862006ad8421082010450d00200b102a0b20004101360200200041106a2003360200200041086a200e422086200842ffffffff0f838437020020002005410874200441ff0171723602040c0d0b41002101410021040240024002400340024020094105470d00410f21070c020b0240024020032009460d00200320094b0d01200941016a2003103c000b200241013a00f88004200241fc006a41013602002002420137026c200241a4e2c5003602682002412636021c2002200241186a3602782002200241f880046a360218200241206a200241e8006a103341052107200229032021080c030b200620096a2d0000220541ff00712001411f71742004722104200141076a2101200941016a220b21092005418001710d000b20014120490d0220054110490d02410d21070b0b2008422088a72109200228022821042008a7210d0c050b024020040d00410021054101211b410021094100210d0c080b200241e8006a41004180081099051a410021054100210d4101211b410021070340024002402003200b6b200420076b22014180082001418008491b2201490d00200b20016a220c200b490d042003200c4f0d01200c2003103c000b200241013a00e880042002418c81046a4101360200200242013702fc8004200241a4e2c5003602f880042002412636021c2002200241186a36028881042002200241e880046a360218200241306a200241f880046a103320022903302208422088a72109200228023821042008a72101410521070240200d450d00201b102a0b2001210d0c060b200241e8006a2006200b6a2001109a051a02400240200d20056b2001490d00200520016a21090c010b200520016a22092005490d02200d410174220b2009200b20094b1b220b4100480d0202400240200d0d00200b1028211b0c010b201b200d200b102c211b0b201b450d04200b210d0b201b20056a200241e8006a2001109a051a20092105200c210b2004200120076a22074d0d040c000b0b1031000b200b200c1044000b200b41011037000b200241e8006a201b2009105420022802684101470d02410821070240200d450d00201b102a0b0b2009ad422086200dad84210841002101200a450d002006102a0b20004101360200200041106a2004360200200041086a200837020020002001410874200741ff0171723602040c060b201b4108762105200c210b0b2003200b490d012003200b6b2201417f4c0d020240024020010d00410121040c010b200110282204450d040b2009ad4220862108200dad210e20042006200b6a2001109a051a2001ad222042208621210240200a450d002006102a0b2008200e8421082021202084210e2005410874201b41ff0171722101410121030b200020033a000420004100360200200041056a20022f00153b0000200041186a200e370200200041146a20043602002000410c6a2008370200200041086a2001360200200041206a2002290200370200200041076a200241176a2d00003a0000200041286a200241086a290200370200200041306a200241106a2802003602000c030b200b20031044000b1036000b200141011037000b2002419081046a24000bf304010b7f230041c080016b220224002002200110f404410121030240024020022802004101470d0020002002290204370204200041013602002000410c6a2002410c6a2902003702000c010b2002280204210420024100418080011099052105410021064100210702400240024002402004450d00410021084100210641012103410021090340024002402001280204220a200128020822076b200420096b220b41808001200b41808001491b220b490d002007200b6a220c2007490d04200a200c4f0d01200c200a103c000b200541013a008f8001200541b480016a4101360200200542013702a48001200541a4e2c5003602a08001200541263602bc80012005200541b880016a3602b0800120052005418f80016a3602b880012005419080016a200541a080016a10332005418b80016a2005419880016a2802003600002005200529039080013700838001200041053a00042000200529008080013700052000410c6a2005418780016a290000370000200041013602002006450d062003102a0c060b2005200128020020076a200b109a05210a2001200c36020802400240200620086b200b490d002008200b6a21070c010b2008200b6a22072008490d052006410174220c2007200c20074b1b220c4100480d050240024020060d00200c102821030c010b20032006200c102c21030b2003450d04200c21060b200320086a200a200b109a051a200721082004200b20096a22094b0d000b0b2000200336020420004100360200200041146a2007360200200041106a41003602002000410c6a2007360200200041086a20063602000c030b2007200c1044000b200c41011037000b1031000b200241c080016a24000b8607010b7f230041d0086b22022400410021034100210402400240024002400240024002400240034002402003411f4d0d00410f21030c020b0240024020012802082205200128020c2206460d00200641016a22072006490d05200520074f0d0120072005103c000b200241013a0089082002411c6a41013602002002420137020c200241a4e2c5003602082002412636029c08200220024198086a360218200220024189086a36029808200241b8086a200241086a1033410521030c020b2001280200220820066a2d000021062001200736020c200641ff00712003411f71742004722104200341076a21032006418001710d000b20034120490d01410d210320064110490d010b2000200336020420004101360200200041086a20022902b808370200200041106a200241b8086a41086a2802003602000c060b024020040d002000428080808010370200200041086a42003702000c060b200241086a41004180081099051a41002106410021094101210a4100210b034002400240200520076b2004200b6b22034180082003418008491b2203490d00200720036a220c2007490d042005200c4f0d01200c2005103c000b200241013a00a708200241cc086a4101360200200242013702bc08200241a4e2c5003602b8082002412636029c08200220024198086a3602c8082002200241a7086a36029808200241a8086a200241b8086a103320024194086a200241b0086a280200360000200220022903a80837008c08200041053a000420002002290089083700052000410c6a20024190086a290000370000200041013602002009450d07200a102a0c070b200241086a200820076a2003109a051a2001200c36020c02400240200920066b2003490d00200620036a210c0c010b200620036a220c2006490d0520094101742207200c2007200c4b1b22074100480d050240024020090d0020071028210a0c010b200a20092007102c210a0b200a450d04200721090b200a20066a200241086a2003109a051a20042003200b6a220b4d0d05200128020c21072001280208210520012802002108200c21060c000b0b417f20071044000b2007200c1044000b200741011037000b1031000b200241086a200a200c1054024020022802084101470d0002402009450d00200a102a0b200041083a0004200041013602000c010b2000200a3602042000410c6a200c360200200041086a2009360200200041003602000b200241d0086a24000b881f03127f017e037f23004180026b220524000240024020014115490d00410121064101210702400240034020012108200021092006200771410173210a024002400240034002400240024002402004450d00024020064101710d002000200110fe042004417f6a21040b2001410276220741036c210b2007410174210c4100210d20014132490d03200741016a210e200020074103746a220f28020020002007417f6a220d4103746a2210280200201041046a2802002210200f41046a280200220f200f20104b1b109c052211450d01417f410120114100481b21100c020b2000200110ff040c0b0b417f200f201047200f2010491b21100b2007200d2010417f4622101b210f024002402000200e4103746a22112802002000200d200720101b22124103746a2207280200200741046a2802002207201141046a280200220d200d20074b1b109c052211450d00417f410120114100481b21070c010b417f200d200747200d2007491b21070b4102410120101b20102007417f4622071b210d024002402000200e201220071b22114103746a22102802002000200f4103746a2207280200200741046a2802002207201041046a2802002210201020074b1b109c05220e450d00417f4101200e4100481b21100c010b417f201020074720102007491b21100b200c4101722107200d2010417f4622126a2113024002402000200c4103746a220d2802002000200c417f6a22104103746a220e280200200e41046a280200220e200d41046a280200220d200d200e4b1b109c052214450d00417f410120144100481b210e0c010b417f200d200e47200d200e491b210e0b200c2010200e417f46220e1b210d2013200e6a211302400240200020074103746a221428020020002010200c200e1b220e4103746a220c280200200c41046a280200220c201441046a28020022102010200c4b1b109c052214450d00417f410120144100481b210c0c010b417f2010200c472010200c491b210c0b2013200c417f46220c6a21100240024020002007200e200c1b22134103746a220c2802002000200d4103746a2207280200200741046a2802002207200c41046a280200220c200c20074b1b109c05220e450d00417f4101200e4100481b210c0c010b417f200c200747200c2007491b210c0b200b41016a21072010200c417f4622146a2115024002402000200b4103746a220e2802002000200b417f6a220c4103746a2210280200201041046a2802002210200e41046a280200220e200e20104b1b109c052216450d00417f410120164100481b21100c010b417f200e201047200e2010491b21100b200b200c2010417f4622101b210e201520106a211502400240200020074103746a22162802002000200c200b20101b22104103746a220c280200200c41046a280200220c201641046a280200220b200b200c4b1b109c052216450d00417f410120164100481b210c0c010b417f200b200c47200b200c491b210c0b2015200c417f46220c6a211502400240200020072010200c1b220b4103746a220c2802002000200e4103746a2207280200200741046a2802002207200c41046a280200220c200c20074b1b109c052210450d00417f410120104100481b21100c010b417f200c200747200c2007491b21100b200f201120121b2107200d201320141b210c200e200b2010417f4622101b210b201520106a210d0b024002402000200c4103746a220e280200200020074103746a2210280200201041046a2802002210200e41046a280200220e200e20104b1b109c05220f450d00417f4101200f4100481b21100c010b417f200e201047200e2010491b21100b200c20072010417f46220e1b2110200d200e6a210d024002402000200b4103746a220f28020020002007200c200e1b220e4103746a2207280200200741046a2802002207200f41046a280200220c200c20074b1b109c05220f450d00417f4101200f4100481b21070c010b417f200c200747200c2007491b21070b200d2007417f46220c6a2107024002400240024002402000200b200e200c1b220d4103746a220b280200200020104103746a220c280200200c41046a280200220c200b41046a280200220b200b200c4b1b109c05220e450d00200e4100480d010c020b200b200c4f0d010b200741016a2207410c490d0102402001410176220b450d00200020014103746a41786a21072000210c0340200c2902002117200c200729020037020020072017370200200c41086a210c200741786a2107200b417f6a220b0d000b0b20012010417f736a2110410121070c020b200d21100b20074521070b0240200745200a724101710d00200020011080050d090b2003450d010240201020014f0d00024002402003280200200020104103746a2207280200200741046a280200220c200341046a280200220b200b200c4b1b109c05220e450d00200e41004e0d010c050b200b200c490d040b200029020021172000200729020037020020072017370200200041786a21122000410c6a2113200041086a2114200028020421072000280200210d4100210b2001210e0340024002400240200b200e417f6a22114f0d002013200b4103746a210c034002400240200d200c417c6a280200200c28020022102007200720104b1b109c05220f450d00200f4100480d030c010b20072010490d020b200c41086a210c2011200b41016a220b470d000c020b0b0240200b20114f0d002012200e4103746a210c2011210e034002400240200d200c280200200c41046a28020022102007200720104b1b109c05220f450d00200f4100480d010c050b200720104f0d040b200c41786a210c200b200e417f6a220e490d000b0b200b21110b200020073602042000200d36020002402001201141016a2207490d00200020074103746a2100200120076b220141154f0d040c0b0b200720011044000b2014200b4103746a221029020021172010200c290200370200200c2017370200200b41016a210b0c000b0b0b41f483c600201020011034000b20080d0141bc83c600410041001034000b20002109200121080b201020084f0d02200929020021172009200920104103746a2207290200370200200720173702002009280204210c2009280200211241002100410021184100211902402008417f6a220e450d002009410c6a21074100211803400240024002402007417c6a2802002012200c2007280200220b200b200c4b1b109c052210450d00201041004e0d010c020b200b200c490d010b200e21190240200e20184d0d00200920084103746a41786a2107200e211903400240024020072802002012200c200741046a280200220b200b200c4b1b109c052210450d00201041004e0d010c030b200b200c490d020b200741786a21072019417f6a221920184b0d000b0b0240024020192018490d00200e2019490d010c040b201820191044000b2019200e103c000b200741086a2107200e201841016a2218470d000b200e2118200e21190b200941086a220720194103746a210e41800121144100211141002110410021014180012106200720184103746a221a210d03400240200e200d6b22074187104b220a0d002007410376220741807f6a200720112000492001201049220b72220f1b21070240200f450d0020062007200b1b210620072014200b1b21140c010b2007200741017622066b21140b024020012010470d00024020060d002005221021010c010b4100210720052110200d210b0340201020073a0000200741016a210702400240200b2802002012200c200b41046a280200220f200f200c4b1b109c052201450d00417f410120014100481b210f0c010b417f200f200c47200f200c491b210f0b200b41086a210b2010200f417f476a211020062007470d000b200521010b024020112000470d00024020140d0020054180016a220021110c010b200e41786a21074100210b20054180016a210003402000200b3a0000200b41016a210b0240024020072802002012200c200741046a280200220f200f200c4b1b109c052211450d00417f410120114100481b210f0c010b417f200f200c47200f200c491b210f0b200741786a21072000200f417f466a21002014200b470d000b20054180016a21110b0240200020116b2207201020016b220b200b20074b1b2213450d00200d20012d00004103746a22072802042115200728020021162007200e20112d0000417f734103746a290200370200024020134101460d00410021070340200e201120076a220b2d0000417f734103746a200d200120076a41016a220f2d00004103746a290200370200200d200f2d00004103746a200e200b41016a2d0000417f734103746a290200370200200741026a210b200741016a220f2107200b2013490d000b2011200f6a21112001200f6a21010b200e20112d0000417f734103746a2207201536020420072016360200201141016a2111200141016a21010b200e20144103746b200e20112000461b210e200d20064103746a200d20012010461b210d200a0d000b02400240200120104f0d00200e21070340200d2010417f6a22102d00004103746a220b2902002117200b200741786a22072902003702002007201737020020012010490d000c020b0b200d2107201120004f0d000340200729020021172007200e2000417f6a22002d0000417f734103746a220b290200370200200b2017370200200741086a210720112000490d000b0b2009200c36020420092012360200024020082007201a6b41037620186a22014d0d00200929020021172009200920014103746a220729020037020020072017370200200820016b220c450d02200c20012001200c4b1b210b20084103762110200741086a2100024002402001200c417f6a220c490d002000200c20022007200410fd04200921000c010b2009200120022003200410fd0420072103200c21010b200b20104f2106201920184d2107200141154f0d010c040b0b41cc83c600200120081034000b41dc83c6001032000b41cc83c600201020081034000b20014102490d00200041786a211341002114410121120340201241037421072012417f6a2110201241016a2112024002400240200020076a22072802002211200020104103746a220f280200200f41046a280200220c200741046a280200220b200b200c4b1b109c05220e450d00200e4100480d010c020b200b200c4f0d010b2007200f29020037020002402010450d002014210c20132107024003400240024020112007280200200741046a280200220e200b200b200e4b1b109c05220d450d00200d4100480d010c030b200b200e4f0d030b20002010417f6a22104103746a210f200741086a2007290200370200200741786a2107200c41016a220e200c49210d200e210c200d450d000b0b200741086a210f0b200f200b360204200f20113602000b2014417f6a2114201341086a211320122001470d000b0b20054180026a24000bf50202057f017e02400240024020014108490d00200141017641feffffff07712202417f6a220320014f0d022001410d74200173220441117620047322044105742004732205417f2001417f6a677622067122044100200120042001491b6b220420014f0d01200020034103746a220329020021072003200020044103746a220429020037020020042007370200024020022001490d00200221030c030b2005410d7420057322044111762004732204410574200473220520067122044100200120042001491b6b220420014f0d01200020024103746a220329020021072003200020044103746a2204290200370200200420073702002002410172220320014f0d022005410d742005732204411176200473220441057420047320067122044100200120042001491b6b220420014f0d01200020034103746a220129020021072001200020044103746a2200290200370200200020073702000b0f0b41cc83c600200420011034000b41bc83c600200320011034000bb20102037f017e024020014101762202450d00200020012002417f6a1081052002417e6a210203402002417f460d012000200120021081052002417f6a21020c000b0b0240024020014102490d00200141037420006a41786a21022001210303402003417f6a220420014f0d02200029020021052000200229020037020020022005370200200020044100108105200241786a210220042103200441014b0d000b0b0f0b41cc83c6002003417f6a20011034000b9a06050a7f017e017f017e037f200041686a2102200041786a2103200141324921044101210541002106024003400240024020052001490d00410021070c010b200320054103746a210841012107034002400240200841086a22092802002008280200200841046a280200220a2008410c6a28020022082008200a4b1b109c05220b450d00200b4100480d030c010b2008200a490d020b4101210a200541016a220520014921072009210820012005470d000c030b0b2005200146210a20040d0120052001460d01024002400240024002402005417f6a220820014f0d002007410171450d01200020084103746a2208290200210c200820002005410374220d6a220b290200220e370200200b200c37020020054102490d0402400240200ea7220f20002005417e6a220a4103746a2210280200201041046a2802002207200841046a2802002209200920074b1b109c052211450d0020114100480d010c060b200920074f0d050b20082010290200370200200a450d032002200d6a2108034002400240200f2008280200200841046a28020022072009200920074b1b109c05220d450d00200d4100480d010c050b200920074f0d050b2000200a417f6a220a4103746a2110200841086a2008290200370200200841786a2108200a0d000c030b0b41bc83c600200820011034000b41cc83c600200520011034000b200841086a21100b201020093602042010200f3602000b200641016a21060240200120056b220d4102490d0002400240200b280208200b280200220f200b41046a2802002209200b410c6a2802002208200820094b1b109c05220a450d00200a4100480d010c020b200820094f0d010b200b41086a2111200b200b2902083702000240200d4103490d004103210a41022107034002400240200b20074103746a2208280200200f2009200841046a2802002207200720094b1b109c052210450d00201041004e0d030c010b200720094f0d020b200841786a20082902003702000240200a200d4f0d00200a2107200a41016a210a200821110c010b0b200821110b2011200f360200201120093602040b20064105470d000b4100210a0b200a0bb60202057f017e03402002410174220341017221040240024002400240200341026a220320014f0d00200420014f0d0102400240200020044103746a2205280200200020034103746a2206280200200641046a2802002206200541046a2802002205200520064b1b109c052207450d00417f410120074100481b21060c010b417f200520064720052006491b21060b200320042006417f461b21040b0240200420014f0d00200220014f0d020240200020024103746a2202280200200020044103746a2203280200200341046a2802002206200241046a2802002205200520064b1b109c052207450d00200741004e0d010c040b20052006490d030b0f0b41c885c600200420011034000b41d885c600200220011034000b200229020021082002200329020037020020032008370200200421020c000b0b1500200120002802002200280200200028020810450bf30201037f230041c0006b22022400200141086a2802002103200128020421042002200128020022013602100240024002402001418080044b0d0002402004450d0020022003360214200120034b0d022003418080044d0d002002413c6a41013602002002420237022c200241f8a7c6003602282002410136021c200241d4a7c6003602182002200241186a3602382002200241286a10330c030b200241003602000c020b2002413c6a41013602002002420237022c200241d8a7c6003602282002410136021c200241d4a7c6003602182002200241186a3602382002200241286a10330c010b200241246a41013602002002413c6a41023602002002420237022c200241e8a7c6003602282002410136021c2002200241186a3602382002200241106a3602202002200241146a3602182002200241286a10330b024002402002280200450d0020002002290300370200200041086a200241086a2802003602000c010b200041003602000b200241c0006a24000bf80501037f230041f0006b2204240002400240024002400240024020012802084102460d00412e10282201450d01200041013a0000200141266a41002900eca946370000200141206a41002900e6a946370000200141186a41002900dea946370000200141106a41002900d6a946370000200141086a41002900cea946370000200141002900c6a946370000200041086a42ae808080e005370200200041046a20013602000c050b02400240024002400240200128020022052d0000416e6a2201411e4b0d004100210620010e1f03000000000000000000000000000000000000000000000000000008040102030b412010282201450d05200041013a0000200141186a410029008caa46370000200141106a4100290084aa46370000200141086a41002900fca946370000200141002900f4a946370000200041086a42a08080808004370200200041046a20013602000c080b410221060c060b410321060c050b20042005280204220136020c0240024020012003490d004194aac6002105200441e8006a2103200441d0006a2101200441c0006a21020c010b200220014101746a22012d0001450d0441a4aac6002105200441386a2103200441206a2101200441106a21020b20034101360204200141146a410136020020012003360210200142023702042001200536020020032004410c6a360200200220011033200041013a00002000410c6a200241086a280200360200200041046a20022902003702000c050b410121060c030b412e41011037000b412041011037000b20012d000021060b0240200541106a2d00004106470d00200041003a0000200020063a00010c010b0240412910282201450d00200041013a0000200141286a41002d00dcaa463a0000200141206a41002900d4aa46370000200141186a41002900ccaa46370000200141106a41002900c4aa46370000200141086a41002900bcaa46370000200141002900b4aa46370000200041086a42a98080809005370200200041046a20013602000c010b412941011037000b200441f0006a24000b86c30103087f027e017f230041f0006b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022d00000eac0100e1010102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01000b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b411810282200450dab012003421837025c20032000360258200341d8006a4100411810870520032003280260220041186a3602602000200328025822016a41184196adc60041181088052003200329025c37025c200320013602584193a2c600413b200341d8006a41d0a2c6001038000b02400240200128022820044103746a22052802002204200141206a220628020022024b0d00200421010c010b024002402001411c6a280200220720026b200420026b2208490d0020012802182107200221010c010b200220086a22092002490de0012007410174220a2009200a20094b1b22094100480de0010240024020070d002009102821070c010b200128021820072009102c21070b2007450dad01200120073602182001411c6a2009360200200141206a28020021010b200720016a21090240024020084102490d002009410420042002417f736a22021099051a2007200220016a22016a21090c010b2008450d010b200941043a0000200141016a21010b20062001360200200541013a00060ce0010b0240200141306a2802002204200141346a22052802004f0d002002310001210b200141206a350200210c024020042001412c6a280200470d00200441016a22022004490ddf01200441017422052002200520024b1b220241ffffffff01712002470ddf01200241037422054100480ddf010240024020040d002005102821040c010b200128022820044103742005102c21040b2004450dad01200120043602282001412c6a2002360200200141306a28020021040b200128022820044103746a200b422886200c84370200200141306a2201200128020041016a3602000ce0010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200536020020032003360268200341106a200341d8006a103320032802102202450ddf012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450ddf012000200329023c370204200020013602000ce0010b0240200141306a2802002204200141346a22052802004f0d002002310001210b200141206a350200210c024020042001412c6a280200470d00200441016a22022004490dde01200441017422052002200520024b1b220241ffffffff01712002470dde01200241037422054100480dde010240024020040d002005102821040c010b200128022820044103742005102c21040b2004450dad01200120043602282001412c6a2002360200200141306a28020021040b200128022820044103746a200b422886200c8442808080803084370200200141306a2201200128020041016a3602000cdf010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200536020020032003360268200341106a200341d8006a103320032802102202450dde012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450dde012000200329023c370204200020013602000cdf010b2002310001210b200341d8006a200141186a200141286a22044100108905024020032d00584101470d002000200329025c370200200041086a200341e4006a2802003602000cdf010b0240200141306a2802002202200141346a22052802004f0d00200141206a350200210c024020022001412c6a280200470d00200241016a22052002490ddd01200241017422062005200620054b1b220541ffffffff01712005470ddd01200541037422064100480ddd010240024020020d002006102821020c010b200428020020024103742006102c21020b2002450dad01200120023602282001412c6a2005360200200141306a28020021020b200128022820024103746a200b422886200c8442808080801084370200200141306a2201200128020041016a3602000cde010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200536020020032003360268200341106a200341d8006a103320032802102202450ddd012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450ddd012000200329023c370204200020013602000cde010b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b411810282200450dac012003421837025c20032000360258200341d8006a4100411810870520032003280260220041186a3602602000200328025822016a41184196adc60041181088052003200329025c37025c2003200136025841e0a2c6004134200341d8006a41d0a2c6001038000b02400240200141286a220228020020044103746a22042d00044101470d002004310005210b200341d8006a200141186a2002108a052003280258450d0120002003290358370200200041086a200341d8006a41086a2802003602000cdf010b411a10282201450dad01200141186a41002f00aca3463b0000200141106a41002900a4a346370000200141086a410029009ca34637000020014100290094a3463700002000429a808080a003370204200020013602000cde010b0240200141306a2802002204200141346a22052802004f0d00200141206a350200210c024020042001412c6a280200470d00200441016a22052004490ddc01200441017422062005200620054b1b220541ffffffff01712005470ddc01200541037422064100480ddc010240024020040d002006102821020c010b200228020020044103742006102c21020b2002450daf01200120023602282001412c6a2005360200200141306a28020021040b200128022820044103746a200b422886200c8442808080802084370200200141306a2201200128020041016a3602000cdd010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200536020020032003360268200341106a200341d8006a103320032802102202450ddc012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450ddc012000200329023c370204200020013602000cdd010b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b411810282200450dae012003421837025c20032000360258200341d8006a4100411810870520032003280260220041186a3602602000200328025822016a41184196adc60041181088052003200329025c37025c2003200136025841e0a2c6004134200341d8006a41d0a2c6001038000b200141286a220628020020044103746a22042d00052105024020042d00044101470d00200541ff01714104470daf010b0240024020024101460d00200341d8006a200141186a22022006108a052003280258450d0120002003290358370200200041086a200341d8006a41086a2802003602000cde010b20012d003822024104460ddb01200341d8006a200141186a2205200620021089050240024020032d00584101460d000240200141206a2802002204200141246a22072802004f0d00024020042001411c6a280200470d00200441016a22072004490dde01200441017422082007200820074b1b22074100480dde010240024020040d002007102821040c010b200528020020042007102c21040b2004450db401200120043602182001411c6a2007360200200141206a28020021040b200128021820046a20023a0000200141206a2202200228020041016a3602000cde010b200341ec006a220241013602002003420137025c20034190aec600360258200341013602042003200736020020032003360268200341106a200341d8006a103320032802102204450ddd012003200329021437021420032004360210200241013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382202450ddd01200329023c210b0c010b200328025c2202450ddc01200341e0006a290300210b0b2000200b370204200020023602000cdd010b200541ff01714104460ddb010240200141206a2802002204200141246a22062802004f0d00024020042001411c6a280200470d00200441016a22062004490ddb01200441017422072006200720064b1b22064100480ddb010240024020040d002006102821020c010b200228020020042006102c21020b2002450db201200120023602182001411c6a2006360200200141206a28020021040b200128021820046a20053a0000200141206a2201200128020041016a3602000cdc010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200636020020032003360268200341106a200341d8006a103320032802102202450ddb012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450ddb012000200329023c370204200020013602000cdc010b2003200241046a280200220236024802400240200141306a280200220420024d0d0020042002417f736a22022004490d0141f2adc600411d1050000b200341ec006a220241023602002003411c6a41013602002003420237025c200341b0adc60036025820034101360214200320043602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a1033200328023821042003200329023c37021420032004360210200241013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a10332003280214450dd1012003280210102a0cd1010b200141286a220428020020024103746a22022d00044103460dd10120022d0005220241ff01714104460dd101200341d8006a200141186a220520042002108905024020032d00584101460d000240200141206a2802002204200141246a22062802004f0d00024020042001411c6a280200470d00200441016a22062004490ddb01200441017422072006200720064b1b22064100480ddb010240024020040d002006102821040c010b200528020020042006102c21040b2004450db301200120043602182001411c6a2006360200200141206a28020021040b200128021820046a20023a0000200141206a2202200228020041016a3602000cd3010b200341ec006a220241013602002003420137025c20034190aec600360258200341013602042003200636020020032003360268200341106a200341d8006a103320032802102204450dd2012003200329021437021420032004360210200241013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a10332003280214450dd1012003280210102a0cd1010b200328025c2202450dd101200341e0006a290300210b0cd2010b200241046a2802002102200341d8006a200141186a2206200141286a220541001089050240024020032d00584101470d00200341e0006a290300210b200328025c22010d010cdb010b200141306a28020021042003200236024802400240200420024d0d0020042002417f736a22022004490d0141f2adc600411d1050000b200341ec006a220141023602002003411c6a41013602002003420237025c200341b0adc60036025820034101360214200320043602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a1033200328023821022003200329023c37021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b200329023c210b200328023822010d010cdb010b200528020020024103746a22022d00044103460dda0120022d0005220241ff01714104460dda01200341d8006a200620052002108905024020032d00584101460d000240200141206a2802002204200141246a22052802004f0d00024020042001411c6a280200470d00200441016a22052004490ddb01200441017422072005200720054b1b22054100480ddb010240024020040d002005102821040c010b200628020020042005102c21040b2004450db401200120043602182001411c6a2005360200200141206a28020021040b200128021820046a20023a0000200141206a2201200128020041016a3602000cdc010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200536020020032003360268200341106a200341d8006a103320032802102202450ddb012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450ddb01200329023c210b0c010b200328025c2201450dda01200341e0006a290300210b0b2000200b370204200020013602000cda010b200241046a280200220228020421062002280200210420032002280208220536024802400240200141306a280200220220054d0d0020022005417f736a22052002490d0141f2adc600411d1050000b200341ec006a220441023602002003411c6a41013602002003420237025c200341b0adc60036025820034101360214200320023602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a1033200328023821022003200329023c37021420032002360210200441013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b2003200329023c370204200320032802383602000ccd010b410421090240200141286a220d280200220720054103746a22052d00044103460d0020052d000521090b200320093a00302006450dc801200941ff0171220a4104460dc701200641027421060340200320042802002205360248200220054d0dca0120022005417f736a220520024f0dce01200720054103746a22052d00044103460dcb0120052d000522084104460dcb01200a2008470dcb01200441046a21042006417c6a22060d000cc9010b0b20012d003822024104460dc501200341d8006a200141186a2205200141286a20021089050240024020032d00584101460d000240200141206a2802002204200141246a22062802004f0d00024020042001411c6a280200470d00200441016a22062004490dd901200441017422072006200720064b1b22064100480dd9010240024020040d002006102821040c010b200528020020042006102c21040b2004450db301200120043602182001411c6a2006360200200141206a28020021040b200128021820046a20023a0000200141206a2202200228020041016a3602000cc8010b200341ec006a220241013602002003420137025c20034190aec600360258200341013602042003200636020020032003360268200341106a200341d8006a103320032802102204450dc7012003200329021437021420032004360210200241013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382202450dc701200329023c210b0c010b200328025c2202450dc601200341e0006a290300210b0b2000200b370204200020023602000cd8010b200128020021042003200241046a2802002202360254024002400240200441386a28020020024b0d00200341ec006a41013602002003420237025c200341e4abc600360258200341013602342003200341306a3602682003200341d4006a360230200341386a200341d8006a1033200341186a200329023c370300200341013602102003200328023822043602140c010b2003200428023020024102746a2802002202360200024002402004412c6a28020020024b0d0041012105200341ec006a41013602002003420237025c20034188acc6003602582003410136024c2003200341c8006a36026820032003360248200341386a200341d8006a1033200341186a200329023c220b370300200b422088a7210720032802382104200ba721020c010b2003411c6a200428022420024104746a22042d000d22073a0000200341186a2004280208220236020020042802002104410021050b20032005360210200320043602142005450d010b200341186a21010cc3010b02402002450d002004417f6a2104200141286a2105200141186a21060340200341d8006a20062005200420026a2d0000108905024020032d00584101470d00200341e0006a2101200328025c21040cc5010b2002417f6a22020d000b0b200741ff01714104460dd6010240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490dd601200241017422052004200520044b1b22044100480dd6010240024020020d002004102821020c010b200128021820022004102c21020b2002450db101200120023602182001411c6a2004360200200141206a28020021020b200128021820026a20073a0000200141206a2201200128020041016a3602000cd7010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200436020020032003360268200341106a200341d8006a103320032802102202450dd6012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382204450dd601200329023c210b0cc3010b200241046a28020021062001280200210220034100360238024002400240200241146a2802000d00200341d8006a41146a41013602002003420237025c200341c4abc60036025820034101360204200320033602682003200341386a360200200341106a200341d8006a10330c010b200341d8006a200141186a2204200141286a22054100108905024020032d00584101470d00200341e0006a290300210b0cc2010b20012802002207412c6a280200210220032006360238200220064b0d01200341ec006a41013602002003420237025c20034188acc60036025820034101360204200320033602682003200341386a360200200341106a200341d8006a10330b2003290214210b200328021022010dc1010cd6010b200728022420064104746a22062d000d2107024020062802082202450d002006280200417f6a21060340200341d8006a20042005200620026a2d0000108905024020032d00584101470d00200341e0006a290300210b0cc2010b2002417f6a22020d000b0b200741ff01714104460dd5010240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490dd501200241017422062005200620054b1b22054100480dd5010240024020020d002005102821020c010b200428020020022005102c21020b2002450db101200120023602182001411c6a2005360200200141206a28020021020b200128021820026a20073a0000200141206a2201200128020041016a3602000cd6010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200536020020032003360268200341106a200341d8006a103320032802102202450dd5012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450dd501200329023c210b0cc0010b200341d8006a200141186a200141286a410410890520032d00584101470dd401200328025c2201450dd4012000200341e0006a290300370204200020013602000cd5010b200341d8006a200141186a2204200141286a22054100108905200341d8006a21020240024020032d00584101460d00200341d8006a200420054104108905200341d8006a210220032d00584101460d00200341d8006a2004200520032d00592206108905200341d8006a210220032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490dd501200241017422072005200720054b1b22054100480dd5010240024020020d002005102821020c010b200428020020022005102c21020b2002450db201200120023602182001411c6a2005360200200141206a28020021020b200128021820026a20063a0000200141206a2201200128020041016a3602000cd6010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200536020020032003360268200341106a200341d8006a103320032802102202450dd5012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450dd501200329023c210b0c010b200241046a2802002201450dd401200241086a290200210b0b2000200b370204200020013602000cd4010b200341d8006a200141046a200241046a280200108b050240024020032d00584101460d000240200141206a2802002202200141246a22042802004f0d0020032d00592104024020022001411c6a280200470d00200241016a22052002490dd401200241017422062005200620054b1b22054100480dd4010240024020020d002005102821020c010b200128021820022005102c21020b2002450db201200120023602182001411c6a2005360200200141206a28020021020b200128021820026a20043a0000200141206a2201200128020041016a3602000cd5010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200436020020032003360268200341106a200341d8006a103320032802102202450dd4012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450dd401200329023c210b0c010b200328025c2201450dd301200341e0006a290300210b0b2000200b370204200020013602000cd3010b2003200241046a2802002202360200200341d8006a200141046a2002108b05024020032d00584101470d002003200328025c22013602382003200341e0006a290300220b37023c0cbb010b200320032d005922023a0030200341d8006a200141186a200141286a4104108905024020032d00584101470d00200341c0006a200341e4006a2802003602002003200329025c3703380cba010b200320032d005922013a004820014104460dd101200241ff01712001460dd101200341106a41146a41303602002003411c6a4127360200200341d8006a41146a41033602002003420337025c200341d0a3c600360258200341013602142003200341106a3602682003200341c8006a3602202003200341306a36021820032003360210200341386a200341d8006a10330cb9010b200341d8006a200141046a200241046a280200108b050240024020032d00584101460d00200341d8006a200141186a2205200141286a20032d00592204108905024020032d00584101460d000240200141206a2802002202200141246a22062802004f0d00024020022001411c6a280200470d00200241016a22062002490dd301200241017422072006200720064b1b22064100480dd3010240024020020d002006102821020c010b200528020020022006102c21020b2002450db201200120023602182001411c6a2006360200200141206a28020021020b200128021820026a20043a0000200141206a2201200128020041016a3602000cd4010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200636020020032003360268200341106a200341d8006a103320032802102202450dd3012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450dd301200329023c210b0c020b200328025c2201450dd201200341e0006a290300210b0c010b200328025c2201450dd101200341e0006a290300210b0b2000200b370204200020013602000cd1010b200128020021042003200241046a280200220236023802400240200441206a28020020024d0d000240200141206a2802002205200141246a22062802004f0d00200428021820024101746a2d00002102024020052001411c6a280200470d00200541016a22042005490dd101200541017422062004200620044b1b22044100480dd1010240024020050d002004102821050c010b200128021820052004102c21050b2005450db101200120053602182001411c6a2004360200200141206a28020021050b200128021820056a20023a0000200141206a2201200128020041016a3602000cd2010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200636020020032003360268200341106a200341d8006a103320032802102202450dd1012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450dd101200329023c210b0c010b200341ec006a41013602002003420237025c200341a8acc6003602582003410136024c2003200341c8006a3602682003200341386a360248200341106a200341d8006a103320032802102201450dd0012003290214210b0b2000200b370204200020013602000cd0010b2003200241046a28020022023602282001280200210420032002360254024002400240200441206a28020020024b0d00200341ec006a41013602002003420237025c200341a8acc6003602582003410136024c2003200341c8006a3602682003200341d4006a360248200341106a200341d8006a10330c010b200428021820024101746a22022d00010d01200341ec006a41013602002003420237025c200341b8acc60036025820034101360204200320033602682003200341d4006a360200200341106a200341d8006a10330b2003280210210120032003290214220b37023c200320013602380cb6010b200320022d000022023a002f200341d8006a200141186a200141286a4104108905024020032d00584101470d00200341c0006a200341e4006a2802003602002003200329025c3703380cb5010b200320032d005922013a00002001200241ff0171460dce0120014104460dce01200341106a41146a41303602002003411c6a4130360200200341d8006a41146a41033602002003420337025c200341e8a3c600360258200341013602142003200341106a3602682003200336022020032003412f6a3602182003200341286a360210200341386a200341d8006a10330cb4010b200341d8006a2001200241046a28020041044100108d052003280258450dcd0120002003290358370200200041086a200341d8006a41086a2802003602000cce010b200341d8006a2001200241046a28020041084101108d052003280258450dcc0120002003290358370200200041086a200341d8006a41086a2802003602000ccd010b200341d8006a2001200241046a28020041044102108d052003280258450dcb0120002003290358370200200041086a200341d8006a41086a2802003602000ccc010b200341d8006a2001200241046a28020041084103108d052003280258450dca0120002003290358370200200041086a200341d8006a41086a2802003602000ccb010b200341d8006a2001200241046a28020041014100108d052003280258450dc90120002003290358370200200041086a200341d8006a41086a2802003602000cca010b200341d8006a2001200241046a28020041014100108d052003280258450dc80120002003290358370200200041086a200341d8006a41086a2802003602000cc9010b200341d8006a2001200241046a28020041024100108d052003280258450dc70120002003290358370200200041086a200341d8006a41086a2802003602000cc8010b200341d8006a2001200241046a28020041024100108d052003280258450dc60120002003290358370200200041086a200341d8006a41086a2802003602000cc7010b200341d8006a2001200241046a28020041014101108d052003280258450dc50120002003290358370200200041086a200341d8006a41086a2802003602000cc6010b200341d8006a2001200241046a28020041014101108d052003280258450dc40120002003290358370200200041086a200341d8006a41086a2802003602000cc5010b200341d8006a2001200241046a28020041024101108d052003280258450dc30120002003290358370200200041086a200341d8006a41086a2802003602000cc4010b200341d8006a2001200241046a28020041024101108d052003280258450dc20120002003290358370200200041086a200341d8006a41086a2802003602000cc3010b200341d8006a2001200241046a28020041044101108d052003280258450dc10120002003290358370200200041086a200341d8006a41086a2802003602000cc2010b200341d8006a2001200241046a28020041044101108d052003280258450dc00120002003290358370200200041086a200341d8006a41086a2802003602000cc1010b200341d8006a2001200241046a28020041044100108e052003280258450dbf0120002003290358370200200041086a200341d8006a41086a2802003602000cc0010b200341d8006a2001200241046a28020041084101108e052003280258450dbe0120002003290358370200200041086a200341d8006a41086a2802003602000cbf010b200341d8006a2001200241046a28020041044102108e052003280258450dbd0120002003290358370200200041086a200341d8006a41086a2802003602000cbe010b200341d8006a2001200241046a28020041084103108e052003280258450dbc0120002003290358370200200041086a200341d8006a41086a2802003602000cbd010b200341d8006a2001200241046a28020041014100108e052003280258450dbb0120002003290358370200200041086a200341d8006a41086a2802003602000cbc010b200341d8006a2001200241046a28020041024100108e052003280258450dba0120002003290358370200200041086a200341d8006a41086a2802003602000cbb010b200341d8006a2001200241046a28020041014101108e052003280258450db90120002003290358370200200041086a200341d8006a41086a2802003602000cba010b200341d8006a2001200241046a28020041024101108e052003280258450db80120002003290358370200200041086a200341d8006a41086a2802003602000cb9010b200341d8006a2001200241046a28020041044101108e052003280258450db70120002003290358370200200041086a200341d8006a41086a2802003602000cb8010b20012802002102200341003602380240024020022802080d00200341ec006a41013602002003420237025c20034194abc60036025820034101360204200320033602682003200341386a360200200341106a200341d8006a103320032802102202450d002003290214210b0c010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490db701200241017422052004200520044b1b22044100480db7010240024020020d002004102821020c010b200128021820022004102c21020b2002450d9801200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000cb8010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200436020020032003360268200341106a200341d8006a103320032802102202450db7012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382202450db701200329023c210b0b2000200b370204200020023602000cb7010b20012802002102200341003602380240024020022802080d00200341ec006a41013602002003420237025c20034194abc60036025820034101360204200320033602682003200341386a360200200341106a200341d8006a103320032802102202450d002003290214210b0c010b200341d8006a200141186a2204200141286a4100108905024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490db701200241017422062005200620054b1b22054100480db7010240024020020d002005102821020c010b200428020020022005102c21020b2002450d9901200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000cb8010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200536020020032003360268200341106a200341d8006a103320032802102202450db7012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382202450db701200329023c210b0c010b200328025c2202450db601200341e0006a290300210b0b2000200b370204200020023602000cb6010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490db401200241017422052004200520044b1b22044100480db4010240024020020d002004102821020c010b200128021820022004102c21020b2002450d9701200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000cb5010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200436020020032003360268200341106a200341d8006a103320032802102202450db4012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450db4012000200329023c370204200020013602000cb5010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490db301200241017422052004200520044b1b22044100480db3010240024020020d002004102821020c010b200128021820022004102c21020b2002450d9701200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000cb4010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200436020020032003360268200341106a200341d8006a103320032802102202450db3012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450db3012000200329023c370204200020013602000cb4010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490db201200241017422052004200520044b1b22044100480db2010240024020020d002004102821020c010b200128021820022004102c21020b2002450d9701200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000cb3010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200436020020032003360268200341106a200341d8006a103320032802102202450db2012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450db2012000200329023c370204200020013602000cb3010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490db101200241017422052004200520044b1b22044100480db1010240024020020d002004102821020c010b200128021820022004102c21020b2002450d9701200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000cb2010b200341ec006a220141013602002003420137025c20034190aec600360258200341013602042003200436020020032003360268200341106a200341d8006a103320032802102202450db1012003200329021437021420032002360210200141013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382201450db1012000200329023c370204200020013602000cb2010b200341d8006a20014100108f052003280258450db00120002003290358370200200041086a200341d8006a41086a2802003602000cb1010b200341d8006a200141001090052003280258450daf0120002003290358370200200041086a200341d8006a41086a2802003602000cb0010b200341d8006a200141001090052003280258450dae0120002003290358370200200041086a200341d8006a41086a2802003602000caf010b200341d8006a200141001090052003280258450dad0120002003290358370200200041086a200341d8006a41086a2802003602000cae010b200341d8006a200141001090052003280258450dac0120002003290358370200200041086a200341d8006a41086a2802003602000cad010b200341d8006a200141001090052003280258450dab0120002003290358370200200041086a200341d8006a41086a2802003602000cac010b200341d8006a200141001090052003280258450daa0120002003290358370200200041086a200341d8006a41086a2802003602000cab010b200341d8006a200141001090052003280258450da90120002003290358370200200041086a200341d8006a41086a2802003602000caa010b200341d8006a200141001090052003280258450da80120002003290358370200200041086a200341d8006a41086a2802003602000ca9010b200341d8006a200141001090052003280258450da70120002003290358370200200041086a200341d8006a41086a2802003602000ca8010b200341d8006a200141001090052003280258450da60120002003290358370200200041086a200341d8006a41086a2802003602000ca7010b200341d8006a20014101108f052003280258450da50120002003290358370200200041086a200341d8006a41086a2802003602000ca6010b200341d8006a200141011090052003280258450da40120002003290358370200200041086a200341d8006a41086a2802003602000ca5010b200341d8006a200141011090052003280258450da30120002003290358370200200041086a200341d8006a41086a2802003602000ca4010b200341d8006a200141011090052003280258450da20120002003290358370200200041086a200341d8006a41086a2802003602000ca3010b200341d8006a200141011090052003280258450da10120002003290358370200200041086a200341d8006a41086a2802003602000ca2010b200341d8006a200141011090052003280258450da00120002003290358370200200041086a200341d8006a41086a2802003602000ca1010b200341d8006a200141011090052003280258450d9f0120002003290358370200200041086a200341d8006a41086a2802003602000ca0010b200341d8006a200141011090052003280258450d9e0120002003290358370200200041086a200341d8006a41086a2802003602000c9f010b200341d8006a200141011090052003280258450d9d0120002003290358370200200041086a200341d8006a41086a2802003602000c9e010b200341d8006a200141011090052003280258450d9c0120002003290358370200200041086a200341d8006a41086a2802003602000c9d010b200341d8006a200141011090052003280258450d9b0120002003290358370200200041086a200341d8006a41086a2802003602000c9c010b200341d8006a200141021090052003280258450d9a0120002003290358370200200041086a200341d8006a41086a2802003602000c9b010b200341d8006a200141021090052003280258450d990120002003290358370200200041086a200341d8006a41086a2802003602000c9a010b200341d8006a200141021090052003280258450d980120002003290358370200200041086a200341d8006a41086a2802003602000c99010b200341d8006a200141021090052003280258450d970120002003290358370200200041086a200341d8006a41086a2802003602000c98010b200341d8006a200141021090052003280258450d960120002003290358370200200041086a200341d8006a41086a2802003602000c97010b200341d8006a200141021090052003280258450d950120002003290358370200200041086a200341d8006a41086a2802003602000c96010b200341d8006a200141031090052003280258450d940120002003290358370200200041086a200341d8006a41086a2802003602000c95010b200341d8006a200141031090052003280258450d930120002003290358370200200041086a200341d8006a41086a2802003602000c94010b200341d8006a200141031090052003280258450d920120002003290358370200200041086a200341d8006a41086a2802003602000c93010b200341d8006a200141031090052003280258450d910120002003290358370200200041086a200341d8006a41086a2802003602000c92010b200341d8006a200141031090052003280258450d900120002003290358370200200041086a200341d8006a41086a2802003602000c91010b200341d8006a200141031090052003280258450d8f0120002003290358370200200041086a200341d8006a41086a2802003602000c90010b200341d8006a200141001091052003280258450d8e0120002003290358370200200041086a200341d8006a41086a2802003602000c8f010b200341d8006a200141001091052003280258450d8d0120002003290358370200200041086a200341d8006a41086a2802003602000c8e010b200341d8006a200141001091052003280258450d8c0120002003290358370200200041086a200341d8006a41086a2802003602000c8d010b200341d8006a200141001092052003280258450d8b0120002003290358370200200041086a200341d8006a41086a2802003602000c8c010b200341d8006a200141001092052003280258450d8a0120002003290358370200200041086a200341d8006a41086a2802003602000c8b010b200341d8006a200141001092052003280258450d890120002003290358370200200041086a200341d8006a41086a2802003602000c8a010b200341d8006a200141001092052003280258450d880120002003290358370200200041086a200341d8006a41086a2802003602000c89010b200341d8006a200141001092052003280258450d870120002003290358370200200041086a200341d8006a41086a2802003602000c88010b200341d8006a200141001092052003280258450d860120002003290358370200200041086a200341d8006a41086a2802003602000c87010b200341d8006a200141001092052003280258450d850120002003290358370200200041086a200341d8006a41086a2802003602000c86010b200341d8006a200141001092052003280258450d840120002003290358370200200041086a200341d8006a41086a2802003602000c85010b200341d8006a200141001092052003280258450d830120002003290358370200200041086a200341d8006a41086a2802003602000c84010b200341d8006a200141001092052003280258450d820120002003290358370200200041086a200341d8006a41086a2802003602000c83010b200341d8006a200141001092052003280258450d810120002003290358370200200041086a200341d8006a41086a2802003602000c82010b200341d8006a200141001092052003280258450d800120002003290358370200200041086a200341d8006a41086a2802003602000c81010b200341d8006a200141001092052003280258450d7f20002003290358370200200041086a200341d8006a41086a2802003602000c80010b200341d8006a200141001092052003280258450d7e20002003290358370200200041086a200341d8006a41086a2802003602000c7f0b200341d8006a200141001092052003280258450d7d20002003290358370200200041086a200341d8006a41086a2802003602000c7e0b200341d8006a200141011091052003280258450d7c20002003290358370200200041086a200341d8006a41086a2802003602000c7d0b200341d8006a200141011091052003280258450d7b20002003290358370200200041086a200341d8006a41086a2802003602000c7c0b200341d8006a200141011091052003280258450d7a20002003290358370200200041086a200341d8006a41086a2802003602000c7b0b200341d8006a200141011092052003280258450d7920002003290358370200200041086a200341d8006a41086a2802003602000c7a0b200341d8006a200141011092052003280258450d7820002003290358370200200041086a200341d8006a41086a2802003602000c790b200341d8006a200141011092052003280258450d7720002003290358370200200041086a200341d8006a41086a2802003602000c780b200341d8006a200141011092052003280258450d7620002003290358370200200041086a200341d8006a41086a2802003602000c770b200341d8006a200141011092052003280258450d7520002003290358370200200041086a200341d8006a41086a2802003602000c760b200341d8006a200141011092052003280258450d7420002003290358370200200041086a200341d8006a41086a2802003602000c750b200341d8006a200141011092052003280258450d7320002003290358370200200041086a200341d8006a41086a2802003602000c740b200341d8006a200141011092052003280258450d7220002003290358370200200041086a200341d8006a41086a2802003602000c730b200341d8006a200141011092052003280258450d7120002003290358370200200041086a200341d8006a41086a2802003602000c720b200341d8006a200141011092052003280258450d7020002003290358370200200041086a200341d8006a41086a2802003602000c710b200341d8006a200141011092052003280258450d6f20002003290358370200200041086a200341d8006a41086a2802003602000c700b200341d8006a200141011092052003280258450d6e20002003290358370200200041086a200341d8006a41086a2802003602000c6f0b200341d8006a200141011092052003280258450d6d20002003290358370200200041086a200341d8006a41086a2802003602000c6e0b200341d8006a200141011092052003280258450d6c20002003290358370200200041086a200341d8006a41086a2802003602000c6d0b200341d8006a200141011092052003280258450d6b20002003290358370200200041086a200341d8006a41086a2802003602000c6c0b200341d8006a200141021091052003280258450d6a20002003290358370200200041086a200341d8006a41086a2802003602000c6b0b200341d8006a200141021091052003280258450d6920002003290358370200200041086a200341d8006a41086a2802003602000c6a0b200341d8006a200141021091052003280258450d6820002003290358370200200041086a200341d8006a41086a2802003602000c690b200341d8006a200141021091052003280258450d6720002003290358370200200041086a200341d8006a41086a2802003602000c680b200341d8006a200141021091052003280258450d6620002003290358370200200041086a200341d8006a41086a2802003602000c670b200341d8006a200141021091052003280258450d6520002003290358370200200041086a200341d8006a41086a2802003602000c660b200341d8006a200141021091052003280258450d6420002003290358370200200041086a200341d8006a41086a2802003602000c650b200341d8006a200141021092052003280258450d6320002003290358370200200041086a200341d8006a41086a2802003602000c640b200341d8006a200141021092052003280258450d6220002003290358370200200041086a200341d8006a41086a2802003602000c630b200341d8006a200141021092052003280258450d6120002003290358370200200041086a200341d8006a41086a2802003602000c620b200341d8006a200141021092052003280258450d6020002003290358370200200041086a200341d8006a41086a2802003602000c610b200341d8006a200141021092052003280258450d5f20002003290358370200200041086a200341d8006a41086a2802003602000c600b200341d8006a200141021092052003280258450d5e20002003290358370200200041086a200341d8006a41086a2802003602000c5f0b200341d8006a200141021092052003280258450d5d20002003290358370200200041086a200341d8006a41086a2802003602000c5e0b200341d8006a200141031091052003280258450d5c20002003290358370200200041086a200341d8006a41086a2802003602000c5d0b200341d8006a200141031091052003280258450d5b20002003290358370200200041086a200341d8006a41086a2802003602000c5c0b200341d8006a200141031091052003280258450d5a20002003290358370200200041086a200341d8006a41086a2802003602000c5b0b200341d8006a200141031091052003280258450d5920002003290358370200200041086a200341d8006a41086a2802003602000c5a0b200341d8006a200141031091052003280258450d5820002003290358370200200041086a200341d8006a41086a2802003602000c590b200341d8006a200141031091052003280258450d5720002003290358370200200041086a200341d8006a41086a2802003602000c580b200341d8006a200141031091052003280258450d5620002003290358370200200041086a200341d8006a41086a2802003602000c570b200341d8006a200141031092052003280258450d5520002003290358370200200041086a200341d8006a41086a2802003602000c560b200341d8006a200141031092052003280258450d5420002003290358370200200041086a200341d8006a41086a2802003602000c550b200341d8006a200141031092052003280258450d5320002003290358370200200041086a200341d8006a41086a2802003602000c540b200341d8006a200141031092052003280258450d5220002003290358370200200041086a200341d8006a41086a2802003602000c530b200341d8006a200141031092052003280258450d5120002003290358370200200041086a200341d8006a41086a2802003602000c520b200341d8006a200141031092052003280258450d5020002003290358370200200041086a200341d8006a41086a2802003602000c510b200341d8006a200141031092052003280258450d4f20002003290358370200200041086a200341d8006a41086a2802003602000c500b200341d8006a2001410141001093052003280258450d4e20002003290358370200200041086a200341d8006a41086a2802003602000c4f0b200341d8006a2001410241001093052003280258450d4d20002003290358370200200041086a200341d8006a41086a2802003602000c4e0b200341d8006a2001410241001093052003280258450d4c20002003290358370200200041086a200341d8006a41086a2802003602000c4d0b200341d8006a2001410341001093052003280258450d4b20002003290358370200200041086a200341d8006a41086a2802003602000c4c0b200341d8006a2001410341001093052003280258450d4a20002003290358370200200041086a200341d8006a41086a2802003602000c4b0b200341d8006a2001410041011093052003280258450d4920002003290358370200200041086a200341d8006a41086a2802003602000c4a0b200341d8006a2001410041011093052003280258450d4820002003290358370200200041086a200341d8006a41086a2802003602000c490b200341d8006a2001410241011093052003280258450d4720002003290358370200200041086a200341d8006a41086a2802003602000c480b200341d8006a2001410241011093052003280258450d4620002003290358370200200041086a200341d8006a41086a2802003602000c470b200341d8006a2001410341011093052003280258450d4520002003290358370200200041086a200341d8006a41086a2802003602000c460b200341d8006a2001410341011093052003280258450d4420002003290358370200200041086a200341d8006a41086a2802003602000c450b200341d8006a2001410041021093052003280258450d4320002003290358370200200041086a200341d8006a41086a2802003602000c440b200341d8006a2001410041021093052003280258450d4220002003290358370200200041086a200341d8006a41086a2802003602000c430b200341d8006a2001410141021093052003280258450d4120002003290358370200200041086a200341d8006a41086a2802003602000c420b200341d8006a2001410141021093052003280258450d4020002003290358370200200041086a200341d8006a41086a2802003602000c410b200341d8006a2001410341021093052003280258450d3f20002003290358370200200041086a200341d8006a41086a2802003602000c400b200341d8006a2001410041031093052003280258450d3e20002003290358370200200041086a200341d8006a41086a2802003602000c3f0b200341d8006a2001410041031093052003280258450d3d20002003290358370200200041086a200341d8006a41086a2802003602000c3e0b200341d8006a2001410141031093052003280258450d3c20002003290358370200200041086a200341d8006a41086a2802003602000c3d0b200341d8006a2001410141031093052003280258450d3b20002003290358370200200041086a200341d8006a41086a2802003602000c3c0b200341d8006a2001410241031093052003280258450d3a20002003290358370200200041086a200341d8006a41086a2802003602000c3b0b200341d8006a2001410241001093052003280258450d3920002003290358370200200041086a200341d8006a41086a2802003602000c3a0b200341d8006a2001410341011093052003280258450d3820002003290358370200200041086a200341d8006a41086a2802003602000c390b200341d8006a2001410041021093052003280258450d3720002003290358370200200041086a200341d8006a41086a2802003602000c380b200341d8006a20014101410310930520032802580d1b0c360b411841011037000b200941011037000b200541041037000b200541041037000b200641041037000b411841011037000b411a41011037000b200641041037000b411841011037000b200341ec006a41013602002003420237025c200341b0a3c6003602582003413136023c2003200441056a3602382003200341386a360268200341106a200341d8006a1033200041086a200341106a41086a280200360200200020032903103702000c2d0b200741011037000b200641011037000b200641011037000b200541011037000b200641011037000b200441011037000b200541011037000b200541011037000b200541011037000b200641011037000b200441011037000b200441011037000b200541011037000b200441011037000b200441011037000b200441011037000b200441011037000b20002003290358370200200041086a200341d8006a41086a2802003602000c1b0b200329023c210b200328023821010b2001450d182000200b370204200020013602000c190b200329023c210b200328023821010b2001450d162000200b370204200020013602000c170b200328025c2201450d150b2000200b370204200020013602000c150b2004450d132001290200210b0b2000200b370204200020043602000c130b02400240024002400240200141306a2802002202417f6a220420024f0d00200420024b0d00200128022820044103746a22052802002204200141206a220628020022024b0d01200421010c020b411810282200450d022003421837025c20032000360258200341d8006a4100411810870520032003280260220041186a3602602000200328025822016a41184196adc60041181088052003200329025c37025c200320013602584193a2c600413b200341d8006a41d0a2c6001038000b024002402001411c6a280200220720026b200420026b2208490d0020012802182107200221010c010b200220086a22092002490d132007410174220a2009200a20094b1b22094100480d130240024020070d002009102821070c010b200128021820072009102c21070b2007450d03200120073602182001411c6a2009360200200141206a28020021010b200720016a21090240024020084102490d002009410420042002417f736a22021099051a2007200220016a22016a21090c010b2008450d010b200941043a0000200141016a21010b20062001360200200541013a00060c130b411841011037000b200941011037000b200641027421060340200320042802002205360248200220054d0d0220022005417f736a220520024f0d060240200720054103746a22052d00044103460d0020052d00054104470d040b200441046a21042006417c6a22060d000b410421090b200341d8006a200141186a2202200d410010890520032d00584101470d02200341086a200341e4006a2802003602002003200329025c3703000c030b200341ec006a220441023602002003411c6a41013602002003420237025c200341b0adc60036025820034101360214200320023602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a1033200328023821022003200329023c37021420032002360210200441013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b2003200329023c370204200320032802383602000c020b2003411c6a4131360200200341ec006a41023602002003420237025c200341c0a3c6003602582003200541056a360218200341313602142003200341106a3602682003200341306a3602102003200341d8006a10330c010b0240200941ff01714104460d00200341d8006a2002200d200910890502400240024020032d00584101460d000240200141206a2802002204200141246a22052802004f0d00024020042001411c6a280200470d00200441016a22052004490d10200441017422062005200620054b1b22054100480d100240024020040d002005102821020c010b200228020020042005102c21020b2002450d04200120023602182001411c6a2005360200200141206a28020021040b200128021820046a20093a0000200141206a2202200228020041016a3602000c040b200341ec006a220241013602002003420137025c20034190aec600360258200341013602042003200536020020032003360268200341106a200341d8006a103320032802102204450d032003200329021437021420032004360210200241013602002003420137025c200341c4a7c60036025820034128360204200320033602682003200341106a360200200341386a200341d8006a103302402003280214450d002003280210102a0b20032802382202450d03200329023c210b0c010b200328025c2202450d02200341e0006a290300210b0b2003200b370204200320023602000c020b200541011037000b200341003602000b024020032802002202450d0020002003290204370204200020023602000c0d0b0240024002400240200141306a2802002202417f6a220420024f0d00200420024d0d010b411810282200450d012003421837025c20032000360258200341d8006a4100411810870520032003280260220041186a3602602000200328025822016a41184196adc60041181088052003200329025c37025c200320013602584193a2c600413b200341d8006a41d0a2c6001038000b02400240200128022820044103746a22052802002204200141206a220628020022024b0d00200421010c010b024002402001411c6a280200220720026b200420026b2208490d0020012802182107200221010c010b200220086a22092002490d0d2007410174220a2009200a20094b1b22094100480d0d0240024020070d002009102821070c010b200128021820072009102c21070b2007450d03200120073602182001411c6a2009360200200141206a28020021010b200720016a21090240024020084102490d002009410420042002417f736a22021099051a2007200220016a22016a21090c010b2008450d010b200941043a0000200141016a21010b20062001360200200541013a00060c0d0b411841011037000b200941011037000b41f2adc600411d1050000b20032802382202450d00200329023c210b0c010b200141306a2802002202417f6a220420024f0d01200420024b0d01200128022820044103746a22052802002204200141206a220628020022024b0d02200421010c030b2000200b370204200020023602000c080b411810282200450d022003421837025c20032000360258200341d8006a4100411810870520032003280260220041186a3602602000200328025822016a41184196adc60041181088052003200329025c37025c200320013602584193a2c600413b200341d8006a41d0a2c6001038000b024002402001411c6a280200220720026b200420026b2208490d0020012802182107200221010c010b200220086a22092002490d042007410174220a2009200a20094b1b22094100480d040240024020070d002009102821070c010b200128021820072009102c21070b2007450d03200120073602182001411c6a2009360200200141206a28020021010b200720016a21090240024020084102490d002009410420042002417f736a22021099051a2007200220016a22016a21090c010b2008450d010b200941043a0000200141016a21010b20062001360200200541013a00060c040b411841011037000b200941011037000b1031000b200341d8006a200141186a2006108a052003280258450d0020002003290358370200200041086a200341d8006a41086a2802003602000c010b200041003602000b200341f0006a24000b6401017f230041206b2202240020024132360204200220003602002001411c6a2802002100200128021821012002411c6a41013602002002420137020c200241b0aec6003602082002200236021820012000200241086a10352101200241206a240020010b810101017f024002400240200041046a280200220320016b20024f0d00200120026a22022001490d02200341017422012002200120024b1b22014100480d020240024020030d002001102821020c010b200028020020032001102c21020b2002450d0120002002360200200041046a20013602000b0f0b200141011037000b1031000bd90101017f230041e0006b22042400200420013602082004200336020c024020012003470d00200020022001109a051a200441e0006a24000f0b200441286a41146a4108360200200441346a4125360200200441106a41146a410336020020044203370214200441c8afc6003602102004412536022c2004200441086a36024020042004410c6a360244200442043703582004420137024c2004419cb0c6003602482004200441286a3602202004200441c8006a3602382004200441c4006a3602302004200441c0006a360228200441106a41d8b0c600103e000bb90601037f230041d0006b22042400200420033a000f0240024002400240024020022802082205417f6a220620054f0d00200620054d0d010b411810282202450d012004421837023420042002360230200441306a4100411810870520042004280238220241186a3602382002200428023022056a41184196adc6004118108805200420042902343702342004200536023041e0a2c6004134200441306a41d0a2c6001038000b200141086a2802002105200228020020064103746a2206280200210202400240024020062d0006450d0020052002460d010b024002400240200520024d0d00200141086a2005417f6a2202360200200128020020026a2d00002205417c6a220241014b0d02024020020e020400040b4118102822020d01411841011037000b412b10282202450d05200041013a0000200241276a41002800fea646360000200241206a41002900f7a646370000200241186a41002900efa646370000200241106a41002900e7a646370000200241086a41002900dfa646370000200241002900d7a646370000200041086a42ab808080b005370200200041046a20023602000c060b200241106a41002900a6ad46370000200241086a410029009ead4637000020024100290096ad4637000020044298808080800337022420042002360220200441c4006a410136020020044201370234200441c4a7c6003602302004412836024c2004200441c8006a3602402004200441206a360248200441106a200441306a103302402004280224450d002004280220102a0b200041013a0000200041046a20042903103702002000410c6a200441106a41086a2802003602000c050b0240200341ff017122024104460d0020052002470d020b200041003a0000200020053a00010c040b20004180083b01000c030b200420053a0048200441c4006a4102360200200441206a410c6a41303602002004420237023420044184a7c600360230200441303602242004200441206a3602402004200441c8006a36022820042004410f6a360220200441106a200441306a10332000410c6a200441186a280200360200200041046a2004290310370200200041013a00000c020b411841011037000b412b41011037000b200441d0006a24000bbd0502047f017e230041d0006b22032400024002400240024002400240200241086a2802002204417f6a220520044f0d00200520044d0d010b411810282202450d01200241106a41002900a6ad46370000200241086a410029009ead4637000020024100290096ad4637000020034298808080800337022420032002360220200341cc006a41013602002003420137023c200341c4a7c600360238200341283602142003200341106a3602482003200341206a3602102000200341386a10332003280224450d042003280220102a0c040b0240024002402002280200220620054103746a2d000522054104460d00200341386a200120022005108905024020032d00384101470d002000200329023c370200200041086a200341c4006a2802003602000c070b200241086a2802002204450d01200228020021060b200241086a2004417f6a2202360200200620024103746a290200220742808080808080c0ff0083428080808080808001520d010b411810282202450d02200241106a41002900a6ad46370000200241086a410029009ead4637000020024100290096ad4637000020034298808080800337022420032002360220200341cc006a41013602002003420137023c200341c4a7c600360238200341283602142003200341106a3602482003200341206a3602102000200341386a10332003280224450d042003280220102a0c040b200141086a28020021022003200737030820022007a7470d02200041003602000c030b411841011037000b411841011037000b200341cc006a41023602002003412c6a41013602002003420237023c200341a4a6c60036023820034101360224200320023602342003200341206a3602482003200341086a3602282003200341346a360220200341106a200341386a1033200041086a200341106a41086a280200360200200020032903103702000b200341d0006a24000bac0301057f230041c0006b2203240020032002360200024002402001280204220420024b0d002001280208417c6a21052001410c6a280200410374210102400340024020010d00200320043602042003412c6a4102360200200341306a410c6a41013602002003420337021c200341f0aec600360218200341013602342003200341306a3602282003200341046a36023820032003360230200341086a200341186a10332000410c6a200341106a280200360200200041046a2003290308370200200041013a00000c040b02402004200541046a2802006a220620044f0d00412010282204450d02200041013a0000200441186a41002900e8ae46370000200441106a41002900e0ae46370000200441086a41002900d8ae46370000200441002900d0ae46370000200041086a42a08080808004370200200041046a20043602000c040b200141786a2101200541086a2105200420024b21072006210420070d0020062104200620024d0d000b20052d00002104200041003a0000200020043a00010c020b412041011037000b200041003a00002000200128020020026a2d00003a00010b200341c0006a24000bbd0201037f230041106b220224000240024020002d00004104470d00200220012802184181a5c60041032001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b200220012802184184a5c60041082001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a418ca5c600105d210120022d0008210020022802042203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d0041012100200428021841f4afc00041012004411c6a28020028020c1100000d010b2001280200220028021841c8a4c60041012000411c6a28020028020c11000021000b200120003a00080b200241106a2400200041ff01714100470bfe0501037f230041d0006b22052400200520023602082005200336020c024002400240417f41012002411f71742002411f4b1b20034b0d00200541386a200141186a2203200141286a410010890520052d00384101470d012000200529023c370200200041086a200541c4006a2802003602000c020b200541cc006a41023602002005411c6a41013602002005420337023c20054180a4c600360238200541013602142005200541106a36024820052005410c6a3602182005200541086a360210200541206a200541386a1033200041086a200541206a41086a280200360200200020052903203702000c010b2001280200210220054100360220024020022802080d00200541cc006a41013602002005420237023c20054194abc600360238200541013602342005200541306a3602482005200541206a360230200541106a200541386a103320052802102202450d0020002005290214370204200020023602000c010b0240024002400240200141206a2802002202200141246a22062802004f0d00024020022001411c6a280200470d00200241016a22062002490d03200241017422072006200720064b1b22064100480d030240024020020d002006102821020c010b200328020020022006102c21020b2002450d02200120023602182001411c6a2006360200200141206a28020021020b200128021820026a20043a0000200141206a2202200228020041016a3602000c030b200541cc006a220241013602002005420137023c20054190aec60036023820054101360234200520063602302005200541306a360248200541106a200541386a103320052802102201450d022005200529021437021420052001360210200241013602002005420137023c200541c4a7c600360238200541283602342005200541306a3602482005200541106a360230200541206a200541386a103302402005280214450d002005280210102a0b20052802202202450d0220002005290224370204200020023602000c030b200641011037000b1031000b200041003602000b200541d0006a24000bae0301017f230041d0006b22052400200520023602082005200336020c024002400240417f41012002411f71742002411f4b1b20034b0d00200128020021022005410036023420022802080d01200541cc006a41013602002005420237023c20054194abc600360238200541013602142005200541106a3602482005200541346a360210200541206a200541386a103320052802202202450d0120002005290224370204200020023602000c020b200541cc006a41023602002005412c6a41013602002005420337023c20054180a4c600360238200541013602242005200541206a36024820052005410c6a3602282005200541086a360220200541106a200541386a1033200041086a200541106a41086a280200360200200020052903103702000c010b200541386a200141186a2202200141286a22032004108905024020052d00384101470d002000200529023c370200200041086a200541c4006a2802003602000c010b200541386a200220034100108905024020052d00384101470d002000200529023c370200200041086a200541c4006a2802003602000c010b200041003602000b200541d0006a24000be50301047f230041c0006b22032400200341286a200141186a2204200141286a20021089050240024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b0240024002400240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d03200241017422062005200620054b1b22054100480d030240024020020d002005102821020c010b200428020020022005102c21020b2002450d02200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c030b2003413c6a220141013602002003420137022c20034190aec60036022820034101360214200320053602102003200341106a360238200341186a200341286a103320032802182202450d022003200329021c37021c20032002360218200141013602002003420137022c200341c4a7c600360228200341283602142003200341106a3602382003200341186a3602102003200341286a10330240200328021c450d002003280218102a0b20032802002201450d0220002003290204370204200020013602000c030b200541011037000b1031000b200041003602000b200341c0006a24000b9e0401047f230041c0006b22032400200341286a200141186a2204200141286a220520021089050240024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b200341286a200420052002108905024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b0240024002400240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d03200241017422062005200620054b1b22054100480d030240024020020d002005102821020c010b200428020020022005102c21020b2002450d02200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c030b2003413c6a220141013602002003420137022c20034190aec60036022820034101360214200320053602102003200341106a360238200341186a200341286a103320032802182202450d022003200329021c37021c20032002360218200141013602002003420137022c200341c4a7c600360228200341283602142003200341106a3602382003200341186a3602102003200341286a10330240200328021c450d002003280218102a0b20032802002201450d0220002003290204370204200020013602000c030b200541011037000b1031000b200041003602000b200341c0006a24000be50301057f230041c0006b22032400200341286a200141186a2204200141286a20021089050240024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b0240024002400240200141206a2802002205200141246a22062802004f0d00024020052001411c6a280200470d00200541016a22062005490d03200541017422072006200720064b1b22064100480d030240024020050d002006102821050c010b200428020020052006102c21050b2005450d02200120053602182001411c6a2006360200200141206a28020021050b200128021820056a20023a0000200141206a2201200128020041016a3602000c030b2003413c6a220141013602002003420137022c20034190aec60036022820034101360214200320063602102003200341106a360238200341186a200341286a103320032802182202450d022003200329021c37021c20032002360218200141013602002003420137022c200341c4a7c600360228200341283602142003200341106a3602382003200341186a3602102003200341286a10330240200328021c450d002003280218102a0b20032802002201450d0220002003290204370204200020013602000c030b200641011037000b1031000b200041003602000b200341c0006a24000b9e0401057f230041c0006b22032400200341286a200141186a2204200141286a220520021089050240024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b200341286a200420052002108905024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b0240024002400240200141206a2802002205200141246a22062802004f0d00024020052001411c6a280200470d00200541016a22062005490d03200541017422072006200720064b1b22064100480d030240024020050d002006102821040c010b200428020020052006102c21040b2004450d02200120043602182001411c6a2006360200200141206a28020021050b200128021820056a20023a0000200141206a2201200128020041016a3602000c030b2003413c6a220141013602002003420137022c20034190aec60036022820034101360214200320063602102003200341106a360238200341186a200341286a103320032802182202450d022003200329021c37021c20032002360218200141013602002003420137022c200341c4a7c600360228200341283602142003200341106a3602382003200341186a3602102003200341286a10330240200328021c450d002003280218102a0b20032802002201450d0220002003290204370204200020013602000c030b200641011037000b1031000b200041003602000b200341c0006a24000be50301047f230041c0006b22042400200441286a200141186a2205200141286a20021089050240024020042d00284101470d002000200429022c370200200041086a200441346a2802003602000c010b0240024002400240200141206a2802002202200141246a22062802004f0d00024020022001411c6a280200470d00200241016a22062002490d03200241017422072006200720064b1b22064100480d030240024020020d002006102821020c010b200528020020022006102c21020b2002450d02200120023602182001411c6a2006360200200141206a28020021020b200128021820026a20033a0000200141206a2201200128020041016a3602000c030b2004413c6a220141013602002004420137022c20044190aec60036022820044101360214200420063602102004200441106a360238200441186a200441286a103320042802182202450d022004200429021c37021c20042002360218200141013602002004420137022c200441c4a7c600360228200441283602142004200441106a3602382004200441186a3602102004200441286a10330240200428021c450d002004280218102a0b20042802002201450d0220002004290204370204200020013602000c030b200641011037000b1031000b200041003602000b200441c0006a24000b02000b17000240200041046a280200450d002000280200102a0b0b15002000280200220028020020002802082001105f0b100020012000280200200028020810450bfb0101027f230041106b220224002002200128021841b8aec60041052001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41c0aec600105d1a20022d00082101024020022802042203450d00200141ff0171210041012101024020000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d0041012101200028021841f4afc00041012000411c6a28020028020c1100000d010b2002280200220128021841c8a4c60041012001411c6a28020028020c11000021010b200220013a00080b200241106a2400200141ff01714100470b2c01017f02402002450d00200021030340200320013a0000200341016a21032002417f6a22020d000b0b20000b3601017f02402002450d00200021030340200320012d00003a0000200341016a2103200141016a21012002417f6a22020d000b0b20000b7101017f0240024020012000490d002002450d01200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000c020b0b2002450d002001417f6a21012000417f6a21030340200320026a200120026a2d00003a00002002417f6a22020d000b0b20000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200141016a2101200041016a21002002417f6a2202450d020c000b0b200420056b21030b20030b5701017e02400240200341c000710d002003450d012001410020036b413f71ad8820022003413f71ad220486842102200120048621010c010b20012003413f71ad862102420021010b20002001370300200020023703080b5701017e02400240200341c000710d002003450d0120012003413f71ad2204882002410020036b413f71ad86842101200220048821020c010b20022003413f71ad882101420021020b20002001370300200020023703080b7501027e200020034220882205200142208822067e200320027e7c200420017e7c200342ffffffff0f832203200142ffffffff0f8322017e2204422088200320067e7c22034220887c200342ffffffff0f83200520017e7c22034220887c37030820002003422086200442ffffffff0f83843703000b3e01017f230041106b2205240020052001200220032004410010a205200529030021012000200541086a29030037030820002001370300200541106a24000b4c01017f230041206b22052400200542003703182005420037031020052001200220032004200541106a10a205200529031021012000200529031837030820002001370300200541206a24000be20502037f067e230041306b2206240002400240024002400240024002400240024002402002500d002003500d012004500d02200479a7200279a76b2207413f4b0d0341ff0020076b2108200741016a21070c080b02402004500d0020050d040c060b024002402005450d0020034200510d0620054200370308200520012003823703000c010b20034200510d050b200120038021010c060b2004500d030240024002402001500d0020047b4201510d01200479a7200279a76b2207413e4b0d0241ff0020076b2108200741016a21070c090b02402005450d0020054200370300200520022004823703080b200220048021010c070b02402005450d002005200137030020052004427f7c2002833703080b200220047a423f838821010c060b2005450d040c020b024020037b4201510d0041bf7f200379a7200279a76b22076b2108200741c1006a21070c060b02402005450d002005420037030820052003427f7c2001833703000b20034201510d06200641206a2001200220037aa7109e05200641286a2903002102200629032021010c060b2005450d020b2005200137030020052002370308420021010c020b00000b420021010b420021020c010b200620012002200841ff0071109d05200641106a20012002200741ff0071109e05200641086a2903002102200641106a41086a2903002109200629030021012006290310210a0240024020070d004200210b4200210c0c010b4200210c4200210d03402009420186200a423f8884220b200b427f8520047c200a4201862002423f8884220a427f85220b20037c200b54ad7c423f87220b2004837d200a200b200383220e54ad7d2109200a200e7d210a420020024201862001423f8884842102200d2001420186842101200b420183220b210d2007417f6a22070d000b0b02402005450d002005200a370300200520093703080b200c20024201862001423f8884842102200b20014201868421010b2000200137030020002002370308200641306a24000b0b9bb1060200418080c0000b80b1061800100011000000187f11001700000009030000050000006361706163697479206f766572666c6f77000000a00010004600000063010000130000003300000004000000040000003400000035000000360000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f72003700000000000000010000003800000000000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f666d742f6d6f642e72730101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020202020202020202020202020202020202020202020202020202020202030303030303030303030303030303030404040404000000000000000000000000000802100020000000280210001200000037000000000000000100000039000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973203030303130323033303430353036303730383039313031313132313331343135313631373138313932303231323232333234323532363237323832393330333133323333333433353336333733383339343034313432343334343435343634373438343935303531353235333534353535363537353835393630363136323633363436353636363736383639373037313732373337343735373637373738373938303831383238333834383538363837383838393930393139323933393439353936393739383939000024031000060000002a031000220000006898110018000000170a000005000000696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468206c03100016000000820310000d00000068981100180000001d0a000005000000736c69636520696e64657820737461727473206174202062757420656e6473206174206030785b2e2e2e5d00560410000b00000002171000160000008f0310000100000040041000160000000308000009000000e01610000e000000ee16100004000000f2161000100000008f0310000100000040041000160000000708000005000000a01610002b000000cb161000150000007a01000015000000560410000b000000610410002600000087041000080000008f041000060000008f03100001000000400410001600000014080000050000007372632f6c6962636f72652f7374722f6d6f642e72736279746520696e64657820206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f662060000000d604100002000000c0041000160000006204000011000000c00410001600000056040000280000007372632f6c6962636f72652f666d742f6d6f642e72732e2e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000f8030000000000000000000000000000000000000000000000000000000000000000feffffffffbfb6000000000000000000ff070000000000f8ffff0000010000000000000000000000c09f9f3d0000000002000000ffffff0700000000000000000000c0ff01000000000000f80f20801010004a000000d012100000020000d01410003a00000000010203040506070809080a0b0c0d0e0f10111213140215161718191a1b1c1d1e1f2002020202020202020202210202020202020202020202020202222324252602270228020202292a2b022c2d2e2f300202310202023202020202020202023302023402020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023502360237020202020202020238023902020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023a3b3c020202023d02023e3f4041424344454602020247020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202024802020202020202020202024902020202023b020001020202020302020202040205060202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020207020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200010305050606030706080809110a1c0b190c140d120e0d0f0410031212130916011705180219031a071c021d011f1620032b042c022d0b2e01300331023201a702a902aa04ab08fa02fb05fd04fe03ff09ad78798b8da23057588b8c901c1ddd0e0f4b4cfbfc2e2f3f5c5d5fb5e2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d112945495764658d91a9b4babbc5c9dfe4e5f0040d1145496465808184b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff800d6d71dedf0e0f1f6e6f1c1d5f7d7eaeafbbbcfa16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596972f5f262e2fa7afb7bfc7cfd7df9a409798308f1fc0c1ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091feff536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab351e1580e003190801042f043404070301070607110a500f1207550802041c0a090308030703020303030c0405030b06010e15053a0311070605100757070207150d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd035907150b1709140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a061f414c042d0374083c030f033c0738082b0582ff1118082f112d032010210f808c048297190b158894052f053b07020e180980b030740c80d61a0c0580ff0580b605240c9bc60ad23010848d033709815c1480b80880c73035040a06380846080c06740b1e035a0459098083181c0a16094808808a06aba40c170431a10481da26070c050580a511816d1078282a064c04808d0480be031b030f0d0006010103010402080809020a050b02100111041205131114021502170219041c051d0824016a036b02bc02d102d40cd509d602d702da01e005e102e802ee20f004f906fa020c273b3e4e4f8f9e9e9f060709363d3e56f3d0d104141836375657bd35cecfe01287898e9e040d0e11122931343a4546494a4e4f64655a5cb6b71b1ca8a9d8d909379091a8070a3b3e66698f926f5feeef5a629a9b2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d00c72a3a4cbcc6e6f5e227b0503042d036504012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b018090813709160a088098390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a81261f808128082a808617094e041e0f430e19070a0647092709750b3f412a063b050a0651060105100305808b602048080a80a65e22450b0a060d1339070a362c041080c03c64530c0180a0451b4808531d398107460a1d03474937030e080a0639070a81361980c7320d839b66750b80c48abc842f8fd18247a1b98239072a040260260a460a28051382b05b654b0439071140041c97f80882f3a50d811f3103110408818c89046b050d03090710936080f60a73086e1746809a140c570919808781470385420f1585502b80d52d031a040281703a0501850080d7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a0d035d033d391d0d2c040907020e06809a83d60a0d030b05740c59070c140c0438080a0628081e527703310380a60c14040305030d06856a000000601010002000000027000000190000006010100020000000280000002000000060101000200000002a0000001900000060101000200000002b0000001800000060101000200000002c0000002000000000000000000000007372632f6c6962636f72652f756e69636f64652f626f6f6c5f747269652e72730000c0fbef3e00000000000e0000000000000000000000000000f8fffbffffff0700000000000014fe21fe000c00000002000000000000501e2080000c00004006000000000000108639020000002300be2100000c0000fc02000000000000d01e20c0000c0000000400000000000040012080000000000011000000000000c0c13d60000c0000000200000000000090443060000c00000003000000000000581e2080000c00000000845c8000000000000000000000f207807f000000000000000000000000f21f003f000000000000000000030000a002000000000000fe7fdfe0fffeffffff1f40000000000000000000000000e0fd66000000c301001e006420002000000000000000e00000000000001c0000001c0000000c0000000c00000000000000b03f40fe0f200000000000380000000000006000000000020000000000008701040e00008009000000000000407fe51ff89f000000000000ff7f0f0000000000f0170400000000f80f00030000003c3b00000000000040a303000000000000f0cf000000f7fffd211003fffffffffffffffb00100000000000000000ffffffff01000000000000800300000000000000008000000000ffffffff0000000000fc00000000000600000000000000000080f73f000000c0000000000000000000000300440800006000000030000000ffff038000000000c03f000080ff030000000000070000000000c833000000002000000000000000007e660008100000000000100000000000009dc1020000000030400000000000202100000000004000000000ffff0000ffff00000000000000000001000000020003000000000000000000000000000000000000000000000000000004000005000000000000000006000000000000000007000008090a000b0c0d0e0f000010111200001314151600001718191a1b001c0000001d0000000000001e1f202100000000002200230024252600000000270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002829000000000000000000000000000000002a2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000002d2e00002f0000000000000000000000000000000000000000000000000000000000003031320000000000000000000000000000000000000000003300000029000000000000340000000000000000000000000000000000000000000000350036000000000000000000000000000000000000000000000000000037380000383838390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000001000000000000000000c0076ef0000000000087000000006000000000000000f0000000c0ff01000000000002000000000000ff7f0000000000008003000000000078060700000080ef1f000000000000000800030000000000c07f001e000000000000000000000080d34000000080f8070000030000000000005801008000c01f1f0000000000000000ff5c00004000000000000000000000f9a50d000000000000000000000000803cb00100003000000000000000000000f8a70100000000000000000000000028bf00000000e0bc0f0000000000000080ff060000f00c01000000fe0700000000f87980007e0e0000000000fc7f03000000000000000000007fbf0000fcfffffc6d000000000000007eb4bf000000000000000000a3000000000000000000000018000000000000001f000000000000007f0000800000000000000080070000000000000000600000000000000000a0c307f8e70f0000003c00001c00000000000000ffffffffffff7ff8ffffffffff1f2000100000f8feff00007ffffff9db0700000000000000f0000000007f0000000000f00700000000000000000000ffffffffffffffffffffffffffffffffffff000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75657372632f6c6962636f72652f6f7074696f6e2e7273626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e672060206973206f7574206f6620626f756e6473206f66206066616c736574727565426f72726f774572726f72426f72726f774d75744572726f7270616e69636b6564206174200000711710000100000072171000030000003897110000000000701710000100000070171000010000003a27272c20000000cb16100015000000a60400000500000098171000150000008d040000050000007372632f6c6962636f72652f726573756c742e72735b5d0a3a0000000c000000040000003b0000003c0000003d0000002c0a2c203300000004000000040000003e0000003f0000004000000020202020207b20207b0a207d7d28280a2c0000003300000004000000040000004100000033000000040000000400000042000000557466384572726f7276616c69645f75705f746f6572726f725f6c656e00000033000000040000000400000043000000370000000000000001000000440000004500000046000000370000000000000001000000440000004500000046000000901810001e0000005074110013000000b903000009000000617373657274696f6e206661696c65643a20696e646578203c3d206c656e0000c81810001d0000005074110013000000e103000009000000617373657274696f6e206661696c65643a20696e646578203c206c656e0000000019100043000000f60a00003000000000000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962616c6c6f632f7665632e7273000019100043000000020b00002c0000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d312e302e352f7372632f636f6d706163742e72736865616420697320736574207768656e20666972737420656c656d656e7420697320696e7365727465640a090909090909616e6420756e736574207768656e206c61737420656c656d656e742069732072656d6f7665643b0a0909090909096966206865616420697320536f6d65207468656e20697420706f696e747320746f206578697374696e67206b65793b2071656470726576696f75732f6e657874206f6e6c7920636f6e7461696e206578697374696e6720656e74697265733b0a090909090909776520656e756d6572617465207573696e67206e6578743b20656e747279206578697374733b207165646f766572666c6f77206d756c7469706c79696e6720676173206c696d69742062792070726963650000003700000000000000010000004700000048000000490000004a0000004b0000004c0000000c1b1000330000003f1b10004b000000f600000005000000636f6e74726163742073756273797374656d20726573756c74696e6720696e20706f73697469766520696d62616c616e6365212f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f636f6e7472616374732f7372632f6163636f756e745f64622e72734f6666656e636573205265706f7274730000c01b100019000000e01b100048000000bb0100002d000000000000000000000000000000617474656d707420746f20646976696465206279207a65726f000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f6f70732f61726974682e7273616c726561647920626f72726f776564616c7265616479206d757461626c7920626f72726f7765643700000000000000010000004d0000003700000000000000010000004e000000387d110028000000881c10004300000055000000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f6f6666656e6365732f7372632f6c69622e727300881c1000430000005500000001000000551d10003600000054191000630000005e01000005000000000000000000000000000000181d10003d00000054191000630000006501000005000000736869667465642073756666696369656e74206269747320726967687420746f206c656164206f6e6c79206c656164696e67207a65726f733b2071656450726576696f7573206d617463682061726d206d61746368657320616e7974696e67206c657373207468616e20325e33303b2071656400551d10003600000054191000630000008a0100000500000000000000000000000000000000000000000000005419100063000000910100000500000053657373696f6e20486973746f726963616c53657373696f6e734c696e6b616765206973207570646174656420696e206361736520656e7472792069732072656d6f7665643b0a0909090909697420616c7761797320706f696e747320746f206578697374696e67206b6579733b20716564000000000000441f10000700000001010000000000004b1f10000d00000000000000581f10003400000000000000000000000000000000000000389711008c1f100000000000000000009c1f100001000000000000000000000000000000a41f10001600000002010100000000006f8c11000400000000000000738c11000e00000000000000ba1f1000120000000000000038971100cc1f10000000000000000000dc1f100001000000000000000100000000000000e41f10001200000001010000000000006f8c11000400000000000000e7ea1000070000000000000000000000000000000000000038971100f81f10000000000000000000082010000600000000000000010000005265706f7274735265706f727449644f663c543e4f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e3700000000000000010000004f000000a121100052000000436f6e63757272656e745265706f727473496e6465785665633c5265706f727449644f663c543e3e37000000000000000100000050000000572110004a0000005265706f72747342794b696e64496e646578000037000000000000000100000051000000382010004400000038971100000000007c2010002f0000003897110000000000ab20100052000000fd2010005a00000020456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f6620646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e20546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e72656163686564206d6178696d756d2064657074682c2063616e6e6f7420696e7374616e7469617465520000001800000004000000530000005400000055000000560000005700000058000000696e73756666696369656e742072656d61696e696e672062616c616e6365416c69766520636f6e7472616374206f7220746f6d6273746f6e6520616c7265616479206578697374736e6f7420656e6f7567682067617320746f20706179206261736520696e7374616e7469617465206665656e6f7420656e6f7567682067617320746f20706179207472616e736665722066656572656163686564206d6178696d756d2064657074682c2063616e6e6f74206d616b6520612063616c6c6e6f7420656e6f7567682067617320746f2070617920626173652063616c6c20666565636f6e747261637420686173206265656e2065766963746564636f6e74726163742063616e6e6f742062652064657374726f79656420647572696e672072656375727369766520657865637574696f6e61206e657374656420657865637574696f6e20636f6e74657874206d7573742068617665206120706172656e743b20716564696d2d6f6e6c696e653a6f66666c696e4f6666656e63657320436f6e63757272656e745265706f727473496e6465780000005900000008000000040000005a0000007375627374726174652d6e6f64650000df6acb689907609b0200000037e397fc7c91f5e40100000040fe3ad401f8959a03000000d2bc9897eed08f1501000000f78b278be53f454c01000000ed99c5acb25eedf502000000cbca25e39f14238701000000687ad44ad37f03c201000000bc9d89904f5b923f0100000068b66ba122c93fa701000000ab3c0572291feb8b010000006772616e62616265696d6f6e0000000040787d010065cd1d00e1f505d85aae1ec0542205b0508f1f38e4750488467020d853e903603c5121d0bf760338323222a8591903402013236039cd02480ef423a82a8f0268f8d42470955c02b8dab525c05a3302d8c4962648bd1102e0b27727a855f601e8a05828e8fedf0180773929c0cacd01586d1a2af8f1be019053fb2a50d8b201d00edc2be0fca80138edbc2c48f2a001e06d9d2d80669a01c80d7e2e500f9501c0575e2f08b6900140323f30e0278d0148202031b0418a0108a3ff3120e8870120bedf32f0fb85013856c03398698401f0fda03478218301b8d87f35d8178201d8c26036183d8101b8223e37508d800188d21c38c8fc7f0168b5f93898877f01a829d139d8297f0120d6ab3ab8db7e0168ae803b389d7e0100ca9a3b68957e0100000000d3bc100006000000000000005b000000000000000000000000000000000000000000000000000000000000005c0000000000000000000000000000005d0000000000000000000000000000005e0000000000000000000000000000003fa7100004000000000000005f000000000000000000000000000000000000000000000000000000000000005e0000000000000000000000020000000000000000000000000000000000000060000000000000000000000000000000e7df10000900000000000000610000000000000000000000000000000000000000000000000000000000000062000000000000000000000002000000000000000000000000000000000000006300000000000000000000000000000095a410000a00000000000000640000000000000000000000000000000000000000000000000000000000000065000000000000000000000002000000000000000000000000000000000000005e00000000000000000000000000000045db1000070000000000000066000000000000000000000000000000000000000000000000000000000000005e000000000000000000000000000000670000000000000000000000000000005e000000000000000000000000000000b239100008000000000000006800000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000006a0000000000000000000000000000006b000000000000000000000000000000d92d110007000000000000006c000000000000000000000000000000000000000000000000000000000000006d0000000000000000000000000000006e0000000000000000000000000000006f000000000000000000000000000000158b1000070000000000000070000000000000000000000000000000000000000000000000000000000000007100000000000000000000000000000072000000000000000000000000000000730000000000000000000000000000007955110009000000000000007400000000000000000000000000000000000000000000000000000000000000750000000000000000000000000000007600000000000000000000000000000077000000000000000000000000000000fe65100007000000000000007800000000000000000000000000000000000000000000000000000000000000790000000000000000000000000000007a0000000000000000000000000000005e000000000000000000000000000000382d100012000000000000007b00000000000000000000000000000000000000000000000000000000000000790000000000000000000000000000007a0000000000000000000000000000005e0000000000000000000000000000004a2d100009000000000000007c000000000000000000000000000000000000000000000000000000000000007d0000000000000000000000000000007e0000000000000000000000000000007f000000000000000000000000000000532d10001300000000000000800000000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000820000000000000000000000000000005e000000000000000000000000000000662d10000f000000020000000000000000000000000000000000000000000000000000000000000000000000830000000000000000000000020000000000000000000000000000000000000084000000000000000000000000000000752d10000700000000000000850000000000000000000000000000000000000000000000000000000000000086000000000000000000000000000000870000000000000000000000000000005e0000000000000000000000000000000596100008000000000000008800000000000000000000000000000000000000000000000000000000000000890000000000000000000000000000008a0000000000000000000000000000008b0000000000000000000000000000007c2d100009000000000000008c000000000000000000000000000000000000000000000000000000000000008d0000000000000000000000000000008e0000000000000000000000000000008f000000000000000000000000000000161311000400000000000000900000000000000000000000000000000000000000000000000000000000000091000000000000000000000000000000920000000000000000000000000000005e000000000000000000000000000000314610000800000000000000930000000000000000000000000000000000000000000000000000000000000094000000000000000000000000000000950000000000000000000000000000005e000000000000000000000000000000852d1000120000000200000000000000000000000000000000000000000000000000000000000000000000005e000000000000000000000002000000000000000000000000000000000000005e000000000000000000000000000000972d1000080000000000000096000000000000000000000000000000000000000000000000000000000000005e000000000000000000000000000000970000000000000000000000000000005e0000000000000000000000546563686e6963616c436f6d6d6974746565456c656374696f6e73546563686e6963616c4d656d6265727368697046696e616c697479547261636b65724772616e647061436f6e747261637473417574686f72697479446973636f766572794f6666656e6365735365656420697320616e207574663820737472696e67000000e02d1000480000009b0a00000a000000e02d100048000000a10a00000e00000000000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e727300000000ac2e10000a00000000000000e0151100020000000000000000000000b82e1000010000000000000000000000c02e10000d00000000000000a8431100010000000000000000000000d02e100001000000000000000000000000ea10000800000000000000d82e1000040000000000000000000000f82e100001000000000000004e65774163636f756e740000432f10001b0000005265617065644163636f756e740000002c2f100017000000d043110009000000d04311000900000011441100070000001144110007000000002f10002c000000205472616e7366657220737563636565646564202866726f6d2c20746f2c2076616c75652c2066656573292e20416e206163636f756e7420776173207265617065642e2041206e6577206163636f756e742077617320637265617465642e76657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75656163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c62656e6566696369617279206163636f756e74206d757374207072652d6578697374746f6f2066657720667265652066756e647320696e206163636f756e747061796d656e7420776f756c64206b696c6c206163636f756e740000000000003c3010001100000000000000503010000100000000000000000000005830100001000000000000004865617274626561745265636569766564000000903010000b00000060301000300000002041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460417574686f726974794964496d4f6e6c696e6520476f73736970417442616c616e63657320546f74616c49737375616e6365496d4f6e6c696e65204b65797342616c616e636573204672656542616c616e636542616c616e63657320526573657276656442616c616e636542616c616e636573204c6f636b7342616c616e6365732056657374696e6700000000000000a03110000800000000000000a8311000020000000000000000000000d8311000170000000000000000000000903210000b000000000000009c321000030000000000000000000000e43210000d00000000000000000000004c3310000e000000000000005c331000030000000000000000000000a433100002000000000000007472616e736665720000000046f1100004000000000000004b22110023000000000000005f55110005000000000000001934100013000000ed35100036000000389711000000000023361000420000006536100048000000ad36100045000000f23610002d00000038971100000000001f371000460000003897110000000000c54d11000b000000653710004c000000b137100033000000e43710005a00000038971100000000003e3810001300000038971100000000005138100054000000a53810004b000000f03810003500000025391000370000005c391000560000003897110000000000d84d11000c0000007365745f62616c616e636500000000005712110003000000000000004b2211002300000000000000d93510000800000000000000193410001300000000000000e13510000c0000000000000019341000130000002c34100025000000389711000000000051341000480000009934100042000000db34100046000000213510003a00000038971100000000005b3510002d0000003897110000000000c54d11000b0000008835100020000000a835100031000000d84d11000c000000666f7263655f7472616e736665720000000000001334100006000000000000004b221100230000000000000046f1100004000000000000004b22110023000000000000005f55110005000000000000001934100013000000b433100054000000083410000b0000002045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265207370656369666965642e736f75726365436f6d706163743c543a3a42616c616e63653e20536574207468652062616c616e636573206f66206120676976656e206163636f756e742e20546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c20616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e20496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742c2069742077696c6c20726573657420746865206163636f756e74206e6f6e636520286073797374656d3a3a4163636f756e744e6f6e636560292e20546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e202d20496e646570656e64656e74206f662074686520617267756d656e74732e202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e6e65775f667265656e65775f7265736572766564205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e20607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e2049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e204966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74206f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e2052656c617465642066756e6374696f6e733a2020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c20636175736520202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e2020202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c2074726967676572202020202060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e6365646020616e642060543a3a4f6e4672656542616c616e63655a65726f3a3a6f6e5f667265655f62616c616e63655f7a65726f602e42616c616e636573000000000000743b10000d0000000000000000000000813b10000a0000000000000000000000000000000000000000000000000000000000000038971100543c100000000000000000008c3b100001000000000000000100000000000000943b10000700000001010000000000000b4e11000c000000000000009b3b10002b0000000000000000000000000000000000000038971100c83b10000000000000000000d83b100001000000000000000000000000000000e03b10000b00000001010000000000000b4e11000c00000000000000813b10000a0000000000000000000000000000000000000038971100543c10000000000000000000ec3b10000b000000000000000100000000000000443c10000f00000001010000000000000b4e11000c00000000000000813b10000a0000000000000000000000000000000000000038971100543c10000000000000000000643c10000b000000000000000100000000000000bc3c10000500000001010000000000000b4e11000c00000000000000c13c10002c0000000000000000000000000000000000000038971100f03c10000000000000000000003d1000010000000000000001000000546f74616c49737375616e6365543a3a42616c616e636500314210002600000056657374696e6756657374696e675363686564756c653c543a3a42616c616e63652c20543a3a426c6f636b4e756d6265723e00003700000000000000010000004f000000fb411000360000004672656542616c616e636500813f1000270000003897110000000000a83f100050000000f83f10005d0000005540100055000000aa4010004f000000f9401000510000004a4110001500000038971100000000005f41100057000000b641100045000000526573657276656442616c616e63650037000000000000000100000098000000363d10005d000000933d1000270000003897110000000000ba3d10005b000000153e10004900000038971100000000005e3e10005d000000bb3e10002d0000003897110000000000e83e1000530000003b3f1000460000004c6f636b735665633c42616c616e63654c6f636b3c543a3a42616c616e63652c20543a3a426c6f636b4e756d6265723e3e00000037000000000000000100000050000000083d10002e00000020416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2054686520616d6f756e74206f66207468652062616c616e6365206f66206120676976656e206163636f756e7420746861742069732065787465726e616c6c792072657365727665643b20746869732063616e207374696c6c2067657420736c61736865642c20627574206765747320736c6173686564206c617374206f6620616c6c2e20546869732062616c616e63652069732061202772657365727665272062616c616e63652074686174206f746865722073756273797374656d732075736520696e206f7264657220746f2073657420617369646520746f6b656e73207468617420617265207374696c6c20276f776e65642720627920746865206163636f756e7420686f6c6465722c20627574207768696368206172652073757370656e6461626c652e205768656e20746869732062616c616e63652066616c6c732062656c6f77207468652076616c7565206f6620604578697374656e7469616c4465706f736974602c207468656e2074686973202772657365727665206163636f756e74272069732064656c657465643a207370656369666963616c6c792c2060526573657276656442616c616e6365602e206073797374656d3a3a4163636f756e744e6f6e63656020697320616c736f2064656c6574656420696620604672656542616c616e63656020697320616c736f207a65726f2028697420616c736f206765747320636f6c6c617073656420746f207a65726f2069662069742065766572206265636f6d6573206c657373207468616e20604578697374656e7469616c4465706f736974602e2920546865202766726565272062616c616e6365206f66206120676976656e206163636f756e742e205468697320697320746865206f6e6c792062616c616e63652074686174206d61747465727320696e207465726d73206f66206d6f7374206f7065726174696f6e73206f6e20746f6b656e732e20497420616c6f6e65206973207573656420746f2064657465726d696e65207468652062616c616e6365207768656e20696e2074686520636f6e747261637420657865637574696f6e20656e7669726f6e6d656e742e205768656e20746869732062616c616e63652066616c6c732062656c6f77207468652076616c7565206f6620604578697374656e7469616c4465706f736974602c207468656e20746865202763757272656e74206163636f756e74272069732064656c657465643a207370656369666963616c6c7920604672656542616c616e6365602e20467572746865722c2074686520604f6e4672656542616c616e63655a65726f602063616c6c6261636b20697320696e766f6b65642c20676976696e672061206368616e636520746f2065787465726e616c206d6f64756c657320746f20636c65616e2075702064617461206173736f6369617465642077697468207468652064656c65746564206163636f756e742e206073797374656d3a3a4163636f756e744e6f6e63656020697320616c736f2064656c657465642069662060526573657276656442616c616e63656020697320616c736f207a65726f2028697420616c736f206765747320636f6c6c617073656420746f207a65726f2069662069742065766572206265636f6d6573206c657373207468616e20604578697374656e7469616c4465706f736974602e20496e666f726d6174696f6e20726567617264696e67207468652076657374696e67206f66206120676976656e206163636f756e742e2054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e0000000000704310001200000000000000813b10000a000000000000003897110084431000000000000000000094431000010000000000000000000000000011000b00000000000000813b10000a00000000000000389711009c43100000000000000000000c001100010000000000000000000000140011000b00000000000000813b10000a00000000000000389711009c431000000000000000000020001100010000000000000000000000280011001200000000000000813b10000a00000000000000389711009c43100000000000000000003c001100010000000000000000000000440011001200000000000000813b10000a0000000000000038971100ac43100000000000000000006800110001000000000000004578697374656e7469616c4465706f736974000037000000000000000100000099000000bc431000350000003700000000000000010000009a0000003700000000000000010000009b00000020546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e776520676f74207468652076616c696461746f725f69642066726f6d2063757272656e745f76616c696461746f72733b0a09090909090963757272656e745f76616c696461746f727320697320736574206f662063757272656e746c7920616374696e672076616c696461746f72733b0a090909090909746865206d617070696e67206265747765656e207468652076616c696461746f7220696420616e64206974732066756c6c206964656e74696669636174696f6e2073686f756c642062652076616c69643b0a09090909090974687573206046756c6c4964656e74696669636174696f6e4f663a3a636f6e76657274602063616e27742072657475726e20604e6f6e65603b0a09090909090971656473726d6c2f696d2d6f6e6c696e652d776f726b65722d7374617475730030451000480000009b0a00000a0000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e727300000000a44510000900000000000000b045100002000000000000000000000038971100000000000000000068656172746265617400000000000000a44510000900000000000000e04510001900000000000000f94510000900000000000000024610002f0000004865617274626561743c543a3a426c6f636b4e756d6265723e7369676e61747572653c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e6174757265496d4f6e6c696e650000000000000044471000080000000000000000000000925111000e00000000000000000000000000000000000000000000000000000000000000389711004c47100000000000000000005c4710000100000000000000010000000000000064471000040000000000000000000000684710001300000000000000000000000000000000000000000000000000000000000000389711007c47100000000000000000008c47100001000000000000000100000000000000944710001200000002010100000000009f8d11000c00000000000000a64710000900000000000000e7ea1000070000000000000038971100b04710000000000000000000c0471000020000000000000001000000476f7373697041743700000000000000010000009c00000061481000280000004b6579735665633c543a3a417574686f7269747949643e00370000000000000001000000500000002d4810003400000052656365697665644865617274626561747341757468496e6465780037000000000000000100000051000000d04710003a0000000a4810002300000020466f7220656163682073657373696f6e20696e646578207765206b6565702061206d617070696e67206f662060417574686f7269747949646020746f20606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e2054686520626c6f636b206e756d626572207768656e2077652073686f756c6420676f737369702e6e6f7420656e6f75676820667265652066756e64730000387d110028000000b84810004300000096010000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f62616c616e6365732f7372632f6c69622e72734f75746461746564206865617274626561742072656365697665642e496e76616c696420686561727462656174207369676e61747572652e4475706c696361746564206865617274626561742e4e6f6e206578697374656e74207075626c6963206b65792eb8481000430000009601000001000000676f74206f766572666c6f7720616674657220616464696e6720612066656520746f2076616c756562616c616e636520746f6f206c6f7720746f2073656e642076616c756564657374696e6174696f6e2062616c616e636520746f6f206869676820746f20726563656976652076616c756576616c756520746f6f206c6f7720746f20637265617465206163636f756e7454696d657374616d702055706461746554696d657374616d7020526563656e7448696e74730000404a100031000000714a10004b0000007d0000000400000046696e616c2068696e74206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b2f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f66696e616c6974792d747261636b65722f7372632f6c69622e7273d44a100023000000714a10004b0000007e0000000400000046696e616c697a6564206865696768742061626f766520626c6f636b206e756d62657200104b100019000000304b100048000000bb0100002d000000617474656d707420746f20646976696465206279207a65726f000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f6f70732f61726974682e7273576974686472617720686173206265656e20636865636b65642061626f76653b0a090909647565735f6c696d69746564203c2072656e745f627564676574203c2062616c616e6365202d2073756273697374656e6365203c2062616c616e6365202d206578697374656e7469616c5f6465706f7369743b0a09090971656400005900000008000000040000009d00000054696d657374616d70204f72646572656448696e747354696d657374616d70204d656469616e616c77617973206174206c65617374206f6e6520726563656e742073616d706c653b20716564726563656e7420616e64206f72646572656420636f6e7461696e207468652073616d65206974656d733b2071656400003300000004000000040000009e000000084d100043000000714a10004b000000b600000004000000c04c1000480000009b0a00000a000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e72737072756e696e672064696374617465642062792077696e646f775f73697a6520776869636820697320616c776179732073617475726174656420617420313b207165640000000000784d10000a00000000000000844d10000100000000000000000000009c4d1000020000000000000066696e616c5f68696e74000000000000f26510000400000000000000de4e110017000000ac4d10003d000000e94d10001b0000002048696e7420746861742074686520617574686f72206f66207468697320626c6f636b207468696e6b732074686520626573742066696e616c697a656420626c6f636b2069732074686520676976656e206e756d6265722e00000000744e10000a00000000000000925111000e0000000000000038971100804e10000000000000000000904e1000010000000000000000000000984e10000d00000000000000925111000e0000000000000038971100a84e10000000000000000000b84e1000010000000000000057696e646f7753697a6500003700000000000000010000009f000000074f1000460000005265706f72744c6174656e6379000000370000000000000001000000a0000000c04e100047000000205468652064656c617920616674657220776869636820706f696e74207468696e6773206265636f6d6520737573706963696f75732e2044656661756c7420697320313030302e20546865206e756d626572206f6620726563656e742073616d706c657320746f206b6565702066726f6d207468697320636861696e2e2044656661756c74206973203130312e00000000000000005010000b000000000000008c4311000200000000000000000000000c501000010000000000000000000000145010001000000000000000a8431100010000000000000000000000245010000100000000000000000000002c5010000c0000000000000068ea100001000000000000000000000038501000010000000000000000000000405010000e0000000000000050501000020000000000000000000000605010000100000000000000566f74657252656170656400fe50100015000000426164526561706572536c6173686564ef5010000f00000054616c6c7953746172746564ba5010003500000054616c6c7946696e616c697a65640000184411000e000000184411000e000000685010005200000020412074616c6c792028666f7220617070726f76616c20766f746573206f662073656174287329292068617320656e646564202877697468206f6e65206f72206d6f7265206e6577206d656d62657273292e20412074616c6c792028666f7220617070726f76616c20766f746573206f662073656174287329292068617320737461727465642e20736c6173686564207265617065722072656170656420766f7465722c20726561706572436f756e63696c205265676973746572496e666f4f66436f756e63696c204d656d62657273436f756e63696c204e65787446696e616c697a6540521000480000009b0a00000a000000436f756e63696c205465726d4475726174696f6e436f756e63696c2050726573656e746174696f6e4475726174696f6e436f756e63696c204c6561646572626f617264004052100048000000a10a00000e000000436f756e63696c2043616e64696461746573436f756e63696c20566f746572496e666f4f6647757275206d656469746174696f6e66696e616c697a652063616e206f6e6c792062652063616c6c656420616674657220612074616c6c7920697320737461727465642e436f756e63696c20417070726f76616c734f66436f756e63696c20566f746572730000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e727300000000405410000d0000000000000050541000040000000000000000000000b05410001800000000000000000000007055100013000000000000005054100004000000000000000000000084551000060000000000000000000000b45510001300000000000000c8551000040000000000000000000000285610000c0000000000000000000000885610000d0000000000000098561000010000000000000000000000b05610000a000000000000000000000000571000100000000000000010571000010000000000000000000000285710000d0000000000000000000000905710000e00000000000000a0571000030000000000000000000000e8571000090000000000000000000000305810001100000000000000445810000100000000000000000000005c581000030000000000000000000000cce310000d00000000000000745810000100000000000000000000008c581000040000000000000000000000ac5810001900000000000000c8581000010000000000000000000000e0581000020000000000000000000000f05810001100000000000000c85810000100000000000000000000000459100002000000000000007365745f617070726f76616c7300000000000000e46510000500000000000000e96510000900000000000000e4cd10000500000000000000ac5c10001200000000000000f26510000400000000000000f665100008000000000000005f55110005000000000000007a6511000c0000009161100058000000e9611000100000003897110000000000f9611000530000004c6210003000000038971100000000007c62100035000000b162100055000000066310002a00000030631000530000008363100057000000da631000510000002b6410003b0000006664100057000000bd641000370000003897110000000000f46410005400000048651000340000003897110000000000c54d11000b000000d04d1100080000007c65100027000000a365100041000000d84d11000c00000070726f78795f7365745f617070726f76616c7300e060100059000000396110001c0000003897110000000000c54d11000b000000556110003c000000d84d11000c000000726561705f696e6163746976655f766f7465720000000000b76010000e00000000000000fa4e11000c000000000000005712110003000000000000004b2211002300000000000000c56010000900000000000000fa4e11000c00000000000000ce6010001200000000000000ac5c100012000000565f100058000000ae5f100056000000046010002e00000038971100000000003260100045000000389711000000000077601000400000003897110000000000c54d11000b000000d04d1100080000002f5f100027000000d84d11000c000000726574726163745f766f74657200000000000000e4cd10000500000000000000fa4e11000c000000535e10004b00000038971100000000009e5e1000420000003897110000000000e05e10004f0000003897110000000000c54d11000b000000d04d1100080000002f5f100027000000d84d11000c0000007375626d69745f63616e646964616379000000004f5e10000400000000000000fa4e11000c000000be5c10001e0000003897110000000000dc5c1000440000003897110000000000205d100048000000685d100051000000b95d10004c000000055e10001e0000003897110000000000c54d11000b000000235e1000180000003b5e100014000000d84d11000c00000070726573656e745f77696e6e65720000000000009e5c100009000000000000004b2211002300000000000000a75c10000500000000000000645511001500000000000000e4cd10000500000000000000ac5c1000120000007b5b100058000000d35b1000580000002b5c100057000000825c1000070000003897110000000000c54d11000b000000895c100015000000b712110011000000d84d11000c0000007365745f646573697265645f736561747300000000000000d65910000500000000000000fa4e11000c000000bb5a100059000000145b100052000000665b100015000000000000005712110003000000000000004b22110023000000db591000480000003897110000000000235a1000480000006b5a1000500000007365745f70726573656e746174696f6e5f6475726174696f6e00000000000000d65910000500000000000000de4e110017000000805910005600000068591000180000007365745f7465726d5f6475726174696f6e0000001459100054000000685910001800000020536574207468652070726573656e746174696f6e206475726174696f6e2e2049662074686572652069732063757272656e74206120766f7465206265696e672070726573656e74656420666f722c2077696c6c20696e766f6b65206066696e616c697a655f766f7465602e20536574207468652070726573656e746174696f6e206475726174696f6e2e2049662074686572652069732063757272656e746c79206120766f7465206265696e672070726573656e74656420666f722c2077696c6c636f756e742052656d6f7665206120706172746963756c6172206d656d6265722066726f6d20746865207365742e20546869732069732065666665637469766520696d6d6564696174656c792e204e6f74653a20412074616c6c792073686f756c642068617070656e20696e7374616e746c7920286966206e6f7420616c726561647920696e20612070726573656e746174696f6e20706572696f642920746f2066696c6c2074686520736561742069662072656d6f76616c206d65616e732074686174207468652064657369726564206d656d6265727320617265206e6f74206d65742e20536574207468652064657369726564206d656d62657220636f756e743b206966206c6f776572207468616e207468652063757272656e7420636f756e742c207468656e2073656174732077696c6c206e6f7420626520757020656c656374696f6e207768656e2074686579206578706972652e204966206d6f72652c207468656e2061206e657720766f74652077696c6c2062652073746172746564206966206f6e65206973206e6f7420616c726561647920696e2070726f67726573732e20436c61696d2074686174206063616e64696461746560206973206f6e65206f662074686520746f70206063617272795f636f756e74202b20646573697265645f7365617473602063616e646964617465732e204f6e6c7920776f726b7320696666207468652070726573656e746174696f6e20706572696f64206973206163746976652e206063616e646964617465602073686f756c642068617665206174206c6561737420636f6c6c656374656420736f6d65206e6f6e2d7a65726f2060746f74616c6020766f74657320616e6420606f726967696e60206d757374206861766520656e6f7567682066756e647320746f2070617920666f72206120706f74656e7469616c20736c6173682e202d204f28766f746572732920636f6d707574652e63616e646964617465746f74616c436f6d706163743c566f7465496e6465783e205375626d6974206f6e6573656c6620666f722063616e6469646163792e204163636f756e74206d757374206861766520656e6f756768207472616e736665727261626c652066756e647320696e20697420746f207061792074686520626f6e642e204e4f54453a20696620606f726967696e602068617320616c72656164792061737369676e656420617070726f76616c7320766961205b607365745f617070726f76616c73605d2c2069742077696c6c204e4f54206861766520616e7920757361626c652066756e647320746f20706173732063616e64696461637920626f6e6420616e64206d75737420666972737420726574726163742e204e6f746520746861742073657474696e6720617070726f76616c732077696c6c206c6f636b2074686520656e746972652062616c616e6365206f662074686520766f74657220756e74696c2072657472616374696f6e206f72206265696e67207265706f727465642e202d20496e646570656e64656e74206f6620696e7075742e202d205468726565204442206368616e6765732e736c6f742052656d6f7665206120766f7465722e20416c6c20766f746573206172652063616e63656c6c656420616e642074686520766f746572206465706f7369742069732072657475726e65642e2054686520696e646578206d7573742062652070726f7669646564206173206578706c61696e656420696e205b60766f7465725f6174605d2066756e6374696f6e2e20416c736f2072656d6f76657320746865206c6f636b206f6e207468652062616c616e6365206f662074686520766f7465722e20536565205b60646f5f7365745f617070726f76616c732829605d2e202d2054776f20666577657220444220656e74726965732c206f6e65204442206368616e67652e2052656d6f7665206120766f7465722e20466f72206974206e6f7420746f206265206120626f6e642d636f6e73756d696e67206e6f2d6f702c20616c6c20617070726f7665642063616e64696461746520696e6469636573206d757374206e6f772062652065697468657220756e72656769737465726564206f72207265676973746572656420746f20612063616e646964617465207468617420726567697374657265642074686520736c6f742061667465722074686520766f7465722067617665207468656972206c61737420617070726f76616c207365742e20426f746820696e6469636573206d7573742062652070726f7669646564206173206578706c61696e656420696e205b60766f7465725f6174605d2066756e6374696f6e2e204d61792062652063616c6c656420627920616e796f6e652e2052657475726e732074686520766f746572206465706f73697420746f20607369676e6564602e7265706f727465725f696e64657877686f5f696e646578617373756d65645f766f74655f696e646578205365742063616e64696461746520617070726f76616c732066726f6d20612070726f78792e20417070726f76616c20736c6f747320737461792076616c6964206173206c6f6e672061732063616e6469646174657320696e2074686f736520736c6f74732061726520726567697374657265642e202d2053616d6520617320607365745f617070726f76616c73602077697468206f6e65206164646974696f6e616c2073746f7261676520726561642e205365742063616e64696461746520617070726f76616c732e20417070726f76616c20736c6f747320737461792076616c6964206173206c6f6e672061732063616e6469646174657320696e2074686f736520736c6f74732061726520726567697374657265642e204c6f636b73206076616c7565602066726f6d207468652062616c616e6365206f6620606f726967696e6020696e646566696e6974656c792e204f6e6c79205b60726574726163745f766f746572605d206f72205b60726561705f696e6163746976655f766f746572605d2063616e20756e6c6f636b207468652062616c616e63652e206068696e746020617267756d656e7420697320696e74657270726574656420646966666572656e746c79206261736564206f6e3a202d20696620606f726967696e602069732073657474696e6720617070726f76616c7320666f72207468652066697273742074696d653a2054686520696e6465782077696c6c20626520636865636b656420666f722020206265696e6720612076616c6964205f686f6c655f20696e2074686520766f746572206c6973742e2020202d206966207468652068696e7420697320636f72726563746c7920706f696e74696e6720746f206120686f6c652c206e6f206665652069732064656475637465642066726f6d20606f726967696e602e2020202d204f74686572776973652c207468652063616c6c2077696c6c2073756363656564206275742074686520696e6465782069732069676e6f72656420616e642073696d706c792061207075736820746f2074686520202020206c617374206368756e6b207769746820667265652073706163652068617070656e732e20496620746865206e65772070757368206361757365732061206e6577206368756e6b20746f2062652020202020637265617465642c20612066656520696e64696361746564206279205b60566f74696e67466565605d2069732064656475637465642e202d20696620606f726967696e6020697320616c7265616479206120766f7465723a2074686520696e646578205f5f6d7573745f5f2062652076616c696420616e6420706f696e7420746f2074686520636f7272656374202020706f736974696f6e206f662074686520606f726967696e6020696e207468652063757272656e7420766f74657273206c6973742e204e6f7465207468617420616e7920747261696c696e67206066616c73656020766f74657320696e2060766f746573602069732069676e6f7265643b20496e20617070726f76616c20766f74696e672c206e6f7420766f74696e6720666f7220612063616e64696461746520616e6420766f74696e672066616c73652c2061726520657175616c2e202d2054776f20657874726120444220656e74726965732c206f6e65204442206368616e67652e202d20417267756d656e742060766f74657360206973206c696d6974656420696e206c656e67746820746f206e756d626572206f662063616e646964617465732e766f7465735665633c626f6f6c3e68696e74536574496e646578436f756e63696c00000000000000886b1000140000000000000000000000925111000e00000000000000000000000000000000000000000000000000000000000000389711008c76100000000000000000009c6b100001000000000000000100000000000000a46b10000c0000000000000000000000925111000e00000000000000000000000000000000000000000000000000000000000000389711008c7610000000000000000000b06b100001000000000000000100000000000000b86b10000c0000000000000000000000763411000300000000000000000000000000000000000000000000000000000000000000389711008c7610000000000000000000c46b100001000000000000000100000000000000ace61000070000000000000000000000cc6b1000230000000000000000000000000000000000000000000000000000000000000038971100386d10000000000000000000f06b100004000000000000000100000000000000106c1000090000000000000000000000196c10000900000000000000000000000000000000000000000000000000000000000000389711008c7610000000000000000000246c1000010000000000000001000000000000002c6c10000b0000000101000000000000376c100018000000000000004f6c1000110000000000000000000000000000000000000038971100386d100000000000000000003897110000000000000000000100000000000000606c10000e00000001010000000000000b4e11000c000000000000006e6c1000100000000000000000000000000000000000000038971100806c10000000000000000000906c100002000000000000000000000000000000a06c10000b00000001010000000000000b4e11000c00000000000000ab6c1000170000000000000000000000000000000000000038971100c46c10000000000000000000d46c100001000000000000000000000000000000dc6c1000060000000101000000000000f66510000800000000000000e26c1000190000000000000000000000000000000000000038971100386d10000000000000000000fc6c100001000000000000000100000000000000046d10000c0000000000000000000000f66510000800000000000000000000000000000000000000000000000000000000000000389711008c7610000000000000000000106d100001000000000000000100000000000000186d10000a0000000000000000000000f66510000800000000000000000000000000000000000000000000000000000000000000389711008c7610000000000000000000246d1000010000000000000001000000000000002c6d10000a0000000000000000000000255c1100110000000000000000000000000000000000000000000000000000000000000038971100386d10000000000000000000486d100001000000000000000100000000000000506d10000e0000000000000000000000763411000300000000000000000000000000000000000000000000000000000000000000389711008c7610000000000000000000606d100001000000000000000100000000000000686d10000c0000000000000000000000746d10002800000000000000000000000000000000000000000000000000000000000000389711009c6d10000000000000000000ac6d100001000000000000000000000000000000b46d10000b0000000000000000000000bf6d1000210000000000000000000000000000000000000000000000000000000000000038971100e06d10000000000000000000f06d100003000000000000000000000000000000a85c11000500000001010000000000000b4e11000c000000000000000b4e11000c0000000000000000000000000000000000000038971100086e10000000000000000000c05c110002000000000000000000000050726573656e746174696f6e4475726174696f6e6f7210004f0000005465726d4475726174696f6e49721000260000004465736972656453656174730f7210003a0000005665633c28543a3a4163636f756e7449642c20543a3a426c6f636b4e756d626572293e00e37010005500000038711000550000008d71100054000000e17110002e000000566f7465436f756e74566f7465496e64657800009c70100047000000417070726f76616c734f6628543a3a4163636f756e7449642c20536574496e646578295665633c417070726f76616c466c61673e5265676973746572496e666f4f6628566f7465496e6465782c20753332290000370000000000000001000000a100000027701000570000007e7010001e000000566f746572496e666f4f66566f746572496e666f3c42616c616e63654f663c543e3e00003700000000000000010000004f0000000670100021000000566f746572735665633c4f7074696f6e3c543a3a4163636f756e7449643e3e00c36f1000430000004e657874566f746572536574846f10003f000000566f746572436f756e7400006a6f10001a00000043616e646964617465730000370000000000000001000000500000004e6f10001c00000043616e646964617465436f756e7400002a6f1000240000004e65787446696e616c697a6528543a3a426c6f636b4e756d6265722c207533322c205665633c543a3a4163636f756e7449643e29370000000000000001000000a2000000e26e1000480000004c6561646572626f6172645665633c2842616c616e63654f663c543e2c20543a3a4163636f756e744964293e3700000000000000010000004f000000186e100058000000706e100059000000c96e1000190000003700000000000000010000004f0000002047657420746865206c6561646572626f61726420696620776527726520696e207468652070726573656e746174696f6e2070686173652e2054686520666972737420656c656d656e742069732074686520776569676874206f66206561636820656e7472793b204974206d617920626520746865206469726563742073756d6d656420617070726f76616c207374616b65732c206f7220612077656967687465642076657273696f6e206f662069742e20536f727465642066726f6d206c6f7720746f20686967682e20546865206163636f756e747320686f6c64696e672074686520736561747320746861742077696c6c206265636f6d652066726565206f6e20746865206e6578742074616c6c792e2043757272656e74206e756d626572206f66206163746976652063616e64696461746573205468652070726573656e742063616e646964617465206c6973742e2043757272656e74206e756d626572206f6620566f746572732e20746865206e65787420667265652073657420746f2073746f7265206120766f74657220696e2e20546869732077696c6c206b6565702067726f77696e672e205468652070726573656e7420766f746572206c69737420286368756e6b656420616e6420636170706564206174205b60564f5445525f5345545f53495a45605d292e20426173696320696e666f726d6174696f6e2061626f7574206120766f7465722e2054686520766f746520696e64657820616e64206c69737420736c6f742074686174207468652063616e646964617465206077686f60207761732072656769737465726564206f7220604e6f6e6560206966207468657920617265206e6f742063757272656e746c7920726567697374657265642e2054686520746f74616c206e756d626572206f6620766f746520726f756e6473207468617420686176652068617070656e6564206f722061726520696e2070726f67726573732e20205468652063757272656e74206d656d626572736869702e205768656e2074686572652773206120766f746520676f696e67206f6e2c20746869732073686f756c64207374696c6c206265207573656420666f722020657865637574697665206d6174746572732e2054686520626c6f636b206e756d62657220287365636f6e6420656c656d656e7420696e20746865207475706c65292069732074686520626c6f636b20746861742020746865697220706f736974696f6e2069732061637469766520756e74696c202863616c63756c61746564206279207468652073756d206f662074686520626c6f636b206e756d626572207768656e2074686520206d656d6265722077617320656c656374656420616e64207468656972207465726d206475726174696f6e292e204e756d626572206f66206163636f756e747320746861742073686f756c6420636f6e737469747574652074686520636f6c6c6563746976652e20486f77206c6f6e67206561636820706f736974696f6e2069732061637469766520666f722e20486f77206c6f6e6720746f2067697665206561636820746f702063616e64696461746520746f2070726573656e74207468656d73656c7665732061667465722074686520766f746520656e64732e000000000000287510000d000000000000007a6511000c000000000000003897110038751000000000000000000048751000020000000000000000000000587510000a000000000000007a6511000c0000000000000038971100687610000000000000000000647510000100000000000000000000006c75100009000000000000007a6511000c0000000000000038971100787510000000000000000000887510000200000000000000000000009875100014000000000000007a6511000c0000000000000038971100ac7510000000000000000000bc751000020000000000000000000000cc7510000a0000000000000076341100030000000000000038971100d87510000000000000000000e8751000020000000000000000000000f87510001300000000000000196c10000900000000000000389711000c76100000000000000000001c761000030000000000000000000000586511000c00000000000000925111000e0000000000000038971100347610000000000000000000447610000200000000000000000000005476100011000000000000007a6511000c000000000000003897110068761000000000000000000078761000010000000000000000000000807610000a00000000000000763411000300000000000000389711008c76100000000000000000009c761000050000000000000000000000c47610000e0000000000000076341100030000000000000038971100d47610000000000000000000e4761000010000000000000000000000ec76100011000000000000007634110003000000000000003897110000771000000000000000000010771000010000000000000043616e646964616379426f6e64000000370000000000000001000000a30000005f7b10004e000000ad7b100014000000566f74696e67426f6e6400001d7b100042000000566f74696e67466565000000370000000000000001000000a4000000b67a10004a000000007b10001d00000050726573656e74536c617368506572566f7465723700000000000000010000009a000000527a100045000000977a10001f0000004361727279436f756e740000370000000000000001000000a5000000e4791000470000002b7a100027000000496e6163746976654772616365506572696f6400370000000000000001000000a6000000477910004c000000937910004b000000de79100006000000370000000000000001000000a7000000f5781000490000003e791000090000004d696e696d756d566f74696e674c6f636b00000037000000000000000100000099000000b67810003f0000004465636179526174696f00003700000000000000010000009c000000637710004d000000b077100041000000f177100047000000387810004a0000008278100034000000564f5445525f5345545f53495a450000370000000000000001000000a80000003f77100024000000415050524f56414c5f5345545f53495a45000000370000000000000001000000a9000000187710002700000020546865206368756e6b2073697a65206f662074686520617070726f76616c20766563746f722e20546865206368756e6b2073697a65206f662074686520766f74657220766563746f722e20446563617920666163746f72206f6620776569676874207768656e206265696e6720616363756d756c617465642e2049742073686f756c64207479706963616c6c792062652073657420746f205f5f6174206c656173745f5f20606d656d626572736869705f73697a65202d316020746f206b6565702074686520636f6c6c656374697665207365637572652e205768656e2073657420746f20604e602c20697420696e64696361746573206028312f4e295e7460206f66207374616b656420697320646563617965642061742077656967687420696e6372656d656e742073746570206074602e20302077696c6c20726573756c7420696e206e6f20776569676874206265696e6720616464656420617420616c6c20286e6f726d616c20617070726f76616c20766f74696e67292e204120726561736f6e61626c652064656661756c742076616c75652069732032342e204d696e696d756d2061626f757420746861742063616e206265207573656420617320746865206c6f636b65642076616c756520666f7220766f74696e672e20486f77206f6674656e2028696e20626c6f636b732920746f20636865636b20666f72206e657720766f7465732e204120726561736f6e61626c652064656661756c742076616c756520697320313030302e20486f77206d616e7920766f746520696e6469636573206e65656420746f20676f20627920616674657220612074617267657420766f7465722773206c61737420766f7465206265666f726520746865792063616e2062652072656170656420696620746865697220617070726f76616c7320617265206d6f6f742e204120726561736f6e61626c652064656661756c742076616c756520697320312e20486f77206d616e792072756e6e6572732d75702073686f756c64206861766520746865697220617070726f76616c73207065727369737420756e74696c20746865206e65787420766f74652e204120726561736f6e61626c652064656661756c742076616c756520697320322e205468652070756e6973686d656e742c2070657220766f7465722c20696620796f752070726f7669646520616e20696e76616c69642070726573656e746174696f6e2e204120726561736f6e61626c652064656661756c742076616c756520697320312e2054686520616d6f756e74206f662066656520706169642075706f6e206561636820766f7465207375626d697373696f6e2c20756e6c6573732069662074686579207375626d69742061205f686f6c655f20696e64657820616e64207265706c6163652069742e20486f77206d7563682073686f756c64206265206c6f636b656420757020696e206f7264657220746f2062652061626c6520746f207375626d697420766f7465732e20486f77206d7563682073686f756c64206265206c6f636b656420757020696e206f7264657220746f207375626d6974206f6e6527732063616e6469646163792e204120726561736f6e61626c652064656661756c742076616c756520697320392e000000387d110028000000dc7b1000440000000e010000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f656c656374696f6e732f7372632f6c69622e7273dc7b1000440000000e01000001000000436f756e63696c2050726f787963616e6e6f74207265617020647572696e672070726573656e746174696f6e20706572696f64766f746520696e646578206e6f742063757272656e7463616e6e6f74207265617020647572696e6720677261636520706572696f6474617267657420666f7220696e616374697669747920636c65616e7570206d757374206265206163746976657265706f72746572206d757374206265206120766f746572696e76616c6964207265706f7274657220696e646578696e76616c69642074617267657420696e646578626164207265706f7274657220696e6465786261642074617267657420696e64657872657472616374696f6e20696e64657820696e76616c696472657472616374696f6e20696e646578206d69736d6174636863616e6e6f742072657472616374207768656e2070726573656e74696e6763616e6e6f742072657472616374206e6f6e2d766f7465726475706c69636174652063616e646964617465207375626d697373696f6e696e76616c69642063616e64696461746520736c6f7463616e64696461746520686173206e6f7420656e6f7567682066756e647363616e6e6f742070726573656e74206f757473696465206f662070726573656e746174696f6e20706572696f64696e646578206e6f742063757272656e747374616b65206465706f736974656420746f2070726573656e742077696e6e657220616e6420626520616464656420746f206c6561646572626f6172642073686f756c64206265206e6f6e2d7a65726f6c6561646572626f617264206d757374206578697374207768696c652070726573656e742070686173652061637469766570726573656e746572206d75737420686176652073756666696369656e7420736c61736861626c652066756e647370726573656e7465642063616e646964617465206d7573742062652063757272656e7463616e646964617465206e6f7420776f72746879206f66206c6561646572626f61726463616e646964617465206d757374206e6f7420666f726d2061206475706c696361746564206d656d62657220696620656c65637465646475706c69636174652070726573656e746174696f6e696e636f727265637420746f74616c6e6f20617070726f76616c206368616e67657320647572696e672070726573656e746174696f6e20706572696f64696e636f727265637420766f746520696e646578616d6f756e74206f662063616e6469646174657320746f207265636569766520617070726f76616c20766f7465732073686f756c64206265206e6f6e2d7a65726f616d6f756e74206f662063616e64696461746520766f7465732063616e6e6f742065786365656420616d6f756e74206f662063616e646964617465736c6f636b65642076616c7565206d757374206265206d6f7265207468616e206c696d697477726f6e6720766f74657220696e6465786e657720766f746572206d75737420686176652073756666696369656e742066756e647320746f207061792074686520626f6e64696e76616c696420766f74657220696e646578000000000000e442110008000000000000008881100001000000000000000000000090811000010000000000000000000000988110000800000000000000c8151100010000000000000000000000a0811000010000000000000000000000a88110000700000000000000b0811000030000000000000000000000c8811000010000000000000000000000d08110000500000000000000c8151100010000000000000000000000d8811000010000000000000000000000e08110000800000000000000c8151100010000000000000000000000e88110000100000000000000ccb710000d000000b98210000e0000005370656e64696e677f8210003a0000004177617264656400ccb710000d0000001144110007000000d0431100090000005f821000200000004275726e740000003c82100023000000526f6c6c6f766572f08110004c000000205370656e64696e67206861732066696e69736865643b20746869732069732074686520616d6f756e74207468617420726f6c6c73206f76657220756e74696c206e657874207370656e642e20536f6d65206f66206f75722066756e64732068617665206265656e206275726e742e20536f6d652066756e64732068617665206265656e20616c6c6f63617465642e205765206861766520656e6465642061207370656e6420706572696f6420616e642077696c6c206e6f7720616c6c6f636174652066756e64732e204e65772070726f706f73616c2e53657373696f6e2056616c696461746f72734772616e64706146696e616c697479205374616c6c656454726561737572792050726f706f73616c730000387d1100280000001c831000430000007f000000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f74726561737572792f7372632f6c69622e72734469676573744974656d206e6f7420657175616c0000000000a08310001200000000000000b4831000010000000000000000000000cc83100001000000000000007265706f72745f6d69736265686176696f72000000000000ed8310000700000000000000e7ea100007000000d483100019000000205265706f727420736f6d65206d69736265686176696f722e5f7265706f72744772616e64706146696e616c697479000000000070aa10000b0000000000000000000000238a11002300000000000000000000000000000000000000000000000000000000000000389711008897100000000000000000006c8610000100000000000000010000000000000074861000050000000000000000000000798610001b0000000000000000000000000000000000000000000000000000000000000038971100948610000000000000000000a486100001000000000000000100000000000000ac8610000d0000000000000000000000b9861000230000000000000000000000000000000000000000000000000000000000000038971100b48e10000000000000000000dc86100001000000000000000000000000000000e48610000a0000000000000000000000925111000e0000000000000000000000000000000000000000000000000000000000000038971100788710000000000000000000f086100001000000000000000000000000000000f8861000070000000000000000000000ff8610002000000000000000000000000000000000000000000000000000000000000000389711002087100000000000000000003087100001000000000000000000000000000000388710000c0000000000000000000000448710000500000000000000000000000000000000000000000000000000000000000000389711004c87100000000000000000005c871000020000000000000001000000000000006c8710000c00000001010000000000004487100005000000000000009f8d11000c000000000000000000000000000000000000003897110078871000000000000000000088871000010000000000000000000000308910001b000000537461746553746f72656453746174653c543a3a426c6f636b4e756d6265723e370000000000000001000000aa0000000c8910002400000050656e64696e674368616e676553746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723edb881000310000004e657874466f726365640000ac8810002f0000005374616c6c656428543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d6265722900370000000000000001000000a1000000888810002400000043757272656e7453657449645365744964000000370000000000000001000000ab00000000881000570000005788100031000000536574496453657373696f6e3700000000000000010000004f00000090871000700000002041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f7220776869636820697473206d656d62657273207765726520726573706f6e7369626c652e20546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c69746965732920696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e20607472756560206966207765206172652063757272656e746c79207374616c6c65642e206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e2050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e205374617465206f66207468652063757272656e7420617574686f72697479207365742e205468652063757272656e7420617574686f72697479207365742e000000000078891000080000000000000080891000020000000000000000000000b08910000a000000000000007365745f6b65797300000000dabb10000400000000000000098b10000700000000000000108b10000500000000000000e7ea100007000000008a100039000000398a100048000000818a1000310000003897110000000000b28a1000350000003897110000000000c54d11000b000000e78a100022000000f34d110016000000d84d11000c0000002053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b6579602e20416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722e205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e20546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e202d204f286c6f67206e2920696e206e756d626572206f66206163636f756e74732e543a3a4b65797370726f6f6653657373696f6e00000000543511000a0000000000000000000000848d1000130000000000000000000000000000000000000000000000000000000000000038971100889710000000000000000000988d100001000000000000000100000000000000a08d10000c00000000000000000000009f8d11000c0000000000000000000000000000000000000000000000000000000000000038971100189710000000000000000000ac8d100001000000000000000100000000000000b48d10000d0000000000000000000000f7431100040000000000000000000000000000000000000000000000000000000000000038971100c48d10000000000000000000d48d100002000000000000000100000000000000e48d10000a0000000000000000000000ee8d10001e00000000000000000000000000000000000000000000000000000000000000389711008897100000000000000000000c8e1000020000000000000001000000000000001c8e10001200000000000000000000002e8e1000080000000000000000000000000000000000000000000000000000000000000038971100889710000000000000000000388e100003000000000000000100000000000000508e1000080000000204010000000000e7ea10000700000000000000588e10000e00000000000000098b1000070000000000000038971100688e10000000000000000000788e100004000000000000000000000000000000988e1000080000000204010000000000e7ea10000700000000000000a08e10001400000000000000588e10000e0000000000000038971100b48e10000000000000000000c48e10000400000000000000000000005665633c543a3a56616c696461746f7249643e008b9110001f00000043757272656e74496e6465786d9110001e0000005175657565644368616e6765640000003700000000000000010000004f000000f69010004e00000044911000290000005175657565644b6579735665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e6f9010004f000000be9010003800000044697361626c656456616c696461746f72735665633c7533323e000002901000200000003897110000000000229010004d0000004e6578744b657973543a3a56616c696461746f72496400003700000000000000010000004f000000db8f10002700000038971100000000002d8f100056000000838f1000580000004b65794f776e6572284b65795479706549642c205665633c75383e293700000000000000010000004f000000e48e10004900000038971100000000002d8f100056000000838f10005800000020546865206f776e6572206f662061206b65792e20546865207365636f6e64206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e20546865206669727374206b657920697320616c77617973206044454455505f4b45595f5052454649586020746f206861766520616c6c20746865206461746120696e207468652073616d65206272616e6368206f662074686520747269652e20486176696e6720616c6c206461746120696e207468652073616d65206272616e63682073686f756c642070726576656e7420736c6f77696e6720646f776e206f7468657220717565726965732e20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e20496e6469636573206f662064697361626c65642076616c696461746f72732e205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e2054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b6579732077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e20547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f727320686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e2043757272656e7420696e646578206f66207468652073657373696f6e2e205468652063757272656e7420736574206f662076616c696461746f72732e000000000000e49110001000000000000000f4911000050000000000000038971100fc91100000000000000000000c921000020000000000000044454455505f4b45595f505245464958265b75385d000000370000000000000001000000ac0000001c92100059000000759210000d0000002055736564206173206669727374206b657920666f7220604e6578744b6579736020616e6420604b65794f776e65726020746f2070757420616c6c20746865206461746120696e746f207468652073616d65206272616e6368206f662074686520747269652e3a73657373696f6e3a6b65797353657373696f6e204e6578744b6579730000000000249310000d000000000000003493100002000000000000000000000064931000090000000000000000000000ac9310000f00000000000000bc931000010000000000000000000000d49310000700000000000000000000000c9410001000000000000000bc9310000100000000000000000000001c941000080000000000000070726f706f73655f7370656e64000000000000005f5511000500000000000000645511001500000000000000fa9510000b000000000000004b22110023000000289510004b000000739510004d000000c0951000150000003897110000000000c54d11000b000000d04d110008000000f111110019000000d595100025000000d84d11000c00000072656a6563745f70726f706f73616c00000000001d9510000b00000000000000e9cd100016000000de9410003f0000003897110000000000c54d11000b000000d04d110008000000f111110019000000514e110010000000d84d11000c000000617070726f76655f70726f706f73616c5c94100057000000b39410002b0000003897110000000000c54d11000b000000d04d110008000000f111110019000000b712110011000000d84d11000c00000020417070726f766520612070726f706f73616c2e2041742061206c617465722074696d652c207468652070726f706f73616c2077696c6c20626520616c6c6f636174656420746f207468652062656e656669636961727920616e6420746865206f726967696e616c206465706f7369742077696c6c2062652072657475726e65642e2052656a65637420612070726f706f736564207370656e642e20546865206f726967696e616c206465706f7369742077696c6c20626520736c61736865642e70726f706f73616c5f69642050757420666f727761726420612073756767657374696f6e20666f72207370656e64696e672e2041206465706f7369742070726f706f7274696f6e616c20746f207468652076616c756520697320726573657276656420616e6420736c6173686564206966207468652070726f706f73616c2069732072656a65637465642e2049742069732072657475726e6564206f6e6365207468652070726f706f73616c20697320617761726465642e202d204f6e65204442206368616e67652c206f6e6520657874726120444220656e7472792e62656e656669636961727954726561737572790000000000000008d010000d0000000000000000000000ccb710000d000000000000000000000000000000000000000000000000000000000000003897110018971000000000000000000028971000010000000000000001000000000000009acf1000090000000101000000000000ccb710000d000000000000003097100024000000000000000000000000000000000000003897110054971000000000000000000064971000010000000000000000000000000000006c97100009000000000000000000000075971000120000000000000000000000000000000000000000000000000000000000000038971100889710000000000000000000989710000100000000000000010000003700000000000000010000009c000000fd9710002900000050726f706f73616c3c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3700000000000000010000004f000000de9710001f000000417070726f76616c735665633c50726f706f73616c496e6465783e0037000000000000000100000050000000a09710003e0000002050726f706f73616c20696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f742079657420617761726465642e2050726f706f73616c7320746861742068617665206265656e206d6164652e204e756d626572206f662070726f706f73616c7320746861742068617665206265656e206d6164652e000000000000089910000c00000000000000149910000700000000000000389711001c99100000000000000000002c9910000200000000000000000000003c99100013000000000000007a6511000c000000000000003897110050991000000000000000000060991000010000000000000000000000689910000b00000000000000925111000e0000000000000038971100749910000000000000000000849910000100000000000000000000008c991000040000000000000014991000070000000000000038971100909910000000000000000000a0991000010000000000000050726f706f73616c426f6e645065726d696c6c00370000000000000001000000ad000000609a100055000000b59a10004400000050726f706f73616c426f6e644d696e696d756d00370000000000000001000000990000000e9a1000520000005370656e64506572696f6400370000000000000001000000ae000000ec991000220000004275726e370000000000000001000000af000000a8991000440000002050657263656e74616765206f662073706172652066756e64732028696620616e7929207468617420617265206275726e7420706572207370656e6420706572696f642e20506572696f64206265747765656e2073756363657373697665207370656e64732e204d696e696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e204672616374696f6e206f6620612070726f706f73616c27732076616c756520746861742073686f756c6420626520626f6e64656420696e206f7264657220746f20706c616365207468652070726f706f73616c2e20416e2061636365707465642070726f706f73616c2067657473207468657365206261636b2e20412072656a65637465642070726f706f73616c20646f6573206e6f742e4772616e64706146696e616c6974792050656e64696e674368616e67654772616e64706146696e616c697479205374617465496e636f6e73697374656e74207374617465202d20636f756c646e277420736574746c6520696d62616c616e636520666f722066756e6473207370656e7420627920747265617375727953657373696f6e205175657565644b65797300590000000800000004000000b0000000b10000000000000000000000b20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000590000000800000004000000b0000000b10000000000000000000000b20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000590000000800000004000000b3000000b10000000000000000000000b40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000590000000800000004000000b3000000b10000000000000000000000b400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004772616e64706146696e616c697479204e657874466f72636564636f6465206973206e6f7420666f756e647072697374696e6520636f6465206973206e6f7420666f756e647468657265206973206e6f7420656e6f7567682067617320666f722073746f72696e672074686520636f646553657373696f6e204b65794f776e6572000000f0a0100048000000a10a00000e000000f0a01000480000009b0a00000a00000080a0100019000000a0a01000430000003401000009000000000000000000000000000000617474656d707420746f20646976696465206279207a65726f000000000000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f636f72652f70687261676d656e2f7372632f6c69622e7273000000000000000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e72733897110000000000391411000200000060a110007c000000dca11000490000007900000006000000657865632e7072656661625f6d6f64756c652e696e697469616c2063616e27742062652067726561746572207468616e20657865632e7072656661625f6d6f64756c652e6d6178696d756d3b0a09090909090974687573204d656d6f72793a3a6e6577206d757374206e6f74206661696c3b0a0909090909097165642f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f636f6e7472616374732f7372632f7761736d2f6d6f642e72736e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e72656769737465726564206475706c6963617465206b65791c831000430000007f0000000100000050726f706f73657227732062616c616e636520746f6f206c6f774e6f2070726f706f73616c206174207468617420696e64657866696e616c6e756d417574686f727368697020417574686f7237000000000000000100000038000000387d110028000000e8a210003f000000bf000000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f626162652f7372632f6c69622e727300e8a210003f000000bf0000000100000073657269616c697a656420617267732073686f756c642062652070726f7669646564206279207468652072756e74696d653b0a090909636f72726563746c792073657269616c697a656420646174612073686f756c6420626520646573657269616c697a61626c653b0a090909716564387d110028000000607d110050000000370100000900000065706f636820696e64696365732077696c6c206e6576657220726561636820325e3634206265666f726520746865206465617468206f662074686520756e6976657273653b207165640000000000000038a410000a0000000000000044a410000100000000000000000000005ca4100001000000000000007365745f756e636c65730000000000007da410000a0000000000000087a410000e00000064a41000190000002050726f76696465206120736574206f6620756e636c65732e6e65775f756e636c65735665633c543a3a4865616465723e417574686f72736869700000000000a8a51000060000000000000000000000aea510003a0000000000000000000000000000000000000000000000000000000000000038971100e8a510000000000000000000f8a510000100000000000000010000000000000000a610000600000000000000000000000b4e11000c000000000000000000000000000000000000000000000000000000000000003897110008a61000000000000000000018a610000100000000000000000000000000000020a610000c0000000000000000000000f74311000400000000000000000000000000000000000000000000000000000000000000389711002ca6100000000000000000003ca61000010000000000000001000000556e636c65735665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e370000000000000001000000500000008ca6100007000000417574686f7200003700000000000000010000004f00000073a6100019000000446964536574556e636c65733700000000000000010000004f00000044a610002f000000205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e20417574686f72206f662063757272656e7420626c6f636b2e20556e636c6573417574686f727368697020556e636c6573556e636c657320616c72656164792073657420696e20626c6f636b2e756e636c6520616c726561647920696e636c75646564756e636c652069732067656e65736973756e636c6520697320746f6f206869676820696e20636861696e756e636c6520706172656e74206e6f7420696e20636861696e756e636c65206e6f7420726563656e7420656e6f75676820746f20626520696e636c756465644261626500000000005caa10000a000000000000000000000076f91000030000000000000000000000000000000000000000000000000000000000000038971100e4aa1000000000000000000068aa10000100000000000000010000000000000070aa10000b00000000000000000000007baa1000270000000000000000000000000000000000000000000000000000000000000038971100a4aa10000000000000000000b4aa100001000000000000000100000000000000bcaa10000b000000000000000000000076f91000030000000000000000000000000000000000000000000000000000000000000038971100e4aa10000000000000000000c8aa100002000000000000000100000000000000d8aa10000b000000000000000000000076f91000030000000000000000000000000000000000000000000000000000000000000038971100e4aa10000000000000000000f4aa100001000000000000000100000000000000fcaa10000a000000000000000000000006ab100008000000000000000000000000000000000000000000000000000000000000003897110070ab1000000000000000000010ab10000a00000000000000010000000000000060ab10000e000000000000000000000006ab100008000000000000000000000000000000000000000000000000000000000000003897110070ab1000000000000000000080ab10000100000000000000010000000000000088ab10000c00000000000000000000007634110003000000000000000000000000000000000000000000000000000000000000003897110094ab10000000000000000000a4ab100009000000000000000100000000000000ecab1000110000000101000000000000763411000300000000000000fdab10000d00000000000000000000000000000000000000389711000cac1000000000000000000038971100000000000000000001000000000000001cac10000b000000000000000000000027ac100008000000000000000000000000000000000000000000000000000000000000003897110030ac1000000000000000000040ac100002000000000000000000000045706f6368496e64657800008bb0100015000000417574686f7269746965735665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e00003700000000000000010000005000000070b010001b00000047656e65736973536c6f74000eb010003e0000004cb010002400000043757272656e74536c6f7400370000000000000001000000ab000000f9af10001500000052616e646f6d6e6573735b75383b2033325d000033ae10002e000000389711000000000061ae10000b00000038971100000000006cae100041000000adae10003e000000ebae10004500000030af10004500000075af100041000000b6af1000430000004e65787452616e646f6d6e6573730000370000000000000001000000b50000001cae1000170000005365676d656e74496e6465783700000000000000010000009c000000d7ac10001f0000003897110000000000f6ac10003d00000033ad10004000000073ad100025000000389711000000000098ad10003b000000d3ad10004200000015ae100007000000556e646572436f6e737472756374696f6e5665633c5b75383b2033325d3e000037000000000000000100000050000000496e697469616c697a65644d61796265567266003700000000000000010000004f00000050ac10004000000090ac1000470000002054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d6560206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e2057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f2060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e20576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572792065706f63682e204e6578742065706f63682072616e646f6d6e6573732e205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e20232053656375726974792054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e792063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d626572732074686174207468697320286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e20626520757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e2043757272656e7420736c6f74206e756d6265722e2054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e2054686973206973203020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2043757272656e742065706f636820617574686f7269746965732e2043757272656e742065706f636820696e6465782e0000000010b110000d0000000000000076f9100003000000000000003897110020b11000000000000000000030b1100002000000000000000000000040b110001100000000000000a3e0100009000000000000003897110054b11000000000000000000064b11000050000000000000045706f63684475726174696f6e000000370000000000000001000000b6000000bcb2100043000000ffb210003f0000004578706563746564426c6f636b54696d65000000370000000000000001000000b70000008cb1100041000000cdb110004400000011b210004100000052b210004200000094b210002800000020546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e6720626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f7574207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f74206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e20546865206e756d626572206f66202a2a736c6f74732a2a207468617420616e2065706f63682074616b65732e20576520636f75706c652073657373696f6e7320746f2065706f6368732c20692e652e2077652073746172742061206e65772073657373696f6e206f6e636520746865206e65772065706f636820626567696e732e756e636c6573303074696d657374616d702073657420696e20626c6f636b20646f65736e2774206d6174636820736c6f7420696e207365616c4e6f206f74686572206572726f72732061726520616363657074656420616674657220616e2068617264206572726f7221496e686572656e7420776974682073616d65206964656e74696669657220616c726561647920657869737473215468657265206973206f6e6c79206f6e6520666174616c206572726f723b20716564005900000008000000040000009d0000003a65787472696e7369635f696e64657800000000e4421100080000000000000020b5100004000000000000000000000040b5100002000000000000000000000050b51000050000000000000058b5100005000000000000000000000080b5100002000000000000000000000090b51000080000000000000048ea100001000000000000000000000098b51000010000000000000000000000a0b510000b0000000000000048ea1000010000000000000000000000acb51000010000000000000000000000664311000800000000000000b4b51000020000000000000000000000c4b51000010000000000000000000000ccb510000e00000000000000b4b51000020000000000000000000000dcb510000100000000000000d043110009000000ccb710000d000000d9431100040000005eb710000b00000069b7100053000000bcb7100010000000566f746564000000d043110009000000d943110004000000f7431100040000005eb710000b0000005eb710000b000000d6b610004200000018b7100046000000417070726f766564a5b6100031000000446973617070726f7665640070b6100035000000d943110004000000f7431100040000002fb61000410000004d656d62657245786563757465640000e4b510004b00000020412073696e676c65206d656d6265722064696420736f6d6520616374696f6e3b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e2041206d6f74696f6e207761732065786563757465643b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e2041206d6f74696f6e20776173206e6f7420617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e6720612074616c6c79202879657320766f74657320616e64206e6f20766f74657320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d656d626572436f756e742041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292e50726f706f73616c496e64657853797374656d204e756d62657253797374656d2045787472696e73696373526f6f74496e7374616e636531436f6c6c656374697665204d656d62657273496e7374616e636532436f6c6c656374697665204d656d6265727353797374656d2044696765737453797374656d20426c6f636b4861736853797374656d204163636f756e744e6f6e6365000000387d1100280000007cb8100041000000e9000000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f73797374656d2f7372632f6c69622e7273000000387d110028000000d8b810004500000083000000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f636f6c6c6563746976652f7372632f6c69622e727353797374656d20506172656e744861736853797374656d2052616e646f6d4d6174657269616c0080b9100048000000a10a00000e00000053797374656d204576656e747353797374656d204576656e74546f70696373000000000000000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e727300000000d0ba10000a0000000000000038971100000000000000000000000000dcba1000010000000000000000000000e4ba10000600000000000000ecba100001000000000000000000000004bb10000100000000000000000000000cbb10000e000000000000001cbb100001000000000000000000000034bb10000100000000000000000000003cbb1000080000000000000044bb10000100000000000000000000005cbb100001000000000000000000000064bb10000b0000000000000070bb100001000000000000000000000088bb100001000000000000000000000090bb10000c000000000000009cbb1000010000000000000000000000b4bb1000010000000000000066696c6c5f626c6f636b00008bbc10004800000072656d61726b00000000000084bc10000700000000000000e7ea10000700000069bc10001b0000007365745f686561705f706167657300000000000064bc1000050000000000000076f910000300000025bc10003f0000007365745f636f646500000000fc2011000300000000000000e7ea10000700000013bc1000120000007365745f73746f72616765000000000001bc1000050000000000000006bc10000d000000e6bb10001b0000006b696c6c5f73746f7261676500000000dabb10000400000000000000debb100008000000bcbb10001e000000204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e6b6579735665633c4b65793e2053657420736f6d65206974656d73206f662073746f726167652e6974656d735665633c4b657956616c75653e2053657420746865206e657720636f64652e2053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e7061676573204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e5f72656d61726b20412062696720646973706174636820746861742077696c6c20646973616c6c6f7720616e79206f74686572207472616e73616374696f6e20746f20626520696e636c756465642e53797374656d0000000000000004c210000c00000001010000000000000b4e11000c0000000000000010c21000080000000000000000000000000000000000000038971100e8d21000000000000000000018c210000100000000000000010000000000000020c210000e0000000000000000000000763411000300000000000000000000000000000000000000000000000000000000000000389711006cc21000000000000000000030c210000100000000000000000000000000000038c210001300000000000000000000004bc210000600000000000000000000000000000000000000000000000000000000000000389711006cc21000000000000000000054c21000010000000000000000000000000000005cc21000100000000000000000000000763411000300000000000000000000000000000000000000000000000000000000000000389711006cc2100000000000000000007cc210000100000000000000000000000000000084c2100014000000000000000000000098c21000100000000000000000000000000000000000000000000000000000000000000038971100a8c210000000000000000000b8c2100002000000000000000100000000000000c8c21000090000000101000000000000925111000e000000000000007c4f110007000000000000000000000000000000000000003897110078c310000000000000000000d4c2100001000000000000000100000000000000dcc210000d0000000101000000000000763411000300000000000000e7ea1000070000000000000000000000000000000000000038971100ecc210000000000000000000fcc210000100000000000000010000000000000004c310000e000000000000000000000012c3100012000000000000000000000000000000000000000000000000000000000000003897110024c31000000000000000000034c310000200000000000000010000000000000044c31000060000000000000000000000925111000e0000000000000000000000000000000000000000000000000000000000000038971100e8d2100000000000000000004cc310000100000000000000010000000000000054c310000a00000000000000000000007c4f110007000000000000000000000000000000000000000000000000000000000000003897110078c31000000000000000000060c310000100000000000000010000000000000068c310000e00000000000000000000007c4f110007000000000000000000000000000000000000000000000000000000000000003897110078c31000000000000000000088c310000100000000000000010000000000000090c3100006000000000000000000000096c310000b0000000000000000000000000000000000000000000000000000000000000038971100a4c310000000000000000000b4c3100001000000000000000100000000000000bcc31000060000000000000000000000c2c31000230000000000000000000000000000000000000000000000000000000000000038971100e8c310000000000000000000f8c310000100000000000000010000000000000000c410000a00000000000000000000000ac410000a0000000000000000000000000000000000000000000000000000000000000038971100e8d21000000000000000000014c41000010000000000000001000000000000001cc410000b000000020101000000000027c4100002000000000000007c4f1100070000000000000029c41000210000000000000038971100f8d2100000000000000000004cc410000d00000000000000010000004163636f756e744e6f6e6365543a3a496e646578f9ca10001f00000045787472696e736963436f756e740000cbca10002e000000416c6c45787472696e7369637357656967687457656967687400000086ca100045000000416c6c45787472696e736963734c656e3700000000000000010000004f00000036ca1000500000004e6578745765696768744d756c7469706c6965725765696768744d756c7469706c696572370000000000000001000000ab000000c2c91000590000001bca10001b000000426c6f636b486173680000009cc910002600000045787472696e73696344617461000000370000000000000001000000510000004dc910004f00000052616e646f6d4d6174657269616c2869382c205665633c543a3a486173683e29370000000000000001000000b800000090c8100069000000f9c81000540000004e756d62657200004ec8100042000000506172656e7448617368000032c810001c00000045787472696e73696373526f6f740000370000000000000001000000b9000000edc71000450000004469676573744469676573744f663c543e00000037000000000000000100000050000000b1c710003c0000004576656e74735665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e000000370000000000000001000000ba00000089c71000280000004576656e74436f756e744576656e74496e6465785bc710002e0000004576656e74546f7069637328295665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e0000b4c4100049000000fdc4100025000000389711000000000022c510004b0000006dc510002a000000389711000000000097c5100054000000ebc51000510000003cc6100039000000389711000000000075c6100053000000c8c61000530000001bc7100040000000204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e6465786573206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e20546865206669727374206b657920736572766573206e6f20707572706f73652e2054686973206669656c64206973206465636c6172656420617320646f75626c655f6d6170206a75737420666f7220636f6e76656e69656e6365206f66207573696e67206072656d6f76655f707265666978602e20416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e205468697320616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e6420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573742074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e20546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e20446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2045787472696e7369637320726f6f74206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2048617368206f66207468652070726576696f757320626c6f636b2e205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e20536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e205468697320697320617272616e67656420617320612072696e6720627566666572207769746820746865206069386020707265666978206265696e672074686520696e64657820696e746f20746865206056656360206f6620746865206f6c6465737420686173682e2045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e20546865206e65787420776569676874206d756c7469706c6965722e20546869732073686f756c6420626520757064617465642061742074686520656e64206f66206561636820626c6f636b206261736564206f6e207468652073617475726174696f6e206c6576656c2028776569676874292e20546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e20546f74616c2077656967687420666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e20546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2045787472696e73696373206e6f6e636520666f72206163636f756e74732e496e7374616e636531436f6c6c6563746976652050726f706f73616c73496e7374616e636531436f6c6c65637469766520566f74696e67496e7374616e636532436f6c6c6563746976652050726f706f73616c73496e7374616e636532436f6c6c65637469766520566f74696e6700000000000038cc10000b0000000000000044cc10000100000000000000000000005ccc10000400000000000000000000007ccc1000070000000000000084cc10000100000000000000000000009ccc1000030000000000000000000000b84811000700000000000000b4cc1000020000000000000000000000e4cc100004000000000000000000000070491100040000000000000004cd10000300000000000000000000004ccd100004000000000000007365745f6d656d6265727300000000007ccf10000b00000000000000255c110011000000fbce1000540000004fcf100017000000389711000000000066cf10001600000065786563757465000000000058531100080000000000000075ce10001e00000093ce10003d0000003897110000000000d0ce10002b0000000000000058ce1000090000000000000061ce1000140000000000000058531100080000000000000075ce10001e000000c54d11000b00000006ce1000240000002ace10002e000000d84d11000c000000000000005853110008000000000000007c4f11000700000000000000e4cd10000500000000000000e9cd10001600000000000000ffcd10000700000000000000f743110004000000c54d11000b0000006ccd1000230000008fcd100055000000d84d11000c000000202d20426f756e6465642073746f72616765207265616420616e64207772697465732e202d2057696c6c20626520736c696768746c792068656176696572206966207468652070726f706f73616c20697320617070726f766564202f20646973617070726f7665642061667465722074686520766f74652e696e646578436f6d706163743c50726f706f73616c496e6465783e617070726f7665202d20426f756e6465642073746f7261676520726561647320616e64207772697465732e202d20417267756d656e7420607468726573686f6c6460206861732062656172696e67206f6e207765696768742e7468726573686f6c64436f6d706163743c4d656d626572436f756e743e426f783c3c542061732054726169743c493e3e3a3a50726f706f73616c3e20446973706174636820612070726f706f73616c2066726f6d2061206d656d626572207573696e672074686520604d656d62657260206f726967696e2e204f726967696e206d7573742062652061206d656d626572206f662074686520636f6c6c6563746976652e205365742074686520636f6c6c6563746976652773206d656d62657273686970206d616e75616c6c7920746f20606e65775f6d656d62657273602e204265206e69636520746f2074686520636861696e20616e642070726f76696465206974207072652d736f727465642e20526571756972657320726f6f74206f726967696e2e6e65775f6d656d62657273496e7374616e636531436f6c6c65637469766550726f706f73616c735665633c543a3a486173683e00e8d010002400000050726f706f73616c4f663c542061732054726169743c493e3e3a3a50726f706f73616c00b5d0100033000000566f74696e67566f7465733c543a3a4163636f756e7449643e00000088d010002d00000050726f706f73616c436f756e7400000076d010001200000028d010004e000000205468652063757272656e74206d656d62657273206f662074686520636f6c6c6563746976652e20546869732069732073746f72656420736f7274656420286a7573742062792076616c7565292e2050726f706f73616c7320736f206661722e20566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e2041637475616c2070726f706f73616c20666f72206120676976656e20686173682c20696620697427732063757272656e742e2054686520686173686573206f6620746865206163746976652070726f706f73616c732e496e7374616e636532436f6c6c65637469766500000000009acf1000090000000000000000000000a3cf10000c0000000000000000000000000000000000000000000000000000000000000038971100f8d210000000000000000000b0cf100001000000000000000100000000000000b8cf10000a00000001010000000000007c4f11000700000000000000c2cf1000190000000000000000000000000000000000000038971100d8d210000000000000000000dccf100001000000000000000000000000000000e4cf10000600000001010000000000007c4f11000700000000000000eacf1000130000000000000000000000000000000000000038971100d8d21000000000000000000000d010000100000000000000000000000000000008d010000d000000000000000000000076341100030000000000000000000000000000000000000000000000000000000000000038971100e8d21000000000000000000018d0100001000000000000000100000000000000ace61000070000000000000000000000255c1100110000000000000000000000000000000000000000000000000000000000000038971100f8d21000000000000000000020d010000100000000000000010000003700000000000000010000004f0000003700000000000000010000009c000000370000000000000001000000500000007cb8100041000000e9000000010000003a6865617070616765733a636f646500d8b8100045000000830000000100000070726f706f736572206e6f742061206d656d6265726475706c69636174652070726f706f73616c73206e6f7420616c6c6f776564496e7374616e636531436f6c6c6563746976652050726f706f73616c4f66496e7374616e636531436f6c6c6563746976652050726f706f73616c436f756e7470726f706f73616c206d757374206578697374766f746572206e6f742061206d656d6265726d69736d61746368656420696e6465786475706c696361746520766f74652069676e6f726564496e7374616e636532436f6c6c6563746976652050726f706f73616c4f66496e7374616e636532436f6c6c6563746976652050726f706f73616c436f756e740000000000000064d410000f0000000000000074d4100002000000000000000000000084d4100004000000000000004e65774163636f756e74496e64657800d0431100090000001fd510000c000000a4d41000220000003897110000000000c6d410004100000007d51000180000002041206e6577206163636f756e7420696e646578207761732061737369676e65642e2054686973206576656e74206973206e6f7420747269676765726564207768656e20616e206578697374696e6720696e64657820697320726561737369676e656420746f20616e6f7468657220604163636f756e744964602e4163636f756e74496e6465780050d510001900000070d5100048000000230100000e000000000000000000000000000000617474656d707420746f20646976696465206279207a65726f000000000000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f636f72652f73722d7072696d6974697665732f7372632f6c69622e7273d0d510000e000000ded5100048000000220100004a0000006578706c696369742070616e69632f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f636f72652f73722d7072696d6974697665732f7372632f6c69622e72730000d0d510000e000000ded5100048000000210100004a00000058d610002b00000083d6100044000000ef0000000400000054696d657374616d70206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b2f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f74696d657374616d702f7372632f6c69622e727300e0d610003000000083d6100044000000e30000000400000054696d657374616d70206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b28d710004e00000083d6100044000000e40000000400000054696d657374616d70206d75737420696e6372656d656e74206279206174206c65617374203c4d696e696d756d506572696f643e206265747765656e2073657175656e7469616c20626c6f636b7300000000000054d810000b000000000000003897110000000000000000000000000060d8100001000000000000000000000068d810000d000000000000003897110000000000000000000000000078d8100001000000000000000000000080d810000e000000000000003897110000000000000000000000000090d8100001000000000000000000000098d810000c0000000000000038971100000000000000000000000000a4d81000010000000000000000000000acd810000500000000000000b4d81000010000000000000000000000bcd8100001000000000000004d656d626572416464656400c5d91000390000004d656d62657252656d6f7665640000008ad910003b0000004d656d6265727353776170706564000053d91000370000004d656d6265727352657365740dd910004600000044756d6d79000000e0d810002d000000c4d810001c000000205068616e746f6d206d656d6265722c206e6576657220757365642e727374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e20546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e54696d657374616d70204e6f77496e646963657320456e756d53657400005900000008000000040000009d000000387d11002800000044da1000420000004a000000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f696e64696365732f7372632f6c69622e72730000387d110028000000a0da1000450000005c000000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f6d656d626572736869702f7372632f6c69622e727300000044da1000420000004a0000000100000054696d657374616d7020746f6f2066617220696e2066757475726520746f206163636570744765747320616e64206465636f6465732074696d657374616d7020696e686572656e742064617461496e646963657300000000fcdb10000b000000000000000000000007dc10000f000000000000000000000000000000000000000000000000000000000000003897110018dc1000000000000000000028dc10000100000000000000010000000000000030dc100007000000010100000000000007dc10000f00000000000000255c1100110000000000000000000000000000000000000038971100b4e61000000000000000000038dc10000100000000000000010000004e657874456e756d536574543a3a4163636f756e74496e64657800003700000000000000010000009c00000056dc10001f000000456e756d5365740040dc1000160000002054686520656e756d65726174696f6e20736574732e20546865206e657874206672656520656e756d65726174696f6e207365742e496e6469636573204e657874456e756d536574e9dd10001c000000b8dc1000440000009e00000003000000c5dd100024000000b8dc100044000000a7000000030000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f6578656375746976652f7372632f6c69622e727393dd100032000000b8dc10004400000001010000030000006cdd100027000000b8dc100044000000090100000400000044dd100028000000b8dc1000440000000f0100000300000053746f7261676520726f6f74206d757374206d6174636820746861742063616c63756c617465642e446967657374206974656d206d757374206d6174636820746861742063616c63756c617465642e4e756d626572206f6620646967657374206974656d73206d757374206d6174636820746861742063616c63756c617465642e5472616e73616374696f6e207472696520726f6f74206d7573742062652076616c69642e506172656e7420686173682073686f756c642062652076616c69642e0000000000000034de1000030000000000000038de100001000000000000000000000050de100009000000000000007365740000000000d2df10000300000000000000d5df10001200000098de1000160000003897110000000000aede10005600000004df10003600000038971100000000003adf1000510000008bdf10001100000038971100000000009cdf10003600000020536574207468652063757272656e742074696d652e20546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6e2070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627920604d696e696d756d506572696f64602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e6e6f77436f6d706163743c543a3a4d6f6d656e743e54696d657374616d7000000000a0e01000030000000000000000000000a3e01000090000000000000000000000000000000000000000000000000000000000000038971100ace010000000000000000000bce0100001000000000000000100000000000000c4e01000090000000000000000000000f7431100040000000000000000000000000000000000000000000000000000000000000038971100d0e010000000000000000000e0e010000100000000000000010000004e6f77543a3a4d6f6d656e74370000000000000001000000ab00000015e11000240000004469645570646174650000003700000000000000010000004f000000e8e010002d00000020446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f2043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e0000000000000074e110000d00000000000000a3e0100009000000000000003897110084e11000000000000000000094e1100004000000000000004d696e696d756d506572696f64000000370000000000000001000000bb000000b4e110005a0000000ee210005a00000068e2100059000000c1e210001c00000020546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e0000000000000090e310000a000000000000009ce31000010000000000000000000000b4e31000030000000000000000000000cce310000d000000000000009ce31000010000000000000000000000dce31000030000000000000000000000f4e310000b0000000000000000e4100002000000000000000000000030e4100003000000000000000000000048e410000d0000000000000058e4100001000000000000000000000070e4100004000000000000006164645f6d656d6265720000000000005712110003000000000000000b4e11000c000000f2e510001f000000389711000000000011e610002d00000072656d6f76655f6d656d6265720000009ee51000240000003897110000000000c2e5100030000000737761705f6d656d626572000000000095e5100006000000000000000b4e11000c000000000000009be5100003000000000000000b4e11000c00000037e5100030000000389711000000000067e510002e00000072657365745f6d656d626572730000000000000030e510000700000000000000255c11001100000090e4100056000000e6e410001b000000389711000000000001e510002f000000204368616e676520746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702e204265206e69636520616e64207061737320606d656d6265727360207072652d736f727465642e204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e6d656d626572732053776170206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f746865722060616464602e204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e72656d6f76656164642052656d6f76652061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e204164642061206d656d626572206077686f6020746f20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e496e7374616e6365314d656d6265727368697000000000000000ace61000070000000000000000000000255c1100110000000000000000000000000000000000000000000000000000000000000038971100b4e610000000000000000000c4e610000100000000000000010000004d656d626572730037000000000000000100000050000000cce6100032000000205468652063757272656e74206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e000080e7100048000000b10100002300000080e7100048000000b20100002300000030e7100049000000870200001d0000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f736f72742e7273000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e727330e71000490000009d0000003a00000030e7100049000000a400000030000000a0da1000450000005c00000001000000496e7374616e6365314d656d62657273686970204d656d62657273616c72656164792061206d656d626572626164206f726967696e6e6f742061206d656d62657200000080e7100048000000a10a00000e00000054e810001c00000056617269616e74206973206e6576657220636f6e737472756374656480e81000440000000a040000220000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f636f6e7472616374732f7372632f6c69622e727373746f72616765206973206e6f74206e756c6c2c207468657265666f7265206d75737420626520612076616c69642074797065000000000000ea1000080000000000000008ea100003000000000000000000000020ea100001000000000000000000000028ea10000c000000000000008c43110002000000000000000000000034ea10000100000000000000000000003cea10000a0000000000000048ea100001000000000000000000000050ea100001000000000000000000000058ea10000f0000000000000068ea100001000000000000000000000070ea100001000000000000000000000078ea10000a0000000000000084ea100002000000000000000000000094ea1000020000000000000000000000a4ea10000800000000000000acea1000020000000000000000000000bcea100001000000000000005472616e73666572d043110009000000d0431100090000001144110007000000eeeb10005a000000496e7374616e746961746564b7eb100037000000436f646553746f7265640000d94311000400000089eb10002e0000005363686564756c655570646174656400763411000300000059eb100030000000446973706174636865640000d043110009000000f743110004000000eeea10004e0000003ceb10001d000000436f6e7472616374d043110009000000e7ea100007000000c4ea10002300000020416e206576656e742066726f6d20636f6e7472616374206f66206163636f756e742e5665633c75383e20412063616c6c2077617320646973706174636865642066726f6d2074686520676976656e206163636f756e742e2054686520626f6f6c207369676e616c73207768657468657220697420776173207375636365737366756c20657865637574696f6e206f72206e6f742e20547269676765726564207768656e207468652063757272656e74207363686564756c6520697320757064617465642e20436f646520776974682074686520737065636966696564206861736820686173206265656e2073746f7265642e20436f6e7472616374206465706c6f7965642062792061646472657373206174207468652073706563696669656420616464726573732e205472616e736665722068617070656e6564206066726f6d6020746f2060746f60207769746820676976656e206076616c7565602061732070617274206f662061206063616c6c60206f722060696e7374616e7469617465602e436f6e7472616374205072697374696e65436f6465436f6e747261637420436f646553746f72616765436f6e747261637420436f6e7472616374496e666f4f66436f6e747261637420476173507269636500000037000000000000000100000038000000c0ec10004a0000003200000006000000000000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f636f72652f73722d7072696d6974697665732f7372632f63757276652e7273000000000000e8ed10000f00000000000000f8ed100001000000000000000000000010ee100003000000000000000000000028ee1000080000000000000030ee100002000000000000000000000060ee1000020000000000000000000000af861100040000000000000070ee1000040000000000000000000000d0ee100007000000000000000000000008ef10000b0000000000000014ef100004000000000000000000000074ef10000a0000000000000000000000c4ef10000f00000000000000d4ef100002000000000000000000000004f0100005000000000000007570646174655f7363686564756c65000000000054f6100008000000000000005cf6100008000000e4f510002d000000389711000000000011f61000430000007075745f636f64650000000092f3100009000000000000009bf310000c00000000000000e0f510000400000000000000e7ea10000700000054f5100057000000abf51000350000000000000046f1100004000000000000004b22110023000000000000005f551100050000000000000064551100150000000000000092f3100009000000000000009bf310000c00000000000000bbf310000400000000000000e7ea100007000000bff3100042000000389711000000000001f410004a0000004bf410002c00000077f4100046000000bdf41000520000000ff5100045000000696e7374616e7469617465000000000089f31000090000000000000064551100150000000000000092f3100009000000000000009bf310000c00000000000000a7f310000900000000000000b0f310000b00000000000000bbf310000400000000000000e7ea10000700000068f110006f0000003897110000000000d7f11000260000003897110000000000fdf11000500000004df21000410000008ef210005b000000e9f210005700000040f310002a0000006af310001f000000636c61696d5f737572636861726765000000000046f1100004000000000000000b4e11000c000000000000004af110000a0000000000000054f11000140000002cf010005c00000088f01000450000003897110000000000cdf010004e0000001bf110002b00000020416c6c6f777320626c6f636b2070726f64756365727320746f20636c61696d206120736d616c6c2072657761726420666f72206576696374696e67206120636f6e74726163742e204966206120626c6f636b2070726f6475636572206661696c7320746f20646f20736f2c206120726567756c61722075736572732077696c6c20626520616c6c6f77656420746f20636c61696d20746865207265776172642e20496620636f6e7472616374206973206e6f742065766963746564206173206120726573756c74206f6620746869732063616c6c2c206e6f20616374696f6e73206172652074616b656e20616e64207468652073656e646572206973206e6f7420656c696769626c6520666f7220746865207265776172642e646573746175785f73656e6465724f7074696f6e3c543a3a4163636f756e7449643e20496e7374616e7469617465732061206e657720636f6e74726163742066726f6d207468652060636f646568617368602067656e65726174656420627920607075745f636f6465602c206f7074696f6e616c6c79207472616e7366657272696e6720736f6d652062616c616e63652e20496e7374616e74696174696f6e20697320657865637574656420617320666f6c6c6f77733a202d205468652064657374696e6174696f6e206164647265737320697320636f6d7075746564206261736564206f6e207468652073656e64657220616e642068617368206f662074686520636f64652e202d2054686520736d6172742d636f6e7472616374206163636f756e7420697320637265617465642061742074686520636f6d707574656420616464726573732e202d20546865206063746f725f636f64656020697320657865637574656420696e2074686520636f6e74657874206f6620746865206e65776c792d63726561746564206163636f756e742e204275666665722072657475726e656420202061667465722074686520657865637574696f6e206973207361766564206173207468652060636f646560206f6620746865206163636f756e742e205468617420636f64652077696c6c20626520696e766f6b656420202075706f6e20616e792063616c6c2072656365697665642062792074686973206163636f756e742e202d2054686520636f6e747261637420697320696e697469616c697a65642e656e646f776d656e746761735f6c696d6974436f6d706163743c4761733e636f64655f68617368436f6465486173683c543e64617461204d616b657320612063616c6c20746f20616e206163636f756e742c206f7074696f6e616c6c79207472616e7366657272696e6720736f6d652062616c616e63652e202a20496620746865206163636f756e74206973206120736d6172742d636f6e7472616374206163636f756e742c20746865206173736f63696174656420636f64652077696c6c20626520657865637574656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e202a20496620746865206163636f756e74206973206120726567756c6172206163636f756e742c20616e792076616c75652077696c6c206265207472616e736665727265642e202a204966206e6f206163636f756e742065786973747320616e64207468652063616c6c2076616c7565206973206e6f74206c657373207468616e20606578697374656e7469616c5f6465706f736974602c206120726567756c6172206163636f756e742077696c6c206265206372656174656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e2053746f7265732074686520676976656e2062696e617279205761736d20636f646520696e746f2074686520636861696e27732073746f7261676520616e642072657475726e73206974732060636f646568617368602e20596f752063616e20696e7374616e746961746520636f6e747261637473206f6e6c7920776974682073746f72656420636f64652e636f6465205570646174657320746865207363686564756c6520666f72206d65746572696e6720636f6e7472616374732e20546865207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e207468652073746f726564207363686564756c652e7363686564756c655363686564756c6500000000ccf81000080000000000000000000000d4f810000300000000000000000000000000000000000000000000000000000000000000389711007cf910000000000000000000d8f8100001000000000000000100000000000000e0f810000f00000000000000000000005cf61000080000000000000000000000000000000000000000000000000000000000000038971100f0f81000000000000000000000f910000100000000000000010000000000000008f910000c0000000101000000000000b0f310000b00000000000000e7ea100007000000000000000000000000000000000000003897110014f91000000000000000000024f91000010000000000000000000000000000002cf910000b0000000101000000000000b0f310000b0000000000000037f9100016000000000000000000000000000000000000003897110050f91000000000000000000060f910000100000000000000000000000000000068f910000e000000000000000000000076f910000300000000000000000000000000000000000000000000000000000000000000389711007cf9100000000000000000008cf910000100000000000000010000000000000094f910000e00000001010000000000000b4e11000c00000000000000a2f910000f0000000000000000000000000000000000000038971100b4f910000000000000000000c4f9100001000000000000000000000000000000ccf910000800000000000000000000007a6511000c0000000000000000000000000000000000000000000000000000000000000038971100d4f910000000000000000000e4f910000100000000000000010000004761735370656e744761730020fb10002000000043757272656e745363686564756c6500370000000000000001000000bc000000fbfa1000250000005072697374696e65436f64653700000000000000010000004f000000a2fa100059000000436f646553746f726167657761736d3a3a5072656661625761736d4d6f64756c650000003700000000000000010000004f00000049fa1000590000004163636f756e74436f756e746572753634000000370000000000000001000000ab00000034fa100015000000436f6e7472616374496e666f4f66436f6e7472616374496e666f3c543e0000003700000000000000010000004f0000000afa10002a0000004761735072696365370000000000000001000000bd000000ecf910001e00000020546865207072696365206f66206f6e6520756e6974206f66206761732e2054686520636f6465206173736f6369617465642077697468206120676976656e206163636f756e742e20546865207375627472696520636f756e7465722e2041206d617070696e67206265747765656e20616e206f726967696e616c20636f6465206861736820616e6420696e737472756d656e746564207761736d20636f64652c20726561647920666f7220657865637574696f6e2e2041206d617070696e672066726f6d20616e206f726967696e616c20636f6465206861736820746f20746865206f726967696e616c20636f64652c20756e746f756368656420627920696e737472756d656e746174696f6e2e2043757272656e7420636f7374207363686564756c6520666f7220636f6e7472616374732e20476173207370656e7420736f2066617220696e207468697320626c6f636b2e00000000c0fe10001300000000000000925111000e0000000000000038971100d4fe10000000000000000000e4fe100004000000000000000000000004ff100010000000000000007a6511000c00000000000000389711005cff1000000000000000000014ff10000100000000000000000000001cff100011000000000000007634110003000000000000003897110030ff1000000000000000000040ff100002000000000000000000000050ff10000b000000000000007a6511000c00000000000000389711005cff100000000000000000006cff100001000000000000000000000074ff100011000000000000007a6511000c000000000000003897110088ff1000000000000000000098ff1000070000000000000000000000d0ff10000f000000000000007a6511000c0000000000000038971100e0ff10000000000000000000f0ff1000020000000000000000000000000011000b000000000000007a6511000c00000000000000389711007c00110000000000000000000c001100010000000000000000000000140011000b000000000000007a6511000c00000000000000389711007c0011000000000000000000200011000100000000000000000000002800110012000000000000007a6511000c00000000000000389711007c00110000000000000000003c0011000100000000000000000000004400110012000000000000007a6511000c000000000000003897110058001100000000000000000068001100010000000000000000000000700011000b000000000000007a6511000c00000000000000389711007c00110000000000000000008c0011000200000000000000000000009c0011000b00000000000000d4f81000030000000000000038971100cc0011000000000000000000a8001100020000000000000000000000b80011001200000000000000d4f81000030000000000000038971100cc0011000000000000000000dc001100020000000000000000000000ec001100080000000000000076341100030000000000000038971100f4001100000000000000000004011100020000000000000000000000140111000c000000000000007634110003000000000000003897110020011100000000000000000030011100010000000000000000000000380111000d00000000000000d4f810000300000000000000389711004801110000000000000000005801110002000000000000005369676e6564436c61696d48616e646963617000370000000000000001000000be000000080711003800000038971100000000004007110043000000830711001a000000546f6d6273746f6e654465706f736974d30611003500000053746f7261676553697a654f6666736574000000370000000000000001000000a90000005606110054000000aa0611002900000052656e74427974654665650037000000000000000100000099000000090611004d00000052656e744465706f7369744f6666736574000000370000000000000001000000bf0000009104110041000000d2041100160000003897110000000000e80411005a00000042051100560000009805110053000000eb0511001e00000053757263686172676552657761726400370000000000000001000000c00000003e04110039000000770411001a0000005472616e736665724665650019041100250000004372656174696f6e46656500f2031100270000005472616e73616374696f6e426173654665650000bb031100370000005472616e73616374696f6e4279746546656500003700000000000000010000009b0000007803110043000000436f6e7472616374466565003700000000000000010000009a0000002103110050000000710311000700000043616c6c4261736546656500cc02110047000000130311000e000000496e7374616e7469617465426173654665650000370000000000000001000000c1000000760211004e000000c4021100080000004d61784465707468370000000000000001000000c20000001c0211004c000000680211000e0000004d617856616c756553697a65370000000000000001000000c3000000ce0111004e000000426c6f636b4761734c696d6974000000370000000000000001000000c40000006801110049000000b10111001d00000020546865206d6178696d756d20616d6f756e74206f6620676173207468617420636f756c6420626520657870656e6465642070657220626c6f636b2e204120726561736f6e61626c652064656661756c742076616c75652069732031305f3030305f3030302e20546865206d6178696d756d2073697a65206f6620612073746f726167652076616c756520696e2062797465732e204120726561736f6e61626c652064656661756c74206973203136204b69422e20546865206d6178696d756d206e657374696e67206c6576656c206f6620612063616c6c2f696e7374616e746961746520737461636b2e204120726561736f6e61626c652064656661756c742076616c7565206973203130302e20546865206261736520666565206368617267656420666f7220696e7374616e74696174696e67206120636f6e74726163742e204120726561736f6e61626c652064656661756c742076616c7565206973203137352e20546865206261736520666565206368617267656420666f722063616c6c696e6720696e746f206120636f6e74726163742e204120726561736f6e61626c652064656661756c742076616c7565206973203133352e205468652066656520726571756972656420746f20696e7374616e7469617465206120636f6e747261637420696e7374616e63652e204120726561736f6e61626c652064656661756c742076616c75652069732032312e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b2074686520626173652e205468652066656520726571756972656420746f2063726561746520616e206163636f756e742e205468652066656520726571756972656420746f206d616b652061207472616e736665722e205265776172642074686174206973207265636569766564206279207468652070617274792077686f736520746f75636820686173206c656420746f2072656d6f76616c206f66206120636f6e74726163742e2054686520616d6f756e74206f662066756e6473206120636f6e74726163742073686f756c64206465706f73697420696e206f7264657220746f206f66667365742074686520636f7374206f66206f6e6520627974652e204c6574277320737570706f736520746865206465706f73697420697320312c303030204255202862616c616e636520756e697473292f6279746520616e64207468652072656e7420697320312042552f627974652f6461792c207468656e206120636f6e7472616374207769746820312c3030302c3030302042552074686174207573657320312c303030206279746573206f662073746f7261676520776f756c6420706179206e6f2072656e742e20427574206966207468652062616c616e6365207265647563656420746f203530302c30303020425520616e64207468652073746f7261676520737461796564207468652073616d6520617420312c3030302c207468656e20697420776f756c6420706179203530302042552f6461792e205072696365206f6620612062797465206f662073746f7261676520706572206f6e6520626c6f636b20696e74657276616c2e2053686f756c642062652067726561746572207468616e20302e2053697a65206f66206120636f6e7472616374206174207468652074696d65206f6620696e7374616e746961696f6e2e205468697320697320612073696d706c652077617920746f20656e73757265207468617420656d70747920636f6e747261637473206576656e7475616c6c7920676574732064656c657465642e20546865206d696e696d756d20616d6f756e7420726571756972656420746f2067656e6572617465206120746f6d6273746f6e652e204e756d626572206f6620626c6f636b2064656c617920616e2065787472696e73696320636c61696d20737572636861726765206861732e205768656e20636c61696d207375726368617267652069732063616c6c656420627920616e2065787472696e736963207468652072656e7420697320636865636b656420666f722063757272656e745f626c6f636b202d2064656c617943616e6e6f7420726573746f726520746f20696e6578697374696e67206f7220616c69766520636f6e74726163746d656d6f727976616c69646174696f6e3a20696d706f727420656e74727920706f696e747320746f2061206e6f6e2d6578697374656e74207479706543616e6e6f7420696d706f727420676c6f62616c736d6f64756c6520696d706f7274732061206e6f6e2d6578697374656e742066756e6374696f6e6d6f64756c6520696d706f72747320606578745f7072696e746c6e60206275742064656275672066656174757265732064697361626c656443616e6e6f7420696d706f7274207461626c65736d6f64756c652068617320696d706f7274732066726f6d2061206e6f6e2d27656e7627206e616d6573706163654d656d6f727920696d706f7274206d757374206861766520746865206669656c64206e616d6520276d656d6f7279274d756c7469706c65206d656d6f727920696d706f72747320646566696e65644d6178696d756d206e756d626572206f662070616765732073686f756c6420626520616c77617973206465636c617265642e52657175657374656420696e697469616c206e756d626572206f662070616765732073686f756c64206e6f74206578636565642074686520726571756573746564206d6178696d756d4d6178696d756d206e756d626572206f662070616765732073686f756c64206e6f74206578636565642074686520636f6e66696775726564206d6178696d756d2e64656661756c743a000000387d11002800000080e8100044000000c80100000100000080e8100044000000c8010000010000006e6577207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e2063757272656e74496e76616c69642073757263686172676520636c61696d3a206f726967696e206d757374206265207369676e6564206f7220696e686572656e7420616e6420617578696c696172792073656e646572206f6e6c792070726f7669646564206f6e20696e686572656e74417574686f72697479446973636f76657279204b657973000000387d110028000000c80a11004e00000034000000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f617574686f726974792d646973636f766572792f7372632f6c69622e72730000c80a11004e000000340000000100000000000000ac0b11000500000000000000b40b1100010000000000000000000000bc0b1100010000000000000000000000c40b11000a00000000000000a8431100010000000000000000000000d00b1100010000000000000000000000d80b11000a00000000000000b40b1100010000000000000000000000bc0b110001000000000000005375646964000000f7431100040000001e0c1100180000004b65794368616e6765640000e20b11003c0000005375646f4173446f6e6520546865207375646f6572206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e2041207375646f206a75737420746f6f6b20706c6163652e707265636f6e646974696f6e3a20616c6c20696d706f7274732073686f756c6420626520636865636b656420616761696e737420746865207369676e617475726573206f6620636f72726573706f6e64696e670a09090909090966756e6374696f6e7320646566696e65642062792060646566696e655f656e762160206d6163726f206279207468652075736572206f6620746865206d6163726f3b0a0909090909097369676e617475726573206f662074686573652066756e6374696f6e7320646566696e6564206279206024706172616d73603b0a09090909090963616c6c7320616c77617973206d616465207769746820617267756d656e7473207479706573206f662077686963682061726520646566696e65642062792074686520636f72726573706f6e64696e6720696d706f7274733b0a09090909090974687573207479706573206f6620617267756d656e74732073686f756c6420626520657175616c20746f2074797065206c69737420696e206024706172616d736020616e640a0909090909096c656e677468206f6620617267756d656e74206c69737420616e642024706172616d732073686f756c6420626520657175616c3b0a0909090909097468757320746869732063616e206e6576657220626520604e6f6e65603b0a0909090909097165643b0a09090909090972657475726e2074797065206572726f7276616c69646174696f6e206572726f72647572696e6720657865637574696f6e00387d110028000000740e11003f00000068000000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f7375646f2f7372632f6c69622e727300740e11003f00000068000000010000006f6e6c79207468652063757272656e74207375646f206b65792063616e207375646f5375646f204b65796f6e6c79207468652063757272656e74207375646f206b65792063616e206368616e676520746865207375646f206b657900400f1100480000009b0a00000a000000400f110048000000a10a00000e0000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e7273000000000c1011000400000000000000684a1100010000000000000000000000101011000a00000000000000000000006010110007000000000000006810110001000000000000000000000080101100090000000000000000000000c81011000700000000000000d0101100020000000000000000000000001111000b000000000000007375646fc81211004e0000003897110000000000bd111100340000003897110000000000c54d11000b000000d04d110008000000f1111100190000000a121100180000002212110035000000d84d11000c0000007365745f6b65790000000000fc20110003000000000000004b221100230000005a1211005d0000003897110000000000bd111100340000003897110000000000c54d11000b000000d04d110008000000f111110019000000b712110011000000d84d11000c0000007375646f5f617300000000005712110003000000000000004b221100230000000000000058531100080000000000000060531100100000005811110054000000ac111100110000003897110000000000bd111100340000003897110000000000c54d11000b000000d04d110008000000f1111100190000000a121100180000002212110035000000d84d11000c0000002041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d206120676976656e206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e202d204c696d697465642073746f726167652072656164732e202d204f6e6520444220777269746520286576656e74292e202d20556e6b6e6f776e20776569676874206f662064657269766174697665206070726f706f73616c6020657865637574696f6e2e77686f2041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e202d204f6e65204442206368616e67652e2041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e5375646f000000000000741311000300000000000000000000000b4e11000c0000000000000000000000000000000000000000000000000000000000000038971100781311000000000000000000881311000100000000000000010000004b657900370000000000000001000000c500000090131100210000002054686520604163636f756e74496460206f6620746865207375646f206b65792e0000003b1411000d0000001e1411001b0000003914110002000000dc131100420000001f020000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f6e6f64652f72756e74696d652f7372632f6c69622e727342616420696e70757420646174612070726f766964656420746f203a20657865637574655f626c6f636b5014110010000000696e697469616c697a655f626c6f636b681411000f0000006170706c795f65787472696e736963008014110013000000696e686572656e745f65787472696e73696373009c1411000f000000636865636b5f696e686572656e747300b41411001400000076616c69646174655f7472616e73616374696f6ed01411000f0000006f6666636861696e5f776f726b657200e8141100040000007369676ef4141100060000007665726966790000041511000d0000006163636f756e745f6e6f6e6365000000af86110004000000241511001500000067656e65726174655f73657373696f6e5f6b65797300000000000000c01511000600000000000000c8151100010000000000000000000000d0151100010000000000000000000000d81511000500000000000000e0151100020000000000000000000000f0151100010000000000000000000000f81511001a00000000000000108d110001000000000000000000000014161100020000000000000052657761726400001144110007000000c616110038000000536c617368000000d04311000900000011441100070000007d161100490000004f6c64536c617368696e675265706f7274446973636172646564000024161100470000006b1611001200000020416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c64206e6f742062652070726f6365737365642e204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e20416c6c2076616c696461746f72732068617665206265656e2072657761726465642062792074686520676976656e2062616c616e63652e5374616b696e672043757272656e7445726153746172745374616b696e67204e6f6d696e61746f727368656164206f66205374616b696e67204e6f6d696e61746f72735374616b696e672056616c696461746f727368656164206f66205374616b696e672056616c696461746f72735374616b696e67205374616b6572735374616b696e6720426f6e6465645374616b696e67204c65646765725374616b696e672050617965655374616b696e672043757272656e74456c65637465640000000000f81911000400000000000000fc191100030000000000000000000000441a11000f0000000000000000000000bc1a11000a00000000000000c81a1100010000000000000000000000e01a11000e0000000000000000000000501b11000600000000000000581b1100010000000000000000000000701b1100170000000000000000000000281c11001100000000000000389711000000000000000000000000003c1c1100100000000000000000000000bc1c11000800000000000000c41c1100010000000000000000000000dc1c11000b0000000000000000000000341d110008000000000000003c1d1100010000000000000000000000541d11000b0000000000000000000000ac1d1100050000000000000038971100000000000000000000000000b41d11000b00000000000000000000000c1e11000900000000000000181e1100010000000000000000000000301e11000b0000000000000000000000881e11000e00000000000000981e1100010000000000000000000000b01e11000b0000000000000000000000081f110013000000000000001c1f1100010000000000000000000000341f11000100000000000000000000003c1f11000d00000000000000389711000000000000000000000000004c1f1100050000000000000000000000741f11000d0000000000000038971100000000000000000000000000841f1100060000000000000000000000b41f11001100000000000000c81f1100010000000000000000000000e01f11000100000000000000626f6e6400000000412211000a000000000000004b22110023000000000000005f5511000500000000000000645511001500000000000000f12211000500000000000000f622110011000000d72b110059000000302c1100210000003897110000000000512c11004c00000038971100000000009d2c1100490000003897110000000000c54d11000b000000e62c110035000000d04d1100080000001b2d11001a0000003897110000000000352d11005b000000902d110049000000d84d11000c000000626f6e645f6578747261000000000000c92b11000e000000000000006455110015000000a32a110059000000fc2a11000d0000003897110000000000092b1100540000005d2b110059000000b62b11001300000038971100000000005a211100550000003897110000000000c54d11000b000000af2111003a000000d04d1100080000001d55110010000000d84d11000c000000756e626f6e640000000000005f55110005000000000000006455110015000000c8261100550000001d271100400000005d271100490000003897110000000000a627110052000000f8271100300000003897110000000000282811004f000000772811004f000000c62811003f00000038971100000000009c22110055000000389711000000000005291100260000003897110000000000c54d11000b0000002b29110050000000e9211100260000007b29110059000000d42911005c000000302a1100690000001d55110010000000992a11000a00000077697468647261775f756e626f6e646564000000c12411004b00000038971100000000000c2511004d000000592511001300000038971100000000009c2211005500000038971100000000006c2511001b0000003897110000000000c54d11000b0000008725110055000000dc251100510000002d2611003d0000006a2611005e0000000f22110032000000d84d11000c00000076616c696461746500000000a02411000500000000000000a52411001c000000662411003a0000003897110000000000232111003700000038971100000000009c221100550000003897110000000000c54d11000b000000af2111003a000000e9211100260000000f22110032000000d84d11000c0000006e6f6d696e617465000000003724110007000000000000003e241100280000004e231100440000003897110000000000232111003700000038971100000000009c221100550000003897110000000000c54d11000b0000009223110049000000db231100260000000124110036000000d84d11000c0000006368696c6c00000007231100320000003897110000000000232111003700000038971100000000009c221100550000003897110000000000c54d11000b000000af2111003a00000039231100150000000f22110032000000d84d11000c0000007365745f706179656500000000000000f12211000500000000000000f6221100110000006e2211002e0000003897110000000000232111003700000038971100000000009c221100550000003897110000000000c54d11000b000000af2111003a000000e9211100260000000f22110032000000d84d11000c0000007365745f636f6e74726f6c6c6572000000000000412211000a000000000000004b22110023000000ff201100240000003897110000000000232111003700000038971100000000005a211100550000003897110000000000c54d11000b000000af2111003a000000e9211100260000000f22110032000000d84d11000c0000007365745f76616c696461746f725f636f756e740000000000fc2011000300000000000000fa4e11000c000000dc20110020000000666f7263655f6e6f5f65726173000000b02011002c0000003897110000000000c54d11000b000000a020110010000000d84d11000c000000666f7263655f6e65775f657261000000252011005300000078201100280000003897110000000000c54d11000b000000a020110010000000d84d11000c0000007365745f696e76756c6e657261626c6573000000000000001b2011000a00000000000000255c110011000000e81f11003300000020536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e76616c696461746f727320466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c20626520726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e202d204e6f20617267756d656e74732e20466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e2054686520696465616c206e756d626572206f662076616c696461746f72732e6e6577202852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e636f6e74726f6c6c65723c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e706179656552657761726444657374696e6174696f6e204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e202d20436f6e7461696e73206f6e6520726561642e204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f66206074617267657473602c2077686963682069732063617070656420617420604d41585f4e4f4d494e4154494f4e53602e202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e746172676574735665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e707265667356616c696461746f7250726566733c42616c616e63654f663c543e3e2052656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e205468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f2077686174657665722069742077616e74732e2053656520616c736f205b6043616c6c3a3a756e626f6e64605d2e202d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e2020497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c2077686963682069732020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602e205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e6420706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e20543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665207468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360292063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e65656420746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e2053656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e6365602920202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e202020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c656420766961206077697468647261775f756e626f6e646564602e203c2f7765696768743e2041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757020666f72207374616b696e672e20557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e20556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7420746861742063616e2062652061646465642e6d61785f6164646974696f6e616c2054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c20626520746865206163636f756e74207468617420636f6e74726f6c732069742e206076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e202d20546872656520657874726120444220656e74726965732e204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e656420756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e5374616b696e6700000000683411000e0000000000000000000000763411000300000000000000000000000000000000000000000000000000000000000000389711006c36110000000000000000007c3411000100000000000000010000000000000084341100150000000000000000000000763411000300000000000000000000000000000000000000000000000000000000000000389711009c3411000000000000000000ac34110001000000000000000100000000000000b43411000d0000000000000000000000255c1100110000000000000000000000000000000000000000000000000000000000000038971100d03711000000000000000000c434110003000000000000000100000000000000dc3411000600000001010000000000000b4e11000c000000000000000b4e11000c00000000000000000000000000000000000000389711001c3511000000000000000000e434110001000000000000000000000000000000ec3411000600000001010000000000000b4e11000c00000000000000f23411002900000000000000000000000000000000000000389711001c35110000000000000000002c35110001000000000000000000000000000000343511000500000001010000000000000b4e11000c00000000000000f62211001100000000000000000000000000000000000000389711003c35110000000000000000004c35110001000000000000000100000000000000543511000a00000001010100000000000b4e11000c00000000000000a52411001c00000000000000000000000000000000000000389711006035110000000000000000007035110001000000000000000100000000000000783511000a00000001010100000000000b4e11000c00000000000000255c1100110000000000000000000000000000000000000038971100d0371100000000000000000084351100010000000000000001000000000000008c3511000700000001010000000000000b4e11000c0000000000000093351100240000000000000000000000000000000000000038971100b83511000000000000000000c835110004000000000000000100000000000000e83511000e0000000000000000000000255c1100110000000000000000000000000000000000000000000000000000000000000038971100d03711000000000000000000f835110001000000000000000100000000000000003611000a00000000000000000000000a3611000800000000000000000000000000000000000000000000000000000000000000389711006c361100000000000000000014361100010000000000000001000000000000001c3611000f00000000000000000000002b3611000b00000000000000000000000000000000000000000000000000000000000000389711003836110000000000000000004836110001000000000000000100000000000000503611001b00000000000000000000009f8d11000c00000000000000000000000000000000000000000000000000000000000000389711006c36110000000000000000007c36110001000000000000000100000000000000843611001600000000000000000000009a361100090000000000000000000000000000000000000000000000000000000000000038971100a43611000000000000000000b436110001000000000000000100000000000000bc3611000900000000000000000000007a6511000c0000000000000000000000000000000000000000000000000000000000000038971100c83611000000000000000000d836110003000000000000000100000000000000f0361100080000000000000000000000f83611000700000000000000000000000000000000000000000000000000000000000000389711000037110000000000000000001037110001000000000000000100000000000000183711001300000000000000000000002b37110007000000000000000000000000000000000000000000000000000000000000003897110034371100000000000000000044371100030000000000000001000000000000005c3711000a0000000000000000000000663711001d0000000000000000000000000000000000000000000000000000000000000038971100d0371100000000000000000084371100010000000000000001000000000000008c3711000f00000001010000000000000a36110008000000000000009b371100320000000000000000000000000000000000000038971100d03711000000000000000000e037110001000000000000000100000056616c696461746f72436f756e74753332000000da3d11002a0000004d696e696d756d56616c696461746f72436f756e74000000370000000000000001000000c60000008a3d110050000000496e76756c6e657261626c6573000000b63c1100560000000c3d1100530000005f3d11002b000000426f6e6465640000763c1100400000004c65646765725374616b696e674c65646765723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e003700000000000000010000004f000000253c11005100000050617965650000003700000000000000010000004f000000ec3b11003900000056616c696461746f72730000370000000000000001000000c70000009b3b1100510000004e6f6d696e61746f72730000423b1100590000005374616b6572734578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e00370000000000000001000000c8000000853a110053000000d83a11004600000038971100000000001e3b11002400000043757272656e74456c65637465640000463a11003f00000043757272656e74457261457261496e64657800002f3a11001700000043757272656e7445726153746172744d6f6d656e744f663c543e0000370000000000000001000000ab000000113a11001e00000043757272656e74457261537461727453657373696f6e496e646578003700000000000000010000009c000000dd3911003400000043757272656e74457261506f696e74734561726e6564457261506f696e747300370000000000000001000000c90000009a39110043000000536c6f745374616b65000000370000000000000001000000980000001e3911004c00000038971100000000006a39110030000000466f726365457261466f7263696e67003700000000000000010000004f000000d738110047000000536c6173685265776172644672616374696f6e50657262696c6c0000370000000000000001000000ca000000603811003e00000038971100000000009e38110039000000426f6e646564457261735665633c28457261496e6465782c2053657373696f6e496e646578293e001738110049000000457261536c6173684a6f75726e616c5665633c536c6173684a6f75726e616c456e7472793c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3e00000037000000000000000100000050000000e83711002f00000020416c6c20736c617368657320746861742068617665206f6363757272656420696e206120676976656e206572612e2041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e205472756520696620746865206e6578742073657373696f6e206368616e67652077696c6c2062652061206e657720657261207265676172646c657373206f6620696e6465782e2054686520616d6f756e74206f662062616c616e6365206163746976656c79206174207374616b6520666f7220656163682076616c696461746f7220736c6f742c2063757272656e746c792e2054686973206973207573656420746f20646572697665207265776172647320616e642070756e6973686d656e74732e205265776172647320666f72207468652063757272656e74206572612e205573696e6720696e6469636573206f662063757272656e7420656c6563746564207365742e205468652073657373696f6e20696e646578206174207768696368207468652063757272656e742065726120737461727465642e20546865207374617274206f66207468652063757272656e74206572612e205468652063757272656e742065726120696e6465782e205468652063757272656e746c7920656c65637465642076616c696461746f7220736574206b65796564206279207374617368206163636f756e742049442e204e6f6d696e61746f727320666f72206120706172746963756c6172206163636f756e74207468617420697320696e20616374696f6e207269676874206e6f772e20596f752063616e27742069746572617465207468726f7567682076616c696461746f727320686572652c2062757420796f752063616e2066696e64207468656d20696e207468652053657373696f6e206d6f64756c652e2054686973206973206b6579656420627920746865207374617368206163636f756e742e20546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e20546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e2057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e20416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e63652074686579277265206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f757220696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e2054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e00000000743e11000e000000000000009f8d11000c0000000000000038971100843e11000000000000000000943e11000100000000000000000000009c3e11000f000000000000000a361100080000000000000038971100ac3e11000000000000000000bc3e1100010000000000000053657373696f6e735065724572610000370000000000000001000000a5000000fd3e11001c000000426f6e64696e674475726174696f6e00370000000000000001000000cb000000c43e110039000000204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e204e756d626572206f662073657373696f6e7320706572206572612e5374616b696e6720536c6f745374616b650000603f110019000000803f110048000000bb0100002d0000005374616b696e6720457261536c6173684a6f75726e616c0000000000617474656d707420746f20646976696465206279207a65726f000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f6f70732f61726974682e72735374616b696e6720496e76756c6e657261626c6573000000387d110028000000f83f1100420000009c020000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f7374616b696e672f7372632f6c69622e72730000f83f1100420000009c02000001000000636f6e74726f6c6c657220616c72656164792070616972656463616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e6365737461736820616c726561647920626f6e6465646e6f7420612073746173686e6f74206120636f6e74726f6c6c657263616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b73746172676574732063616e6e6f7420626520656d7074790000000000e44211000800000000000000ec42110002000000000000000000000038971100000000000000000000000000fc421100060000000000000004431100030000000000000000000000389711000000000000000000000000001c4311000e0000000000000038971100000000000000000000000000389711000000000000000000000000002a431100070000000000000034431100020000000000000000000000389711000000000000000000000000004443110006000000000000004c431100010000000000000000000000389711000000000000000000000000005443110009000000000000004c431100010000000000000000000000389711000000000000000000000000005d43110009000000000000004c4311000100000000000000000000003897110000000000000000000000000066431100080000000000000070431100020000000000000000000000389711000000000000000000000000008043110009000000000000008c431100020000000000000000000000389711000000000000000000000000009c4311000b00000000000000a843110001000000000000000000000038971100000000000000000000000000b04311000600000000000000b843110003000000000000000000000038971100000000000000000050726f706f736564084411000900000011441100070000005461626c6564000008441100090000001144110007000000184411000e00000045787465726e616c5461626c656453746172746564000000e84311000f000000fb4311000d0000005061737365640000e84311000f0000004e6f7450617373656443616e63656c6c656445786563757465640000e84311000f000000f74311000400000044656c656761746564000000d043110009000000d043110009000000556e64656c65676174656400d0431100090000005665746f65640000d043110009000000d943110004000000dd4311000b0000004163636f756e74496448617368426c6f636b4e756d6265725265666572656e64756d496e646578626f6f6c566f74655468726573686f6c6450726f70496e64657842616c616e63655665633c4163636f756e7449643e44656d6f637261637920566f74654f6644656d6f6372616379205265666572656e64756d496e666f4f6644656d6f63726163792044656c65676174696f6e7368656164206f662044656d6f63726163792044656c65676174696f6e7344656d6f6372616379204469737061746368517565756544656d6f637261637920566f74657273466f7244656d6f6372616379205075626c696350726f70730000005045110048000000a10a00000e00000044656d6f6372616379204465706f7369744f664e6f207075626c69632070726f706f73616c732077616974696e6743616e6e6f7420696e6a6563742061207265666572656e64756d207468617420656e6473206561726c696572207468616e2070726563656564696e67207265666572656e64756d000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e727344656d6f6372616379204e65787445787465726e616c4e6f2065787465726e616c2070726f706f73616c2077616974696e67000000000000b84811000700000000000000c0481100020000000000000000000000f0481100060000000000000000000000204911000600000000000000284911000100000000000000000000004049110006000000000000000000000070491100040000000000000074491100020000000000000000000000a4491100070000000000000000000000dc4911000a0000000000000074491100020000000000000000000000e8491100070000000000000000000000204a11001000000000000000304a1100010000000000000000000000484a1100020000000000000000000000584a11001000000000000000684a1100010000000000000000000000804a1100020000000000000000000000904a11001900000000000000684a1100010000000000000000000000ac4a1100050000000000000000000000d44a11001800000000000000684a1100010000000000000000000000ec4a1100050000000000000000000000144b11000a00000000000000204b1100030000000000000000000000684b1100080000000000000000000000a84b11000d00000000000000b84b1100010000000000000000000000d04b1100010000000000000000000000d84b11001100000000000000ec4b1100010000000000000000000000044c11000100000000000000000000000c4c11000d000000000000001c4c1100030000000000000000000000644c11000100000000000000000000006c4c11000900000000000000784c1100010000000000000000000000904c1100050000000000000000000000b84c11000c0000000000000038971100000000000000000000000000c44c1100050000000000000000000000ec4c11000c00000000000000784c1100010000000000000000000000f84c1100050000000000000000000000204d11000800000000000000284d1100020000000000000000000000584d1100050000000000000000000000804d11000a00000000000000389711000000000000000000000000008c4d1100050000000000000070726f706f736500000000005853110008000000000000006053110010000000000000005f55110005000000000000006455110015000000f5541100280000003897110000000000c54d11000b000000d04d1100080000003f55110020000000d84d11000c0000007365636f6e640000000000005853110008000000000000002d55110012000000f5541100280000003897110000000000c54d11000b000000d04d1100080000001d55110010000000d84d11000c000000766f746500000000374f110009000000000000000a4f11001800000000000000704911000400000000000000f154110004000000755411004d000000c25411002f0000003897110000000000c54d11000b000000d04d110008000000565411001f000000d84d11000c00000070726f78795f766f74650000c453110054000000185411003e0000003897110000000000c54d11000b000000d04d110008000000565411001f000000d84d11000c000000656d657267656e63795f63616e63656c00000000374f11000900000000000000e84311000f00000070531100540000004c5311000c00000065787465726e616c5f70726f706f7365000000005853110008000000000000006053110010000000005311004c0000004c5311000c00000065787465726e616c5f70726f706f73655f6d616a6f726974790000009252110056000000e852110018000000389711000000000018521100530000006b5211002700000065787465726e616c5f70726f706f73655f64656661756c74a551110052000000f751110021000000389711000000000018521100530000006b52110027000000666173745f747261636b0000000000006f4f11000d000000000000007c4f11000700000000000000855111000d00000000000000925111000e00000000000000a05111000500000000000000925111000e000000834f110054000000d74f110059000000305011003b00000038971100000000006b5011003e000000a95011004b000000f450110055000000495111003c0000007665746f5f65787465726e616c000000000000006f4f11000d000000000000007c4f110007000000404f11002f00000063616e63656c5f7265666572656e64756d00000000000000374f110009000000000000000a4f110018000000224f11001500000063616e63656c5f71756575656400000000000000da4e11000400000000000000de4e11001700000000000000f54e11000500000000000000fa4e11000c00000000000000064f110004000000000000000a4f110018000000b24e1100280000007365745f70726f787900000000000000ad4e110005000000000000000b4e11000c000000874e1100260000003897110000000000c54d11000b000000f34d110016000000d84d11000c00000072657369676e5f70726f7879614e1100260000003897110000000000c54d11000b000000514e110010000000d84d11000c00000072656d6f76655f70726f78792b4e1100260000003897110000000000c54d11000b000000514e110010000000d84d11000c00000064656c656761746500000000094e110002000000000000000b4e11000c00000000000000174e11000a00000000000000214e11000a000000e44d11000f0000003897110000000000c54d11000b000000f34d110016000000d84d11000c000000756e64656c65676174650000b44d1100110000003897110000000000c54d11000b000000d04d110008000000d84d11000c00000020556e64656c656761746520766f74652e2023203c7765696768743e202d204f2831292e2023203c2f7765696768743e2044656c656761746520766f74652e202d204f6e6520657874726120444220656e7472792e746f543a3a4163636f756e744964636f6e76696374696f6e436f6e76696374696f6e20436c656172207468652070726f78792e2043616c6c6564206279207468652073746173682e202d204f6e6520444220636c6561722e20436c656172207468652070726f78792e2043616c6c6564206279207468652070726f78792e205370656369667920612070726f78792e2043616c6c6564206279207468652073746173682e70726f78792043616e63656c20612070726f706f73616c2071756575656420666f7220656e6163746d656e742e7768656e436f6d706163743c543a3a426c6f636b4e756d6265723e7768696368436f6d706163743c7533323e77686174436f6d706163743c5265666572656e64756d496e6465783e2052656d6f76652061207265666572656e64756d2e7265665f696e646578205665746f20616e6420626c61636b6c697374207468652065787465726e616c2070726f706f73616c20686173682e70726f706f73616c5f68617368543a3a48617368205363686564756c65207468652063757272656e746c792065787465726e616c6c792d70726f706f736564206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c656420696d6d6564696174656c792e204966207468657265206973206e6f2065787465726e616c6c792d70726f706f736564207265666572656e64756d2063757272656e746c792c206f72206966207468657265206973206f6e6520627574206974206973206e6f742061206d616a6f726974792d63617272696573207265666572656e64756d207468656e206974206661696c732e202d206070726f706f73616c5f68617368603a205468652068617368206f66207468652063757272656e742065787465726e616c2070726f706f73616c2e202d2060766f74696e675f706572696f64603a2054686520706572696f64207468617420697320616c6c6f77656420666f7220766f74696e67206f6e20746869732070726f706f73616c2e202d206064656c6179603a20546865206e756d626572206f6620626c6f636b20616674657220766f74696e672068617320656e64656420696e20617070726f76616c20616e6420746869732073686f756c64206265202020656e61637465642e20496e6372656173656420746f2060456d657267656e6379566f74696e67506572696f646020696620746f6f206c6f772e766f74696e675f706572696f64543a3a426c6f636b4e756d62657264656c6179205363686564756c652061206e656761746976652d7475726e6f75742d62696173207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e20556e6c696b65206065787465726e616c5f70726f706f7365602c20626c61636b6c697374696e6720686173206e6f20656666656374206f6e207468697320616e64206974206d6179207265706c6163652061207072652d7363686564756c6564206065787465726e616c5f70726f706f7365602063616c6c2e205363686564756c652061206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e205363686564756c652061207265666572656e64756d20746f206265207461626c6564206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e70726f706f73616c426f783c543a3a50726f706f73616c3e205363686564756c6520616e20656d657267656e63792063616e63656c6c6174696f6e206f662061207265666572656e64756d2e2043616e6e6f742068617070656e20747769636520746f207468652073616d6520566f746520696e2061207265666572656e64756d206f6e20626568616c66206f6620612073746173682e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3b20206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e202d204f6e65204442206368616e67652c206f6e6520444220656e7472792e20566f746520696e2061207265666572656e64756d2e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3b206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e566f74652050726f706f736520612073656e73697469766520616374696f6e20746f2062652074616b656e2e202d204f6e6520444220656e7472792e436f6d706163743c50726f70496e6465783e202d2054776f204442206368616e6765732c206f6e6520444220656e7472792e76616c7565436f6d706163743c42616c616e63654f663c543e3e44656d6f6372616379000000000000ac5a11000f0000000000000000000000084411000900000000000000000000000000000000000000000000000000000000000000389711006c5b11000000000000000000bc5a110001000000000000000100000000000000c45a11000b0000000000000000000000cf5a11002b0000000000000000000000000000000000000000000000000000000000000038971100385c11000000000000000000fc5a110001000000000000000100000000000000045b11000900000001010000000000000844110009000000000000000d5b1100210000000000000000000000000000000000000038971100305b11000000000000000000405b110001000000000000000000000000000000485b11000f0000000000000000000000e84311000f00000000000000000000000000000000000000000000000000000000000000389711006c5b11000000000000000000585b110001000000000000000100000000000000605b1100090000000000000000000000e84311000f00000000000000000000000000000000000000000000000000000000000000389711006c5b110000000000000000007c5b110001000000000000000100000000000000845b1100100000000101000000000000e84311000f00000000000000945b11002d0000000000000000000000000000000000000038971100b05c11000000000000000000c45b110001000000000000000000000000000000cc5b11000d0000000101000000000000925111000e00000000000000d95b11002b0000000000000000000000000000000000000038971100045c11000000000000000000145c1100010000000000000001000000000000001c5c1100090000000101000000000000e84311000f00000000000000255c1100110000000000000000000000000000000000000038971100385c11000000000000000000485c110001000000000000000100000000000000505c1100060000000101000000000000565c11001f00000000000000f1541100040000000000000000000000000000000000000038971100785c11000000000000000000885c110004000000000000000100000000000000a85c11000500000001010000000000000b4e11000c000000000000000b4e11000c0000000000000000000000000000000000000038971100b05c11000000000000000000c05c110002000000000000000000000000000000d05c11000b00000001010100000000000b4e11000c00000000000000db5c11001a0000000000000000000000000000000000000038971100f85c11000000000000000000085d110001000000000000000100000000000000105d1100150000000000000000000000f7431100040000000000000000000000000000000000000000000000000000000000000038971100ec5d11000000000000000000285d110002000000000000000100000000000000385d11000c0000000000000000000000445d11001c0000000000000000000000000000000000000000000000000000000000000038971100605d11000000000000000000705d110004000000000000000000000000000000905d11000900000001010000000000007c4f11000700000000000000995d1100230000000000000000000000000000000000000038971100bc5d11000000000000000000cc5d110002000000000000000000000000000000dc5d11000d00000001010000000000007c4f11000700000000000000f7431100040000000000000000000000000000000000000038971100ec5d11000000000000000000fc5d11000100000000000000010000005075626c696350726f70436f756e74006c6311003d0000005075626c696350726f70735665633c2850726f70496e6465782c20543a3a50726f706f73616c2c20543a3a4163636f756e744964293e00004c631100200000004465706f7369744f662842616c616e63654f663c543e2c205665633c543a3a4163636f756e7449643e290000370000000000000001000000a20000002b631100210000005265666572656e64756d436f756e7400df6211004c0000004e65787454616c6c790000003700000000000000010000009c000000ad621100320000005265666572656e64756d496e666f4f66285265666572656e64756d496e666f3c543a3a426c6f636b4e756d6265722c20543a3a50726f706f73616c3e29000000806211002d000000446973706174636851756575655665633c4f7074696f6e3c28543a3a50726f706f73616c2c205265666572656e64756d496e646578293e3e370000000000000001000000500000005062110030000000566f74657273466f725665633c543a3a4163636f756e7449643e0000370000000000000001000000500000002762110029000000566f74654f66285265666572656e64756d496e6465782c20543a3a4163636f756e744964290000003700000000000000010000004f000000e86011005800000040611100530000009361110057000000ea6111003d00000050726f78790000003700000000000000010000004f0000007a6011004c000000c66011002200000044656c65676174696f6e7328543a3a4163636f756e7449642c20436f6e76696374696f6e29000000370000000000000001000000cc0000002a601100500000004c6173745461626c656457617345787465726e616c000000ca5f110056000000206011000a0000004e65787445787465726e616c28543a3a50726f706f73616c2c20566f74655468726573686f6c6429370000000000000001000000cd000000dc5e110056000000325f110055000000875f110029000000b05f11001a000000426c61636b6c69737428543a3a426c6f636b4e756d6265722c205665633c543a3a4163636f756e7449643e29370000000000000001000000a20000004e5e110054000000a25e11003a00000043616e63656c6c6174696f6e730000003700000000000000010000004f000000045e11004a000000205265636f7264206f6620616c6c2070726f706f73616c7320746861742068617665206265656e207375626a65637420746f20656d657267656e63792063616e63656c6c6174696f6e2e2041207265636f7264206f662077686f207665746f656420776861742e204d6170732070726f706f73616c206861736820746f206120706f737369626c65206578697374656e7420626c6f636b206e756d6265722028756e74696c207768656e206974206d6179206e6f742062652072657375626d69747465642920616e642077686f207665746f65642069742e20546865207265666572656e64756d20746f206265207461626c6564207768656e6576657220697420776f756c642062652076616c696420746f207461626c6520616e2065787465726e616c2070726f706f73616c2e20546869732068617070656e73207768656e2061207265666572656e64756d206e6565647320746f206265207461626c656420616e64206f6e65206f662074776f20636f6e646974696f6e7320617265206d65743a202d20604c6173745461626c656457617345787465726e616c60206973206066616c7365603b206f72202d20605075626c696350726f70736020697320656d7074792e205472756520696620746865206c617374207265666572656e64756d207461626c656420776173207375626d69747465642065787465726e616c6c792e2046616c7365206966206974207761732061207075626c69632070726f706f73616c2e2047657420746865206163636f756e742028616e64206c6f636b20706572696f64732920746f20776869636820616e6f74686572206163636f756e742069732064656c65676174696e6720766f74652e2057686f2069732061626c6520746f20766f746520666f722077686f6d2e2056616c7565206973207468652066756e642d686f6c64696e67206163636f756e742c206b65792069732074686520766f74652d7472616e73616374696f6e2d73656e64696e67206163636f756e742e204765742074686520766f746520696e206120676976656e207265666572656e64756d206f66206120706172746963756c617220766f7465722e2054686520726573756c74206973206d65616e696e6766756c206f6e6c792069662060766f746572735f666f726020696e636c756465732074686520766f746572207768656e2063616c6c6564207769746820746865207265666572656e64756d2028796f75276c6c20676574207468652064656661756c742060566f7465602076616c7565206f7468657277697365292e20496620796f7520646f6e27742077616e7420746f20636865636b2060766f746572735f666f72602c207468656e20796f752063616e20616c736f20636865636b20666f722073696d706c65206578697374656e636520776974682060566f74654f663a3a657869737473602066697273742e204765742074686520766f7465727320666f72207468652063757272656e742070726f706f73616c2e205175657565206f66207375636365737366756c207265666572656e646120746f20626520646973706174636865642e20496e666f726d6174696f6e20636f6e6365726e696e6720616e7920676976656e207265666572656e64756d2e20546865206e657874207265666572656e64756d20696e64657820746861742073686f756c642062652074616c6c6965642e20546865206e6578742066726565207265666572656e64756d20696e6465782c20616b6120746865206e756d626572206f66207265666572656e6461207374617274656420736f206661722e2054686f73652077686f2068617665206c6f636b65642061206465706f7369742e20546865207075626c69632070726f706f73616c732e20556e736f727465642e20546865206e756d626572206f6620287075626c6963292070726f706f73616c7320746861742068617665206265656e206d61646520736f206661722e00000000000000fc6411000f00000000000000925111000e00000000000000389711000c65110000000000000000001c651100050000000000000000000000446511000c00000000000000925111000e0000000000000038971100e0651100000000000000000050651100010000000000000000000000586511000c00000000000000925111000e0000000000000038971100e06511000000000000000000646511000100000000000000000000006c6511000e000000000000007a6511000c000000000000003897110088651100000000000000000098651100010000000000000000000000a06511001500000000000000925111000e0000000000000038971100b86511000000000000000000c8651100010000000000000000000000d06511000d00000000000000925111000e0000000000000038971100e06511000000000000000000f06511000100000000000000456e6163746d656e74506572696f6400370000000000000001000000ce0000003f6711005c00000038971100000000009b6711004c000000e76711005a00000041681100270000004c61756e6368506572696f640667110039000000566f74696e67506572696f64d86611002e0000004d696e696d756d4465706f73697442616c616e63654f663c543e0000370000000000000001000000cf0000008b6611004d000000456d657267656e6379566f74696e67506572696f64000000370000000000000001000000d0000000506611003b000000436f6f6c6f6666506572696f64000000370000000000000001000000d1000000f86511005800000020506572696f6420696e20626c6f636b7320776865726520616e2065787465726e616c2070726f706f73616c206d6179206e6f742062652072652d7375626d6974746564206166746572206265696e67207665746f65642e204d696e696d756d20766f74696e6720706572696f6420616c6c6f77656420666f7220616e20656d657267656e6379207265666572656e64756d2e20546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f722061207075626c6963207265666572656e64756d2070726f706f73616c2e20486f77206f6674656e2028696e20626c6f636b732920746f20636865636b20666f72206e657720766f7465732e20486f77206f6674656e2028696e20626c6f636b7329206e6577207075626c6963207265666572656e646120617265206c61756e636865642e20546865206d696e696d756d20706572696f64206f66206c6f636b696e6720616e642074686520706572696f64206265747765656e20612070726f706f73616c206265696e6720617070726f76656420616e6420656e61637465642e2049742073686f756c642067656e6572616c6c792062652061206c6974746c65206d6f7265207468616e2074686520756e7374616b6520706572696f6420746f20656e73757265207468617420766f74696e67207374616b657273206861766520616e206f70706f7274756e69747920746f2072656d6f7665207468656d73656c7665732066726f6d207468652073797374656d20696e207468652063617365207768657265207468657920617265206f6e20746865206c6f73696e672073696465206f66206120766f74652e387d11002800000080681100440000004f010000010000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f73726d6c2f64656d6f63726163792f7372632f6c69622e7273036b110023000000d96a11002a00000080681100440000004f0100000100000076616c756520746f6f206c6f7770726f706f73657227732062616c616e636520746f6f206c6f7763616e206f6e6c79207365636f6e6420616e206578697374696e672070726f706f73616c7365636f6e64657227732062616c616e636520746f6f206c6f7744656d6f63726163792050726f78796e6f7420612070726f787944656d6f63726163792043616e63656c6c6174696f6e7370726f706f73616c207374696c6c20626c61636b6c697374656470726f706f73616c20616c7265616479206d61646544656d6f637261637920426c61636b6c697374696e76616c696420686173686e6578742065787465726e616c2070726f706f73616c206e6f742073696d706c65206d616a6f726974796e6f2070726f706f73616c206d616465756e6b6e6f776e2070726f706f73616c6e6f2065787465726e616c2070726f706f73616c6964656e74697479206d6179206e6f74207665746f20612070726f706f73616c207477696365616c726561647920612070726f787977726f6e672070726f78796e6f742064656c656761746564756e6b6e6f776e20696e64657863616e6e6f742063616e63656c207468652073616d652070726f706f73616c20747769636570726f706f73616c206e6f7420666f756e64766f746520676976656e20666f7220696e76616c6964207265666572656e64756d2e696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64653a205f5f5068616e746f6d4974656d2073686f756c64206e6576657220626520757365642e00003300000004000000040000002500000042725461626c65446174617461626c65330000000400000004000000d200000064656661756c744636345265696e74657270726574493634556e726561636861626c654e6f70426c6f636b00330000000400000004000000d30000004c6f6f704966456c7365456e6442724272496642725461626c650000330000000400000004000000d400000052657475726e43616c6c43616c6c496e6469726563740000330000000400000004000000d500000044726f7053656c6563744765744c6f63616c5365744c6f63616c5465654c6f63616c476574476c6f62616c536574476c6f62616c4933324c6f61644936344c6f61644633324c6f61644636344c6f61644933324c6f616438534933324c6f616438554933324c6f61643136534933324c6f61643136554936344c6f616438534936344c6f616438554936344c6f61643136534936344c6f61643136554936344c6f61643332534936344c6f616433325549333253746f726549363453746f726546333253746f726546363453746f726549333253746f72653849333253746f7265313649363453746f72653849363453746f7265313649363453746f7265333243757272656e744d656d6f727947726f774d656d6f7279493332436f6e737400330000000400000004000000d6000000493634436f6e7374330000000400000004000000d7000000463332436f6e7374463634436f6e73743300000004000000040000000900000049333245717a49333245714933324e654933324c74534933324c74554933324774534933324774554933324c65534933324c655549333247655349333247655549363445717a49363445714936344e654936344c74534936344c74554936344774534936344774554936344c65534936344c655549363447655349363447655546333245714633324e654633324c7446333247744633324c65463332476546363445714636344e654636344c7446363447744636344c654636344765493332436c7a49333243747a493332506f70636e744933324164644933325375624933324d756c493332446976534933324469765549333252656d5349333252656d55493332416e644933324f72493332586f7249333253686c4933325368725349333253687255493332526f746c493332526f7472493634436c7a49363443747a493634506f70636e744936344164644936345375624936344d756c493634446976534936344469765549363452656d5349363452656d55493634416e644936344f72493634586f7249363453686c4936345368725349363453687255493634526f746c493634526f74724633324162734633324e65674633324365696c463332466c6f6f724633325472756e634633324e656172657374463332537172744633324164644633325375624633324d756c4633324469764633324d696e4633324d6178463332436f70797369676e4636344162734636344e65674636344365696c463634466c6f6f724636345472756e634636344e656172657374463634537172744636344164644636345375624636344d756c4636344469764636344d696e4636344d6178463634436f70797369676e493332577261704936344933325472756e63534633324933325472756e63554633324933325472756e63534636344933325472756e6355463634493634457874656e6453493332493634457874656e64554933324936345472756e63534633324936345472756e63554633324936345472756e63534636344936345472756e6355463634463332436f6e7665727453493332463332436f6e7665727455493332463332436f6e7665727453493634463332436f6e766572745549363446333244656d6f7465463634463634436f6e7665727453493332463634436f6e7665727455493332463634436f6e7665727453493634463634436f6e766572745549363446363450726f6d6f74654633324933325265696e746572707265744633324936345265696e746572707265744636344633325265696e74657270726574493332496e76616c696444617461547261696c696e6744617461556e6578706563746564456f6600002c7111000b000000492f4f204572726f723a204e6f526573756c7456616c7565330000000400000004000000d80000004636344933324936344633324e6f6e65536f6d65330000000400000004000000d9000000656e7600907111005d0000001201000016000000000000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31312e302f7372632f6761732f6d6f642e72736c6173745f696e6465782069732067726561746572207468616e20303b206c6173745f696e64657820697320737461636b2073697a65202d20313b2071656470721100660000001001000017000000447211002500000043616c6c20746f2066756e6374696f6e2074686174206f75742d6f662d626f756e64733a20000000000000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31312e302f7372632f737461636b5f6865696768742f6d6f642e7273546869732073686f756c64206265206120696e646578206f66206120646566696e65642066756e6374696f6e44756520746f2076616c69646174696f6e20636f64652073656374696f6e2073686f756c642065786973747346756e6374696f6e20626f6479206973206f7574206f6620626f756e647366756e6374696f6e20696d706f727420636f756e74206973206e6f74207a65726f3b20696d706f72742073656374696f6e206d757374206578697374733b2071656466756e635f696478206973206c657373207468616e2066756e6374696f6e20696d706f72747320636f756e743b0a090909096e74682066756e6374696f6e20696d706f7274206d7573742062652060536f6d65603b0a0909090971656400f495110012000000417411000f000000147411000a0000001e74110014000000327411000f0000005369676e61747572652020287370656369666965642062792066756e6320292069736e277420646566696e6564206973206e6f7420646566696e65647372632f6c6962616c6c6f632f7665632e7273007c7411001c0000005074110013000000cc04000009000000617373657274696f6e206661696c65643a20656e64203c3d206c656e2075110048000000b1010000230000002075110048000000b201000023000000d074110049000000870200001d00000000000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f736f72742e7273000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e7273d0741100490000009d0000003a000000d074110049000000a4000000300000004d761100120000005f7611000c0000006066756e635f696478602073686f756c6420636f6d652066726f6d20606e6565645f7468756e6b73603b0a09090909606e6565645f7468756e6b736020697320706f70756c617465642077697468207468652073616d65206974656d73207468617420696e20607265706c6163656d656e745f6d6170603b0a090909097165644174207468697320706f696e7420616e20696e646578206d7573742062652061737369676e656420746f2065616368207468756e6b66756e6374696f6e207769746820696478202069736e277420666f756e644672616d6569735f706f6c796d6f72706869630000330000000400000004000000da000000656e645f6172697479000000330000000400000004000000250000006272616e63685f617269747973746172745f6865696768744e6f2066756e6374696f6e2073656374696f6e4e6f20636f64652073656374696f6e4e6f20747970652073656374696f6e000000e47911000a00000046756e6374696f6e206973206e6f7420666f756e6420696e2066756e632073656374696f6e46756e6374696f6e20626f647920666f722074686520696e6465782069736e277420666f756e64d87911000c000000447911000b000000737461636b206d757374206265206e6f6e2d656d70747900397911000b000000f078110006000000737461636b206f766572666c6f774172697479206f6620616c6c206a756d702d74617267657473206d75737420626520657175616c54797065206e6f7420666f756e6400e978110007000000e07711006d000000c8000000110000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31312e302f7372632f737461636b5f6865696768742f6d61785f6865696768742e72736d61785f686569676874707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768742f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31312e302f7372632f737461636b5f6865696768742f6d61785f6865696768742e72737472756e633a20707573683a2000003479110005000000747279696e6720746f20706f70206d6f72652076616c756573207468616e20707573686564737461636b20756e646572666c6f77706f703a20756e726561636861626c65706f705f6672616d653a20636f6e74726f6c20737461636b20697320656d707479636f6e74726f6c20737461636b206f75742d6f662d626f756e647390791100480000009b0a00000a0000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e7273707573685f6672616d653a2066756e635f6964783a206578745f6368696c645f73746f726167655f726f6f74206e657665722072657475726e73207533323a3a6d61785f76616c75653b2071656452756e74696d65206d656d6f7279206578686175737465642e2041626f7274696e6753797374656d2073746174652063757272656e746c792070726576656e74732074686973207472616e73616374696f6e5472616e73616374696f6e20646f6573206e6f742068617665207265717569726564207065726d697373696f6e73496e76616c6964206f726967696e496e76616c69645472616e73616374696f6e20637573746f6d206572726f725472616e73616374696f6e20776f756c642065786861757374732074686520626c6f636b206c696d6974735472616e73616374696f6e2068617320616e20616e6369656e7420626972746820626c6f636b5472616e73616374696f6e20686173206120626164207369676e61747572655472616e73616374696f6e206973206f757464617465645472616e73616374696f6e2077696c6c2062652076616c696420696e2074686520667574757265496e6162696c69747920746f2070617920736f6d6520666565732028652e672e206163636f756e742062616c616e636520746f6f206c6f77295472616e73616374696f6e2063616c6c206973206e6f74206578706563746564556e6b6e6f776e5472616e73616374696f6e20637573746f6d206572726f72436f756c64206e6f742066696e6420616e20756e7369676e65642076616c696461746f7220666f722074686520756e7369676e6564207472616e73616374696f6e436f756c64206e6f74206c6f6f6b757020696e666f726d6174696f6e20726571756972656420746f2076616c696461746520746865207472616e73616374696f6e00a07c110019000000c07c1100500000005800000022000000000000000000000000000000617474656d707420746f20646976696465206279207a65726f000000000000002f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f636f72652f73722d7072696d6974697665732f7372632f67656e657269632f6572612e727348617368206e6f7420657175616c0000387d110028000000607d1100500000008700000009000000696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64652f686f6d652f616e6472652f576f726b62656e63682f706172697479746563682f7375627374726174652f636f72652f73722d73616e64626f782f7372632f2e2e2f776974686f75745f7374642e7273387d110028000000607d1100500000009000000009000000417574686f727368697020446964536574556e636c6573426162652045706f6368496e6465784261626520417574686f726974696573426162652047656e65736973536c6f74426162652043757272656e74536c6f74426162652052616e646f6d6e65737342616265204e65787452616e646f6d6e65737342616265205365676d656e74496e6465784261626520556e646572436f6e737472756374696f6e4261626520496e697469616c697a656462616265736c6f74436f756c64206e6f74206465636f64652072657175657374656420696e686572656e742074797065214241424520696e686572656e742064617461206e6f7420666f756e64746f6f206d616e7920696e737472756374696f6e73000000f47e110024000000187f1100170000005d02000009000000547269656420746f20736872696e6b20746f2061206c61726765722063617061636974797372632f6c6962616c6c6f632f7261775f7665632e7273436f6e7472616374204761735370656e74436f6e74726163742043757272656e745363686564756c65436f6e7472616374204163636f756e74436f756e7465726761736578745f7365745f73746f726167656578745f6765745f73746f726167656578745f63616c6c6578745f696e7374616e74696174656578745f72657475726e6578745f63616c6c65726578745f616464726573736578745f6761735f70726963656578745f6761735f6c6566746578745f62616c616e63656578745f76616c75655f7472616e736665727265646578745f72616e646f6d6578745f6e6f776578745f6d696e696d756d5f62616c616e63656578745f64697370617463685f63616c6c6578745f726573746f72655f746f6578745f736372617463685f73697a656578745f736372617463685f726561646578745f736372617463685f77726974656578745f6465706f7369745f6576656e746578745f7365745f72656e745f616c6c6f77616e63656578745f72656e745f616c6c6f77616e63656578745f7072696e746c6e6578745f626c6f636b5f6e756d6265724e6f6e2d656d7074792066756e6374696f6e20626f647920657870656374656400a68111000f000000b581110002000000b7811100030000001881110030000000488111005e0000007a00000005000000617373657274696f6e206661696c65643a20636f6e746578742e6672616d655f737461636b2e69735f656d70747928292f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7761736d692d76616c69646174696f6e2d302e322e302f7372632f66756e632e7273417420696e737472756374696f6e202840293a2000008082110048000000b1010000230000008082110048000000b201000023000000598211001c0000006898110018000000e50300000d0000001082110049000000870200001d0000000000000000000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f736f72742e7273617373657274696f6e206661696c65643a206d6964203c3d206c656e00000000000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e727310821100490000009d0000003a0000001082110049000000a40000003000000052657475726e207479706573206c656e6774682073686f756c642062652030206f722031178511001e000000358511001f00000066756e6374696f6e5f73656374696f6e5f6c656e20213d20303b2071656466756e6374696f6e5f73656374696f6e5f6c656e20213d20303b2066756e6374696f6e5f73656374696f6e5f6c656e203d3d20636f64655f73656374696f6e5f6c656e3b207165640000fd8411001a000000d88411000a000000e28411001b00000073746172742066756e6374696f6e20657870656374656420746f20686176652074797065205b5d202d3e205b5d000000c784110011000000a78411002000000087841100200000005f841100280000007365676d656e74206f66667365742073686f756c642072657475726e2049333270617373697665206d656d6f7279207365676d656e747320617265206e6f7420737570706f727465647061737369766520656c656d656e74207365676d656e747320617265206e6f7420737570706f72746564746f6f206d616e79206d656d6f727920726567696f6e7320696e20696e6465782073706163653a20746f6f206d616e79207461626c657320696e20696e6465782073706163653a20747279696e6720746f20696d706f7274206d757461626c6520676c6f62616c206475706c6963617465206578706f72742046756e6374696f6e20232072656164696e672f76616c69646174696f6e206572726f723a204d697373696e6720626f647920666f722066756e6374696f6e206c656e677468206f662066756e6374696f6e2073656374696f6e206973202c207768696c65206c656e206f6620636f64652073656374696f6e2069732043616e2774206465636f6465207761736d20636f64654d6f64756c65206973206e6f742076616c69646d6f64756c65206465636c6172657320696e7465726e616c206d656d6f72796d756c7469706c65207461626c6573206465636c617265647461626c652065786365656473206d6178696d756d2073697a6520616c6c6f776564757365206f6620666c6f6174696e6720706f696e74207479706520696e2066756e6374696f6e20747970657320697320666f7262696464656e757365206f6620666c6f6174696e6720706f696e74207479706520696e206c6f63616c7320697320666f7262696464656e757365206f6620666c6f6174696e6720706f696e74207479706520696e20676c6f62616c7320697320666f7262696464656e67617320696e737472756d656e746174696f6e206661696c6564737461636b2068656967687420696e737472756d656e746174696f6e206661696c656463616c6c6465706c6f796465706c6f792066756e6374696f6e2069736e2774206578706f72746564756e6b6e6f776e206578706f72743a20657870656374696e67206f6e6c79206465706c6f7920616e642063616c6c2066756e6374696f6e7366756e6374696f6e206861732061206e6f6e2d6578697374656e7420747970656578706f72742072656665727320746f206e6f6e2d6578697374656e742066756e6374696f6e657870656374656420612066756e6374696f6e656e74727920706f696e7420706f696e747320746f20616e20696d706f727465642066756e6374696f6e656e74727920706f696e74206861732077726f6e67207369676e617475726563616c6c2066756e6374696f6e2069736e2774206578706f727465646572726f722073657269616c697a696e6720696e737472756d656e746564206d6f64756c6500000000000001000000020000000400000008000000100000002000000044656d6f6372616379205075626c696350726f70436f756e7444656d6f6372616379205265666572656e64756d436f756e7444656d6f6372616379204e65787454616c6c7944656d6f6372616379204c6173745461626c656457617345787465726e616c436f756e63696c20446573697265645365617473436f756e63696c20566f7465436f756e74436f756e63696c204e657874566f746572536574436f756e63696c20566f746572436f756e74436f756e63696c2043616e646964617465436f756e7454696d657374616d7020496e697469616c697a6564000000000000708911000e0000000000000080891100010000000000000000000000888911000100000000000000000000009089110006000000000000003897110000000000000000000000000098891100010000000000000000000000a0891100070000000000000038971100000000000000000000000000a889110001000000000000004e6577417574686f7269746965730000238a110023000000ff891100240000005061757365640000d889110027000000526573756d656400b0891100280000002043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e204e657720617574686f726974792073657420686173206265656e206170706c6965642e5665633c28417574686f7269747949642c20417574686f72697479576569676874293e4772616e64706146696e616c69747920417574686f7269746965734772616e64706146696e616c6974792043757272656e7453657449644772616e64706146696e616c69747920536574496453657373696f6e4f6666636861696e206572726f723a206665746368696e67206e6574776f726b207374617465206661696c6564214f6666636861696e206572726f723a207369676e696e67206661696c6564214f6666636861696e206572726f723a206465636f64696e6720576f726b6572537461747573206661696c6564214f6666636861696e206572726f723a207375626d697474696e67207472616e73616374696f6e206661696c656421496d4f6e6c696e65205265636569766564486561727462656174734f6666656e636573205265706f72747342794b696e64496e6465780000000000a48b11000700000000000000ac8b1100020000000000000000000000bc8b110002000000000000004f6666656e6365006f8c110004000000738c11000e000000cc8b110055000000218c11004e00000020546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e6420286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4b696e644f706171756554696d65536c6f7453657373696f6e2053746f72656452616e676553657373696f6e2043757272656e74496e64657853657373696f6e205175657565644368616e67656453657373696f6e2044697361626c656456616c696461746f72730000000000048d11000a00000000000000108d1100010000000000000000000000188d110002000000000000004e657753657373696f6e00009f8d11000c000000288d1100550000007d8d110022000000204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f742074686520626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e53657373696f6e496e64657800c08d110048000000a10a00000e000000000000002f72757374632f316464313838343839313633366430656235313135376431333732333030373662636632303632372f7372632f6c6962636f72652f736c6963652f6d6f642e72735374616b696e672056616c696461746f72436f756e745374616b696e67204d696e696d756d56616c696461746f72436f756e745374616b696e672043757272656e744572615374616b696e672043757272656e74457261537461727453657373696f6e496e6465785374616b696e672043757272656e74457261506f696e74734561726e65645374616b696e6720466f7263654572615374616b696e6720536c6173685265776172644672616374696f6e5374616b696e6720426f6e646564457261730000000000248f1100100000000000000038971100000000000000000000000000348f11000100000000000000000000003c8f11000f000000000000004c8f1100010000000000000000000000548f1100010000000000000045787472696e736963537563636573737e8f11002500000045787472696e7369634661696c656400718f11000d0000005c8f11001500000020416e2065787472696e736963206661696c65642e44697370617463684572726f7220416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e52657175697265526f6f744f726967696e526571756972655369676e65644f726967696e426c6f636b46756c6c4261645369676e617475726543616e206e6f74206c6f6f6b7570526571756972654e6f4f726967696e53797374656d2045787472696e736963436f756e7453797374656d20416c6c45787472696e7369637357656967687453797374656d20416c6c45787472696e736963734c656e53797374656d204e6578745765696768744d756c7469706c69657253797374656d2045787472696e7369634461746153797374656d204576656e74436f756e7474696d737461703054696d657374616d7020696e686572656e742064617461206973206e6f742070726f76696465642e496e76616c69642074696d657374616d7020696e686572656e74206461746120656e636f64696e672e54696d657374616d702044696455706461746554726561737572792050726f706f73616c436f756e74547265617375727920417070726f76616c736d616b655f746f705f6672616d655f706f6c796d6f72706869632069732063616c6c6564207769746820656d707479206672616d6520737461636b0000db0000000c00000004000000dc000000746869732066756e6374696f6e2063616e27742062652063616c6c6564207769746820656d707479206672616d6520737461636b4d6973706c6163656420656c736520696e737472756374696f6e0000d8921100470000001f931100050000009c92110037000000d3921100050000006a921100170000006192110009000000b29411001400000049921100180000006192110009000000b294110014000000189211001d00000035921100130000004892110001000000546f6f206c61726765206d656d6f727920616c69676e6d656e7420325e20286578706563746564206174206d6f73742029547279696e6720746f2075706461746520676c6f62616c20206f66207479706520547279696e6720746f20757064617465206c6f63616c20416e795370656369666963330000000400000004000000d80000004c6162656c7320696e2062725f7461626c6520706f696e747320746f20626c6f636b206f6620646966666572656e742074797065733a2020616e6420496620626c6f636b20776974686f757420656c736520726571756972656420746f2068617665204e6f526573756c7420626c6f636b20747970652e204275742069742068617320207479706534931100180000004c9311000b000000556e657870656374656420737461636b20686569676874202c20657870656374656420547279696e6720746f2061636365737320706172656e74206672616d6520737461636b2076616c7565732e00009493110017000000ab9311001600000045787065637465642076616c7565206f66207479706520206f6e20746f70206f6620737461636b2e20476f7420000000cc93110007000000537461636b3a20000000010056941100240000002c94110006000000329411000e000000409411001600000008941100240000002c941100060000006d6178696d756d206d656d6f72792073697a65206d757374206265206174206d6f7374202070616765736d6178696d756d206c696d697420206973206c657373207468616e206d696e696d756d20696e697469616c206d656d6f72792073697a65206d757374206265206174206d6f73742000008c94110026000000b294110014000000547279696e6720746f20696e697469616c697a65207661726961626c65206f6620747970652020776974682076616c7565206f66207479706520496e69742065787072657373696f6e2073686f756c6420616c776179732062652077697468206c656e67746820324e6f6e20636f6e7374616e74206f70636f646520696e20696e697420657870725d951100070000006f951100220000005d95110007000000649511000b00000045787072657373696f6e20646f65736e277420656e647320776974682060656e6460206f70636f6465476c6f62616c20206973206d757461626c6520646f65736e277420657869737473206f72206e6f742079657420646566696e6564000000a495110010000000b49511000f0000004d656d6f727920617420696e6465782020646f65736e27742065786973747300d49511000f000000b49511000f0000005461626c6520617420696e6465782000f495110012000000b49511000f00000046756e6374696f6e20617420696e646578200000189611000e000000b49511000f0000005479706520617420696e6465782000008696110010000000b49511000f0000005896110010000000789611000e00000058961100100000006896110010000000457870656374656420676c6f62616c2020746f20626520696d6d757461626c6520746f206265206d757461626c65476c6f62616c20617420696e646578206e6f6e2d656d70747920737461636b2065787065637465640000c096110020000000e096110012000000747279696e6720746f206765742076616c756520617420706f736974696f6e20206f6e20737461636b206f662073697a6520636865636b656420636f75706c65206f66206c696e65732061626f7665001897110015000000657863656564656420737461636b206c696d69742000000038971100000000004572726f72000000330000000400000004000000dd0000004c6f63616c732072616e6765206e6f7420696e2033322d6269742072616e67658897110022000000aa97110015000000bf97110007000000547279696e6720746f20616363657373206c6f63616c207769746820696e64657820207768656e20746865726520617265206f6e6c7920206c6f63616c730000e09711002d0000000d9811000c0000001998110003000000617373657274696f6e206661696c65643a2060286c656674203d3d20726967687429600a20206c6566743a2060602c0a2072696768743a2060603a20249811003400000064657374696e6174696f6e20616e6420736f7572636520736c69636573206861766520646966666572656e74206c656e67746873689811001800000058080000090000007372632f6c6962636f72652f736c6963652f6d6f642e7273004180b1c6000b08000000000000000000bfbb03046e616d6501b6bb03a305000e6578745f626c616b65325f323536011f6578745f6765745f616c6c6f63617465645f6368696c645f73746f7261676502176578745f636c6561725f6368696c645f73746f7261676503146578745f6765745f73746f726167655f696e746f04166578745f6b696c6c5f6368696c645f73746f7261676505156578745f7365745f6368696c645f73746f7261676506196578745f6765745f616c6c6f63617465645f73746f72616765070f6578745f7365745f73746f72616765080c6578745f74776f785f31323809116578745f636c6561725f73746f726167650a126578745f737232353531395f7665726966790b0e6578745f7072696e745f757466380c0d6578745f7072696e745f6e756d0d166578745f6368696c645f73746f726167655f726f6f740e106578745f636c6561725f7072656669780f166578745f73616e64626f785f6d656d6f72795f6e6577101b6578745f73616e64626f785f6d656d6f72795f74656172646f776e11176578745f73616e64626f785f696e7374616e746961746512126578745f73616e64626f785f696e766f6b65131d6578745f73616e64626f785f696e7374616e63655f74656172646f776e14106578745f73746f726167655f726f6f7415186578745f73746f726167655f6368616e6765735f726f6f7416126578745f656432353531395f76657269667917166578745f73616e64626f785f6d656d6f72795f67657418166578745f73616e64626f785f6d656d6f72795f736574190d6578745f7072696e745f6865781a106578745f69735f76616c696461746f721b156578745f6c6f63616c5f73746f726167655f6765741c216578745f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365741d116578745f6e6574776f726b5f73746174651e106578745f737232353531395f7369676e1f166578745f7375626d69745f7472616e73616374696f6e20156578745f6c6f63616c5f73746f726167655f73657421146578745f656432353531395f67656e657261746522146578745f737232353531395f67656e657261746523236578745f626c616b65325f3235365f656e756d6572617465645f747269655f726f6f74240a6578745f6d616c6c6f6325086578745f6672656526176578745f737232353531395f7075626c69635f6b657973270b6578745f74776f785f3634280c5f5f727573745f616c6c6f63290a5f5f72675f616c6c6f632a0e5f5f727573745f6465616c6c6f632b0c5f5f72675f6465616c6c6f632c0e5f5f727573745f7265616c6c6f632d0c5f5f72675f7265616c6c6f632e135f5f727573745f616c6c6f635f7a65726f65642f115f5f72675f616c6c6f635f7a65726f65643009686173685f746573743134616c6c6f633a3a7261775f7665633a3a63617061636974795f6f766572666c6f773a3a68636164633139656466653965313035353229636f72653a3a70616e69636b696e673a3a70616e69633a3a68613237623135356231613762656131643325616c6c6f633a3a666d743a3a666f726d61743a3a68373139333337636638383237333534323436636f72653a3a70616e69636b696e673a3a70616e69635f626f756e64735f636865636b3a3a68613834643033333136663462356666613523636f72653a3a666d743a3a77726974653a3a68373639626232616366663461376638613648616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68303032666333346665303731316264303708727573745f6f6f6d382e636f72653a3a726573756c743a3a756e777261705f6661696c65643a3a6864623133323335353631653632346136393a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68633133653134623932623865333434343a3b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a68373137336662316338303332343364353b3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68613062616630316338386562366162373c34636f72653a3a736c6963653a3a736c6963655f696e6465785f6c656e5f6661696c3a3a68656632663938626564366266373533643d4e636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f72207533323e3a3a666d743a3a68303438303937613766373038326163303e2d636f72653a3a70616e69636b696e673a3a70616e69635f666d743a3a68346637396263373939663330393733323f2f636f72653a3a666d743a3a6e756d3a3a696d703a3a666d745f7536343a3a68383932326134393263623337346536624011727573745f626567696e5f756e77696e6441313c5420617320636f72653a3a616e793a3a416e793e3a3a747970655f69643a3a68303837626662333038396434323234304235636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a68313538353734313262386634366265634343636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a77726974655f7072656669783a3a68363936303565363538343765653566304436636f72653a3a736c6963653a3a736c6963655f696e6465785f6f726465725f6661696c3a3a6835353833396665343434333633396662452c636f72653a3a666d743a3a466f726d61747465723a3a7061643a3a6862663133663132313734343633363530462e636f72653a3a7374723a3a736c6963655f6572726f725f6661696c3a3a686237366535353838326633366137346647323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6830303136373764333333316431623262484a3c636f72653a3a6f70733a3a72616e67653a3a52616e67653c4964783e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686339373033363631643132393261316649323c6368617220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68303731343665363835653563656332624a3d636f72653a3a756e69636f64653a3a626f6f6c5f747269653a3a426f6f6c547269653a3a6c6f6f6b75703a3a68616234336463613764383766373731634b49636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207573697a653e3a3a666d743a3a68373032373631646266343866333635364c34636f72653a3a666d743a3a417267756d656e7456313a3a73686f775f7573697a653a3a68303764326632623133316361643036374d453c636f72653a3a63656c6c3a3a426f72726f774572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68326433626561393162376638333331354e483c636f72653a3a63656c6c3a3a426f72726f774d75744572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68383634373335313833373766363262364f323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6836323735643962386134343631633938502e636f72653a3a6f7074696f6e3a3a6578706563745f6661696c65643a3a683163333163613936623063653034653051303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6864396534343966646163316334353532522e636f72653a3a736c6963653a3a6d656d6368723a3a6d656d6368723a3a6839323166353536393537323230396564538001636f72653a3a7374723a3a7472616974733a3a3c696d706c20636f72653a3a736c6963653a3a536c696365496e6465783c7374723e20666f7220636f72653a3a6f70733a3a72616e67653a3a52616e67653c7573697a653e3e3a3a696e6465783a3a7b7b636c6f737572657d7d3a3a68376561353565643561313134353233665427636f72653a3a7374723a3a66726f6d5f757466383a3a68393936353463313839323463653036345530636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a683566363963313432356330613037353356533c636f72653a3a666d743a3a6275696c646572733a3a5061644164617074657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6865393736373038366566313830663239572f636f72653a3a666d743a3a57726974653a3a77726974655f636861723a3a6835376138336636353030656231663365582e636f72653a3a666d743a3a57726974653a3a77726974655f666d743a3a6835616339306139346131333230656233593a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68306138363933663139633766366666665a3b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a68636638393338356535396637623637615b3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68383637616663663734396563326230325c3a636f72653a3a666d743a3a6275696c646572733a3a44656275675374727563743a3a6669656c643a3a68646430303731316136373965613430345d39636f72653a3a666d743a3a6275696c646572733a3a44656275675475706c653a3a6669656c643a3a68393065333464346262613566643437365e443c636f72653a3a666d743a3a417267756d656e747320617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68626634386164393337636464313931615f313c73747220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686637313733623038663233376563326360303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686530393630373933333765373636363961303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683931653862363165666339613332346262423c636f72653a3a7374723a3a557466384572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686166363337373838663261376137313063303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833396433666631363039386537383237643e3c636f72653a3a666d743a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686464366234323235356566653732333065383c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a686365346336373635363834626464353866343c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a686463373536653930643966306231373167363c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a666c7573683a3a683533303838393235643430663439313868693c636f72653a3a697465723a3a61646170746572733a3a46696c7465724d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6838653863316664626539333838346163694b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68663530663164396638316533336133346a30636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68323434346236303933336133646533306b7d7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c205230293e3a3a6465636f64653a3a68333464663538646264396436366233626c6b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68323661353531326466306130366630326d543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68376638333330366130393338636466636e2d616c6c6f633a3a7665633a3a5665633c543e3a3a72657461696e3a3a68356638643836666366306661623534356f443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a683032363437663936366662386566376170443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a683339393163366632303237333937323471443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a686566656166643264633364616137393472463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a683162353632313133646564343136383473543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683039636136373637663535386430666574543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683134393565336533346436663466623675543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683136303731343633646432653861656276543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683262653166343131363934633333326577543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683266353961316562306564306263356578543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683266666136396263346264313332613379543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68343634633337336136666331646362347a9f013c73725f7072696d6974697665733a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68383962656633636262333533326338617b543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68353335363332653631633034346136637c543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68383862356330343234613539346162647d543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68393130613036323863303037356534637e543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68613962383762393439623233386535347f753c73725f7072696d6974697665733a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68316665643862623861336335356666388001543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a686337333532366633613336356262663281017f6e6f64655f72756e74696d653a3a5f494d504c5f4445434f44455f464f525f43616c6c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72206e6f64655f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a68333130306265306638643432366337618201543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68646332643431646231373737373966618301513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68333930383730653562343365626334618401513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68346235353034353038313230323761658501693c636f72653a3a697465723a3a61646170746572733a3a46696c7465724d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6864386638303832353262313639643938860168636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a68616338303437376531623137353030658701513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68376163313434383630363561393861358801513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6838646539353166376338633363373834890130636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68303032396532383461626336653161348a01793c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f73746f726167653a3a68346366353833643730356531323330398b017b3c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f636f64655f686173683a3a68373233336337366666386563623337638c017273726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a68633632613631323832356230656538308d0180013c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f72656e745f616c6c6f77616e63653a3a68363336343837393532646263326661308e017d3c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6e74726163745f6578697374733a3a68626433333036616562666336626362358f01463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68653566313862323833376430363465349001793c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f62616c616e63653a3a6834396339306230636239366136303838910185013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a667265655f62616c616e63653a3a68383966356130363566393565373865319201743c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6d6d69743a3a68643530643334363435306561343137639301723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a683833306434623064366665663163303194018d013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6d616b655f667265655f62616c616e63655f62653a3a68386234623564326136633936643835629501613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a683131363062303861386164636233646296017573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6866633362376362623662393231306232970191013c73726d6c5f636f6e7472616374733a3a54726965496446726f6d506172656e74436f756e7465723c543e2061732073726d6c5f636f6e7472616374733a3a54726965496447656e657261746f723c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a747269655f69643a3a686161356339313864623663376232333398013773726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a626c6f636b5f6e756d6265723a3a68653533383938356333383936373334639901723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68363064383435646236353836623862669a017573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a68383232653933386530363765323330359b01613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68373635323739333664343963626361349c017773726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6d75746174653a3a68363839653731333562643437646538339d017773726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6d75746174653a3a68323138376639326134336161343632319e016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68616238326334383138373537326534309f016c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6830386561633136356661396637393538a001713c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6864653530373162386130653734333633a101713c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6835653932376533663634393764666562a201303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836633166636332326337613565393130a301723c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6865323831616332613336303138303565a401303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6861393633376463316164363838343137a501783c73726d6c5f696e64696365733a3a616464726573733a3a416464726573733c4163636f756e7449642c4163636f756e74496e6465783e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6837313537343363326237386233626138a6017b3c73726d6c5f696e64696365733a3a616464726573733a3a416464726573733c4163636f756e7449642c4163636f756e74496e6465783e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6832626663373164323632393930636138a7017d3c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f73746f726167653a3a6839346337326433373239326630393437a80184013c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f72656e745f616c6c6f77616e63653a3a6838626464373063336465333638653932a901cd0173726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a5f494d504c5f454e434f44455f464f525f4c696e6b6167653a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4c696e6b6167653c4b65793e3e3a3a656e636f64655f746f3a3a6835333330396563306462363039336239aa01cd0173726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a5f494d504c5f454e434f44455f464f525f4c696e6b6167653a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4c696e6b6167653c4b65793e3e3a3a656e636f64655f746f3a3a6865393330353763396263376337323461ab0184013c73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c473e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6838643238373730663035386262636565ac016f73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a53746f726167654c696e6b65644d61703a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a6838383431306663323634343831633764ad0184013c73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c473e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6865386566633638356136363861353930ae016f73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a53746f726167654c696e6b65644d61703a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a6835313634396637613236326262653938af0184013c73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c473e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6866396432363165633964396131623766b0016f73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a53746f726167654c696e6b65644d61703a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a6835356235363734623230613437653865b1017d7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c205230293e3a3a6465636f64653a3a6865373864623462383164613762393330b2013d73726d6c5f6f6666656e6365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6836363030663338636433666133303631b301743c73726d6c5f6f6666656e6365733a3a5f5f476574427974655374727563745265706f72747342794b696e64496e6465783c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831636238373936303566366365663164b4016c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6832333939613538336430656438336234b5014d73726d6c5f636f6e7472616374733a3a657865633a3a457865637574696f6e436f6e746578743c542c562c4c3e3a3a696e7374616e74696174653a3a6836623966633736373531646261363534b60181013c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6e74726163745f6578697374733a3a6836616130363564356539663732313132b7014b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6861613261623366303331336232356636b8013173726d6c5f636f6e7472616374733a3a657865633a3a7472616e736665723a3a6837373362356236396662646161313137b9013973726d6c5f636f6e7472616374733a3a7761736d3a3a636f64655f63616368653a3a6c6f61643a3a6866323337613535386232383836373039ba01593c73726d6c5f636f6e7472616374733a3a7761736d3a3a5761736d566d2061732073726d6c5f636f6e7472616374733a3a657865633a3a566d3c543e3e3a3a657865637574653a3a6831333937356561393739303766376236bb01783c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6d6d69743a3a6836616339326635393738306465653137bc018c013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a656e737572655f63616e5f77697468647261773a3a6839626535636564373733626261363035bd0148616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6832343561663334383230376130353433be0130636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6835323765316362333634383130643564bf017f3c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f636f64655f686173683a3a6866353465663532326365346138316461c0017d3c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f62616c616e63653a3a6831313131303862313035626263336366c1014673726d6c5f636f6e7472616374733a3a657865633a3a457865637574696f6e436f6e746578743c542c562c4c3e3a3a63616c6c3a3a6839353866323730643039323832636563c2014273726d6c5f636f6e7472616374733a3a72656e743a3a7472795f65766963745f6f725f616e645f7061795f72656e743a3a6863336336633731646632616562646432c3013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6864633565333763353634646262616336c4013f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6831613165646131353962323138616264c501c7013c73726d6c5f6f6666656e6365733a3a4d6f64756c653c543e2061732073725f7374616b696e675f7072696d6974697665733a3a6f6666656e63653a3a5265706f72744f6666656e63653c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c542061732073726d6c5f6f6666656e6365733a3a54726169743e3a3a4964656e74696669636174696f6e5475706c652c4f3e3e3a3a7265706f72745f6f6666656e63653a3a6832383939313265386363346166666539c6014b3c5b543b205f5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6832633136623336633063663237386639c7016f73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6838636333303466313030626264666365c801437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6861623165653031323634626232353937c90141616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365617263683a3a7365617263685f747265653a3a6834353339376134376233366633383934ca01613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6863623836653530643234616238333461cb01437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6831633062376138643436393335636534cc014073726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6576656e745f696e64657865643a3a6834313461616236326136396366376638cd0134636f72653a3a736c6963653a3a3c696d706c205b545d3e3a3a636f6e7461696e733a3a6863616665643431346630633236373166ce013673726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6c6f673a3a6865613866373434663735656363653135cf017e3c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a736c6173683a3a6866643562376165396361393035363832d00189013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6465706f7369745f6372656174696e673a3a6836373839333262303737623239363337d1015373725f7072696d6974697665733a3a50657262696c6c3a3a66726f6d5f726174696f6e616c5f617070726f78696d6174696f6e3a3a7b7b636c6f737572657d7d3a3a6838323439353335646130363233616166d2015373725f7072696d6974697665733a3a50657262696c6c3a3a66726f6d5f726174696f6e616c5f617070726f78696d6174696f6e3a3a7b7b636c6f737572657d7d3a3a6833333938303938366437323438633665d3014b73725f7072696d6974697665733a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3a3a696e746f5f6163636f756e743a3a6839633438346130663064333336626130d4019a0173726d6c5f7374616b696e673a3a5f494d504c5f4445434f44455f464f525f4578706f737572653a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073726d6c5f7374616b696e673a3a4578706f737572653c4163636f756e7449642c42616c616e63653e3e3a3a6465636f64653a3a6837393935333333636162333938616263d501483c73726d6c5f6f6666656e6365733a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837303239393466376333643337643031d6015c3c73726d6c5f6f6666656e6365733a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6832386366306335363565653635396665d701703c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6830373463363933373136623438643830d801303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830313735343962623362373765363161d901406e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f73797374656d3a3a6838353435663263626138613161386365da01416e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f696e64696365733a3a6839656632383931386338356161373231db01426e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f62616c616e6365733a3a6835613762623764323431326363363930dc01416e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7374616b696e673a3a6861386530623037316263646566366661dd01416e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f73657373696f6e3a3a6837336536323763303639326138663139de01436e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f64656d6f63726163793a3a6863633261336536646130336365323230df014e6e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f636f6c6c6563746976655f496e7374616e6365313a3a6836656163653863306136333236353131e001436e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f656c656374696f6e733a3a6832623263323461633638353163356334e1014e6e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6d656d626572736869705f496e7374616e6365313a3a6863616165316234326264323238666536e201416e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6772616e6470613a3a6834613630316463343234393033386164e301426e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f74726561737572793a3a6863333761653137623166353232663861e401436e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f636f6e7472616374733a3a6865343131326666386464386131633438e5013e6e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7375646f3a3a6861316434653964343230393738353039e601436e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f696d5f6f6e6c696e653a3a6836356133633932336635663033326535e701426e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6f6666656e6365733a3a6862633937306433383331323331343235e8018d016e6f64655f72756e74696d653a3a5f494d504c5f4445434f44455f464f525f53657373696f6e4b6579733a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72206e6f64655f72756e74696d653a3a53657373696f6e4b6579733e3a3a6465636f64653a3a6834616339333937656166633633346665e9018a0173726d6c5f636f6c6c6563746976653a3a5f494d504c5f4445434f44455f464f525f43616c6c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073726d6c5f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a6465636f64653a3a6831333130353934363139353131333335ea018b0173726d6c5f636f6e7472616374733a3a5f494d504c5f4445434f44455f464f525f5363686564756c653a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073726d6c5f636f6e7472616374733a3a5363686564756c653e3a3a6465636f64653a3a6834396636343234393334303165366132eb0182016e6f64655f72756e74696d653a3a5f494d504c5f454e434f44455f464f525f43616c6c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206e6f64655f72756e74696d653a3a43616c6c3e3a3a656e636f64655f746f3a3a6832373361383431636330393135346263ec01723c73725f7072696d6974697665733a3a67656e657269633a3a6469676573743a3a4469676573744974656d3c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6830376364313565343730393839633137ed018d0173726d6c5f636f6c6c6563746976653a3a5f494d504c5f454e434f44455f464f525f43616c6c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073726d6c5f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a656e636f64655f746f3a3a6835626138363964316265616430313464ee018e0173726d6c5f636f6e7472616374733a3a5f494d504c5f454e434f44455f464f525f5363686564756c653a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073726d6c5f636f6e7472616374733a3a5363686564756c653e3a3a656e636f64655f746f3a3a6866346132356361353138616335333261ef01437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6834306664363130326135353165306162f0012b616c6c6f633a3a736c6963653a3a6d657267655f736f72743a3a6833316161333833653836616137363032f10184016e6f64655f72756e74696d653a3a5f494d504c5f454e434f44455f464f525f4576656e743a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206e6f64655f72756e74696d653a3a4576656e743e3a3a656e636f64655f746f3a3a6836643335653535356638613331303163f201a20173726d6c5f636f6c6c6563746976653a3a5f494d504c5f454e434f44455f464f525f5261774576656e743a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073726d6c5f636f6c6c6563746976653a3a5261774576656e743c486173682c4163636f756e7449642c493e3e3a3a656e636f64655f746f3a3a6834343930633836383033333235343464f301653c6e6f64655f72756e74696d653a3a43616c6c2061732073725f7072696d6974697665733a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6830343764353632386132636561316131f401583c6e6f64655f72756e74696d653a3a43616c6c2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6838336539363263643433313230313431f501583c73726d6c5f626162653a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6830613865393037323432653436316137f601437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6862373562336361323964663636363363f7017273726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6836313935643964653537363138303536f8013573726d6c5f617574686f72736869703a3a4d6f64756c653c543e3a3a617574686f723a3a6837616231333433646161623761326263f9013973726d6c5f7374616b696e673a3a4d6f64756c653c543e3a3a7265776172645f62795f6964733a3a6834663135326364303734323563613964fa01673c73726d6c5f617574686f726974795f646973636f766572793a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6862373861323639343666653063343330fb013973726d6c5f73657373696f6e3a3a4d6f64756c653c543e3a3a63757272656e745f696e6465783a3a6862643032343430373930666636353431fc016f73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6863323531613265623837643836373037fd013773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865363039313833643065313763373335fe013473726d6c5f696e64696365733a3a4d6f64756c653c543e3a3a656e756d5f7365743a3a6834626439326135376534613539343639ff014a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a683331333837306130366564383137366380025d3c73726d6c5f636f6e7472616374733a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a683337653735393432376661653439323181029c0173726d6c5f74726561737572793a3a5f494d504c5f4445434f44455f464f525f50726f706f73616c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073726d6c5f74726561737572793a3a50726f706f73616c3c4163636f756e7449642c42616c616e63653e3e3a3a6465636f64653a3a6862653536383862356333373963656531820291013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a736c6173685f72657365727665643a3a683935323531313561306238396239363483028a013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a726573657276653a3a6835373538346635383335346464633662840295013c73726d6c5f636f6c6c6563746976653a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a686361376465303135316236633762653285024a73726d6c5f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733a3a7365745f6d656d626572735f736f727465643a3a683538373630336262373262373332656386025d3c73726d6c5f656c656374696f6e733a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68343237636433356333343061653264318702603c73726d6c5f636f6c6c6563746976653a3a43616c6c3c542c493e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68613438353966393862646662343236348802603c73726d6c5f636f6c6c6563746976653a3a43616c6c3c542c493e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a683732373531613862373434313363383089025d3c73726d6c5f64656d6f63726163793a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68653734393864343238613132313430328a02a40173726d6c5f7374616b696e673a3a5f494d504c5f4445434f44455f464f525f5374616b696e674c65646765723a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073726d6c5f7374616b696e673a3a5374616b696e674c65646765723c4163636f756e7449642c42616c616e63653e3e3a3a6465636f64653a3a68323763626335363133383261626464638b026f73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68316232373866353234623633623030388c026f73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68643338646665333337366133616133618d025b3c73726d6c5f7374616b696e673a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68326662643138643966363865313162638e0281013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7472616e736665723a3a68393839356531356133343461393931338f023f73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e3a3a7365745f667265655f62616c616e63653a3a686338383364396561623864346264333390024373726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e3a3a7365745f72657365727665645f62616c616e63653a3a686434313335333537336630653135303591025b3c73726d6c5f696e64696365733a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a683836643831653663633431313261616292023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a683235616265373531383235343639656293027f3c73726d6c5f696e64696365733a3a4d6f64756c653c543e2061732073726d6c5f73797374656d3a3a4f6e4e65774163636f756e743c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6f6e5f6e65775f6163636f756e743a3a683233616438626236666435383861326194023873726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a74616b653a3a686461366639373031343963386135303795023673726d6c5f7374616b696e673a3a4d6f64756c653c543e3a3a6b696c6c5f73746173683a3a683130383536663739323263306461306596023773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a686634613737393939303031643038636297027573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6837383737326333616663356337353965980281013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a77697468647261773a3a683562396534326566383633636534646199023e73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e3a3a76657374696e675f62616c616e63653a3a68626238373339643133333535626236339a023473726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6c6f636b733a3a68333638393134633832333539393965379b02483c5b543b205f5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68353835323237626435376637343932309c027573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a68633038636165316435373833636636349d0286013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a746f74616c5f62616c616e63653a3a68643763643637643234383134613861659e02653c73726d6c5f62616c616e6365733a3a54616b65466565733c542c493e2061732073725f7072696d6974697665733a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a68376236613935643336393266623835389f023773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830653936393331313632366135383439a0023d73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6862323666653064306530393634336432a1023d73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e3a3a746f74616c5f69737375616e63653a3a6862373662663765313663613336633032a2023f73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6835653663653264363439656133316565a3026f3c73726d6c5f62616c616e6365733a3a5f5f476574427974655374727563744672656542616c616e63653c542c493e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861383137633863343936663239343566a4024873726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6834313966353063313539363139383666a5028e013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6465706f7369745f696e746f5f6578697374696e673a3a6830386464613432346263363434343536a6023c73726d6c5f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6862663230666535343038633831396532a7023e73726d6c5f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6861643765666566376438653664313064a8028c013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a657874656e645f6c6f636b3a3a6862363338363539643233333631623664a90289013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7365745f6c6f636b3a3a6836396238393930643162313061313162aa028c013c73726d6c5f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a756e726573657276653a3a6832313164383839393835333764303834ab02437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6830666563303961653439666334326261ac023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6864663432393736333738383031613830ad023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6862353065623633303432396164376434ae024a3c73726d6c5f62616c616e6365733a3a43616c6c3c542c493e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6865353039326631653139383330613864af02493c73726d6c5f696d5f6f6e6c696e653a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6831666134356231303637653363663366b002613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6835313936613536623066393933653735b102723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6832366232363063316563313961636339b202437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6833353837313637353866383936316335b3027573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6839613865636263363866646163613530b402303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832336661343463613531383764656463b5024d636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207573697a653e3a3a666d743a3a68373032373631646266343866333635362e323334b6024373726d6c5f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6837323862643265653064663338323230b7024e73726d6c5f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6863643962646630323731313235383765b8029f013c73726d6c5f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5265706f72744c6174656e637944656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865613333313236376432326439396637b9029c013c73726d6c5f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a57696e646f7753697a6544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865373839396264363034313435393935ba02d5017375627374726174655f636f6e73656e7375735f626162655f7072696d6974697665733a3a6469676573743a3a5f494d504c5f4445434f44455f464f525f526177426162655072654469676573743a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72207375627374726174655f636f6e73656e7375735f626162655f7072696d6974697665733a3a6469676573743a3a526177426162655072654469676573743e3a3a6465636f64653a3a6831633662323537393730353733386134bb024b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6831626132303333613836643063323539bc02613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6830346361333431346265366331306336bd028c013c73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e2061732073725f7072696d6974697665733a3a7472616974733a3a4f6e496e697469616c697a653c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6830613231343334363663376138326632be023773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831396564393438326431653338623932bf024073726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a63616e6469646174655f7265675f696e666f3a3a6831373937623930333666633766346466c0023873726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a616c6c5f766f746572733a3a6861316534646265623437323035653037c1023a73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a617070726f76616c735f6f663a3a6832306234303633356262643638613261c202960173726d6c5f656c656374696f6e733a3a5f494d504c5f4445434f44455f464f525f566f746572496e666f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073726d6c5f656c656374696f6e733a3a566f746572496e666f3c42616c616e63653e3e3a3a6465636f64653a3a6830316262336439643662306561626533c3024a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6836306436643261353030666463656265c4022d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6835643130393431636331373563363639c50295013c73726d6c5f636f6c6c6563746976653a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a6864653264326333356566393630353236c6023773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835393066393834646333383132663735c7023c73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6831343362643439666263383664393238c8023e73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6866653130333861666166393439343565c902713c73726d6c5f656c656374696f6e733a3a5f5f4765744279746553747275637443616e646964617465436f756e743c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834643433333035643361333633333334ca02713c73726d6c5f656c656374696f6e733a3a5f5f476574427974655374727563745265676973746572496e666f4f663c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837363362656236383261363832343365cb024773726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6862376137636130316332323031333132cc0299013c73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a564f5445525f5345545f53495a4544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866366135363965663662643639346637cd0295013c73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a566f74696e67426f6e6444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838613264656532666338373233633965ce0297013c73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a566f74696e67506572696f6444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863653338613432616462313537383438cf029e013c73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a496e6163746976654772616365506572696f6444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866363330386163656461376137343234d00295013c73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4361727279436f756e7444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833653330626135303162636236366136d10294013c73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a566f74696e6746656544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864333434393535393035313936363639d20298013c73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a43616e646964616379426f6e6444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839393639666163356137666662626663d302493c73726d6c5f656c656374696f6e733a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6838393533343563316230373032343266d4023e73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a646f5f7365745f617070726f76616c733a3a6830356233326237643335643433376531d5023a73726d6c5f656c656374696f6e733a3a4d6f64756c653c543e3a3a72656d6f76655f766f7465723a3a6864343234646366303966313037613632d602497061726974795f7363616c655f636f6465633a3a656e636f64655f617070656e643a3a657874726163745f6c656e6774685f646174613a3a6866643865656134353734643132643761d7023a73726d6c5f6772616e6470613a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6830316131646133303365313665336564d8023c73726d6c5f6772616e6470613a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6864313433326339303364323232303332d902663c73726d6c5f6772616e6470613a3a5f5f4765744279746553747275637453746174653c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861633430666337353837316663386439da023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6866613262363366396564623731643938db023a73726d6c5f73657373696f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6839336165366236373664623230343535dc023c73726d6c5f73657373696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6835383233613635353036306435633137dd024573726d6c5f73657373696f6e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6864363061643832333262393932383237de0299013c73726d6c5f73657373696f6e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a44454455505f4b45595f50524546495844656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861626566343565663162336261356236df02763c73726d6c5f737570706f72743a3a73746f726167653a3a6861736865643a3a54776f783634436f6e6361742061732073726d6c5f737570706f72743a3a73746f726167653a3a6861736865643a3a53746f726167654861736865723e3a3a686173683a3a6830336164393834343263623061383436e002437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6866396638336564633862303663363035e102437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6839623462623063373566323965326431e2023b73726d6c5f74726561737572793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6864623530656536616665326164663166e3023d73726d6c5f74726561737572793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6866303933303965666331326462656261e4024673726d6c5f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6865616232643963386538373037313930e5028e013c73726d6c5f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4275726e44656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862376133356263656433663732633433e602870173725f7072696d6974697665733a3a5f494d504c5f454e434f44455f464f525f50657262696c6c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073725f7072696d6974697665733a3a50657262696c6c3e3a3a656e636f64653a3a6830306536383731383739316332643562e70295013c73726d6c5f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5370656e64506572696f6444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864653636393366366136366337323939e80296013c73726d6c5f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726f706f73616c426f6e6444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830656261613063366636366431356332e9023673726d6c5f74726561737572793a3a4d6f64756c653c543e3a3a70726f706f73616c733a3a6863663030323230323662663936306562ea028a013c73726d6c5f73657373696f6e3a3a4d6f64756c653c543e2061732073725f7072696d6974697665733a3a7472616974733a3a4f6e496e697469616c697a653c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6835333934366339396564396363636432eb023673726d6c5f626162653a3a4d6f64756c653c543e3a3a646f5f696e697469616c697a653a3a6832613837383633353631643739633635ec023373726d6c5f7374616b696e673a3a4d6f64756c653c543e3a3a7374616b6572733a3a6861393931653433343637656664343439ed0286013c73726d6c5f7374616b696e673a3a4d6f64756c653c543e2061732073726d6c5f73657373696f6e3a3a4f6e53657373696f6e456e64696e673c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6f6e5f73657373696f6e5f656e64696e673a3a6831616537633337663639326237646539ee023b73726d6c5f6772616e6470613a3a4d6f64756c653c543e3a3a7363686564756c655f6368616e67653a3a6863663437383934313665623338366464ef023773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864313234373039313533353736666336f002437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6837383364333039663738623432326336f1024b3c5b543b205f5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6832333063333531613138336135356361f20230636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6835363637303838653535663233666638f302633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6832303361323762636366356561396333f402683c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a73697a655f68696e743a3a6832346639626639393362356461613335f5023e636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723a3a6e74683a3a6833383534363563373835376562323363f602633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6835333163646162346661313032336566f7023e636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723a3a6e74683a3a6830656136623430363665613539646464f8024273726d6c5f636f6e7472616374733a3a7761736d3a3a707265706172653a3a707265706172655f636f6e74726163743a3a6836323964316235366163326233306638f9024a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6833663662373961343438356135623362fa02437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6839303831646161613832616561363963fb026a636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653c413e20666f7220266d757420463e3a3a63616c6c5f6f6e63653a3a6833313938663239346337633037623537fc02663c73726d6c5f636f6e7472616374733a3a7761736d3a3a5761736d566d2061732073726d6c5f636f6e7472616374733a3a657865633a3a566d3c543e3e3a3a657865637574653a3a7b7b636c6f737572657d7d3a3a6832326566363933396635303938656631fd027d3c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6761733a3a6832623037396439643933646632663439fe025273725f73616e64626f783a3a696d703a3a456e7669726f6e6d656e74446566696e6974696f6e4275696c6465723c543e3a3a6164645f686f73745f66756e633a3a6837613337346132656234333561666165ff0289013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f7365745f73746f726167653a3a6833316361656264633564353264303138800389013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6765745f73746f726167653a3a6831306431663335653165616632636130810382013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f63616c6c3a3a6862623530306664353561356239323037820389013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f696e7374616e74696174653a3a6832616439353630656131333639626339830384013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f72657475726e3a3a6861636564646338343232366335616233840384013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f63616c6c65723a3a6834636231663539323330323861356630850385013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f616464726573733a3a6833613661303262393533303630646139860387013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6761735f70726963653a3a6864376232663834643362623864393663870386013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6761735f6c6566743a3a6861373962343335303839303935373465880385013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f62616c616e63653a3a686339306131366437336261366433336589038f013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f76616c75655f7472616e736665727265643a3a68336165393265656438623133313066658a0384013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f72616e646f6d3a3a68643635336131613637663332626464368b0381013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6e6f773a3a68616461313738623139303562636263618c038d013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6d696e696d756d5f62616c616e63653a3a68613038303466373261376563343666378d038b013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f64697370617463685f63616c6c3a3a68383035303832366164303961386335628e0388013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f726573746f72655f746f3a3a68633132333439626561366435393336308f038a013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f736372617463685f73697a653a3a683538306530613263333566306331646490038a013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f736372617463685f726561643a3a683663373534623336306337633265613991038b013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f736372617463685f77726974653a3a683632343433353932626339633736616592038b013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6465706f7369745f6576656e743a3a6838306238323039323537373365616633930390013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f7365745f72656e745f616c6c6f77616e63653a3a683466323433313333626532356363666194038c013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f72656e745f616c6c6f77616e63653a3a6839363463323461623138626436633334950385013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f7072696e746c6e3a3a686637366431396430353439356163373596038a013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f626c6f636b5f6e756d6265723a3a686433623536316436376666623763643497033273725f73616e64626f783a3a696d703a3a64697370617463685f7468756e6b3a3a68386536656133346363343135383566389803ad017375627374726174655f7072696d6974697665733a3a73616e64626f783a3a5f494d504c5f4445434f44455f464f525f547970656456616c75653a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72207375627374726174655f7072696d6974697665733a3a73616e64626f783a3a547970656456616c75653e3a3a6465636f64653a3a68363636646563623130363065303136389903b0017375627374726174655f7072696d6974697665733a3a73616e64626f783a3a5f494d504c5f454e434f44455f464f525f547970656456616c75653a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72207375627374726174655f7072696d6974697665733a3a73616e64626f783a3a547970656456616c75653e3a3a656e636f64655f746f3a3a68366638396436616535373364656261659a033773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68656566626338616663316366666162389b033d73726d6c5f617574686f72736869703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68613865633662663666313730656535339c033f73726d6c5f617574686f72736869703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68323836393939663633396233306133669d03703c73726d6c5f617574686f72736869703a3a5f5f47657442797465537472756374446964536574556e636c65733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68356131666536346139393034343766639e038a033c285475706c65456c656d656e74302c205475706c65456c656d656e74312c205475706c65456c656d656e74322c205475706c65456c656d656e74332c205475706c65456c656d656e74342c205475706c65456c656d656e74352c205475706c65456c656d656e74362c205475706c65456c656d656e74372c205475706c65456c656d656e74382c205475706c65456c656d656e74392c205475706c65456c656d656e7431302c205475706c65456c656d656e7431312c205475706c65456c656d656e7431322c205475706c65456c656d656e7431332c205475706c65456c656d656e7431342c205475706c65456c656d656e7431352c205475706c65456c656d656e7431362c205475706c65456c656d656e7431372c205475706c65456c656d656e7431382c205475706c65456c656d656e743139292061732073725f7072696d6974697665733a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a68326334616136396565373634306235359f037573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6835326236326535373661623038396433a0033173726d6c5f74696d657374616d703a3a4d6f64756c653c543e3a3a6e6f773a3a6834363532613662336165366264626163a103443c73726d6c5f626162653a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6835316562616163646438636565393939a2033973726d6c5f626162653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6838626464366437316663366336386133a303683c73726d6c5f626162653a3a5f5f4765744279746553747275637452616e646f6d6e6573733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831646266336432303235653433663633a4034273726d6c5f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6832653030663433376237636334623732a50397013c73726d6c5f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578706563746564426c6f636b54696d6544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834383432303533646236336462623264a60393013c73726d6c5f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a45706f63684475726174696f6e44656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866373362303132363134623132356364a7033773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837346264393230333636623666316562a8033173726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a72616e646f6d3a3a6836306461326464656333373364646436a9033773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861623464373335663864656363386661aa03930173726d6c5f73797374656d3a3a5f494d504c5f454e434f44455f464f525f4576656e745265636f72643a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073726d6c5f73797374656d3a3a4576656e745265636f72643c452c543e3e3a3a656e636f64655f746f3a3a6831323131373037393638613835333637ab0330636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6836616262343766373764373233383832ac033973726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6839396533616666666131613734653864ad033b73726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6838613435343333313564303062363733ae03663c73726d6c5f73797374656d3a3a5f5f476574427974655374727563744576656e74733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837643032313739653635613738326563af03693c73726d6c5f73797374656d3a3a5f5f47657442797465537472756374426c6f636b486173683c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831343962353364336363646564316439b0036e3c73726d6c5f73797374656d3a3a5f5f4765744279746553747275637452616e646f6d4d6174657269616c3c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838346564373366313834376166366434b1034473726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6834613439316239383530666636343565b2033373726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a66696e616c697a653a3a6861336164316265613362353165373663b303920173726d6c5f636f6c6c6563746976653a3a5f494d504c5f4445434f44455f464f525f566f7465733a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073726d6c5f636f6c6c6563746976653a3a566f7465733c4163636f756e7449643e3e3a3a6465636f64653a3a6831666334646262316561653233396639b4034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6865373436613266666630383837623565b5033f73726d6c5f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6866373435383836616563616334393835b6034173726d6c5f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6831336536643135376135613433613432b7034173726d6c5f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6834353831653732656334363130393330b8034273726d6c5f73797374656d3a3a436865636b5765696768743c543e3a3a636865636b5f626c6f636b5f6c656e6774683a3a6837666561303334346333386136616365b9033c73726d6c5f73797374656d3a3a436865636b5765696768743c543e3a3a636865636b5f7765696768743a3a6834326632643563336464616539323165ba03463c616c6c6f633a3a626f7865643a3a426f783c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6831393764386331333362343930343066bb03473c73726d6c5f696e64696365733a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6831303562663766353932313861333062bc03473c73726d6c5f7374616b696e673a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6831396539646437656462396264616366bd03493c73726d6c5f64656d6f63726163793a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6836636635383139356236626464353231be034c3c73726d6c5f6d656d626572736869703a3a43616c6c3c542c493e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837323735633464666230386236643532bf03493c73726d6c5f636f6e7472616374733a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6862373936623731343832366162363138c003443c73726d6c5f7375646f3a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6865393938653136373161363737386139c103533c73726d6c5f617574686f726974795f646973636f766572793a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837346565386530313939376239383937c203463c73726d6c5f73797374656d3a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6833626664323638333734663362376338c3034c3c73726d6c5f636f6c6c6563746976653a3a43616c6c3c542c493e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837663834326331386439383539653138c4033c73726d6c5f696e64696365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6837303666626537316539373135376665c5037573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6862383665646132366239376363326534c603d80173725f7072696d6974697665733a3a7472616e73616374696f6e5f76616c69646974793a3a5f494d504c5f454e434f44455f464f525f5472616e73616374696f6e56616c69646974794572726f723a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073725f7072696d6974697665733a3a7472616e73616374696f6e5f76616c69646974793a3a5472616e73616374696f6e56616c69646974794572726f723e3a3a656e636f64655f746f3a3a6831626165383133323764396564653362c7037173726d6c5f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a696e697469616c697a655f626c6f636b3a3a6834626664366136356235623930656539c8033d73726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a6c61756e63685f65787465726e616c3a3a6862613562643931393264343264353735c9033b73726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a6c61756e63685f7075626c69633a3a6864623438343534306330333732386561ca033d73726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a7265666572656e64756d5f696e666f3a3a6833333765323135653936613163383731cb033873726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a766f746572735f666f723a3a6837306138346438373431306364346230cc033573726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a766f74655f6f663a3a6831613037316366663431353331376631cd033d73726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a64656c6567617465645f766f7465733a3a6832663566356266663563303233643636ce033e73726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a636c6561725f7265666572656e64756d3a3a6866666637373262613837616630303565cf03443c6e6f64655f72756e74696d653a3a43616c6c20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6832616531373964653035366164666439d0037973726d6c5f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a6170706c795f65787472696e7369635f776974685f6c656e3a3a6830363363313039363438386337343964d103a5013c73725f7072696d6974697665733a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e2061732073725f7072696d6974697665733a3a7472616974733a3a436865636b61626c653c4c6f6f6b75703e3e3a3a636865636b3a3a6835353432373336616466623430333761d2036e3c73726d6c5f636f6e7472616374733a3a436865636b426c6f636b4761734c696d69743c543e2061732073725f7072696d6974697665733a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6834613539353938646632343262313836d303363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6832653964376331393038323734626436d4033c73726d6c5f74696d657374616d703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6836356634343632646235343435393338d5033e73726d6c5f74696d657374616d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6865636431373939313835396165306236d6034773726d6c5f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6864353861656165393464373762386164d70398013c73726d6c5f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d506572696f6444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864623734353962613435343235656461d8033f73726d6c5f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6861613637353666646431666439393661d9034173726d6c5f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6838656137343163663931396330333264da0334636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6861613934663035386431333531633466db032e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6834333461393733383437303165333236dc033c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6835653664306564386338306561613034dd03593c73725f7072696d6974697665733a3a416e795369676e61747572652061732073725f7072696d6974697665733a3a7472616974733a3a5665726966793e3a3a7665726966793a3a6865653661376232666164623063306337de033773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831313330393632353863393833353939df033773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831333135303466353262396465616136e0033773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861656430393864653237386637643631e1033773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861666432643465663565656365613936e2033773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6838333637626463333564323039376438e303c40173726d6c5f636f6e7472616374733a3a5f494d504c5f454e434f44455f464f525f526177416c697665436f6e7472616374496e666f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073726d6c5f636f6e7472616374733a3a526177416c697665436f6e7472616374496e666f3c436f6465486173682c42616c616e63652c426c6f636b4e756d6265723e3e3a3a656e636f64655f746f3a3a6837343039376637333530333664356132e4033873726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a74616b653a3a6839643530626664316331393964383432e5037773726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6d75746174653a3a6833393630323862623831616532396435e6033c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6865373235383163383635373736343031e7033e73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6838353138373039636366353134386634e8036b3c73726d6c5f636f6e7472616374733a3a5f5f4765744279746553747275637447617350726963653c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837646161333630313731323962626161e903723c73726d6c5f636f6e7472616374733a3a5f5f4765744279746553747275637443757272656e745363686564756c653c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830613432353664383239653035616630ea034773726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6839373030323763326334383864663966eb0398013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b4761734c696d697444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835326264363965373737633864653839ec0397013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d617856616c756553697a6544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863653266336335666664386535346666ed0393013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6178446570746844656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839373239663263633533653864316636ee0396013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a43616c6c4261736546656544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830613062653632333537663633303232ef0396013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a436f6e747261637446656544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836643062623334363530643336623765f0039d013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5472616e73616374696f6e4279746546656544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861653066326564313066333062336431f1039a013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53757263686172676552657761726444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835643765346164343430313363316363f2039c013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a52656e744465706f7369744f666673657444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830653366346264376531366535323031f3039c013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53746f7261676553697a654f666673657444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836666162343733336233653630636665f4039e013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5369676e6564436c61696d48616e646963617044656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832363431363262343562363133336365f5033773726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a626172655f63616c6c3a3a6862393261343137333037323335353038f6033773726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6761735f70726963653a3a6861353534306331613131336131343632f7033e73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a63757272656e745f7363686564756c653a3a6835393231353035363931356330383436f8033873726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a726573746f72655f746f3a3a6863613537313665383565633061613434f9034573726d6c5f636f6e7472616374733a3a7761736d3a3a707265706172653a3a436f6e74726163744d6f64756c653a3a6e65773a3a6838326533383933383863653766636635fa03467061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a436f646553656374696f6e3a3a626f646965733a3a6864393864326364313131613035613531fb0348616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6865373064323632373339343561313363fc033c7061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a66726f6d5f6d6f64756c653a3a6834643832616331306433343833336233fd03537061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a4d6f64756c654275696c6465723c463e3a3a7265736f6c76655f747970655f7265663a3a6861643034326537313830333035313963fe03a9017061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c7061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a4d6f64756c6553636166666f6c643e20666f72207061726974795f7761736d3a3a656c656d656e74733a3a6d6f64756c653a3a4d6f64756c653e3a3a66726f6d3a3a6836643231633062653130613035343964ff0344707761736d5f7574696c733a3a6761733a3a436f756e7465723a3a66696e616c697a655f6d6574657265645f626c6f636b3a3a686362636565306234333463346631643080042d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a68656165383561343031313132353734348104507061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a4d6f64756c654275696c6465723c463e3a3a707573685f66756e6374696f6e3a3a6865396131343838383163653163323132820430636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a686464633764633436363333376535353783043c707761736d5f7574696c733a3a737461636b5f6865696768743a3a696e6a6563745f6c696d697465723a3a686635333865316430386135653339666384046b3c7061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a53656374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a683633316637353930306465663336646285046b3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a686536383437396137393936386537646686046f3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a686631323333633761626466646630306287049f013c73725f7072696d6974697665733a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a686661623762663862623438396439613888043773726d6c5f7375646f3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a683535306364366435376331373164303289043973726d6c5f7375646f3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68303362303139613732626139303138328a04613c73726d6c5f7375646f3a3a5f5f476574427974655374727563744b65793c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68383731363333663133333061636665378b04a5017375627374726174655f7072696d6974697665733a3a737232353531393a3a5f494d504c5f454e434f44455f464f525f5075626c69633a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72207375627374726174655f7072696d6974697665733a3a737232353531393a3a5075626c69633e3a3a656e636f64653a3a68613163366230616563303734343431648c040c436f72655f76657273696f6e8d0412436f72655f657865637574655f626c6f636b8e04693c73725f7072696d6974697665733a3a7472616974733a3a426c616b6554776f3235362061732073725f7072696d6974697665733a3a7472616974733a3a486173683e3a3a6f7264657265645f747269655f726f6f743a3a68373739373939656532646161363861618f0415436f72655f696e697469616c697a655f626c6f636b9004114d657461646174615f6d657461646174619104483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68666533386331353361356163326164389204683c73726d6c5f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68393131356662623533323965303964399304683c73726d6c5f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683930613566666362353464373266346694041c426c6f636b4275696c6465725f6170706c795f65787472696e73696395041b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b960420426c6f636b4275696c6465725f696e686572656e745f65787472696e7369637397043873726d6c5f74696d657374616d703a3a657874726163745f696e686572656e745f646174613a3a686362316436643834626362643035333698041c426c6f636b4275696c6465725f636865636b5f696e686572656e7473990418426c6f636b4275696c6465725f72616e646f6d5f736565649a042b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e9b045673725f7072696d6974697665733a3a7472616e73616374696f6e5f76616c69646974793a3a56616c69645472616e73616374696f6e3a3a636f6d62696e655f776974683a3a68353736346238623566396161613662309c04214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b65729d0480013c73726d6c5f696d5f6f6e6c696e653a3a737232353531393a3a6170705f737232353531393a3a5075626c6963206173207375627374726174655f6170706c69636174696f6e5f63727970746f3a3a7472616974733a3a52756e74696d654170705075626c69633e3a3a616c6c3a3a68613834343166646339353935386136399e041e4772616e6470614170695f6772616e6470615f617574686f7269746965739f0415426162654170695f636f6e66696775726174696f6ea00421417574686f72697479446973636f766572794170695f617574686f726974696573a1041a417574686f72697479446973636f766572794170695f7369676ea2041c417574686f72697479446973636f766572794170695f766572696679a3041d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e6365a40411436f6e7472616374734170695f63616c6ca5042153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b657973a604820173726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654c696e6b65644d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6838663434353163653739313862313333a704820173726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654c696e6b65644d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6861663431626330376265363732653261a8043a73726d6c5f7374616b696e673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6832383266383039373163393635623735a9043c73726d6c5f7374616b696e673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6830613933393034626364613731633464aa04743c73726d6c5f7374616b696e673a3a5f5f47657442797465537472756374536c6173685265776172644672616374696f6e3c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830373539636563383531333663626462ab04773c73726d6c5f7374616b696e673a3a5f5f4765744279746553747275637443757272656e74457261506f696e74734561726e65643c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863346466393062396266616466383466ac04703c73726d6c5f7374616b696e673a3a5f5f4765744279746553747275637443757272656e7445726153746172743c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861346332306237316637343535343862ad04683c73726d6c5f7374616b696e673a3a5f5f476574427974655374727563745374616b6572733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834653030616266353365363433633733ae046b3c73726d6c5f7374616b696e673a3a5f5f4765744279746553747275637456616c696461746f72733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839633736316334353032636466336536af04763c73726d6c5f7374616b696e673a3a5f5f476574427974655374727563744d696e696d756d56616c696461746f72436f756e743c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861336434623962346538633532666237b0044073726d6c5f7374616b696e673a3a4d6f64756c653c543e3a3a736c61736861626c655f62616c616e63655f6f663a3a6861636135383433363936353265613265b1043273726d6c5f7374616b696e673a3a4d6f64756c653c543e3a3a626f6e6465643a3a6830636562393635626631386363616232b2044573726d6c5f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6837306665313036376639643939383935b30498013c73726d6c5f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426f6e64696e674475726174696f6e44656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832623535646136383130626464303061b4043773726d6c5f7374616b696e673a3a4d6f64756c653c543e3a3a6d616b655f7061796f75743a3a6832376631663237613230333735323861b5043973726d6c5f7374616b696e673a3a4d6f64756c653c543e3a3a7570646174655f6c65646765723a3a6832376563613564613530643864656139b6044a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6866633236366266623663653230323433b7043f73726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a696e6a6563745f7265666572656e64756d3a3a6866346266323835623039613038383533b8043873726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a6465706f7369745f6f663a3a6833636363393431363966326232643635b9043c73726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6831646437343931353664623131643533ba043e73726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6838336233383939373363343862666435bb046c3c73726d6c5f64656d6f63726163793a3a5f5f47657442797465537472756374426c61636b6c6973743c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838623533343432616361336431616461bc046f3c73726d6c5f64656d6f63726163793a3a5f5f476574427974655374727563744e65787445787465726e616c3c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837643466363231333432643433663038bd046e3c73726d6c5f64656d6f63726163793a3a5f5f4765744279746553747275637444656c65676174696f6e733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833626665323435333261616465653139be04703c73726d6c5f64656d6f63726163793a3a5f5f47657442797465537472756374446973706174636851756575653c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835356135336235653738653362353537bf044773726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6864666466353637383338323064313530c00497013c73726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4c61756e6368506572696f6444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865623830643136316665383833373935c104a0013c73726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a456d657267656e6379566f74696e67506572696f6444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833316232323132653732363163316232c20499013c73726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d4465706f73697444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832363265623533316566353366303065c3049a013c73726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a456e6163746d656e74506572696f6444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838343565333534353965616136613466c4047573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6832623431383266303634326531386431c5043573726d6c5f64656d6f63726163793a3a4d6f64756c653c543e3a3a646f5f766f74653a3a6834376438626636343531373064396363c604553c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832333130333466623262396161316637c704303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830376539663164633463383837333064c804303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833613863363935663762313962666661c904303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862343766326134326533363431363234ca04443c7061726974795f7761736d3a3a696f3a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836656663396633373739323336343738cb04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6863373733386638313465306262636138cc04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6865336235353835366335366563383866cd04457061726974795f7761736d3a3a656c656d656e74733a3a7365676d656e743a3a446174615365676d656e743a3a76616c75653a3a6861333366626161653136643036353336ce04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831613930373663633036623361623965cf04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835653364383861646633663531633032d004553c7061726974795f7761736d3a3a656c656d656e74733a3a74797065733a3a56616c75655479706520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832333362653833316563653732373563d104553c7061726974795f7761736d3a3a656c656d656e74733a3a74797065733a3a426c6f636b5479706520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838376433336131303565663737663430d204303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6839343630376237663435333334613836d30433636f72653a3a6f7074696f6e3a3a4f7074696f6e3c26543e3a3a636c6f6e65643a3a6833336430666462656635333766383862d404453c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834643038393932373338626235366665d504303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6839626562663532613237376634306665d60440707761736d5f7574696c733a3a737461636b5f6865696768743a3a636f6d707574655f737461636b5f636f73743a3a6832656332613464616131633336616664d704533c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a737065635f657874656e643a3a6833663135373864636638623165303366d804323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6833333964366132336633616239353839d904593c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6832303531346563626537613764663764da04613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6865646336386533623863393232303938db043f707761736d5f7574696c733a3a737461636b5f6865696768743a3a7265736f6c76655f66756e635f747970653a3a6835666661376165643139363735653632dc0430636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6834383364613531306533653334653735dd0441707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a636f6d707574653a3a6830646665316537373831363437623164de0434636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6835353237373135663731363338343330df042e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6833386430383365613239326630376635e0043c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6833396131373737326563303238336633e104303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830316234393736623730636366393962e2045a3c707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a4672616d6520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837373362393934386530363033303234e30446707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a537461636b3a3a6672616d653a3a6838653765623332646462333937343230e4044b707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a537461636b3a3a706f705f76616c7565733a3a6837613665336661633565303837386131e504323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6839353333633564346536303161336562e604323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6838333065633835663931653437646439e7044e73725f696f3a3a696d703a3a6578743a3a65787465726e5f66756e6374696f6e735f686f73745f696d706c3a3a6578745f7072696e745f757466383a3a6831316330336538356431303265376435e804683c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e697445787072206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6833643262383038376431613430623032e9046b3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6861376364656439653336396133323630ea047d3c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a436f756e7465644c6973745772697465723c492c543e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6835653237663566326461333132313031eb046f3c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a566172496e743332206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6833356432333232326631633463663837ec046f3c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a566172496e743634206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6836666134636162356466656233633936ed046c3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e697445787072206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6861353061613066336466316663643961ee046f3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6838663538373638626466643663363436ef04793c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a436f756e7465644c6973743c543e206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6830326534363637616133663639633832f0046b3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6866616531383734653335636562616238f104713c7061726974795f7761736d3a3a656c656d656e74733a3a696e6465785f6d61703a3a496e6465784d61703c543e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6837353163336164613534326365643464f204783c7061726974795f7761736d3a3a656c656d656e74733a3a696d706f72745f656e7472793a3a526573697a61626c654c696d697473206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6866653634336337356161613937393331f3047c3c7061726974795f7761736d3a3a656c656d656e74733a3a696d706f72745f656e7472793a3a526573697a61626c654c696d697473206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6834643135366137643832646366653437f404743c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a56617255696e743332206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6862396165303366373735323163303237f504713c7061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a437573746f6d53656374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6864383435613264366361663338313736f6044b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6833303831373966353539376166373962f7044b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6862636562656465393336303030353930f8044b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6864356438333636626133356134666363f904463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6830393432356365343637643235646564fa046f3c7061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a53656374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6835373532633363323332363061333635fb04457061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a53656374696f6e5265616465723a3a6e65773a3a6866656161316461386338643835366362fc0486017061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a3c696d706c207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a6520666f7220616c6c6f633a3a737472696e673a3a537472696e673e3a3a646573657269616c697a653a3a6832303434366565303237346466653739fd042d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6862353339623432353939316562373937fe0434636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6866623631656536316166636362646537ff042e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a683038653936383835383561383932643480053c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a683631623461353636613537323964363781053b636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a7b7b636c6f737572657d7d3a3a68343831336137356561636161653734378205323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68663961303537303266333235643366618305397761736d695f76616c69646174696f6e3a3a76616c69646174655f6d656d6f72795f747970653a3a68386330623261323731393065373038328405347761736d695f76616c69646174696f6e3a3a657870725f636f6e73745f747970653a3a683232363566313162343233326265373685054a7761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a737465703a3a68353864303463346465383638653431658605473c7761736d695f76616c69646174696f6e3a3a4572726f7220617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6837353566373166363063653234393764870537616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a683462396237323936623436336634353588053b636f72653a3a736c6963653a3a3c696d706c205b545d3e3a3a636f70795f66726f6d5f736c6963653a3a68383832353431646433666436326537318905347761736d695f76616c69646174696f6e3a3a66756e633a3a706f705f76616c75653a3a68656337393434626366663764623131668a05347761736d695f76616c69646174696f6e3a3a66756e633a3a706f705f6c6162656c3a3a68326336353735376131376361383336338b05407761736d695f76616c69646174696f6e3a3a7574696c3a3a4c6f63616c733a3a747970655f6f665f6c6f63616c3a3a68383162303837636564666462346434388c05543c7761736d695f76616c69646174696f6e3a3a66756e633a3a537461636b56616c75655479706520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68633739643161663136313838663435368d05537761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f6c6f61643a3a68366138333538613164613464626566308e05547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f73746f72653a3a68636564333562656564653636653562628f05557761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f746573746f703a3a68616533303233333361636330633266319005547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f72656c6f703a3a68376534356165623939363562643230379105537761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f756e6f703a3a68313765386433643566626361383862399205547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f62696e6f703a3a68333830663663353461613061383264399305547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f6376746f703a3a6835353663323836383738376336363661940530636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6830363931663361393762336664333466950530636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68613966613837316265643663366635309605303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68393761376132643963636263616632399705453c616c6c6f633a3a737472696e673a3a537472696e6720617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683630376665306161343865353334636298054c3c7761736d695f76616c69646174696f6e3a3a737461636b3a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68653966363833643036366338313166359905066d656d7365749a05066d656d6370799b05076d656d6d6f76659c05066d656d636d709d05095f5f6173686c7469339e05095f5f6c7368727469339f05085f5f6d756c746933a005095f5f75646976746933a105095f5f756d6f64746933a2050c5f5f756469766d6f6474693400550970726f64756365727302086c616e6775616765010452757374000c70726f6365737365642d62790105727573746325312e33392e302d6e696768746c79202831646431383834383920323031392d30392d323229", + "0x8f9a319405d14f3953657373696f6e204b65794f776e6572343a73657373696f6e3a6b6579730cd914acf7b89329ae59e8f7e3b8f1ee7a4f5f68d4749cca82814f2f5b1d6bbb": "0x9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12", + "0xc98362e2ca21b342cc749022ed9b560e4d29ec9862a960c2538c314f1d279635": "0x149ee5e5bdc0ec239eb164f865ecc345ce4c88e76ee002e0f7e3180973474718099c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d1268655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663", + "0x6e4ab2ac5a7cf9b1829eacc84a75bde0804be01fc31c9419ea72407f50a33384": "0xf26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663", + "0x366a192e1ce90bf109f11cf4d4bdab1ce310d835c09411b1be3ad53814e33196": "0x000001547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65", + "0x125dc846383907f5846f72ce53ca0e4b": "0x00ca9a3b000000000000000000000000", + "0x46cef122497fefa60faf6c66d3ef05caf9870446796ae11f0a4f734fee993d8b": "0x00", + "0xf4adb4c4f708c4b753657373696f6e204e6578744b657973343a73657373696f6e3a6b6579737f325c981c2b001f5fe8c51cc7b89e50ebb1f60feb7ab3fa3bc79d6ab71d45cb": "0x9becad03e6dcac03cee07edebca5475314861492cdfc96a2144a67bbe96993326e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f91066e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106", + "0x71020fee971bd00e8248d1830b8cffbe5b9cf4de1ea2911a1665c44fd70ab6f3": "0xf26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c26630f0000c16ff286230f0000c16ff2862300", + "0xfff675c76ad8a5dfbd7db9a4e80f7c0ece595ad1878d2b6fca6086b2483a055b": "0x0000c16ff28623000000000000000000", + "0x2b334d6ac6698775ed17edf8cd3cbd9dae56cead0d69cb54f6af6aaecba544d8": "0x0ff6ffc06ff286230ff6ffc06ff2862300", + "0xdfaac108e0d4bc78fc9419a7fcfa84dc": "0x10f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d6568655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde789c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12", + "0x3ae31af9a378162eb2736f26855c9ad8": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x3a65787472696e7369635f696e646578": "0x00000000", + "0x8f9a319405d14f3953657373696f6e204b65794f776e6572343a73657373696f6e3a6b65797346c8960f8387b17441ee2be48a0896e48d3580e922c6e1cd8f53a621370c1e49": "0x68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78", + "0x7e6064dc0e78ffebb59b3053826a9467": "0x109c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d1268655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663", + "0xc1fdc3d212357bc2fa98f2a77b941f0c": "0x10f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d6568655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde789c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12", + "0x8f9a319405d14f3953657373696f6e204b65794f776e6572343a73657373696f6e3a6b65797301dd273832961ca94116fd224019ea1370c0e3d27bebb1041b35651146d17832": "0x68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78", + "0x686f6c72b7b80bad8dba022335cb7c9e4556ac7ea200008da8046e3178eb89c1": "0x0ff6ffc06ff286230ff6ffc06ff2862300", + "0x2d5205eddfc20f1a616c0391abb78a3920e823abe7ed33cfd7945dd1a1bf8651": "0x047374616b696e67200000c16ff28623000000000000000000ffffffff0f", + "0x040ff70c23416b89ce6afb75ee0d362e": "0x00000000", + "0x121725e2f949944d00a8c011c0db54ae07b84a6ca772adf3c65417345d91522d": "0x0000c16ff28623000000000000000000", + "0x9c16fd03b96712dc0751bb0d63bc05aa": "0x00e1f505", + "0x8f9a319405d14f3953657373696f6e204b65794f776e6572343a73657373696f6e3a6b657973d1ae046d940202772415992434f839d8c546542e3055143c430f7eec87f7cb69": "0xf26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663", + "0xccea67b51b4fa33ecbff70a8977ad91d9c60d620f3ab5ac9626dea15cde023b7": "0x0ff6ffc06ff286230ff6ffc06ff2862300", + "0x886726f904d8372fdabb7707870c2fad": "0x1000299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f43780100000000000000482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a0100000000000000482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e01000000000000006e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f91060100000000000000", + "0x68c8d2f39c4605e65218c22c5664917047e4900c797b7dd33999d94213c75049": "0x047374616b696e67200000c16ff28623000000000000000000ffffffff0f", + "0x7eb7a404bf7e3466c3f6c5914e25edfaab48b1e24fd29ea5a94deaaa1aba80e6": "0x0001547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65019c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12", + "0xdfa1667c116b77971ada377f9bd9c485a0566b8e477ae01969120423f2f124ea": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x92f53c21a80e624b3c606bc8ec0ce2a3003c4fe385bed33998bf4dc79b8970f2": "0x547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d650f0000c16ff286230f0000c16ff2862300", + "0xb2029f8665aac509629f2d28cea790a3": "0x10f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c26633919132b851ef0fd2dae42a7e734fe547af5a6b809006100f48944d7fae8e8ef00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f437800299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d655633b70b80a6c8bb16270f82cca6d56b27ed7b76c8fd5af2986a25a4788ce440482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde787932cff431e748892fa48e10c63c17d30f80ca42e4de3921e641249cd7fa3c2f482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d129becad03e6dcac03cee07edebca5475314861492cdfc96a2144a67bbe96993326e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f91066e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106", + "0xf4adb4c4f708c4b753657373696f6e204e6578744b657973343a73657373696f6e3a6b657973e54094c2d5af8ae10b91e1288f4f59f2946d7738f2c509b7effd909e5e9ba0ad": "0x5633b70b80a6c8bb16270f82cca6d56b27ed7b76c8fd5af2986a25a4788ce440482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a", + "0x78f4ad73d6b7279f8d06f359e363c829": "0x0000a49d8fc957363600000000000000", + "0xfd0cbba69a04d769ddcdbb15f5123c98041978f5241f33f78f62b48e3a02b740": "0x047374616b696e67200000c16ff28623000000000000000000ffffffff0f", + "0x26ac4a74e1ba94e0e7dbfc3b2aea083cf3c0f0d80eb999c7cebb340ee8934da9": "0x68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde780f0000c16ff286230f0000c16ff2862300", + "0xf4adb4c4f708c4b753657373696f6e204e6578744b657973343a73657373696f6e3a6b65797394f72a73893fbd00b11fcce65a014cc5b9ff5066ec15aa6be068b4cabfe67fdb": "0x3919132b851ef0fd2dae42a7e734fe547af5a6b809006100f48944d7fae8e8ef00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f437800299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378", + "0x4ac2684a5a20e7a5adf17ed7aa792a3f6334a0505f02b2a44c3934d36cc4ee0a": "0xc8dc79e36b29395413399edaec3e20fcca7205fb19776ed8ddb25d6f427ec40e", + "0xa5e869ecc1b914a6b0cf5f02b874f5eb90f1739fbd3edd01e5835d1517fd9f72": "0x781ead1e2fa9ccb74b44c19d29cb2a7a4b5be3972927ae98cd3877523976a276" + }, + {} + ] + } +} diff --git a/node/cli/src/browser.rs b/bin/node/cli/src/browser.rs similarity index 76% rename from node/cli/src/browser.rs rename to bin/node/cli/src/browser.rs index 5d70f5fe7..cd1d453d8 100644 --- a/node/cli/src/browser.rs +++ b/bin/node/cli/src/browser.rs @@ -14,22 +14,21 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use std::sync::Arc; - -use futures::{prelude::*, sync::mpsc, sync::oneshot}; +use crate::ChainSpec; +use futures01::{prelude::*, sync::oneshot, sync::mpsc}; use libp2p::wasm_ext; use log::{debug, info}; -use substrate_service::{config::DatabaseConfig, AbstractService, Configuration, Roles as ServiceRoles, RpcSession}; +use std::sync::Arc; +use sc_service::{AbstractService, RpcSession, Roles as ServiceRoles, Configuration, config::DatabaseConfig}; use wasm_bindgen::prelude::*; -use crate::ChainSpec; - /// Starts the client. /// /// You must pass a libp2p transport that supports . #[wasm_bindgen] pub fn start_client(wasm_ext: wasm_ext::ffi::Transport) -> Result { - start_inner(wasm_ext).map_err(|err| JsValue::from_str(&err.to_string())) + start_inner(wasm_ext) + .map_err(|err| JsValue::from_str(&err.to_string())) } fn start_inner(wasm_ext: wasm_ext::ffi::Transport) -> Result> { @@ -39,9 +38,9 @@ fn start_inner(wasm_ext: wasm_ext::ffi::Transport) -> Result::default_with_spec_and_base_path(chain_spec, None); - config.network.transport = network::config::TransportConfig::Normal { + config.network.transport = sc_network::config::TransportConfig::Normal { wasm_external_transport: Some(wasm_ext.clone()), allow_private_ipv4: true, enable_mdns: false, @@ -56,14 +55,9 @@ fn start_inner(wasm_ext: wasm_ext::ffi::Transport) -> Result Result(); - wasm_bindgen_futures::spawn_local(futures::future::poll_fn(move || { + wasm_bindgen_futures::spawn_local(futures01::future::poll_fn(move || { loop { match rpc_send_rx.poll() { Ok(Async::Ready(Some(message))) => { let fut = service.rpc_query(&message.session, &message.rpc_json); let _ = message.send_back.send(Box::new(fut)); - } + }, Ok(Async::NotReady) => break, Err(_) | Ok(Async::Ready(None)) => return Ok(Async::Ready(())), } @@ -92,14 +86,16 @@ fn start_inner(wasm_ext: wasm_ext::ffi::Transport) -> Result return Ok(Async::Ready(())), - Async::NotReady => break, + Async::NotReady => break } } Ok(Async::NotReady) })); - Ok(Client { rpc_send_tx }) + Ok(Client { + rpc_send_tx, + }) } /// A running client. @@ -145,19 +141,20 @@ impl Client { session: rpc_session.clone(), send_back: fut_tx, }); - let fut_rx = fut_rx.map_err(|_| ()).and_then(|fut| fut); + let fut_rx = fut_rx + .map_err(|_| ()) + .and_then(|fut| fut); wasm_bindgen_futures::spawn_local(fut_rx.then(|_| Ok(()))); - wasm_bindgen_futures::spawn_local( - rx.for_each(move |s| match callback.call1(&callback, &JsValue::from_str(&s)) { + wasm_bindgen_futures::spawn_local(rx.for_each(move |s| { + match callback.call1(&callback, &JsValue::from_str(&s)) { Ok(_) => Ok(()), Err(_) => Err(()), - }) - .then(move |v| { - // We need to keep `rpc_session` alive. - debug!("RPC subscription has ended"); - drop(rpc_session); - v - }), - ); + } + }).then(move |v| { + // We need to keep `rpc_session` alive. + debug!("RPC subscription has ended"); + drop(rpc_session); + v + })); } } diff --git a/bin/node/cli/src/chain_spec.rs b/bin/node/cli/src/chain_spec.rs new file mode 100644 index 000000000..bfab71b55 --- /dev/null +++ b/bin/node/cli/src/chain_spec.rs @@ -0,0 +1,403 @@ +// Copyright 2018-2019 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 . + +//! Substrate chain configurations. + +use sc_chain_spec::ChainSpecExtension; +use sp_core::{Pair, Public, crypto::UncheckedInto, sr25519}; +use serde::{Serialize, Deserialize}; +use node_runtime::{ + AuthorityDiscoveryConfig, BabeConfig, BalancesConfig, ContractsConfig, CouncilConfig, DemocracyConfig, + GrandpaConfig, ImOnlineConfig, IndicesConfig, SessionConfig, SessionKeys, StakerStatus, StakingConfig, SudoConfig, + SystemConfig, TechnicalCommitteeConfig, WASM_BINARY, +}; +use node_runtime::Block; +use node_runtime::constants::currency::*; +use sc_service; +use hex_literal::hex; +use sc_telemetry::TelemetryEndpoints; +use grandpa_primitives::{AuthorityId as GrandpaId}; +use sp_consensus_babe::{AuthorityId as BabeId}; +use pallet_im_online::sr25519::{AuthorityId as ImOnlineId}; +use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; +use sp_runtime::{Perbill, traits::{Verify, IdentifyAccount}}; + +pub use node_primitives::{AccountId, Balance, Signature}; +pub use node_runtime::GenesisConfig; + +type AccountPublic = ::Signer; + +const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; + +/// Node `ChainSpec` extensions. +/// +/// Additional parameters for some Substrate core modules, +/// customizable from the chain spec. +#[derive(Default, Clone, Serialize, Deserialize, ChainSpecExtension)] +pub struct Extensions { + /// Block numbers with known hashes. + pub fork_blocks: sc_client::ForkBlocks, +} + +/// Specialized `ChainSpec`. +pub type ChainSpec = sc_service::ChainSpec< + GenesisConfig, + Extensions, +>; +/// Flaming Fir testnet generator +pub fn flaming_fir_config() -> Result { + ChainSpec::from_json_bytes(&include_bytes!("../res/flaming-fir.json")[..]) +} + +fn session_keys( + grandpa: GrandpaId, + babe: BabeId, + im_online: ImOnlineId, + authority_discovery: AuthorityDiscoveryId, +) -> SessionKeys { + SessionKeys { grandpa, babe, im_online, authority_discovery } +} + +fn staging_testnet_config_genesis() -> GenesisConfig { + // stash, controller, session-key + // generated with secret: + // for i in 1 2 3 4 ; do for j in stash controller; do subkey inspect "$secret"/fir/$j/$i; done; done + // and + // for i in 1 2 3 4 ; do for j in session; do subkey --ed25519 inspect "$secret"//fir//$j//$i; done; done + + let initial_authorities: Vec<(AccountId, AccountId, GrandpaId, BabeId, ImOnlineId, AuthorityDiscoveryId)> = vec![( + // 5Fbsd6WXDGiLTxunqeK5BATNiocfCqu9bS1yArVjCgeBLkVy + hex!["9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12"].into(), + // 5EnCiV7wSHeNhjW3FSUwiJNkcc2SBkPLn5Nj93FmbLtBjQUq + hex!["781ead1e2fa9ccb74b44c19d29cb2a7a4b5be3972927ae98cd3877523976a276"].into(), + // 5Fb9ayurnxnaXj56CjmyQLBiadfRCqUbL2VWNbbe1nZU6wiC + hex!["9becad03e6dcac03cee07edebca5475314861492cdfc96a2144a67bbe9699332"].unchecked_into(), + // 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8 + hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(), + // 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8 + hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(), + // 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8 + hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(), + ),( + // 5ERawXCzCWkjVq3xz1W5KGNtVx2VdefvZ62Bw1FEuZW4Vny2 + hex!["68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78"].into(), + // 5Gc4vr42hH1uDZc93Nayk5G7i687bAQdHHc9unLuyeawHipF + hex!["c8dc79e36b29395413399edaec3e20fcca7205fb19776ed8ddb25d6f427ec40e"].into(), + // 5EockCXN6YkiNCDjpqqnbcqd4ad35nU4RmA1ikM4YeRN4WcE + hex!["7932cff431e748892fa48e10c63c17d30f80ca42e4de3921e641249cd7fa3c2f"].unchecked_into(), + // 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ + hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(), + // 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ + hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(), + // 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ + hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(), + ),( + // 5DyVtKWPidondEu8iHZgi6Ffv9yrJJ1NDNLom3X9cTDi98qp + hex!["547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65"].into(), + // 5FeD54vGVNpFX3PndHPXJ2MDakc462vBCD5mgtWRnWYCpZU9 + hex!["9e42241d7cd91d001773b0b616d523dd80e13c6c2cab860b1234ef1b9ffc1526"].into(), + // 5E1jLYfLdUQKrFrtqoKgFrRvxM3oQPMbf6DfcsrugZZ5Bn8d + hex!["5633b70b80a6c8bb16270f82cca6d56b27ed7b76c8fd5af2986a25a4788ce440"].unchecked_into(), + // 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH + hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(), + // 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH + hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(), + // 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH + hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(), + ),( + // 5HYZnKWe5FVZQ33ZRJK1rG3WaLMztxWrrNDb1JRwaHHVWyP9 + hex!["f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663"].into(), + // 5EPQdAQ39WQNLCRjWsCk5jErsCitHiY5ZmjfWzzbXDoAoYbn + hex!["66bc1e5d275da50b72b15de072a2468a5ad414919ca9054d2695767cf650012f"].into(), + // 5DMa31Hd5u1dwoRKgC4uvqyrdK45RHv3CpwvpUC1EzuwDit4 + hex!["3919132b851ef0fd2dae42a7e734fe547af5a6b809006100f48944d7fae8e8ef"].unchecked_into(), + // 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x + hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(), + // 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x + hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(), + // 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x + hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(), + )]; + + // generated with secret: subkey inspect "$secret"/fir + let root_key: AccountId = hex![ + // 5Ff3iXP75ruzroPWRP2FYBHWnmGGBSb63857BgnzCoXNxfPo + "9ee5e5bdc0ec239eb164f865ecc345ce4c88e76ee002e0f7e318097347471809" + ].into(); + + let endowed_accounts: Vec = vec![root_key.clone()]; + + testnet_genesis( + initial_authorities, + root_key, + Some(endowed_accounts), + false, + ) +} + +/// Staging testnet config. +pub fn staging_testnet_config() -> ChainSpec { + let boot_nodes = vec![]; + ChainSpec::from_genesis( + "Staging Testnet", + "staging_testnet", + staging_testnet_config_genesis, + boot_nodes, + Some(TelemetryEndpoints::new(vec![(STAGING_TELEMETRY_URL.to_string(), 0)])), + None, + None, + Default::default(), + ) +} + +/// Helper function to generate a crypto pair from seed +pub fn get_from_seed(seed: &str) -> ::Public { + TPublic::Pair::from_string(&format!("//{}", seed), None) + .expect("static values are valid; qed") + .public() +} + +/// Helper function to generate an account ID from seed +pub fn get_account_id_from_seed(seed: &str) -> AccountId where + AccountPublic: From<::Public> +{ + AccountPublic::from(get_from_seed::(seed)).into_account() +} + +/// Helper function to generate stash, controller and session key from seed +pub fn get_authority_keys_from_seed(seed: &str) -> ( + AccountId, + AccountId, + GrandpaId, + BabeId, + ImOnlineId, + AuthorityDiscoveryId, +) { + ( + get_account_id_from_seed::(&format!("{}//stash", seed)), + get_account_id_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + ) +} + +/// Helper function to create GenesisConfig for testing +pub fn testnet_genesis( + initial_authorities: Vec<(AccountId, AccountId, GrandpaId, BabeId, ImOnlineId, AuthorityDiscoveryId)>, + root_key: AccountId, + endowed_accounts: Option>, + enable_println: bool, +) -> GenesisConfig { + let endowed_accounts: Vec = endowed_accounts.unwrap_or_else(|| { + vec![ + get_account_id_from_seed::("Alice"), + get_account_id_from_seed::("Bob"), + get_account_id_from_seed::("Charlie"), + get_account_id_from_seed::("Dave"), + get_account_id_from_seed::("Eve"), + get_account_id_from_seed::("Ferdie"), + get_account_id_from_seed::("Alice//stash"), + get_account_id_from_seed::("Bob//stash"), + get_account_id_from_seed::("Charlie//stash"), + get_account_id_from_seed::("Dave//stash"), + get_account_id_from_seed::("Eve//stash"), + get_account_id_from_seed::("Ferdie//stash"), + ] + }); + let num_endowed_accounts = endowed_accounts.len(); + + const ENDOWMENT: Balance = 10_000_000 * DOLLARS; + const STASH: Balance = 100 * DOLLARS; + + GenesisConfig { + frame_system: Some(SystemConfig { + code: WASM_BINARY.to_vec(), + changes_trie_config: Default::default(), + }), + pallet_balances: Some(BalancesConfig { + balances: endowed_accounts.iter().cloned() + .map(|k| (k, ENDOWMENT)) + .chain(initial_authorities.iter().map(|x| (x.0.clone(), STASH))) + .collect(), + vesting: vec![], + }), + pallet_indices: Some(IndicesConfig { + ids: endowed_accounts.iter().cloned() + .chain(initial_authorities.iter().map(|x| x.0.clone())) + .collect::>(), + }), + 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())) + }).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| { + (x.0.clone(), x.1.clone(), STASH, StakerStatus::Validator) + }).collect(), + invulnerables: initial_authorities.iter().map(|x| x.0.clone()).collect(), + slash_reward_fraction: Perbill::from_percent(10), + .. Default::default() + }), + pallet_democracy: Some(DemocracyConfig::default()), + pallet_collective_Instance1: Some(CouncilConfig { + members: endowed_accounts.iter().cloned() + .collect::>()[..(num_endowed_accounts + 1) / 2].to_vec(), + phantom: Default::default(), + }), + pallet_collective_Instance2: Some(TechnicalCommitteeConfig { + members: endowed_accounts.iter().cloned() + .collect::>()[..(num_endowed_accounts + 1) / 2].to_vec(), + phantom: Default::default(), + }), + pallet_contracts: Some(ContractsConfig { + current_schedule: pallet_contracts::Schedule { + enable_println, // this should only be enabled on development chains + ..Default::default() + }, + gas_price: 1 * MILLICENTS, + }), + pallet_sudo: Some(SudoConfig { + key: root_key, + }), + pallet_babe: Some(BabeConfig { + authorities: vec![], + }), + pallet_im_online: Some(ImOnlineConfig { + keys: vec![], + }), + pallet_authority_discovery: Some(AuthorityDiscoveryConfig { + keys: vec![], + }), + pallet_grandpa: Some(GrandpaConfig { + authorities: vec![], + }), + pallet_membership_Instance1: Some(Default::default()), + pallet_treasury: Some(Default::default()), + } +} + +fn development_config_genesis() -> GenesisConfig { + testnet_genesis( + vec![ + get_authority_keys_from_seed("Alice"), + ], + get_account_id_from_seed::("Alice"), + None, + true, + ) +} + +/// Development config (single validator Alice) +pub fn development_config() -> ChainSpec { + ChainSpec::from_genesis( + "Development", + "dev", + development_config_genesis, + vec![], + None, + None, + None, + Default::default(), + ) +} + +fn local_testnet_genesis() -> GenesisConfig { + testnet_genesis( + vec![ + get_authority_keys_from_seed("Alice"), + get_authority_keys_from_seed("Bob"), + ], + get_account_id_from_seed::("Alice"), + None, + false, + ) +} + +/// Local testnet config (multivalidator Alice + Bob) +pub fn local_testnet_config() -> ChainSpec { + ChainSpec::from_genesis( + "Local Testnet", + "local_testnet", + local_testnet_genesis, + vec![], + None, + None, + None, + Default::default(), + ) +} + +#[cfg(test)] +pub(crate) mod tests { + use super::*; + use crate::service::{new_full, new_light}; + use sc_service_test; + + fn local_testnet_genesis_instant_single() -> GenesisConfig { + testnet_genesis( + vec![ + get_authority_keys_from_seed("Alice"), + ], + get_account_id_from_seed::("Alice"), + None, + false, + ) + } + + /// Local testnet config (single validator - Alice) + pub fn integration_test_config_with_single_authority() -> ChainSpec { + ChainSpec::from_genesis( + "Integration Test", + "test", + local_testnet_genesis_instant_single, + vec![], + None, + None, + None, + Default::default(), + ) + } + + /// Local testnet config (multivalidator Alice + Bob) + pub fn integration_test_config_with_two_authorities() -> ChainSpec { + ChainSpec::from_genesis( + "Integration Test", + "test", + local_testnet_genesis, + vec![], + None, + None, + None, + Default::default(), + ) + } + + #[test] + #[ignore] + fn test_connectivity() { + sc_service_test::connectivity( + integration_test_config_with_two_authorities(), + |config| new_full(config), + |config| new_light(config), + ); + } +} diff --git a/bin/node/cli/src/cli.rs b/bin/node/cli/src/cli.rs new file mode 100644 index 000000000..3b11ff312 --- /dev/null +++ b/bin/node/cli/src/cli.rs @@ -0,0 +1,208 @@ +// Copyright 2018-2019 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 sc_cli::VersionInfo; +use tokio::prelude::Future; +use tokio::runtime::{Builder as RuntimeBuilder, Runtime}; +use sc_cli::{IntoExit, NoCustom, SharedParams, ImportParams, error}; +use sc_service::{AbstractService, Roles as ServiceRoles, Configuration}; +use log::info; +use structopt::StructOpt; +use sc_cli::{display_role, parse_and_prepare, GetSharedParams, ParseAndPrepare}; +use crate::{service, ChainSpec, load_spec}; +use crate::factory_impl::FactoryState; +use node_transaction_factory::RuntimeAdapter; + +/// Custom subcommands. +#[derive(Clone, Debug, StructOpt)] +pub enum CustomSubcommands { + /// The custom factory subcommmand for manufacturing transactions. + #[structopt( + name = "factory", + about = "Manufactures num transactions from Alice to random accounts. \ + Only supported for development or local testnet." + )] + Factory(FactoryCmd), +} + +impl GetSharedParams for CustomSubcommands { + fn shared_params(&self) -> Option<&SharedParams> { + match self { + CustomSubcommands::Factory(cmd) => Some(&cmd.shared_params), + } + } +} + +/// The `factory` command used to generate transactions. +/// Please note: this command currently only works on an empty database! +#[derive(Debug, StructOpt, Clone)] +pub struct FactoryCmd { + /// How often to repeat. This option only has an effect in mode `MasterToNToM`. + #[structopt(long="rounds", default_value = "1")] + pub rounds: u64, + + /// MasterToN: Manufacture `num` transactions from the master account + /// to `num` randomly created accounts, one each. + /// + /// MasterTo1: Manufacture `num` transactions from the master account + /// to exactly one other randomly created account. + /// + /// MasterToNToM: Manufacture `num` transactions from the master account + /// to `num` randomly created accounts. + /// From each of these randomly created accounts manufacture + /// a transaction to another randomly created account. + /// Repeat this `rounds` times. If `rounds` = 1 the behavior + /// is the same as `MasterToN`.{n} + /// A -> B, A -> C, A -> D, ... x `num`{n} + /// B -> E, C -> F, D -> G, ...{n} + /// ... x `rounds` + /// + /// These three modes control manufacturing. + #[structopt(long="mode", default_value = "MasterToN")] + pub mode: node_transaction_factory::Mode, + + /// Number of transactions to generate. In mode `MasterNToNToM` this is + /// the number of transactions per round. + #[structopt(long="num", default_value = "8")] + pub num: u64, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub shared_params: SharedParams, + + #[allow(missing_docs)] + #[structopt(flatten)] + pub import_params: ImportParams, +} + +/// Parse command line arguments into service configuration. +pub fn run(args: I, exit: E, version: sc_cli::VersionInfo) -> error::Result<()> where + I: IntoIterator, + T: Into + Clone, + E: IntoExit, +{ + type Config = Configuration<(), A, B>; + + match parse_and_prepare::(&version, "substrate-node", args) { + ParseAndPrepare::Run(cmd) => cmd.run(load_spec, exit, + |exit, _cli_args, _custom_args, config: Config<_, _>| { + info!("{}", version.name); + info!(" version {}", config.full_version()); + info!(" by Parity Technologies, 2017-2019"); + info!("Chain specification: {}", config.chain_spec.name()); + info!("Node name: {}", config.name); + info!("Roles: {}", display_role(&config)); + let runtime = RuntimeBuilder::new().name_prefix("main-tokio-").build() + .map_err(|e| format!("{:?}", e))?; + match config.roles { + ServiceRoles::LIGHT => run_until_exit( + runtime, + service::new_light(config)?, + exit + ), + _ => run_until_exit( + runtime, + service::new_full(config)?, + exit + ), + } + }), + ParseAndPrepare::BuildSpec(cmd) => cmd.run::(load_spec), + ParseAndPrepare::ExportBlocks(cmd) => cmd.run_with_builder(|config: Config<_, _>| + Ok(new_full_start!(config).0), load_spec, exit), + ParseAndPrepare::ImportBlocks(cmd) => cmd.run_with_builder(|config: Config<_, _>| + Ok(new_full_start!(config).0), load_spec, exit), + ParseAndPrepare::CheckBlock(cmd) => cmd.run_with_builder(|config: Config<_, _>| + Ok(new_full_start!(config).0), load_spec, exit), + ParseAndPrepare::PurgeChain(cmd) => cmd.run(load_spec), + ParseAndPrepare::RevertChain(cmd) => cmd.run_with_builder(|config: Config<_, _>| + Ok(new_full_start!(config).0), load_spec), + ParseAndPrepare::CustomCommand(CustomSubcommands::Factory(cli_args)) => { + let mut config: Config<_, _> = sc_cli::create_config_with_db_path( + load_spec, + &cli_args.shared_params, + &version, + )?; + + sc_cli::fill_import_params(&mut config, &cli_args.import_params, ServiceRoles::FULL)?; + + match ChainSpec::from(config.chain_spec.id()) { + Some(ref c) if c == &ChainSpec::Development || c == &ChainSpec::LocalTestnet => {}, + _ => panic!("Factory is only supported for development and local testnet."), + } + + let factory_state = FactoryState::new( + cli_args.mode.clone(), + cli_args.num, + cli_args.rounds, + ); + + let service_builder = new_full_start!(config).0; + node_transaction_factory::factory::, _, _, _, _, _>( + factory_state, + service_builder.client(), + service_builder.select_chain() + .expect("The select_chain is always initialized by new_full_start!; QED") + ).map_err(|e| format!("Error in transaction factory: {}", e))?; + + Ok(()) + } + } +} + +fn run_until_exit( + mut runtime: Runtime, + service: T, + e: E, +) -> error::Result<()> +where + T: AbstractService, + E: IntoExit, +{ + use futures::{FutureExt, TryFutureExt, channel::oneshot, future::select, compat::Future01CompatExt}; + + let (exit_send, exit) = oneshot::channel(); + + let informant = sc_cli::informant::build(&service); + + let future = select(informant, exit) + .map(|_| Ok(())) + .compat(); + + runtime.executor().spawn(future); + + // we eagerly drop the service so that the internal exit future is fired, + // but we need to keep holding a reference to the global telemetry guard + let _telemetry = service.telemetry(); + + let service_res = { + let exit = e.into_exit(); + let service = service + .map_err(|err| error::Error::Service(err)) + .compat(); + let select = select(service, exit) + .map(|_| Ok(())) + .compat(); + runtime.block_on(select) + }; + + let _ = exit_send.send(()); + + // TODO [andre]: timeout this future #1318 + let _ = runtime.shutdown_on_idle().wait(); + + service_res +} diff --git a/node/cli/src/factory_impl.rs b/bin/node/cli/src/factory_impl.rs similarity index 71% rename from node/cli/src/factory_impl.rs rename to bin/node/cli/src/factory_impl.rs index d3b830d94..2a77bb5ca 100644 --- a/node/cli/src/factory_impl.rs +++ b/bin/node/cli/src/factory_impl.rs @@ -18,24 +18,25 @@ //! using the cli to manufacture transactions and distribute them //! to accounts. -use rand::rngs::StdRng; use rand::{Rng, SeedableRng}; +use rand::rngs::StdRng; -use codec::{Decode, Encode}; -use finality_tracker; -use inherents::InherentData; -use keyring::sr25519::Keyring; -use node_primitives::Signature; +use codec::{Encode, Decode}; +use sp_keyring::sr25519::Keyring; use node_runtime::{ - BalancesCall, Call, CheckedExtrinsic, ExistentialDeposit, MinimumPeriod, SignedExtra, UncheckedExtrinsic, + Call, CheckedExtrinsic, UncheckedExtrinsic, SignedExtra, BalancesCall, ExistentialDeposit, + MinimumPeriod }; -use primitives::{crypto::Pair, sr25519}; -use sr_primitives::{ - generic::Era, - traits::{Block as BlockT, Header as HeaderT, IdentifyAccount, SignedExtension, Verify}, +use node_primitives::Signature; +use sp_core::{sr25519, crypto::Pair}; +use sp_runtime::{ + generic::Era, traits::{Block as BlockT, Header as HeaderT, SignedExtension, Verify, IdentifyAccount} }; -use timestamp; -use transaction_factory::{modes::Mode, RuntimeAdapter}; +use node_transaction_factory::RuntimeAdapter; +use node_transaction_factory::modes::Mode; +use sp_inherents::InherentData; +use sp_timestamp; +use sp_finality_tracker; type AccountPublic = ::Signer; @@ -55,12 +56,12 @@ type Number = <::Header as HeaderT>::Number; impl FactoryState { fn build_extra(index: node_primitives::Index, phase: u64) -> node_runtime::SignedExtra { ( - system::CheckVersion::new(), - system::CheckGenesis::new(), - system::CheckEra::from(Era::mortal(256, phase)), - system::CheckNonce::from(index), - system::CheckWeight::new(), - transaction_payment::ChargeTransactionPayment::from(0), + frame_system::CheckVersion::new(), + frame_system::CheckGenesis::new(), + frame_system::CheckEra::from(Era::mortal(256, phase)), + frame_system::CheckNonce::from(index), + frame_system::CheckWeight::new(), + pallet_transaction_payment::ChargeTransactionPayment::from(0), Default::default(), ) } @@ -70,13 +71,17 @@ impl RuntimeAdapter for FactoryState { type AccountId = node_primitives::AccountId; type Balance = node_primitives::Balance; type Block = node_primitives::Block; + type Phase = sp_runtime::generic::Phase; + type Secret = sr25519::Pair; type Index = node_primitives::Index; - type Number = Number; - type Phase = sr_primitives::generic::Phase; - type Secret = sr25519::Pair; + type Number = Number; - fn new(mode: Mode, num: u64, rounds: u64) -> FactoryState { + fn new( + mode: Mode, + num: u64, + rounds: u64, + ) -> FactoryState { FactoryState { mode, num: num as u32, @@ -96,18 +101,14 @@ impl RuntimeAdapter for FactoryState { self.block_in_round } - fn mode(&self) -> &Mode { - &self.mode + fn rounds(&self) -> Self::Number { + self.rounds } fn num(&self) -> Self::Number { self.num } - fn rounds(&self) -> Self::Number { - self.rounds - } - fn round(&self) -> Self::Number { self.round } @@ -116,14 +117,18 @@ impl RuntimeAdapter for FactoryState { self.start_number } - fn set_block_in_round(&mut self, val: Self::Number) { - self.block_in_round = val; + fn mode(&self) -> &Mode { + &self.mode } fn set_block_no(&mut self, val: Self::Number) { self.block_no = val; } + fn set_block_in_round(&mut self, val: Self::Number) { + self.block_in_round = val; + } + fn set_round(&mut self, val: Self::Number) { self.round = val; } @@ -140,28 +145,24 @@ impl RuntimeAdapter for FactoryState { ) -> ::Extrinsic { let index = self.extract_index(&sender, prior_block_hash); let phase = self.extract_phase(*prior_block_hash); - sign::( - CheckedExtrinsic { - signed: Some((sender.clone(), Self::build_extra(index, phase))), - function: Call::Balances(BalancesCall::transfer( - indices::address::Address::Id(destination.clone().into()), - (*amount).into(), - )), - }, - key, - (version, genesis_hash.clone(), prior_block_hash.clone(), (), (), (), ()), - ) + sign::(CheckedExtrinsic { + signed: Some((sender.clone(), Self::build_extra(index, phase))), + function: Call::Balances( + BalancesCall::transfer( + pallet_indices::address::Address::Id(destination.clone().into()), + (*amount).into() + ) + ) + }, key, (version, genesis_hash.clone(), prior_block_hash.clone(), (), (), (), ())) } fn inherent_extrinsics(&self) -> InherentData { let timestamp = (self.block_no as u64 + 1) * MinimumPeriod::get(); let mut inherent = InherentData::new(); - inherent - .put_data(timestamp::INHERENT_IDENTIFIER, ×tamp) + inherent.put_data(sp_timestamp::INHERENT_IDENTIFIER, ×tamp) .expect("Failed putting timestamp inherent"); - inherent - .put_data(finality_tracker::INHERENT_IDENTIFIER, &self.block_no) + inherent.put_data(sp_finality_tracker::INHERENT_IDENTIFIER, &self.block_no) .expect("Failed putting finalized number inherent"); inherent } @@ -178,7 +179,23 @@ impl RuntimeAdapter for FactoryState { Keyring::Alice.pair() } - fn extract_index(&self, _account_id: &Self::AccountId, _block_hash: &::Hash) -> Self::Index { + /// Generates a random `AccountId` from `seed`. + fn gen_random_account_id(seed: &Self::Number) -> Self::AccountId { + let pair: sr25519::Pair = sr25519::Pair::from_seed(&gen_seed_bytes(*seed)); + AccountPublic::from(pair.public()).into_account() + } + + /// Generates a random `Secret` from `seed`. + fn gen_random_account_secret(seed: &Self::Number) -> Self::Secret { + let pair: sr25519::Pair = sr25519::Pair::from_seed(&gen_seed_bytes(*seed)); + pair + } + + fn extract_index( + &self, + _account_id: &Self::AccountId, + _block_hash: &::Hash, + ) -> Self::Index { // TODO get correct index for account via api. See #2587. // This currently prevents the factory from being used // without a preceding purge of the database. @@ -187,38 +204,25 @@ impl RuntimeAdapter for FactoryState { } else { match self.round() { 0 => - // if round is 0 all transactions will be done with master as a sender - { - self.block_no() as Self::Index - } + // if round is 0 all transactions will be done with master as a sender + self.block_no() as Self::Index, _ => - // if round is e.g. 1 every sender account will be new and not yet have - // any transactions done - { + // if round is e.g. 1 every sender account will be new and not yet have + // any transactions done 0 - } } } } - fn extract_phase(&self, _block_hash: ::Hash) -> Self::Phase { + fn extract_phase( + &self, + _block_hash: ::Hash + ) -> Self::Phase { // TODO get correct phase via api. See #2587. // This currently prevents the factory from being used // without a preceding purge of the database. self.block_no() as Self::Phase } - - /// Generates a random `AccountId` from `seed`. - fn gen_random_account_id(seed: &Self::Number) -> Self::AccountId { - let pair: sr25519::Pair = sr25519::Pair::from_seed(&gen_seed_bytes(*seed)); - AccountPublic::from(pair.public()).into_account() - } - - /// Generates a random `Secret` from `seed`. - fn gen_random_account_secret(seed: &Self::Number) -> Self::Secret { - let pair: sr25519::Pair = sr25519::Pair::from_seed(&gen_seed_bytes(*seed)); - pair - } } fn gen_seed_bytes(seed: u32) -> [u8; 32] { @@ -241,17 +245,15 @@ fn sign( let s = match xt.signed { Some((signed, extra)) => { let payload = (xt.function, extra.clone(), additional_signed); - let signature = payload - .using_encoded(|b| { - if b.len() > 256 { - key.sign(&runtime_io::hashing::blake2_256(b)) - } else { - key.sign(b) - } - }) - .into(); + let signature = payload.using_encoded(|b| { + if b.len() > 256 { + key.sign(&sp_io::hashing::blake2_256(b)) + } else { + key.sign(b) + } + }).into(); UncheckedExtrinsic { - signature: Some((indices::address::Address::Id(signed), signature, extra)), + signature: Some((pallet_indices::address::Address::Id(signed), signature, extra)), function: payload.0, } } diff --git a/node/cli/src/lib.rs b/bin/node/cli/src/lib.rs similarity index 74% rename from node/cli/src/lib.rs rename to bin/node/cli/src/lib.rs index cc2b995db..78660ae92 100644 --- a/node/cli/src/lib.rs +++ b/bin/node/cli/src/lib.rs @@ -15,11 +15,20 @@ // along with Substrate. If not, see . //! Substrate CLI library. +//! +//! This package has two Cargo features: +//! +//! - `cli` (default): exposes functions that parse command-line options, then start and run the +//! node as a CLI application. +//! +//! - `browser`: exposes the content of the `browser` module, which consists of exported symbols +//! that are meant to be passed through the `wasm-bindgen` utility and called from JavaScript. +//! Despite its name the produced WASM can theoretically also be used from NodeJS, although this +//! hasn't been tested. #![warn(missing_docs)] #![warn(unused_extern_crates)] -pub use darwinia_cli::error; pub mod chain_spec; #[macro_use] @@ -43,19 +52,20 @@ pub enum ChainSpec { Development, /// Whatever the current runtime is, with simple Alice/Bob auths. LocalTestnet, - /// The IceFrog testnet. - IceFrogTestnet, + /// The Flaming Fir testnet. + FlamingFir, /// Whatever the current runtime is with the "global testnet" defaults. StagingTestnet, } +/// Get a chain config from a spec setting. impl ChainSpec { pub(crate) fn load(self) -> Result { Ok(match self { + ChainSpec::FlamingFir => chain_spec::flaming_fir_config()?, ChainSpec::Development => chain_spec::development_config(), ChainSpec::LocalTestnet => chain_spec::local_testnet_config(), ChainSpec::StagingTestnet => chain_spec::staging_testnet_config(), - ChainSpec::IceFrogTestnet => chain_spec::icefrog_testnet_config()?, }) } @@ -63,8 +73,8 @@ impl ChainSpec { match s { "dev" => Some(ChainSpec::Development), "local" => Some(ChainSpec::LocalTestnet), + "" | "fir" | "flaming-fir" => Some(ChainSpec::FlamingFir), "staging" => Some(ChainSpec::StagingTestnet), - "" => Some(ChainSpec::IceFrogTestnet), _ => None, } } diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs new file mode 100644 index 000000000..140339386 --- /dev/null +++ b/bin/node/cli/src/service.rs @@ -0,0 +1,640 @@ +// Copyright 2018-2019 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 . + +#![warn(unused_extern_crates)] + +//! Service implementation. Specialized wrapper over substrate service. + +use std::sync::Arc; + +use sc_consensus_babe; +use sc_client::{self, LongestChain}; +use grandpa::{self, FinalityProofProvider as GrandpaFinalityProofProvider}; +use node_executor; +use node_primitives::Block; +use node_runtime::{GenesisConfig, RuntimeApi}; +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}; +use sc_client_db::Backend; +use sp_runtime::traits::Block as BlockT; +use node_executor::NativeExecutor; +use sc_network::NetworkService; +use sc_offchain::OffchainWorkers; +use sp_core::Blake2Hasher; + +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 +/// be able to perform chain operations. +macro_rules! new_full_start { + ($config:expr) => {{ + type RpcExtension = jsonrpc_core::IoHandler; + let mut import_setup = None; + let inherent_data_providers = sp_inherents::InherentDataProviders::new(); + + let builder = sc_service::ServiceBuilder::new_full::< + node_primitives::Block, node_runtime::RuntimeApi, node_executor::Executor + >($config)? + .with_select_chain(|_config, backend| { + Ok(sc_client::LongestChain::new(backend.clone())) + })? + .with_transaction_pool(|config, client, _fetcher| { + let pool_api = sc_transaction_pool::FullChainApi::new(client.clone()); + let pool = sc_transaction_pool::BasicPool::new(config, pool_api); + let maintainer = sc_transaction_pool::FullBasicPoolMaintainer::new(pool.pool().clone(), client); + let maintainable_pool = sp_transaction_pool::MaintainableTransactionPool::new(pool, maintainer); + Ok(maintainable_pool) + })? + .with_import_queue(|_config, client, mut select_chain, _transaction_pool| { + let select_chain = select_chain.take() + .ok_or_else(|| sc_service::Error::SelectChainRequired)?; + let (grandpa_block_import, grandpa_link) = grandpa::block_import( + client.clone(), + &*client, + select_chain, + )?; + let justification_import = grandpa_block_import.clone(); + + let (block_import, babe_link) = sc_consensus_babe::block_import( + sc_consensus_babe::Config::get_or_compute(&*client)?, + grandpa_block_import, + client.clone(), + client.clone(), + )?; + + let import_queue = sc_consensus_babe::import_queue( + babe_link.clone(), + block_import.clone(), + Some(Box::new(justification_import)), + None, + client.clone(), + client, + inherent_data_providers.clone(), + )?; + + import_setup = Some((block_import, grandpa_link, babe_link)); + Ok(import_queue) + })? + .with_rpc_extensions(|client, pool, _backend, fetcher, _remote_blockchain| -> Result { + Ok(node_rpc::create(client, pool, node_rpc::LightDeps::none(fetcher))) + })?; + + (builder, import_setup, inherent_data_providers) + }} +} + +/// Creates a full service from the configuration. +/// +/// We need to use a macro because the test suit doesn't work with an opaque service. It expects +/// concrete types instead. +macro_rules! new_full { + ($config:expr, $with_startup_data: expr) => {{ + use futures01::sync::mpsc; + use sc_network::DhtEvent; + use futures::{ + compat::Stream01CompatExt, + stream::StreamExt, + future::{FutureExt, TryFutureExt}, + }; + + let ( + is_authority, + force_authoring, + name, + disable_grandpa, + sentry_nodes, + ) = ( + $config.roles.is_authority(), + $config.force_authoring, + $config.name.clone(), + $config.disable_grandpa, + $config.network.sentry_nodes.clone(), + ); + + // sentry nodes announce themselves as authorities to the network + // and should run the same protocols authorities do, but it should + // never actively participate in any consensus process. + let participates_in_consensus = is_authority && !$config.sentry_mode; + + let (builder, mut import_setup, inherent_data_providers) = new_full_start!($config); + + // Dht event channel from the network to the authority discovery module. Use bounded channel to ensure + // back-pressure. Authority discovery is triggering one event per authority within the current authority set. + // This estimates the authority set size to be somewhere below 10 000 thereby setting the channel buffer size to + // 10 000. + let (dht_event_tx, dht_event_rx) = + mpsc::channel::(10_000); + + let service = builder.with_network_protocol(|_| Ok(crate::service::NodeProtocol::new()))? + .with_finality_proof_provider(|client, backend| + Ok(Arc::new(grandpa::FinalityProofProvider::new(backend, client)) as _) + )? + .with_dht_event_tx(dht_event_tx)? + .build()?; + + let (block_import, grandpa_link, babe_link) = import_setup.take() + .expect("Link Half and Block Import are present for Full Services or setup failed before. qed"); + + ($with_startup_data)(&block_import, &babe_link); + + if participates_in_consensus { + let proposer = sc_basic_authority::ProposerFactory { + client: service.client(), + transaction_pool: service.transaction_pool(), + }; + + let client = service.client(); + let select_chain = service.select_chain() + .ok_or(sc_service::Error::SelectChainRequired)?; + + let can_author_with = + sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()); + + let babe_config = sc_consensus_babe::BabeParams { + keystore: service.keystore(), + client, + select_chain, + env: proposer, + block_import, + sync_oracle: service.network(), + inherent_data_providers: inherent_data_providers.clone(), + force_authoring, + babe_link, + can_author_with, + }; + + let babe = sc_consensus_babe::start_babe(babe_config)?; + service.spawn_essential_task(babe); + + let future03_dht_event_rx = dht_event_rx.compat() + .map(|x| x.expect(" never returns an error; qed")) + .boxed(); + let authority_discovery = sc_authority_discovery::AuthorityDiscovery::new( + service.client(), + service.network(), + sentry_nodes, + service.keystore(), + future03_dht_event_rx, + ); + let future01_authority_discovery = authority_discovery.map(|x| Ok(x)).compat(); + + service.spawn_task(future01_authority_discovery); + } + + // if the node isn't actively participating in consensus then it doesn't + // need a keystore, regardless of which protocol we use below. + let keystore = if participates_in_consensus { + Some(service.keystore()) + } else { + None + }; + + let config = grandpa::Config { + // FIXME #1578 make this available through chainspec + gossip_duration: std::time::Duration::from_millis(333), + justification_period: 512, + name: Some(name), + observer_enabled: true, + keystore, + is_authority, + }; + + match (is_authority, disable_grandpa) { + (false, false) => { + // start the lightweight GRANDPA observer + service.spawn_task(grandpa::run_grandpa_observer( + config, + grandpa_link, + service.network(), + service.on_exit(), + service.spawn_task_handle(), + )?); + }, + (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(), + executor: service.spawn_task_handle(), + }; + // the GRANDPA voter task is considered infallible, i.e. + // if it fails we take down the service with it. + service.spawn_essential_task(grandpa::run_grandpa_voter(grandpa_config)?); + }, + (_, true) => { + grandpa::setup_disabled_grandpa( + service.client(), + &inherent_data_providers, + service.network(), + )?; + }, + } + + Ok((service, inherent_data_providers)) + }}; + ($config:expr) => {{ + new_full!($config, |_, _| {}) + }} +} + +#[allow(dead_code)] +type ConcreteBlock = node_primitives::Block; +#[allow(dead_code)] +type ConcreteClient = + Client< + Backend, + LocalCallExecutor, + NativeExecutor>, + ConcreteBlock, + node_runtime::RuntimeApi + >; +#[allow(dead_code)] +type ConcreteBackend = Backend; +#[allow(dead_code)] +type ConcreteTransactionPool = sp_transaction_pool::MaintainableTransactionPool< + sc_transaction_pool::BasicPool< + sc_transaction_pool::FullChainApi, + ConcreteBlock + >, + sc_transaction_pool::FullBasicPoolMaintainer< + ConcreteClient, + sc_transaction_pool::FullChainApi + > +>; + +/// A specialized configuration object for setting up the node.. +pub type NodeConfiguration = Configuration; + +/// Builds a new service for a full client. +pub fn new_full(config: NodeConfiguration) +-> Result< + Service< + ConcreteBlock, + ConcreteClient, + LongestChain, + NetworkStatus, + NetworkService::Hash>, + ConcreteTransactionPool, + OffchainWorkers< + ConcreteClient, + >::OffchainStorage, + ConcreteBlock, + > + >, + ServiceError, +> +{ + new_full!(config).map(|(service, _)| service) +} + +/// Builds a new service for a light client. +pub fn new_light(config: NodeConfiguration) +-> Result { + type RpcExtension = jsonrpc_core::IoHandler; + let inherent_data_providers = InherentDataProviders::new(); + + let service = ServiceBuilder::new_light::(config)? + .with_select_chain(|_config, backend| { + Ok(LongestChain::new(backend.clone())) + })? + .with_transaction_pool(|config, client, fetcher| { + let fetcher = fetcher + .ok_or_else(|| "Trying to start light transaction pool without active fetcher")?; + let pool_api = sc_transaction_pool::LightChainApi::new(client.clone(), fetcher.clone()); + let pool = sc_transaction_pool::BasicPool::new(config, pool_api); + let maintainer = sc_transaction_pool::LightBasicPoolMaintainer::with_defaults(pool.pool().clone(), client, fetcher); + let maintainable_pool = sp_transaction_pool::MaintainableTransactionPool::new(pool, maintainer); + Ok(maintainable_pool) + })? + .with_import_queue_and_fprb(|_config, client, backend, fetcher, _select_chain, _tx_pool| { + 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>( + client.clone(), + backend, + &*client, + Arc::new(fetch_checker), + )?; + + let finality_proof_import = grandpa_block_import.clone(); + let finality_proof_request_builder = + finality_proof_import.create_finality_proof_request_builder(); + + let (babe_block_import, babe_link) = sc_consensus_babe::block_import( + sc_consensus_babe::Config::get_or_compute(&*client)?, + grandpa_block_import, + client.clone(), + client.clone(), + )?; + + let import_queue = sc_consensus_babe::import_queue( + babe_link, + babe_block_import, + None, + Some(Box::new(finality_proof_import)), + client.clone(), + client, + inherent_data_providers.clone(), + )?; + + 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 _) + )? + .with_rpc_extensions(|client, pool, _backend, fetcher, remote_blockchain| -> Result { + let fetcher = fetcher + .ok_or_else(|| "Trying to start node RPC without active fetcher")?; + let remote_blockchain = remote_blockchain + .ok_or_else(|| "Trying to start node RPC without active remote blockchain")?; + + let light_deps = node_rpc::LightDeps { remote_blockchain, fetcher }; + Ok(node_rpc::create(client, pool, Some(light_deps))) + })? + .build()?; + + Ok(service) +} + +#[cfg(test)] +mod tests { + use std::sync::Arc; + use sc_consensus_babe::CompatibleDigestItem; + use sp_consensus::{ + Environment, Proposer, BlockImportParams, BlockOrigin, ForkChoiceStrategy, BlockImport, + }; + use node_primitives::{Block, DigestItem, Signature}; + use node_runtime::{BalancesCall, Call, UncheckedExtrinsic, Address}; + use node_runtime::constants::{currency::CENTS, time::SLOT_DURATION}; + use codec::{Encode, Decode}; + use sp_core::{crypto::Pair as CryptoPair, H256}; + use sp_runtime::{ + generic::{BlockId, Era, Digest, SignedPayload}, + traits::Block as BlockT, + traits::Verify, + OpaqueExtrinsic, + }; + use sp_timestamp; + use sp_finality_tracker; + use sp_keyring::AccountKeyring; + use sc_service::AbstractService; + use crate::service::{new_full, new_light}; + use sp_runtime::traits::IdentifyAccount; + + type AccountPublic = ::Signer; + + #[cfg(feature = "rhd")] + fn test_sync() { + use sp_core::ed25519::Pair; + + use {service_test, Factory}; + use sc_client::{BlockImportParams, BlockOrigin}; + + let alice: Arc = Arc::new(Keyring::Alice.into()); + let bob: Arc = Arc::new(Keyring::Bob.into()); + let validators = vec![alice.public().0.into(), bob.public().0.into()]; + let keys: Vec<&ed25519::Pair> = vec![&*alice, &*bob]; + let dummy_runtime = ::tokio::runtime::Runtime::new().unwrap(); + let block_factory = |service: &::FullService| { + let block_id = BlockId::number(service.client().info().chain.best_number); + let parent_header = service.client().header(&block_id).unwrap().unwrap(); + let consensus_net = ConsensusNetwork::new(service.network(), service.client().clone()); + let proposer_factory = consensus::ProposerFactory { + client: service.client().clone(), + transaction_pool: service.transaction_pool().clone(), + network: consensus_net, + force_delay: 0, + handle: dummy_runtime.executor(), + }; + let (proposer, _, _) = proposer_factory.init(&parent_header, &validators, alice.clone()).unwrap(); + let block = proposer.propose().expect("Error making test block"); + BlockImportParams { + origin: BlockOrigin::File, + justification: Vec::new(), + internal_justification: Vec::new(), + finalized: false, + body: Some(block.extrinsics), + header: block.header, + auxiliary: Vec::new(), + } + }; + let extrinsic_factory = + |service: &SyncService<::FullService>| + { + let payload = ( + 0, + Call::Balances(BalancesCall::transfer(RawAddress::Id(bob.public().0.into()), 69.into())), + Era::immortal(), + service.client().genesis_hash() + ); + let signature = alice.sign(&payload.encode()).into(); + let id = alice.public().0.into(); + let xt = UncheckedExtrinsic { + signature: Some((RawAddress::Id(id), signature, payload.0, Era::immortal())), + function: payload.1, + }.encode(); + let v: Vec = Decode::decode(&mut xt.as_slice()).unwrap(); + OpaqueExtrinsic(v) + }; + sc_service_test::sync( + sc_chain_spec::integration_test_config(), + |config| new_full(config), + |mut config| new_light(config), + block_factory, + extrinsic_factory, + ); + } + + #[test] + #[ignore] + fn test_sync() { + let keystore_path = tempfile::tempdir().expect("Creates keystore path"); + let keystore = sc_keystore::Store::open(keystore_path.path(), None) + .expect("Creates keystore"); + let alice = keystore.write().insert_ephemeral_from_seed::("//Alice") + .expect("Creates authority pair"); + + let chain_spec = crate::chain_spec::tests::integration_test_config_with_single_authority(); + + // For the block factory + let mut slot_num = 1u64; + + // For the extrinsics factory + let bob = Arc::new(AccountKeyring::Bob.pair()); + let charlie = Arc::new(AccountKeyring::Charlie.pair()); + let mut index = 0; + + sc_service_test::sync( + chain_spec, + |config| { + let mut setup_handles = None; + new_full!(config, | + block_import: &sc_consensus_babe::BabeBlockImport<_, _, Block, _, _, _>, + babe_link: &sc_consensus_babe::BabeLink, + | { + setup_handles = Some((block_import.clone(), babe_link.clone())); + }).map(move |(node, x)| (node, (x, setup_handles.unwrap()))) + }, + |config| new_light(config), + |service, &mut (ref inherent_data_providers, (ref mut block_import, ref babe_link))| { + let mut inherent_data = inherent_data_providers + .create_inherent_data() + .expect("Creates inherent data."); + inherent_data.replace_data(sp_finality_tracker::INHERENT_IDENTIFIER, &1u64); + + let parent_id = BlockId::number(service.client().info().chain.best_number); + let parent_header = service.client().header(&parent_id).unwrap().unwrap(); + let mut proposer_factory = sc_basic_authority::ProposerFactory { + client: service.client(), + transaction_pool: service.transaction_pool(), + }; + + let mut digest = Digest::::default(); + + // even though there's only one authority some slots might be empty, + // so we must keep trying the next slots until we can claim one. + let babe_pre_digest = loop { + inherent_data.replace_data(sp_timestamp::INHERENT_IDENTIFIER, &(slot_num * SLOT_DURATION)); + if let Some(babe_pre_digest) = sc_consensus_babe::test_helpers::claim_slot( + slot_num, + &parent_header, + &*service.client(), + &keystore, + &babe_link, + ) { + break babe_pre_digest; + } + + slot_num += 1; + }; + + digest.push(::babe_pre_digest(babe_pre_digest)); + + let mut proposer = proposer_factory.init(&parent_header).unwrap(); + let new_block = futures::executor::block_on(proposer.propose( + inherent_data, + digest, + std::time::Duration::from_secs(1), + )).expect("Error making test block"); + + let (new_header, new_body) = new_block.deconstruct(); + let pre_hash = new_header.hash(); + // sign the pre-sealed hash of the block and then + // add it to a digest item. + let to_sign = pre_hash.encode(); + let signature = alice.sign(&to_sign[..]); + let item = ::babe_seal( + signature.into(), + ); + slot_num += 1; + + let params = BlockImportParams { + origin: BlockOrigin::File, + header: new_header, + justification: None, + post_digests: vec![item], + body: Some(new_body), + finalized: false, + auxiliary: Vec::new(), + fork_choice: ForkChoiceStrategy::LongestChain, + allow_missing_state: false, + import_existing: false, + }; + + block_import.import_block(params, Default::default()) + .expect("error importing test block"); + }, + |service, _| { + let amount = 5 * CENTS; + let to: Address = AccountPublic::from(bob.public()).into_account().into(); + let from: Address = AccountPublic::from(charlie.public()).into_account().into(); + let genesis_hash = service.client().block_hash(0).unwrap().unwrap(); + let best_block_id = BlockId::number(service.client().info().chain.best_number); + let version = service.client().runtime_version_at(&best_block_id).unwrap().spec_version; + let signer = charlie.clone(); + + let function = Call::Balances(BalancesCall::transfer(to.into(), amount)); + + let check_version = frame_system::CheckVersion::new(); + let check_genesis = frame_system::CheckGenesis::new(); + let check_era = frame_system::CheckEra::from(Era::Immortal); + let check_nonce = frame_system::CheckNonce::from(index); + let check_weight = frame_system::CheckWeight::new(); + let payment = pallet_transaction_payment::ChargeTransactionPayment::from(0); + let extra = ( + check_version, + check_genesis, + check_era, + check_nonce, + check_weight, + payment, + Default::default(), + ); + let raw_payload = SignedPayload::from_raw( + function, + extra, + (version, genesis_hash, genesis_hash, (), (), (), ()) + ); + let signature = raw_payload.using_encoded(|payload| { + signer.sign(payload) + }); + let (function, extra, _) = raw_payload.deconstruct(); + let xt = UncheckedExtrinsic::new_signed( + function, + from.into(), + signature.into(), + extra, + ).encode(); + let v: Vec = Decode::decode(&mut xt.as_slice()).unwrap(); + + index += 1; + OpaqueExtrinsic(v) + }, + ); + } + + #[test] + #[ignore] + fn test_consensus() { + sc_service_test::consensus( + crate::chain_spec::tests::integration_test_config_with_two_authorities(), + |config| new_full(config), + |config| new_light(config), + vec![ + "//Alice".into(), + "//Bob".into(), + ], + ) + } +} diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml new file mode 100644 index 000000000..748d6a980 --- /dev/null +++ b/bin/node/runtime/Cargo.toml @@ -0,0 +1,125 @@ +[package] +name = "node-runtime" +version = "2.0.0" +authors = ["Parity Technologies "] +edition = "2018" +build = "build.rs" + +[dependencies] +# third-party dependencies +codec = { package = "parity-scale-codec", version = "1.0.6", default-features = false, features = ["derive"] } +integer-sqrt = { version = "0.1.2" } +safe-mix = { version = "1.0", default-features = false } +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, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-consensus-babe = { version = "0.8", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-block-builder = { git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402", default-features = false} +sp-inherents = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +node-primitives = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-offchain = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-core = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-api = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-runtime = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-staking = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-keyring = { version = "2.0.0", optional = true, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-session = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-transaction-pool = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-version = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +# frame dependencies +pallet-authority-discovery = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-authorship = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-babe = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-collective = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-contracts = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-contracts-rpc-runtime-api = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +#pallet-democracy = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +#pallet-elections-phragmen = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +frame-executive = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-finality-tracker = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-grandpa = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-im-online = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-indices = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-membership = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-nicks = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-offences = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-randomness-collective-flip = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-session = { version = "2.0.0", default-features = false, features = ["historical"], git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-staking-reward-curve = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-sudo = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +frame-support = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +frame-system = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +frame-system-rpc-runtime-api = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-timestamp = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-treasury = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-utility = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-transaction-payment = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +pallet-balances = { package = "darwinia-balances", default-features = false, path = "../../../frame/balances" } +pallet-staking = { package = "darwinia-staking", default-features = false, features = ["migrate"], path = "../../../frame/staking" } + +[build-dependencies] +wasm-builder-runner = { version = "1.0.4", package = "substrate-wasm-builder-runner", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +[dev-dependencies] +sp-io = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +[features] +default = ["std"] +std = [ + "sp-authority-discovery/std", + "pallet-authority-discovery/std", + "pallet-authorship/std", + "sp-consensus-babe/std", + "pallet-babe/std", + "pallet-balances/std", + "sp-block-builder/std", + "codec/std", + "pallet-collective/std", + "pallet-contracts-rpc-runtime-api/std", + "pallet-contracts/std", + +# "pallet-democracy/std", +# "pallet-elections-phragmen/std", + + "frame-executive/std", + "pallet-finality-tracker/std", + "pallet-grandpa/std", + "pallet-im-online/std", + "pallet-indices/std", + "sp-inherents/std", + "pallet-membership/std", + "pallet-nicks/std", + "node-primitives/std", + "sp-offchain/std", + "pallet-offences/std", + "sp-core/std", + "pallet-randomness-collective-flip/std", + "sp-std/std", + "rustc-hex", + "safe-mix/std", + "serde", + "pallet-session/std", + "sp-api/std", + "sp-runtime/std", + "sp-staking/std", + "pallet-staking/std", + "sp-keyring", + "sp-session/std", + "pallet-sudo/std", + "frame-support/std", + "frame-system-rpc-runtime-api/std", + "frame-system/std", + "pallet-timestamp/std", + "pallet-transaction-payment-rpc-runtime-api/std", + "pallet-transaction-payment/std", + "pallet-treasury/std", + "sp-transaction-pool/std", + "pallet-utility/std", + "sp-version/std", +] diff --git a/node/runtime/build.rs b/bin/node/runtime/build.rs similarity index 89% rename from node/runtime/build.rs rename to bin/node/runtime/build.rs index 99b211bbf..02acf0d0d 100644 --- a/node/runtime/build.rs +++ b/bin/node/runtime/build.rs @@ -19,9 +19,10 @@ use wasm_builder_runner::{build_current_project_with_rustflags, WasmBuilderSourc fn main() { build_current_project_with_rustflags( "wasm_binary.rs", + // TODO: update rev WasmBuilderSource::Git { - repo: "https://github.com/darwinia-network/substrate.git", - rev: "a61c0eb8", + repo: "https://github.com/paritytech/substrate.git", + rev: "c2fccb36ffacd118fc3502aa93453580a07dc402", }, // This instructs LLD to export __heap_base as a global variable, which is used by the // external memory allocator. diff --git a/node/runtime/src/constants.rs b/bin/node/runtime/src/constants.rs similarity index 63% rename from node/runtime/src/constants.rs rename to bin/node/runtime/src/constants.rs index 6cb8cd4bb..fba4c7ac7 100644 --- a/node/runtime/src/constants.rs +++ b/bin/node/runtime/src/constants.rs @@ -20,15 +20,14 @@ pub mod currency { use node_primitives::Balance; - pub const NANO: Balance = 1; - pub const MICRO: Balance = 1_000 * NANO; - pub const MILLI: Balance = 1_000 * MICRO; - pub const COIN: Balance = 1_000 * MILLI; + pub const MILLICENTS: Balance = 1_000_000_000; + pub const CENTS: Balance = 1_000 * MILLICENTS; // assume this is worth about a cent. + pub const DOLLARS: Balance = 100 * CENTS; } /// Time. pub mod time { - use node_primitives::{BlockNumber, Moment}; + use node_primitives::{Moment, BlockNumber}; /// Since BABE is probabilistic this is the average expected block time that /// we are targetting. Blocks will be produced at a minimum duration defined @@ -47,10 +46,6 @@ pub mod time { /// `SLOT_DURATION` should have the same value. /// /// - - // Develop - // pub const MILLISECS_PER_BLOCK: Moment = 1000; - // Production pub const MILLISECS_PER_BLOCK: Moment = 3000; pub const SECS_PER_BLOCK: Moment = MILLISECS_PER_BLOCK / 1000; @@ -59,10 +54,6 @@ pub mod time { // 1 in 4 blocks (on average, not counting collisions) will be primary BABE blocks. pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); - // Develop - // pub const EPOCH_DURATION_IN_BLOCKS: BlockNumber = 10; - // pub const EPOCH_DURATION_IN_BLOCKS: BlockNumber = MINUTES; - // Production pub const EPOCH_DURATION_IN_BLOCKS: BlockNumber = 10 * MINUTES; pub const EPOCH_DURATION_IN_SLOTS: u64 = { const SLOT_FILL_RATE: f64 = MILLISECS_PER_BLOCK as f64 / SLOT_DURATION as f64; @@ -74,26 +65,4 @@ pub mod time { pub const MINUTES: BlockNumber = 60 / (SECS_PER_BLOCK as BlockNumber); pub const HOURS: BlockNumber = MINUTES * 60; pub const DAYS: BlockNumber = HOURS * 24; - - pub const SESSION_DURATION: BlockNumber = EPOCH_DURATION_IN_SLOTS as _; - // Develop - // pub const SESSION_PER_ERA: sr_staking_primitives::SessionIndex = 3; - // Production - pub const SESSION_PER_ERA: sr_staking_primitives::SessionIndex = 5; -} - -// CRITICAL NOTE: The system module maintains two constants: a _maximum_ block weight and a _ratio_ -// of it yielding the portion which is accessible to normal transactions (reserving the rest for -// operational ones). `TARGET_BLOCK_FULLNESS` is entirely independent and the system module is not -// aware of if, nor should it care about it. This constant simply denotes on which ratio of the -// _maximum_ block weight we tweak the fees. It does NOT care about the type of the dispatch. -// -// For the system to be configured in a sane way, `TARGET_BLOCK_FULLNESS` should always be less than -// the ratio that `system` module uses to find normal transaction quota. -/// Fee-related. -pub mod fee { - pub use sr_primitives::Perbill; - - /// The block saturation level. Fees will be updates based on this value. - pub const TARGET_BLOCK_FULLNESS: Perbill = Perbill::from_percent(25); } diff --git a/bin/node/runtime/src/impls.rs b/bin/node/runtime/src/impls.rs new file mode 100644 index 000000000..75aba8b70 --- /dev/null +++ b/bin/node/runtime/src/impls.rs @@ -0,0 +1,364 @@ +// Copyright 2019 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 . + +//! Some configurable implementations as associated type for the substrate runtime. + +use node_primitives::Balance; +use sp_runtime::traits::{Convert, Saturating}; +use sp_runtime::{Fixed64, Perbill}; +use frame_support::{traits::{OnUnbalanced, Currency, Get}, weights::Weight}; +use crate::{Balances, System, Authorship, MaximumBlockWeight, NegativeImbalance}; + +pub struct Author; +impl OnUnbalanced for Author { + fn on_nonzero_unbalanced(amount: NegativeImbalance) { + Balances::resolve_creating(&Authorship::author(), amount); + } +} + +/// Struct that handles the conversion of Balance -> `u64`. This is used for staking's election +/// calculation. +pub struct CurrencyToVoteHandler; + +impl CurrencyToVoteHandler { + fn factor() -> Balance { (Balances::total_issuance() / u64::max_value() as Balance).max(1) } +} + +impl Convert for CurrencyToVoteHandler { + fn convert(x: Balance) -> u64 { (x / Self::factor()) as u64 } +} + +impl Convert for CurrencyToVoteHandler { + fn convert(x: u128) -> Balance { x * Self::factor() } +} + +/// Convert from weight to balance via a simple coefficient multiplication +/// The associated type C encapsulates a constant in units of balance per weight +pub struct LinearWeightToFee(sp_std::marker::PhantomData); + +impl> Convert for LinearWeightToFee { + fn convert(w: Weight) -> Balance { + // substrate-node a weight of 10_000 (smallest non-zero weight) to be mapped to 10^7 units of + // fees, hence: + let coefficient = C::get(); + Balance::from(w).saturating_mul(coefficient) + } +} + +/// Update the given multiplier based on the following formula +/// +/// diff = (previous_block_weight - target_weight) +/// v = 0.00004 +/// next_weight = weight * (1 + (v . diff) + (v . diff)^2 / 2) +/// +/// Where `target_weight` must be given as the `Get` implementation of the `T` generic type. +/// https://research.web3.foundation/en/latest/polkadot/Token%20Economics/#relay-chain-transaction-fees +pub struct TargetedFeeAdjustment(sp_std::marker::PhantomData); + +impl> Convert for TargetedFeeAdjustment { + fn convert(multiplier: Fixed64) -> Fixed64 { + let block_weight = System::all_extrinsics_weight(); + let max_weight = MaximumBlockWeight::get(); + let target_weight = (T::get() * max_weight) as u128; + let block_weight = block_weight as u128; + + // determines if the first_term is positive + let positive = block_weight >= target_weight; + let diff_abs = block_weight.max(target_weight) - block_weight.min(target_weight); + // diff is within u32, safe. + let diff = Fixed64::from_rational(diff_abs as i64, max_weight as u64); + let diff_squared = diff.saturating_mul(diff); + + // 0.00004 = 4/100_000 = 40_000/10^9 + let v = Fixed64::from_rational(4, 100_000); + // 0.00004^2 = 16/10^10 ~= 2/10^9. Taking the future /2 into account, then it is just 1 + // parts from a billionth. + let v_squared_2 = Fixed64::from_rational(1, 1_000_000_000); + + let first_term = v.saturating_mul(diff); + // It is very unlikely that this will exist (in our poor perbill estimate) but we are giving + // it a shot. + let second_term = v_squared_2.saturating_mul(diff_squared); + + if positive { + // Note: this is merely bounded by how big the multiplier and the inner value can go, + // not by any economical reasoning. + let excess = first_term.saturating_add(second_term); + multiplier.saturating_add(excess) + } else { + // Proof: first_term > second_term. Safe subtraction. + let negative = first_term - second_term; + multiplier.saturating_sub(negative) + // despite the fact that apply_to saturates weight (final fee cannot go below 0) + // it is crucially important to stop here and don't further reduce the weight fee + // multiplier. While at -1, it means that the network is so un-congested that all + // transactions have no weight fee. We stop here and only increase if the network + // became more busy. + .max(Fixed64::from_rational(-1, 1)) + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use sp_runtime::assert_eq_error_rate; + use crate::{MaximumBlockWeight, AvailableBlockRatio, Runtime}; + use crate::{constants::currency::*, TransactionPayment, TargetBlockFullness}; + use frame_support::weights::Weight; + + fn max() -> Weight { + MaximumBlockWeight::get() + } + + fn target() -> Weight { + TargetBlockFullness::get() * max() + } + + // poc reference implementation. + fn fee_multiplier_update(block_weight: Weight, previous: Fixed64) -> Fixed64 { + let block_weight = block_weight as f32; + let v: f32 = 0.00004; + + // maximum tx weight + let m = max() as f32; + // Ideal saturation in terms of weight + let ss = target() as f32; + // Current saturation in terms of weight + let s = block_weight; + + let fm = v * (s/m - ss/m) + v.powi(2) * (s/m - ss/m).powi(2) / 2.0; + let addition_fm = Fixed64::from_parts((fm * 1_000_000_000_f32).round() as i64); + previous.saturating_add(addition_fm) + } + + fn feemul(parts: i64) -> Fixed64 { + Fixed64::from_parts(parts) + } + + fn run_with_system_weight(w: Weight, assertions: F) where F: Fn() -> () { + let mut t: sp_io::TestExternalities = + frame_system::GenesisConfig::default().build_storage::().unwrap().into(); + t.execute_with(|| { + System::set_block_limits(w, 0); + assertions() + }); + } + + #[test] + fn fee_multiplier_update_poc_works() { + let fm = Fixed64::from_rational(0, 1); + let test_set = vec![ + (0, fm.clone()), + (100, fm.clone()), + (target(), fm.clone()), + (max() / 2, fm.clone()), + (max(), fm.clone()), + ]; + test_set.into_iter().for_each(|(w, fm)| { + run_with_system_weight(w, || { + assert_eq_error_rate!( + fee_multiplier_update(w, fm).into_inner(), + TargetedFeeAdjustment::::convert(fm).into_inner(), + 5, + ); + }) + }) + } + + #[test] + fn empty_chain_simulation() { + // just a few txs per_block. + let block_weight = 0; + run_with_system_weight(block_weight, || { + let mut fm = Fixed64::default(); + let mut iterations: u64 = 0; + loop { + let next = TargetedFeeAdjustment::::convert(fm); + fm = next; + if fm == Fixed64::from_rational(-1, 1) { break; } + iterations += 1; + } + println!("iteration {}, new fm = {:?}. Weight fee is now zero", iterations, fm); + assert!(iterations > 50_000, "This assertion is just a warning; Don't panic. \ + Current substrate/polkadot node are configured with a _slow adjusting fee_ \ + mechanism. Hence, it is really unlikely that fees collapse to zero even on an \ + empty chain in less than at least of couple of thousands of empty blocks. But this \ + simulation indicates that fees collapsed to zero after {} almost-empty blocks. \ + Check it", + iterations, + ); + }) + } + + #[test] + #[ignore] + fn congested_chain_simulation() { + // `cargo test congested_chain_simulation -- --nocapture` to get some insight. + + // almost full. The entire quota of normal transactions is taken. + let block_weight = AvailableBlockRatio::get() * max() - 100; + + // Default substrate minimum. + let tx_weight = 10_000; + + run_with_system_weight(block_weight, || { + // initial value configured on module + let mut fm = Fixed64::default(); + assert_eq!(fm, TransactionPayment::next_fee_multiplier()); + + let mut iterations: u64 = 0; + loop { + let next = TargetedFeeAdjustment::::convert(fm); + // if no change, panic. This should never happen in this case. + if fm == next { panic!("The fee should ever increase"); } + fm = next; + iterations += 1; + let fee = ::WeightToFee::convert(tx_weight); + let adjusted_fee = fm.saturated_multiply_accumulate(fee); + println!( + "iteration {}, new fm = {:?}. Fee at this point is: {} units / {} millicents, \ + {} cents, {} dollars", + iterations, + fm, + adjusted_fee, + adjusted_fee / MILLICENTS, + adjusted_fee / CENTS, + adjusted_fee / DOLLARS, + ); + } + }); + } + + #[test] + fn stateless_weight_mul() { + run_with_system_weight(target() / 4, || { + // Light block. Fee is reduced a little. + assert_eq!( + TargetedFeeAdjustment::::convert(Fixed64::default()), + feemul(-7500), + ); + }); + run_with_system_weight(target() / 2, || { + // a bit more. Fee is decreased less, meaning that the fee increases as the block grows. + assert_eq!( + TargetedFeeAdjustment::::convert(Fixed64::default()), + feemul(-5000), + ); + + }); + run_with_system_weight(target(), || { + // ideal. Original fee. No changes. + assert_eq!( + TargetedFeeAdjustment::::convert(Fixed64::default()), + feemul(0), + ); + }); + run_with_system_weight(target() * 2, || { + // // More than ideal. Fee is increased. + assert_eq!( + TargetedFeeAdjustment::::convert(Fixed64::default()), + feemul(10000), + ); + }); + } + + #[test] + fn stateful_weight_mul_grow_to_infinity() { + run_with_system_weight(target() * 2, || { + assert_eq!( + TargetedFeeAdjustment::::convert(Fixed64::default()), + feemul(10000) + ); + assert_eq!( + TargetedFeeAdjustment::::convert(feemul(10000)), + feemul(20000) + ); + assert_eq!( + TargetedFeeAdjustment::::convert(feemul(20000)), + feemul(30000) + ); + // ... + assert_eq!( + TargetedFeeAdjustment::::convert(feemul(1_000_000_000)), + feemul(1_000_000_000 + 10000) + ); + }); + } + + #[test] + fn stateful_weight_mil_collapse_to_minus_one() { + run_with_system_weight(0, || { + assert_eq!( + TargetedFeeAdjustment::::convert(Fixed64::default()), + feemul(-10000) + ); + assert_eq!( + TargetedFeeAdjustment::::convert(feemul(-10000)), + feemul(-20000) + ); + assert_eq!( + TargetedFeeAdjustment::::convert(feemul(-20000)), + feemul(-30000) + ); + // ... + assert_eq!( + TargetedFeeAdjustment::::convert(feemul(1_000_000_000 * -1)), + feemul(-1_000_000_000) + ); + }) + } + + #[test] + fn weight_to_fee_should_not_overflow_on_large_weights() { + let kb = 1024 as Weight; + let mb = kb * kb; + let max_fm = Fixed64::from_natural(i64::max_value()); + + // check that for all values it can compute, correctly. + vec![ + 0, + 1, + 10, + 1000, + kb, + 10 * kb, + 100 * kb, + mb, + 10 * mb, + Weight::max_value() / 2, + Weight::max_value(), + ].into_iter().for_each(|i| { + run_with_system_weight(i, || { + let next = TargetedFeeAdjustment::::convert(Fixed64::default()); + let truth = fee_multiplier_update(i, Fixed64::default()); + assert_eq_error_rate!(truth.into_inner(), next.into_inner(), 5); + }); + }); + + // Some values that are all above the target and will cause an increase. + let t = target(); + vec![t + 100, t * 2, t * 4] + .into_iter() + .for_each(|i| { + run_with_system_weight(i, || { + let fm = TargetedFeeAdjustment::::convert(max_fm); + // won't grow. The convert saturates everything. + assert_eq!(fm, max_fm); + }) + }); + } +} diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs new file mode 100644 index 000000000..e56180ce9 --- /dev/null +++ b/bin/node/runtime/src/lib.rs @@ -0,0 +1,786 @@ +// Copyright 2018-2019 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 . + +//! The Substrate runtime. This can be compiled with ``#[no_std]`, ready for Wasm. + +#![cfg_attr(not(feature = "std"), no_std)] +// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. +#![recursion_limit = "256"] + +use frame_support::{ + construct_runtime, parameter_types, + traits::{Currency, Randomness, SplitTwoWays}, + weights::Weight, +}; +use frame_system::offchain::TransactionSubmitter; +use node_primitives::{AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, Moment, Signature}; +use pallet_contracts_rpc_runtime_api::ContractExecResult; +use pallet_grandpa::fg_primitives; +use pallet_grandpa::AuthorityList as GrandpaAuthorityList; +use pallet_im_online::sr25519::AuthorityId as ImOnlineId; +use pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo; +use sp_api::impl_runtime_apis; +use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; +use sp_core::u32_trait::{_1, _2, _3, _4}; +use sp_core::OpaqueMetadata; +use sp_inherents::{CheckInherentsResult, InherentData}; +use sp_runtime::curve::PiecewiseLinear; +use sp_runtime::traits::{ + self, BlakeTwo256, Block as BlockT, NumberFor, OpaqueKeys, SaturatedConversion, StaticLookup, +}; +use sp_runtime::transaction_validity::TransactionValidity; +use sp_runtime::{create_runtime_str, generic, impl_opaque_keys, ApplyExtrinsicResult, Perbill, Permill}; +use sp_std::prelude::*; +#[cfg(any(feature = "std", test))] +use sp_version::NativeVersion; +use sp_version::RuntimeVersion; + +pub use frame_support::StorageValue; +pub use pallet_balances::Call as BalancesCall; +pub use pallet_contracts::Gas; +pub use pallet_staking::StakerStatus; +pub use pallet_timestamp::Call as TimestampCall; +#[cfg(any(feature = "std", test))] +pub use sp_runtime::BuildStorage; + +/// Implementations of some helper traits passed into runtime modules as associated types. +pub mod impls; +use impls::{Author, CurrencyToVoteHandler, LinearWeightToFee, TargetedFeeAdjustment}; + +/// Constant values used within the runtime. +pub mod constants; +use constants::{currency::*, time::*}; + +// Make the WASM binary available. +#[cfg(feature = "std")] +include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); + +/// Runtime version. +pub const VERSION: RuntimeVersion = RuntimeVersion { + spec_name: create_runtime_str!("node"), + impl_name: create_runtime_str!("substrate-node"), + authoring_version: 10, + // Per convention: if the runtime behavior changes, increment spec_version + // and set impl_version to equal spec_version. If only runtime + // implementation changes and behavior does not, then leave spec_version as + // is and increment impl_version. + spec_version: 198, + impl_version: 198, + apis: RUNTIME_API_VERSIONS, +}; + +/// Native version. +#[cfg(any(feature = "std", test))] +pub fn native_version() -> NativeVersion { + NativeVersion { + runtime_version: VERSION, + can_author_with: Default::default(), + } +} + +type NegativeImbalance = >::NegativeImbalance; + +pub type DealWithFees = SplitTwoWays< + Balance, + NegativeImbalance, + _4, + Treasury, // 4 parts (80%) goes to the treasury. + _1, + Author, // 1 part (20%) goes to the block author. +>; + +parameter_types! { + pub const BlockHashCount: BlockNumber = 250; + pub const MaximumBlockWeight: Weight = 1_000_000_000; + pub const MaximumBlockLength: u32 = 5 * 1024 * 1024; + pub const Version: RuntimeVersion = VERSION; + pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75); +} + +impl frame_system::Trait for Runtime { + type Origin = Origin; + type Call = Call; + type Index = Index; + type BlockNumber = BlockNumber; + type Hash = Hash; + type Hashing = BlakeTwo256; + type AccountId = AccountId; + type Lookup = Indices; + type Header = generic::Header; + type Event = Event; + type BlockHashCount = BlockHashCount; + type MaximumBlockWeight = MaximumBlockWeight; + type MaximumBlockLength = MaximumBlockLength; + type AvailableBlockRatio = AvailableBlockRatio; + type Version = Version; + type ModuleToIndex = ModuleToIndex; +} + +parameter_types! { + // One storage item; value is size 4+4+16+32 bytes = 56 bytes. + pub const MultisigDepositBase: Balance = 30 * CENTS; + // Additional storage item size of 32 bytes. + pub const MultisigDepositFactor: Balance = 5 * CENTS; + pub const MaxSignatories: u16 = 100; +} + +impl pallet_utility::Trait for Runtime { + type Event = Event; + type Call = Call; + type Currency = Balances; + type MultisigDepositBase = MultisigDepositBase; + type MultisigDepositFactor = MultisigDepositFactor; + type MaxSignatories = MaxSignatories; +} + +parameter_types! { + pub const EpochDuration: u64 = EPOCH_DURATION_IN_SLOTS; + pub const ExpectedBlockTime: Moment = MILLISECS_PER_BLOCK; +} + +impl pallet_babe::Trait for Runtime { + type EpochDuration = EpochDuration; + type ExpectedBlockTime = ExpectedBlockTime; + type EpochChangeTrigger = pallet_babe::ExternalTrigger; +} + +impl pallet_indices::Trait for Runtime { + type AccountIndex = AccountIndex; + type IsDeadAccount = Balances; + type ResolveHint = pallet_indices::SimpleResolveHint; + type Event = Event; +} + +parameter_types! { + pub const ExistentialDeposit: Balance = 1 * DOLLARS; + pub const TransferFee: Balance = 1 * CENTS; + pub const CreationFee: Balance = 1 * CENTS; +} + +impl pallet_balances::Trait for Runtime { + type Balance = Balance; + type OnFreeBalanceZero = ((Staking, Contracts), Session); + type OnNewAccount = Indices; + type TransferPayment = (); + type DustRemoval = (); + type Event = Event; + type ExistentialDeposit = ExistentialDeposit; + type TransferFee = TransferFee; + type CreationFee = CreationFee; +} + +parameter_types! { + pub const TransactionBaseFee: Balance = 1 * CENTS; + pub const TransactionByteFee: Balance = 10 * MILLICENTS; + // setting this to zero will disable the weight fee. + pub const WeightFeeCoefficient: Balance = 1_000; + // for a sane configuration, this should always be less than `AvailableBlockRatio`. + pub const TargetBlockFullness: Perbill = Perbill::from_percent(25); +} + +impl pallet_transaction_payment::Trait for Runtime { + type Currency = Balances; + type OnTransactionPayment = DealWithFees; + type TransactionBaseFee = TransactionBaseFee; + type TransactionByteFee = TransactionByteFee; + type WeightToFee = LinearWeightToFee; + type FeeMultiplierUpdate = TargetedFeeAdjustment; +} + +parameter_types! { + pub const MinimumPeriod: Moment = SLOT_DURATION / 2; +} +impl pallet_timestamp::Trait for Runtime { + type Moment = Moment; + type OnTimestampSet = Babe; + type MinimumPeriod = MinimumPeriod; +} + +parameter_types! { + pub const UncleGenerations: BlockNumber = 5; +} + +impl pallet_authorship::Trait for Runtime { + type FindAuthor = pallet_session::FindAccountFromAuthorIndex; + type UncleGenerations = UncleGenerations; + type FilterUncle = (); + type EventHandler = (Staking, ImOnline); +} + +impl_opaque_keys! { + pub struct SessionKeys { + pub grandpa: Grandpa, + pub babe: Babe, + pub im_online: ImOnline, + pub authority_discovery: AuthorityDiscovery, + } +} + +parameter_types! { + pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(17); +} + +impl pallet_session::Trait for Runtime { + type Event = Event; + type ValidatorId = ::AccountId; + type ValidatorIdOf = pallet_staking::StashOf; + type ShouldEndSession = Babe; + type OnSessionEnding = Staking; + type SessionHandler = ::KeyTypeIdProviders; + type Keys = SessionKeys; + type DisabledValidatorsThreshold = DisabledValidatorsThreshold; + type SelectInitialValidators = Staking; +} + +impl pallet_session::historical::Trait for Runtime { + type FullIdentification = pallet_staking::Exposure; + type FullIdentificationOf = pallet_staking::ExposureOf; +} + +pallet_staking_reward_curve::build! { + const REWARD_CURVE: PiecewiseLinear<'static> = curve!( + min_inflation: 0_025_000, + max_inflation: 0_100_000, + ideal_stake: 0_500_000, + falloff: 0_050_000, + max_piece_count: 40, + test_precision: 0_005_000, + ); +} + +parameter_types! { + pub const SessionsPerEra: sp_staking::SessionIndex = 6; + pub const BondingDuration: pallet_staking::EraIndex = 24 * 28; + pub const SlashDeferDuration: pallet_staking::EraIndex = 24 * 7; // 1/4 the bonding duration. +} + +impl pallet_staking::Trait for Runtime { + type Currency = Balances; + type Time = Timestamp; + type CurrencyToVote = CurrencyToVoteHandler; + type RewardRemainder = Treasury; + type Event = Event; + type Slash = Treasury; // send the slashed funds to the treasury. + type Reward = (); // rewards are minted from the void + type SessionsPerEra = SessionsPerEra; + type BondingDuration = BondingDuration; + type SlashDeferDuration = SlashDeferDuration; + /// A super-majority of the council can cancel the slash. + type SlashCancelOrigin = pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>; + type SessionInterface = Self; +} + +//parameter_types! { +// pub const LaunchPeriod: BlockNumber = 28 * 24 * 60 * MINUTES; +// pub const VotingPeriod: BlockNumber = 28 * 24 * 60 * MINUTES; +// pub const EmergencyVotingPeriod: BlockNumber = 3 * 24 * 60 * MINUTES; +// pub const MinimumDeposit: Balance = 100 * DOLLARS; +// pub const EnactmentPeriod: BlockNumber = 30 * 24 * 60 * MINUTES; +// pub const CooloffPeriod: BlockNumber = 28 * 24 * 60 * MINUTES; +// // One cent: $10,000 / MB +// pub const PreimageByteDeposit: Balance = 1 * CENTS; +//} +// +//impl pallet_democracy::Trait for Runtime { +// type Proposal = Call; +// type Event = Event; +// type Currency = Balances; +// type EnactmentPeriod = EnactmentPeriod; +// type LaunchPeriod = LaunchPeriod; +// type VotingPeriod = VotingPeriod; +// type MinimumDeposit = MinimumDeposit; +// /// A straight majority of the council can decide what their next motion is. +// type ExternalOrigin = pallet_collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective>; +// /// A super-majority can have the next scheduled referendum be a straight majority-carries vote. +// type ExternalMajorityOrigin = pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>; +// /// A unanimous council can have the next scheduled referendum be a straight default-carries +// /// (NTB) vote. +// type ExternalDefaultOrigin = pallet_collective::EnsureProportionAtLeast<_1, _1, AccountId, CouncilCollective>; +// /// Two thirds of the technical committee can have an ExternalMajority/ExternalDefault vote +// /// be tabled immediately and with a shorter voting/enactment period. +// type FastTrackOrigin = pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, TechnicalCollective>; +// type EmergencyVotingPeriod = EmergencyVotingPeriod; +// // To cancel a proposal which has been passed, 2/3 of the council must agree to it. +// type CancellationOrigin = pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>; +// // Any single technical committee member may veto a coming council proposal, however they can +// // only do it once and it lasts only for the cooloff period. +// type VetoOrigin = pallet_collective::EnsureMember; +// type CooloffPeriod = CooloffPeriod; +// type PreimageByteDeposit = PreimageByteDeposit; +// type Slash = Treasury; +//} + +type CouncilCollective = pallet_collective::Instance1; +impl pallet_collective::Trait for Runtime { + type Origin = Origin; + type Proposal = Call; + type Event = Event; +} + +//parameter_types! { +// pub const CandidacyBond: Balance = 10 * DOLLARS; +// pub const VotingBond: Balance = 1 * DOLLARS; +// pub const TermDuration: BlockNumber = 7 * DAYS; +// pub const DesiredMembers: u32 = 13; +// pub const DesiredRunnersUp: u32 = 7; +//} +// +//impl pallet_elections_phragmen::Trait for Runtime { +// type Event = Event; +// type Currency = Balances; +// type ChangeMembers = Council; +// type CurrencyToVote = CurrencyToVoteHandler; +// type CandidacyBond = CandidacyBond; +// type VotingBond = VotingBond; +// type LoserCandidate = (); +// type BadReport = (); +// type KickedMember = (); +// type DesiredMembers = DesiredMembers; +// type DesiredRunnersUp = DesiredRunnersUp; +// type TermDuration = TermDuration; +//} + +type TechnicalCollective = pallet_collective::Instance2; +impl pallet_collective::Trait for Runtime { + type Origin = Origin; + type Proposal = Call; + type Event = Event; +} + +impl pallet_membership::Trait for Runtime { + type Event = Event; + type AddOrigin = pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; + 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 MembershipInitialized = TechnicalCommittee; + type MembershipChanged = TechnicalCommittee; +} + +parameter_types! { + pub const ProposalBond: Permill = Permill::from_percent(5); + pub const ProposalBondMinimum: Balance = 1 * DOLLARS; + pub const SpendPeriod: BlockNumber = 1 * DAYS; + pub const Burn: Permill = Permill::from_percent(50); +} + +impl pallet_treasury::Trait for Runtime { + type Currency = Balances; + type ApproveOrigin = pallet_collective::EnsureMembers<_4, AccountId, CouncilCollective>; + type RejectOrigin = pallet_collective::EnsureMembers<_2, AccountId, CouncilCollective>; + type Event = Event; + type ProposalRejection = (); + type ProposalBond = ProposalBond; + type ProposalBondMinimum = ProposalBondMinimum; + type SpendPeriod = SpendPeriod; + type Burn = Burn; +} + +parameter_types! { + pub const ContractTransferFee: Balance = 1 * CENTS; + pub const ContractCreationFee: Balance = 1 * CENTS; + pub const ContractTransactionBaseFee: Balance = 1 * CENTS; + pub const ContractTransactionByteFee: Balance = 10 * MILLICENTS; + pub const ContractFee: Balance = 1 * CENTS; + pub const TombstoneDeposit: Balance = 1 * DOLLARS; + pub const RentByteFee: Balance = 1 * DOLLARS; + pub const RentDepositOffset: Balance = 1000 * DOLLARS; + pub const SurchargeReward: Balance = 150 * DOLLARS; +} + +impl pallet_contracts::Trait for Runtime { + type Currency = Balances; + type Time = Timestamp; + type Randomness = RandomnessCollectiveFlip; + type Call = Call; + type Event = Event; + type DetermineContractAddress = pallet_contracts::SimpleAddressDeterminator; + type ComputeDispatchFee = pallet_contracts::DefaultDispatchFeeComputor; + type TrieIdGenerator = pallet_contracts::TrieIdFromParentCounter; + type GasPayment = (); + type RentPayment = (); + type SignedClaimHandicap = pallet_contracts::DefaultSignedClaimHandicap; + type TombstoneDeposit = TombstoneDeposit; + type StorageSizeOffset = pallet_contracts::DefaultStorageSizeOffset; + type RentByteFee = RentByteFee; + type RentDepositOffset = RentDepositOffset; + type SurchargeReward = SurchargeReward; + type TransferFee = ContractTransferFee; + type CreationFee = ContractCreationFee; + type TransactionBaseFee = ContractTransactionBaseFee; + type TransactionByteFee = ContractTransactionByteFee; + type ContractFee = ContractFee; + type CallBaseFee = pallet_contracts::DefaultCallBaseFee; + type InstantiateBaseFee = pallet_contracts::DefaultInstantiateBaseFee; + type MaxDepth = pallet_contracts::DefaultMaxDepth; + type MaxValueSize = pallet_contracts::DefaultMaxValueSize; + type BlockGasLimit = pallet_contracts::DefaultBlockGasLimit; +} + +impl pallet_sudo::Trait for Runtime { + type Event = Event; + type Proposal = Call; +} + +type SubmitTransaction = TransactionSubmitter; + +parameter_types! { + pub const SessionDuration: BlockNumber = EPOCH_DURATION_IN_SLOTS as _; +} + +impl pallet_im_online::Trait for Runtime { + type AuthorityId = ImOnlineId; + type Event = Event; + type Call = Call; + type SubmitTransaction = SubmitTransaction; + type SessionDuration = SessionDuration; + type ReportUnresponsiveness = Offences; +} + +impl pallet_offences::Trait for Runtime { + type Event = Event; + type IdentificationTuple = pallet_session::historical::IdentificationTuple; + type OnOffenceHandler = Staking; +} + +impl pallet_authority_discovery::Trait for Runtime {} + +impl pallet_grandpa::Trait for Runtime { + type Event = Event; +} + +parameter_types! { + pub const WindowSize: BlockNumber = 101; + pub const ReportLatency: BlockNumber = 1000; +} + +impl pallet_finality_tracker::Trait for Runtime { + type OnFinalizationStalled = Grandpa; + type WindowSize = WindowSize; + type ReportLatency = ReportLatency; +} + +parameter_types! { + pub const ReservationFee: Balance = 1 * DOLLARS; + pub const MinLength: usize = 3; + pub const MaxLength: usize = 16; +} + +impl pallet_nicks::Trait for Runtime { + type Event = Event; + type Currency = Balances; + type ReservationFee = ReservationFee; + type Slashed = Treasury; + type ForceOrigin = pallet_collective::EnsureMember; + type MinLength = MinLength; + type MaxLength = MaxLength; +} + +impl frame_system::offchain::CreateTransaction for Runtime { + type Public = ::Signer; + type Signature = Signature; + + fn create_transaction>( + call: Call, + public: Self::Public, + account: AccountId, + index: Index, + ) -> Option<(Call, ::SignaturePayload)> { + let period = 1 << 8; + let current_block = System::block_number().saturated_into::(); + let tip = 0; + let extra: SignedExtra = ( + frame_system::CheckVersion::::new(), + frame_system::CheckGenesis::::new(), + frame_system::CheckEra::::from(generic::Era::mortal(period, current_block)), + frame_system::CheckNonce::::from(index), + frame_system::CheckWeight::::new(), + pallet_transaction_payment::ChargeTransactionPayment::::from(tip), + Default::default(), + ); + let raw_payload = SignedPayload::new(call, extra).ok()?; + let signature = TSigner::sign(public, &raw_payload)?; + let address = Indices::unlookup(account); + let (call, extra, _) = raw_payload.deconstruct(); + Some((call, (address, signature, extra))) + } +} + +construct_runtime!( + pub enum Runtime where + Block = Block, + NodeBlock = node_primitives::Block, + UncheckedExtrinsic = UncheckedExtrinsic + { + System: frame_system::{Module, Call, Storage, Config, Event}, + Utility: pallet_utility::{Module, Call, Storage, Event, Error}, + Babe: pallet_babe::{Module, Call, Storage, Config, Inherent(Timestamp)}, + Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent}, + Authorship: pallet_authorship::{Module, Call, Storage, Inherent}, + Indices: pallet_indices, + Balances: pallet_balances::{default, Error}, + TransactionPayment: pallet_transaction_payment::{Module, Storage}, + Staking: pallet_staking::{default, OfflineWorker}, + Session: pallet_session::{Module, Call, Storage, Event, Config}, +// Democracy: pallet_democracy::{Module, Call, Storage, Config, Event}, + Council: pallet_collective::::{Module, Call, Storage, Origin, Event, Config}, + TechnicalCommittee: pallet_collective::::{Module, Call, Storage, Origin, Event, Config}, +// Elections: pallet_elections_phragmen::{Module, Call, Storage, Event}, + TechnicalMembership: pallet_membership::::{Module, Call, Storage, Event, Config}, + FinalityTracker: pallet_finality_tracker::{Module, Call, Inherent}, + Grandpa: pallet_grandpa::{Module, Call, Storage, Config, Event}, + Treasury: pallet_treasury::{Module, Call, Storage, Config, Event}, + Contracts: pallet_contracts, + Sudo: pallet_sudo, + ImOnline: pallet_im_online::{Module, Call, Storage, Event, ValidateUnsigned, Config}, + AuthorityDiscovery: pallet_authority_discovery::{Module, Call, Config}, + Offences: pallet_offences::{Module, Call, Storage, Event}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage}, + Nicks: pallet_nicks::{Module, Call, Storage, Event}, + } +); + +/// The address format for describing accounts. +pub type Address = ::Source; +/// Block header type as expected by this runtime. +pub type Header = generic::Header; +/// Block type as expected by this runtime. +pub type Block = generic::Block; +/// A Block signed with a Justification +pub type SignedBlock = generic::SignedBlock; +/// BlockId type as expected by this runtime. +pub type BlockId = generic::BlockId; +/// The SignedExtension to the basic transaction logic. +pub type SignedExtra = ( + frame_system::CheckVersion, + frame_system::CheckGenesis, + frame_system::CheckEra, + frame_system::CheckNonce, + frame_system::CheckWeight, + pallet_transaction_payment::ChargeTransactionPayment, + pallet_contracts::CheckBlockGasLimit, +); +/// Unchecked extrinsic type as expected by this runtime. +pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; +/// The payload being signed in transactions. +pub type SignedPayload = generic::SignedPayload; +/// Extrinsic type that has already been checked. +pub type CheckedExtrinsic = generic::CheckedExtrinsic; +/// Executive: handles dispatch to the various modules. +pub type Executive = + frame_executive::Executive, Runtime, AllModules>; + +impl_runtime_apis! { + impl sp_api::Core for Runtime { + fn version() -> RuntimeVersion { + VERSION + } + + fn execute_block(block: Block) { + Executive::execute_block(block) + } + + fn initialize_block(header: &::Header) { + Executive::initialize_block(header) + } + } + + impl sp_api::Metadata for Runtime { + fn metadata() -> OpaqueMetadata { + Runtime::metadata().into() + } + } + + impl sp_block_builder::BlockBuilder for Runtime { + fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { + Executive::apply_extrinsic(extrinsic) + } + + fn finalize_block() -> ::Header { + Executive::finalize_block() + } + + fn inherent_extrinsics(data: InherentData) -> Vec<::Extrinsic> { + data.create_extrinsics() + } + + fn check_inherents(block: Block, data: InherentData) -> CheckInherentsResult { + data.check_extrinsics(&block) + } + + fn random_seed() -> ::Hash { + RandomnessCollectiveFlip::random_seed() + } + } + + impl sp_transaction_pool::runtime_api::TaggedTransactionQueue for Runtime { + fn validate_transaction(tx: ::Extrinsic) -> TransactionValidity { + Executive::validate_transaction(tx) + } + } + + impl sp_offchain::OffchainWorkerApi for Runtime { + fn offchain_worker(number: NumberFor) { + Executive::offchain_worker(number) + } + } + + impl fg_primitives::GrandpaApi for Runtime { + fn grandpa_authorities() -> GrandpaAuthorityList { + Grandpa::grandpa_authorities() + } + } + + impl sp_consensus_babe::BabeApi for Runtime { + fn configuration() -> sp_consensus_babe::BabeConfiguration { + // The choice of `c` parameter (where `1 - c` represents the + // probability of a slot being empty), is done in accordance to the + // slot duration and expected target block time, for safely + // resisting network delays of maximum two seconds. + // + sp_consensus_babe::BabeConfiguration { + slot_duration: Babe::slot_duration(), + epoch_length: EpochDuration::get(), + c: PRIMARY_PROBABILITY, + genesis_authorities: Babe::authorities(), + randomness: Babe::randomness(), + secondary_slots: true, + } + } + } + + impl sp_authority_discovery::AuthorityDiscoveryApi for Runtime { + fn authorities() -> Vec { + AuthorityDiscovery::authorities() + } + } + + impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { + fn account_nonce(account: AccountId) -> Index { + System::account_nonce(account) + } + } + + impl pallet_contracts_rpc_runtime_api::ContractsApi for Runtime { + fn call( + origin: AccountId, + dest: AccountId, + value: Balance, + gas_limit: u64, + input_data: Vec, + ) -> ContractExecResult { + let exec_result = Contracts::bare_call( + origin, + dest.into(), + value, + gas_limit, + input_data, + ); + match exec_result { + Ok(v) => ContractExecResult::Success { + status: v.status, + data: v.data, + }, + Err(_) => ContractExecResult::Error, + } + } + + fn get_storage( + address: AccountId, + key: [u8; 32], + ) -> pallet_contracts_rpc_runtime_api::GetStorageResult { + Contracts::get_storage(address, key).map_err(|rpc_err| { + use pallet_contracts::GetStorageError; + use pallet_contracts_rpc_runtime_api::{GetStorageError as RpcGetStorageError}; + /// Map the contract error into the RPC layer error. + match rpc_err { + GetStorageError::ContractDoesntExist => RpcGetStorageError::ContractDoesntExist, + GetStorageError::IsTombstone => RpcGetStorageError::IsTombstone, + } + }) + } + } + + impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi< + Block, + Balance, + UncheckedExtrinsic, + > for Runtime { + fn query_info(uxt: UncheckedExtrinsic, len: u32) -> RuntimeDispatchInfo { + TransactionPayment::query_info(uxt, len) + } + } + + impl sp_session::SessionKeys for Runtime { + fn generate_session_keys(seed: Option>) -> Vec { + SessionKeys::generate(seed) + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use frame_system::offchain::SubmitSignedTransaction; + + fn is_submit_signed_transaction(_arg: T) + where + T: SubmitSignedTransaction< + Runtime, + Call, + Extrinsic = UncheckedExtrinsic, + CreateTransaction = Runtime, + Signer = ImOnlineId, + >, + { + } + + #[test] + fn validate_bounds() { + let x = SubmitTransaction::default(); + is_submit_signed_transaction(x); + } + + #[test] + fn block_hooks_weight_should_not_exceed_limits() { + use frame_support::weights::WeighBlock; + let check_for_block = |b| { + let block_hooks_weight = >::on_initialize(b) + + >::on_finalize(b); + + assert_eq!( + block_hooks_weight, 0, + "This test might fail simply because the value being compared to has increased to a \ + module declaring a new weight for a hook or call. In this case update the test and \ + happily move on.", + ); + + // Invariant. Always must be like this to have a sane chain. + assert!(block_hooks_weight < MaximumBlockWeight::get()); + + // Warning. + if block_hooks_weight > MaximumBlockWeight::get() / 2 { + println!( + "block hooks weight is consuming more than a block's capacity. You probably want \ + to re-think this. This test will fail now." + ); + assert!(false); + } + }; + + let _ = (0..100_000).for_each(check_for_block); + } +} diff --git a/boot-conf/icefrog/example.json b/boot-conf/icefrog/example.json deleted file mode 100644 index 12638ca83..000000000 --- a/boot-conf/icefrog/example.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "base-path": "/tmp/icefrog", - "bootnodes": [ - "/ip4/Node 1 IP Here/tcp/Node 1 PORT Here/p2p/Node 1 ID Here", - "/ip4/Node 2 IP Here/tcp/Node 2 PORT Here/p2p/Node 2 ID Here" - ], - - "name": "Example", - "validator": true, - - "rpc-external": true, - "rpc-port": 23332, - "ws-external": true, - "ws-port": 23333, - "rpc-cors": "all", - "port": 23334 -} diff --git a/boot-conf/testnet/1.json b/boot-conf/testnet/1.json deleted file mode 100644 index 6d171952b..000000000 --- a/boot-conf/testnet/1.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "base-path": "/tmp/darwinia-testnet/1", - "name": "testnet 1", - "validator": true, - "rpc-port": 6664 -} \ No newline at end of file diff --git a/boot-conf/testnet/2.json b/boot-conf/testnet/2.json deleted file mode 100644 index 90b5d02d4..000000000 --- a/boot-conf/testnet/2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "base-path": "/tmp/darwinia-testnet/2", - "name": "testnet 2", - "validator": true, - "rpc-port": 6665 -} \ No newline at end of file diff --git a/boot-conf/testnet/3.json b/boot-conf/testnet/3.json deleted file mode 100644 index 68bf0e428..000000000 --- a/boot-conf/testnet/3.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "base-path": "/tmp/darwinia-testnet/3", - "name": "testnet 3", - "validator": true, - "rpc-port": 6666 -} \ No newline at end of file diff --git a/boot-conf/testnet/4.json b/boot-conf/testnet/4.json deleted file mode 100644 index 7a0d57ff3..000000000 --- a/boot-conf/testnet/4.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "base-path": "/tmp/darwinia-testnet/4", - "name": "testnet 4", - "validator": true, - "rpc-port": 6667 -} \ No newline at end of file diff --git a/boot-conf/testnet/5.json b/boot-conf/testnet/5.json deleted file mode 100644 index 67e07ab06..000000000 --- a/boot-conf/testnet/5.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "base-path": "/tmp/darwinia-testnet/5", - "name": "testnet 5", - "validator": true, - "rpc-port": 6668 -} \ No newline at end of file diff --git a/boot-conf/testnet/alice.json b/boot-conf/testnet/alice.json deleted file mode 100644 index f4b4e3531..000000000 --- a/boot-conf/testnet/alice.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "base-path": "/tmp/testnet/alice", - "rpc-external": true, - "rpc-port": 23332, - "ws-external": true, - "ws-port": 23333, - "rpc-cors": "all", - "port": 23334 -} diff --git a/boot-conf/testnet/bob.json b/boot-conf/testnet/bob.json deleted file mode 100644 index 4f8119d8f..000000000 --- a/boot-conf/testnet/bob.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "base-path": "/tmp/testnet/bob", - "rpc-external": true, - "rpc-port": 23335, - "ws-external": true, - "ws-port": 23336, - "rpc-cors": "all", - "port": 23337 -} diff --git a/core/cli/Cargo.toml b/core/cli/Cargo.toml deleted file mode 100644 index 172284db6..000000000 --- a/core/cli/Cargo.toml +++ /dev/null @@ -1,47 +0,0 @@ -[package] -name = "darwinia-cli" -version = "0.1.0" -authors = ["Darwinia Network "] -description = "Darwinia CLI interface." -edition = "2018" - -[dependencies] -ansi_term = "0.12.1" -app_dirs = "1.2.1" -atty = "0.2.13" -clap = "2.33.0" -derive_more = "0.15.0" -env_logger = "0.7.0" -exit-future = "0.1.4" -futures = "0.1.29" -futures03 = { package = "futures-preview", version = "=0.3.0-alpha.19", features = ["compat"] } -fdlimit = "0.1.1" -lazy_static = "1.4.0" -log = "0.4.8" -names = "0.11.0" -regex = "1.3.1" -rpassword = "4.0.1" -serde = "1.0.103" -serde_json = "1.0.41" -structopt = "0.3.3" -time = "0.1.42" -tokio = "0.1.22" - -panic-handler = { package = "substrate-panic-handler", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -client = { package = "substrate-client", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -header-metadata = { package = "substrate-header-metadata", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -network = { package = "substrate-network", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -sr-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -primitives = { package = "substrate-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -service = { package = "substrate-service", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -state-machine = { package = "substrate-state-machine", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -substrate-telemetry = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -keyring = { package = "substrate-keyring", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -[dev-dependencies] -tempdir = "0.3.7" - -[features] -wasmtime = [ - "service/wasmtime", -] diff --git a/core/cli/src/error.rs b/core/cli/src/error.rs deleted file mode 100644 index e77bd9e1d..000000000 --- a/core/cli/src/error.rs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2017-2019 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 . - -//! Initialization errors. - -use client; - -/// Result type alias for the CLI. -pub type Result = std::result::Result; - -/// Error type for the CLI. -#[derive(Debug, derive_more::Display, derive_more::From)] -pub enum Error { - /// Io error - Io(std::io::Error), - /// Cli error - Cli(clap::Error), - /// Service error - Service(service::Error), - /// Client error - Client(client::error::Error), - /// Input error - Input(String), - /// Invalid listen multiaddress - #[display(fmt = "Invalid listen multiaddress")] - InvalidListenMultiaddress, - /// Other uncategorized error. - Other(String), -} - -/// Must be implemented explicitly because `derive_more` won't generate this -/// case due to conflicting derive for `Other(String)`. -impl std::convert::From for Error { - fn from(s: String) -> Error { - Error::Input(s) - } -} - -impl std::error::Error for Error { - fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { - match self { - Error::Io(ref err) => Some(err), - Error::Cli(ref err) => Some(err), - Error::Service(ref err) => Some(err), - Error::Client(ref err) => Some(err), - Error::Input(_) => None, - Error::InvalidListenMultiaddress => None, - Error::Other(_) => None, - } - } -} diff --git a/core/cli/src/execution_strategy.rs b/core/cli/src/execution_strategy.rs deleted file mode 100644 index c77c188d1..000000000 --- a/core/cli/src/execution_strategy.rs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2018-2019 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 . - -#![allow(missing_docs)] - -use serde::Deserialize; -use structopt::clap::arg_enum; - -arg_enum! { - /// How to execute blocks - #[derive(Clone, Copy, Debug, Deserialize)] - #[serde(rename_all = "kebab-case")] - pub enum ExecutionStrategy { - // Execute with native build (if available, WebAssembly otherwise). - Native, - // Only execute with the WebAssembly build. - Wasm, - // Execute with both native (where available) and WebAssembly builds. - Both, - // Execute with the native build if possible; if it fails, then execute with WebAssembly. - NativeElseWasm, - } -} diff --git a/core/cli/src/informant.rs b/core/cli/src/informant.rs deleted file mode 100644 index 2f2ae63e7..000000000 --- a/core/cli/src/informant.rs +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2017-2019 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 . - -//! Console informant. Prints sync progress and block events. Runs on the calling thread. - -use client::BlockchainEvents; -use futures::{Future, Stream}; -use futures03::{StreamExt as _, TryStreamExt as _}; -use log::{info, warn}; -use service::AbstractService; -use sr_primitives::traits::Header; -use std::time::Duration; - -mod display; - -/// Creates an informant in the form of a `Future` that must be polled regularly. -pub fn build(service: &impl AbstractService) -> impl Future { - let client = service.client(); - - let mut display = display::InformantDisplay::new(); - - let display_notifications = service - .network_status(Duration::from_millis(5000)) - .for_each(move |(net_status, _)| { - let info = client.info(); - display.display(&info, net_status); - Ok(()) - }); - - let client = service.client(); - let mut last_best = { - let info = client.info(); - Some((info.chain.best_number, info.chain.best_hash)) - }; - - let display_block_import = client - .import_notification_stream() - .map(|v| Ok::<_, ()>(v)) - .compat() - .for_each(move |n| { - // detect and log reorganizations. - if let Some((ref last_num, ref last_hash)) = last_best { - if n.header.parent_hash() != last_hash && n.is_new_best { - let maybe_ancestor = header_metadata::lowest_common_ancestor(&*client, last_hash.clone(), n.hash); - - match maybe_ancestor { - Ok(ref ancestor) if ancestor.hash != *last_hash => info!( - "Reorg from #{},{} to #{},{}, common ancestor #{},{}", - last_num, - last_hash, - n.header.number(), - n.hash, - ancestor.number, - ancestor.hash, - ), - Ok(_) => {} - Err(e) => warn!("Error computing tree route: {}", e), - } - } - } - - if n.is_new_best { - last_best = Some((n.header.number().clone(), n.hash.clone())); - } - - info!(target: "substrate", "Imported #{} ({})", n.header.number(), n.hash); - Ok(()) - }); - - display_notifications.join(display_block_import).map(|((), ())| ()) -} diff --git a/core/cli/src/informant/display.rs b/core/cli/src/informant/display.rs deleted file mode 100644 index 8d22ea4b9..000000000 --- a/core/cli/src/informant/display.rs +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2019 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 ansi_term::Colour; -use client::ClientInfo; -use log::info; -use network::SyncState; -use service::NetworkStatus; -use sr_primitives::traits::{Block as BlockT, CheckedDiv, NumberFor, Saturating, Zero}; -use std::{ - convert::{TryFrom, TryInto}, - fmt, time, -}; - -/// State of the informant display system. -/// -/// This is the system that handles the line that gets regularly printed and that looks something -/// like: -/// -/// > Syncing 5.4 bps, target=#531028 (4 peers), best: #90683 (0x4ca8…51b8), -/// > finalized #360 (0x6f24…a38b), ⬇ 5.5kiB/s ⬆ 0.9kiB/s -/// -/// # Usage -/// -/// Call `InformantDisplay::new` to initialize the state, then regularly call `display` with the -/// information to display. -/// -pub struct InformantDisplay { - /// Head of chain block number from the last time `display` has been called. - /// `None` if `display` has never been called. - last_number: Option>, - /// The last time `display` or `new` has been called. - last_update: time::Instant, -} - -impl InformantDisplay { - /// Builds a new informant display system. - pub fn new() -> InformantDisplay { - InformantDisplay { - last_number: None, - last_update: time::Instant::now(), - } - } - - /// Displays the informant by calling `info!`. - pub fn display(&mut self, info: &ClientInfo, net_status: NetworkStatus) { - let best_number = info.chain.best_number; - let best_hash = info.chain.best_hash; - let speed = speed::(best_number, self.last_number, self.last_update); - self.last_update = time::Instant::now(); - self.last_number = Some(best_number); - - let (status, target) = match (net_status.sync_state, net_status.best_seen_block) { - (SyncState::Idle, _) => ("Idle".into(), "".into()), - (SyncState::Downloading, None) => (format!("Syncing{}", speed), "".into()), - (SyncState::Downloading, Some(n)) => (format!("Syncing{}", speed), format!(", target=#{}", n)), - }; - - info!( - target: "substrate", - "{}{} ({} peers), best: #{} ({}), finalized #{} ({}), ⬇ {} ⬆ {}", - Colour::White.bold().paint(&status), - target, - Colour::White.bold().paint(format!("{}", net_status.num_connected_peers)), - Colour::White.paint(format!("{}", best_number)), - best_hash, - Colour::White.paint(format!("{}", info.chain.finalized_number)), - info.chain.finalized_hash, - TransferRateFormat(net_status.average_download_per_sec), - TransferRateFormat(net_status.average_upload_per_sec), - ); - } -} - -/// Calculates `(best_number - last_number) / (now - last_update)` and returns a `String` -/// representing the speed of import. -fn speed( - best_number: NumberFor, - last_number: Option>, - last_update: time::Instant, -) -> String { - // Number of milliseconds elapsed since last time. - let elapsed_ms = { - let elapsed = last_update.elapsed(); - let since_last_millis = elapsed.as_secs() * 1000; - let since_last_subsec_millis = elapsed.subsec_millis() as u64; - since_last_millis + since_last_subsec_millis - }; - - // Number of blocks that have been imported since last time. - let diff = match last_number { - None => return String::new(), - Some(n) => best_number.saturating_sub(n), - }; - - if let Ok(diff) = TryInto::::try_into(diff) { - // If the number of blocks can be converted to a regular integer, then it's easy: just - // do the math and turn it into a `f64`. - let speed = diff - .saturating_mul(10_000) - .checked_div(u128::from(elapsed_ms)) - .map_or(0.0, |s| s as f64) - / 10.0; - format!(" {:4.1} bps", speed) - } else { - // If the number of blocks can't be converted to a regular integer, then we need a more - // algebraic approach and we stay within the realm of integers. - let one_thousand = NumberFor::::from(1_000); - let elapsed = NumberFor::::from(>::try_from(elapsed_ms).unwrap_or(u32::max_value())); - - let speed = diff - .saturating_mul(one_thousand) - .checked_div(&elapsed) - .unwrap_or_else(Zero::zero); - format!(" {} bps", speed) - } -} - -/// Contains a number of bytes per second. Implements `fmt::Display` and shows this number of bytes -/// per second in a nice way. -struct TransferRateFormat(u64); -impl fmt::Display for TransferRateFormat { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - // Special case 0. - if self.0 == 0 { - return write!(f, "0"); - } - - // Under 0.1 kiB, display plain bytes. - if self.0 < 100 { - return write!(f, "{} B/s", self.0); - } - - // Under 1.0 MiB/sec, display the value in kiB/sec. - if self.0 < 1024 * 1024 { - return write!(f, "{:.1}kiB/s", self.0 as f64 / 1024.0); - } - - write!(f, "{:.1}MiB/s", self.0 as f64 / (1024.0 * 1024.0)) - } -} diff --git a/core/cli/src/lib.rs b/core/cli/src/lib.rs deleted file mode 100644 index 69a906723..000000000 --- a/core/cli/src/lib.rs +++ /dev/null @@ -1,1121 +0,0 @@ -// Copyright 2017-2019 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 . - -//! Substrate CLI library. - -#![warn(missing_docs)] -#![warn(unused_extern_crates)] - -pub mod error; -pub mod informant; - -#[macro_use] -mod traits; -mod execution_strategy; -mod params; - -pub use params::{CoreParams, ExecutionStrategy as ExecutionStrategyParam, NoCustom, SharedParams}; -#[doc(hidden)] -pub use structopt::clap::App; -pub use traits::{AugmentClap, GetLogFilter}; - -use std::{ - fs::{self, File}, - io::{stdin, stdout, Cursor, ErrorKind, Read, Seek, Write}, - iter, - net::{Ipv4Addr, SocketAddr}, - path::{Path, PathBuf}, - str::FromStr, -}; - -use app_dirs::{AppDataType, AppInfo}; -use client::ExecutionStrategies; -use futures::Future; -use lazy_static::lazy_static; -use log::info; -use names::{Generator, Name}; -use network::{ - self, - config::{build_multiaddr, NetworkConfiguration, NodeKeyConfig, NonReservedPeerMode, TransportConfig}, - multiaddr::Protocol, -}; -use primitives::H256; -use regex::Regex; -use service::{ - config::{Configuration, DatabaseConfig}, - ChainSpec, ChainSpecExtension, PruningMode, RuntimeGenesis, ServiceBuilderExport, ServiceBuilderImport, - ServiceBuilderRevert, -}; -use structopt::{clap::AppSettings, StructOpt}; -use substrate_telemetry::TelemetryEndpoints; - -use params::{ - BuildSpecCmd, Conf, Cors, ExportBlocksCmd, ImportBlocksCmd, MergeParameters, NetworkConfigurationParams, - NodeKeyParams, NodeKeyType, PurgeChainCmd, RevertCmd, RunCmd, TransactionPoolParams, -}; - -/// 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; - -/// 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"; - -/// Executable version. Used to pass version information from the root crate. -#[derive(Clone)] -pub struct VersionInfo { - /// Implementaiton name. - pub name: &'static str, - /// Implementation version. - pub version: &'static str, - /// SCM Commit hash. - pub commit: &'static str, - /// Executable file name. - pub executable_name: &'static str, - /// Executable file description. - pub description: &'static str, - /// Executable file author. - pub author: &'static str, - /// Support URL. - pub support_url: &'static str, -} - -/// Something that can be converted into an exit signal. -pub trait IntoExit { - /// Exit signal type. - type Exit: Future + Send + 'static; - /// Convert into exit signal. - fn into_exit(self) -> Self::Exit; -} - -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 -} - -fn load_spec(cli: &SharedParams, factory: F) -> error::Result> -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))?, - }; - Ok(spec) -} - -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") - }) -} - -/// Check whether a node name is considered as valid -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(()) -} - -/// Parse command line interface arguments and prepares the command for execution. -/// -/// Before returning, this function performs various initializations, such as initializing the -/// panic handler and the logger, or increasing the limit for file descriptors. -/// -/// # Remarks -/// -/// `CC` is a custom subcommand. This needs to be an `enum`! If no custom subcommand is required, -/// `NoCustom` can be used as type here. -/// -/// `RP` are custom parameters for the run command. This needs to be a `struct`! The custom -/// parameters are visible to the user as if they were normal run command parameters. If no custom -/// parameters are required, `NoCustom` can be used as type here. -pub fn parse_and_prepare<'a, CC, RP, I>( - version: &'a VersionInfo, - impl_name: &'static str, - args: I, -) -> ParseAndPrepare<'a, CC, RP> -where - CC: StructOpt + Clone + GetLogFilter, - RP: StructOpt + Clone + AugmentClap, - I: IntoIterator, - ::Item: Into + Clone, -{ - let full_version = service::config::full_version_from_strs(version.version, version.commit); - - panic_handler::set(version.support_url, &full_version); - - let matches = CoreParams::::clap() - .name(version.executable_name) - .author(version.author) - .about(version.description) - .version(&(full_version + "\n")[..]) - .setting(AppSettings::GlobalVersion) - .setting(AppSettings::ArgsNegateSubcommands) - .setting(AppSettings::SubcommandsNegateReqs) - .get_matches_from(args); - let cli_args = CoreParams::::from_clap(&matches); - - init_logger(cli_args.get_log_filter().as_ref().map(|v| v.as_ref()).unwrap_or("")); - fdlimit::raise_fd_limit(); - - match cli_args { - params::CoreParams::Run(params) => ParseAndPrepare::Run(ParseAndPrepareRun { - params, - impl_name, - version, - }), - params::CoreParams::BuildSpec(params) => { - ParseAndPrepare::BuildSpec(ParseAndPrepareBuildSpec { params, version }) - } - params::CoreParams::ExportBlocks(params) => { - ParseAndPrepare::ExportBlocks(ParseAndPrepareExport { params, version }) - } - params::CoreParams::ImportBlocks(params) => { - ParseAndPrepare::ImportBlocks(ParseAndPrepareImport { params, version }) - } - params::CoreParams::PurgeChain(params) => ParseAndPrepare::PurgeChain(ParseAndPreparePurge { params, version }), - params::CoreParams::Revert(params) => ParseAndPrepare::RevertChain(ParseAndPrepareRevert { params, version }), - params::CoreParams::Custom(params) => ParseAndPrepare::CustomCommand(params), - } -} - -/// 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) - } -} - -/// Output of calling `parse_and_prepare`. -#[must_use] -pub enum ParseAndPrepare<'a, CC, RP> { - /// Command ready to run the main client. - Run(ParseAndPrepareRun<'a, RP>), - /// Command ready to build chain specs. - BuildSpec(ParseAndPrepareBuildSpec<'a>), - /// Command ready to export the chain. - ExportBlocks(ParseAndPrepareExport<'a>), - /// Command ready to import the chain. - ImportBlocks(ParseAndPrepareImport<'a>), - /// Command ready to purge the chain. - PurgeChain(ParseAndPreparePurge<'a>), - /// Command ready to revert the chain. - RevertChain(ParseAndPrepareRevert<'a>), - /// An additional custom command passed to `parse_and_prepare`. - CustomCommand(CC), -} - -/// Command ready to run the main client. -pub struct ParseAndPrepareRun<'a, RP> { - params: MergeParameters, - impl_name: &'static str, - version: &'a VersionInfo, -} - -impl<'a, RP> ParseAndPrepareRun<'a, RP> { - /// Runs the command and runs the main client. - pub fn run(self, spec_factory: S, exit: Exit, run_service: RS) -> error::Result<()> - where - S: FnOnce(&str) -> Result>, String>, - E: Into, - RP: StructOpt + Clone, - C: Default, - G: RuntimeGenesis, - CE: ChainSpecExtension, - Exit: IntoExit, - RS: FnOnce(Exit, RunCmd, RP, Configuration) -> Result<(), E>, - { - let config = create_run_node_config(self.params.left.clone(), spec_factory, self.impl_name, self.version)?; - - run_service(exit, self.params.left, self.params.right, config).map_err(Into::into) - } -} - -/// Command ready to build chain specs. -pub struct ParseAndPrepareBuildSpec<'a> { - params: BuildSpecCmd, - version: &'a VersionInfo, -} - -impl<'a> ParseAndPrepareBuildSpec<'a> { - /// Runs the command and build the chain specs. - pub fn run(self, spec_factory: S) -> error::Result<()> - where - S: FnOnce(&str) -> Result>, String>, - C: Default, - G: RuntimeGenesis, - E: ChainSpecExtension, - { - info!("Building chain spec"); - let raw_output = self.params.raw; - let mut spec = load_spec(&self.params.shared_params, spec_factory)?; - - if spec.boot_nodes().is_empty() && !self.params.disable_default_bootnode { - let base_path = base_path(&self.params.shared_params, self.version); - let cfg = service::Configuration::::default_with_spec_and_base_path(spec.clone(), Some(base_path)); - let node_key = node_key_config( - self.params.node_key_params, - &Some( - cfg.in_chain_config_dir(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 = service::chain_ops::build_spec(spec, raw_output)?; - - print!("{}", json); - - Ok(()) - } -} - -/// Command ready to export the chain. -pub struct ParseAndPrepareExport<'a> { - params: ExportBlocksCmd, - version: &'a VersionInfo, -} - -impl<'a> ParseAndPrepareExport<'a> { - /// Runs the command and exports from the chain. - pub fn run_with_builder(self, builder: F, spec_factory: S, exit: Exit) -> error::Result<()> - where - S: FnOnce(&str) -> Result>, String>, - F: FnOnce(Configuration) -> Result, - B: ServiceBuilderExport, - C: Default, - G: RuntimeGenesis, - E: ChainSpecExtension, - Exit: IntoExit, - { - let config = create_config_with_db_path(spec_factory, &self.params.shared_params, self.version)?; - - if let DatabaseConfig::Path { ref path, .. } = &config.database { - info!("DB path: {}", path.display()); - } - let from = self.params.from.unwrap_or(1); - let to = self.params.to; - let json = self.params.json; - - let file: Box = match self.params.output { - Some(filename) => Box::new(File::create(filename)?), - None => Box::new(stdout()), - }; - - builder(config)?.export_blocks(exit.into_exit(), file, from.into(), to.map(Into::into), json)?; - Ok(()) - } -} - -/// Command ready to import the chain. -pub struct ParseAndPrepareImport<'a> { - params: ImportBlocksCmd, - version: &'a VersionInfo, -} - -impl<'a> ParseAndPrepareImport<'a> { - /// Runs the command and imports to the chain. - pub fn run_with_builder(self, builder: F, spec_factory: S, exit: Exit) -> error::Result<()> - where - S: FnOnce(&str) -> Result>, String>, - F: FnOnce(Configuration) -> Result, - B: ServiceBuilderImport, - C: Default, - G: RuntimeGenesis, - E: ChainSpecExtension, - Exit: IntoExit, - { - let mut config = create_config_with_db_path(spec_factory, &self.params.shared_params, self.version)?; - config.wasm_method = self.params.wasm_method.into(); - config.execution_strategies = ExecutionStrategies { - importing: self.params.execution.into(), - other: self.params.execution.into(), - ..Default::default() - }; - - let file: Box = match self.params.input { - Some(filename) => Box::new(File::open(filename)?), - None => { - let mut buffer = Vec::new(); - stdin().read_to_end(&mut buffer)?; - Box::new(Cursor::new(buffer)) - } - }; - - let fut = builder(config)?.import_blocks(exit.into_exit(), file)?; - tokio::run(fut); - Ok(()) - } -} - -/// Command ready to purge the chain. -pub struct ParseAndPreparePurge<'a> { - params: PurgeChainCmd, - version: &'a VersionInfo, -} - -impl<'a> ParseAndPreparePurge<'a> { - /// Runs the command and purges the chain. - pub fn run(self, spec_factory: S) -> error::Result<()> - where - S: FnOnce(&str) -> Result>, String>, - G: RuntimeGenesis, - E: ChainSpecExtension, - { - let config = create_config_with_db_path::<(), _, _, _>(spec_factory, &self.params.shared_params, self.version)?; - let db_path = match config.database { - DatabaseConfig::Path { path, .. } => path, - _ => { - eprintln!("Cannot purge custom database implementation"); - return Ok(()); - } - }; - - if !self.params.yes { - print!("Are you sure to remove {:?}? [y/N]: ", &db_path); - stdout().flush().expect("failed to flush stdout"); - - let mut input = String::new(); - 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) { - Result::Ok(_) => { - println!("{:?} removed.", &db_path); - Ok(()) - } - Result::Err(ref err) if err.kind() == ErrorKind::NotFound => { - eprintln!("{:?} did not exist.", &db_path); - Ok(()) - } - Result::Err(err) => Result::Err(err.into()), - } - } -} - -/// Command ready to revert the chain. -pub struct ParseAndPrepareRevert<'a> { - params: RevertCmd, - version: &'a VersionInfo, -} - -impl<'a> ParseAndPrepareRevert<'a> { - /// Runs the command and reverts the chain. - pub fn run_with_builder(self, builder: F, spec_factory: S) -> error::Result<()> - where - S: FnOnce(&str) -> Result>, String>, - F: FnOnce(Configuration) -> Result, - B: ServiceBuilderRevert, - C: Default, - G: RuntimeGenesis, - E: ChainSpecExtension, - { - let config = create_config_with_db_path(spec_factory, &self.params.shared_params, self.version)?; - let blocks = self.params.num; - builder(config)?.revert_chain(blocks.into())?; - Ok(()) - } -} - -/// Create a `NodeKeyConfig` from the given `NodeKeyParams` in the context -/// of an optional network config storage directory. -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(network::config::Secret::File) - .unwrap_or(network::config::Secret::New)) - }) - .map(NodeKeyConfig::Ed25519), - } -} - -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)) -} - -/// 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 `network::Secret`. -fn parse_ed25519_secret(hex: &String) -> error::Result { - H256::from_str(&hex).map_err(invalid_node_key).and_then(|bytes| { - network::config::identity::ed25519::SecretKey::from_bytes(bytes) - .map(network::config::Secret::Input) - .map_err(invalid_node_key) - }) -} - -/// 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; - } - - 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.public_addresses = Vec::new(); - - config.client_version = client_id; - config.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, - }; - - config.max_parallel_downloads = cli.max_parallel_downloads; - - Ok(()) -} - -fn input_keystore_password() -> Result { - rpassword::read_password_from_tty(Some("Keystore password: ")).map_err(|e| format!("{:?}", e)) -} - -/// Fill the password field of the given config instance. -fn fill_config_keystore_password( - config: &mut service::Configuration, - cli: &RunCmd, -) -> Result<(), String> { - config.keystore_password = if cli.password_interactive { - Some(input_keystore_password()?.into()) - } 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 - }; - - Ok(()) -} - -// TODO: check conflict options -fn load_conf_from_file(cli: &mut RunCmd) -> error::Result<()> { - if cli.conf.is_none() { - return Ok(()); - } - - let conf: Conf = { - let f = File::open(cli.conf.as_ref().unwrap())?; - serde_json::from_reader(f).map_err(|e| format!("{}", e))? - }; - - // println!("{:#?}", conf); - - cli.name = conf.name; - - cli.keystore_path = conf.keystore_path; - - cli.database_cache_size = conf.database_cache_size; - if let Some(state_cache_size) = conf.state_cache_size { - cli.state_cache_size = state_cache_size; - } - - if let Some(shared_params) = conf.shared { - cli.shared_params = shared_params; - } - if let Some(validator) = conf.validator { - cli.validator = validator; - } - if let Some(sentry) = conf.sentry { - cli.sentry = sentry; - } - // TODO: keyring - if let Some(light) = conf.light { - cli.light = light; - } - - cli.pruning = conf.pruning; - if let Some(unsafe_pruning) = conf.unsafe_pruning { - cli.unsafe_pruning = unsafe_pruning; - } - - if let Some(wasm_method) = conf.wasm_method { - cli.wasm_method = wasm_method; - } - - if let Some(execution_strategies) = conf.execution_strategies { - cli.execution_strategies = execution_strategies; - } - - if let Some(offchain_worker) = conf.offchain_worker { - cli.offchain_worker = offchain_worker; - } - - if let Some(no_grandpa) = conf.no_grandpa { - cli.no_grandpa = no_grandpa; - } - - if let Some(network_config) = conf.network_config { - cli.network_config = network_config; - } - - if let Some(pool_config) = conf.pool_config { - cli.pool_config = pool_config; - } - - if let Some(rpc_external) = conf.rpc_external { - cli.rpc_external = rpc_external; - } - cli.rpc_port = conf.rpc_port; - - if let Some(ws_external) = conf.ws_external { - cli.ws_external = ws_external; - } - cli.ws_port = conf.ws_port; - cli.ws_max_connections = conf.ws_max_connections; - - cli.rpc_cors = conf.rpc_cors; - - if let Some(no_telemetry) = conf.no_telemetry { - cli.no_telemetry = no_telemetry; - } - if let Some(telemetry_endpoints) = conf.telemetry_endpoints { - cli.telemetry_endpoints = telemetry_endpoints; - } - - if let Some(force_authoring) = conf.force_authoring { - cli.force_authoring = force_authoring; - } - - Ok(()) -} - -fn create_run_node_config( - mut cli: RunCmd, - spec_factory: S, - impl_name: &'static str, - version: &VersionInfo, -) -> error::Result> -where - C: Default, - G: RuntimeGenesis, - E: ChainSpecExtension, - S: FnOnce(&str) -> Result>, String>, -{ - load_conf_from_file(&mut cli)?; - - let spec = load_spec(&cli.shared_params, spec_factory)?; - let base_path = base_path(&cli.shared_params, &version); - let mut config = service::Configuration::default_with_spec_and_base_path(spec.clone(), Some(base_path)); - - fill_config_keystore_password(&mut config, &cli)?; - - config.impl_name = impl_name; - config.impl_commit = version.commit; - config.impl_version = version.version; - - config.name = match cli.name.or(cli.keyring.account.map(|a| a.to_string())) { - None => generate_node_name(), - Some(name) => name, - }; - match is_node_name_valid(&config.name) { - Ok(_) => (), - Err(msg) => Err(error::Error::Input(format!( - "Invalid node name '{}'. Reason: {}. If unsure, use none.", - config.name, msg - )))?, - } - - config.keystore_path = cli - .keystore_path - .or_else(|| config.in_chain_config_dir(DEFAULT_KEYSTORE_CONFIG_PATH)); - - config.database = DatabaseConfig::Path { - path: config - .in_chain_config_dir(DEFAULT_DB_CONFIG_PATH) - .expect("We provided a base_path."), - cache_size: cli.database_cache_size, - }; - config.state_cache_size = cli.state_cache_size; - - let is_dev = cli.shared_params.dev; - let is_authority = cli.validator || cli.sentry || is_dev || cli.keyring.account.is_some(); - - let role = if cli.light { - service::Roles::LIGHT - } else if is_authority { - service::Roles::AUTHORITY - } else { - service::Roles::FULL - }; - - // set sentry mode (i.e. act as an authority but **never** actively participate) - config.sentry_mode = cli.sentry; - - // 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 == service::Roles::AUTHORITY => PruningMode::ArchiveAll, - None => PruningMode::default(), - Some(s) => { - if role == 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: params::ExecutionStrategy| exec.execution.unwrap_or(strat).into(); - config.execution_strategies = ExecutionStrategies { - syncing: exec_all_or(exec.execution_syncing), - importing: exec_all_or(exec.execution_import_block), - block_construction: exec_all_or(exec.execution_block_construction), - offchain_worker: exec_all_or(exec.execution_offchain_worker), - other: exec_all_or(exec.execution_other), - }; - - config.offchain_worker = match (cli.offchain_worker, role) { - (params::OffchainWorkerEnabled::WhenValidating, 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 = - cli.keyring - .account - .map(|a| format!("//{}", a)) - .or_else(|| if is_dev { Some("//Alice".into()) } else { None }); - - let rpc_interface: &str = if cli.rpc_external { "0.0.0.0" } else { "127.0.0.1" }; - let ws_interface: &str = if cli.ws_external { "0.0.0.0" } else { "127.0.0.1" }; - - config.rpc_http = Some(parse_address(&format!("{}:{}", rpc_interface, 9933), cli.rpc_port)?); - 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)); - } - - // Imply forced authoring on --dev - config.force_authoring = cli.shared_params.dev || cli.force_authoring; - - Ok(config) -} - -/// Creates a configuration including the database path. -pub fn create_config_with_db_path( - spec_factory: S, - cli: &SharedParams, - version: &VersionInfo, -) -> error::Result> -where - C: Default, - G: RuntimeGenesis, - E: ChainSpecExtension, - S: FnOnce(&str) -> Result>, String>, -{ - let spec = load_spec(cli, spec_factory)?; - let base_path = base_path(cli, version); - - let mut config = service::Configuration::default_with_spec_and_base_path(spec.clone(), Some(base_path)); - config.database = DatabaseConfig::Path { - path: config - .in_chain_config_dir(DEFAULT_DB_CONFIG_PATH) - .expect("We provided a base_path."), - cache_size: None, - }; - - Ok(config) -} - -/// Internal trait used to cast to a dynamic type that implements Read and Seek. -trait ReadPlusSeek: Read + Seek {} - -impl ReadPlusSeek for T {} - -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 init_logger(pattern: &str) { - use ansi_term::Colour; - - let mut builder = env_logger::Builder::new(); - // Disable info logging by default for some modules: - builder.filter(Some("ws"), log::LevelFilter::Off); - builder.filter(Some("hyper"), log::LevelFilter::Warn); - builder.filter(Some("cranelift_wasm"), log::LevelFilter::Warn); - // Enable info for others. - builder.filter(None, log::LevelFilter::Info); - - if let Ok(lvl) = std::env::var("RUST_LOG") { - builder.parse_filters(&lvl); - } - - builder.parse_filters(pattern); - let isatty = atty::is(atty::Stream::Stderr); - let enable_color = isatty; - - builder.format(move |buf, record| { - let now = time::now(); - let timestamp = time::strftime("%Y-%m-%d %H:%M:%S", &now).expect("Error formatting log timestamp"); - - let mut output = if log::max_level() <= log::LevelFilter::Info { - format!("{} {}", Colour::Black.bold().paint(timestamp), record.args()) - } else { - let name = ::std::thread::current() - .name() - .map_or_else(Default::default, |x| format!("{}", Colour::Blue.bold().paint(x))); - let millis = (now.tm_nsec as f32 / 1000000.0).round() as usize; - let timestamp = format!("{}.{:03}", timestamp, millis); - format!( - "{} {} {} {} {}", - Colour::Black.bold().paint(timestamp), - name, - record.level(), - record.target(), - record.args() - ) - }; - - if !enable_color { - output = kill_color(output.as_ref()); - } - - if !isatty && record.level() <= log::Level::Info && atty::is(atty::Stream::Stdout) { - // duplicate INFO/WARN output to console - println!("{}", output); - } - writeln!(buf, "{}", output) - }); - - if builder.try_init().is_err() { - info!("Not registering Substrate logger, as there is already a global logger registered!"); - } -} - -fn kill_color(s: &str) -> String { - lazy_static! { - static ref RE: Regex = Regex::new("\x1b\\[[^m]+m").expect("Error initializing color regex"); - } - RE.replace_all(s, "").to_string() -} - -#[cfg(test)] -mod tests { - use super::*; - use network::config::identity::ed25519; - use tempdir::TempDir; - - #[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(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 = TempDir::new("alice")?; - 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(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(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(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/core/cli/src/params.rs b/core/cli/src/params.rs deleted file mode 100644 index ea637cd12..000000000 --- a/core/cli/src/params.rs +++ /dev/null @@ -1,1036 +0,0 @@ -// Copyright 2018-2019 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 crate::execution_strategy::ExecutionStrategy; - -use std::path::PathBuf; - -use serde::Deserialize; -use structopt::{ - clap::{arg_enum, App, AppSettings, Arg, SubCommand}, - StructOpt, -}; - -use crate::traits::{AugmentClap, GetLogFilter}; - -/// Auxiliary macro to implement `GetLogFilter` for all types that have the `shared_params` field. -macro_rules! impl_get_log_filter { - ( $type:ident ) => { - impl $crate::GetLogFilter for $type { - fn get_log_filter(&self) -> Option { - self.shared_params.get_log_filter() - } - } - }; -} - -impl Into for ExecutionStrategy { - fn into(self) -> client::ExecutionStrategy { - match self { - ExecutionStrategy::Native => client::ExecutionStrategy::NativeWhenPossible, - ExecutionStrategy::Wasm => client::ExecutionStrategy::AlwaysWasm, - ExecutionStrategy::Both => client::ExecutionStrategy::Both, - ExecutionStrategy::NativeElseWasm => client::ExecutionStrategy::NativeElseWasm, - } - } -} - -arg_enum! { - /// How to execute Wasm runtime code - #[allow(missing_docs)] - #[derive(Clone, Debug, Deserialize)] - #[serde(rename_all = "kebab-case")] - 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. - 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) -> service::config::WasmExecutionMethod { - match self { - WasmExecutionMethod::Interpreted => service::config::WasmExecutionMethod::Interpreted, - #[cfg(feature = "wasmtime")] - WasmExecutionMethod::Compiled => 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(Clone, Debug, Deserialize)] - #[serde(rename_all = "kebab-case")] - pub enum OffchainWorkerEnabled { - Always, - Never, - WhenValidating, - } -} - -/// Shared parameters used by all `CoreParams`. -#[derive(Clone, Default, Debug, StructOpt, Deserialize)] -#[serde(default, rename_all = "kebab-case")] -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 GetLogFilter for SharedParams { - fn get_log_filter(&self) -> Option { - self.log.clone() - } -} - -/// Parameters used to create the network configuration. -#[derive(Clone, Debug, StructOpt, Deserialize)] -#[serde(default, rename_all = "kebab-case")] -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, - - /// 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, - - /// Allow 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, -} - -impl Default for NetworkConfigurationParams { - fn default() -> Self { - Self { - bootnodes: vec![], - reserved_nodes: vec![], - reserved_only: false, - listen_addr: vec![], - port: None, - no_private_ipv4: false, - out_peers: 25, - in_peers: 25, - no_mdns: false, - max_parallel_downloads: 5, - node_key_params: Default::default(), - } - } -} - -arg_enum! { - #[allow(missing_docs)] - #[derive(Clone, Copy, Debug, PartialEq, Eq, Deserialize)] - #[serde(rename_all = "kebab-case")] - pub enum NodeKeyType { - Ed25519 - } -} - -/// Parameters used to create the `NodeKeyConfig`, which determines the keypair -/// used for libp2p networking. -#[derive(Clone, Debug, StructOpt, Deserialize)] -#[serde(default, rename_all = "kebab-case")] -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 Default for NodeKeyParams { - fn default() -> Self { - Self { - node_key: None, - node_key_type: NodeKeyType::Ed25519, - node_key_file: None, - } - } -} - -/// Parameters used to create the pool configuration. -#[derive(Clone, Debug, StructOpt, Deserialize)] -#[serde(default, rename_all = "kebab-case")] -pub struct TransactionPoolParams { - /// Maximum number of transactions in the transaction pool. - #[structopt(long = "pool-limit", value_name = "COUNT", default_value = "512")] - pub pool_limit: usize, - /// Maximum number of kilobytes of all transactions stored in the pool. - #[structopt(long = "pool-kbytes", value_name = "COUNT", default_value = "10240")] - pub pool_kbytes: usize, -} - -impl Default for TransactionPoolParams { - fn default() -> Self { - Self { - pool_limit: 512, - pool_kbytes: 10240, - } - } -} - -/// Execution strategies parameters. -#[derive(Clone, Debug, StructOpt, Deserialize)] -#[serde(default, rename_all = "kebab-case")] -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 = "NativeElseWasm" - )] - 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 = "NativeElseWasm" - )] - 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 = "Wasm" - )] - 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 = "Native" - )] - 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 = "Native" - )] - 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, -} - -impl Default for ExecutionStrategies { - fn default() -> Self { - Self { - execution_syncing: ExecutionStrategy::NativeElseWasm, - execution_import_block: ExecutionStrategy::NativeElseWasm, - execution_block_construction: ExecutionStrategy::Wasm, - execution_offchain_worker: ExecutionStrategy::Native, - execution_other: ExecutionStrategy::Native, - execution: None, - } - } -} - -/// 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" ] - )] - 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")] - pub light: bool, - - /// Limit the memory the database cache can use. - #[structopt(long = "db-cache", value_name = "MiB")] - pub database_cache_size: Option, - - /// Specify the state cache size. - #[structopt(long = "state-cache-size", value_name = "Bytes", default_value = "67108864")] - pub state_cache_size: usize, - - /// Listen to all RPC interfaces. - /// - /// Default is local. - #[structopt(long = "rpc-external")] - pub rpc_external: bool, - - /// Listen to all Websocket interfaces. - /// - /// Default is local. - #[structopt(long = "ws-external")] - pub ws_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 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, - - /// 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, - - /// 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, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub shared_params: SharedParams, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub network_config: NetworkConfigurationParams, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub pool_config: TransactionPoolParams, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub keyring: Keyring, - - /// 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, - - /// Specify the boot configuration json file . All command line input will be overwritten by this. - #[structopt(long = "conf", value_name = "PATH")] - pub conf: Option, -} - -/// Stores all required Cli values for a keyring test account. -struct KeyringTestAccountCliValues { - help: String, - conflicts_with: Vec, - name: String, - variant: keyring::Sr25519Keyring, -} - -lazy_static::lazy_static! { - /// The Cli values for all test accounts. - static ref TEST_ACCOUNTS_CLI_VALUES: Vec = { - keyring::Sr25519Keyring::iter().map(|a| { - let help = format!( - "Shortcut for `--name {} --validator` with session keys for `{}` added to keystore.", - a, - a, - ); - let conflicts_with = keyring::Sr25519Keyring::iter() - .filter(|b| a != *b) - .map(|b| b.to_string().to_lowercase()) - .chain(std::iter::once("name".to_string())) - .collect::>(); - let name = a.to_string().to_lowercase(); - - KeyringTestAccountCliValues { - help, - conflicts_with, - name, - variant: a, - } - }).collect() - }; -} - -/// Wrapper for exposing the keyring test accounts into the Cli. -#[derive(Debug, Clone)] -pub struct Keyring { - pub account: Option, -} - -impl StructOpt for Keyring { - fn clap<'a, 'b>() -> App<'a, 'b> { - unimplemented!("Should not be called for `TestAccounts`.") - } - - fn from_clap(m: &::structopt::clap::ArgMatches) -> Self { - Keyring { - account: TEST_ACCOUNTS_CLI_VALUES - .iter() - .find(|a| m.is_present(&a.name)) - .map(|a| a.variant), - } - } -} - -impl AugmentClap for Keyring { - fn augment_clap<'a, 'b>(app: App<'a, 'b>) -> App<'a, 'b> { - TEST_ACCOUNTS_CLI_VALUES.iter().fold(app, |app, a| { - let conflicts_with_strs = a.conflicts_with.iter().map(|s| s.as_str()).collect::>(); - - app.arg( - Arg::with_name(&a.name) - .long(&a.name) - .help(&a.help) - .conflicts_with_all(&conflicts_with_strs) - .takes_value(false), - ) - }) - } -} - -impl Keyring { - fn is_subcommand() -> bool { - false - } -} - -/// 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, Deserialize)] -#[serde(rename_all = "kebab-case")] -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) }) -} - -impl_augment_clap!(RunCmd); -impl_get_log_filter!(RunCmd); - -/// 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_get_log_filter!(BuildSpecCmd); - -/// 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_get_log_filter!(ExportBlocksCmd); - -/// 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, - - /// Method for executing Wasm runtime code. - #[structopt( - long = "wasm-execution", - value_name = "METHOD", - possible_values = &WasmExecutionMethod::variants(), - case_insensitive = true, - default_value = "Interpreted" - )] - pub wasm_method: WasmExecutionMethod, - - /// The means of execution used when calling into the runtime while importing blocks. - #[structopt( - long = "execution", - value_name = "STRATEGY", - possible_values = &ExecutionStrategy::variants(), - case_insensitive = true, - default_value = "NativeElseWasm" - )] - pub execution: ExecutionStrategy, -} - -impl_get_log_filter!(ImportBlocksCmd); - -/// 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: u32, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub shared_params: SharedParams, -} - -impl_get_log_filter!(RevertCmd); - -/// 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_get_log_filter!(PurgeChainCmd); - -/// 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)] -pub enum CoreParams { - /// Run a node. - Run(MergeParameters), - - /// Build a spec.json file, outputing to stdout. - BuildSpec(BuildSpecCmd), - - /// Export blocks to a file. - ExportBlocks(ExportBlocksCmd), - - /// Import blocks from file. - ImportBlocks(ImportBlocksCmd), - - /// Revert chain to the previous state. - Revert(RevertCmd), - - /// Remove the whole chain data. - PurgeChain(PurgeChainCmd), - - /// Further custom subcommands. - Custom(CC), -} - -impl StructOpt for CoreParams -where - CC: StructOpt + GetLogFilter, - RP: StructOpt + AugmentClap, -{ - fn clap<'a, 'b>() -> App<'a, 'b> { - RP::augment_clap(RunCmd::augment_clap( - CC::clap().unset_setting(AppSettings::SubcommandRequiredElseHelp), - )) - .subcommand( - BuildSpecCmd::augment_clap(SubCommand::with_name("build-spec")) - .about("Build a spec.json file, outputting to stdout."), - ) - .subcommand( - ExportBlocksCmd::augment_clap(SubCommand::with_name("export-blocks")).about( - "Export blocks to a file. This file can only be re-imported \ - if it is in binary format (not JSON!).", - ), - ) - .subcommand( - ImportBlocksCmd::augment_clap(SubCommand::with_name("import-blocks")).about("Import blocks from file."), - ) - .subcommand( - RevertCmd::augment_clap(SubCommand::with_name("revert")).about("Revert chain to the previous state."), - ) - .subcommand( - PurgeChainCmd::augment_clap(SubCommand::with_name("purge-chain")).about("Remove the whole chain data."), - ) - } - - fn from_clap(matches: &::structopt::clap::ArgMatches) -> Self { - match matches.subcommand() { - ("build-spec", Some(matches)) => CoreParams::BuildSpec(BuildSpecCmd::from_clap(matches)), - ("export-blocks", Some(matches)) => CoreParams::ExportBlocks(ExportBlocksCmd::from_clap(matches)), - ("import-blocks", Some(matches)) => CoreParams::ImportBlocks(ImportBlocksCmd::from_clap(matches)), - ("revert", Some(matches)) => CoreParams::Revert(RevertCmd::from_clap(matches)), - ("purge-chain", Some(matches)) => CoreParams::PurgeChain(PurgeChainCmd::from_clap(matches)), - (_, None) => CoreParams::Run(MergeParameters::from_clap(matches)), - _ => CoreParams::Custom(CC::from_clap(matches)), - } - } -} - -impl GetLogFilter for CoreParams -where - CC: GetLogFilter, -{ - fn get_log_filter(&self) -> Option { - match self { - CoreParams::Run(c) => c.left.get_log_filter(), - CoreParams::BuildSpec(c) => c.get_log_filter(), - CoreParams::ExportBlocks(c) => c.get_log_filter(), - CoreParams::ImportBlocks(c) => c.get_log_filter(), - CoreParams::PurgeChain(c) => c.get_log_filter(), - CoreParams::Revert(c) => c.get_log_filter(), - CoreParams::Custom(c) => c.get_log_filter(), - } - } -} - -/// A special commandline parameter that expands to nothing. -/// Should be used as custom subcommand/run arguments if no custom values are required. -#[derive(Clone, Debug, Default)] -pub struct NoCustom {} - -impl StructOpt for NoCustom { - fn clap<'a, 'b>() -> App<'a, 'b> { - App::new("NoCustom") - } - - fn from_clap(_: &::structopt::clap::ArgMatches) -> Self { - NoCustom {} - } -} - -impl AugmentClap for NoCustom { - fn augment_clap<'a, 'b>(app: App<'a, 'b>) -> App<'a, 'b> { - app - } -} - -impl GetLogFilter for NoCustom { - fn get_log_filter(&self) -> Option { - None - } -} - -/// Merge all CLI parameters of `L` and `R` into the same level. -#[derive(Clone, Debug)] -pub struct MergeParameters { - /// The left side parameters. - pub left: L, - /// The right side parameters. - pub right: R, -} - -impl StructOpt for MergeParameters -where - L: StructOpt + AugmentClap, - R: StructOpt, -{ - fn clap<'a, 'b>() -> App<'a, 'b> { - L::augment_clap(R::clap()) - } - - fn from_clap(matches: &::structopt::clap::ArgMatches) -> Self { - MergeParameters { - left: L::from_clap(matches), - right: R::from_clap(matches), - } - } -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "kebab-case")] -pub struct Conf { - pub name: Option, - - pub keystore_path: Option, - - #[serde(rename = "db-cache")] - pub database_cache_size: Option, - pub state_cache_size: Option, - - #[serde(flatten)] - pub shared: Option, - pub validator: Option, - pub sentry: Option, - // TODO: derive Deserialize - // pub keyring: Option, - pub light: Option, - - pub pruning: Option, - pub unsafe_pruning: Option, - - #[serde(rename = "wasm-execution")] - pub wasm_method: Option, - - #[serde(flatten)] - pub execution_strategies: Option, - - pub offchain_worker: Option, - - pub no_grandpa: Option, - - #[serde(flatten)] - pub network_config: Option, - #[serde(flatten)] - pub pool_config: Option, - - pub rpc_external: Option, - pub rpc_port: Option, - - pub ws_external: Option, - pub ws_port: Option, - pub ws_max_connections: Option, - - pub rpc_cors: Option, - - pub no_telemetry: Option, - pub telemetry_endpoints: Option>, - - pub force_authoring: Option, -} diff --git a/core/cli/src/traits.rs b/core/cli/src/traits.rs deleted file mode 100644 index 8ea7e0468..000000000 --- a/core/cli/src/traits.rs +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2017-2019 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::{clap::App, StructOpt}; - -/// Something that can augment a clap app with further parameters. -/// `derive(StructOpt)` is implementing this function by default, so a macro `impl_augment_clap!` -/// is provided to simplify the implementation of this trait. -pub trait AugmentClap: StructOpt { - /// Augment the given clap `App` with further parameters. - fn augment_clap<'a, 'b>(app: App<'a, 'b>) -> App<'a, 'b>; -} - -/// Macro for implementing the `AugmentClap` trait. -/// This requires that the given type uses `derive(StructOpt)`! -#[macro_export] -macro_rules! impl_augment_clap { - ( $type:ident ) => { - impl $crate::AugmentClap for $type { - fn augment_clap<'a, 'b>(app: $crate::App<'a, 'b>) -> $crate::App<'a, 'b> { - $type::augment_clap(app) - } - } - }; -} - -/// Returns the log filter given by the user as commandline argument. -pub trait GetLogFilter { - /// Returns the set log filter. - fn get_log_filter(&self) -> Option; -} diff --git a/core/ethash/Cargo.toml b/core/ethash/Cargo.toml deleted file mode 100644 index 0c00b9af2..000000000 --- a/core/ethash/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -[package] -name = "ethash" -description = "An Apache-licensed Ethash implementation." -version = "0.4.0" -authors = ["Wei Tang "] -license = "Apache-2.0" -edition = "2018" - -[dependencies] -byteorder = { version = "1", default-features = false } -rlp = { version = "0.4", default-features = false } -sha3 = { version = "0.8", default-features = false } - -ethereum-types = { git = "https://github.com/darwinia-network/parity-common.git", default-features = false } -primitive-types = { git = "https://github.com/darwinia-network/parity-common.git", default-features = false, features = ["rlp"] } - -[dev-dependencies] -hex-literal = "0.2.1" - -[features] -default = ["std"] -std = [ - "byteorder/std", - "rlp/std", - "sha3/std", - - "ethereum-types/std", - "primitive-types/std", -] \ No newline at end of file diff --git a/core/ethash/src/dag.rs b/core/ethash/src/dag.rs deleted file mode 100644 index 305cb5802..000000000 --- a/core/ethash/src/dag.rs +++ /dev/null @@ -1,52 +0,0 @@ -use alloc::vec::Vec; -use core::marker::PhantomData; -use ethereum_types::{H256, H64, U256}; - -pub trait Patch { - fn epoch_length() -> U256; -} - -pub struct EthereumPatch; -impl Patch for EthereumPatch { - fn epoch_length() -> U256 { - U256::from(30000) - } -} - -pub struct LightDAG { - epoch: usize, - cache: Vec, - #[allow(dead_code)] - cache_size: usize, - full_size: usize, - _marker: PhantomData

, -} - -impl LightDAG

{ - pub fn new(number: U256) -> Self { - let epoch = (number / P::epoch_length()).as_usize(); - let cache_size = crate::get_cache_size(epoch); - let full_size = crate::get_full_size(epoch); - let seed = crate::get_seedhash(epoch); - - let mut cache: Vec = Vec::with_capacity(cache_size); - cache.resize(cache_size, 0); - crate::make_cache(&mut cache, seed); - - Self { - cache, - cache_size, - full_size, - epoch, - _marker: PhantomData, - } - } - - pub fn hashimoto(&self, hash: H256, nonce: H64) -> (H256, H256) { - crate::hashimoto_light(hash, nonce, self.full_size, &self.cache) - } - - pub fn is_valid_for(&self, number: U256) -> bool { - (number / P::epoch_length()).as_usize() == self.epoch - } -} diff --git a/core/ethash/src/lib.rs b/core/ethash/src/lib.rs deleted file mode 100644 index c5820ac5f..000000000 --- a/core/ethash/src/lib.rs +++ /dev/null @@ -1,360 +0,0 @@ -//! Apache-2 licensed Ethash implementation. - -#![cfg_attr(not(feature = "std"), no_std)] - -extern crate alloc; - -// The reference algorithm used is from https://github.com/ethereum/wiki/wiki/Ethash - -mod dag; -mod miller_rabin; - -pub use dag::{EthereumPatch, LightDAG, Patch}; - -use alloc::vec::Vec; -use byteorder::{ByteOrder, LittleEndian}; -use core::ops::BitXor; -use ethereum_types::{BigEndianHash, H256, H512, H64, U256, U64}; -use miller_rabin::is_prime; -use rlp::Encodable; -use sha3::{Digest, Keccak256, Keccak512}; - -pub const DATASET_BYTES_INIT: usize = 1073741824; // 2 to the power of 30. -pub const DATASET_BYTES_GROWTH: usize = 8388608; // 2 to the power of 23. -pub const CACHE_BYTES_INIT: usize = 16777216; // 2 to the power of 24. -pub const CACHE_BYTES_GROWTH: usize = 131072; // 2 to the power of 17. -pub const CACHE_MULTIPLIER: usize = 1024; -pub const MIX_BYTES: usize = 128; -pub const WORD_BYTES: usize = 4; -pub const HASH_BYTES: usize = 64; -pub const DATASET_PARENTS: usize = 256; -pub const CACHE_ROUNDS: usize = 3; -pub const ACCESSES: usize = 64; - -/// Get the cache size required given the block number. -pub fn get_cache_size(epoch: usize) -> usize { - let mut sz = CACHE_BYTES_INIT + CACHE_BYTES_GROWTH * epoch; - sz -= HASH_BYTES; - while !is_prime((sz / MIX_BYTES) as u64) { - sz -= 2 * HASH_BYTES; - } - sz -} - -/// Get the full dataset size given the block number. -pub fn get_full_size(epoch: usize) -> usize { - let mut sz = DATASET_BYTES_INIT + DATASET_BYTES_GROWTH * epoch; - sz -= MIX_BYTES; - while !is_prime((sz / MIX_BYTES) as u64) { - sz -= 2 * MIX_BYTES - } - sz -} - -fn fill_sha512(input: &[u8], a: &mut [u8], from_index: usize) { - let mut hasher = Keccak512::default(); - hasher.input(input); - let out = hasher.result(); - for i in 0..out.len() { - a[from_index + i] = out[i]; - } -} - -fn fill_sha256(input: &[u8], a: &mut [u8], from_index: usize) { - let mut hasher = Keccak256::default(); - hasher.input(input); - let out = hasher.result(); - for i in 0..out.len() { - a[from_index + i] = out[i]; - } -} - -/// Make an Ethash cache using the given seed. -pub fn make_cache(cache: &mut [u8], seed: H256) { - assert!(cache.len() % HASH_BYTES == 0); - let n = cache.len() / HASH_BYTES; - - fill_sha512(&seed[..], cache, 0); - - for i in 1..n { - let (last, next) = cache.split_at_mut(i * 64); - fill_sha512(&last[(last.len() - 64)..], next, 0); - } - - for _ in 0..CACHE_ROUNDS { - for i in 0..n { - let v = (LittleEndian::read_u32(&cache[(i * 64)..]) as usize) % n; - - let mut r = [0u8; 64]; - for j in 0..64 { - let a = cache[((n + i - 1) % n) * 64 + j]; - let b = cache[v * 64 + j]; - r[j] = a.bitxor(b); - } - fill_sha512(&r, cache, i * 64); - } - } -} - -pub const FNV_PRIME: u32 = 0x01000193; -fn fnv(v1: u32, v2: u32) -> u32 { - let v1 = v1 as u64; - let v2 = v2 as u64; - - ((((v1 * 0x01000000 | 0) + (v1 * 0x193 | 0)) ^ v2) >> 0) as u32 -} - -fn fnv64(a: [u8; 64], b: [u8; 64]) -> [u8; 64] { - let mut r = [0u8; 64]; - for i in 0..(64 / 4) { - let j = i * 4; - - LittleEndian::write_u32( - &mut r[j..], - fnv(LittleEndian::read_u32(&a[j..]), LittleEndian::read_u32(&b[j..])), - ); - } - r -} - -fn fnv128(a: [u8; 128], b: [u8; 128]) -> [u8; 128] { - let mut r = [0u8; 128]; - for i in 0..(128 / 4) { - let j = i * 4; - - LittleEndian::write_u32( - &mut r[j..], - fnv(LittleEndian::read_u32(&a[j..]), LittleEndian::read_u32(&b[j..])), - ); - } - r -} - -/// Calculate the dataset item. -pub fn calc_dataset_item(cache: &[u8], i: usize) -> H512 { - debug_assert!(cache.len() % 64 == 0); - - let n = cache.len() / 64; - let r = HASH_BYTES / WORD_BYTES; - let mut mix = [0u8; 64]; - for j in 0..64 { - mix[j] = cache[(i % n) * 64 + j]; - } - let mix_first32 = LittleEndian::read_u32(mix.as_ref()).bitxor(i as u32); - LittleEndian::write_u32(mix.as_mut(), mix_first32); - { - let mut remix = [0u8; 64]; - for j in 0..64 { - remix[j] = mix[j]; - } - fill_sha512(&remix, &mut mix, 0); - } - for j in 0..DATASET_PARENTS { - let cache_index = fnv( - (i.bitxor(j) & (u32::max_value() as usize)) as u32, - LittleEndian::read_u32(&mix[(j % r * 4)..]), - ) as usize; - let mut item = [0u8; 64]; - let cache_index = cache_index % n; - for i in 0..64 { - item[i] = cache[cache_index * 64 + i]; - } - mix = fnv64(mix, item); - } - let mut z = [0u8; 64]; - fill_sha512(&mix, &mut z, 0); - H512::from(z) -} - -/// Make an Ethash dataset using the given hash. -pub fn make_dataset(dataset: &mut [u8], cache: &[u8]) { - let n = dataset.len() / HASH_BYTES; - for i in 0..n { - let z = calc_dataset_item(cache, i); - for j in 0..64 { - dataset[i * 64 + j] = z[j]; - } - } -} - -/// "Main" function of Ethash, calculating the mix digest and result given the -/// header and nonce. -pub fn hashimoto H512>(header_hash: H256, nonce: H64, full_size: usize, lookup: F) -> (H256, H256) { - let n = full_size / HASH_BYTES; - let w = MIX_BYTES / WORD_BYTES; - const MIXHASHES: usize = MIX_BYTES / HASH_BYTES; - let s = { - let mut hasher = Keccak512::default(); - let mut reversed_nonce: Vec = nonce.as_ref().into(); - reversed_nonce.reverse(); - hasher.input(&header_hash); - hasher.input(&reversed_nonce); - hasher.result() - }; - let mut mix = [0u8; MIX_BYTES]; - for i in 0..MIXHASHES { - for j in 0..64 { - mix[i * HASH_BYTES + j] = s[j]; - } - } - - for i in 0..ACCESSES { - let p = (fnv( - (i as u32).bitxor(LittleEndian::read_u32(s.as_ref())), - LittleEndian::read_u32(&mix[(i % w * 4)..]), - ) as usize) % (n / MIXHASHES) - * MIXHASHES; - let mut newdata = [0u8; MIX_BYTES]; - for j in 0..MIXHASHES { - let v = lookup(p + j); - for k in 0..64 { - newdata[j * 64 + k] = v[k]; - } - } - mix = fnv128(mix, newdata); - } - let mut cmix = [0u8; MIX_BYTES / 4]; - for i in 0..(MIX_BYTES / 4 / 4) { - let j = i * 4; - let a = fnv( - LittleEndian::read_u32(&mix[(j * 4)..]), - LittleEndian::read_u32(&mix[((j + 1) * 4)..]), - ); - let b = fnv(a, LittleEndian::read_u32(&mix[((j + 2) * 4)..])); - let c = fnv(b, LittleEndian::read_u32(&mix[((j + 3) * 4)..])); - - LittleEndian::write_u32(&mut cmix[j..], c); - } - let result = { - let mut hasher = Keccak256::default(); - hasher.input(&s); - hasher.input(&cmix); - let r = hasher.result(); - let mut z = [0u8; 32]; - for i in 0..32 { - z[i] = r[i]; - } - z - }; - (H256::from(cmix), H256::from(result)) -} - -/// Ethash used by a light client. Only stores the 16MB cache rather than the -/// full dataset. -pub fn hashimoto_light(header_hash: H256, nonce: H64, full_size: usize, cache: &[u8]) -> (H256, H256) { - hashimoto(header_hash, nonce, full_size, |i| calc_dataset_item(cache, i)) -} - -/// Ethash used by a full client. Stores the whole dataset in memory. -pub fn hashimoto_full(header_hash: H256, nonce: H64, full_size: usize, dataset: &[u8]) -> (H256, H256) { - hashimoto(header_hash, nonce, full_size, |i| { - let mut r = [0u8; 64]; - for j in 0..64 { - r[j] = dataset[i * 64 + j]; - } - H512::from(r) - }) -} - -/// Convert across boundary. `f(x) = 2 ^ 256 / x`. -pub fn cross_boundary(val: U256) -> U256 { - if val <= U256::one() { - U256::max_value() - } else { - ((U256::one() << 255) / val) << 1 - } -} - -/// Mine a nonce given the header, dataset, and the target. Target is derived -/// from the difficulty. -pub fn mine( - header: &T, - full_size: usize, - dataset: &[u8], - nonce_start: H64, - difficulty: U256, -) -> (H64, H256) { - let target = cross_boundary(difficulty); - let header = rlp::encode(header).to_vec(); - - let mut nonce_current = nonce_start; - loop { - let (_, result) = hashimoto( - H256::from_slice(Keccak256::digest(&header).as_slice()), - nonce_current, - full_size, - |i| { - let mut r = [0u8; 64]; - for j in 0..64 { - r[j] = dataset[i * 64 + j]; - } - H512::from(r) - }, - ); - let result_cmp: U256 = result.into_uint(); - if result_cmp <= target { - return (nonce_current, result); - } - let nonce_u64 = nonce_current.into_uint().as_u64(); - nonce_current = H64::from_uint(&U64::from(nonce_u64 + 1)); - } -} - -/// Get the seedhash for a given block number. -pub fn get_seedhash(epoch: usize) -> H256 { - let mut s = [0u8; 32]; - for _ in 0..epoch { - fill_sha256(&s.clone(), &mut s, 0); - } - H256::from_slice(s.as_ref()) -} - -#[cfg(test)] -mod tests { - use crate::{EthereumPatch, LightDAG}; - use ethereum_types::{H256, H64}; - use hex_literal::*; - - #[test] - fn hashimoto_should_work() { - type DAG = LightDAG; - let light_dag = DAG::new(0x8947a9.into()); - // bare_hash of block#8996777 on ethereum mainnet - let partial_header_hash = H256::from(hex!("3c2e6623b1de8862a927eeeef2b6b25dea6e1d9dad88dca3c239be3959dc384a")); - let mixh = light_dag - .hashimoto(partial_header_hash, H64::from(hex!("a5d3d0ccc8bb8a29"))) - .0; - assert_eq!( - mixh, - H256::from(hex!("543bc0769f7d5df30e7633f4a01552c2cee7baace8a6da37fddaa19e49e81209")) - ); - } - - // #[test] - // fn hashimoto_should_work_on_ropsten() { - // type DAG = LightDAG; - // let light_dag = DAG::new(0x672884.into()); - // let partial_header_hash = H256::from(hex!("9cb3d16b788bfc7f2569db2d1fedb5b1e9633acfe84a4eca44a9fa50979a9887")); - // let mixh = light_dag - // .hashimoto(partial_header_hash, H64::from(hex!("9348d06003756cff"))) - // .0; - // assert_eq!( - // mixh, - // H256::from(hex!("e06f0c107dcc91e9e82de0b42d0e22d5c2cfae5209422fda88cff4f810f4bffb")) - // ); - // } - // - // #[test] - // fn hashimoto_should_work_on_ropsten_earlier() { - // type DAG = LightDAG; - // let light_dag = DAG::new(0x11170.into()); - // let partial_header_hash = H256::from(hex!("bb698ea6e304a7a88a6cd8238f0e766b4f7bf70dc0869bd2e4a76a8e93fffc80")); - // let mixh = light_dag - // .hashimoto(partial_header_hash, H64::from(hex!("475ddd90b151f305"))) - // .0; - // assert_eq!( - // mixh, - // H256::from(hex!("341e3bcf01c921963933253e0cf937020db69206f633e31e0d1c959cdd1188f5")) - // ); - // } -} diff --git a/core/ethash/src/miller_rabin.rs b/core/ethash/src/miller_rabin.rs deleted file mode 100644 index 565d514cc..000000000 --- a/core/ethash/src/miller_rabin.rs +++ /dev/null @@ -1,149 +0,0 @@ -// Derived from https://github.com/huonw/primal/blob/master/primal-check/src/is_prime.rs - -#[derive(Copy, Clone, PartialEq, PartialOrd, Ord, Eq, Debug)] -struct U128 { - hi: u64, - lo: u64, -} - -fn modulo(mut a: U128, m: u64) -> u64 { - if a.hi >= m { - a.hi -= (a.hi / m) * m; - } - let mut x = a.hi; - let mut y = a.lo; - for _ in 0..64 { - let t = (x as i64 >> 63) as u64; - x = (x << 1) | (y >> 63); - y <<= 1; - if (x | t) >= m { - x = x.wrapping_sub(m); - y += 1; - } - } - x -} -fn mul128(u: u64, v: u64) -> U128 { - let u1 = u >> 32; - let u0 = u & (!0 >> 32); - let v1 = v >> 32; - let v0 = v & (!0 >> 32); - - let t = u0 * v0; - let w0 = t & (!0 >> 32); - let k = t >> 32; - - let t = u1 * v0 + k; - let w1 = t & (!0 >> 32); - let w2 = t >> 32; - - let t = u0 * v1 + w1; - let k = t >> 32; - U128 { - lo: (t << 32) + w0, - hi: u1 * v1 + w2 + k, - } -} -fn mod_mul_(a: u64, b: u64, m: u64) -> u64 { - modulo(mul128(a, b), m) -} - -fn mod_mul(a: u64, b: u64, m: u64) -> u64 { - match a.checked_mul(b) { - Some(r) => { - if r >= m { - r % m - } else { - r - } - } - None => mod_mul_(a, b, m), - } -} - -fn mod_sqr(a: u64, m: u64) -> u64 { - if a < (1 << 32) { - let r = a * a; - if r >= m { - r % m - } else { - r - } - } else { - mod_mul_(a, a, m) - } -} - -fn mod_exp(mut x: u64, mut d: u64, n: u64) -> u64 { - let mut ret: u64 = 1; - while d != 0 { - if d % 2 == 1 { - ret = mod_mul(ret, x, n) - } - d /= 2; - x = mod_sqr(x, n); - } - ret -} - -pub fn is_prime(n: u64) -> bool { - const HINT: &'static [u64] = &[2]; - - // we have a strict upper bound, so we can just use the witness - // table of Pomerance, Selfridge & Wagstaff and Jeaschke to be as - // efficient as possible, without having to fall back to - // randomness. - const WITNESSES: &'static [(u64, &'static [u64])] = &[ - (2_046, HINT), - (1_373_652, &[2, 3]), - (9_080_190, &[31, 73]), - (25_326_000, &[2, 3, 5]), - (4_759_123_140, &[2, 7, 61]), - (1_112_004_669_632, &[2, 13, 23, 1662803]), - (2_152_302_898_746, &[2, 3, 5, 7, 11]), - (3_474_749_660_382, &[2, 3, 5, 7, 11, 13]), - (341_550_071_728_320, &[2, 3, 5, 7, 11, 13, 17]), - (0xFFFF_FFFF_FFFF_FFFF, &[2, 3, 5, 7, 11, 13, 17, 19, 23]), - ]; - - if n % 2 == 0 { - return n == 2; - } - if n == 1 { - return false; - } - - let mut d = n - 1; - let mut s = 0; - while d % 2 == 0 { - d /= 2; - s += 1 - } - - let witnesses = WITNESSES - .iter() - .find(|&&(hi, _)| hi >= n) - .map(|&(_, wtnss)| wtnss) - .unwrap(); - 'next_witness: for &a in witnesses.iter() { - let mut power = mod_exp(a, d, n); - assert!(power < n); - if power == 1 || power == n - 1 { - continue 'next_witness; - } - - for _r in 0..s { - power = mod_sqr(power, n); - assert!(power < n); - if power == 1 { - return false; - } - if power == n - 1 { - continue 'next_witness; - } - } - return false; - } - - true -} diff --git a/core/fly-client/Cargo.toml b/core/fly-client/Cargo.toml deleted file mode 100644 index 017d81375..000000000 --- a/core/fly-client/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "fly-client" -version = "0.1.0" -authors = ["Xavier Lau "] -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] - -[features] -default = ["std"] -std = [] diff --git a/core/fly-client/src/lib.rs b/core/fly-client/src/lib.rs deleted file mode 100644 index 8731421b3..000000000 --- a/core/fly-client/src/lib.rs +++ /dev/null @@ -1 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std)] diff --git a/core/merkle-mountain-range/Cargo.toml b/core/merkle-mountain-range/Cargo.toml deleted file mode 100644 index 1a97f4a08..000000000 --- a/core/merkle-mountain-range/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "merkle-mountain-range" -version = "0.1.0" -authors = ["Xavier Lau "] -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -blake2 = { version = "0.8.1", default-features = false } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -rstd = { package = "sr-std", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -system = { package = "srml-system", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } - -[features] -default = ["std"] -std = [ - "codec/std", - "blake2/std", - "rstd/std", -] diff --git a/core/merkle-mountain-range/src/common.rs b/core/merkle-mountain-range/src/common.rs deleted file mode 100644 index e2b6770af..000000000 --- a/core/merkle-mountain-range/src/common.rs +++ /dev/null @@ -1,131 +0,0 @@ -use blake2::Digest; -// for `vec![]` macro -use rstd::vec; -use rstd::vec::Vec; - -const ALL_ONES: usize = usize::max_value(); - -pub type Hash = Vec; - -pub fn peak_map_height(mut index: usize) -> (usize, usize) { - if index == 0 { - return (0, 0); - } - - let mut peak_size = ALL_ONES >> index.leading_zeros(); - let mut bitmap = 0; - while peak_size != 0 { - bitmap <<= 1; - if index >= peak_size { - index -= peak_size; - bitmap |= 1; - } - - peak_size >>= 1; - } - - (bitmap, index) -} - -pub fn peak_indexes(size: usize) -> Vec { - if size == 0 { - return vec![]; - } - - let mut peak_size = ALL_ONES >> size.leading_zeros(); - let mut num_left = size; - let mut sum_prev_peaks = 0; - let mut peaks = vec![]; - - while peak_size != 0 { - if num_left >= peak_size { - sum_prev_peaks += peak_size; - num_left -= peak_size; - - peaks.push(sum_prev_peaks - 1); - } - - peak_size >>= 1; - } - - if num_left > 0 { - vec![] - } else { - peaks - } -} - -#[inline] -pub fn is_leaf(index: usize) -> bool { - bintree_height(index) == 0 -} - -#[inline] -pub fn bintree_height(index: usize) -> usize { - if index == 0 { - 0 - } else { - peak_map_height(index).1 - } -} - -pub fn family_branch(index: usize, last_index: usize) -> Vec<(usize, usize)> { - let (peak_map, height) = peak_map_height(index); - let mut peak = 1 << height; - let mut branch = vec![]; - let mut current = index; - let mut sibling; - while current < last_index { - if (peak_map & peak) != 0 { - current += 1; - sibling = current - 2 * peak; - } else { - current += 2 * peak; - sibling = current - 1; - } - if current > last_index { - break; - } - - branch.push((current, sibling)); - peak <<= 1; - } - - branch -} - -pub fn family(index: usize) -> (usize, usize) { - let (peak_map, height) = peak_map_height(index); - let peak = 1 << height; - - if (peak_map & peak) != 0 { - (index + 1, index + 1 - 2 * peak) - } else { - (index + 2 * peak, index + 2 * peak - 1) - } -} - -#[inline] -pub fn is_left_sibling(index: usize) -> bool { - let (peak_map, height) = peak_map_height(index); - let peak = 1 << height; - (peak_map & peak) == 0 -} - -#[inline] -pub fn leaf_index(n: usize) -> usize { - if n == 0 { - 0 - } else { - 2 * n - n.count_ones() as usize - } -} - -#[inline] -pub fn chain_two_hash(left: H, right: H) -> Hash -where - D: Digest, - H: AsRef<[u8]>, -{ - D::new().chain(left).chain(right).result().to_vec() -} diff --git a/core/merkle-mountain-range/src/lib.rs b/core/merkle-mountain-range/src/lib.rs deleted file mode 100644 index ac21d0d57..000000000 --- a/core/merkle-mountain-range/src/lib.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std)] -#![feature(test)] - -#[cfg(all(feature = "std", test))] -extern crate test; - -mod common; -mod merkle_proof; -mod mmr; - -#[allow(unused)] -#[cfg(all(feature = "std", test))] -mod tests; - -pub use common::*; -pub use merkle_proof::MerkleProof; -pub use mmr::MerkleMountainRange; diff --git a/core/merkle-mountain-range/src/merkle_proof.rs b/core/merkle-mountain-range/src/merkle_proof.rs deleted file mode 100644 index d9984eb54..000000000 --- a/core/merkle-mountain-range/src/merkle_proof.rs +++ /dev/null @@ -1,80 +0,0 @@ -use blake2::Digest; -use rstd::vec::Vec; - -use crate::*; - -#[derive(Clone, Debug)] -pub struct MerkleProof { - pub mmr_size: usize, - // - // λ cargo bench b1 - // Finished bench [optimized] target(s) in 0.00s - // Running target/release/deps/mmr-0c4d672df8c18022 - // - // running 1 test - // test tests::b1 ... bench: 42,015 ns/iter (+/- 23) - // - // test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 2 filtered out - pub path: Vec, - // - // λ cargo bench b1 - // Finished bench [optimized] target(s) in 0.00s - // Running target/release/deps/mmr-0c4d672df8c18022 - // - // running 1 test - // test tests::b1 ... bench: 42,299 ns/iter (+/- 37) - // - // test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 2 filtered out - // pub path: VecDeque, -} - -impl MerkleProof { - pub fn verify(&self, root: H, hash: H, index: usize) -> bool - where - D: Digest, - H: AsRef<[u8]>, - { - self.clone().verify_consume::(root, hash, index) - } - - fn verify_consume(&mut self, root: H, hash: H, index: usize) -> bool - where - D: Digest, - H: AsRef<[u8]>, - { - let root = root.as_ref(); - let hash = hash.as_ref(); - let peak_indexes = peak_indexes(self.mmr_size); - - if self.path.is_empty() { - return root == hash; - } - - let sibling = self.path.remove(0); - // let sibling = self.path.pop_front().unwrap(); - let sibling = sibling.as_ref(); - let (parent_index, sibling_index) = family(index); - - match peak_indexes.binary_search(&index) { - Ok(x) => { - let parent = if x == peak_indexes.len() - 1 { - chain_two_hash::(sibling, hash) - } else { - chain_two_hash::(hash, sibling) - }; - self.verify::(root, &parent, parent_index) - } - _ if parent_index > self.mmr_size => { - self.verify::(root, &chain_two_hash::(sibling, hash), parent_index) - } - _ => { - let parent = if is_left_sibling(sibling_index) { - chain_two_hash::(sibling, hash) - } else { - chain_two_hash::(hash, sibling) - }; - self.verify::(root, &parent, parent_index) - } - } - } -} diff --git a/core/merkle-mountain-range/src/mmr.rs b/core/merkle-mountain-range/src/mmr.rs deleted file mode 100644 index e097323c6..000000000 --- a/core/merkle-mountain-range/src/mmr.rs +++ /dev/null @@ -1,159 +0,0 @@ -use core::{marker::PhantomData, ops::Index}; - -use blake2::Digest; -use codec::{Decode, Encode}; -use rstd::{borrow::ToOwned, vec::Vec}; - -use crate::*; - -#[derive(Clone, Debug, Default, Encode, Decode)] -pub struct MerkleMountainRange { - hashes: Vec, - _hasher: PhantomData, -} - -impl MerkleMountainRange { - pub fn new(hashes: Vec) -> Self { - Self { - hashes, - _hasher: PhantomData, - } - } - - #[inline] - pub fn len(&self) -> usize { - self.hashes.len() - } - - #[inline] - pub fn is_empty(&self) -> bool { - self.hashes.is_empty() - } - - #[inline] - pub fn get(&self, index: usize) -> Option<&Hash> { - self.hashes.get(index) - } - - #[inline] - pub fn push(&mut self, hash: Hash) -> usize { - self.hashes.push(hash); - self.len() - 1 - } - - pub fn append>(&mut self, hash: H) -> Option { - let hash = hash.as_ref(); - - if self.is_empty() { - return Some(self.push(hash.to_owned())); - } - - let mut index = self.len(); - let (peak_map, height) = peak_map_height(index); - - if height != 0 { - return None; - } - - self.push(hash.to_owned()); - - let mut peak = 1; - while (peak_map & peak) != 0 { - let new_hash = chain_two_hash::(&self[index + 1 - 2 * peak], &self[self.len() - 1]); - self.push(new_hash); - - peak *= 2; - index += 1; - } - - Some(index) - } - - pub fn root(&self) -> Option { - if self.is_empty() { - None - } else { - // TODO: bagging strategy - // Some( - // peak_indexes(self.len()) - // .into_iter() - // .fold(D::new(), |hasher, peak_index| { - // hasher.chain(&self[peak_index]) - // }) - // .result() - // .to_vec(), - // ) - - let mut hash = None; - for peak_index in peak_indexes(self.len()).into_iter().rev() { - hash = match hash { - None => Some(self[peak_index].to_owned()), - Some(right_peak) => Some(chain_two_hash::(&self[peak_index], &right_peak)), - } - } - - hash - } - } - - pub fn to_merkle_proof(&self, index: usize) -> Option { - if !is_leaf(index) { - return None; - } - - let family_branch = family_branch(index, self.len()); - let peak_index = if let Some((current, _)) = family_branch.last() { - *current - } else { - index - }; - let mut path: Vec<_> = family_branch - .into_iter() - .map(|(_, sibling)| self.get(sibling).unwrap().to_owned()) - .collect(); - path.append(&mut self.peak_path(peak_index)); - - Some(MerkleProof { - mmr_size: self.len(), - path, - }) - } - - pub fn peak_path(&self, peak_index: usize) -> Vec { - let mut peaks: Vec<_> = peak_indexes(self.len()) - .into_iter() - .filter(|peak_index_| *peak_index_ < peak_index) - .map(|peak_index| self[peak_index].to_owned()) - .collect(); - if let Some(peak) = self.bag_the_rhs(peak_index) { - peaks.push(peak); - } - peaks.reverse(); - - peaks - } - - pub fn bag_the_rhs(&self, peak_index: usize) -> Option { - let peak_indexes: Vec<_> = peak_indexes(self.len()) - .into_iter() - .filter(|peak_index_| *peak_index_ > peak_index) - .collect(); - let mut hash = None; - for peak_index in peak_indexes.into_iter().rev() { - hash = match hash { - None => Some(self[peak_index].to_owned()), - Some(right_peak) => Some(chain_two_hash::(&self[peak_index], &right_peak)), - } - } - - hash - } -} - -impl Index for MerkleMountainRange { - type Output = Hash; - - fn index(&self, index: usize) -> &Self::Output { - &self.hashes[index] - } -} diff --git a/core/merkle-mountain-range/src/tests/mod.rs b/core/merkle-mountain-range/src/tests/mod.rs deleted file mode 100644 index 5ef77be3b..000000000 --- a/core/merkle-mountain-range/src/tests/mod.rs +++ /dev/null @@ -1,73 +0,0 @@ -pub mod support; - -use std::time::Instant; - -use blake2::{Blake2b, Digest}; -use test::Bencher; - -use crate::*; -// pub use support::{Digest, *}; - -type Hasher = Blake2b; -// type Hasher = DebugHasher; - -fn mmr_with_count(count: usize) -> MerkleMountainRange { - let mut mmr = MerkleMountainRange::::new(vec![]); - for i in 0..count { - let hash = usize_to_hash(i); - mmr.append(&hash); - } - - mmr -} - -fn usize_to_hash(x: usize) -> Hash { - Hasher::digest(&x.to_le_bytes()).to_vec() -} - -#[test] -fn t1() { - let mmr = mmr_with_count(6); - let a = chain_two_hash::(&mmr[0], &mmr[1]); - let b = chain_two_hash::(&a, &mmr[5]); - let c = chain_two_hash::(&mmr[7], &mmr[8]); - let d = chain_two_hash::(&b, &c); - assert_eq!(mmr.root().unwrap(), d); -} - -#[test] -fn t2() { - let mmr = mmr_with_count(6); - let root = mmr.root().unwrap(); - let index = 0; - let hash = usize_to_hash(index); - let proof = mmr.to_merkle_proof(index).unwrap(); - assert!(proof.verify::(root, hash, index)); -} - -#[bench] -fn b1(b: &mut Bencher) { - let mmr = mmr_with_count(10_000_000); - let index = 23_333; - let mmr_index = leaf_index(index); - let root = mmr.root().unwrap(); - let hash = usize_to_hash(index); - let proof = mmr.to_merkle_proof(mmr_index).unwrap(); - - b.iter(|| assert!(proof.verify::(root.clone(), hash.clone(), mmr_index))); -} - -#[test] -fn b2() { - let mmr = mmr_with_count(100_000_000); - let index = 233_333; - let mmr_index = leaf_index(index); - let root = mmr.root().unwrap(); - let hash = usize_to_hash(index); - - let start = Instant::now(); - let proof = mmr.to_merkle_proof(mmr_index).unwrap(); - proof.verify::(root, hash, mmr_index); - let elapsed = start.elapsed(); - println!("{}", elapsed.as_nanos()); -} diff --git a/core/merkle-mountain-range/src/tests/support.rs b/core/merkle-mountain-range/src/tests/support.rs deleted file mode 100644 index 23676e244..000000000 --- a/core/merkle-mountain-range/src/tests/support.rs +++ /dev/null @@ -1,41 +0,0 @@ -pub struct DebugHasher; - -pub trait Digest { - fn new() -> Self; - - fn chain>(self, data: B) -> Self - where - Self: Sized; - - fn result(self) -> Vec; - - fn digest(data: &[u8]) -> Vec; -} - -impl Specify for DebugHasher { - fn new() -> Self { - DebugHasher - } -} - -impl Digest for D { - fn new() -> Self { - ::new() - } - - fn chain>(self, data: B) -> Self { - self - } - - fn result(self) -> Vec { - unimplemented!() - } - - fn digest(data: &[u8]) -> Vec { - unimplemented!() - } -} - -pub trait Specify { - fn new() -> Self; -} diff --git a/core/merkle-patricia-trie/Cargo.toml b/core/merkle-patricia-trie/Cargo.toml deleted file mode 100644 index 12f3e679a..000000000 --- a/core/merkle-patricia-trie/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "merkle-patricia-trie" -version = "0.1.0" -authors = ["Darwinia Network "] -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -rlp = { git = "https://github.com/darwinia-network/parity-common.git", default-features = false } -hash = { package = "keccak-hash", git = "https://github.com/darwinia-network/parity-common.git", default-features = false } -hashbrown = { version = "0.6.0" } -rstd = { package = "sr-std", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } - -[dev-dependencies] -rand = "0.6.3" -hex = "0.3.2" -criterion = "0.2.10" -ethereum-types = "0.5.2" -uuid = { version = "0.7", features = ["serde", "v4"] } - -[features] -default = ["std"] -std = [ - "rlp/std", - "hash/std" -] - -[[bench]] -name = "trie" -harness = false \ No newline at end of file diff --git a/core/merkle-patricia-trie/benches/trie.rs b/core/merkle-patricia-trie/benches/trie.rs deleted file mode 100644 index 5ee3a89cd..000000000 --- a/core/merkle-patricia-trie/benches/trie.rs +++ /dev/null @@ -1,99 +0,0 @@ -use std::rc::Rc; - -use criterion::{criterion_group, criterion_main, Criterion}; -use merkle_patricia_trie::{MemoryDB, MerklePatriciaTrie, Trie}; -use uuid::Uuid; - -fn insert_worse_case_benchmark(c: &mut Criterion) { - c.bench_function("insert one", |b| { - let mut trie = MerklePatriciaTrie::new(Rc::new(MemoryDB::new())); - - b.iter(|| { - let key = Uuid::new_v4().as_bytes().to_vec(); - let value = Uuid::new_v4().as_bytes().to_vec(); - trie.insert(key, value).unwrap() - }) - }); - - c.bench_function("insert 1k", |b| { - let mut trie = MerklePatriciaTrie::new(Rc::new(MemoryDB::new())); - - let (keys, values) = random_data(1000); - b.iter(|| { - for i in 0..keys.len() { - trie.insert(keys[i].clone(), values[i].clone()).unwrap() - } - }); - }); - - c.bench_function("insert 10k", |b| { - let mut trie = MerklePatriciaTrie::new(Rc::new(MemoryDB::new())); - - let (keys, values) = random_data(10000); - b.iter(|| { - for i in 0..keys.len() { - trie.insert(keys[i].clone(), values[i].clone()).unwrap() - } - }); - }); - - c.bench_function("get based 10k", |b| { - let mut trie = MerklePatriciaTrie::new(Rc::new(MemoryDB::new())); - - let (keys, values) = random_data(10000); - for i in 0..keys.len() { - trie.insert(keys[i].clone(), values[i].clone()).unwrap() - } - - b.iter(|| { - let key = trie.get(&keys[7777]).unwrap(); - assert_ne!(key, None); - }); - }); - - c.bench_function("remove 1k", |b| { - let mut trie = MerklePatriciaTrie::new(Rc::new(MemoryDB::new())); - - let (keys, values) = random_data(1000); - for i in 0..keys.len() { - trie.insert(keys[i].clone(), values[i].clone()).unwrap() - } - - b.iter(|| { - for key in keys.iter() { - trie.remove(key).unwrap(); - } - }); - }); - - c.bench_function("remove 10k", |b| { - let mut trie = MerklePatriciaTrie::new(Rc::new(MemoryDB::new())); - - let (keys, values) = random_data(10000); - for i in 0..keys.len() { - trie.insert(keys[i].clone(), values[i].clone()).unwrap() - } - - b.iter(|| { - for key in keys.iter() { - trie.remove(key).unwrap(); - } - }); - }); -} - -fn random_data(n: usize) -> (Vec>, Vec>) { - let mut keys = Vec::with_capacity(n); - let mut values = Vec::with_capacity(n); - for _ in 0..n { - let key = Uuid::new_v4().as_bytes().to_vec(); - let value = Uuid::new_v4().as_bytes().to_vec(); - keys.push(key); - values.push(value); - } - - (keys, values) -} - -criterion_group!(benches, insert_worse_case_benchmark); -criterion_main!(benches); diff --git a/core/merkle-patricia-trie/src/db.rs b/core/merkle-patricia-trie/src/db.rs deleted file mode 100644 index 5122b60e4..000000000 --- a/core/merkle-patricia-trie/src/db.rs +++ /dev/null @@ -1,52 +0,0 @@ -use hashbrown::HashMap; -use rstd::{cell::RefCell, vec::Vec}; - -#[derive(Debug)] -pub struct MemoryDB { - data: RefCell, Vec>>, -} - -impl MemoryDB { - pub fn new() -> Self { - MemoryDB { - data: RefCell::new(HashMap::new()), - } - } - - pub fn get(&self, key: &[u8]) -> Option> { - let data = self.data.borrow(); - if let Some(d) = data.get(key) { - Some(d.clone()) - } else { - None - } - } - - pub fn insert(&self, key: Vec, value: Vec) -> Option> { - self.data.borrow_mut().insert(key, value) - } - - pub fn contains(&self, key: &[u8]) -> bool { - self.data.borrow().contains_key(key) - } - - pub fn remove(&self, key: &[u8]) -> Option> { - self.data.borrow_mut().remove(key) - } - - /// Insert a batch of data into the cache. - pub fn insert_batch(&self, keys: Vec>, values: Vec>) { - for i in 0..keys.len() { - let key = keys[i].clone(); - let value = values[i].clone(); - self.insert(key, value); - } - } - - /// Remove a batch of data into the cache. - pub fn remove_batch(&self, keys: &[Vec]) { - for key in keys { - self.remove(key); - } - } -} diff --git a/core/merkle-patricia-trie/src/error.rs b/core/merkle-patricia-trie/src/error.rs deleted file mode 100644 index 9ebb98a96..000000000 --- a/core/merkle-patricia-trie/src/error.rs +++ /dev/null @@ -1,38 +0,0 @@ -use rlp::DecoderError; -use rstd::{borrow::ToOwned, fmt}; - -#[cfg(not(feature = "std"))] -extern crate alloc; - -#[cfg(not(feature = "std"))] -use alloc::format; -#[cfg(not(feature = "std"))] -use alloc::string::String; - -#[derive(Debug)] -pub enum TrieError { - DB(String), - Decoder(DecoderError), - InvalidData, - InvalidStateRoot, - InvalidProof, -} - -impl fmt::Display for TrieError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let printable = match *self { - TrieError::DB(ref err) => format!("trie error: {:?}", err), - TrieError::Decoder(ref err) => format!("trie error: {:?}", err), - TrieError::InvalidData => "trie error: invalid data".to_owned(), - TrieError::InvalidStateRoot => "trie error: invalid state root".to_owned(), - TrieError::InvalidProof => "trie error: invalid proof".to_owned(), - }; - write!(f, "{}", printable) - } -} - -impl From for TrieError { - fn from(error: DecoderError) -> Self { - TrieError::Decoder(error) - } -} diff --git a/core/merkle-patricia-trie/src/lib.rs b/core/merkle-patricia-trie/src/lib.rs deleted file mode 100644 index 77c841b0a..000000000 --- a/core/merkle-patricia-trie/src/lib.rs +++ /dev/null @@ -1,75 +0,0 @@ -// Ensure we're `no_std` when compiling for Wasm. -#![cfg_attr(not(feature = "std"), no_std)] - -use rstd::rc::Rc; - -mod db; -mod error; -mod nibbles; -mod node; -mod proof; -mod tests; -pub mod trie; - -pub use db::MemoryDB; -pub use error::TrieError; -pub use proof::Proof; -pub use trie::{MerklePatriciaTrie, Trie, TrieResult}; - -/// Generates a trie for a vector of key-value tuples -/// -/// ```rust -/// extern crate merkle_patricia_trie as trie; -/// extern crate hex; -/// -/// use trie::{Trie, build_trie}; -/// use hex::FromHex; -/// -/// fn main() { -/// let v = vec![ -/// ("doe", "reindeer"), -/// ("dog", "puppy"), -/// ("dogglesworth", "cat"), -/// ]; -/// -/// let root:Vec = Vec::from_hex("8aad789dff2f538bca5d8ea56e8abe10f4c7ba3a5dea95fea4cd6e7c3a1168d3").unwrap(); -/// assert_eq!(build_trie(v).unwrap().root().unwrap(), root); -/// } -/// ``` -pub fn build_trie(data: I) -> TrieResult -where - I: IntoIterator, - A: AsRef<[u8]> + Ord, - B: AsRef<[u8]>, -{ - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(memdb.clone()); - for (k, v) in data { - trie.insert(k.as_ref().to_vec(), v.as_ref().to_vec())?; - } - trie.root()?; - Ok(trie) -} - -/// Generates a trie for a vector of values -/// -/// ```rust -/// extern crate merkle_patricia_trie as trie; -/// extern crate hex; -/// -/// use trie::{Trie, build_order_trie}; -/// use hex::FromHex; -/// -/// fn main() { -/// let v = &["doe", "reindeer"]; -/// let root:Vec = Vec::from_hex("e766d5d51b89dc39d981b41bda63248d7abce4f0225eefd023792a540bcffee3").unwrap(); -/// assert_eq!(build_order_trie(v).unwrap().root().unwrap(), root); -/// } -/// ``` -pub fn build_order_trie(data: I) -> TrieResult -where - I: IntoIterator, - I::Item: AsRef<[u8]>, -{ - build_trie(data.into_iter().enumerate().map(|(i, v)| (rlp::encode(&i), v))) -} diff --git a/core/merkle-patricia-trie/src/nibbles.rs b/core/merkle-patricia-trie/src/nibbles.rs deleted file mode 100644 index 69784314a..000000000 --- a/core/merkle-patricia-trie/src/nibbles.rs +++ /dev/null @@ -1,185 +0,0 @@ -use core::cmp::min; -use rstd::{vec, vec::Vec}; - -#[derive(Debug, Clone, Eq, PartialEq)] -pub struct Nibbles { - hex_data: Vec, -} - -impl Nibbles { - pub fn from_hex(hex: Vec) -> Self { - Nibbles { hex_data: hex } - } - - pub fn from_raw(raw: Vec, is_leaf: bool) -> Self { - let mut hex_data = vec![]; - for item in raw.into_iter() { - hex_data.push(item / 16); - hex_data.push(item % 16); - } - if is_leaf { - hex_data.push(16); - } - Nibbles { hex_data } - } - - pub fn from_compact(compact: Vec) -> Self { - let mut hex = vec![]; - let flag = compact[0]; - - let mut is_leaf = false; - match flag >> 4 { - 0x0 => {} - 0x1 => hex.push(flag % 16), - 0x2 => is_leaf = true, - 0x3 => { - is_leaf = true; - hex.push(flag % 16); - } - _ => panic!("invalid data"), - } - - for item in &compact[1..] { - hex.push(item / 16); - hex.push(item % 16); - } - if is_leaf { - hex.push(16); - } - - Nibbles { hex_data: hex } - } - - pub fn is_leaf(&self) -> bool { - self.hex_data[self.hex_data.len() - 1] == 16 - } - - pub fn encode_compact(&self) -> Vec { - let mut compact = vec![]; - let is_leaf = self.is_leaf(); - let mut hex = if is_leaf { - &self.hex_data[0..self.hex_data.len() - 1] - } else { - &self.hex_data[0..] - }; - // node type path length | prefix hexchar - // -------------------------------------------------- - // extension even | 0000 0x0 - // extension odd | 0001 0x1 - // leaf even | 0010 0x2 - // leaf odd | 0011 0x3 - let v = if hex.len() % 2 == 1 { - let v = 0x10 + hex[0]; - hex = &hex[1..]; - v - } else { - 0x00 - }; - - compact.push(v + if is_leaf { 0x20 } else { 0x00 }); - for i in 0..(hex.len() / 2) { - compact.push((hex[i * 2] * 16) + (hex[i * 2 + 1])); - } - - compact - } - - pub fn encode_raw(&self) -> (Vec, bool) { - let mut raw = vec![]; - let is_leaf = self.is_leaf(); - let hex = if is_leaf { - &self.hex_data[0..self.hex_data.len() - 1] - } else { - &self.hex_data[0..] - }; - - for i in 0..(hex.len() / 2) { - raw.push((hex[i * 2] * 16) + (hex[i * 2 + 1])); - } - - (raw, is_leaf) - } - - pub fn len(&self) -> usize { - self.hex_data.len() - } - - pub fn is_empty(&self) -> bool { - self.len() == 0 - } - - pub fn at(&self, i: usize) -> usize { - self.hex_data[i] as usize - } - - pub fn common_prefix(&self, other_partial: &Nibbles) -> usize { - let s = min(self.len(), other_partial.len()); - let mut i = 0usize; - while i < s { - if self.at(i) != other_partial.at(i) { - break; - } - i += 1; - } - i - } - - pub fn offset(&self, index: usize) -> Nibbles { - self.slice(index, self.hex_data.len()) - } - - pub fn slice(&self, start: usize, end: usize) -> Nibbles { - Nibbles::from_hex(self.hex_data[start..end].to_vec()) - } - - pub fn get_data(&self) -> &[u8] { - &self.hex_data - } - - pub fn join(&self, b: &Nibbles) -> Nibbles { - let mut hex_data = vec![]; - hex_data.extend_from_slice(self.get_data()); - hex_data.extend_from_slice(b.get_data()); - Nibbles::from_hex(hex_data) - } - - pub fn extend(&mut self, b: &Nibbles) { - self.hex_data.extend_from_slice(b.get_data()); - } - - pub fn truncate(&mut self, len: usize) { - self.hex_data.truncate(len) - } - - pub fn pop(&mut self) -> Option { - self.hex_data.pop() - } - - pub fn push(&mut self, e: u8) { - self.hex_data.push(e) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_nibble() { - let n = Nibbles::from_raw(b"key1".to_vec(), true); - let compact = n.encode_compact(); - let n2 = Nibbles::from_compact(compact.clone()); - let (raw, is_leaf) = n2.encode_raw(); - - println!( - "source: {:?} \n n: {:?} \n compact: {:?} \n n2: {:?} \n raw: {:?}", - b"key1".to_vec(), - n, - compact, - n2, - raw - ); - assert_eq!(is_leaf, true); - assert_eq!(raw, b"key1"); - } -} diff --git a/core/merkle-patricia-trie/src/node.rs b/core/merkle-patricia-trie/src/node.rs deleted file mode 100644 index 165d5df40..000000000 --- a/core/merkle-patricia-trie/src/node.rs +++ /dev/null @@ -1,92 +0,0 @@ -use crate::nibbles::Nibbles; -use rstd::{cell::RefCell, rc::Rc, vec::Vec}; - -#[derive(Debug, Clone)] -pub enum Node { - Empty, - Leaf(Rc>), - Extension(Rc>), - Branch(Rc>), - Hash(Rc>), -} - -impl Node { - pub fn from_leaf(key: Nibbles, value: Vec) -> Self { - let leaf = Rc::new(RefCell::new(LeafNode { key, value })); - Node::Leaf(leaf) - } - - pub fn from_branch(children: [Node; 16], value: Option>) -> Self { - let branch = Rc::new(RefCell::new(BranchNode { children, value })); - Node::Branch(branch) - } - - pub fn from_extension(prefix: Nibbles, node: Node) -> Self { - let ext = Rc::new(RefCell::new(ExtensionNode { prefix, node })); - Node::Extension(ext) - } - - pub fn from_hash(hash: Vec) -> Self { - let hash_node = Rc::new(RefCell::new(HashNode { hash })); - Node::Hash(hash_node) - } -} - -#[derive(Debug)] -pub struct LeafNode { - pub key: Nibbles, - pub value: Vec, -} - -#[derive(Debug)] -pub struct BranchNode { - pub children: [Node; 16], - pub value: Option>, -} - -impl BranchNode { - pub fn insert(&mut self, i: usize, n: Node) { - if i == 16 { - match n { - Node::Leaf(leaf) => { - self.value = Some(leaf.borrow().value.clone()); - } - _ => panic!("The n must be leaf node"), - } - } else { - self.children[i] = n - } - } -} - -#[derive(Debug)] -pub struct ExtensionNode { - pub prefix: Nibbles, - pub node: Node, -} - -#[derive(Debug)] -pub struct HashNode { - pub hash: Vec, -} - -pub fn empty_children() -> [Node; 16] { - [ - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - Node::Empty, - ] -} diff --git a/core/merkle-patricia-trie/src/proof.rs b/core/merkle-patricia-trie/src/proof.rs deleted file mode 100644 index cd54a98a6..000000000 --- a/core/merkle-patricia-trie/src/proof.rs +++ /dev/null @@ -1,52 +0,0 @@ -use rlp::{Decodable, DecoderError, Encodable, Rlp, RlpStream}; -use rstd::vec::Vec; - -#[derive(Clone)] -#[cfg_attr(feature = "std", derive(Debug, PartialEq))] -pub struct Proof { - pub nodes: Vec>, -} - -impl Proof { - pub fn to_rlp(&self) -> Vec { - rlp::encode(self) - } - - pub fn len(&self) -> usize { - self.nodes.len() - } -} - -impl From>> for Proof { - fn from(data: Vec>) -> Proof { - Proof { nodes: data } - } -} - -impl Decodable for Proof { - fn decode(r: &Rlp) -> Result { - Ok(Proof { nodes: r.list_at(0)? }) - } -} - -impl Encodable for Proof { - fn rlp_append(&self, s: &mut RlpStream) { - s.begin_list(1); - s.append_list::, Vec>(&self.nodes); - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_encode_decode() { - let nodes = vec![vec![0u8], vec![1], vec![2]]; - let expected = Proof { nodes }; - let rlp_proof = rlp::encode(&expected); - let out_proof: Proof = rlp::decode(&rlp_proof).unwrap(); - println!("{:?}", out_proof); - assert_eq!(expected, out_proof); - } -} diff --git a/core/merkle-patricia-trie/src/tests.rs b/core/merkle-patricia-trie/src/tests.rs deleted file mode 100644 index 0b3477c6a..000000000 --- a/core/merkle-patricia-trie/src/tests.rs +++ /dev/null @@ -1,658 +0,0 @@ -#[cfg(test)] -mod trie_tests { - use std::rc::Rc; - - use hex::FromHex; - use rand::Rng; - use rlp::{self}; - - use crate::db::MemoryDB; - use crate::proof::Proof; - use crate::trie::*; - - fn assert_root(data: Vec<(&[u8], &[u8])>, hash: &str) { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(Rc::clone(&memdb)); - for (k, v) in data.into_iter() { - trie.insert(k.to_vec(), v.to_vec()).unwrap(); - } - let r = trie.root().unwrap(); - let rs = format!("0x{}", hex::encode(r.clone())); - assert_eq!(rs.as_str(), hash); - let mut trie = MerklePatriciaTrie::from(Rc::clone(&memdb), &r).unwrap(); - let r2 = trie.root().unwrap(); - let rs2 = format!("0x{}", hex::encode(r2)); - assert_eq!(rs2.as_str(), hash); - } - - #[test] - fn test_root() { - // See: https://github.com/ethereum/tests/blob/develop/TrieTests - // Copy from trietest.json and trieanyorder.json - assert_root( - vec![(b"A", b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")], - "0xd23786fb4a010da3ce639d66d5e904a11dbc02746d1ce25029e53290cabf28ab", - ); - assert_root( - vec![(b"doe", b"reindeer"), (b"dog", b"puppy"), (b"dogglesworth", b"cat")], - "0x8aad789dff2f538bca5d8ea56e8abe10f4c7ba3a5dea95fea4cd6e7c3a1168d3", - ); - assert_root( - vec![ - (b"do", b"verb"), - (b"horse", b"stallion"), - (b"doge", b"coin"), - (b"dog", b"puppy"), - ], - "0x5991bb8c6514148a29db676a14ac506cd2cd5775ace63c30a4fe457715e9ac84", - ); - assert_root( - vec![(b"foo", b"bar"), (b"food", b"bass")], - "0x17beaa1648bafa633cda809c90c04af50fc8aed3cb40d16efbddee6fdf63c4c3", - ); - - assert_root( - vec![(b"be", b"e"), (b"dog", b"puppy"), (b"bed", b"d")], - "0x3f67c7a47520f79faa29255d2d3c084a7a6df0453116ed7232ff10277a8be68b", - ); - assert_root( - vec![(b"test", b"test"), (b"te", b"testy")], - "0x8452568af70d8d140f58d941338542f645fcca50094b20f3c3d8c3df49337928", - ); - assert_root( - vec![ - ( - Vec::from_hex("0045").unwrap().as_slice(), - Vec::from_hex("0123456789").unwrap().as_slice(), - ), - ( - Vec::from_hex("4500").unwrap().as_slice(), - Vec::from_hex("9876543210").unwrap().as_slice(), - ), - ], - "0x285505fcabe84badc8aa310e2aae17eddc7d120aabec8a476902c8184b3a3503", - ); - assert_root( - vec![ - (b"do", b"verb"), - (b"ether", b"wookiedoo"), - (b"horse", b"stallion"), - (b"shaman", b"horse"), - (b"doge", b"coin"), - (b"ether", b""), - (b"dog", b"puppy"), - (b"shaman", b""), - ], - "0x5991bb8c6514148a29db676a14ac506cd2cd5775ace63c30a4fe457715e9ac84", - ); - assert_root( - vec![ - (b"do", b"verb"), - (b"ether", b"wookiedoo"), - (b"horse", b"stallion"), - (b"shaman", b"horse"), - (b"doge", b"coin"), - (b"ether", b""), - (b"dog", b"puppy"), - (b"shaman", b""), - ], - "0x5991bb8c6514148a29db676a14ac506cd2cd5775ace63c30a4fe457715e9ac84", - ); - assert_root( - vec![ - ( - Vec::from_hex("04110d816c380812a427968ece99b1c963dfbce6") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("095e7baea6a6c7c4c2dfeb977efac326af552d87") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("0a517d755cebbf66312b30fff713666a9cb917e0") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("24dd378f51adc67a50e339e8031fe9bd4aafab36") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("293f982d000532a7861ab122bdc4bbfd26bf9030") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("2cf5732f017b0cf1b1f13a1478e10239716bf6b5") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("31c640b92c21a1f1465c91070b4b3b4d6854195f") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("37f998764813b136ddf5a754f34063fd03065e36") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("37fa399a749c121f8a15ce77e3d9f9bec8020d7a") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("4f36659fa632310b6ec438dea4085b522a2dd077") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("62c01474f089b07dae603491675dc5b5748f7049") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("729af7294be595a0efd7d891c9e51f89c07950c7") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("83e3e5a16d3b696a0314b30b2534804dd5e11197") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("8703df2417e0d7c59d063caa9583cb10a4d20532") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("8dffcd74e5b5923512916c6a64b502689cfa65e1") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("95a4d7cccb5204733874fa87285a176fe1e9e240") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("99b2fcba8120bedd048fe79f5262a6690ed38c39") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("a4202b8b8afd5354e3e40a219bdc17f6001bf2cf") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("a94f5374fce5edbc8e2a8697c15331677e6ebf0b") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("a9647f4a0a14042d91dc33c0328030a7157c93ae") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("aa6cffe5185732689c18f37a7f86170cb7304c2a") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("aae4a2e3c51c04606dcb3723456e58f3ed214f45") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("c37a43e940dfb5baf581a0b82b351d48305fc885") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("d2571607e241ecf590ed94b12d87c94babe36db6") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("f735071cbee190d76b704ce68384fc21e389fbe7") - .unwrap() - .as_slice(), - b"something", - ), - ( - Vec::from_hex("04110d816c380812a427968ece99b1c963dfbce6") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("095e7baea6a6c7c4c2dfeb977efac326af552d87") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("0a517d755cebbf66312b30fff713666a9cb917e0") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("24dd378f51adc67a50e339e8031fe9bd4aafab36") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("293f982d000532a7861ab122bdc4bbfd26bf9030") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("2cf5732f017b0cf1b1f13a1478e10239716bf6b5") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("31c640b92c21a1f1465c91070b4b3b4d6854195f") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("37f998764813b136ddf5a754f34063fd03065e36") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("37fa399a749c121f8a15ce77e3d9f9bec8020d7a") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("4f36659fa632310b6ec438dea4085b522a2dd077") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("62c01474f089b07dae603491675dc5b5748f7049") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("729af7294be595a0efd7d891c9e51f89c07950c7") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("83e3e5a16d3b696a0314b30b2534804dd5e11197") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("8703df2417e0d7c59d063caa9583cb10a4d20532") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("8dffcd74e5b5923512916c6a64b502689cfa65e1") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("95a4d7cccb5204733874fa87285a176fe1e9e240") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("99b2fcba8120bedd048fe79f5262a6690ed38c39") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("a4202b8b8afd5354e3e40a219bdc17f6001bf2cf") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("a94f5374fce5edbc8e2a8697c15331677e6ebf0b") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("a9647f4a0a14042d91dc33c0328030a7157c93ae") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("aa6cffe5185732689c18f37a7f86170cb7304c2a") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("aae4a2e3c51c04606dcb3723456e58f3ed214f45") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("c37a43e940dfb5baf581a0b82b351d48305fc885") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("d2571607e241ecf590ed94b12d87c94babe36db6") - .unwrap() - .as_slice(), - b"", - ), - ( - Vec::from_hex("f735071cbee190d76b704ce68384fc21e389fbe7") - .unwrap() - .as_slice(), - b"", - ), - ], - "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - ); - assert_root( - vec![ - ( - Vec::from_hex("0000000000000000000000000000000000000000000000000000000000000045") - .unwrap() - .as_slice(), - Vec::from_hex("22b224a1420a802ab51d326e29fa98e34c4f24ea") - .unwrap() - .as_slice(), - ), - ( - Vec::from_hex("0000000000000000000000000000000000000000000000000000000000000046") - .unwrap() - .as_slice(), - Vec::from_hex("67706c2076330000000000000000000000000000000000000000000000000000") - .unwrap() - .as_slice(), - ), - ( - Vec::from_hex("0000000000000000000000000000000000000000000000000000001234567890") - .unwrap() - .as_slice(), - Vec::from_hex("697c7b8c961b56f675d570498424ac8de1a918f6") - .unwrap() - .as_slice(), - ), - ( - Vec::from_hex("000000000000000000000000697c7b8c961b56f675d570498424ac8de1a918f6") - .unwrap() - .as_slice(), - Vec::from_hex("1234567890").unwrap().as_slice(), - ), - ( - Vec::from_hex("0000000000000000000000007ef9e639e2733cb34e4dfc576d4b23f72db776b2") - .unwrap() - .as_slice(), - Vec::from_hex("4655474156000000000000000000000000000000000000000000000000000000") - .unwrap() - .as_slice(), - ), - ( - Vec::from_hex("000000000000000000000000ec4f34c97e43fbb2816cfd95e388353c7181dab1") - .unwrap() - .as_slice(), - Vec::from_hex("4e616d6552656700000000000000000000000000000000000000000000000000") - .unwrap() - .as_slice(), - ), - ( - Vec::from_hex("4655474156000000000000000000000000000000000000000000000000000000") - .unwrap() - .as_slice(), - Vec::from_hex("7ef9e639e2733cb34e4dfc576d4b23f72db776b2") - .unwrap() - .as_slice(), - ), - ( - Vec::from_hex("4e616d6552656700000000000000000000000000000000000000000000000000") - .unwrap() - .as_slice(), - Vec::from_hex("ec4f34c97e43fbb2816cfd95e388353c7181dab1") - .unwrap() - .as_slice(), - ), - ( - Vec::from_hex("0000000000000000000000000000000000000000000000000000001234567890") - .unwrap() - .as_slice(), - Vec::from_hex("").unwrap().as_slice(), - ), - ( - Vec::from_hex("000000000000000000000000697c7b8c961b56f675d570498424ac8de1a918f6") - .unwrap() - .as_slice(), - Vec::from_hex("6f6f6f6820736f2067726561742c207265616c6c6c793f000000000000000000") - .unwrap() - .as_slice(), - ), - ( - Vec::from_hex("6f6f6f6820736f2067726561742c207265616c6c6c793f000000000000000000") - .unwrap() - .as_slice(), - Vec::from_hex("697c7b8c961b56f675d570498424ac8de1a918f6") - .unwrap() - .as_slice(), - ), - ], - "0x9f6221ebb8efe7cff60a716ecb886e67dd042014be444669f0159d8e68b42100", - ); - assert_root( - vec![ - (b"key1aa", b"0123456789012345678901234567890123456789xxx"), - (b"key1", b"0123456789012345678901234567890123456789Very_Long"), - (b"key2bb", b"aval3"), - (b"key2", b"short"), - (b"key3cc", b"aval3"), - (b"key3", b"1234567890123456789012345678901"), - ], - "0xcb65032e2f76c48b82b5c24b3db8f670ce73982869d38cd39a624f23d62a9e89", - ); - assert_root( - vec![(b"abc", b"123"), (b"abcd", b"abcd"), (b"abc", b"abc")], - "0x7a320748f780ad9ad5b0837302075ce0eeba6c26e3d8562c67ccc0f1b273298a", - ); - } - - // proof test ref: - // - https://github.com/ethereum/go-ethereum/blob/master/trie/proof_test.go - // - https://github.com/ethereum/py-trie/blob/master/tests/test_proof.py - #[test] - fn test_proof_basic() { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(Rc::clone(&memdb)); - trie.insert(b"doe".to_vec(), b"reindeer".to_vec()).unwrap(); - trie.insert(b"dog".to_vec(), b"puppy".to_vec()).unwrap(); - trie.insert(b"dogglesworth".to_vec(), b"cat".to_vec()).unwrap(); - let root = trie.root().unwrap(); - let r = format!("0x{}", hex::encode(trie.root().unwrap())); - assert_eq!( - r.as_str(), - "0x8aad789dff2f538bca5d8ea56e8abe10f4c7ba3a5dea95fea4cd6e7c3a1168d3" - ); - - // proof of key exists - let proof = trie.get_proof(b"doe").unwrap(); - let expected = vec![ - "e5831646f6a0db6ae1fda66890f6693f36560d36b4dca68b4d838f17016b151efe1d4c95c453", - "f83b8080808080ca20887265696e6465657280a037efd11993cb04a54048c25320e9f29c50a432d28afdf01598b2978ce1ca3068808080808080808080", - ]; - assert_eq!( - proof.clone().nodes.into_iter().map(hex::encode).collect::>(), - expected - ); - let value = MerklePatriciaTrie::verify_proof(root.clone(), b"doe", proof).unwrap(); - assert_eq!(value, Some(b"reindeer".to_vec())); - - // proof of key not exist - let proof = trie.get_proof(b"dogg").unwrap(); - let expected = vec![ - "e5831646f6a0db6ae1fda66890f6693f36560d36b4dca68b4d838f17016b151efe1d4c95c453", - "f83b8080808080ca20887265696e6465657280a037efd11993cb04a54048c25320e9f29c50a432d28afdf01598b2978ce1ca3068808080808080808080", - "e4808080808080ce89376c6573776f72746883636174808080808080808080857075707079", - ]; - assert_eq!( - proof.clone().nodes.into_iter().map(hex::encode).collect::>(), - expected - ); - let value = MerklePatriciaTrie::verify_proof(root.clone(), b"dogg", proof).unwrap(); - assert_eq!(value, None); - - // empty proof - let proof = vec![]; - let value = MerklePatriciaTrie::verify_proof(root.clone(), b"doe", proof.into()); - assert_eq!(value.is_err(), true); - - // bad proof - let proof = vec![b"aaa".to_vec(), b"ccc".to_vec()]; - let value = MerklePatriciaTrie::verify_proof(root.clone(), b"doe", proof.into()); - assert_eq!(value.is_err(), true); - } - - #[test] - fn test_proof_random() { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(Rc::clone(&memdb)); - let mut rng = rand::thread_rng(); - let mut keys = vec![]; - for _ in 0..100 { - let random_bytes: Vec = (0..rng.gen_range(2, 30)).map(|_| rand::random::()).collect(); - trie.insert(random_bytes.to_vec(), random_bytes.clone()).unwrap(); - keys.push(random_bytes.clone()); - } - for k in keys.clone().into_iter() { - trie.insert(k.clone(), k.clone()).unwrap(); - } - let root = trie.root().unwrap(); - for k in keys.into_iter() { - let proof = trie.get_proof(&k).unwrap(); - let value = MerklePatriciaTrie::verify_proof(root.clone(), &k, proof) - .unwrap() - .unwrap(); - assert_eq!(value, k); - } - } - - #[test] - fn test_proof_empty_trie() { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(Rc::clone(&memdb)); - trie.root().unwrap(); - let proof = trie.get_proof(b"not-exist").unwrap(); - assert_eq!(proof.len(), 0); - } - - #[test] - fn test_proof_one_element() { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(Rc::clone(&memdb)); - trie.insert(b"k".to_vec(), b"v".to_vec()).unwrap(); - let root = trie.root().unwrap(); - let proof = trie.get_proof(b"k").unwrap(); - assert_eq!(proof.len(), 1); - let value = MerklePatriciaTrie::verify_proof(root.clone(), b"k", proof.clone()).unwrap(); - assert_eq!(value, Some(b"v".to_vec())); - - // remove key does not affect the verify process - trie.remove(b"k").unwrap(); - let _root = trie.root().unwrap(); - let value = MerklePatriciaTrie::verify_proof(root.clone(), b"k", proof.clone()).unwrap(); - assert_eq!(value, Some(b"v".to_vec())); - } - - #[test] - fn test_ethereum_receipts_proof() { - let rlp_proof: Vec = Vec::from_hex("f9016ef9016bb853f851a009b67a67265063da0dd6a7abad695edb2c439f6b458f2a2ee48a21442fef8a2680808080808080a0a7d4f8b974d21b7244014729b07e9c9f19fdc445da2ceddc089d90cead74be618080808080808080b90113f9011031b9010cf9010901835cdb6eb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0").unwrap(); - let expected: Vec = Vec::from_hex("f9010901835cdb6eb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0").unwrap(); - let root = Vec::from_hex("7fa081e3e33e53c4d09ae691af3853bb73a7e02c856104fe843172abab85df7b").unwrap(); - - let proof: Proof = rlp::decode(&rlp_proof).unwrap(); - let key = rlp::encode(&1usize); - let value = MerklePatriciaTrie::verify_proof(root.clone(), &key, proof.clone()).unwrap(); - assert!(value.is_some()); - assert_eq!(value.unwrap(), expected); - } - - #[test] - fn test_ethereum_receipts_build_proof() { - // transaction hash 0xb04fcb9822eb21b5ffdbf89df076de58469af66d23c86abe30266e5d3c5e0db2 in ropsten - // build trie - let data = vec![ - Vec::from_hex("f90184018261beb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000040000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000020000000000000000000000000000000000f87bf87994095c5cbf4937d0a21f6f395194e95b6ebe8616b9e1a06ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770b8400000000000000000000000002e0a521fe69c14d99c8d236d8c3cd5353cc44e720000000000000000000000000000000000000000000000000000000000000000").unwrap(), - Vec::from_hex("f9010901835cdb6eb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0").unwrap(), - ]; - let hash = "0x7fa081e3e33e53c4d09ae691af3853bb73a7e02c856104fe843172abab85df7b"; - - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(Rc::clone(&memdb)); - for (k, v) in data.clone().into_iter().enumerate().map(|(i, v)| (rlp::encode(&i), v)) { - trie.insert(k.to_vec(), v.to_vec()).unwrap(); - } - let r = trie.root().unwrap(); - let rs = format!("0x{}", hex::encode(r.clone())); - - assert_eq!(rs.as_str(), hash); - - // check proof - let key = rlp::encode(&1usize); - let proof = trie.get_proof(&key).unwrap(); - let value = MerklePatriciaTrie::verify_proof(r.clone(), &key, proof.clone()).unwrap(); - - assert_eq!(value.unwrap(), data[1]); - } -} diff --git a/core/merkle-patricia-trie/src/trie.rs b/core/merkle-patricia-trie/src/trie.rs deleted file mode 100644 index 8e359948d..000000000 --- a/core/merkle-patricia-trie/src/trie.rs +++ /dev/null @@ -1,1057 +0,0 @@ -use hash::keccak; -use hashbrown::{HashMap, HashSet}; -use rlp::{Prototype, Rlp, RlpStream}; -use rstd::{cell::RefCell, rc::Rc, vec, vec::Vec}; - -use crate::db::MemoryDB; -use crate::error::TrieError; -use crate::nibbles::Nibbles; -use crate::node::{empty_children, BranchNode, Node}; -use crate::proof::Proof; - -pub type TrieResult = Result; - -const LENGTH: usize = 32; - -#[derive(Debug)] -pub struct MerklePatriciaTrie { - root: Node, - root_hash: Vec, - pub db: Rc, - cache: RefCell, Vec>>, - passing_keys: RefCell>>, - gen_keys: RefCell>>, -} - -impl MerklePatriciaTrie { - pub fn new(db: Rc) -> Self { - Self { - root: Node::Empty, - root_hash: hasher_digest(&rlp::NULL_RLP.to_vec()), - - cache: RefCell::new(HashMap::new()), - passing_keys: RefCell::new(HashSet::new()), - gen_keys: RefCell::new(HashSet::new()), - - db, - } - } - - pub fn from(db: Rc, root: &[u8]) -> TrieResult { - match db.get(&root) { - Some(data) => { - let mut trie = Self { - root: Node::Empty, - root_hash: root.to_vec(), - - cache: RefCell::new(HashMap::new()), - passing_keys: RefCell::new(HashSet::new()), - gen_keys: RefCell::new(HashSet::new()), - - db, - }; - - trie.root = trie.decode_node(&data)?; - Ok(trie) - } - None => Err(TrieError::InvalidStateRoot), - } - } -} - -fn hasher_digest(data: &[u8]) -> Vec { - keccak(data).0.to_vec() -} - -pub trait Trie { - /// Returns the value for key stored in the trie. - fn get(&self, key: &[u8]) -> TrieResult>>; - - /// Checks that the key is present in the trie - fn contains(&self, key: &[u8]) -> TrieResult; - - /// Inserts value into trie and modifies it if it exists - fn insert(&mut self, key: Vec, value: Vec) -> TrieResult; - - /// Removes any existing value for key from the trie. - fn remove(&mut self, key: &[u8]) -> TrieResult; - - /// Saves all the nodes in the db, clears the cache data, recalculates the root. - /// Returns the root hash of the trie. - fn root(&mut self) -> TrieResult>; - - /// Prove constructs a merkle proof for key. The result contains all encoded nodes - /// on the path to the value at key. The value itself is also included in the last - /// node and can be retrieved by verifying the proof. - /// - /// If the trie does not contain a value for key, the returned proof contains all - /// nodes of the longest existing prefix of the key (at least the root node), ending - /// with the node that proves the absence of the key. - fn get_proof(&self, key: &[u8]) -> TrieResult; - - /// return value if key exists, None if key not exist, Error if proof is wrong - fn verify_proof(root_hash: Vec, key: &[u8], proof: Proof) -> TrieResult>>; -} - -impl Trie for MerklePatriciaTrie { - /// Returns the value for key stored in the trie. - fn get(&self, key: &[u8]) -> TrieResult>> { - self.get_at(self.root.clone(), &Nibbles::from_raw(key.to_vec(), true)) - } - - /// Checks that the key is present in the trie - fn contains(&self, key: &[u8]) -> TrieResult { - Ok(self - .get_at(self.root.clone(), &Nibbles::from_raw(key.to_vec(), true))? - .map_or(false, |_| true)) - } - - /// Inserts value into trie and modifies it if it exists - fn insert(&mut self, key: Vec, value: Vec) -> TrieResult { - if value.is_empty() { - self.remove(&key)?; - return Ok(false); - } - let root = self.root.clone(); - self.root = self.insert_at(root, Nibbles::from_raw(key, true), value.to_vec())?; - Ok(true) - } - - /// Removes any existing value for key from the trie. - fn remove(&mut self, key: &[u8]) -> TrieResult { - let (n, removed) = self.delete_at(self.root.clone(), &Nibbles::from_raw(key.to_vec(), true))?; - self.root = n; - Ok(removed) - } - - /// Saves all the nodes in the db, clears the cache data, recalculates the root. - /// Returns the root hash of the trie. - fn root(&mut self) -> TrieResult> { - self.commit() - } - - /// Prove constructs a merkle proof for key. The result contains all encoded nodes - /// on the path to the value at key. The value itself is also included in the last - /// node and can be retrieved by verifying the proof. - /// - /// If the trie does not contain a value for key, the returned proof contains all - /// nodes of the longest existing prefix of the key (at least the root node), ending - /// with the node that proves the absence of the key. - fn get_proof(&self, key: &[u8]) -> TrieResult { - let mut path = self.get_path_at(self.root.clone(), &Nibbles::from_raw(key.to_vec(), true))?; - match self.root { - Node::Empty => {} - _ => path.push(self.root.clone()), - } - Ok(Proof { - nodes: path.into_iter().rev().map(|n| self.encode_raw(n)).collect(), - }) - } - - /// return value if key exists, None if key not exist, Error if proof is wrong - /// - /// insert data to memory db, and check root. if value exists, means ok . - fn verify_proof(root_hash: Vec, key: &[u8], proof: Proof) -> TrieResult>> { - let memdb = Rc::new(MemoryDB::new()); - for node_encoded in proof.nodes.into_iter() { - let hash = hasher_digest(&node_encoded); - - if root_hash.eq(&hash) || node_encoded.len() >= LENGTH { - memdb.insert(hash, node_encoded); - } - } - let trie = MerklePatriciaTrie::from(memdb, &root_hash)?; - - trie.get(key) - } -} - -impl MerklePatriciaTrie { - pub fn iter(&self) -> TrieIterator { - let mut nodes = Vec::new(); - nodes.push((self.root.clone()).into()); - TrieIterator { - trie: self, - nibble: Nibbles::from_raw(vec![], false), - nodes, - } - } - - fn get_at(&self, n: Node, partial: &Nibbles) -> TrieResult>> { - match n { - Node::Empty => Ok(None), - Node::Leaf(leaf) => { - let borrow_leaf = leaf.borrow(); - - if &borrow_leaf.key == partial { - Ok(Some(borrow_leaf.value.clone())) - } else { - Ok(None) - } - } - Node::Branch(branch) => { - let borrow_branch = branch.borrow(); - - if partial.is_empty() || partial.at(0) == 16 { - Ok(borrow_branch.value.clone()) - } else { - let index = partial.at(0); - self.get_at(borrow_branch.children[index].clone(), &partial.offset(1)) - } - } - Node::Extension(extension) => { - let extension = extension.borrow(); - - let prefix = &extension.prefix; - let match_len = partial.common_prefix(&prefix); - if match_len == prefix.len() { - self.get_at(extension.node.clone(), &partial.offset(match_len)) - } else { - Ok(None) - } - } - Node::Hash(hash_node) => { - let borrow_hash_node = hash_node.borrow(); - let n = self.recover_from_db(&borrow_hash_node.hash)?; - self.get_at(n, partial) - } - } - } - - fn insert_at(&self, n: Node, partial: Nibbles, value: Vec) -> TrieResult { - match n { - Node::Empty => Ok(Node::from_leaf(partial, value)), - Node::Leaf(leaf) => { - let mut borrow_leaf = leaf.borrow_mut(); - - let old_partial = &borrow_leaf.key; - let match_index = partial.common_prefix(old_partial); - if match_index == old_partial.len() { - // replace leaf value - borrow_leaf.value = value; - return Ok(Node::Leaf(leaf.clone())); - } - - let mut branch = BranchNode { - children: empty_children(), - value: None, - }; - - let n = Node::from_leaf(old_partial.offset(match_index + 1), borrow_leaf.value.clone()); - branch.insert(old_partial.at(match_index), n); - - let n = Node::from_leaf(partial.offset(match_index + 1), value); - branch.insert(partial.at(match_index), n); - - if match_index == 0 { - return Ok(Node::Branch(Rc::new(RefCell::new(branch)))); - } - - // if include a common prefix - Ok(Node::from_extension( - partial.slice(0, match_index), - Node::Branch(Rc::new(RefCell::new(branch))), - )) - } - Node::Branch(branch) => { - let mut borrow_branch = branch.borrow_mut(); - - if partial.at(0) == 0x10 { - borrow_branch.value = Some(value); - return Ok(Node::Branch(branch.clone())); - } - - let child = borrow_branch.children[partial.at(0)].clone(); - let new_child = self.insert_at(child, partial.offset(1), value)?; - borrow_branch.children[partial.at(0)] = new_child; - Ok(Node::Branch(branch.clone())) - } - Node::Extension(ext) => { - let mut borrow_ext = ext.borrow_mut(); - - let prefix = &borrow_ext.prefix; - let sub_node = borrow_ext.node.clone(); - let match_index = partial.common_prefix(&prefix); - - if match_index == 0 { - let mut branch = BranchNode { - children: empty_children(), - value: None, - }; - branch.insert( - prefix.at(0), - if prefix.len() == 1 { - sub_node - } else { - Node::from_extension(prefix.offset(1), sub_node) - }, - ); - let node = Node::Branch(Rc::new(RefCell::new(branch))); - - return self.insert_at(node, partial, value); - } - - if match_index == prefix.len() { - let new_node = self.insert_at(sub_node, partial.offset(match_index), value)?; - return Ok(Node::from_extension(prefix.clone(), new_node)); - } - - let new_ext = Node::from_extension(prefix.offset(match_index), sub_node); - let new_node = self.insert_at(new_ext, partial.offset(match_index), value)?; - borrow_ext.prefix = prefix.slice(0, match_index); - borrow_ext.node = new_node; - Ok(Node::Extension(ext.clone())) - } - Node::Hash(hash_node) => { - let borrow_hash_node = hash_node.borrow(); - - self.passing_keys.borrow_mut().insert(borrow_hash_node.hash.to_vec()); - let n = self.recover_from_db(&borrow_hash_node.hash)?; - self.insert_at(n, partial, value) - } - } - } - - fn delete_at(&self, n: Node, partial: &Nibbles) -> TrieResult<(Node, bool)> { - let (new_n, deleted) = match n { - Node::Empty => Ok((Node::Empty, false)), - Node::Leaf(leaf) => { - let borrow_leaf = leaf.borrow(); - - if &borrow_leaf.key == partial { - return Ok((Node::Empty, true)); - } - Ok((Node::Leaf(leaf.clone()), false)) - } - Node::Branch(branch) => { - let mut borrow_branch = branch.borrow_mut(); - - if partial.at(0) == 0x10 { - borrow_branch.value = None; - return Ok((Node::Branch(branch.clone()), true)); - } - - let index = partial.at(0); - let node = borrow_branch.children[index].clone(); - - let (new_n, deleted) = self.delete_at(node, &partial.offset(1))?; - if deleted { - borrow_branch.children[index] = new_n; - } - - Ok((Node::Branch(branch.clone()), deleted)) - } - Node::Extension(ext) => { - let mut borrow_ext = ext.borrow_mut(); - - let prefix = &borrow_ext.prefix; - let match_len = partial.common_prefix(prefix); - - if match_len == prefix.len() { - let (new_n, deleted) = self.delete_at(borrow_ext.node.clone(), &partial.offset(match_len))?; - - if deleted { - borrow_ext.node = new_n; - } - - Ok((Node::Extension(ext.clone()), deleted)) - } else { - Ok((Node::Extension(ext.clone()), false)) - } - } - Node::Hash(hash_node) => { - let hash = hash_node.borrow().hash.clone(); - self.passing_keys.borrow_mut().insert(hash.clone()); - - let n = self.recover_from_db(&hash)?; - self.delete_at(n, partial) - } - }?; - - if deleted { - Ok((self.degenerate(new_n)?, deleted)) - } else { - Ok((new_n, deleted)) - } - } - - fn degenerate(&self, n: Node) -> TrieResult { - match n { - Node::Branch(branch) => { - let borrow_branch = branch.borrow(); - - let mut used_indexs = vec![]; - for (index, node) in borrow_branch.children.iter().enumerate() { - match node { - Node::Empty => continue, - _ => used_indexs.push(index), - } - } - - // if only a value node, transmute to leaf. - if used_indexs.is_empty() && borrow_branch.value.is_some() { - let key = Nibbles::from_raw([].to_vec(), true); - let value = borrow_branch.value.clone().unwrap(); - Ok(Node::from_leaf(key, value)) - // if only one node. make an extension. - } else if used_indexs.len() == 1 && borrow_branch.value.is_none() { - let used_index = used_indexs[0]; - let n = borrow_branch.children[used_index].clone(); - - let new_node = Node::from_extension(Nibbles::from_hex(vec![used_index as u8]), n); - self.degenerate(new_node) - } else { - Ok(Node::Branch(branch.clone())) - } - } - Node::Extension(ext) => { - let borrow_ext = ext.borrow(); - - let prefix = &borrow_ext.prefix; - match borrow_ext.node.clone() { - Node::Extension(sub_ext) => { - let borrow_sub_ext = sub_ext.borrow(); - - let new_prefix = prefix.join(&borrow_sub_ext.prefix); - let new_n = Node::from_extension(new_prefix, borrow_sub_ext.node.clone()); - self.degenerate(new_n) - } - Node::Leaf(leaf) => { - let borrow_leaf = leaf.borrow(); - - let new_prefix = prefix.join(&borrow_leaf.key); - Ok(Node::from_leaf(new_prefix, borrow_leaf.value.clone())) - } - // try again after recovering node from the db. - Node::Hash(hash_node) => { - let hash = hash_node.borrow().hash.clone(); - self.passing_keys.borrow_mut().insert(hash.clone()); - - let new_node = self.recover_from_db(&hash)?; - - let n = Node::from_extension(borrow_ext.prefix.clone(), new_node); - self.degenerate(n) - } - _ => Ok(Node::Extension(ext.clone())), - } - } - _ => Ok(n), - } - } - - // Get nodes path along the key, only the nodes whose encode length is greater than - // hash length are added. - // For embedded nodes whose data are already contained in their parent node, we don't need to - // add them in the path. - // In the code below, we only add the nodes get by `get_node_from_hash`, because they contains - // all data stored in db, including nodes whose encoded data is less than hash length. - fn get_path_at(&self, n: Node, partial: &Nibbles) -> TrieResult> { - match n { - Node::Empty | Node::Leaf(_) => Ok(vec![]), - Node::Branch(branch) => { - let borrow_branch = branch.borrow(); - - if partial.is_empty() || partial.at(0) == 16 { - Ok(vec![]) - } else { - let node = borrow_branch.children[partial.at(0)].clone(); - self.get_path_at(node, &partial.offset(1)) - } - } - Node::Extension(ext) => { - let borrow_ext = ext.borrow(); - - let prefix = &borrow_ext.prefix; - let match_len = partial.common_prefix(prefix); - - if match_len == prefix.len() { - self.get_path_at(borrow_ext.node.clone(), &partial.offset(match_len)) - } else { - Ok(vec![]) - } - } - Node::Hash(hash_node) => { - let n = self.recover_from_db(&hash_node.borrow().hash.clone())?; - let mut rest = self.get_path_at(n.clone(), partial)?; - rest.push(n); - Ok(rest) - } - } - } - - fn commit(&mut self) -> TrieResult> { - let encoded = self.encode_node(self.root.clone()); - let root_hash = if encoded.len() < LENGTH { - let hash = hasher_digest(&encoded); - self.cache.borrow_mut().insert(hash.clone(), encoded); - hash - } else { - encoded - }; - - let mut keys = Vec::with_capacity(self.cache.borrow().len()); - let mut values = Vec::with_capacity(self.cache.borrow().len()); - for (k, v) in self.cache.borrow_mut().drain() { - keys.push(k.to_vec()); - values.push(v); - } - - self.db.insert_batch(keys, values); - - let removed_keys: Vec> = self - .passing_keys - .borrow() - .iter() - .filter(|h| !self.gen_keys.borrow().contains(&h.to_vec())) - .map(|h| h.to_vec()) - .collect(); - - self.db.remove_batch(&removed_keys); - - self.root_hash = root_hash.to_vec(); - self.gen_keys.borrow_mut().clear(); - self.passing_keys.borrow_mut().clear(); - self.root = self.recover_from_db(&root_hash)?; - Ok(root_hash) - } - - fn encode_node(&self, n: Node) -> Vec { - // Returns the hash value directly to avoid double counting. - if let Node::Hash(hash_node) = n { - return hash_node.borrow().hash.clone(); - } - - let data = self.encode_raw(n.clone()); - // Nodes smaller than 32 bytes are stored inside their parent, - // Nodes equal to 32 bytes are returned directly - if data.len() < LENGTH { - data - } else { - let hash = hasher_digest(&data); - self.cache.borrow_mut().insert(hash.clone(), data); - - self.gen_keys.borrow_mut().insert(hash.clone()); - hash - } - } - - fn encode_raw(&self, n: Node) -> Vec { - match n { - Node::Empty => rlp::NULL_RLP.to_vec(), - Node::Leaf(leaf) => { - let borrow_leaf = leaf.borrow(); - - let mut stream = RlpStream::new_list(2); - stream.append(&borrow_leaf.key.encode_compact()); - stream.append(&borrow_leaf.value); - stream.out() - } - Node::Branch(branch) => { - let borrow_branch = branch.borrow(); - - let mut stream = RlpStream::new_list(17); - for i in 0..16 { - let n = borrow_branch.children[i].clone(); - let data = self.encode_node(n); - if data.len() == LENGTH { - stream.append(&data); - } else { - stream.append_raw(&data, 1); - } - } - - match &borrow_branch.value { - Some(v) => stream.append(v), - None => stream.append_empty_data(), - }; - stream.out() - } - Node::Extension(ext) => { - let borrow_ext = ext.borrow(); - - let mut stream = RlpStream::new_list(2); - stream.append(&borrow_ext.prefix.encode_compact()); - let data = self.encode_node(borrow_ext.node.clone()); - if data.len() == LENGTH { - stream.append(&data); - } else { - stream.append_raw(&data, 1); - } - stream.out() - } - Node::Hash(_hash) => unreachable!(), - } - } - - fn decode_node(&self, data: &[u8]) -> TrieResult { - let r = Rlp::new(data); - - match r.prototype()? { - Prototype::Data(0) => Ok(Node::Empty), - // extension node or leaf node - Prototype::List(2) => { - let key = r.at(0)?.data()?; - let key = Nibbles::from_compact(key.to_vec()); - - if key.is_leaf() { - Ok(Node::from_leaf(key, r.at(1)?.data()?.to_vec())) - } else { - let n = self.decode_node(r.at(1)?.as_raw())?; - - Ok(Node::from_extension(key, n)) - } - } - // branch node - Prototype::List(17) => { - let mut nodes = empty_children(); - #[allow(clippy::needless_range_loop)] - for i in 0..nodes.len() { - let rlp_data = r.at(i)?; - let n = self.decode_node(rlp_data.as_raw())?; - nodes[i] = n; - } - - // The last element is a value node. - let value_rlp = r.at(16)?; - let value = if value_rlp.is_empty() { - None - } else { - Some(value_rlp.data()?.to_vec()) - }; - - Ok(Node::from_branch(nodes, value)) - } - _ => { - if r.is_data() && r.size() == LENGTH { - Ok(Node::from_hash(r.data()?.to_vec())) - } else { - Err(TrieError::InvalidData) - } - } - } - } - - fn recover_from_db(&self, key: &[u8]) -> TrieResult { - match self.db.get(key) { - Some(value) => Ok(self.decode_node(&value)?), - None => Ok(Node::Empty), - } - } -} - -#[derive(Clone, Debug)] -enum TraceStatus { - Start, - Doing, - Child(u8), - End, -} - -#[derive(Clone, Debug)] -struct TraceNode { - node: Node, - status: TraceStatus, -} - -impl TraceNode { - fn advance(&mut self) { - self.status = match &self.status { - TraceStatus::Start => TraceStatus::Doing, - TraceStatus::Doing => match self.node { - Node::Branch(_) => TraceStatus::Child(0), - _ => TraceStatus::End, - }, - TraceStatus::Child(i) if *i < 15 => TraceStatus::Child(i + 1), - _ => TraceStatus::End, - } - } -} - -impl From for TraceNode { - fn from(node: Node) -> TraceNode { - TraceNode { - node, - status: TraceStatus::Start, - } - } -} - -pub struct TrieIterator<'a> { - trie: &'a MerklePatriciaTrie, - nibble: Nibbles, - nodes: Vec, -} - -impl<'a> Iterator for TrieIterator<'a> { - type Item = (Vec, Vec); - - fn next(&mut self) -> Option { - loop { - let mut now = self.nodes.last().cloned(); - if let Some(ref mut now) = now { - self.nodes.last_mut().unwrap().advance(); - - match (now.status.clone(), &now.node) { - (TraceStatus::End, node) => { - match *node { - Node::Leaf(ref leaf) => { - let cur_len = self.nibble.len(); - self.nibble.truncate(cur_len - leaf.borrow().key.len()); - } - - Node::Extension(ref ext) => { - let cur_len = self.nibble.len(); - self.nibble.truncate(cur_len - ext.borrow().prefix.len()); - } - - Node::Branch(_) => { - self.nibble.pop(); - } - _ => {} - } - self.nodes.pop(); - } - - (TraceStatus::Doing, Node::Extension(ref ext)) => { - self.nibble.extend(&ext.borrow().prefix); - self.nodes.push((ext.borrow().node.clone()).into()); - } - - (TraceStatus::Doing, Node::Leaf(ref leaf)) => { - self.nibble.extend(&leaf.borrow().key); - return Some((self.nibble.encode_raw().0, leaf.borrow().value.clone())); - } - - (TraceStatus::Doing, Node::Branch(ref branch)) => { - let value = branch.borrow().value.clone(); - if value.is_none() { - continue; - } else { - return Some((self.nibble.encode_raw().0, value.unwrap())); - } - } - - (TraceStatus::Doing, Node::Hash(ref hash_node)) => { - if let Ok(n) = self.trie.recover_from_db(&hash_node.borrow().hash.clone()) { - self.nodes.pop(); - self.nodes.push(n.into()); - } else { - //error!(); - return None; - } - } - - (TraceStatus::Child(i), Node::Branch(ref branch)) => { - if i == 0 { - self.nibble.push(0); - } else { - self.nibble.pop(); - self.nibble.push(i); - } - self.nodes.push((branch.borrow().children[i as usize].clone()).into()); - } - - (_, Node::Empty) => { - self.nodes.pop(); - } - _ => {} - } - } else { - return None; - } - } - } -} - -#[cfg(test)] -mod tests { - use std::collections::{HashMap, HashSet}; - use std::rc::Rc; - - use ethereum_types; - use rand::distributions::Alphanumeric; - use rand::seq::SliceRandom; - use rand::{thread_rng, Rng}; - - use super::*; - use crate::db::MemoryDB; - - #[test] - fn test_trie_insert() { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(memdb); - trie.insert(b"test".to_vec(), b"test".to_vec()).unwrap(); - } - - #[test] - fn test_trie_get() { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(memdb); - trie.insert(b"test".to_vec(), b"test".to_vec()).unwrap(); - let v = trie.get(b"test").unwrap(); - - assert_eq!(Some(b"test".to_vec()), v) - } - - #[test] - fn test_trie_random_insert() { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(memdb); - - for _ in 0..1000 { - let rand_str: String = thread_rng().sample_iter(&Alphanumeric).take(30).collect(); - let val = rand_str.as_bytes(); - trie.insert(val.to_vec(), val.to_vec()).unwrap(); - - let v = trie.get(val).unwrap(); - assert_eq!(v.map(|v| v.to_vec()), Some(val.to_vec())); - } - } - - #[test] - fn test_trie_contains() { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(memdb); - trie.insert(b"test".to_vec(), b"test".to_vec()).unwrap(); - assert_eq!(true, trie.contains(b"test").unwrap()); - assert_eq!(false, trie.contains(b"test2").unwrap()); - } - - #[test] - fn test_trie_remove() { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(memdb); - trie.insert(b"test".to_vec(), b"test".to_vec()).unwrap(); - let removed = trie.remove(b"test").unwrap(); - assert_eq!(true, removed) - } - - #[test] - fn test_trie_random_remove() { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(memdb); - - for _ in 0..1000 { - let rand_str: String = thread_rng().sample_iter(&Alphanumeric).take(30).collect(); - let val = rand_str.as_bytes(); - trie.insert(val.to_vec(), val.to_vec()).unwrap(); - - let removed = trie.remove(val).unwrap(); - assert_eq!(true, removed); - } - } - - #[test] - fn test_trie_from_root() { - let memdb = Rc::new(MemoryDB::new()); - let root = { - let mut trie = MerklePatriciaTrie::new(memdb.clone()); - trie.insert(b"test".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test1".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test2".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test23".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test33".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test44".to_vec(), b"test".to_vec()).unwrap(); - trie.root().unwrap() - }; - - let mut trie = MerklePatriciaTrie::from(Rc::clone(&memdb), &root).unwrap(); - let v1 = trie.get(b"test33").unwrap(); - assert_eq!(Some(b"test".to_vec()), v1); - let v2 = trie.get(b"test44").unwrap(); - assert_eq!(Some(b"test".to_vec()), v2); - let root2 = trie.root().unwrap(); - assert_eq!(hex::encode(root), hex::encode(root2)); - } - - #[test] - fn test_trie_from_root_and_insert() { - let memdb = Rc::new(MemoryDB::new()); - let root = { - let mut trie = MerklePatriciaTrie::new(memdb.clone()); - trie.insert(b"test".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test1".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test2".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test23".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test33".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test44".to_vec(), b"test".to_vec()).unwrap(); - trie.commit().unwrap() - }; - - let mut trie = MerklePatriciaTrie::from(Rc::clone(&memdb), &root).unwrap(); - trie.insert(b"test55".to_vec(), b"test55".to_vec()).unwrap(); - trie.commit().unwrap(); - let v = trie.get(b"test55").unwrap(); - assert_eq!(Some(b"test55".to_vec()), v); - } - - #[test] - fn test_trie_from_root_and_delete() { - let memdb = Rc::new(MemoryDB::new()); - let root = { - let mut trie = MerklePatriciaTrie::new(memdb.clone()); - trie.insert(b"test".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test1".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test2".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test23".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test33".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test44".to_vec(), b"test".to_vec()).unwrap(); - trie.commit().unwrap() - }; - - let mut trie = MerklePatriciaTrie::from(Rc::clone(&memdb), &root).unwrap(); - let removed = trie.remove(b"test44").unwrap(); - assert_eq!(true, removed); - let removed = trie.remove(b"test33").unwrap(); - assert_eq!(true, removed); - let removed = trie.remove(b"test23").unwrap(); - assert_eq!(true, removed); - } - - #[test] - fn test_multiple_trie_roots() { - let k0: ethereum_types::H256 = 0.into(); - let k1: ethereum_types::H256 = 1.into(); - let v: ethereum_types::H256 = 0x1234.into(); - - let root1 = { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(memdb); - trie.insert(k0.as_bytes().to_vec(), v.as_bytes().to_vec()).unwrap(); - trie.root().unwrap() - }; - - let root2 = { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(memdb); - trie.insert(k0.as_bytes().to_vec(), v.as_bytes().to_vec()).unwrap(); - trie.insert(k1.as_bytes().to_vec(), v.as_bytes().to_vec()).unwrap(); - trie.root().unwrap(); - trie.remove(k1.as_ref()).unwrap(); - trie.root().unwrap() - }; - - let root3 = { - let memdb = Rc::new(MemoryDB::new()); - let mut trie1 = MerklePatriciaTrie::new(memdb.clone()); - trie1.insert(k0.as_bytes().to_vec(), v.as_bytes().to_vec()).unwrap(); - trie1.insert(k1.as_bytes().to_vec(), v.as_bytes().to_vec()).unwrap(); - trie1.root().unwrap(); - let root = trie1.root().unwrap(); - let mut trie2 = MerklePatriciaTrie::from(Rc::clone(&memdb), &root).unwrap(); - trie2.remove(&k1.as_bytes().to_vec()).unwrap(); - trie2.root().unwrap() - }; - - assert_eq!(root1, root2); - assert_eq!(root2, root3); - } - - #[test] - fn test_delete_stale_keys_with_random_insert_and_delete() { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(memdb); - - let mut rng = rand::thread_rng(); - let mut keys = vec![]; - for _ in 0..100 { - let random_bytes: Vec = (0..rng.gen_range(2, 30)).map(|_| rand::random::()).collect(); - trie.insert(random_bytes.clone(), random_bytes.clone()).unwrap(); - keys.push(random_bytes.clone()); - } - trie.commit().unwrap(); - let slice = &mut keys; - slice.shuffle(&mut rng); - - for key in slice.iter() { - trie.remove(key).unwrap(); - } - trie.commit().unwrap(); - - println!("{:?}", trie); - let empty_node_key = hasher_digest(&rlp::NULL_RLP); - println!("empty key{:?}", empty_node_key); - let value = trie.db.get(empty_node_key.as_ref()).unwrap(); - assert_eq!(value, &rlp::NULL_RLP) - } - - #[test] - fn insert_full_branch() { - let memdb = Rc::new(MemoryDB::new()); - let mut trie = MerklePatriciaTrie::new(memdb); - - trie.insert(b"test".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test1".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test2".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test23".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test33".to_vec(), b"test".to_vec()).unwrap(); - trie.insert(b"test44".to_vec(), b"test".to_vec()).unwrap(); - trie.root().unwrap(); - - let v = trie.get(b"test").unwrap(); - assert_eq!(Some(b"test".to_vec()), v); - } - - #[test] - fn iterator_trie() { - let memdb = Rc::new(MemoryDB::new()); - let root1; - let mut kv = HashMap::new(); - kv.insert(b"test".to_vec(), b"test".to_vec()); - kv.insert(b"test1".to_vec(), b"test1".to_vec()); - kv.insert(b"test11".to_vec(), b"test2".to_vec()); - kv.insert(b"test14".to_vec(), b"test3".to_vec()); - kv.insert(b"test16".to_vec(), b"test4".to_vec()); - kv.insert(b"test18".to_vec(), b"test5".to_vec()); - kv.insert(b"test2".to_vec(), b"test6".to_vec()); - kv.insert(b"test23".to_vec(), b"test7".to_vec()); - kv.insert(b"test9".to_vec(), b"test8".to_vec()); - { - let mut trie = MerklePatriciaTrie::new(memdb.clone()); - let mut kv = kv.clone(); - kv.iter().for_each(|(k, v)| { - trie.insert(k.clone(), v.clone()).unwrap(); - }); - root1 = trie.root().unwrap(); - - trie.iter().for_each(|(k, v)| assert_eq!(kv.remove(&k).unwrap(), v)); - assert!(kv.is_empty()); - } - - { - let mut trie = MerklePatriciaTrie::new(Rc::clone(&memdb)); - let mut kv2 = HashMap::new(); - kv2.insert(b"test".to_vec(), b"test11".to_vec()); - kv2.insert(b"test1".to_vec(), b"test12".to_vec()); - kv2.insert(b"test14".to_vec(), b"test13".to_vec()); - kv2.insert(b"test22".to_vec(), b"test14".to_vec()); - kv2.insert(b"test9".to_vec(), b"test15".to_vec()); - kv2.insert(b"test16".to_vec(), b"test16".to_vec()); - kv2.insert(b"test2".to_vec(), b"test17".to_vec()); - kv2.iter().for_each(|(k, v)| { - trie.insert(k.clone(), v.clone()).unwrap(); - }); - - trie.root().unwrap(); - - let mut kv_delete = HashSet::new(); - kv_delete.insert(b"test".to_vec()); - kv_delete.insert(b"test1".to_vec()); - kv_delete.insert(b"test14".to_vec()); - - kv_delete.iter().for_each(|k| { - trie.remove(&k).unwrap(); - }); - - kv2.retain(|k, _| !kv_delete.contains(k)); - - trie.root().unwrap(); - trie.iter().for_each(|(k, v)| assert_eq!(kv2.remove(&k).unwrap(), v)); - assert!(kv2.is_empty()); - } - - let trie = MerklePatriciaTrie::from(Rc::clone(&memdb), &root1).unwrap(); - trie.iter().for_each(|(k, v)| assert_eq!(kv.remove(&k).unwrap(), v)); - assert!(kv.is_empty()); - } -} diff --git a/core/sr-eth-primitives/Cargo.toml b/core/sr-eth-primitives/Cargo.toml deleted file mode 100644 index 58e3a3e55..000000000 --- a/core/sr-eth-primitives/Cargo.toml +++ /dev/null @@ -1,48 +0,0 @@ -[package] -name = "sr-eth-primitives" -version = "0.2.0" -authors = ["Darwinia Network "] -edition = "2018" - -[dependencies] -serde = { version = "1.0.101", optional = true, features = ["derive"] } -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -rstd = { package = "sr-std", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sr-primitives = {git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -rlp = { package = "rlp", git = "https://github.com/darwinia-network/parity-common.git", default-features = false} -rlp_derive = { git = "https://github.com/darwinia-network/parity-common.git" } -primitive-types = { git = "https://github.com/darwinia-network/parity-common.git", default-features = false, features = ["codec", "rlp"] } -ethereum-types = { git = "https://github.com/darwinia-network/parity-common.git", default-features = false } -keccak-hash = { git = "https://github.com/darwinia-network/parity-common.git", default-features = false} -impl-codec = { git = "https://github.com/darwinia-network/parity-common.git", default-features = false} -fixed-hash = { git = "https://github.com/darwinia-network/parity-common.git", default-features = false} -impl-rlp = { git = "https://github.com/darwinia-network/parity-common.git", default-features = false} -ethbloom = { git ="https://github.com/darwinia-network/parity-common.git", default-features = false} - -[dev-dependencies] -support = { package = "srml-support", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop"} -rustc-hex = "2.0" -keccak-hasher = "0.15.2" -triehash = { package = "triehash", git = "https://github.com/darwinia-network/parity-common.git" } -hex-literal = "0.2.1" - - -[features] -default = ["std"] -std = [ - "serde/std", - "codec/std", - "rstd/std", - "sr-primitives/std", - "rlp/std", - "keccak-hash/std", - "primitive-types/std", - "ethereum-types/std", - "ethereum-types/serialize", - "impl-codec/std", - "fixed-hash/std", - "impl-rlp/std", - "ethbloom/std", - "ethbloom/serialize", -] - diff --git a/core/sr-eth-primitives/src/encoded.rs b/core/sr-eth-primitives/src/encoded.rs deleted file mode 100644 index 57afa73a1..000000000 --- a/core/sr-eth-primitives/src/encoded.rs +++ /dev/null @@ -1,12 +0,0 @@ -use rstd::vec::Vec; - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct Header(Vec); -impl Header { - /// Create a new owning header view. - /// Expects the data to be an RLP-encoded header -- any other case will likely lead to - /// panics further down the line. - pub fn new(encoded: Vec) -> Self { - Header(encoded) - } -} diff --git a/core/sr-eth-primitives/src/error.rs b/core/sr-eth-primitives/src/error.rs deleted file mode 100644 index bd933c8c5..000000000 --- a/core/sr-eth-primitives/src/error.rs +++ /dev/null @@ -1,52 +0,0 @@ -use codec::{Decode, Encode}; - -/// Define errors when verifying eth blocks -use super::*; - -#[derive(PartialEq, Eq, Clone, Copy, Debug, Encode, Decode)] -/// Error indicating value found is outside of a valid range. -pub struct OutOfBounds { - /// Minimum allowed value. - pub min: Option, - /// Maximum allowed value. - pub max: Option, - /// Value found. - pub found: T, -} - -#[derive(PartialEq, Eq, Clone, Copy, Debug, Encode, Decode)] -/// Error indicating an expected value was not found. -pub struct Mismatch { - /// Value expected. - pub expected: T, - /// Value found. - pub found: T, -} - -#[derive(PartialEq, Eq, Clone, Copy, Debug)] -pub enum BlockError { - InvalidProofOfWork(OutOfBounds), - DifficultyOutOfBounds(OutOfBounds), - InvalidSealArity(Mismatch), - Rlp(&'static str), -} - -impl From for &str { - fn from(e: BlockError) -> Self { - use BlockError::*; - - match e { - InvalidProofOfWork(_) => "Proof Of Work - INVALID", - DifficultyOutOfBounds(_) => "Difficulty - OUT OF BOUNDS", - InvalidSealArity(_) => "Seal Arity - INVALID", - Rlp(msg) => msg, - } - } -} - -//#[cfg(feature = "std")] -//impl Error for BlockError { -// fn description(&self) -> &str { -// "Block error" -// } -//} diff --git a/core/sr-eth-primitives/src/header.rs b/core/sr-eth-primitives/src/header.rs deleted file mode 100644 index 16b675f16..000000000 --- a/core/sr-eth-primitives/src/header.rs +++ /dev/null @@ -1,510 +0,0 @@ -use super::*; - -use codec::{Decode, Encode}; -use ethbloom::Bloom; -use keccak_hash::{keccak, KECCAK_EMPTY_LIST_RLP, KECCAK_NULL_RLP}; -use rlp::{Decodable, DecoderError, Encodable, Rlp, RlpStream}; -use sr_primitives::RuntimeDebug; - -use rstd::prelude::*; - -#[derive(PartialEq, Eq, Clone, Encode, Decode, Copy, RuntimeDebug)] -enum Seal { - /// The seal/signature is included. - With, - /// The seal/signature is not included. - Without, -} - -#[derive(Eq, Clone, Encode, Decode, RuntimeDebug)] -pub struct EthHeader { - pub parent_hash: H256, - pub timestamp: u64, - pub number: EthBlockNumber, - pub author: EthAddress, - pub transactions_root: H256, - pub uncles_hash: H256, - pub extra_data: Bytes, - pub state_root: H256, - pub receipts_root: H256, - pub log_bloom: Bloom, - pub gas_used: U256, - pub gas_limit: U256, - pub difficulty: U256, - pub seal: Vec, - pub hash: Option, -} - -impl PartialEq for EthHeader { - fn eq(&self, c: &EthHeader) -> bool { - if let (&Some(ref h1), &Some(ref h2)) = (&self.hash, &c.hash) { - if h1 == h2 { - return true; - } - } - - self.parent_hash == c.parent_hash - && self.timestamp == c.timestamp - && self.number == c.number - && self.author == c.author - && self.transactions_root == c.transactions_root - && self.uncles_hash == c.uncles_hash - && self.extra_data == c.extra_data - && self.state_root == c.state_root - && self.receipts_root == c.receipts_root - && self.log_bloom == c.log_bloom - && self.gas_used == c.gas_used - && self.gas_limit == c.gas_limit - && self.difficulty == c.difficulty - && self.seal == c.seal - } -} - -impl Default for EthHeader { - fn default() -> Self { - EthHeader { - parent_hash: H256::zero(), - timestamp: 0, - number: 0, - author: EthAddress::zero(), - - transactions_root: KECCAK_NULL_RLP, - uncles_hash: KECCAK_EMPTY_LIST_RLP, - extra_data: vec![], - - state_root: KECCAK_NULL_RLP, - receipts_root: KECCAK_NULL_RLP, - log_bloom: Bloom::default(), - gas_used: U256::default(), - gas_limit: U256::default(), - - difficulty: U256::default(), - seal: vec![], - hash: None, - } - } -} - -impl Decodable for EthHeader { - fn decode(r: &Rlp) -> Result { - let mut blockheader = EthHeader { - parent_hash: r.val_at(0)?, - uncles_hash: r.val_at(1)?, - author: r.val_at(2)?, - state_root: r.val_at(3)?, - transactions_root: r.val_at(4)?, - receipts_root: r.val_at(5)?, - log_bloom: r.val_at(6)?, - difficulty: r.val_at(7)?, - number: r.val_at(8)?, - gas_limit: r.val_at(9)?, - gas_used: r.val_at(10)?, - timestamp: r.val_at(11)?, - extra_data: r.val_at(12)?, - seal: vec![], - hash: keccak(r.as_raw()).into(), - }; - - for i in 13..r.item_count()? { - blockheader.seal.push(r.at(i)?.as_raw().to_vec()) - } - - Ok(blockheader) - } -} - -impl Encodable for EthHeader { - fn rlp_append(&self, s: &mut RlpStream) { - self.stream_rlp(s, Seal::With); - } -} - -/// Alter value of given field, reset memoised hash if changed. -fn change_field(hash: &mut Option, field: &mut T, value: T) -where - T: PartialEq, -{ - if field != &value { - *field = value; - *hash = None; - } -} - -impl EthHeader { - /// Create a new, default-valued, header. - pub fn new() -> Self { - Self::default() - } - - /// Get the parent_hash field of the header. - pub fn parent_hash(&self) -> &H256 { - &self.parent_hash - } - - /// Get the timestamp field of the header. - pub fn timestamp(&self) -> u64 { - self.timestamp - } - - /// Get the number field of the header. - pub fn number(&self) -> EthBlockNumber { - self.number - } - - /// Get the author field of the header. - pub fn author(&self) -> &EthAddress { - &self.author - } - - /// Get the extra data field of the header. - pub fn extra_data(&self) -> &Bytes { - &self.extra_data - } - - /// Get the state root field of the header. - pub fn state_root(&self) -> &H256 { - &self.state_root - } - - /// Get the receipts root field of the header. - pub fn receipts_root(&self) -> &H256 { - &self.receipts_root - } - - /// Get the log bloom field of the header. - pub fn log_bloom(&self) -> &Bloom { - &self.log_bloom - } - - /// Get the transactions root field of the header. - pub fn transactions_root(&self) -> &H256 { - &self.transactions_root - } - - /// Get the uncles hash field of the header. - pub fn uncles_hash(&self) -> &H256 { - &self.uncles_hash - } - - /// Get the gas used field of the header. - pub fn gas_used(&self) -> &U256 { - &self.gas_used - } - - /// Get the gas limit field of the header. - pub fn gas_limit(&self) -> &U256 { - &self.gas_limit - } - - /// Get the difficulty field of the header. - pub fn difficulty(&self) -> &U256 { - &self.difficulty - } - - /// Get the seal field of the header. - pub fn seal(&self) -> &[Bytes] { - &self.seal - } - - /// Set the seal field of the header. - pub fn set_seal(&mut self, a: Vec) { - change_field(&mut self.hash, &mut self.seal, a) - } - - /// Set the difficulty field of the header. - pub fn set_difficulty(&mut self, a: U256) { - change_field(&mut self.hash, &mut self.difficulty, a); - } - - /// Get & memoize the hash of this header (keccak of the RLP with seal). - pub fn compute_hash(&mut self) -> H256 { - let hash = self.hash(); - self.hash = Some(hash); - hash - } - - pub fn re_compute_hash(&self) -> H256 { - keccak_hash::keccak(self.rlp(Seal::With)) - } - - /// Get the hash of this header (keccak of the RLP with seal). - pub fn hash(&self) -> H256 { - self.hash.unwrap_or_else(|| keccak_hash::keccak(self.rlp(Seal::With))) - } - - /// Get the hash of the header excluding the seal - pub fn bare_hash(&self) -> H256 { - keccak_hash::keccak(self.rlp(Seal::Without)) - } - - /// Encode the header, getting a type-safe wrapper around the RLP. - pub fn encoded(&self) -> encoded::Header { - encoded::Header::new(self.rlp(Seal::With)) - } - - /// Get the RLP representation of this Header. - fn rlp(&self, with_seal: Seal) -> Bytes { - let mut s = RlpStream::new(); - self.stream_rlp(&mut s, with_seal); - s.out() - } - - /// Place this header into an RLP stream `s`, optionally `with_seal`. - fn stream_rlp(&self, s: &mut RlpStream, with_seal: Seal) { - if let Seal::With = with_seal { - s.begin_list(13 + self.seal.len()); - } else { - s.begin_list(13); - } - - s.append(&self.parent_hash); - s.append(&self.uncles_hash); - s.append(&self.author); - s.append(&self.state_root); - s.append(&self.transactions_root); - s.append(&self.receipts_root); - s.append(&self.log_bloom); - s.append(&self.difficulty); - s.append(&self.number); - s.append(&self.gas_limit); - s.append(&self.gas_used); - s.append(&self.timestamp); - s.append(&self.extra_data); - - if let Seal::With = with_seal { - for b in &self.seal { - s.append_raw(b, 1); - } - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use error::BlockError; - use hex_literal::*; - use pow::EthashPartial; - use rustc_hex::FromHex; - use std::str::FromStr; - - #[inline] - fn sequential_header() -> (EthHeader, EthHeader) { - let mixh1 = H256::from(hex!("543bc0769f7d5df30e7633f4a01552c2cee7baace8a6da37fddaa19e49e81209")); - let nonce1 = H64::from(hex!("a5d3d0ccc8bb8a29")); - // #8996777 - let header1 = EthHeader { - parent_hash: H256::from(hex!("0b2d720b8d3b6601e4207ef926b0c228735aa1d58301a23d58f9cb51ac2288d8")), - timestamp: 0x5ddb67a0, - number: 0x8947a9, - author: EthAddress::from(hex!("4c549990a7ef3fea8784406c1eecc98bf4211fa5")), - transactions_root: H256::from(hex!("07d44fadb4aca78c81698710211c5399c1408bb3f0aa3a687d091d230fcaddc6")), - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "5050594520686976656f6e2d6574682d6672".from_hex().unwrap(), - state_root: H256::from(hex!("4ba0fb3e6f4c1af32a799df667d304bcdb7f8154e6f86831f92f5a354c2baf70")), - receipts_root: H256::from(hex!("5968afe6026e673df3b9745d925a5648282d2195a46c22771fec48210daf8e23")), - log_bloom: Bloom::from_str("0c7b091bc8ec02401ad12491004e3014e8806390031950181c118580ac61c9a00409022c418162002710a991108a11ca5383d4921d1da46346edc3eb8068481118b005c0b20700414c13916c54011a0922904aa6e255406a33494c84a1426410541819070e04852042410b30030d4c88a5103082284c7d9bd42090322ae883e004224e18db4d858a0805d043e44a855400945311cb253001412002ea041a08e30394fc601440310920af2192dc4194a03302191cf2290ac0c12000815324eb96a08000aad914034c1c8eb0cb39422e272808b7a4911989c306381502868820b4b95076fc004b14dd48a0411024218051204d902b80d004c36510400ccb123084").unwrap(), - gas_used: 0x986d77.into(), - gas_limit: 0x989631.into(), - difficulty: 0x92ac28cbc4930_u64.into(), - seal: vec![rlp::encode(&mixh1), rlp::encode(&nonce1)], - hash: Some(H256::from(hex!("b80bf91d6f459227a9c617c5d9823ff0b07f1098ea16788676f0b804ecd42f3b"))), - }; - - // # 8996778 - let mixh2 = H256::from(hex!("0ea8027f96c18f474e9bc74ff71d29aacd3f485d5825be0a8dde529eb82a47ed")); - let nonce2 = H64::from(hex!("55859dc00728f99a")); - let header2 = EthHeader { - parent_hash: H256::from(hex!("b80bf91d6f459227a9c617c5d9823ff0b07f1098ea16788676f0b804ecd42f3b")), - timestamp: 0x5ddb67a3, - number: 0x8947aa, - author: EthAddress::from(hex!("d224ca0c819e8e97ba0136b3b95ceff503b79f53")), - transactions_root: H256::from(hex!("efebac0e71cc2de04cf2f509bb038a82bbe92a659e010061b49b5387323b5ea6")), - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "7575706f6f6c2e636e2d3163613037623939".from_hex().unwrap(), - state_root: H256::from(hex!("5dfc6357dda61a7f927292509afacd51453ff158342eb9628ccb419fbe91c638")), - receipts_root: H256::from(hex!("3fbd99e253ff45045eec1e0011ac1b45fa0bccd641a356727defee3b166dd3bf")), - log_bloom: Bloom::from_str("0c0110a00144a0082057622381231d842b8977a98d1029841000a1c21641d91946594605e902a5432000159ad24a0300428d8212bf4d1c81c0f8478402a4a818010011437c07a112080e9a4a14822311a6840436f26585c84cc0d50693c148bf9830cf3e0a08970788a4424824b009080d52372056460dec808041b68ea04050bf116c041f25a3329d281068740ca911c0d4cd7541a1539005521694951c286567942d0024852080268d29850000954188f25151d80e4900002122c01ad53b7396acd34209c24110b81b9278642024603cd45387812b0696d93992829090619cf0b065a201082280812020000430601100cb08a3808204571c0e564d828648fb").unwrap(), - gas_used: 0x98254e.into(), - gas_limit: 0x98700d.into(), - difficulty: 0x92c07e50de0b9_u64.into(), - seal: vec![rlp::encode(&mixh2), rlp::encode(&nonce2)], - hash: Some(H256::from(hex!("b972df738904edb8adff9734eebdcb1d3b58fdfc68a48918720a4a247170f15e"))), - }; - - (header1, header2) - } - - fn ropsten_sequential_header() -> (EthHeader, EthHeader) { - let mixh1 = H256::from(hex!("c4b28f4b671b2e675634f596840d3115ce3df0ab38b6608a69371da16a3455aa")); - let nonce1 = H64::from(hex!("7afbefa403b138fa")); - // #6890091 - // https://api-ropsten.etherscan.io/api?module=proxy&action=eth_getBlockByNumber&tag=0x69226b&boolean=true&apikey=YourApiKeyToken - // https://jsoneditoronline.org/ - let header1 = EthHeader { - parent_hash: H256::from(hex!("8a18726cacb45b078bfe6491510cfa2dd578a70be2a217f416253cf3e94adbd2")), - timestamp: 0x5de5246c, - number: 0x69226b, - author: EthAddress::from(hex!("4ccfb3039b78d3938588157564c9ad559bafab94")), - transactions_root: H256::from(hex!("e3ab46e9eeb65fea6b0b1ffd07587f3ee7741b66f16a0b63a3b0c01900387833")), - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "d983010906846765746889676f312e31312e3133856c696e7578".from_hex().unwrap(), - state_root: H256::from(hex!("de1df18f7da776a86119d17373d252d3591b5a4270e14113701d27c852d25313")), - receipts_root: H256::from(hex!("9c9eb20b6f9176864630f84aa11f33969a355efa85b2eb1e386a5b1ea3599089")), - log_bloom: Bloom::from_str("0420000400000018000400400402044000088100000088000000010000040800202000002000a0000000000200004000800100000200000000000020003400000000000004002000000000080102004400000000010400008001000000000020000000009200100000000000004408040100000010000010022002130002000600048200000000000000004000002410000008000000000008021800100000000704010008080000200081000000004002000000009010c000010082000040400104020200000000040180000000000a803000000000002212000000000061000010000001010000400020000000002000020008008100040000005200000000").unwrap(), - gas_used: 0x769975.into(), - gas_limit: 0x7a1200.into(), - difficulty: 0xf4009f4b_u64.into(), - seal: vec![rlp::encode(&mixh1), rlp::encode(&nonce1)], - hash: Some(H256::from(hex!("1dafbf6a9825241ea5dfa7c3a54781c0784428f2ef3b588748521f83209d3caa"))), - }; - - // # 6890092 - let mixh2 = H256::from(hex!("5a85e328a8bb041a386ffb25db029b7f0df4665a8a55b331b30a576761404fa6")); - let nonce2 = H64::from(hex!("650ea83006bb108d")); - let header2 = EthHeader { - parent_hash: H256::from(hex!("1dafbf6a9825241ea5dfa7c3a54781c0784428f2ef3b588748521f83209d3caa")), - timestamp: 0x5de52488, - number: 0x69226c, - author: EthAddress::from(hex!("4ccfb3039b78d3938588157564c9ad559bafab94")), - transactions_root: H256::from(hex!("cd2672df775af7bcb2b93a478666d500dee3d78e6970c71071dc79642db24719")), - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "d983010906846765746889676f312e31312e3133856c696e7578".from_hex().unwrap(), - state_root: H256::from(hex!("ee6ad25ad26e79004f15b8d423a9952859983ad740924fd13165d6e20953ff3e")), - receipts_root: H256::from(hex!("b2f020ce6615246a711bed61f2f485833943adb734d8e1cddd93d7ae8a641451")), - log_bloom: Bloom::from_str("8211a0050000250240000000010200402002800012890000600004000208230500042a400000000001000040c00080001001100000002000001004004012000010006200800900a03002510844010014a0000000010408600444200000200080000410001a00140004008000150108108000003010126a0110828010810000000200010000800011001000062040221422249420c1040a940002000000400840080000810000800000400000010408000002001018002200020040000000a00000804002800008000000000080800020082002000000002810054100500020000288240880290000510020000204c0304000000000000820088c800200000000").unwrap(), - gas_used: 0x702566.into(), - gas_limit: 0x7a1200.into(), - difficulty: 0xf3c49f25_u64.into(), - seal: vec![rlp::encode(&mixh2), rlp::encode(&nonce2)], - hash: Some(H256::from(hex!("21fe7ebfb3639254a0867995f3d490e186576b42aeea8c60f8e3360c256f7974"))), - }; - - (header1, header2) - } - - #[test] - fn test_mainet_header_bare_hash() { - // 8996777 - let mixh2 = H256::from(hex!("543bc0769f7d5df30e7633f4a01552c2cee7baace8a6da37fddaa19e49e81209")); - let nonce2 = H64::from(hex!("a5d3d0ccc8bb8a29")); - - let header2 = EthHeader { - parent_hash: H256::from(hex!("0b2d720b8d3b6601e4207ef926b0c228735aa1d58301a23d58f9cb51ac2288d8")), - timestamp: 0x5ddb67a0, - number: 0x8947a9, - author: EthAddress::from(hex!("4c549990a7ef3fea8784406c1eecc98bf4211fa5")), - transactions_root: H256::from(hex!("07d44fadb4aca78c81698710211c5399c1408bb3f0aa3a687d091d230fcaddc6")), - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "5050594520686976656f6e2d6574682d6672".from_hex().unwrap(), - state_root: H256::from(hex!("4ba0fb3e6f4c1af32a799df667d304bcdb7f8154e6f86831f92f5a354c2baf70")), - receipts_root: H256::from(hex!("5968afe6026e673df3b9745d925a5648282d2195a46c22771fec48210daf8e23")), - log_bloom: Bloom::from_str("0c7b091bc8ec02401ad12491004e3014e8806390031950181c118580ac61c9a00409022c418162002710a991108a11ca5383d4921d1da46346edc3eb8068481118b005c0b20700414c13916c54011a0922904aa6e255406a33494c84a1426410541819070e04852042410b30030d4c88a5103082284c7d9bd42090322ae883e004224e18db4d858a0805d043e44a855400945311cb253001412002ea041a08e30394fc601440310920af2192dc4194a03302191cf2290ac0c12000815324eb96a08000aad914034c1c8eb0cb39422e272808b7a4911989c306381502868820b4b95076fc004b14dd48a0411024218051204d902b80d004c36510400ccb123084").unwrap(), - gas_used: 0x986d77.into(), - gas_limit: 0x989631.into(), - difficulty: 0x92ac28cbc4930_u64.into(), - seal: vec![rlp::encode(&mixh2), rlp::encode(&nonce2)], - hash: None, - }; - - let partial_header_hash2 = header2.bare_hash(); - - assert_eq!( - header2.hash(), - H256::from(hex!("b80bf91d6f459227a9c617c5d9823ff0b07f1098ea16788676f0b804ecd42f3b")) - ); - - // println!("partial_header_hash2: {:?}", partial_header_hash2); - - assert_eq!( - // H256::from_slice(Keccak256::digest(&rlp::encode(&header2).to_vec()).as_slice()), - partial_header_hash2, - H256::from(hex!("3c2e6623b1de8862a927eeeef2b6b25dea6e1d9dad88dca3c239be3959dc384a")) - ); - } - - #[test] - fn test_ropsten_header_bare_hash() { - // 70000 - let mixh2 = H256::from(hex!("341e3bcf01c921963933253e0cf937020db69206f633e31e0d1c959cdd1188f5")); - let nonce2 = H64::from(hex!("475ddd90b151f305")); - - let header2 = EthHeader { - parent_hash: H256::from(hex!("e7a8c03a03f7c055599def00f21686d3b9179d272c8110162f012c191d303dad")), - timestamp: 0x583f2778, - number: 0x11170, - author: EthAddress::from(hex!("1ad857f27200aec56ebb68283f91e6ac1086ad62")), - transactions_root: H256::from(hex!("35ecd6e29d0b8d161bd7863cfa3198e979b451fa637834b96b0da3d8d5d081cf")), - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "d783010503846765746887676f312e372e33856c696e7578".from_hex().unwrap(), - state_root: H256::from(hex!("76565e67622936b6b9eac50f3a9ad940270f1c6d1d9f203fc6af4e0eb67b20fa")), - receipts_root: H256::from(hex!("fbbc5695aac7a42699da58878f0a8bb8c096ed95a9b087989c0903114650ca70")), - log_bloom: Bloom::from_str("00000100000000100000000000000000000000000000000000000000000000000000008000000000000000000000000004000000000000000000000000000000000000000000000400400000000000000000000000000000000000000010000000000000000000000000000000000000200000000000010000000000000000000000000000000000000000000008000000000000000000000000800000000000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000002000000000000000000000").unwrap(), - gas_used: 0x182a8.into(), - gas_limit: 0x47d629.into(), - difficulty: 0x6648e9e_u64.into(), - seal: vec![rlp::encode(&mixh2), rlp::encode(&nonce2)], - hash: None, - }; - - let partial_header_hash2 = header2.bare_hash(); - - assert_eq!( - partial_header_hash2, - H256::from(hex!("bb698ea6e304a7a88a6cd8238f0e766b4f7bf70dc0869bd2e4a76a8e93fffc80")) - ); - } - - #[test] - fn can_do_proof_of_work_verification_fail() { - let mut header: EthHeader = EthHeader::default(); - header.set_seal(vec![rlp::encode(&H256::zero()), rlp::encode(&H64::zero())]); - header.set_difficulty( - U256::from_str("ffffffffffffffffffffffffffffffffffffffffffffaaaaaaaaaaaaaaaaaaaa").unwrap(), - ); - - let ethash_params = EthashPartial::expanse(); - let verify_result = ethash_params.verify_block_basic(&header); - - match verify_result { - Err(BlockError::InvalidProofOfWork(_)) => {} - Err(_) => { - panic!("should be invalid proof of work error (got {:?})", verify_result); - } - _ => { - panic!("Should be error, got Ok"); - } - } - } - - #[test] - fn can_verify_basic_difficulty() { - let header = sequential_header().0; - let ethash_params = EthashPartial::expanse(); - assert_eq!(ethash_params.verify_block_basic(&header), Ok(())); - } - - #[test] - fn can_calculate_difficulty_ropsten() { - let (header1, header2) = ropsten_sequential_header(); - let expected = U256::from_str("f3c49f25").unwrap(); - let ethash_params = EthashPartial::ropsten_testnet(); - // ethash_params.set_difficulty_bomb_delays(0xc3500, 5000000); - assert_eq!(ethash_params.calculate_difficulty(&header2, &header1), expected); - } - - #[test] - fn can_calculate_difficulty_production() { - let (header1, header2) = sequential_header(); - let expected = U256::from_str("92c07e50de0b9").unwrap(); - let ethash_params = EthashPartial::production(); - assert_eq!(ethash_params.calculate_difficulty(&header2, &header1), expected); - } - - #[test] - fn can_verify_basic_difficulty_production() { - let header = sequential_header().0; - let ethash_params = EthashPartial::production(); - assert_eq!(ethash_params.verify_block_basic(&header), Ok(())); - } -} diff --git a/core/sr-eth-primitives/src/lib.rs b/core/sr-eth-primitives/src/lib.rs deleted file mode 100644 index 7f65a955a..000000000 --- a/core/sr-eth-primitives/src/lib.rs +++ /dev/null @@ -1,22 +0,0 @@ -#![recursion_limit = "128"] -#![cfg_attr(not(feature = "std"), no_std)] - -#[macro_use] -pub extern crate rlp_derive; - -pub mod encoded; -pub mod error; -pub mod header; -pub mod pow; -pub mod receipt; -//pub mod transaction; - -pub use ethbloom::{Bloom, Input as BloomInput}; -pub use ethereum_types::H64; -pub use primitive_types::{H160, H256, U128, U256, U512}; - -use rstd::vec::Vec; - -pub type Bytes = Vec; -pub type EthAddress = H160; -pub type EthBlockNumber = u64; diff --git a/core/sr-eth-primitives/src/pow.rs b/core/sr-eth-primitives/src/pow.rs deleted file mode 100644 index 11719339e..000000000 --- a/core/sr-eth-primitives/src/pow.rs +++ /dev/null @@ -1,311 +0,0 @@ -/// A simplified prototype for light verification for pow. -use super::*; -//use crate::keccak::{keccak_256, keccak_512, H256 as BH256}; -use codec::{Decode, Encode}; -use core::cmp; -use core::convert::{From, Into, TryFrom}; -use error::{BlockError, Mismatch, OutOfBounds}; -use ethereum_types::BigEndianHash; -use header::EthHeader; -use keccak_hash::KECCAK_EMPTY_LIST_RLP; -use primitive_types::{H256, U256, U512}; -use rlp::*; -use rstd::{collections::btree_map::BTreeMap, mem, result}; -use sr_primitives::RuntimeDebug; - -#[derive(Default, PartialEq, Eq, Clone, Encode, Decode)] -pub struct EthashPartial { - pub minimum_difficulty: U256, - pub difficulty_bound_divisor: U256, - pub difficulty_increment_divisor: u64, - pub metropolis_difficulty_increment_divisor: u64, - pub duration_limit: u64, - pub homestead_transition: u64, - pub difficulty_hardfork_transition: u64, - pub difficulty_hardfork_bound_divisor: U256, - pub bomb_defuse_transition: u64, - pub eip100b_transition: u64, - pub ecip1010_pause_transition: u64, - pub ecip1010_continue_transition: u64, - pub difficulty_bomb_delays: BTreeMap, - pub expip2_transition: u64, - pub expip2_duration_limit: u64, - pub progpow_transition: u64, -} - -impl EthashPartial { - pub fn set_difficulty_bomb_delays(&mut self, key: EthBlockNumber, value: EthBlockNumber) { - self.difficulty_bomb_delays.insert(key, value); - } - - pub fn expanse() -> Self { - EthashPartial { - minimum_difficulty: U256::from(131072_u128), - difficulty_bound_divisor: U256::from(0x0800), - difficulty_increment_divisor: 0x3C, - metropolis_difficulty_increment_divisor: 0x1E, - duration_limit: 0x3C, - homestead_transition: 0x30d40, - difficulty_hardfork_transition: 0x59d9, - difficulty_hardfork_bound_divisor: U256::from(0x0200), - bomb_defuse_transition: 0x30d40, - eip100b_transition: 0xC3500, - ecip1010_pause_transition: 0x2dc6c0, - ecip1010_continue_transition: 0x4c4b40, - difficulty_bomb_delays: BTreeMap::::default(), - expip2_transition: 0xc3500, - expip2_duration_limit: 0x1e, - progpow_transition: u64::max_value(), - } - } - - pub fn production() -> Self { - EthashPartial { - minimum_difficulty: U256::from(131072_u128), - difficulty_bound_divisor: U256::from(0x0800), - difficulty_increment_divisor: 10, - metropolis_difficulty_increment_divisor: 9, - duration_limit: 13, - homestead_transition: 1150000, - difficulty_hardfork_transition: u64::max_value(), - difficulty_hardfork_bound_divisor: U256::from(2048), - bomb_defuse_transition: u64::max_value(), - eip100b_transition: 4370000, - ecip1010_pause_transition: u64::max_value(), - ecip1010_continue_transition: u64::max_value(), - difficulty_bomb_delays: { - let mut m = BTreeMap::new(); - m.insert(4370000, 3000000); - m.insert(7280000, 2000000); - m - }, - expip2_transition: u64::max_value(), - expip2_duration_limit: 30, - progpow_transition: u64::max_value(), - } - } - - pub fn ropsten_testnet() -> Self { - EthashPartial { - minimum_difficulty: U256::from(0x20000), - difficulty_bound_divisor: U256::from(0x0800), - difficulty_increment_divisor: 10, - metropolis_difficulty_increment_divisor: 9, - duration_limit: 0xd, - homestead_transition: 0x0, - difficulty_hardfork_transition: 0x59d9, - difficulty_hardfork_bound_divisor: U256::from(0x0800), - bomb_defuse_transition: u64::max_value(), - eip100b_transition: 0x19f0a0, - ecip1010_pause_transition: u64::max_value(), - ecip1010_continue_transition: u64::max_value(), - difficulty_bomb_delays: { - let mut m = BTreeMap::new(); - m.insert(0x19f0a0, 0x2dc6c0); - m.insert(0x408b70, 0x1e8480); - m - }, - expip2_transition: u64::max_value(), - expip2_duration_limit: 30, - progpow_transition: u64::max_value(), - } - } -} - -impl EthashPartial { - pub fn verify_block_basic(&self, header: &EthHeader) -> result::Result<(), error::BlockError> { - // check the seal fields. - let seal = EthashSeal::parse_seal(header.seal())?; - - // TODO: consider removing these lines. - let min_difficulty = self.minimum_difficulty; - if header.difficulty() < &min_difficulty { - return Err(BlockError::DifficultyOutOfBounds(OutOfBounds { - min: Some(min_difficulty), - max: None, - found: header.difficulty().clone(), - })); - } - - let difficulty = boundary_to_difficulty(&H256(quick_get_difficulty( - &header.bare_hash().0, - seal.nonce.to_low_u64_be(), - &seal.mix_hash.0, - header.number() >= self.progpow_transition, - ))); - - if &difficulty < header.difficulty() { - return Err(BlockError::InvalidProofOfWork(OutOfBounds { - min: Some(header.difficulty().clone()), - max: None, - found: difficulty, - })); - } - - Ok(()) - } - - pub fn calculate_difficulty(&self, header: &EthHeader, parent: &EthHeader) -> U256 { - const EXP_DIFF_PERIOD: u64 = 100_000; - - if header.number() == 0 { - panic!("Can't calculate genesis block difficulty"); - } - - let parent_has_uncles = parent.uncles_hash() != &KECCAK_EMPTY_LIST_RLP; - - let min_difficulty = self.minimum_difficulty; - - let difficulty_hardfork = header.number() >= self.difficulty_hardfork_transition; - let difficulty_bound_divisor = if difficulty_hardfork { - self.difficulty_hardfork_bound_divisor - } else { - self.difficulty_bound_divisor - }; - - let expip2_hardfork = header.number() >= self.expip2_transition; - let duration_limit = if expip2_hardfork { - self.expip2_duration_limit - } else { - self.duration_limit - }; - - let frontier_limit = self.homestead_transition; - - let mut target = if header.number() < frontier_limit { - if header.timestamp() >= parent.timestamp() + duration_limit { - *parent.difficulty() - (*parent.difficulty() / difficulty_bound_divisor) - } else { - *parent.difficulty() + (*parent.difficulty() / difficulty_bound_divisor) - } - } else { - // trace!(target: "ethash", "Calculating difficulty parent.difficulty={}, header.timestamp={}, parent.timestamp={}", parent.difficulty(), header.timestamp(), parent.timestamp()); - //block_diff = parent_diff + parent_diff // 2048 * max(1 - (block_timestamp - parent_timestamp) // 10, -99) - let (increment_divisor, threshold) = if header.number() < self.eip100b_transition { - (self.difficulty_increment_divisor, 1) - } else if parent_has_uncles { - (self.metropolis_difficulty_increment_divisor, 2) - } else { - (self.metropolis_difficulty_increment_divisor, 1) - }; - - let diff_inc = (header.timestamp() - parent.timestamp()) / increment_divisor; - if diff_inc <= threshold { - *parent.difficulty() - + *parent.difficulty() / difficulty_bound_divisor * U256::from(threshold - diff_inc) - } else { - let multiplier: U256 = cmp::min(diff_inc - threshold, 99).into(); - parent - .difficulty() - .saturating_sub(*parent.difficulty() / difficulty_bound_divisor * multiplier) - } - }; - target = cmp::max(min_difficulty, target); - if header.number() < self.bomb_defuse_transition { - if header.number() < self.ecip1010_pause_transition { - let mut number = header.number(); - let original_number = number; - for (block, delay) in &self.difficulty_bomb_delays { - if original_number >= *block { - number = number.saturating_sub(*delay); - } - } - let period = (number / EXP_DIFF_PERIOD) as usize; - if period > 1 { - target = cmp::max(min_difficulty, target + (U256::from(1) << (period - 2))); - } - } else if header.number() < self.ecip1010_continue_transition { - let fixed_difficulty = ((self.ecip1010_pause_transition / EXP_DIFF_PERIOD) - 2) as usize; - target = cmp::max(min_difficulty, target + (U256::from(1) << fixed_difficulty)); - } else { - let period = ((parent.number() + 1) / EXP_DIFF_PERIOD) as usize; - let delay = - ((self.ecip1010_continue_transition - self.ecip1010_pause_transition) / EXP_DIFF_PERIOD) as usize; - target = cmp::max(min_difficulty, target + (U256::from(1) << (period - delay - 2))); - } - } - target - } -} - -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub struct EthashSeal { - /// Ethash seal mix_hash - pub mix_hash: H256, - /// Ethash seal nonce - pub nonce: H64, -} - -impl EthashSeal { - /// Tries to parse rlp encoded bytes as an Ethash/Clique seal. - pub fn parse_seal>(seal: &[T]) -> Result { - if seal.len() != 2 { - return Err(BlockError::InvalidSealArity(Mismatch { - expected: 2, - found: seal.len(), - }) - .into()); - } - - let mix_hash = Rlp::new(seal[0].as_ref()) - .as_val::() - .map_err(|_e| BlockError::Rlp("Rlp - INVALID")) - .unwrap(); - let nonce = Rlp::new(seal[1].as_ref()) - .as_val::() - .map_err(|_e| BlockError::Rlp("Rlp - INVALID")) - .unwrap(); - Ok(EthashSeal { mix_hash, nonce }) - } -} - -pub fn boundary_to_difficulty(boundary: ðereum_types::H256) -> U256 { - difficulty_to_boundary_aux(&boundary.into_uint()) -} - -fn difficulty_to_boundary_aux>(difficulty: T) -> ethereum_types::U256 { - let difficulty = difficulty.into(); - - assert!(!difficulty.is_zero()); - - if difficulty == U512::one() { - U256::max_value() - } else { - const PROOF: &str = "difficulty > 1, so result never overflows 256 bits; qed"; - U256::try_from((U512::one() << 256) / difficulty).expect(PROOF) - } -} - -fn quick_get_difficulty(header_hash: &[u8; 32], nonce: u64, mix_hash: &[u8; 32], _progpow: bool) -> [u8; 32] { - let mut first_buf = [0u8; 40]; - let mut buf = [0u8; 64 + 32]; - - let hash_len = header_hash.len(); - first_buf[..hash_len].copy_from_slice(header_hash); - first_buf[hash_len..hash_len + mem::size_of::()].copy_from_slice(&nonce.to_ne_bytes()); - - keccak_hash::keccak_512(&first_buf, &mut buf); - buf[64..].copy_from_slice(mix_hash); - - let mut hash = [0u8; 32]; - keccak_hash::keccak_256(&buf, &mut hash); - - hash - - // let mut buf = [0u8; 64 + 32]; - // - // #[cfg(feature = "std")] - // unsafe { - // let hash_len = header_hash.len(); - // buf[..hash_len].copy_from_slice(header_hash); - // buf[hash_len..hash_len + mem::size_of::()].copy_from_slice(&nonce.to_ne_bytes()); - // - // keccak_512::unchecked(buf.as_mut_ptr(), 64, buf.as_ptr(), 40); - // buf[64..].copy_from_slice(mix_hash); - // - // let mut hash = [0u8; 32]; - // keccak_256::unchecked(hash.as_mut_ptr(), hash.len(), buf.as_ptr(), buf.len()); - // - // hash - // } -} diff --git a/core/sr-eth-primitives/src/receipt.rs b/core/sr-eth-primitives/src/receipt.rs deleted file mode 100644 index fb83d100b..000000000 --- a/core/sr-eth-primitives/src/receipt.rs +++ /dev/null @@ -1,202 +0,0 @@ -use codec::{Decode, Encode}; -use ethbloom::{Bloom, Input as BloomInput}; -use primitive_types::{H256, U256}; -use rlp::*; -use rstd::prelude::*; -use sr_primitives::RuntimeDebug; - -use super::*; - -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub enum TransactionOutcome { - /// Status and state root are unknown under EIP-98 rules. - Unknown, - /// State root is known. Pre EIP-98 and EIP-658 rules. - StateRoot(H256), - /// Status code is known. EIP-658 rules. - StatusCode(u8), -} - -#[derive(PartialEq, Eq, Clone, RlpEncodable, RlpDecodable, Encode, Decode, RuntimeDebug)] -pub struct LogEntry { - /// The address of the contract executing at the point of the `LOG` operation. - pub address: EthAddress, - /// The topics associated with the `LOG` operation. - pub topics: Vec, - /// The data associated with the `LOG` operation. - pub data: Bytes, -} - -impl LogEntry { - /// Calculates the bloom of this log entry. - pub fn bloom(&self) -> Bloom { - self.topics - .iter() - .fold(Bloom::from(BloomInput::Raw(self.address.as_bytes())), |mut b, t| { - b.accrue(BloomInput::Raw(t.as_bytes())); - b - }) - } -} - -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub struct Receipt { - /// The total gas used in the block following execution of the transaction. - pub gas_used: U256, - /// The OR-wide combination of all logs' blooms for this transaction. - pub log_bloom: Bloom, - /// The logs stemming from this transaction. - pub logs: Vec, - /// Transaction outcome. - pub outcome: TransactionOutcome, -} - -impl Receipt { - /// Create a new receipt. - pub fn new(outcome: TransactionOutcome, gas_used: U256, logs: Vec) -> Self { - Self { - gas_used, - log_bloom: logs.iter().fold(Bloom::default(), |mut b, l| { - b.accrue_bloom(&l.bloom()); - b - }), - logs, - outcome, - } - } -} - -impl Encodable for Receipt { - fn rlp_append(&self, s: &mut RlpStream) { - match self.outcome { - TransactionOutcome::Unknown => { - s.begin_list(3); - } - TransactionOutcome::StateRoot(ref root) => { - s.begin_list(4); - s.append(root); - } - TransactionOutcome::StatusCode(ref status_code) => { - s.begin_list(4); - s.append(status_code); - } - } - s.append(&self.gas_used); - s.append(&self.log_bloom); - s.append_list(&self.logs); - } -} - -impl Decodable for Receipt { - fn decode(rlp: &Rlp) -> Result { - if rlp.item_count()? == 3 { - Ok(Receipt { - outcome: TransactionOutcome::Unknown, - gas_used: rlp.val_at(0)?, - log_bloom: rlp.val_at(1)?, - logs: rlp.list_at(2)?, - }) - } else { - Ok(Receipt { - gas_used: rlp.val_at(1)?, - log_bloom: rlp.val_at(2)?, - logs: rlp.list_at(3)?, - outcome: { - let first = rlp.at(0)?; - if first.is_data() && first.data()?.len() <= 1 { - TransactionOutcome::StatusCode(first.as_val()?) - } else { - TransactionOutcome::StateRoot(first.as_val()?) - } - }, - }) - } - } -} - -#[cfg(test)] -mod tests { - use std::str::FromStr; - - use hex_literal::*; - use keccak_hasher::KeccakHasher; - use rustc_hex::FromHex; - - use super::*; - - #[inline] - fn construct_receipts( - root: Option, - gas_used: U256, - status: Option, - log_entries: Vec, - ) -> Receipt { - Receipt::new( - if root.is_some() { - TransactionOutcome::StateRoot(root.unwrap()) - } else { - TransactionOutcome::StatusCode(status.unwrap()) - }, - gas_used, - log_entries, - ) - } - - #[test] - /// ropsten tx hash: 0xce62c3d1d2a43cfcc39707b98de53e61a7ef7b7f8853e943d85e511b3451aa7e - fn test_basic() { - // https://ropsten.etherscan.io/tx/0xce62c3d1d2a43cfcc39707b98de53e61a7ef7b7f8853e943d85e511b3451aa7e#eventlog - let log_entries = vec![LogEntry { - address: EthAddress::from_str("ad52e0f67b6f44cd5b9a6f4fbc7c0f78f37e094b").unwrap(), - topics: vec![ - H256::from(hex!("6775ce244ff81f0a82f87d6fd2cf885affb38416e3a04355f713c6f008dd126a")), - H256::from(hex!("0000000000000000000000000000000000000000000000000000000000000006")), - H256::from(hex!("0000000000000000000000000000000000000000000000000000000000000000")), - ], - data: "00000000000000000000000074241db5f3ebaeecf9506e4ae9881860933416048eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48000000000000000000000000000000000000000000000000002386f26fc10000".from_hex().unwrap(), - }]; - - // let receipt = Receipt::new( - // TransactionOutcome::StatusCode(1), - // // TransactionOutcome::StateRoot(H256::from(hex!("a21cdf375ebef58f606c298d6211f4edee58f2dd6430edbdd0ed3cd886a16863"))), - // U256::from(U128::from(1123401)), - // log_entries, - // ); - - let r = construct_receipts(None, U256::from(U128::from(1123401)), Some(1), log_entries); - // let rs = &rlp::encode(&r)[..]; - // TODO: Check the log bloom generation logic - assert_eq!(r.log_bloom, Bloom::from_str( - "00000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000820000000000000020000000000000000000800000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000200000000020000000000000000000000000000080000000000000800000000000000000000000" - ).unwrap()); - } - - #[test] - /// kovan tx hash: 0xaaf52845694258509cbdd30ea21894b4e685eb4cdbb13dd298f925fe6e51db35 - /// block number: 13376543 (only a tx in this block, which is above) - /// from: 0x4aea6cfc5bd14f2308954d544e1dc905268357db - /// to: 0xa24df0420de1f3b8d740a52aaeb9d55d6d64478e (a contract) - /// receipts_root in block#13376543: 0xc789eb8b7f5876f4df4f8ae16f95c9881eabfb700ee7d8a00a51fb4a71afbac9 - /// to check if receipts_root in block-header can be pre-computed. - fn check_receipts() { - let expected_root = H256::from(hex!("c789eb8b7f5876f4df4f8ae16f95c9881eabfb700ee7d8a00a51fb4a71afbac9")); - let log_entries = vec![LogEntry { - address: EthAddress::from_str("a24df0420de1f3b8d740a52aaeb9d55d6d64478e").unwrap(), - topics: vec![H256::from(hex!("f36406321d51f9ba55d04e900c1d56caac28601524e09d53e9010e03f83d7d00"))], - data: "0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000363384a3868b9000000000000000000000000000000000000000000000000000000005d75f54f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000e53504f5450582f4241542d455448000000000000000000000000000000000000".from_hex().unwrap(), - }]; - let receipts = vec![Receipt::new( - TransactionOutcome::StatusCode(1), - U256::from(U128::from(73705)), - log_entries, - )]; - - let receipts_root: H256 = H256(triehash::ordered_trie_root::( - receipts.iter().map(|x| ::rlp::encode(x)), - )); - - // let receipts_root: H256 = triehash_ethereum::ordered_trie_root(); - - assert_eq!(receipts_root, expected_root); - } -} diff --git a/frame/balances/Cargo.toml b/frame/balances/Cargo.toml new file mode 100644 index 000000000..e8bfea87d --- /dev/null +++ b/frame/balances/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "darwinia-balances" +version = "0.3.0" +authors = ["Darwinia Network "] +edition = "2018" + +[dependencies] +serde = { version = "1.0.101", optional = true } +safe-mix = { version = "1.0.0", default-features = false } +codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-runtime = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +frame-support = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +frame-system = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +timestamp = { package = "pallet-timestamp", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +darwinia-support = { path = "../support", default-features = false } + +[dev-dependencies] +sp-io = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-core = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-transaction-payment = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +[features] +default = ["std"] +std = [ + "serde", + "safe-mix/std", + "codec/std", + "sp-std/std", + "frame-support/std", + "sp-runtime/std", + "frame-system/std", + "timestamp/std", + + "darwinia-support/std", +] diff --git a/srml/balances/src/lib.rs b/frame/balances/src/lib.rs similarity index 70% rename from srml/balances/src/lib.rs rename to frame/balances/src/lib.rs index 90ede3946..0ff583eb3 100644 --- a/srml/balances/src/lib.rs +++ b/frame/balances/src/lib.rs @@ -14,40 +14,181 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -#![cfg_attr(not(feature = "std"), no_std)] +//! # Balances Module +//! +//! The Balances module provides functionality for handling accounts and balances. +//! +//! - [`balances::Trait`](./trait.Trait.html) +//! - [`Call`](./enum.Call.html) +//! - [`Module`](./struct.Module.html) +//! +//! ## Overview +//! +//! The Balances module provides functions for: +//! +//! - Getting and setting free balances. +//! - Retrieving total, reserved and unreserved balances. +//! - Repatriating a reserved balance to a beneficiary account that exists. +//! - Transferring a balance between accounts (when not reserved). +//! - Slashing an account balance. +//! - Account creation and removal. +//! - Managing total issuance. +//! - Setting and managing locks. +//! +//! ### Terminology +//! +//! - **Existential Deposit:** The minimum balance required to create or keep an account open. This prevents +//! "dust accounts" from filling storage. +//! - **Total Issuance:** The total number of units in existence in a system. +//! - **Reaping an account:** The act of removing an account by resetting its nonce. Happens after its balance is set +//! to zero. +//! - **Free Balance:** The portion of a balance that is not reserved. The free balance is the only +//! balance that matters for most operations. When this balance falls below the existential +//! deposit, most functionality of the account is removed. When both it and the reserved balance +//! are deleted, then the account is said to be dead. +//! +//! No account should ever have a free balance that is strictly between 0 and the existential +//! deposit (exclusive). If this ever happens, it indicates either a bug in this module or an +//! erroneous raw mutation of storage. +//! +//! - **Reserved Balance:** Reserved balance still belongs to the account holder, but is suspended. +//! Reserved balance can still be slashed, but only after all the free balance has been slashed. +//! If the reserved balance falls below the existential deposit, it and any related functionality +//! will be deleted. When both it and the free balance are deleted, then the account is said to +//! be dead. +//! +//! No account should ever have a reserved balance that is strictly between 0 and the existential +//! deposit (exclusive). If this ever happens, it indicates either a bug in this module or an +//! erroneous raw mutation of storage. +//! +//! - **Imbalance:** A condition when some funds were credited or debited without equal and opposite accounting +//! (i.e. a difference between total issuance and account balances). Functions that result in an imbalance will +//! return an object of the `Imbalance` trait that can be managed within your runtime logic. (If an imbalance is +//! simply dropped, it should automatically maintain any book-keeping such as total issuance.) +//! - **Lock:** A freeze on a specified amount of an account's free balance until a specified block number. Multiple +//! locks always operate over the same funds, so they "overlay" rather than "stack". +//! - **Vesting:** Similar to a lock, this is another, but independent, liquidity restriction that reduces linearly +//! over time. +//! +//! ### Implementations +//! +//! The Balances module provides implementations for the following traits. If these traits provide the functionality +//! that you need, then you can avoid coupling with the Balances module. +//! +//! - [`Currency`](../frame_support/traits/trait.Currency.html): Functions for dealing with a +//! fungible assets system. +//! - [`ReservableCurrency`](../frame_support/traits/trait.ReservableCurrency.html): +//! Functions for dealing with assets that can be reserved from an account. +//! - [`LockableCurrency`](../frame_support/traits/trait.LockableCurrency.html): Functions for +//! dealing with accounts that allow liquidity restrictions. +//! - [`Imbalance`](../frame_support/traits/trait.Imbalance.html): Functions for handling +//! imbalances between total issuance in the system and account balances. Must be used when a function +//! creates new funds (e.g. a reward) or destroys some funds (e.g. a system fee). +//! - [`IsDeadAccount`](../frame_system/trait.IsDeadAccount.html): Determiner to say whether a +//! given account is unused. +//! +//! ## Interface +//! +//! ### Dispatchable Functions +//! +//! - `transfer` - Transfer some liquid free balance to another account. +//! - `set_balance` - Set the balances of a given account. The origin of this call must be root. +//! +//! ### Public Functions +//! +//! - `vesting_balance` - Get the amount that is currently being vested and cannot be transferred out of this account. +//! +//! ## Usage +//! +//! The following examples show how to use the Balances module in your custom module. +//! +//! ### Examples from the SRML +//! +//! The Contract module uses the `Currency` trait to handle gas payment, and its types inherit from `Currency`: +//! +//! ``` +//! use frame_support::traits::Currency; +//! # pub trait Trait: frame_system::Trait { +//! # type Currency: Currency; +//! # } +//! +//! pub type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; +//! pub type NegativeImbalanceOf = <::Currency as Currency<::AccountId>>::NegativeImbalance; +//! +//! # fn main() {} +//! ``` +//! +//! The Staking module uses the `LockableCurrency` trait to lock a stash account's funds: +//! +//! ``` +//! use frame_support::traits::{WithdrawReasons, LockableCurrency}; +//! use sp_runtime::traits::Bounded; +//! pub trait Trait: frame_system::Trait { +//! type Currency: LockableCurrency; +//! } +//! # struct StakingLedger { +//! # stash: ::AccountId, +//! # total: <::Currency as frame_support::traits::Currency<::AccountId>>::Balance, +//! # phantom: std::marker::PhantomData, +//! # } +//! # const STAKING_ID: [u8; 8] = *b"staking "; +//! +//! fn update_ledger( +//! controller: &T::AccountId, +//! ledger: &StakingLedger +//! ) { +//! T::Currency::set_lock( +//! STAKING_ID, +//! &ledger.stash, +//! ledger.total, +//! T::BlockNumber::max_value(), +//! WithdrawReasons::all() +//! ); +//! // >::insert(controller, ledger); // Commented out as we don't have access to Staking's storage here. +//! } +//! # fn main() {} +//! ``` +//! +//! ## Genesis config +//! +//! The Balances module depends on the [`GenesisConfig`](./struct.GenesisConfig.html). +//! +//! ## Assumptions +//! +//! * Total issued balanced of all accounts should be less than `Trait::Balance::max_value()`. -#[cfg(all(feature = "std", test))] -mod mock; -#[cfg(all(feature = "std", test))] -mod tests; +#![cfg_attr(not(feature = "std"), no_std)] use codec::{Codec, Decode, Encode}; -use rstd::{cmp, fmt::Debug, mem, prelude::*, result}; -use sr_primitives::{ +use frame_support::{ + decl_error, decl_event, decl_module, decl_storage, traits::{ - Bounded, CheckedAdd, CheckedSub, MaybeSerializeDeserialize, Member, Saturating, SimpleArithmetic, StaticLookup, - Zero, + Currency, ExistenceRequirement, Get, Imbalance, OnFreeBalanceZero, OnUnbalanced, ReservableCurrency, + SignedImbalance, TryDrop, UpdateBalanceOutcome, VestingCurrency, }, weights::SimpleDispatchInfo, - RuntimeDebug, + Parameter, StorageValue, }; -use support::{ - decl_event, decl_module, decl_storage, - dispatch::Result, +use frame_system::{self as system, ensure_root, ensure_signed, IsDeadAccount, OnNewAccount}; +use sp_runtime::{ traits::{ - Currency, ExistenceRequirement, Get, Imbalance, OnFreeBalanceZero, OnUnbalanced, ReservableCurrency, - SignedImbalance, UpdateBalanceOutcome, + Bounded, CheckedAdd, CheckedSub, MaybeSerializeDeserialize, Member, Saturating, SimpleArithmetic, StaticLookup, + Zero, }, - Parameter, StorageValue, + DispatchError, DispatchResult, RuntimeDebug, }; -use system::{ensure_root, ensure_signed, IsDeadAccount, OnNewAccount}; +use sp_std::prelude::*; +use sp_std::{cmp, fmt::Debug, mem, result}; -use darwinia_support::{BalanceLock, LockIdentifier, LockableCurrency, WithdrawLock, WithdrawReason, WithdrawReasons}; -use imbalances::{NegativeImbalance, PositiveImbalance}; +#[cfg(test)] +mod mock; +#[cfg(test)] +mod tests; -pub type Balance = u128; +pub use self::imbalances::{NegativeImbalance, PositiveImbalance}; +use darwinia_support::{BalanceLock, LockIdentifier, LockableCurrency, WithdrawLock, WithdrawReason, WithdrawReasons}; -pub trait Subtrait: system::Trait + timestamp::Trait { +pub trait Subtrait: frame_system::Trait + timestamp::Trait { /// The balance of an account. type Balance: Parameter + Member @@ -78,7 +219,7 @@ pub trait Subtrait: system::Trait + timestamp::Tr type CreationFee: Get; } -pub trait Trait: system::Trait + timestamp::Trait { +pub trait Trait: frame_system::Trait + timestamp::Trait { /// The balance of an account. type Balance: Parameter + Member @@ -107,7 +248,7 @@ pub trait Trait: system::Trait + timestamp::Trait type DustRemoval: OnUnbalanced>; /// The overarching event type. - type Event: From> + Into<::Event>; + type Event: From> + Into<::Event>; /// The minimum amount required to keep an account open. type ExistentialDeposit: Get; @@ -130,18 +271,43 @@ impl, I: Instance> Subtrait for T { decl_event!( pub enum Event where - ::AccountId, + ::AccountId, >::Balance { /// A new account was created. NewAccount(AccountId, Balance), /// An account was reaped. - ReapedAccount(AccountId), + ReapedAccount(AccountId, Balance), /// Transfer succeeded (from, to, value, fees). Transfer(AccountId, AccountId, Balance, Balance), + /// A balance was set by root (who, free, reserved). + BalanceSet(AccountId, Balance, Balance), + /// Some amount was deposited (e.g. for transaction fees). + Deposit(AccountId, Balance), } ); +decl_error! { + pub enum Error for Module, I: Instance> { + /// Vesting balance too high to send value + VestingBalance, + /// Account liquidity restrictions prevent withdrawal + LiquidityRestrictions, + /// Got an overflow after adding + Overflow, + /// Balance too low to send value + InsufficientBalance, + /// Value too low to create account due to existential deposit + ExistentialDeposit, + /// Transfer/payment would kill account + KeepAlive, + /// A vesting schedule already exists for this account + ExistingVestingSchedule, + /// Beneficiary account must pre-exist + DeadAccount, + } +} + /// Struct to encode the vesting schedule of an individual account. #[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, RuntimeDebug)] pub struct VestingSchedule { @@ -149,7 +315,7 @@ pub struct VestingSchedule { pub locked: Balance, /// Amount that gets unlocked every block after `starting_block`. pub per_block: Balance, - /// Starting block for unbondings(vesting). + /// Starting block for unlocking(vesting). pub starting_block: BlockNumber, } @@ -194,7 +360,7 @@ decl_storage! { // Total genesis `balance` minus `liquid` equals funds locked for vesting let locked = balance.saturating_sub(liquid); // Number of units unlocked per block after `begin` - let per_block = locked / length.max(sr_primitives::traits::One::one()); + let per_block = locked / length.max(sp_runtime::traits::One::one()); (who.clone(), VestingSchedule { locked: locked, @@ -214,7 +380,7 @@ decl_storage! { /// is invoked, giving a chance to external modules to clean up data associated with /// the deleted account. /// - /// `system::AccountNonce` is also deleted if `ReservedBalance` is also zero (it also gets + /// `frame_system::AccountNonce` is also deleted if `ReservedBalance` is also zero (it also gets /// collapsed to zero if it ever becomes less than `ExistentialDeposit`. pub FreeBalance get(fn free_balance) build(|config: &GenesisConfig| config.balances.clone()): @@ -229,7 +395,7 @@ decl_storage! { /// When this balance falls below the value of `ExistentialDeposit`, then this 'reserve account' /// is deleted: specifically, `ReservedBalance`. /// - /// `system::AccountNonce` is also deleted if `FreeBalance` is also zero (it also gets + /// `frame_system::AccountNonce` is also deleted if `FreeBalance` is also zero (it also gets /// collapsed to zero if it ever becomes less than `ExistentialDeposit`.) pub ReservedBalance get(fn reserved_balance): map T::AccountId => T::Balance; @@ -240,11 +406,21 @@ decl_storage! { config(balances): Vec<(T::AccountId, T::Balance)>; config(vesting): Vec<(T::AccountId, T::BlockNumber, T::BlockNumber, T::Balance)>; // ^^ begin, length, amount liquid at genesis + build(|config: &GenesisConfig| { + for (_, balance) in &config.balances { + assert!( + *balance >= >::ExistentialDeposit::get(), + "the balance of any account should always be more than existential deposit.", + ) + } + }); } } decl_module! { pub struct Module, I: Instance = DefaultInstance> for enum Call where origin: T::Origin { + type Error = Error; + /// The minimum amount required to keep an account open. const ExistentialDeposit: T::Balance = T::ExistentialDeposit::get(); @@ -297,7 +473,7 @@ decl_module! { /// This will alter `FreeBalance` and `ReservedBalance` in storage. it will /// also decrease the total issuance of the system (`TotalIssuance`). /// If the new free or reserved balance is below the existential deposit, - /// it will reset the account nonce (`system::AccountNonce`). + /// it will reset the account nonce (`frame_system::AccountNonce`). /// /// The dispatch origin for this call is `root`. /// @@ -314,6 +490,10 @@ decl_module! { ) { ensure_root(origin)?; let who = T::Lookup::lookup(who)?; + let existential_deposit = T::ExistentialDeposit::get(); + + let new_free = if new_free < existential_deposit { Zero::zero() } else { new_free }; + let new_reserved = if new_reserved < existential_deposit { Zero::zero() } else { new_reserved }; let current_free = >::get(&who); if new_free > current_free { @@ -330,6 +510,8 @@ decl_module! { mem::drop(NegativeImbalance::::new(current_reserved - new_reserved)); } Self::set_reserved_balance(&who, new_reserved); + + Self::deposit_event(RawEvent::BalanceSet(who, new_free, new_reserved)); } /// Exactly as `transfer`, except the origin must be root and the source account may be @@ -368,17 +550,6 @@ decl_module! { } impl, I: Instance> Module { - // PUBLIC IMMUTABLES - - /// Get the amount that is currently being vested and cannot be transferred out of this account. - pub fn vesting_balance(who: &T::AccountId) -> T::Balance { - if let Some(v) = Self::vesting(who) { - Self::free_balance(who).min(v.locked_at(>::block_number())) - } else { - Zero::zero() - } - } - // PRIVATE MUTABLES /// Set the reserved balance of an account to some new value. Will enforce `ExistentialDeposit` @@ -389,7 +560,7 @@ impl, I: Instance> Module { /// /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that /// the caller will do this. - pub fn set_reserved_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { + fn set_reserved_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { if balance < T::ExistentialDeposit::get() { >::insert(who, balance); Self::on_reserved_too_low(who); @@ -408,7 +579,7 @@ impl, I: Instance> Module { /// /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that /// the caller will do this. - pub fn set_free_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { + fn set_free_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { // Commented out for now - but consider it instructive. // assert!(!Self::total_balance(who).is_zero()); // assert!(Self::free_balance(who) > T::ExistentialDeposit::get()); @@ -425,7 +596,7 @@ impl, I: Instance> Module { /// Register a new account (with existential balance). /// /// This just calls appropriate hooks. It doesn't (necessarily) make any state changes. - pub fn new_account(who: &T::AccountId, balance: T::Balance) { + fn new_account(who: &T::AccountId, balance: T::Balance) { T::OnNewAccount::on_new_account(&who); Self::deposit_event(RawEvent::NewAccount(who.clone(), balance.clone())); } @@ -433,28 +604,36 @@ impl, I: Instance> Module { /// Unregister an account. /// /// This just removes the nonce and leaves an event. - pub fn reap_account(who: &T::AccountId) { - >::remove(who); - Self::deposit_event(RawEvent::ReapedAccount(who.clone())); + fn reap_account(who: &T::AccountId, dust: T::Balance) { + >::remove(who); + Self::deposit_event(RawEvent::ReapedAccount(who.clone(), dust)); } /// Account's free balance has dropped below existential deposit. Kill its /// free side and the account completely if its reserved size is already dead. /// /// Will maintain total issuance. - pub fn on_free_too_low(who: &T::AccountId) { + fn on_free_too_low(who: &T::AccountId) { let dust = >::take(who); >::remove(who); - // underflow should never happen, but if it does, there's not much we can do about it. + T::OnFreeBalanceZero::on_free_balance_zero(who); + + let mut reserved_balance = Self::reserved_balance(who); + if !dust.is_zero() { - T::DustRemoval::on_unbalanced(NegativeImbalance::new(dust)); + if reserved_balance >= T::ExistentialDeposit::get() { + // any individual account cannot cause overflow in balance. + reserved_balance += dust; + Self::set_reserved_balance(who, reserved_balance); + } else { + // underflow should never happen, but if it does, there's not much we can do. + T::DustRemoval::on_unbalanced(NegativeImbalance::new(dust)); + } } - T::OnFreeBalanceZero::on_free_balance_zero(who); - - if Self::reserved_balance(who).is_zero() { - Self::reap_account(who); + if reserved_balance.is_zero() { + Self::reap_account(who, dust); } } @@ -462,25 +641,35 @@ impl, I: Instance> Module { /// reserved side and the account completely if its free size is already dead. /// /// Will maintain total issuance. - pub fn on_reserved_too_low(who: &T::AccountId) { + fn on_reserved_too_low(who: &T::AccountId) { let dust = >::take(who); - // underflow should never happen, but it if does, there's nothing to be done here. + let mut free_balance = Self::free_balance(who); + if !dust.is_zero() { - T::DustRemoval::on_unbalanced(NegativeImbalance::new(dust)); + if free_balance >= T::ExistentialDeposit::get() { + // any individual account cannot cause overflow in balance. + free_balance += dust; + Self::set_free_balance(who, free_balance); + } else { + // underflow should never happen, but it if does, there's nothing to be done here. + T::DustRemoval::on_unbalanced(NegativeImbalance::new(dust)); + } } - if Self::free_balance(who).is_zero() { - Self::reap_account(who); + if free_balance.is_zero() { + Self::reap_account(who, dust); } } } // wrapping these imbalances in a private module is necessary to ensure absolute privacy // of the inner member. -pub mod imbalances { - use super::{result, DefaultInstance, Imbalance, Instance, Saturating, StorageValue, Subtrait, Trait, Zero}; - use rstd::mem; +mod imbalances { + use super::{ + result, DefaultInstance, Imbalance, Instance, Saturating, StorageValue, Subtrait, Trait, TryDrop, Zero, + }; + use sp_std::mem; /// Opaque, move-only struct with private fields that serves as a token denoting that /// funds have been created without any equal and opposite accounting. @@ -506,6 +695,12 @@ pub mod imbalances { } } + impl, I: Instance> TryDrop for PositiveImbalance { + fn try_drop(self) -> result::Result<(), Self> { + self.drop_zero() + } + } + impl, I: Instance> Imbalance for PositiveImbalance { type Opposite = NegativeImbalance; @@ -551,6 +746,12 @@ pub mod imbalances { } } + impl, I: Instance> TryDrop for NegativeImbalance { + fn try_drop(self) -> result::Result<(), Self> { + self.drop_zero() + } + } + impl, I: Instance> Imbalance for NegativeImbalance { type Opposite = PositiveImbalance; @@ -635,7 +836,7 @@ impl, I: Instance> PartialEq for ElevatedTrait { } } impl, I: Instance> Eq for ElevatedTrait {} -impl, I: Instance> system::Trait for ElevatedTrait { +impl, I: Instance> frame_system::Trait for ElevatedTrait { type Origin = T::Origin; type Call = T::Call; type Index = T::Index; @@ -651,6 +852,7 @@ impl, I: Instance> system::Trait for ElevatedTrait { type MaximumBlockLength = T::MaximumBlockLength; type AvailableBlockRatio = T::AvailableBlockRatio; type Version = T::Version; + type ModuleToIndex = T::ModuleToIndex; } impl, I: Instance> timestamp::Trait for ElevatedTrait { type Moment = T::Moment; @@ -726,11 +928,11 @@ where _amount: T::Balance, reasons: WithdrawReasons, new_balance: T::Balance, - ) -> Result { + ) -> DispatchResult { if reasons.intersects(WithdrawReason::Reserve | WithdrawReason::Transfer) && Self::vesting_balance(who) > new_balance { - return Err("vesting balance too high to send value"); + Err(Error::::VestingBalance)? } let locks = Self::locks(who); if locks.is_empty() { @@ -744,7 +946,7 @@ where { Ok(()) } else { - Err("account liquidity restrictions prevent withdrawal") + Err(Error::::LiquidityRestrictions.into()) } } @@ -753,7 +955,7 @@ where dest: &T::AccountId, value: Self::Balance, existence_requirement: ExistenceRequirement, - ) -> Result { + ) -> DispatchResult { let from_balance = Self::free_balance(transactor); let to_balance = Self::free_balance(dest); let would_create = to_balance.is_zero(); @@ -762,31 +964,24 @@ where } else { T::TransferFee::get() }; - let liability = match value.checked_add(&fee) { - Some(l) => l, - None => return Err("got overflow after adding a fee to value"), - }; + let liability = value.checked_add(&fee).ok_or(Error::::Overflow)?; + let new_from_balance = from_balance + .checked_sub(&liability) + .ok_or(Error::::InsufficientBalance)?; - let new_from_balance = match from_balance.checked_sub(&liability) { - None => return Err("balance too low to send value"), - Some(b) => b, - }; if would_create && value < T::ExistentialDeposit::get() { - return Err("value too low to create account"); + Err(Error::::ExistentialDeposit)? } Self::ensure_can_withdraw(transactor, value, WithdrawReason::Transfer.into(), new_from_balance)?; // NOTE: total stake being stored in the same type means that this could never overflow // but better to be safe than sorry. - let new_to_balance = match to_balance.checked_add(&value) { - Some(b) => b, - None => return Err("destination balance too high to receive value"), - }; + let new_to_balance = to_balance.checked_add(&value).ok_or(Error::::Overflow)?; if transactor != dest { if existence_requirement == ExistenceRequirement::KeepAlive { if new_from_balance < Self::minimum_balance() { - return Err("transfer would kill account"); + Err(Error::::KeepAlive)? } } @@ -794,9 +989,14 @@ where if !>::exists(dest) { Self::new_account(dest, new_to_balance); } + + // Emit transfer event. + Self::deposit_event(RawEvent::Transfer(transactor.clone(), dest.clone(), value, fee)); + + // Take action on the set_free_balance call. + // This will emit events that _resulted_ from the transfer. Self::set_free_balance(dest, new_to_balance); T::TransferPayment::on_unbalanced(NegativeImbalance::new(fee)); - Self::deposit_event(RawEvent::Transfer(transactor.clone(), dest.clone(), value, fee)); } Ok(()) @@ -805,6 +1005,7 @@ where fn slash(who: &T::AccountId, value: Self::Balance) -> (Self::NegativeImbalance, Self::Balance) { let free_balance = Self::free_balance(who); let free_slash = cmp::min(free_balance, value); + Self::set_free_balance(who, free_balance - free_slash); let remaining_slash = value - free_slash; // NOTE: `slash()` prefers free balance, but assumes that reserve balance can be drawn @@ -827,9 +1028,9 @@ where fn deposit_into_existing( who: &T::AccountId, value: Self::Balance, - ) -> result::Result { + ) -> result::Result { if Self::total_balance(who).is_zero() { - return Err("beneficiary account must pre-exist"); + Err(Error::::DeadAccount)? } Self::set_free_balance(who, Self::free_balance(who) + value); Ok(PositiveImbalance::new(value)) @@ -850,7 +1051,7 @@ where value: Self::Balance, reasons: WithdrawReasons, liveness: ExistenceRequirement, - ) -> result::Result { + ) -> result::Result { let old_balance = Self::free_balance(who); if let Some(new_balance) = old_balance.checked_sub(&value) { // if we need to keep the account alive... @@ -860,13 +1061,13 @@ where // ...yet is was alive before && old_balance >= T::ExistentialDeposit::get() { - return Err("payment would kill account"); + Err(Error::::KeepAlive)? } Self::ensure_can_withdraw(who, value, reasons, new_balance)?; Self::set_free_balance(who, new_balance); Ok(NegativeImbalance::new(value)) } else { - Err("too few free funds in account") + Err(Error::::InsufficientBalance)? } } @@ -942,10 +1143,10 @@ where >::get(who) } - fn reserve(who: &T::AccountId, value: Self::Balance) -> result::Result<(), &'static str> { + fn reserve(who: &T::AccountId, value: Self::Balance) -> result::Result<(), DispatchError> { let b = Self::free_balance(who); if b < value { - return Err("not enough free funds"); + Err(Error::::InsufficientBalance)? } let new_balance = b - value; Self::ensure_can_withdraw(who, value, WithdrawReason::Reserve.into(), new_balance)?; @@ -966,9 +1167,9 @@ where slashed: &T::AccountId, beneficiary: &T::AccountId, value: Self::Balance, - ) -> result::Result { + ) -> result::Result { if Self::total_balance(beneficiary).is_zero() { - return Err("beneficiary account must pre-exist"); + Err(Error::::DeadAccount)? } let b = Self::reserved_balance(slashed); let slash = cmp::min(b, value); @@ -1014,6 +1215,49 @@ where } } +impl, I: Instance> VestingCurrency for Module +where + T::Balance: MaybeSerializeDeserialize + Debug, +{ + type Moment = T::BlockNumber; + + /// Get the amount that is currently being vested and cannot be transferred out of this account. + fn vesting_balance(who: &T::AccountId) -> T::Balance { + if let Some(v) = Self::vesting(who) { + Self::free_balance(who).min(v.locked_at(>::block_number())) + } else { + Zero::zero() + } + } + + /// Adds a vesting schedule to a given account. + /// + /// If there already exists a vesting schedule for the given account, an `Err` is returned + /// and nothing is updated. + fn add_vesting_schedule( + who: &T::AccountId, + locked: T::Balance, + per_block: T::Balance, + starting_block: T::BlockNumber, + ) -> DispatchResult { + if >::exists(who) { + Err(Error::::ExistingVestingSchedule)? + } + let vesting_schedule = VestingSchedule { + locked, + per_block, + starting_block, + }; + >::insert(who, vesting_schedule); + Ok(()) + } + + /// Remove a vesting schedule for a given account. + fn remove_vesting_schedule(who: &T::AccountId) { + >::remove(who); + } +} + impl, I: Instance> IsDeadAccount for Module where T::Balance: MaybeSerializeDeserialize + Debug, diff --git a/srml/balances/src/mock.rs b/frame/balances/src/mock.rs similarity index 63% rename from srml/balances/src/mock.rs rename to frame/balances/src/mock.rs index b1a121186..f5664be7e 100644 --- a/srml/balances/src/mock.rs +++ b/frame/balances/src/mock.rs @@ -15,79 +15,59 @@ // along with Substrate. If not, see . //! Test utilities -use std::cell::RefCell; - -use primitives::H256; -use sr_primitives::{ - testing::Header, - traits::{BlakeTwo256, ConvertInto, IdentityLookup}, - weights::{DispatchInfo, Weight}, - Perbill, -}; -use support::{impl_outer_origin, parameter_types, traits::Get}; - -use crate::*; - -/// The AccountId alias in this test module. -pub type AccountId = u64; -pub type BlockNumber = u64; -pub type Moment = u64; -pub type System = system::Module; -pub type Timestamp = timestamp::Module; - -pub type Balances = Module; - -pub const CALL: &::Call = &(); +use sp_runtime::{Perbill, traits::{ConvertInto, IdentityLookup}, testing::Header}; +use sp_core::H256; +use sp_io; +use frame_support::{impl_outer_origin, parameter_types}; +use frame_support::traits::Get; +use frame_support::weights::{Weight, DispatchInfo}; +use std::cell::RefCell; +use crate::{GenesisConfig, Module, Trait}; -impl_outer_origin! { +use frame_system as system; +impl_outer_origin!{ pub enum Origin for Test {} } thread_local! { - static EXISTENTIAL_DEPOSIT: RefCell = RefCell::new(0); - static TRANSFER_FEE: RefCell = RefCell::new(0); - static CREATION_FEE: RefCell = RefCell::new(0); + pub(crate) static EXISTENTIAL_DEPOSIT: RefCell = RefCell::new(0); + static TRANSFER_FEE: RefCell = RefCell::new(0); + static CREATION_FEE: RefCell = RefCell::new(0); } pub struct ExistentialDeposit; -impl Get for ExistentialDeposit { - fn get() -> Balance { - EXISTENTIAL_DEPOSIT.with(|v| *v.borrow()) - } +impl Get for ExistentialDeposit { + fn get() -> u64 { EXISTENTIAL_DEPOSIT.with(|v| *v.borrow()) } } pub struct TransferFee; -impl Get for TransferFee { - fn get() -> Balance { - TRANSFER_FEE.with(|v| *v.borrow()) - } +impl Get for TransferFee { + fn get() -> u64 { TRANSFER_FEE.with(|v| *v.borrow()) } } pub struct CreationFee; -impl Get for CreationFee { - fn get() -> Balance { - CREATION_FEE.with(|v| *v.borrow()) - } +impl Get for CreationFee { + fn get() -> u64 { CREATION_FEE.with(|v| *v.borrow()) } } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. #[derive(Clone, PartialEq, Eq, Debug)] pub struct Test; parameter_types! { - pub const BlockHashCount: BlockNumber = 250; + pub const BlockHashCount: u64 = 250; pub const MaximumBlockWeight: Weight = 1024; pub const MaximumBlockLength: u32 = 2 * 1024; pub const AvailableBlockRatio: Perbill = Perbill::one(); } -impl system::Trait for Test { +impl frame_system::Trait for Test { type Origin = Origin; - type Call = (); type Index = u64; - type BlockNumber = BlockNumber; + type BlockNumber = u64; + type Call = (); type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = AccountId; + type Hashing = ::sp_runtime::traits::BlakeTwo256; + type AccountId = u64; type Lookup = IdentityLookup; type Header = Header; type Event = (); @@ -96,13 +76,13 @@ impl system::Trait for Test { type MaximumBlockLength = MaximumBlockLength; type AvailableBlockRatio = AvailableBlockRatio; type Version = (); + type ModuleToIndex = (); } - parameter_types! { - pub const TransactionBaseFee: Balance = 0; - pub const TransactionByteFee: Balance = 1; + pub const TransactionBaseFee: u64 = 0; + pub const TransactionByteFee: u64 = 1; } -impl transaction_payment::Trait for Test { +impl pallet_transaction_payment::Trait for Test { type Currency = Module; type OnTransactionPayment = (); type TransactionBaseFee = TransactionBaseFee; @@ -110,33 +90,22 @@ impl transaction_payment::Trait for Test { type WeightToFee = ConvertInto; type FeeMultiplierUpdate = (); } - -parameter_types! { - pub const MinimumPeriod: Moment = 5; -} - -impl timestamp::Trait for Test { - type Moment = Moment; - type OnTimestampSet = (); - type MinimumPeriod = MinimumPeriod; -} - impl Trait for Test { - type Balance = Balance; + type Balance = u64; type OnFreeBalanceZero = (); type OnNewAccount = (); - type TransferPayment = (); - type DustRemoval = (); type Event = (); + type DustRemoval = (); + type TransferPayment = (); type ExistentialDeposit = ExistentialDeposit; type TransferFee = TransferFee; type CreationFee = CreationFee; } pub struct ExtBuilder { - existential_deposit: Balance, - transfer_fee: Balance, - creation_fee: Balance, + existential_deposit: u64, + transfer_fee: u64, + creation_fee: u64, monied: bool, vesting: bool, } @@ -152,16 +121,16 @@ impl Default for ExtBuilder { } } impl ExtBuilder { - pub fn existential_deposit(mut self, existential_deposit: Balance) -> Self { + pub fn existential_deposit(mut self, existential_deposit: u64) -> Self { self.existential_deposit = existential_deposit; self } #[allow(dead_code)] - pub fn transfer_fee(mut self, transfer_fee: Balance) -> Self { + pub fn transfer_fee(mut self, transfer_fee: u64) -> Self { self.transfer_fee = transfer_fee; self } - pub fn creation_fee(mut self, creation_fee: Balance) -> Self { + pub fn creation_fee(mut self, creation_fee: u64) -> Self { self.creation_fee = creation_fee; self } @@ -181,9 +150,9 @@ impl ExtBuilder { TRANSFER_FEE.with(|v| *v.borrow_mut() = self.transfer_fee); CREATION_FEE.with(|v| *v.borrow_mut() = self.creation_fee); } - pub fn build(self) -> runtime_io::TestExternalities { + pub fn build(self) -> sp_io::TestExternalities { self.set_associated_consts(); - let mut t = system::GenesisConfig::default().build_storage::().unwrap(); + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); GenesisConfig:: { balances: if self.monied { vec![ @@ -191,7 +160,7 @@ impl ExtBuilder { (2, 20 * self.existential_deposit), (3, 30 * self.existential_deposit), (4, 40 * self.existential_deposit), - (12, 10 * self.existential_deposit), + (12, 10 * self.existential_deposit) ] } else { vec![] @@ -200,22 +169,22 @@ impl ExtBuilder { vec![ (1, 0, 10, 5 * self.existential_deposit), (2, 10, 20, 0), - (12, 10, 20, 5 * self.existential_deposit), + (12, 10, 20, 5 * self.existential_deposit) ] } else { vec![] }, - } - .assimilate_storage(&mut t) - .unwrap(); + }.assimilate_storage(&mut t).unwrap(); t.into() } } +pub type System = frame_system::Module; +pub type Balances = Module; + +pub const CALL: &::Call = &(); + /// create a transaction info struct from weight. Handy to avoid building the whole struct. pub fn info_from_weight(w: Weight) -> DispatchInfo { - DispatchInfo { - weight: w, - ..Default::default() - } + DispatchInfo { weight: w, ..Default::default() } } diff --git a/srml/balances/src/tests.rs b/frame/balances/src/tests.rs similarity index 69% rename from srml/balances/src/tests.rs rename to frame/balances/src/tests.rs index ffe06a03b..d5cf35a21 100644 --- a/srml/balances/src/tests.rs +++ b/frame/balances/src/tests.rs @@ -15,16 +15,17 @@ // along with Substrate. If not, see . //! Tests for the module. -use sr_primitives::traits::SignedExtension; -use support::{ - assert_err, assert_noop, assert_ok, - traits::{Currency, ExistenceRequirement::AllowDeath, ReservableCurrency}, -}; -use system::RawOrigin; -use transaction_payment::ChargeTransactionPayment; -use crate::{mock::*, *}; -use darwinia_support::{LockIdentifier, LockableCurrency, NormalLock, WithdrawLock, WithdrawReason, WithdrawReasons}; +use super::*; +use mock::{Balances, ExtBuilder, Test, System, info_from_weight, CALL}; +use sp_runtime::traits::{SignedExtension, BadOrigin}; +use frame_support::{ + assert_noop, assert_ok, assert_err, + traits::{LockableCurrency, LockIdentifier, WithdrawReason, WithdrawReasons, + Currency, ReservableCurrency, ExistenceRequirement::AllowDeath} +}; +use pallet_transaction_payment::ChargeTransactionPayment; +use frame_system::RawOrigin; const ID_1: LockIdentifier = *b"1 "; const ID_2: LockIdentifier = *b"2 "; @@ -32,185 +33,81 @@ const ID_3: LockIdentifier = *b"3 "; #[test] fn basic_locking_should_work() { - ExtBuilder::default() - .existential_deposit(1) - .monied(true) - .build() - .execute_with(|| { - assert_eq!(Balances::free_balance(&1), 10); - Balances::set_lock( - ID_1, - &1, - WithdrawLock::Normal(NormalLock { - amount: 9, - until: Moment::max_value(), - }), - WithdrawReasons::all(), - ); - assert_noop!( - >::transfer(&1, &2, 5, AllowDeath), - "account liquidity restrictions prevent withdrawal" - ); - }); + ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { + assert_eq!(Balances::free_balance(&1), 10); + Balances::set_lock(ID_1, &1, 9, u64::max_value(), WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 5, AllowDeath), + Error::::LiquidityRestrictions + ); + }); } #[test] fn partial_locking_should_work() { - ExtBuilder::default() - .existential_deposit(1) - .monied(true) - .build() - .execute_with(|| { - Balances::set_lock( - ID_1, - &1, - WithdrawLock::Normal(NormalLock { - amount: 5, - until: Moment::max_value(), - }), - WithdrawReasons::all(), - ); - assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); - }); + ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { + Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); + assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); + }); } #[test] fn lock_removal_should_work() { - ExtBuilder::default() - .existential_deposit(1) - .monied(true) - .build() - .execute_with(|| { - Balances::set_lock( - ID_1, - &1, - WithdrawLock::Normal(NormalLock { - amount: Balance::max_value(), - until: Moment::max_value(), - }), - WithdrawReasons::all(), - ); - Balances::remove_lock(ID_1, &1); - assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); - }); + ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { + Balances::set_lock(ID_1, &1, u64::max_value(), u64::max_value(), WithdrawReasons::all()); + Balances::remove_lock(ID_1, &1); + assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); + }); } #[test] fn lock_replacement_should_work() { - ExtBuilder::default() - .existential_deposit(1) - .monied(true) - .build() - .execute_with(|| { - Balances::set_lock( - ID_1, - &1, - WithdrawLock::Normal(NormalLock { - amount: Balance::max_value(), - until: Moment::max_value(), - }), - WithdrawReasons::all(), - ); - Balances::set_lock( - ID_1, - &1, - WithdrawLock::Normal(NormalLock { - amount: 5, - until: Moment::max_value(), - }), - WithdrawReasons::all(), - ); - assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); - }); + ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { + Balances::set_lock(ID_1, &1, u64::max_value(), u64::max_value(), WithdrawReasons::all()); + Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); + assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); + }); } #[test] fn double_locking_should_work() { - ExtBuilder::default() - .existential_deposit(1) - .monied(true) - .build() - .execute_with(|| { - Balances::set_lock( - ID_1, - &1, - WithdrawLock::Normal(NormalLock { - amount: 5, - until: Moment::max_value(), - }), - WithdrawReasons::all(), - ); - Balances::set_lock( - ID_2, - &1, - WithdrawLock::Normal(NormalLock { - amount: 5, - until: Moment::max_value(), - }), - WithdrawReasons::all(), - ); - assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); - }); + ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { + Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); + Balances::set_lock(ID_2, &1, 5, u64::max_value(), WithdrawReasons::all()); + assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); + }); } #[test] fn combination_locking_should_work() { - ExtBuilder::default() - .existential_deposit(1) - .monied(true) - .build() - .execute_with(|| { - Balances::set_lock( - ID_1, - &1, - WithdrawLock::Normal(NormalLock { - amount: Balance::max_value(), - until: 0, - }), - WithdrawReasons::all(), - ); - Balances::set_lock( - ID_2, - &1, - WithdrawLock::Normal(NormalLock { - amount: 0, - until: Moment::max_value(), - }), - WithdrawReasons::all(), - ); - Balances::set_lock( - ID_3, - &1, - WithdrawLock::Normal(NormalLock { amount: 0, until: 0 }), - WithdrawReasons::all(), - ); - assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); - }); + ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { + Balances::set_lock(ID_1, &1, u64::max_value(), 0, WithdrawReasons::none()); + Balances::set_lock(ID_2, &1, 0, u64::max_value(), WithdrawReasons::none()); + Balances::set_lock(ID_3, &1, 0, 0, WithdrawReasons::all()); + assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); + }); } -// TODO -// #[test] -// fn lock_value_extension_should_work() { -// ExtBuilder::default() -// .existential_deposit(1) -// .monied(true) -// .build() -// .execute_with(|| { -// Balances::set_lock( -// ID_1, -// &1, -// WithdrawLock::Normal(NormalLock { -// amount: 5, -// until: Moment::max_value(), -// }), -// WithdrawReasons::all() -// ); -// assert_noop!( -// >::transfer(&1, &2, 6, AllowDeath), -// "account liquidity restrictions prevent withdrawal" -// ); -// }); -// } +#[test] +fn lock_value_extension_should_work() { + ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { + Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + Balances::extend_lock(ID_1, &1, 2, u64::max_value(), WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + Balances::extend_lock(ID_1, &1, 8, u64::max_value(), WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 3, AllowDeath), + Error::::LiquidityRestrictions + ); + }); +} #[test] fn lock_reasons_should_work() { @@ -219,18 +116,10 @@ fn lock_reasons_should_work() { .monied(true) .build() .execute_with(|| { - Balances::set_lock( - ID_1, - &1, - WithdrawLock::Normal(NormalLock { - amount: 10, - until: Moment::max_value(), - }), - WithdrawReason::Transfer.into(), - ); + Balances::set_lock(ID_1, &1, 10, u64::max_value(), WithdrawReason::Transfer.into()); assert_noop!( >::transfer(&1, &2, 1, AllowDeath), - "account liquidity restrictions prevent withdrawal" + Error::::LiquidityRestrictions ); assert_ok!(>::reserve(&1, 1)); // NOTE: this causes a fee payment. @@ -240,22 +129,13 @@ fn lock_reasons_should_work() { CALL, info_from_weight(1), 0, - ) - .is_ok()); + ).is_ok()); - Balances::set_lock( - ID_1, - &1, - WithdrawLock::Normal(NormalLock { - amount: 10, - until: Moment::max_value(), - }), - WithdrawReason::Reserve.into(), - ); + Balances::set_lock(ID_1, &1, 10, u64::max_value(), WithdrawReason::Reserve.into()); assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); assert_noop!( >::reserve(&1, 1), - "account liquidity restrictions prevent withdrawal" + Error::::LiquidityRestrictions ); assert!( as SignedExtension>::pre_dispatch( ChargeTransactionPayment::from(1), @@ -263,18 +143,9 @@ fn lock_reasons_should_work() { CALL, info_from_weight(1), 0, - ) - .is_ok()); + ).is_ok()); - Balances::set_lock( - ID_1, - &1, - WithdrawLock::Normal(NormalLock { - amount: 10, - until: Moment::max_value(), - }), - WithdrawReason::TransactionPayment.into(), - ); + Balances::set_lock(ID_1, &1, 10, u64::max_value(), WithdrawReason::TransactionPayment.into()); assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); assert_ok!(>::reserve(&1, 1)); assert!( as SignedExtension>::pre_dispatch( @@ -283,57 +154,66 @@ fn lock_reasons_should_work() { CALL, info_from_weight(1), 0, - ) - .is_err()); + ).is_err()); }); } #[test] fn lock_block_number_should_work() { - ExtBuilder::default() - .existential_deposit(1) - .monied(true) - .build() - .execute_with(|| { - Balances::set_lock( - ID_1, - &1, - WithdrawLock::Normal(NormalLock { amount: 10, until: 2 }), - WithdrawReasons::all(), - ); - assert_noop!( - >::transfer(&1, &2, 1, AllowDeath), - "account liquidity restrictions prevent withdrawal" - ); + ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { + Balances::set_lock(ID_1, &1, 10, 2, WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 1, AllowDeath), + Error::::LiquidityRestrictions + ); - Timestamp::set_timestamp(2); - assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); - }); + System::set_block_number(2); + assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); + }); } -// TODO -// #[test] -// fn lock_block_number_extension_should_work() { -// ExtBuilder::default() -// .existential_deposit(1) -// .monied(true) -// .build() -// .execute_with(|| { -// Balances::set_lock( -// ID_1, -// &1, -// WithdrawLock::Normal(NormalLock { -// amount: 10, -// until: Moment::max_value(), -// }), -// WithdrawReasons::all() -// ); -// assert_noop!( -// >::transfer(&1, &2, 6, AllowDeath), -// "account liquidity restrictions prevent withdrawal" -// ); -// }); -// } +#[test] +fn lock_block_number_extension_should_work() { + ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { + Balances::set_lock(ID_1, &1, 10, 2, WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + Balances::extend_lock(ID_1, &1, 10, 1, WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + System::set_block_number(2); + Balances::extend_lock(ID_1, &1, 10, 8, WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 3, AllowDeath), + Error::::LiquidityRestrictions + ); + }); +} + +#[test] +fn lock_reasons_extension_should_work() { + ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { + Balances::set_lock(ID_1, &1, 10, 10, WithdrawReason::Transfer.into()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + Balances::extend_lock(ID_1, &1, 10, 10, WithdrawReasons::none()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + Balances::extend_lock(ID_1, &1, 10, 10, WithdrawReason::Reserve.into()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + }); +} #[test] fn default_indexing_on_new_accounts_should_not_work2() { @@ -344,10 +224,10 @@ fn default_indexing_on_new_accounts_should_not_work2() { .build() .execute_with(|| { assert_eq!(Balances::is_dead_account(&5), true); // account 5 should not exist - // ext_deposit is 10, value is 9, not satisfies for ext_deposit + // ext_deposit is 10, value is 9, not satisfies for ext_deposit assert_noop!( Balances::transfer(Some(1).into(), 5, 9), - "value too low to create account", + Error::::ExistentialDeposit, ); assert_eq!(Balances::is_dead_account(&5), true); // account 5 should not exist assert_eq!(Balances::free_balance(&1), 100); @@ -368,7 +248,7 @@ fn reserved_balance_should_prevent_reclaim_count() { assert_ok!(Balances::reserve(&2, 256 * 19 + 1)); // account 2 becomes mostly reserved assert_eq!(Balances::free_balance(&2), 0); // "free" account deleted." - assert_eq!(Balances::total_balance(&2), 256 * 19 + 1); // reserve still exists. + assert_eq!(Balances::total_balance(&2), 256 * 20); // reserve still exists. assert_eq!(Balances::is_dead_account(&2), false); assert_eq!(System::account_nonce(&2), 1); @@ -377,10 +257,10 @@ fn reserved_balance_should_prevent_reclaim_count() { assert_eq!(Balances::total_balance(&5), 256 * 1 + 0x69); assert_eq!(Balances::is_dead_account(&5), false); - assert!(Balances::slash(&2, 256 * 18 + 2).1.is_zero()); // account 2 gets slashed - // "reserve" account reduced to 255 (below ED) so account deleted + assert!(Balances::slash(&2, 256 * 19 + 2).1.is_zero()); // account 2 gets slashed + // "reserve" account reduced to 255 (below ED) so account deleted assert_eq!(Balances::total_balance(&2), 0); - assert_eq!(System::account_nonce(&2), 0); // nonce zero + assert_eq!(System::account_nonce(&2), 0); // nonce zero assert_eq!(Balances::is_dead_account(&2), true); // account 4 tries to take index 1 again for account 6. @@ -390,6 +270,7 @@ fn reserved_balance_should_prevent_reclaim_count() { }); } + #[test] fn reward_should_work() { ExtBuilder::default().monied(true).build().execute_with(|| { @@ -464,7 +345,10 @@ fn balance_transfer_works() { fn force_transfer_works() { ExtBuilder::default().build().execute_with(|| { let _ = Balances::deposit_creating(&1, 111); - assert_noop!(Balances::force_transfer(Some(2).into(), 1, 2, 69), "RequireRootOrigin"); + assert_noop!( + Balances::force_transfer(Some(2).into(), 1, 2, 69), + BadOrigin, + ); assert_ok!(Balances::force_transfer(RawOrigin::Root.into(), 1, 2, 69)); assert_eq!(Balances::total_balance(&1), 42); assert_eq!(Balances::total_balance(&2), 69); @@ -495,7 +379,7 @@ fn balance_transfer_when_reserved_should_not_work() { assert_ok!(Balances::reserve(&1, 69)); assert_noop!( Balances::transfer(Some(1).into(), 2, 69), - "balance too low to send value", + Error::::InsufficientBalance, ); }); } @@ -598,10 +482,7 @@ fn transferring_reserved_balance_to_nonexistent_should_fail() { ExtBuilder::default().build().execute_with(|| { let _ = Balances::deposit_creating(&1, 111); assert_ok!(Balances::reserve(&1, 111)); - assert_noop!( - Balances::repatriate_reserved(&1, &2, 42), - "beneficiary account must pre-exist" - ); + assert_noop!(Balances::repatriate_reserved(&1, &2, 42), Error::::DeadAccount); }); } @@ -622,15 +503,15 @@ fn transferring_incomplete_reserved_balance_should_work() { #[test] fn transferring_too_high_value_should_not_panic() { ExtBuilder::default().build().execute_with(|| { - >::insert(1, Balance::max_value()); + >::insert(1, u64::max_value()); >::insert(2, 1); assert_err!( - Balances::transfer(Some(1).into(), 2, Balance::max_value()), - "destination balance too high to receive value", + Balances::transfer(Some(1).into(), 2, u64::max_value()), + Error::::Overflow, ); - assert_eq!(Balances::free_balance(&1), Balance::max_value()); + assert_eq!(Balances::free_balance(&1), u64::max_value()); assert_eq!(Balances::free_balance(&2), 1); }); } @@ -648,6 +529,7 @@ fn account_create_on_free_too_low_with_other() { }) } + #[test] fn account_create_on_free_too_low() { ExtBuilder::default().existential_deposit(100).build().execute_with(|| { @@ -689,11 +571,11 @@ fn account_removal_on_free_too_low() { fn transfer_overflow_isnt_exploitable() { ExtBuilder::default().creation_fee(50).build().execute_with(|| { // Craft a value that will overflow if summed with `creation_fee`. - let evil_value = Balance::max_value() - 49; + let evil_value = u64::max_value() - 49; assert_err!( Balances::transfer(Some(1).into(), 5, evil_value), - "got overflow after adding a fee to value", + Error::::Overflow, ); }); } @@ -755,6 +637,7 @@ fn check_vesting_status() { assert_eq!(Balances::vesting_balance(&1), 0); // Account 1 is still fully vested, and not negative assert_eq!(Balances::vesting_balance(&2), 0); // Account 2 has fully vested by block 30 assert_eq!(Balances::vesting_balance(&12), 0); // Account 2 has fully vested by block 30 + }); } @@ -769,11 +652,11 @@ fn unvested_balance_should_not_transfer() { assert_eq!(System::block_number(), 1); 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) + // Account 1 has only 5 units vested at block 1 (plus 50 unvested) assert_eq!(Balances::vesting_balance(&1), 45); assert_noop!( Balances::transfer(Some(1).into(), 2, 56), - "vesting balance too high to send value", + Error::::VestingBalance, ); // Account 1 cannot send more than vested amount }); } @@ -789,7 +672,7 @@ fn vested_balance_should_transfer() { assert_eq!(System::block_number(), 1); 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) + // Account 1 has only 5 units vested at block 1 (plus 50 unvested) assert_eq!(Balances::vesting_balance(&1), 45); assert_ok!(Balances::transfer(Some(1).into(), 2, 55)); }); @@ -835,7 +718,7 @@ fn liquid_funds_should_transfer_with_delayed_vesting() { let user12_free_balance = Balances::free_balance(&12); assert_eq!(user12_free_balance, 2560); // Account 12 has free balance - // Account 12 has liquid funds + // Account 12 has liquid funds assert_eq!(Balances::vesting_balance(&12), user12_free_balance - 256 * 5); // Account 12 has delayed vesting @@ -868,10 +751,60 @@ fn transfer_keep_alive_works() { let _ = Balances::deposit_creating(&1, 100); assert_err!( Balances::transfer_keep_alive(Some(1).into(), 2, 100), - "transfer would kill account" + Error::::KeepAlive ); assert_eq!(Balances::is_dead_account(&1), false); assert_eq!(Balances::total_balance(&1), 100); assert_eq!(Balances::total_balance(&2), 0); }); } + +#[test] +#[should_panic="the balance of any account should always be more than existential deposit."] +fn cannot_set_genesis_value_below_ed() { + mock::EXISTENTIAL_DEPOSIT.with(|v| *v.borrow_mut() = 11); + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + let _ = GenesisConfig:: { + balances: vec![(1, 10)], + vesting: vec![], + }.assimilate_storage(&mut t).unwrap(); +} + +#[test] +fn dust_moves_between_free_and_reserved() { + ExtBuilder::default() + .existential_deposit(100) + .build() + .execute_with(|| { + // Set balance to free and reserved at the existential deposit + assert_ok!(Balances::set_balance(RawOrigin::Root.into(), 1, 100, 100)); + assert_ok!(Balances::set_balance(RawOrigin::Root.into(), 2, 100, 100)); + // Check balance + assert_eq!(Balances::free_balance(1), 100); + assert_eq!(Balances::reserved_balance(1), 100); + assert_eq!(Balances::free_balance(2), 100); + assert_eq!(Balances::reserved_balance(2), 100); + + // Drop 1 free_balance below ED + assert_ok!(Balances::transfer(Some(1).into(), 2, 1)); + // Check balance, the other 99 should move to reserved_balance + assert_eq!(Balances::free_balance(1), 0); + assert_eq!(Balances::reserved_balance(1), 199); + + // Reset accounts + assert_ok!(Balances::set_balance(RawOrigin::Root.into(), 1, 100, 100)); + assert_ok!(Balances::set_balance(RawOrigin::Root.into(), 2, 100, 100)); + + // Drop 2 reserved_balance below ED + Balances::unreserve(&2, 1); + // Check balance, all 100 should move to free_balance + assert_eq!(Balances::free_balance(2), 200); + assert_eq!(Balances::reserved_balance(2), 0); + + // An account with both too little free and reserved is completely killed + assert_ok!(Balances::set_balance(RawOrigin::Root.into(), 1, 99, 99)); + // Check balance is 0 for everything + assert_eq!(Balances::free_balance(1), 0); + assert_eq!(Balances::reserved_balance(1), 0); + }); +} diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml new file mode 100644 index 000000000..68ff8ad43 --- /dev/null +++ b/frame/staking/Cargo.toml @@ -0,0 +1,54 @@ +[package] +name = "darwinia-staking" +version = "2.0.0" +authors = ["Parity Technologies "] +edition = "2018" + +[dependencies] +codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +safe-mix = { version = "1.0.0", default-features = false } +serde = { version = "1.0.101", optional = true } + +frame-support = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +frame-system = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-authorship = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-session = { version = "2.0.0", default-features = false, features = ["historical"], git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-timestamp = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-core = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-io ={ default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-keyring = { version = "2.0.0", optional = true, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-phragmen = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-runtime = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-staking = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +darwinia-support = { path = "../support", default-features = false } + +[dev-dependencies] +pallet-balances = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-staking-reward-curve = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +substrate-test-utils = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +[features] +equalize = [] +migrate = [] +default = ["std", "equalize"] +std = [ + "codec/std", + "safe-mix/std", + "serde", + + "frame-support/std", + "frame-system/std", + "pallet-authorship/std", + "pallet-session/std", + "pallet-timestamp/std", + "sp-io/std", + "sp-keyring", + "sp-phragmen/std", + "sp-runtime/std", + "sp-staking/std", + "sp-std/std", + + "darwinia-support/std", +] diff --git a/frame/staking/reward-curve/Cargo.toml b/frame/staking/reward-curve/Cargo.toml new file mode 100644 index 000000000..0353476a9 --- /dev/null +++ b/frame/staking/reward-curve/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "pallet-staking-reward-curve" +version = "2.0.0" +authors = ["Parity Technologies "] +edition = "2018" + +[lib] +proc-macro = true + +[dependencies] +syn = { version = "1.0.7", features = ["full", "visit"] } +quote = "1.0" +proc-macro2 = "1.0.6" +proc-macro-crate = "0.1.4" + +[dev-dependencies] +sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } diff --git a/frame/staking/reward-curve/src/lib.rs b/frame/staking/reward-curve/src/lib.rs new file mode 100644 index 000000000..89a1980d1 --- /dev/null +++ b/frame/staking/reward-curve/src/lib.rs @@ -0,0 +1,425 @@ +extern crate proc_macro; + +mod log; + +use log::log2; +use proc_macro::TokenStream; +use proc_macro2::{TokenStream as TokenStream2, Span}; +use proc_macro_crate::crate_name; +use quote::{quote, ToTokens}; +use std::convert::TryInto; +use syn::parse::{Parse, ParseStream}; + +/// Accepts a number of expressions to create a instance of PiecewiseLinear which represents the +/// NPoS curve (as detailed +/// [here](http://research.web3.foundation/en/latest/polkadot/Token%20Economics/#inflation-model)) +/// for those parameters. Parameters are: +/// - `min_inflation`: the minimal amount to be rewarded between validators, expressed as a fraction +/// of total issuance. Known as `I_0` in the literature. +/// Expressed in millionth, must be between 0 and 1_000_000. +/// +/// - `max_inflation`: the maximum amount to be rewarded between validators, expressed as a fraction +/// of total issuance. This is attained only when `ideal_stake` is achieved. +/// Expressed in millionth, must be between min_inflation and 1_000_000. +/// +/// - `ideal_stake`: the fraction of total issued tokens that should be actively staked behind +/// validators. Known as `x_ideal` in the literature. +/// Expressed in millionth, must be between 0_100_000 and 0_900_000. +/// +/// - `falloff`: Known as `decay_rate` in the literature. A co-efficient dictating the strength of +/// the global incentivisation to get the `ideal_stake`. A higher number results in less typical +/// inflation at the cost of greater volatility for validators. +/// Expressed in millionth, must be between 0 and 1_000_000. +/// +/// - `max_piece_count`: The maximum number of pieces in the curve. A greater number uses more +/// resources but results in higher accuracy. +/// Must be between 2 and 1_000. +/// +/// - `test_precision`: The maximum error allowed in the generated test. +/// Expressed in millionth, must be between 0 and 1_000_000. +/// +/// # Example +/// +/// ``` +/// # fn main() {} +/// use sp_runtime::curve::PiecewiseLinear; +/// +/// pallet_staking_reward_curve::build! { +/// const I_NPOS: PiecewiseLinear<'static> = curve!( +/// min_inflation: 0_025_000, +/// max_inflation: 0_100_000, +/// ideal_stake: 0_500_000, +/// falloff: 0_050_000, +/// max_piece_count: 40, +/// test_precision: 0_005_000, +/// ); +/// } +/// ``` +#[proc_macro] +pub fn build(input: TokenStream) -> TokenStream { + let input = syn::parse_macro_input!(input as INposInput); + + let points = compute_points(&input); + + let declaration = generate_piecewise_linear(points); + let test_module = generate_test_module(&input); + + let imports = match crate_name("sp-runtime") { + Ok(sp_runtime) => { + let ident = syn::Ident::new(&sp_runtime, Span::call_site()); + quote!( extern crate #ident as _sp_runtime; ) + }, + Err(e) => syn::Error::new(Span::call_site(), &e).to_compile_error(), + }; + + let const_name = input.ident; + let const_type = input.typ; + + quote!( + const #const_name: #const_type = { + #imports + #declaration + }; + #test_module + ).into() +} + +const MILLION: u32 = 1_000_000; + +mod keyword { + syn::custom_keyword!(curve); + syn::custom_keyword!(min_inflation); + syn::custom_keyword!(max_inflation); + syn::custom_keyword!(ideal_stake); + syn::custom_keyword!(falloff); + syn::custom_keyword!(max_piece_count); + syn::custom_keyword!(test_precision); +} + +struct INposInput { + ident: syn::Ident, + typ: syn::Type, + min_inflation: u32, + ideal_stake: u32, + max_inflation: u32, + falloff: u32, + max_piece_count: u32, + test_precision: u32, +} + +struct Bounds { + min: u32, + min_strict: bool, + max: u32, + max_strict: bool, +} + +impl Bounds { + fn check(&self, value: u32) -> bool { + let wrong = (self.min_strict && value <= self.min) + || (!self.min_strict && value < self.min) + || (self.max_strict && value >= self.max) + || (!self.max_strict && value > self.max); + + !wrong + } +} + +impl core::fmt::Display for Bounds { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + write!( + f, + "{}{:07}; {:07}{}", + if self.min_strict { "]" } else { "[" }, + self.min, + self.max, + if self.max_strict { "[" } else { "]" }, + ) + } +} + +fn parse_field(input: ParseStream, bounds: Bounds) + -> syn::Result +{ + ::parse(&input)?; + ::parse(&input)?; + let value_lit = syn::LitInt::parse(&input)?; + let value: u32 = value_lit.base10_parse()?; + if !bounds.check(value) { + return Err(syn::Error::new(value_lit.span(), format!( + "Invalid {}: {}, must be in {}", Token::default().to_token_stream(), value, bounds, + ))); + } + + Ok(value) +} + +impl Parse for INposInput { + fn parse(input: ParseStream) -> syn::Result { + let args_input; + + ::parse(&input)?; + let ident = ::parse(&input)?; + ::parse(&input)?; + let typ = ::parse(&input)?; + ::parse(&input)?; + ::parse(&input)?; + ::parse(&input)?; + syn::parenthesized!(args_input in input); + ::parse(&input)?; + + if !input.is_empty() { + return Err(input.error("expected end of input stream, no token expected")); + } + + let min_inflation = parse_field::(&args_input, Bounds { + min: 0, + min_strict: true, + max: 1_000_000, + max_strict: false, + })?; + ::parse(&args_input)?; + let max_inflation = parse_field::(&args_input, Bounds { + min: min_inflation, + min_strict: true, + max: 1_000_000, + max_strict: false, + })?; + ::parse(&args_input)?; + let ideal_stake = parse_field::(&args_input, Bounds { + min: 0_100_000, + min_strict: false, + max: 0_900_000, + max_strict: false, + })?; + ::parse(&args_input)?; + let falloff = parse_field::(&args_input, Bounds { + min: 0_010_000, + min_strict: false, + max: 1_000_000, + max_strict: false, + })?; + ::parse(&args_input)?; + let max_piece_count = parse_field::(&args_input, Bounds { + min: 2, + min_strict: false, + max: 1_000, + max_strict: false, + })?; + ::parse(&args_input)?; + let test_precision = parse_field::(&args_input, Bounds { + min: 0, + min_strict: false, + max: 1_000_000, + max_strict: false, + })?; + >::parse(&args_input)?; + + if !args_input.is_empty() { + return Err(args_input.error("expected end of input stream, no token expected")); + } + + Ok(Self { + ident, + typ, + min_inflation, + ideal_stake, + max_inflation, + falloff, + max_piece_count, + test_precision, + }) + } +} + +struct INPoS { + i_0: u32, + i_ideal_times_x_ideal: u32, + i_ideal: u32, + x_ideal: u32, + d: u32, +} + +impl INPoS { + fn from_input(input: &INposInput) -> Self { + INPoS { + i_0: input.min_inflation, + i_ideal: (input.max_inflation as u64 * MILLION as u64 / input.ideal_stake as u64) + .try_into().unwrap(), + i_ideal_times_x_ideal: input.max_inflation, + x_ideal: input.ideal_stake, + d: input.falloff, + } + } + + fn compute_opposite_after_x_ideal(&self, y: u32) -> u32 { + if y == self.i_0 { + return u32::max_value(); + } + let log = log2(self.i_ideal_times_x_ideal - self.i_0, y - self.i_0); + + let term: u32 = ((self.d as u64 * log as u64) / 1_000_000).try_into().unwrap(); + + self.x_ideal + term + } +} + +fn compute_points(input: &INposInput) -> Vec<(u32, u32)> { + let inpos = INPoS::from_input(input); + + let mut points = vec![]; + points.push((0, inpos.i_0)); + points.push((inpos.x_ideal, inpos.i_ideal_times_x_ideal)); + + // For each point p: (next_p.0 - p.0) < segment_lenght && (next_p.1 - p.1) < segment_lenght. + // This ensures that the total number of segment doesn't overflow max_piece_count. + let max_length = (input.max_inflation - input.min_inflation + 1_000_000 - inpos.x_ideal) + / (input.max_piece_count - 1); + + let mut delta_y = max_length; + let mut y = input.max_inflation; + + // The algorithm divide the curve in segment with vertical len and horizontal len less + // than `max_length`. This is not very accurate in case of very consequent steep. + while delta_y != 0 { + let next_y = y - delta_y; + + if next_y <= input.min_inflation { + delta_y = delta_y.saturating_sub(1); + continue + } + + let next_x = inpos.compute_opposite_after_x_ideal(next_y); + + if (next_x - points.last().unwrap().0) > max_length { + delta_y = delta_y.saturating_sub(1); + continue + } + + if next_x >= 1_000_000 { + let prev = points.last().unwrap(); + // Compute the y corresponding to x=1_000_000 using the this point and the previous one. + + let delta_y: u32 = ( + (next_x - 1_000_000) as u64 + * (prev.1 - next_y) as u64 + / (next_x - prev.0) as u64 + ).try_into().unwrap(); + + let y = next_y + delta_y; + + points.push((1_000_000, y)); + return points; + } + points.push((next_x, next_y)); + y = next_y; + } + + points.push((1_000_000, inpos.i_0)); + + points +} + +fn generate_piecewise_linear(points: Vec<(u32, u32)>) -> TokenStream2 { + let mut points_tokens = quote!(); + + let max = points.iter() + .map(|&(_, x)| x) + .max() + .unwrap_or(0) + .checked_mul(1_000) + // clip at 1.0 for sanity only since it'll panic later if too high. + .unwrap_or(1_000_000_000); + + for (x, y) in points { + let error = || panic!(format!( + "Generated reward curve approximation doesn't fit into [0, 1] -> [0, 1] \ + because of point: + x = {:07} per million + y = {:07} per million", + x, y + )); + + let x_perbill = x.checked_mul(1_000).unwrap_or_else(error); + let y_perbill = y.checked_mul(1_000).unwrap_or_else(error); + + points_tokens.extend(quote!( + ( + _sp_runtime::Perbill::from_parts(#x_perbill), + _sp_runtime::Perbill::from_parts(#y_perbill), + ), + )); + } + + quote!( + _sp_runtime::curve::PiecewiseLinear::<'static> { + points: & [ #points_tokens ], + maximum: _sp_runtime::Perbill::from_parts(#max), + } + ) +} + +fn generate_test_module(input: &INposInput) -> TokenStream2 { + let inpos = INPoS::from_input(input); + + let ident = &input.ident; + let precision = input.test_precision; + let i_0 = inpos.i_0 as f64/ MILLION as f64; + let i_ideal_times_x_ideal = inpos.i_ideal_times_x_ideal as f64 / MILLION as f64; + let i_ideal = inpos.i_ideal as f64 / MILLION as f64; + let x_ideal = inpos.x_ideal as f64 / MILLION as f64; + let d = inpos.d as f64 / MILLION as f64; + let max_piece_count = input.max_piece_count; + + quote!( + #[cfg(test)] + mod __pallet_staking_reward_curve_test_module { + fn i_npos(x: f64) -> f64 { + if x <= #x_ideal { + #i_0 + x * (#i_ideal - #i_0 / #x_ideal) + } else { + #i_0 + (#i_ideal_times_x_ideal - #i_0) * 2_f64.powf((#x_ideal - x) / #d) + } + } + + const MILLION: u32 = 1_000_000; + + #[test] + fn reward_curve_precision() { + for &base in [MILLION, u32::max_value()].into_iter() { + let number_of_check = 100_000.min(base); + for check_index in 0..=number_of_check { + let i = (check_index as u64 * base as u64 / number_of_check as u64) as u32; + let x = i as f64 / base as f64; + let float_res = (i_npos(x) * base as f64).round() as u32; + let int_res = super::#ident.calculate_for_fraction_times_denominator(i, base); + let err = ( + (float_res.max(int_res) - float_res.min(int_res)) as u64 + * MILLION as u64 + / float_res as u64 + ) as u32; + if err > #precision { + panic!(format!("\n\ + Generated reward curve approximation differ from real one:\n\t\ + for i = {} and base = {}, f(i/base) * base = {},\n\t\ + but approximation = {},\n\t\ + err = {:07} millionth,\n\t\ + try increase the number of segment: {} or the test_error: {}.\n", + i, base, float_res, int_res, err, #max_piece_count, #precision + )); + } + } + } + } + + #[test] + fn reward_curve_piece_count() { + assert!( + super::#ident.points.len() as u32 - 1 <= #max_piece_count, + "Generated reward curve approximation is invalid: \ + has more points than specified, please fill an issue." + ); + } + } + ).into() +} diff --git a/frame/staking/reward-curve/src/log.rs b/frame/staking/reward-curve/src/log.rs new file mode 100644 index 000000000..1a25dbb98 --- /dev/null +++ b/frame/staking/reward-curve/src/log.rs @@ -0,0 +1,70 @@ +use std::convert::TryInto; + +/// Return Per-million value. +pub fn log2(p: u32, q: u32) -> u32 { + assert!(p >= q); + assert!(p <= u32::max_value()/2); + + // This restriction should not be mandatory. But function is only tested and used for this. + assert!(p <= 1_000_000); + assert!(q <= 1_000_000); + + if p == q { + return 0 + } + + let mut n = 0u32; + while !(p >= 2u32.pow(n)*q) || !(p < 2u32.pow(n+1)*q) { + n += 1; + } + assert!(p < 2u32.pow(n+1) * q); + + let y_num: u32 = (p - 2u32.pow(n) * q).try_into().unwrap(); + let y_den: u32 = (p + 2u32.pow(n) * q).try_into().unwrap(); + + let _2_div_ln_2 = 2_885_390u32; + + let taylor_term = |k: u32| -> u32 { + if k == 0 { + (_2_div_ln_2 as u128 * (y_num as u128).pow(1) / (y_den as u128).pow(1)) + .try_into().unwrap() + } else { + let mut res = _2_div_ln_2 as u128 * (y_num as u128).pow(3) / (y_den as u128).pow(3); + for _ in 1..k { + res = res * (y_num as u128).pow(2) / (y_den as u128).pow(2); + } + res /= 2 * k as u128 + 1; + + res.try_into().unwrap() + } + }; + + let mut res = n * 1_000_000u32; + let mut k = 0; + loop { + let term = taylor_term(k); + if term == 0 { + break + } + + res += term; + k += 1; + } + + res +} + +#[test] +fn test_log() { + let div = 1_000; + for p in 0..=div { + for q in 1..=p { + let p: u32 = (1_000_000 as u64 * p as u64 / div as u64).try_into().unwrap(); + let q: u32 = (1_000_000 as u64 * q as u64 / div as u64).try_into().unwrap(); + + let res = - (log2(p, q) as i64); + let expected = ((q as f64 / p as f64).log(2.0) * 1_000_000 as f64).round() as i64; + assert!((res - expected).abs() <= 6); + } + } +} diff --git a/frame/staking/reward-curve/tests/test.rs b/frame/staking/reward-curve/tests/test.rs new file mode 100644 index 000000000..399bf7b9a --- /dev/null +++ b/frame/staking/reward-curve/tests/test.rs @@ -0,0 +1,44 @@ +// Copyright 2019 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 . + +//! Test crate for pallet-staking-reward-curve. Allows to test for procedural macro. +//! See tests directory. + +mod test_small_falloff { + pallet_staking_reward_curve::build! { + const REWARD_CURVE: sp_runtime::curve::PiecewiseLinear<'static> = curve!( + min_inflation: 0_020_000, + max_inflation: 0_200_000, + ideal_stake: 0_600_000, + falloff: 0_010_000, + max_piece_count: 200, + test_precision: 0_005_000, + ); + } +} + +mod test_big_falloff { + pallet_staking_reward_curve::build! { + const REWARD_CURVE: sp_runtime::curve::PiecewiseLinear<'static> = curve!( + min_inflation: 0_100_000, + max_inflation: 0_400_000, + ideal_stake: 0_400_000, + falloff: 1_000_000, + max_piece_count: 40, + test_precision: 0_005_000, + ); + } +} diff --git a/frame/staking/src/inflation.rs b/frame/staking/src/inflation.rs new file mode 100644 index 000000000..38c61161c --- /dev/null +++ b/frame/staking/src/inflation.rs @@ -0,0 +1,7 @@ +// TODO +pub fn compute_total_payout() -> (N, N) +where + N: Clone + Default, +{ + (Default::default(), Default::default()) +} diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs new file mode 100644 index 000000000..6d654f1ae --- /dev/null +++ b/frame/staking/src/lib.rs @@ -0,0 +1,1810 @@ +// Copyright 2017-2019 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 . + +//! # Staking Module +//! +//! The Staking module is used to manage funds at stake by network maintainers. +//! +//! - [`staking::Trait`](./trait.Trait.html) +//! - [`Call`](./enum.Call.html) +//! - [`Module`](./struct.Module.html) +//! +//! ## Overview +//! +//! The Staking module is the means by which a set of network maintainers (known as _authorities_ +//! in some contexts and _validators_ in others) are chosen based upon those who voluntarily place +//! funds under deposit. Under deposit, those funds are rewarded under normal operation but are +//! held at pain of _slash_ (expropriation) should the staked maintainer be found not to be +//! discharging its duties properly. +//! +//! ### Terminology +//! +//! +//! - Staking: The process of locking up funds for some time, placing them at risk of slashing +//! (loss) in order to become a rewarded maintainer of the network. +//! - Validating: The process of running a node to actively maintain the network, either by +//! producing blocks or guaranteeing finality of the chain. +//! - Nominating: The process of placing staked funds behind one or more validators in order to +//! share in any reward, and punishment, they take. +//! - Stash account: The account holding an owner's funds used for staking. +//! - Controller account: The account that controls an owner's funds for staking. +//! - Era: A (whole) number of sessions, which is the period that the validator set (and each +//! validator's active nominator set) is recalculated and where rewards are paid out. +//! - Slash: The punishment of a staker by reducing its funds. +//! +//! ### Goals +//! +//! +//! The staking system in Substrate NPoS is designed to make the following possible: +//! +//! - Stake funds that are controlled by a cold wallet. +//! - Withdraw some, or deposit more, funds without interrupting the role of an entity. +//! - Switch between roles (nominator, validator, idle) with minimal overhead. +//! +//! ### Scenarios +//! +//! #### Staking +//! +//! Almost any interaction with the Staking module requires a process of _**bonding**_ (also known +//! as being a _staker_). To become *bonded*, a fund-holding account known as the _stash account_, +//! which holds some or all of the funds that become frozen in place as part of the staking process, +//! is paired with an active **controller** account, which issues instructions on how they shall be +//! used. +//! +//! An account pair can become bonded using the [`bond`](./enum.Call.html#variant.bond) call. +//! +//! Stash accounts can change their associated controller using the +//! [`set_controller`](./enum.Call.html#variant.set_controller) call. +//! +//! There are three possible roles that any staked account pair can be in: `Validator`, `Nominator` +//! and `Idle` (defined in [`StakerStatus`](./enum.StakerStatus.html)). There are three +//! corresponding instructions to change between roles, namely: +//! [`validate`](./enum.Call.html#variant.validate), [`nominate`](./enum.Call.html#variant.nominate), +//! and [`chill`](./enum.Call.html#variant.chill). +//! +//! #### Validating +//! +//! A **validator** takes the role of either validating blocks or ensuring their finality, +//! maintaining the veracity of the network. A validator should avoid both any sort of malicious +//! misbehavior and going offline. Bonded accounts that state interest in being a validator do NOT +//! get immediately chosen as a validator. Instead, they are declared as a _candidate_ and they +//! _might_ get elected at the _next era_ as a validator. The result of the election is determined +//! by nominators and their votes. +//! +//! An account can become a validator candidate via the +//! [`validate`](./enum.Call.html#variant.validate) call. +//! +//! #### Nomination +//! +//! A **nominator** does not take any _direct_ role in maintaining the network, instead, it votes on +//! a set of validators to be elected. Once interest in nomination is stated by an account, it +//! takes effect at the next election round. The funds in the nominator's stash account indicate the +//! _weight_ of its vote. Both the rewards and any punishment that a validator earns are shared +//! between the validator and its nominators. This rule incentivizes the nominators to NOT vote for +//! the misbehaving/offline validators as much as possible, simply because the nominators will also +//! lose funds if they vote poorly. +//! +//! An account can become a nominator via the [`nominate`](enum.Call.html#variant.nominate) call. +//! +//! #### Rewards and Slash +//! +//! 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_. +//! +//! 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). +//! +//! Slashing logic is further described in the documentation of the `slashing` module. +//! +//! Similar to slashing, rewards are also shared among a validator and its associated nominators. +//! Yet, the reward funds are not always transferred to the stash account and can be configured. +//! See [Reward Calculation](#reward-calculation) for more details. +//! +//! #### Chilling +//! +//! Finally, any of the roles above can choose to step back temporarily and just chill for a while. +//! This means that if they are a nominator, they will not be considered as voters anymore and if +//! they are validators, they will no longer be a candidate for the next election. +//! +//! An account can step back via the [`chill`](enum.Call.html#variant.chill) call. +//! +//! ## Interface +//! +//! ### Dispatchable Functions +//! +//! The dispatchable functions of the Staking module enable the steps needed for entities to accept +//! and change their role, alongside some helper functions to get/set the metadata of the module. +//! +//! ### Public Functions +//! +//! The Staking module contains many public storage items and (im)mutable functions. +//! +//! ## Usage +//! +//! ### Example: Rewarding a validator by id. +//! +//! ``` +//! use frame_support::{decl_module, dispatch}; +//! use frame_system::{self as system, ensure_signed}; +//! use pallet_staking::{self as staking}; +//! +//! pub trait Trait: staking::Trait {} +//! +//! decl_module! { +//! pub struct Module for enum Call where origin: T::Origin { +//! /// Reward a validator. +//! pub fn reward_myself(origin) -> dispatch::DispatchResult { +//! let reported = ensure_signed(origin)?; +//! >::reward_by_ids(vec![(reported, 10)]); +//! Ok(()) +//! } +//! } +//! } +//! # fn main() { } +//! ``` +//! +//! ## 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 +//! calculated using the era duration and the staking rate (the total amount of tokens staked by +//! nominators and validators, divided by the total token supply). It aims to incentivise toward a +//! defined staking rate. The full specification can be found +//! [here](https://research.web3.foundation/en/latest/polkadot/Token%20Economics.html#inflation-model). +//! +//! Total reward is split among validators and their nominators depending on the number of points +//! they received during the era. Points are added to a validator using +//! [`reward_by_ids`](./enum.Call.html#variant.reward_by_ids) or +//! [`reward_by_indices`](./enum.Call.html#variant.reward_by_indices). +//! +//! [`Module`](./struct.Module.html) implements +//! [`pallet_authorship::EventHandler`](../pallet_authorship/trait.EventHandler.html) to add reward points +//! to block producer and block producer of referenced uncles. +//! +//! The validator and its nominator split their reward as following: +//! +//! The validator can declare an amount, named +//! [`commission`](./struct.ValidatorPrefs.html#structfield.commission), that does not +//! get shared with the nominators at each reward payout through its +//! [`ValidatorPrefs`](./struct.ValidatorPrefs.html). This value gets deducted from the total reward +//! that is paid to the validator and its nominators. The remaining portion is split among the +//! validator and all of the nominators that nominated the validator, proportional to the value +//! staked behind this validator (_i.e._ dividing the +//! [`own`](./struct.Exposure.html#structfield.own) or +//! [`others`](./struct.Exposure.html#structfield.others) by +//! [`total`](./struct.Exposure.html#structfield.total) in [`Exposure`](./struct.Exposure.html)). +//! +//! All entities who receive a reward have the option to choose their reward destination +//! through the [`Payee`](./struct.Payee.html) storage item (see +//! [`set_payee`](enum.Call.html#variant.set_payee)), to be one of the following: +//! +//! - Controller account, (obviously) not increasing the staked value. +//! - Stash account, not increasing the staked value. +//! - Stash account, also increasing the staked value. +//! +//! ### Additional Fund Management Operations +//! +//! Any funds already placed into stash can be the target of the following operations: +//! +//! The controller account can free a portion (or all) of the funds using the +//! [`unbond`](enum.Call.html#variant.unbond) call. Note that the funds are not immediately +//! accessible. Instead, a duration denoted by [`BondingDuration`](./struct.BondingDuration.html) +//! (in number of eras) must pass until the funds can actually be removed. Once the +//! `BondingDuration` is over, the [`withdraw_unbonded`](./enum.Call.html#variant.withdraw_unbonded) +//! call can be used to actually withdraw the funds. +//! +//! Note that there is a limitation to the number of fund-chunks that can be scheduled to be +//! unlocked in the future via [`unbond`](enum.Call.html#variant.unbond). In case this maximum +//! (`MAX_UNLOCKING_CHUNKS`) is reached, the bonded account _must_ first wait until a successful +//! call to `withdraw_unbonded` to remove some of the chunks. +//! +//! ### Election Algorithm +//! +//! The current election algorithm is implemented based on Phragmén. +//! The reference implementation can be found +//! [here](https://github.com/w3f/consensus/tree/master/NPoS). +//! +//! The election algorithm, aside from electing the validators with the most stake value and votes, +//! tries to divide the nominator votes among candidates in an equal manner. To further assure this, +//! an optional post-processing can be applied that iteratively normalizes the nominator staked +//! values until the total difference among votes of a particular nominator are less than a +//! threshold. +//! +//! ## GenesisConfig +//! +//! The Staking module depends on the [`GenesisConfig`](./struct.GenesisConfig.html). +//! +//! ## Related Modules +//! +//! - [Balances](../pallet_balances/index.html): Used to manage values at stake. +//! - [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"] +#![cfg_attr(not(feature = "std"), no_std)] + +mod migration; +#[cfg(test)] +mod mock; +mod slashing; +#[cfg(test)] +mod tests; + +pub mod inflation; + +use codec::{Decode, Encode, HasCompact}; +use frame_support::{ + decl_error, decl_event, decl_module, decl_storage, ensure, + traits::{Currency, Get, Imbalance, OnFreeBalanceZero, OnUnbalanced, Time}, + weights::SimpleDispatchInfo, +}; +use frame_system::{self as system, ensure_root, ensure_signed}; +use pallet_session::{historical::OnSessionEnding, SelectInitialValidators}; +use sp_runtime::{ + traits::{Bounded, CheckedSub, Convert, EnsureOrigin, One, Saturating, SimpleArithmetic, StaticLookup, Zero}, + Perbill, RuntimeDebug, +}; +#[cfg(feature = "std")] +use sp_runtime::{Deserialize, Serialize}; +use sp_staking::{ + offence::{Offence, OffenceDetails, OnOffenceHandler, ReportOffence}, + SessionIndex, +}; +use sp_std::{prelude::*, result}; + +use sp_phragmen::{ExtendedBalance, PhragmenStakedAssignment}; + +use darwinia_support::{LockIdentifier, LockableCurrency}; + +const DEFAULT_MINIMUM_VALIDATOR_COUNT: u32 = 4; +const MAX_NOMINATIONS: usize = 16; +const MAX_UNLOCKING_CHUNKS: usize = 32; +const STAKING_ID: LockIdentifier = *b"staking "; + +/// 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 Points = u32; + +/// 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. + 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 + } + } +} + +/// Indicates the initial status of the staker. +#[derive(RuntimeDebug)] +#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +pub enum StakerStatus { + /// Chilling. + Idle, + /// Declared desire in validating or already participating in it. + Validator, + /// Nominating for a group of other stakers. + Nominator(Vec), +} + +/// A destination account for payment. +#[derive(PartialEq, Eq, Copy, Clone, Encode, Decode, RuntimeDebug)] +pub enum RewardDestination { + /// Pay into the stash account, increasing the amount at stake accordingly. + Staked, + /// Pay into the stash account, not increasing the amount at stake. + Stash, + /// Pay into the controller account. + Controller, +} + +impl Default for RewardDestination { + fn default() -> Self { + RewardDestination::Staked + } +} + +/// Preference of what happens regarding validation. +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +pub struct ValidatorPrefs { + /// Reward that validator takes up-front; only the rest is split between themselves and + /// nominators. + #[codec(compact)] + pub commission: Perbill, +} + +impl Default for ValidatorPrefs { + fn default() -> Self { + ValidatorPrefs { + commission: Default::default(), + } + } +} + +/// Just a Balance/BlockNumber tuple to encode when a chunk of funds will be unlocked. +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +pub struct UnlockChunk { + /// Amount of funds to be unlocked. + #[codec(compact)] + value: Balance, + /// Era number at which point it'll be unlocked. + #[codec(compact)] + era: EraIndex, +} + +/// The ledger of a (bonded) stash. +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +pub struct StakingLedger { + /// The stash account whose balance is actually locked and at stake. + pub stash: AccountId, + /// The total amount of the stash's balance that we are currently accounting for. + /// It's just `active` plus all the `unlocking` balances. + #[codec(compact)] + pub total: Balance, + /// The total amount of the stash's balance that will be at stake in any forthcoming + /// rounds. + #[codec(compact)] + pub active: Balance, + /// 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>, +} + +impl StakingLedger { + /// Remove entries from `unlocking` that are sufficiently old and reduce the + /// total by the sum of their balances. + fn consolidate_unlocked(self, current_era: EraIndex) -> Self { + let mut total = self.total; + let unlocking = self + .unlocking + .into_iter() + .filter(|chunk| { + if chunk.era > current_era { + true + } else { + total = total.saturating_sub(chunk.value); + false + } + }) + .collect(); + Self { + total, + active: self.active, + stash: self.stash, + unlocking, + } + } +} + +impl StakingLedger +where + Balance: SimpleArithmetic + Saturating + Copy, +{ + /// Slash the validator for a given amount of balance. This can grow the value + /// of the slash in the case that the validator has less than `minimum_balance` + /// active funds. Returns the amount of funds actually slashed. + /// + /// Slashes from `active` funds first, and then `unlocking`, starting with the + /// chunks that are closest to unlocking. + fn slash(&mut self, mut value: Balance, minimum_balance: Balance) -> Balance { + let pre_total = self.total; + let total = &mut self.total; + let active = &mut self.active; + + let slash_out_of = |total_remaining: &mut Balance, target: &mut Balance, value: &mut Balance| { + let mut slash_from_target = (*value).min(*target); + + if !slash_from_target.is_zero() { + *target -= slash_from_target; + + // don't leave a dust balance in the staking system. + if *target <= minimum_balance { + slash_from_target += *target; + *value += sp_std::mem::replace(target, Zero::zero()); + } + + *total_remaining = total_remaining.saturating_sub(slash_from_target); + *value -= slash_from_target; + } + }; + + slash_out_of(total, active, &mut value); + + let i = self + .unlocking + .iter_mut() + .map(|chunk| { + slash_out_of(total, &mut chunk.value, &mut value); + chunk.value + }) + .take_while(|value| value.is_zero()) // take all fully-consumed chunks out. + .count(); + + // kill all drained chunks. + let _ = self.unlocking.drain(..i); + + pre_total.saturating_sub(*total) + } +} + +/// A record of the nominations made by a specific account. +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +pub struct Nominations { + /// The targets of nomination. + pub targets: Vec, + /// The era the nominations were submitted. + pub submitted_in: EraIndex, + /// Whether the nominations have been suppressed. + pub suppressed: bool, +} + +/// The amount of exposure (to slashing) than an individual nominator has. +#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, RuntimeDebug)] +pub struct IndividualExposure { + /// The stash account of the nominator in question. + who: AccountId, + /// Amount of funds exposed. + #[codec(compact)] + value: Balance, +} + +/// A snapshot of the stake backing a single validator in the system. +#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, Default, RuntimeDebug)] +pub struct Exposure { + /// The total balance backing this validator. + #[codec(compact)] + pub total: Balance, + /// The validator's own stash that is exposed. + #[codec(compact)] + pub own: Balance, + /// The portions of nominators stashes that are exposed. + pub others: Vec>, +} + +/// A pending slash record. The value of the slash has been computed but not applied yet, +/// rather deferred for several eras. +#[derive(Encode, Decode, Default, RuntimeDebug)] +pub struct UnappliedSlash { + /// The stash ID of the offending validator. + validator: AccountId, + /// The validator's own slash. + own: Balance, + /// All other slashed stakers and amounts. + others: Vec<(AccountId, Balance)>, + /// Reporters of the offence; bounty payout recipients. + reporters: Vec, + /// The amount of payout. + payout: Balance, +} + +pub type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; +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` +pub trait SessionInterface: frame_system::Trait { + /// Disable a given validator by stash ID. + /// + /// Returns `true` if new era should be forced at the end of this session. + /// This allows preventing a situation where there is too many validators + /// disabled and block production stalls. + fn disable_validator(validator: &AccountId) -> Result; + /// Get the validators from session. + fn validators() -> Vec; + /// Prune historical session tries up to but not including the given index. + fn prune_historical_up_to(up_to: SessionIndex); +} + +impl SessionInterface<::AccountId> for T +where + T: pallet_session::Trait::AccountId>, + T: pallet_session::historical::Trait< + FullIdentification = Exposure<::AccountId, BalanceOf>, + FullIdentificationOf = ExposureOf, + >, + T::SessionHandler: pallet_session::SessionHandler<::AccountId>, + T::OnSessionEnding: pallet_session::OnSessionEnding<::AccountId>, + T::SelectInitialValidators: pallet_session::SelectInitialValidators<::AccountId>, + T::ValidatorIdOf: Convert<::AccountId, Option<::AccountId>>, +{ + fn disable_validator(validator: &::AccountId) -> Result { + >::disable(validator) + } + + fn validators() -> Vec<::AccountId> { + >::validators() + } + + fn prune_historical_up_to(up_to: SessionIndex) { + >::prune_up_to(up_to); + } +} + +pub trait Trait: frame_system::Trait + pallet_timestamp::Trait { + /// The staking balance. + type Currency: LockableCurrency; + + /// Time used for computing era duration. + type Time: Time; + + /// Convert a balance into a number used for election calculation. + /// This must fit into a `u64` but is allowed to be sensibly lossy. + /// TODO: #1377 + /// The backward convert should be removed as the new Phragmen API returns ratio. + /// The post-processing needs it but will be moved to off-chain. TODO: #2908 + type CurrencyToVote: Convert, u64> + Convert>; + + /// Tokens have been minted and are unused for validator-reward. + type RewardRemainder: OnUnbalanced>; + + /// The overarching event type. + type Event: From> + Into<::Event>; + + /// Handler for the unbalanced reduction when slashing a staker. + type Slash: OnUnbalanced>; + + /// Handler for the unbalanced increment when rewarding a staker. + type Reward: OnUnbalanced>; + + /// Number of sessions per era. + type SessionsPerEra: Get; + + /// Number of eras that staked funds must remain bonded for. + type BondingDuration: Get; + + /// Number of eras that slashes are deferred by, after computation. This + /// should be less than the bonding duration. Set to 0 if slashes should be + /// applied immediately, without opportunity for intervention. + type SlashDeferDuration: Get; + + /// The origin which can cancel a deferred slash. Root can always do this. + type SlashCancelOrigin: EnsureOrigin; + + /// Interface for interacting with a session module. + type SessionInterface: self::SessionInterface; +} + +/// Mode of era-forcing. +#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, RuntimeDebug)] +#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +pub enum Forcing { + /// Not forcing anything - just let whatever happen. + NotForcing, + /// Force a new era, then reset to `NotForcing` as soon as it is done. + ForceNew, + /// Avoid a new era indefinitely. + ForceNone, + /// Force a new era at the end of all sessions indefinitely. + ForceAlways, +} + +impl Default for Forcing { + fn default() -> Self { + Forcing::NotForcing + } +} + +decl_storage! { + trait Store for Module as Staking { + + /// 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; + + /// Any validators that may never be slashed or forcibly kicked. It's a Vec since they're + /// easy to initialize and the performance hit is minimal (we expect no more than four + /// invulnerables) and restricted to testnets. + pub Invulnerables get(fn invulnerables) config(): Vec; + + /// Map from all locked "stash" accounts to the controller account. + pub Bonded get(fn bonded): map T::AccountId => Option; + /// Map from all (unlocked) "controller" accounts to the info regarding the staking. + pub Ledger get(fn ledger): + map T::AccountId => Option>>; + + /// Where the reward payment should be made. Keyed by stash. + pub Payee get(fn payee): map T::AccountId => RewardDestination; + + /// The map from (wannabe) validator stash key to the preferences of that validator. + pub Validators get(fn validators): linked_map 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): linked_map 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. + /// + /// This is keyed by the stash account. + pub Stakers get(fn stakers): map T::AccountId => Exposure>; + + /// The currently elected validator set keyed by stash account ID. + pub CurrentElected get(fn current_elected): Vec; + + /// The current era index. + pub CurrentEra get(fn current_era) config(): EraIndex; + + /// The start of the current era. + pub CurrentEraStart get(fn current_era_start): MomentOf; + + /// The session index at which the current era started. + pub CurrentEraStartSessionIndex get(fn current_era_start_session_index): SessionIndex; + + /// Rewards for the current era. Using indices of current elected set. + CurrentEraPointsEarned get(fn current_era_reward): EraPoints; + + /// The amount of balance actively at stake for each validator slot, currently. + /// + /// 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; + + /// True if the next session change will be a new era regardless of index. + pub ForceEra get(fn force_era) config(): Forcing; + + /// The percentage of the slash that is distributed to reporters. + /// + /// The rest of the slashed value is handled by the `Slash`. + pub SlashRewardFraction get(fn slash_reward_fraction) config(): Perbill; + + /// The amount of currency given to reporters of a slash event which was + /// canceled by extraordinary circumstances (e.g. governance). + pub CanceledSlashPayout get(fn canceled_payout) config(): BalanceOf; + + /// All unapplied slashes that are queued for later. + pub UnappliedSlashes: map EraIndex => Vec>>; + + /// A mapping from still-bonded eras to the first session index of that era. + BondedEras: Vec<(EraIndex, SessionIndex)>; + + /// All slashing events on validators, mapped by era to the highest slash proportion + /// and slash value of the era. + ValidatorSlashInEra: + double_map EraIndex, twox_128(T::AccountId) => Option<(Perbill, BalanceOf)>; + + /// All slashing events on nominators, mapped by era to the highest slash value of the era. + NominatorSlashInEra: + double_map EraIndex, twox_128(T::AccountId) => Option>; + + /// Slashing spans for stash accounts. + SlashingSpans: map T::AccountId => Option; + + /// Records information about the maximum slash of a stash within a slashing span, + /// as well as how much reward has been paid out. + SpanSlash: + map (T::AccountId, slashing::SpanIndex) => slashing::SpanRecord>; + + /// The earliest era for which we have a pending, unapplied slash. + EarliestUnappliedSlash: Option; + + /// The version of storage for upgrade. + StorageVersion: u32; + } + add_extra_genesis { + config(stakers): + Vec<(T::AccountId, T::AccountId, BalanceOf, StakerStatus)>; + build(|config: &GenesisConfig| { + for &(ref stash, ref controller, balance, ref status) in &config.stakers { + assert!( + T::Currency::free_balance(&stash) >= balance, + "Stash does not have enough balance to bond." + ); + let _ = >::bond( + T::Origin::from(Some(stash.clone()).into()), + T::Lookup::unlookup(controller.clone()), + balance, + RewardDestination::Staked, + ); + let _ = match status { + StakerStatus::Validator => { + >::validate( + T::Origin::from(Some(controller.clone()).into()), + Default::default(), + ) + }, + StakerStatus::Nominator(votes) => { + >::nominate( + T::Origin::from(Some(controller.clone()).into()), + votes.iter().map(|l| T::Lookup::unlookup(l.clone())).collect(), + ) + }, _ => Ok(()) + }; + } + + StorageVersion::put(migration::CURRENT_VERSION); + }); + } +} + +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), + /// 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 + /// not be processed. + OldSlashingReportDiscarded(SessionIndex), + } +); + +decl_error! { + /// Error for the staking module. + pub enum Error for Module { + /// Not a controller account. + NotController, + /// Not a stash account. + NotStash, + /// Stash is already bonded. + AlreadyBonded, + /// Controller is already paired. + AlreadyPaired, + /// Targets cannot be empty. + EmptyTargets, + /// Duplicate index. + DuplicateIndex, + /// Slash record index out of bounds. + InvalidSlashIndex, + /// Can not bond with value less than minimum balance. + InsufficientValue, + /// Can not schedule more unlock chunks. + NoMoreChunks, + } +} + +decl_module! { + pub struct Module for enum Call where origin: T::Origin { + /// Number of sessions per era. + const SessionsPerEra: SessionIndex = T::SessionsPerEra::get(); + + /// Number of eras that staked funds must remain bonded for. + const BondingDuration: EraIndex = T::BondingDuration::get(); + + type Error = Error; + + fn deposit_event() = default; + + fn on_initialize() { + Self::ensure_storage_upgraded(); + } + + fn on_finalize() { + // Set the start of the first era. + if !>::exists() { + >::put(T::Time::now()); + } + } + + /// Take the origin account as a stash and lock up `value` of its balance. `controller` will + /// be the account that controls it. + /// + /// `value` must be more than the `minimum_balance` specified by `T::Currency`. + /// + /// The dispatch origin for this call must be _Signed_ by the stash account. + /// + /// # + /// - Independent of the arguments. Moderate complexity. + /// - O(1). + /// - Three extra DB entries. + /// + /// NOTE: Two of the storage writes (`Self::bonded`, `Self::payee`) are _never_ cleaned unless + /// the `origin` falls below _existential deposit_ and gets removed as dust. + /// # + #[weight = SimpleDispatchInfo::FixedNormal(500_000)] + fn bond(origin, + controller: ::Source, + #[compact] value: BalanceOf, + payee: RewardDestination + ) { + let stash = ensure_signed(origin)?; + + if >::exists(&stash) { + Err(Error::::AlreadyBonded)? + } + + let controller = T::Lookup::lookup(controller)?; + + if >::exists(&controller) { + Err(Error::::AlreadyPaired)? + } + + // reject a bond which is considered to be _dust_. + if value < T::Currency::minimum_balance() { + Err(Error::::InsufficientValue)? + } + + // You're auto-bonded forever, here. We might improve this by only bonding when + // you actually validate/nominate and remove once you unbond __everything__. + >::insert(&stash, &controller); + >::insert(&stash, payee); + + let stash_balance = T::Currency::free_balance(&stash); + let value = value.min(stash_balance); + let item = StakingLedger { stash, total: value, active: value, unlocking: vec![] }; + Self::update_ledger(&controller, &item); + } + + /// Add some extra amount that have appeared in the stash `free_balance` into the balance up + /// for staking. + /// + /// Use this if there are additional funds in your stash account that you wish to bond. + /// Unlike [`bond`] or [`unbond`] this function does not impose any limitation on the amount + /// that can be added. + /// + /// The dispatch origin for this call must be _Signed_ by the stash, not the controller. + /// + /// # + /// - Independent of the arguments. Insignificant complexity. + /// - O(1). + /// - One DB entry. + /// # + #[weight = SimpleDispatchInfo::FixedNormal(500_000)] + fn bond_extra(origin, #[compact] max_additional: BalanceOf) { + let stash = ensure_signed(origin)?; + + let controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; + let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + + let stash_balance = T::Currency::free_balance(&stash); + + if let Some(extra) = stash_balance.checked_sub(&ledger.total) { + let extra = extra.min(max_additional); + ledger.total += extra; + ledger.active += extra; + Self::update_ledger(&controller, &ledger); + } + } + + /// Schedule a portion of the stash to be unlocked ready for transfer out after the bond + /// period ends. If this leaves an amount actively bonded less than + /// T::Currency::minimum_balance(), then it is increased to the full amount. + /// + /// Once the unlock period is done, you can call `withdraw_unbonded` to actually move + /// the funds out of management ready for transfer. + /// + /// No more than a limited number of unlocking chunks (see `MAX_UNLOCKING_CHUNKS`) + /// can co-exists at the same time. In that case, [`Call::withdraw_unbonded`] need + /// to be called first to remove some of the chunks (if possible). + /// + /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. + /// + /// See also [`Call::withdraw_unbonded`]. + /// + /// # + /// - Independent of the arguments. Limited but potentially exploitable complexity. + /// - 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`. + /// - One DB entry. + /// + #[weight = SimpleDispatchInfo::FixedNormal(400_000)] + fn unbond(origin, #[compact] value: BalanceOf) { + let controller = ensure_signed(origin)?; + let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + ensure!( + ledger.unlocking.len() < MAX_UNLOCKING_CHUNKS, + Error::::NoMoreChunks, + ); + + let mut value = value.min(ledger.active); + + if !value.is_zero() { + ledger.active -= value; + + // Avoid there being a dust balance left in the staking system. + if ledger.active < T::Currency::minimum_balance() { + value += ledger.active; + ledger.active = Zero::zero(); + } + + let era = Self::current_era() + T::BondingDuration::get(); + ledger.unlocking.push(UnlockChunk { value, era }); + Self::update_ledger(&controller, &ledger); + } + } + + /// Remove any unlocked chunks from the `unlocking` queue from our management. + /// + /// This essentially frees up that balance to be used by the stash account to do + /// whatever it wants. + /// + /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. + /// + /// See also [`Call::unbond`]. + /// + /// # + /// - Could be dependent on the `origin` argument and how much `unlocking` chunks exist. + /// It implies `consolidate_unlocked` which loops over `Ledger.unlocking`, which is + /// indirectly user-controlled. See [`unbond`] for more detail. + /// - Contains a limited number of reads, yet the size of which could be large based on `ledger`. + /// - Writes are limited to the `origin` account key. + /// # + #[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()); + + if ledger.unlocking.is_empty() && ledger.active.is_zero() { + // This account must have called `unbond()` with some value that caused the active + // portion to fall below existential deposit + will have no more unlocking chunks + // left. We can now safely remove this. + let stash = ledger.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); + } + } + + /// Declare the desire to validate for the origin controller. + /// + /// Effects will be felt at the beginning of the next era. + /// + /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. + /// + /// # + /// - Independent of the arguments. Insignificant complexity. + /// - Contains a limited number of reads. + /// - Writes are limited to the `origin` account key. + /// # + #[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; + >::remove(stash); + >::insert(stash, prefs); + } + + /// Declare the desire to nominate `targets` for the origin controller. + /// + /// Effects will be felt at the beginning of the next era. + /// + /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. + /// + /// # + /// - The transaction's complexity is proportional to the size of `targets`, + /// which is capped at `MAX_NOMINATIONS`. + /// - Both the reads and writes follow a similar pattern. + /// # + #[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; + ensure!(!targets.is_empty(), Error::::EmptyTargets); + let targets = targets.into_iter() + .take(MAX_NOMINATIONS) + .map(|t| T::Lookup::lookup(t)) + .collect::, _>>()?; + + let nominations = Nominations { + targets, + submitted_in: Self::current_era(), + suppressed: false, + }; + + >::remove(stash); + >::insert(stash, &nominations); + } + + /// Declare no desire to either validate or nominate. + /// + /// Effects will be felt at the beginning of the next era. + /// + /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. + /// + /// # + /// - Independent of the arguments. Insignificant complexity. + /// - Contains one read. + /// - Writes are limited to the `origin` account key. + /// # + #[weight = SimpleDispatchInfo::FixedNormal(500_000)] + fn chill(origin) { + let controller = ensure_signed(origin)?; + let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + Self::chill_stash(&ledger.stash); + } + + /// (Re-)set the payment target for a controller. + /// + /// Effects will be felt at the beginning of the next era. + /// + /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. + /// + /// # + /// - Independent of the arguments. Insignificant complexity. + /// - Contains a limited number of reads. + /// - Writes are limited to the `origin` account key. + /// # + #[weight = SimpleDispatchInfo::FixedNormal(500_000)] + fn set_payee(origin, payee: RewardDestination) { + let controller = ensure_signed(origin)?; + let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + let stash = &ledger.stash; + >::insert(stash, payee); + } + + /// (Re-)set the controller of a stash. + /// + /// Effects will be felt at the beginning of the next era. + /// + /// The dispatch origin for this call must be _Signed_ by the stash, not the controller. + /// + /// # + /// - Independent of the arguments. Insignificant complexity. + /// - Contains a limited number of reads. + /// - Writes are limited to the `origin` account key. + /// # + #[weight = SimpleDispatchInfo::FixedNormal(750_000)] + fn set_controller(origin, controller: ::Source) { + let stash = ensure_signed(origin)?; + let old_controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; + let controller = T::Lookup::lookup(controller)?; + if >::exists(&controller) { + Err(Error::::AlreadyPaired)? + } + if controller != old_controller { + >::insert(&stash, &controller); + if let Some(l) = >::take(&old_controller) { + >::insert(&controller, l); + } + } + } + + /// The ideal number of validators. + #[weight = SimpleDispatchInfo::FreeOperational] + fn set_validator_count(origin, #[compact] new: u32) { + ensure_root(origin)?; + ValidatorCount::put(new); + } + + // ----- Root calls. + + /// Force there to be no new eras indefinitely. + /// + /// # + /// - No arguments. + /// # + #[weight = SimpleDispatchInfo::FreeOperational] + fn force_no_eras(origin) { + ensure_root(origin)?; + ForceEra::put(Forcing::ForceNone); + } + + /// Force there to be a new era at the end of the next session. After this, it will be + /// reset to normal (non-forced) behaviour. + /// + /// # + /// - No arguments. + /// # + #[weight = SimpleDispatchInfo::FreeOperational] + fn force_new_era(origin) { + ensure_root(origin)?; + ForceEra::put(Forcing::ForceNew); + } + + /// Set the validators who cannot be slashed (if any). + #[weight = SimpleDispatchInfo::FreeOperational] + fn set_invulnerables(origin, validators: Vec) { + ensure_root(origin)?; + >::put(validators); + } + + /// Force a current staker to become completely unstaked, immediately. + #[weight = SimpleDispatchInfo::FreeOperational] + fn force_unstake(origin, stash: T::AccountId) { + ensure_root(origin)?; + + // 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. + /// + /// # + /// - One storage write + /// # + #[weight = SimpleDispatchInfo::FreeOperational] + fn force_new_era_always(origin) { + ensure_root(origin)?; + ForceEra::put(Forcing::ForceAlways); + } + + /// Cancel enactment of a deferred slash. Can be called by either the root origin or + /// the `T::SlashCancelOrigin`. + /// passing the era and indices of the slashes for that era to kill. + /// + /// # + /// - One storage write. + /// # + #[weight = SimpleDispatchInfo::FreeOperational] + fn cancel_deferred_slash(origin, era: EraIndex, slash_indices: Vec) { + T::SlashCancelOrigin::try_origin(origin) + .map(|_| ()) + .or_else(ensure_root)?; + + let mut slash_indices = slash_indices; + slash_indices.sort_unstable(); + let mut unapplied = ::UnappliedSlashes::get(&era); + + 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); + + unapplied.remove(index); + } + + ::UnappliedSlashes::insert(&era, &unapplied); + } + } +} + +impl Module { + // PUBLIC IMMUTABLES + + /// The total balance that can be slashed from a stash account as of right now. + pub fn slashable_balance_of(stash: &T::AccountId) -> BalanceOf { + Self::bonded(stash) + .and_then(Self::ledger) + .map(|l| l.active) + .unwrap_or_default() + } + + // MUTABLES (DANGEROUS) + + /// 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(controller: &T::AccountId, ledger: &StakingLedger>) { + // TODO + // T::Currency::set_lock( + // STAKING_ID, + // &ledger.stash, + // ledger.total, + // T::BlockNumber::max_value(), + // WithdrawReasons::all(), + // ); + >::insert(controller, ledger); + } + + /// Chill a stash account. + fn chill_stash(stash: &T::AccountId) { + >::remove(stash); + >::remove(stash); + } + + /// Ensures storage is upgraded to most recent necessary state. + fn ensure_storage_upgraded() { + migration::perform_migrations::(); + } + + /// 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> { + let dest = Self::payee(stash); + match dest { + RewardDestination::Controller => { + Self::bonded(stash).and_then(|controller| T::Currency::deposit_into_existing(&controller, amount).ok()) + } + RewardDestination::Stash => T::Currency::deposit_into_existing(stash, amount).ok(), + RewardDestination::Staked => Self::bonded(stash) + .and_then(|c| Self::ledger(&c).map(|l| (c, l))) + .and_then(|(controller, mut l)| { + l.active += amount; + l.total += amount; + let r = T::Currency::deposit_into_existing(stash, amount).ok(); + Self::update_ledger(&controller, &l); + r + }), + } + } + + /// 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)); + } + + 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, along + /// with the exposure of the prior validator set. + fn new_session( + session_index: SessionIndex, + ) -> Option<( + Vec, + Vec<(T::AccountId, Exposure>)>, + )> { + 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, + } + let validators = T::SessionInterface::validators(); + let prior = validators + .into_iter() + .map(|v| { + let e = Self::stakers(&v); + (v, e) + }) + .collect(); + + Self::new_era(session_index).map(move |new| (new, prior)) + } + + /// 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; + + // TODO + let (total_payout, max_payout) = inflation::compute_total_payout(); + + let mut total_imbalance = >::zero(); + + 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)); + } + } + + // 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; + }); + let bonding_duration = T::BondingDuration::get(); + + BondedEras::mutate(|bonded| { + bonded.push((current_era, start_session_index)); + + if current_era > bonding_duration { + let first_kept = current_era - bonding_duration; + + // prune out everything that's from before the first-kept index. + let n_to_prune = bonded.iter().take_while(|&&(era_idx, _)| era_idx < first_kept).count(); + + // kill slashing metadata. + for (pruned_era, _) in bonded.drain(..n_to_prune) { + slashing::clear_era_metadata::(pruned_era); + } + + if let Some(&(_, first_session)) = bonded.first() { + T::SessionInterface::prune_historical_up_to(first_session); + } + } + }); + + // Reassign all Stakers. + let (_slot_stake, maybe_new_validators) = Self::select_validators(); + Self::apply_unapplied_slashes(current_era); + + maybe_new_validators + } + + /// Apply previously-unapplied slashes on the beginning of a new era, after a delay. + fn apply_unapplied_slashes(current_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); + for era in (*earliest)..keep_from { + let era_slashes = ::UnappliedSlashes::take(&era); + for slash in era_slashes { + slashing::apply_slash::(slash); + } + } + + *earliest = (*earliest).max(keep_from) + } + }) + } + + /// Select a new validator set from the assembled stakers and their role preferences. + /// + /// Returns the new `SlotStake` value and a set of newly selected _stash_ IDs. + /// + /// Assumes storage is coherent with the declaration. + fn select_validators() -> (BalanceOf, 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()]); + all_nominators.push(self_vote); + who + }) + .collect::>(); + + let nominator_votes = >::enumerate().map(|(nominator, nominations)| { + let Nominations { + submitted_in, + mut targets, + suppressed: _, + } = nominations; + + // Filter out nomination targets which were nominated before the most recent + // slashing span. + targets.retain(|stash| { + ::SlashingSpans::get(&stash).map_or(true, |spans| submitted_in >= spans.last_start()) + }); + + (nominator, targets) + }); + all_nominators.extend(nominator_votes); + + let maybe_phragmen_result = sp_phragmen::elect::<_, _, _, T::CurrencyToVote>( + Self::validator_count() as usize, + Self::minimum_validator_count().max(1) as usize, + all_validators, + all_nominators, + Self::slashable_balance_of, + ); + + if let Some(phragmen_result) = maybe_phragmen_result { + let elected_stashes = phragmen_result + .winners + .iter() + .map(|(s, _)| s.clone()) + .collect::>(); + let assignments = phragmen_result.assignments; + + let to_votes = + |b: BalanceOf| , u64>>::convert(b) as ExtendedBalance; + let to_balance = + |e: ExtendedBalance| >>::convert(e); + + let mut supports = sp_phragmen::build_support_map::<_, _, _, T::CurrencyToVote>( + &elected_stashes, + &assignments, + Self::slashable_balance_of, + ); + + if cfg!(feature = "equalize") { + let mut staked_assignments: Vec<(T::AccountId, Vec>)> = + Vec::with_capacity(assignments.len()); + for (n, assignment) in assignments.iter() { + let mut staked_assignment: Vec> = + Vec::with_capacity(assignment.len()); + + // If this is a self vote, then we don't need to equalise it at all. While the + // staking system does not allow nomination and validation at the same time, + // this must always be 100% support. + if assignment.len() == 1 && assignment[0].0 == *n { + continue; + } + for (c, per_thing) in assignment.iter() { + let nominator_stake = to_votes(Self::slashable_balance_of(n)); + let other_stake = *per_thing * nominator_stake; + staked_assignment.push((c.clone(), other_stake)); + } + staked_assignments.push((n.clone(), staked_assignment)); + } + + let tolerance = 0_u128; + let iterations = 2_usize; + sp_phragmen::equalize::<_, _, T::CurrencyToVote, _>( + staked_assignments, + &mut supports, + tolerance, + iterations, + 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(); + for (c, s) in supports.into_iter() { + // build `struct exposure` from `support` + let exposure = Exposure { + own: to_balance(s.own), + // 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: to_balance(s.total), + others: s + .others + .into_iter() + .map(|(who, value)| IndividualExposure { + who, + value: to_balance(value), + }) + .collect::>>(), + }; + if exposure.total < slot_stake { + slot_stake = exposure.total; + } + >::insert(&c, exposure.clone()); + } + + // Update slot stake. + >::put(&slot_stake); + + // Set the new validator set in sessions. + >::put(&elected_stashes); + + // 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)) + } else { + // There were not enough candidates for even our minimal level of functionality. + // This is bad. + // We should probably disable all functionality except for block production + // and let the chain keep producing blocks until we can decide on a sufficiently + // substantial set. + // TODO: #2494 + (Self::slot_stake(), None) + } + } + + /// Remove all associated data of a stash account from the staking system. + /// + /// Assumes storage is upgraded before calling. + /// + /// This is called : + /// - Immediately when an account's balance falls below existential deposit. + /// - 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); + } + >::remove(stash); + >::remove(stash); + >::remove(stash); + + slashing::clear_stash_metadata::(stash); + } + + /// Add reward points to validators using their stash account ID. + /// + /// Validators are keyed by stash account ID and must be in the current elected set. + /// + /// For each element in the iterator the given number of points in u32 is added to the + /// validator, thus duplicates are handled. + /// + /// At the end of the era each the total payout will be distributed among validator + /// relatively to their points. + /// + /// 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); + } + } + }); + } + + /// Add reward points to validators using their validator index. + /// + /// 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) { + // TODO: This can be optimised once #3302 is implemented. + let current_elected_len = >::current_elected().len() as u32; + + 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); + } + } + }); + } + + /// 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), + } + } +} + +impl pallet_session::OnSessionEnding for Module { + fn on_session_ending(_ending: SessionIndex, start_session: SessionIndex) -> Option> { + Self::ensure_storage_upgraded(); + Self::new_session(start_session - 1).map(|(new, _old)| new) + } +} + +impl OnSessionEnding>> for Module { + fn on_session_ending( + _ending: SessionIndex, + start_session: SessionIndex, + ) -> Option<( + Vec, + Vec<(T::AccountId, Exposure>)>, + )> { + Self::ensure_storage_upgraded(); + Self::new_session(start_session - 1) + } +} + +impl OnFreeBalanceZero for Module { + fn on_free_balance_zero(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 +/// * 1 point to the producer of each referenced uncle block. +impl pallet_authorship::EventHandler for Module { + fn note_author(author: T::AccountId) { + Self::reward_by_ids(vec![(author, 20)]); + } + fn note_uncle(author: T::AccountId, _age: T::BlockNumber) { + Self::reward_by_ids(vec![(>::author(), 2), (author, 1)]) + } +} + +/// A `Convert` implementation that finds the stash of the given controller account, +/// if any. +pub struct StashOf(sp_std::marker::PhantomData); + +impl Convert> for StashOf { + fn convert(controller: T::AccountId) -> Option { + >::ledger(&controller).map(|l| l.stash) + } +} + +/// A typed conversion from stash account ID to the current exposure of nominators +/// on that account. +pub struct ExposureOf(sp_std::marker::PhantomData); + +impl Convert>>> for ExposureOf { + fn convert(validator: T::AccountId) -> Option>> { + Some(>::stakers(&validator)) + } +} + +impl SelectInitialValidators for Module { + fn select_initial_validators() -> Option> { + >::select_validators().1 + } +} + +/// This is intended to be used with `FilterHistoricalOffences`. +impl OnOffenceHandler> for Module +where + T: pallet_session::Trait::AccountId>, + T: pallet_session::historical::Trait< + FullIdentification = Exposure<::AccountId, BalanceOf>, + FullIdentificationOf = ExposureOf, + >, + T::SessionHandler: pallet_session::SessionHandler<::AccountId>, + T::OnSessionEnding: pallet_session::OnSessionEnding<::AccountId>, + T::SelectInitialValidators: pallet_session::SelectInitialValidators<::AccountId>, + T::ValidatorIdOf: Convert<::AccountId, Option<::AccountId>>, +{ + fn on_offence( + offenders: &[OffenceDetails>], + slash_fraction: &[Perbill], + slash_session: SessionIndex, + ) { + >::ensure_storage_upgraded(); + + let reward_proportion = SlashRewardFraction::get(); + + let era_now = Self::current_era(); + let window_start = era_now.saturating_sub(T::BondingDuration::get()); + let current_era_start_session = CurrentEraStartSessionIndex::get(); + + // fast path for current-era report - most likely. + let slash_era = if slash_session >= current_era_start_session { + era_now + } else { + let eras = BondedEras::get(); + + // reverse because it's more likely to find reports from recent eras. + match eras + .iter() + .rev() + .filter(|&&(_, ref sesh)| sesh <= &slash_session) + .next() + { + None => return, // before bonding period. defensive - should be filtered out. + Some(&(ref slash_era, _)) => *slash_era, + } + }; + + ::EarliestUnappliedSlash::mutate(|earliest| { + if earliest.is_none() { + *earliest = Some(era_now) + } + }); + + let slash_defer_duration = T::SlashDeferDuration::get(); + + for (details, slash_fraction) in offenders.iter().zip(slash_fraction) { + let stash = &details.offender.0; + let exposure = &details.offender.1; + + // Skip if the validator is invulnerable. + if Self::invulnerables().contains(stash) { + continue; + } + + let unapplied = slashing::compute_slash::(slashing::SlashParams { + stash, + slash: *slash_fraction, + exposure, + slash_era, + window_start, + now: era_now, + reward_proportion, + }); + + if let Some(mut unapplied) = unapplied { + unapplied.reporters = details.reporters.clone(); + if slash_defer_duration == 0 { + // apply right away. + slashing::apply_slash::(unapplied); + } else { + // defer to end of some `slash_defer_duration` from now. + ::UnappliedSlashes::mutate(era_now, move |for_later| for_later.push(unapplied)); + } + } + } + } +} + +/// Filter historical offences out and only allow those from the bonding period. +pub struct FilterHistoricalOffences { + _inner: sp_std::marker::PhantomData<(T, R)>, +} + +impl ReportOffence for FilterHistoricalOffences, R> +where + T: Trait, + R: ReportOffence, + O: Offence, +{ + fn report_offence(reporters: Vec, offence: O) { + >::ensure_storage_upgraded(); + + // disallow any slashing from before the current bonding period. + let offence_session = offence.session_index(); + let bonded_eras = BondedEras::get(); + + if bonded_eras + .first() + .filter(|(_, start)| offence_session >= *start) + .is_some() + { + R::report_offence(reporters, offence) + } else { + >::deposit_event(RawEvent::OldSlashingReportDiscarded(offence_session)) + } + } +} diff --git a/frame/staking/src/migration.rs b/frame/staking/src/migration.rs new file mode 100644 index 000000000..0ee52dc33 --- /dev/null +++ b/frame/staking/src/migration.rs @@ -0,0 +1,88 @@ +// Copyright 2019 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 . + +//! Storage migrations for srml-staking. + +/// Indicator of a version of a storage layout. +pub type VersionNumber = u32; + +// the current expected version of the storage +pub const CURRENT_VERSION: VersionNumber = 1; + +#[cfg(any(test, feature = "migrate"))] +mod inner { + use crate::{Store, Module, Trait}; + use frame_support::{StorageLinkedMap, StorageValue}; + use sp_std::vec::Vec; + use super::{CURRENT_VERSION, VersionNumber}; + + // the minimum supported version of the migration logic. + const MIN_SUPPORTED_VERSION: VersionNumber = 0; + + // migrate storage from v0 to v1. + // + // this upgrades the `Nominators` linked_map value type from `Vec` to + // `Option>` + pub fn to_v1(version: &mut VersionNumber) { + if *version != 0 { return } + *version += 1; + + let now = >::current_era(); + let res = as Store>::Nominators::translate::, _, _>( + |key| key, + |targets| crate::Nominations { + targets, + submitted_in: now, + suppressed: false, + }, + ); + + if let Err(e) = res { + frame_support::print("Encountered error in migration of Staking::Nominators map."); + if e.is_none() { + frame_support::print("Staking::Nominators map reinitialized"); + } + } + + frame_support::print("Finished migrating Staking storage to v1."); + } + + pub(super) fn perform_migrations() { + as Store>::StorageVersion::mutate(|version| { + if *version < MIN_SUPPORTED_VERSION { + frame_support::print("Cannot migrate staking storage because version is less than\ + minimum."); + frame_support::print(*version); + return + } + + if *version == CURRENT_VERSION { return } + + to_v1::(version); + }); + } +} + +#[cfg(not(any(test, feature = "migrate")))] +mod inner { + pub(super) fn perform_migrations() { } +} + +/// Perform all necessary storage migrations to get storage into the expected stsate for current +/// logic. No-op if fully upgraded. +pub(crate) fn perform_migrations() { + inner::perform_migrations::(); +} diff --git a/srml/staking/src/mock.rs b/frame/staking/src/mock.rs similarity index 51% rename from srml/staking/src/mock.rs rename to frame/staking/src/mock.rs index 4144844a1..81066f9dd 100644 --- a/srml/staking/src/mock.rs +++ b/frame/staking/src/mock.rs @@ -1,65 +1,61 @@ -use std::{cell::RefCell, collections::HashSet}; - -use phragmen::ExtendedBalance as Power; -use sr_primitives::{ - testing::{Header, UintAuthorityId}, - traits::{BlakeTwo256, Convert, IdentityLookup, OnInitialize, OpaqueKeys}, +// Copyright 2018-2019 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 . + +//! Test utilities + +use std::{collections::HashSet, cell::RefCell}; +use sp_runtime::{Perbill, KeyTypeId}; +use sp_runtime::curve::PiecewiseLinear; +use sp_runtime::traits::{IdentityLookup, Convert, OpaqueKeys, OnInitialize, 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, + traits::{Currency, Get, FindAuthor}, weights::Weight, - KeyTypeId, Perbill, }; -use sr_staking_primitives::SessionIndex; -use srml_support::{ - assert_ok, impl_outer_origin, parameter_types, - traits::{Currency, FindAuthor, Get}, - ConsensusEngineId, StorageLinkedMap, +use crate::{ + EraIndex, GenesisConfig, Module, Trait, StakerStatus, ValidatorPrefs, RewardDestination, + Nominators, inflation }; -use substrate_primitives::{crypto::key_types, H256}; - -use crate::*; /// The AccountId alias in this test module. pub type AccountId = u64; pub type BlockNumber = u64; - -/// Module alias -pub type Session = session::Module; -pub type System = system::Module; -pub type Timestamp = timestamp::Module; - -pub type Ring = balances::Module; -pub type Kton = kton::Module; -pub type Staking = Module; - -pub const NANO: Balance = 1; -pub const MICRO: Balance = 1_000 * NANO; -pub const MILLI: Balance = 1_000 * MICRO; -pub const COIN: Balance = 1_000 * MILLI; +pub type Balance = u64; /// Simple structure that exposes how u64 currency can be represented as... u64. pub struct CurrencyToVoteHandler; impl Convert for CurrencyToVoteHandler { - fn convert(x: u64) -> u64 { - x - } -} -impl Convert for CurrencyToVoteHandler { - fn convert(x: u128) -> u128 { - x - } + fn convert(x: u64) -> u64 { x } } impl Convert for CurrencyToVoteHandler { - fn convert(x: u128) -> u64 { - x as u64 - } + fn convert(x: u128) -> u64 { x.saturated_into() } } thread_local! { static SESSION: RefCell<(Vec, HashSet)> = RefCell::new(Default::default()); - static EXISTENTIAL_DEPOSIT: RefCell = RefCell::new(0); + static EXISTENTIAL_DEPOSIT: RefCell = RefCell::new(0); + static SLASH_DEFER_DURATION: RefCell = RefCell::new(0); } pub struct TestSessionHandler; -impl session::SessionHandler for TestSessionHandler { +impl pallet_session::SessionHandler for TestSessionHandler { const KEY_TYPE_IDS: &'static [KeyTypeId] = &[key_types::DUMMY]; fn on_genesis_session(_validators: &[(AccountId, Ks)]) {} @@ -69,7 +65,9 @@ impl session::SessionHandler for TestSessionHandler { validators: &[(AccountId, Ks)], _queued_validators: &[(AccountId, Ks)], ) { - SESSION.with(|x| *x.borrow_mut() = (validators.iter().map(|x| x.0.clone()).collect(), HashSet::new())); + SESSION.with(|x| + *x.borrow_mut() = (validators.iter().map(|x| x.0.clone()).collect(), HashSet::new()) + ); } fn on_disabled(validator_index: usize) { @@ -87,22 +85,28 @@ pub fn is_disabled(controller: AccountId) -> bool { } pub struct ExistentialDeposit; -impl Get for ExistentialDeposit { - fn get() -> Balance { +impl Get for ExistentialDeposit { + fn get() -> u64 { EXISTENTIAL_DEPOSIT.with(|v| *v.borrow()) } } -impl_outer_origin! { - pub enum Origin for Test {} +pub struct SlashDeferDuration; +impl Get for SlashDeferDuration { + fn get() -> EraIndex { + SLASH_DEFER_DURATION.with(|v| *v.borrow()) + } +} + +impl_outer_origin!{ + pub enum Origin for Test where system = frame_system {} } /// Author of block is always 11 pub struct Author11; impl FindAuthor for Author11 { fn find_author<'a, I>(_digests: I) -> Option - where - I: 'a + IntoIterator, + where I: 'a + IntoIterator { Some(11) } @@ -112,125 +116,121 @@ impl FindAuthor for Author11 { #[derive(Clone, PartialEq, Eq, Debug)] pub struct Test; parameter_types! { - pub const BlockHashCount: BlockNumber = 250; + pub const BlockHashCount: u64 = 250; pub const MaximumBlockWeight: Weight = 1024; pub const MaximumBlockLength: u32 = 2 * 1024; pub const AvailableBlockRatio: Perbill = Perbill::one(); } -impl system::Trait for Test { +impl frame_system::Trait for Test { type Origin = Origin; - type Call = (); type Index = u64; type BlockNumber = BlockNumber; + type Call = (); type Hash = H256; - type Hashing = BlakeTwo256; + type Hashing = ::sp_runtime::traits::BlakeTwo256; type AccountId = AccountId; type Lookup = IdentityLookup; type Header = Header; type Event = (); type BlockHashCount = BlockHashCount; type MaximumBlockWeight = MaximumBlockWeight; - type MaximumBlockLength = MaximumBlockLength; type AvailableBlockRatio = AvailableBlockRatio; + type MaximumBlockLength = MaximumBlockLength; type Version = (); + type ModuleToIndex = (); +} +parameter_types! { + pub const TransferFee: Balance = 0; + pub const CreationFee: Balance = 0; +} +impl pallet_balances::Trait for Test { + type Balance = Balance; + type OnFreeBalanceZero = Staking; + type OnNewAccount = (); + type Event = (); + type TransferPayment = (); + type DustRemoval = (); + type ExistentialDeposit = ExistentialDeposit; + type TransferFee = TransferFee; + type CreationFee = CreationFee; } - parameter_types! { pub const Period: BlockNumber = 1; pub const Offset: BlockNumber = 0; pub const UncleGenerations: u64 = 0; pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(25); } -impl session::Trait for Test { +impl pallet_session::Trait for Test { + type OnSessionEnding = 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 = session::PeriodicSessions; - type OnSessionEnding = session::historical::NoteHistoricalRoot; - type SessionHandler = TestSessionHandler; - type Keys = UintAuthorityId; - type DisabledValidatorsThreshold = DisabledValidatorsThreshold; type SelectInitialValidators = Staking; + type DisabledValidatorsThreshold = DisabledValidatorsThreshold; } -impl session::historical::Trait for Test { - type FullIdentification = crate::Exposure; +impl pallet_session::historical::Trait for Test { + type FullIdentification = crate::Exposure; type FullIdentificationOf = crate::ExposureOf; } - -impl authorship::Trait for Test { +impl pallet_authorship::Trait for Test { type FindAuthor = Author11; type UncleGenerations = UncleGenerations; type FilterUncle = (); type EventHandler = Module; } - parameter_types! { - pub const MinimumPeriod: Moment = 5; + pub const MinimumPeriod: u64 = 5; } -impl timestamp::Trait for Test { +impl pallet_timestamp::Trait for Test { type Moment = u64; type OnTimestampSet = (); type MinimumPeriod = MinimumPeriod; } - -parameter_types! { - pub const TransferFee: Balance = 0; - pub const CreationFee: Balance = 0; -} -impl balances::Trait for Test { - type Balance = Balance; - type OnFreeBalanceZero = Staking; - type OnNewAccount = (); - type TransferPayment = (); - type DustRemoval = (); - type Event = (); - type ExistentialDeposit = ExistentialDeposit; - type TransferFee = TransferFee; - type CreationFee = CreationFee; -} -impl kton::Trait for Test { - type Event = (); +pallet_staking_reward_curve::build! { + const I_NPOS: PiecewiseLinear<'static> = curve!( + min_inflation: 0_025_000, + max_inflation: 0_100_000, + ideal_stake: 0_500_000, + falloff: 0_050_000, + max_piece_count: 40, + test_precision: 0_005_000, + ); } - parameter_types! { pub const SessionsPerEra: SessionIndex = 3; - pub const BondingDuration: Moment = 60; - pub const BondingDurationInEra: EraIndex = 60; - pub const CAP: Balance = 10_000_000_000 * COIN; - pub const GenesisTime: Moment = 0; + pub const BondingDuration: EraIndex = 3; + pub const RewardCurve: &'static PiecewiseLinear<'static> = &I_NPOS; } impl Trait for Test { - type Time = Timestamp; + type Currency = pallet_balances::Module; + type Time = pallet_timestamp::Module; type CurrencyToVote = CurrencyToVoteHandler; + type RewardRemainder = (); type Event = (); + type Slash = (); + type Reward = (); type SessionsPerEra = SessionsPerEra; + type SlashDeferDuration = SlashDeferDuration; + type SlashCancelOrigin = frame_system::EnsureRoot; type BondingDuration = BondingDuration; - type BondingDurationInEra = BondingDurationInEra; type SessionInterface = Self; - type Ring = Ring; - type RingRewardRemainder = (); - type RingSlash = (); - type RingReward = (); - type Kton = Kton; - type KtonSlash = (); - type KtonReward = (); - - type Cap = CAP; - type GenesisTime = GenesisTime; + type RewardCurve = RewardCurve; } pub struct ExtBuilder { - existential_deposit: Balance, + existential_deposit: u64, validator_pool: bool, nominate: bool, validator_count: u32, minimum_validator_count: u32, + slash_defer_duration: EraIndex, fair: bool, num_validators: Option, invulnerables: Vec, - - current_era: EraIndex, } impl Default for ExtBuilder { @@ -241,17 +241,16 @@ impl Default for ExtBuilder { nominate: true, validator_count: 2, minimum_validator_count: 0, + slash_defer_duration: 0, fair: true, num_validators: None, invulnerables: vec![], - - current_era: 0, } } } impl ExtBuilder { - pub fn existential_deposit(mut self, existential_deposit: Balance) -> Self { + pub fn existential_deposit(mut self, existential_deposit: u64) -> Self { self.existential_deposit = existential_deposit; self } @@ -271,6 +270,10 @@ impl ExtBuilder { self.minimum_validator_count = count; self } + pub fn slash_defer_duration(mut self, eras: EraIndex) -> Self { + self.slash_defer_duration = eras; + self + } pub fn fair(mut self, is_fair: bool) -> Self { self.fair = is_fair; self @@ -283,52 +286,45 @@ impl ExtBuilder { self.invulnerables = invulnerables; self } - - fn current_era(mut self, current_era: EraIndex) -> Self { - self.current_era = current_era; - self - } - pub fn set_associated_consts(&self) { EXISTENTIAL_DEPOSIT.with(|v| *v.borrow_mut() = self.existential_deposit); + SLASH_DEFER_DURATION.with(|v| *v.borrow_mut() = self.slash_defer_duration); } - pub fn build(self) -> runtime_io::TestExternalities { + pub fn build(self) -> sp_io::TestExternalities { self.set_associated_consts(); - let mut storage = system::GenesisConfig::default().build_storage::().unwrap(); - let balance_factor = if self.existential_deposit > 0 { 256 } else { 1 }; + let mut storage = frame_system::GenesisConfig::default().build_storage::().unwrap(); + let balance_factor = if self.existential_deposit > 0 { + 256 + } else { + 1 + }; let num_validators = self.num_validators.unwrap_or(self.validator_count); let validators = (0..num_validators) .map(|x| ((x + 1) * 10 + 1) as u64) .collect::>(); - let _ = balances::GenesisConfig:: { + 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), ], vesting: vec![], - } - .assimilate_storage(&mut storage); - let _ = kton::GenesisConfig:: { - balances: vec![], - vesting: vec![], - } - .assimilate_storage(&mut storage); + }.assimilate_storage(&mut storage); let stake_21 = if self.fair { 1000 } else { 2000 }; let stake_31 = if self.validator_pool { balance_factor * 1000 } else { 1 }; @@ -338,7 +334,7 @@ impl ExtBuilder { StakerStatus::::Idle }; let nominated = if self.nominate { vec![11, 21] } else { vec![] }; - let _ = GenesisConfig:: { + let _ = GenesisConfig::{ current_era: 0, stakers: vec![ // (stash, controller, staked_amount, status) @@ -347,40 +343,38 @@ impl ExtBuilder { (31, 30, stake_31, StakerStatus::::Validator), (41, 40, balance_factor * 1000, status_41), // nominator - ( - 101, - 100, - balance_factor * 500, - StakerStatus::::Nominator(nominated), - ), + (101, 100, balance_factor * 500, StakerStatus::::Nominator(nominated)) ], validator_count: self.validator_count, minimum_validator_count: self.minimum_validator_count, invulnerables: self.invulnerables, slash_reward_fraction: Perbill::from_percent(10), - payout_fraction: Perbill::from_percent(50), ..Default::default() - } - .assimilate_storage(&mut storage); + }.assimilate_storage(&mut storage); - let _ = session::GenesisConfig:: { + let _ = pallet_session::GenesisConfig:: { keys: validators.iter().map(|x| (*x, UintAuthorityId(*x))).collect(), - } - .assimilate_storage(&mut storage); + }.assimilate_storage(&mut storage); - let mut ext = runtime_io::TestExternalities::from(storage); + let mut ext = sp_io::TestExternalities::from(storage); ext.execute_with(|| { let validators = Session::validators(); - SESSION.with(|x| *x.borrow_mut() = (validators.clone(), HashSet::new())); + SESSION.with(|x| + *x.borrow_mut() = (validators.clone(), HashSet::new()) + ); }); ext } } +pub type System = frame_system::Module; +pub type Balances = pallet_balances::Module; +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)); + Staking::current_elected().into_iter().for_each(|acc| check_exposure(acc)); } pub fn check_nominator_all() { @@ -392,11 +386,8 @@ pub fn check_exposure(stash: u64) { assert_is_stash(stash); let expo = Staking::stakers(&stash); 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, + expo.total as u128, expo.own as u128 + expo.others.iter().map(|e| e.value as u128).sum::(), + "wrong total exposure for {:?}: {:?}", stash, expo, ); } @@ -408,15 +399,14 @@ pub fn check_nominator_exposure(stash: u64) { 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)); - let nominator_stake = Staking::power_of(&stash); + .for_each(|e| e.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!( nominator_stake >= sum, - "failed: Nominator({}) stake({}) >= sum divided({})", - stash, - nominator_stake, - sum, + "failed: Nominator({}) stake({}) >= sum divided({})", stash, nominator_stake, sum, ); } @@ -424,37 +414,27 @@ pub fn assert_is_stash(acc: u64) { assert!(Staking::bonded(&acc).is_some(), "Not a stash."); } -pub fn bond_validator(acc: u64, val: Balance) { +pub fn assert_ledger_consistent(stash: u64) { + assert_is_stash(stash); + let ledger = Staking::ledger(stash - 1).unwrap(); + + let real_total: Balance = ledger.unlocking.iter().fold(ledger.active, |a, c| a + c.value); + assert_eq!(real_total, ledger.total); +} + +pub fn bond_validator(acc: u64, val: u64) { // a = controller // a + 1 = stash - let _ = Ring::make_free_balance_be(&(acc + 1), val); - assert_ok!(Staking::bond( - Origin::signed(acc + 1), - acc, - StakingBalances::RingBalance(val), - RewardDestination::Controller, - 0, - )); - assert_ok!(Staking::validate( - Origin::signed(acc), - ValidatorPrefs { - node_name: "Staking Test".into(), - ..Default::default() - } - )); + let _ = Balances::make_free_balance_be(&(acc + 1), val); + assert_ok!(Staking::bond(Origin::signed(acc + 1), acc, val, RewardDestination::Controller)); + assert_ok!(Staking::validate(Origin::signed(acc), ValidatorPrefs::default())); } -pub fn bond_nominator(acc: u64, val: Balance, target: Vec) { +pub fn bond_nominator(acc: u64, val: u64, target: Vec) { // a = controller // a + 1 = stash - let _ = Ring::make_free_balance_be(&(acc + 1), val); - assert_ok!(Staking::bond( - Origin::signed(acc + 1), - acc, - StakingBalances::RingBalance(val), - RewardDestination::Controller, - 0, - )); + let _ = Balances::make_free_balance_be(&(acc + 1), val); + assert_ok!(Staking::bond(Origin::signed(acc + 1), acc, val, RewardDestination::Controller)); assert_ok!(Staking::nominate(Origin::signed(acc), target)); } @@ -480,19 +460,17 @@ pub fn start_era(era_index: EraIndex) { assert_eq!(Staking::current_era(), era_index); } - -pub fn current_total_payout_for_duration(duration: u64) -> Balance { - inflation::compute_total_payout::( - duration.saturated_into::(), - (Timestamp::now() - ::GenesisTime::get()).saturated_into::(), - (::Cap::get() - Ring::total_issuance()).saturated_into::(), - Perbill::from_percent(50) +pub fn current_total_payout_for_duration(duration: u64) -> u64 { + inflation::compute_total_payout( + ::RewardCurve::get(), + >::slot_stake() * 2, + Balances::total_issuance(), + duration, ).0 } pub fn reward_all_elected() { - let rewards = >::current_elected() - .iter() + let rewards = >::current_elected().iter() .map(|v| (*v, 1)) .collect::>(); @@ -500,8 +478,35 @@ pub fn reward_all_elected() { } pub fn validator_controllers() -> Vec { - Session::validators() - .into_iter() - .map(|s| Staking::bonded(&s).expect("no controller for validator")) - .collect() + Session::validators().into_iter().map(|s| Staking::bonded(&s).expect("no controller for validator")).collect() +} + +pub fn on_offence_in_era( + offenders: &[OffenceDetails>], + slash_fraction: &[Perbill], + era: EraIndex, +) { + let bonded_eras = crate::BondedEras::get(); + for &(bonded_era, start_session) in bonded_eras.iter() { + if bonded_era == era { + Staking::on_offence(offenders, slash_fraction, start_session); + return + } else if bonded_era > era { + break + } + } + + if Staking::current_era() == era { + Staking::on_offence(offenders, slash_fraction, Staking::current_era_start_session_index()); + } else { + panic!("cannot slash in era {}", era); + } +} + +pub fn on_offence_now( + offenders: &[OffenceDetails>], + slash_fraction: &[Perbill], +) { + let now = Staking::current_era(); + on_offence_in_era(offenders, slash_fraction, now) } diff --git a/frame/staking/src/slashing.rs b/frame/staking/src/slashing.rs new file mode 100644 index 000000000..b4ef364cb --- /dev/null +++ b/frame/staking/src/slashing.rs @@ -0,0 +1,824 @@ +// Copyright 2019 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 slashing implementation for NPoS systems. +//! +//! For the purposes of the economic model, it is easiest to think of each validator +//! of a nominator which nominates only its own identity. +//! +//! The act of nomination signals intent to unify economic identity with the validator - to take part in the +//! rewards of a job well done, and to take part in the punishment of a job done badly. +//! +//! There are 3 main difficulties to account for with slashing in NPoS: +//! - A nominator can nominate multiple validators and be slashed via any of them. +//! - Until slashed, stake is reused from era to era. Nominating with N coins for E eras in a row +//! does not mean you have N*E coins to be slashed - you've only ever had N. +//! - Slashable offences can be found after the fact and out of order. +//! +//! The algorithm implemented in this module tries to balance these 3 difficulties. +//! +//! First, we only slash participants for the _maximum_ slash they receive in some time period, +//! rather than the sum. This ensures a protection from overslashing. +//! +//! Second, we do not want the time period (or "span") that the maximum is computed +//! over to last indefinitely. That would allow participants to begin acting with +//! impunity after some point, fearing no further repercussions. For that reason, we +//! automatically "chill" validators and withdraw a nominator's nomination after a slashing event, +//! requiring them to re-enlist voluntarily (acknowledging the slash) and begin a new +//! slashing span. +//! +//! Typically, you will have a single slashing event per slashing span. Only in the case +//! where a validator releases many misbehaviors at once, or goes "back in time" to misbehave in +//! eras that have already passed, would you encounter situations where a slashing span +//! has multiple misbehaviors. However, accounting for such cases is necessary +//! to deter a class of "rage-quit" attacks. +//! +//! Based on research at https://research.web3.foundation/en/latest/polkadot/slashing/npos/ + +use super::{ + EraIndex, Trait, Module, Store, BalanceOf, Exposure, Perbill, SessionInterface, + NegativeImbalanceOf, UnappliedSlash, +}; +use sp_runtime::traits::{Zero, Saturating}; +use frame_support::{ + StorageMap, StorageDoubleMap, + traits::{Currency, OnUnbalanced, Imbalance}, +}; +use sp_std::vec::Vec; +use codec::{Encode, Decode}; + +/// The proportion of the slashing reward to be paid out on the first slashing detection. +/// This is f_1 in the paper. +const REWARD_F1: Perbill = Perbill::from_percent(50); + +/// The index of a slashing span - unique to each stash. +pub(crate) type SpanIndex = u32; + +// A range of start..end eras for a slashing span. +#[derive(Encode, Decode)] +#[cfg_attr(test, derive(Debug, PartialEq))] +pub(crate) struct SlashingSpan { + pub(crate) index: SpanIndex, + pub(crate) start: EraIndex, + pub(crate) length: Option, // the ongoing slashing span has indeterminate length. +} + +impl SlashingSpan { + fn contains_era(&self, era: EraIndex) -> bool { + self.start <= era && self.length.map_or(true, |l| self.start + l > era) + } +} + +/// An encoding of all of a nominator's slashing spans. +#[derive(Encode, Decode)] +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. + span_index: SpanIndex, + // the start era of the most recent (ongoing) slashing span. + last_start: EraIndex, + // all prior slashing spans start indices, in reverse order (most recent first) + // encoded as offsets relative to the slashing span after it. + prior: Vec, +} + +impl SlashingSpans { + // creates a new record of slashing spans for a stash, starting at the beginning + // of the bonding period, relative to now. + fn new(window_start: EraIndex) -> Self { + SlashingSpans { + span_index: 0, + last_start: window_start, + prior: Vec::new(), + } + } + + // update the slashing spans to reflect the start of a new span at the era after `now` + // returns `true` if a new span was started, `false` otherwise. `false` indicates + // that internal state is unchanged. + fn end_span(&mut self, now: EraIndex) -> bool { + let next_start = now + 1; + if next_start <= self.last_start { return false } + + let last_length = next_start - self.last_start; + self.prior.insert(0, last_length); + self.last_start = next_start; + self.span_index += 1; + true + } + + // an iterator over all slashing spans in _reverse_ order - most recent first. + pub(crate) fn iter(&'_ self) -> impl Iterator + '_ { + let mut last_start = self.last_start; + let mut index = self.span_index; + let last = SlashingSpan { index, start: last_start, length: None }; + let prior = self.prior.iter().cloned().map(move |length| { + let start = last_start - length; + last_start = start; + index -= 1; + + SlashingSpan { index, start, length: Some(length) } + }); + + sp_std::iter::once(last).chain(prior) + } + + /// Yields the era index where the last (current) slashing span started. + pub(crate) fn last_start(&self) -> EraIndex { + self.last_start + } + + // prune the slashing spans against a window, whose start era index is given. + // + // If this returns `Some`, then it includes a range start..end of all the span + // indices which were pruned. + fn prune(&mut self, window_start: EraIndex) -> Option<(SpanIndex, SpanIndex)> { + let old_idx = self.iter() + .skip(1) // skip ongoing span. + .position(|span| span.length.map_or(false, |len| span.start + len <= window_start)); + + let earliest_span_index = self.span_index - self.prior.len() as SpanIndex; + let pruned = match old_idx { + Some(o) => { + self.prior.truncate(o); + let new_earliest = self.span_index - self.prior.len() as SpanIndex; + Some((earliest_span_index, new_earliest)) + } + None => None, + }; + + // readjust the ongoing span, if it started before the beginning of the window. + self.last_start = sp_std::cmp::max(self.last_start, window_start); + pruned + } +} + +/// A slashing-span record for a particular stash. +#[derive(Encode, Decode, Default)] +pub(crate) struct SpanRecord { + slashed: Balance, + paid_out: Balance, +} + +impl SpanRecord { + /// The value of stash balance slashed in this span. + #[cfg(test)] + pub(crate) fn amount_slashed(&self) -> &Balance { + &self.slashed + } +} + +/// Parameters for performing a slash. +#[derive(Clone)] +pub(crate) struct SlashParams<'a, T: 'a + Trait> { + /// The stash account being slashed. + pub(crate) stash: &'a T::AccountId, + /// The proportion of the slash. + pub(crate) slash: Perbill, + /// The exposure of the stash and all nominators. + pub(crate) exposure: &'a Exposure>, + /// The era where the offence occurred. + pub(crate) slash_era: EraIndex, + /// The first era in the current bonding period. + pub(crate) window_start: EraIndex, + /// The current era. + pub(crate) now: EraIndex, + /// The maximum percentage of a slash that ever gets paid out. + /// This is f_inf in the paper. + pub(crate) reward_proportion: Perbill, +} + +/// Computes a slash of a validator and nominators. It returns an unapplied +/// record to be applied at some later point. Slashing metadata is updated in storage, +/// since unapplied records are only rarely intended to be dropped. +/// +/// The pending slash record returned does not have initialized reporters. Those have +/// to be set at a higher level, if any. +pub(crate) fn compute_slash(params: SlashParams) + -> Option>> +{ + let SlashParams { + stash, + slash, + exposure, + slash_era, + window_start, + now, + reward_proportion, + } = params.clone(); + + let mut reward_payout = Zero::zero(); + let mut val_slashed = Zero::zero(); + + // is the slash amount here a maximum for the era? + let own_slash = slash * exposure.own; + if slash * exposure.total == Zero::zero() { + // kick out the validator even if they won't be slashed, + // as long as the misbehavior is from their most recent slashing span. + kick_out_if_recent::(params); + return None; + } + + let (prior_slash_p, _era_slash) = as Store>::ValidatorSlashInEra::get( + &slash_era, + stash, + ).unwrap_or((Perbill::zero(), Zero::zero())); + + // compare slash proportions rather than slash values to avoid issues due to rounding + // error. + if slash.deconstruct() > prior_slash_p.deconstruct() { + as Store>::ValidatorSlashInEra::insert( + &slash_era, + stash, + &(slash, own_slash), + ); + } else { + // we slash based on the max in era - this new event is not the max, + // so neither the validator or any nominators will need an update. + // + // this does lead to a divergence of our system from the paper, which + // pays out some reward even if the latest report is not max-in-era. + // we opt to avoid the nominator lookups and edits and leave more rewards + // for more drastic misbehavior. + return None; + } + + // apply slash to validator. + { + let mut spans = fetch_spans::( + stash, + window_start, + &mut reward_payout, + &mut val_slashed, + reward_proportion, + ); + + let target_span = spans.compare_and_update_span_slash( + slash_era, + own_slash, + ); + + if target_span == Some(spans.span_index()) { + // misbehavior occurred within the current slashing span - take appropriate + // actions. + + // chill the validator - it misbehaved in the current span and should + // not continue in the next election. also end the slashing span. + spans.end_span(now); + >::chill_stash(stash); + + // make sure to disable validator till the end of this session + if T::SessionInterface::disable_validator(stash).unwrap_or(false) { + // force a new era, to select a new validator set + >::ensure_new_era() + } + } + } + + let mut nominators_slashed = Vec::new(); + reward_payout += slash_nominators::(params, prior_slash_p, &mut nominators_slashed); + + Some(UnappliedSlash { + validator: stash.clone(), + own: val_slashed, + others: nominators_slashed, + reporters: Vec::new(), + payout: reward_payout, + }) +} + +// doesn't apply any slash, but kicks out the validator if the misbehavior is from +// the most recent slashing span. +fn kick_out_if_recent( + params: SlashParams, +) { + // these are not updated by era-span or end-span. + let mut reward_payout = Zero::zero(); + let mut val_slashed = Zero::zero(); + let mut spans = fetch_spans::( + params.stash, + params.window_start, + &mut reward_payout, + &mut val_slashed, + params.reward_proportion, + ); + + if spans.era_span(params.slash_era).map(|s| s.index) == Some(spans.span_index()) { + spans.end_span(params.now); + >::chill_stash(params.stash); + + // make sure to disable validator till the end of this session + if T::SessionInterface::disable_validator(params.stash).unwrap_or(false) { + // force a new era, to select a new validator set + >::ensure_new_era() + } + } +} + +/// Slash nominators. Accepts general parameters and the prior slash percentage of the validator. +/// +/// Returns the amount of reward to pay out. +fn slash_nominators( + params: SlashParams, + prior_slash_p: Perbill, + nominators_slashed: &mut Vec<(T::AccountId, BalanceOf)>, +) -> BalanceOf { + let SlashParams { + stash: _, + slash, + exposure, + slash_era, + window_start, + now, + reward_proportion, + } = params; + + let mut reward_payout = Zero::zero(); + + nominators_slashed.reserve(exposure.others.len()); + for nominator in &exposure.others { + let stash = &nominator.who; + let mut nom_slashed = Zero::zero(); + + // the era slash of a nominator always grows, if the validator + // had a new max slash for the era. + let era_slash = { + let own_slash_prior = prior_slash_p * nominator.value; + let own_slash_by_validator = slash * nominator.value; + let own_slash_difference = own_slash_by_validator.saturating_sub(own_slash_prior); + + let mut era_slash = as Store>::NominatorSlashInEra::get( + &slash_era, + stash, + ).unwrap_or(Zero::zero()); + + era_slash += own_slash_difference; + + as Store>::NominatorSlashInEra::insert( + &slash_era, + stash, + &era_slash, + ); + + era_slash + }; + + // compare the era slash against other eras in the same span. + { + let mut spans = fetch_spans::( + stash, + window_start, + &mut reward_payout, + &mut nom_slashed, + reward_proportion, + ); + + let target_span = spans.compare_and_update_span_slash( + slash_era, + era_slash, + ); + + if target_span == Some(spans.span_index()) { + // Chill the nominator outright, ending the slashing span. + spans.end_span(now); + >::chill_stash(stash); + } + } + + nominators_slashed.push((stash.clone(), nom_slashed)); + } + + reward_payout +} + +// helper struct for managing a set of spans we are currently inspecting. +// writes alterations to disk on drop, but only if a slash has been carried out. +// +// NOTE: alterations to slashing metadata should not be done after this is dropped. +// dropping this struct applies any necessary slashes, which can lead to free balance +// being 0, and the account being garbage-collected -- a dead account should get no new +// metadata. +struct InspectingSpans<'a, T: Trait + 'a> { + dirty: bool, + window_start: EraIndex, + stash: &'a T::AccountId, + spans: SlashingSpans, + paid_out: &'a mut BalanceOf, + slash_of: &'a mut BalanceOf, + reward_proportion: Perbill, + _marker: sp_std::marker::PhantomData, +} + +// fetches the slashing spans record for a stash account, initializing it if necessary. +fn fetch_spans<'a, T: Trait + 'a>( + stash: &'a T::AccountId, + window_start: EraIndex, + paid_out: &'a mut BalanceOf, + slash_of: &'a mut BalanceOf, + reward_proportion: Perbill, +) -> InspectingSpans<'a, T> { + let spans = as Store>::SlashingSpans::get(stash).unwrap_or_else(|| { + let spans = SlashingSpans::new(window_start); + as Store>::SlashingSpans::insert(stash, &spans); + spans + }); + + InspectingSpans { + dirty: false, + window_start, + stash, + spans, + slash_of, + paid_out, + reward_proportion, + _marker: sp_std::marker::PhantomData, + } +} + +impl<'a, T: 'a + Trait> InspectingSpans<'a, T> { + fn span_index(&self) -> SpanIndex { + self.spans.span_index + } + + fn end_span(&mut self, now: EraIndex) { + self.dirty = self.spans.end_span(now) || self.dirty; + } + + fn add_slash(&mut self, amount: BalanceOf) { + *self.slash_of += amount; + } + + // find the span index of the given era, if covered. + fn era_span(&self, era: EraIndex) -> Option { + self.spans.iter().find(|span| span.contains_era(era)) + } + + // compares the slash in an era to the overall current span slash. + // if it's higher, applies the difference of the slashes and then updates the span on disk. + // + // returns the span index of the era where the slash occurred, if any. + fn compare_and_update_span_slash( + &mut self, + slash_era: EraIndex, + slash: BalanceOf, + ) -> Option { + let target_span = self.era_span(slash_era)?; + let span_slash_key = (self.stash.clone(), target_span.index); + let mut span_record = as Store>::SpanSlash::get(&span_slash_key); + let mut changed = false; + + let reward = if span_record.slashed < slash { + // new maximum span slash. apply the difference. + let difference = slash - span_record.slashed; + span_record.slashed = slash; + + // compute reward. + let reward = REWARD_F1 + * (self.reward_proportion * slash).saturating_sub(span_record.paid_out); + + self.add_slash(difference); + changed = true; + + reward + } else if span_record.slashed == slash { + // compute reward. no slash difference to apply. + REWARD_F1 * (self.reward_proportion * slash).saturating_sub(span_record.paid_out) + } else { + Zero::zero() + }; + + if !reward.is_zero() { + changed = true; + span_record.paid_out += reward; + *self.paid_out += reward; + } + + if changed { + self.dirty = true; + as Store>::SpanSlash::insert(&span_slash_key, &span_record); + } + + Some(target_span.index) + } +} + +impl<'a, T: 'a + Trait> Drop for InspectingSpans<'a, T> { + fn drop(&mut self) { + // only update on disk if we slashed this account. + if !self.dirty { return } + + if let Some((start, end)) = self.spans.prune(self.window_start) { + for span_index in start..end { + as Store>::SpanSlash::remove(&(self.stash.clone(), span_index)); + } + } + + as Store>::SlashingSpans::insert(self.stash, &self.spans); + } +} + +/// Clear slashing metadata for an obsolete era. +pub(crate) fn clear_era_metadata(obsolete_era: EraIndex) { + as Store>::ValidatorSlashInEra::remove_prefix(&obsolete_era); + as Store>::NominatorSlashInEra::remove_prefix(&obsolete_era); +} + +/// Clear slashing metadata for a dead account. +pub(crate) fn clear_stash_metadata(stash: &T::AccountId) { + let spans = match as Store>::SlashingSpans::take(stash) { + None => return, + Some(s) => s, + }; + + // kill slashing-span metadata for account. + // + // this can only happen while the account is staked _if_ they are completely slashed. + // in that case, they may re-bond, but it would count again as span 0. Further ancient + // slashes would slash into this new bond, since metadata has now been cleared. + for span in spans.iter() { + as Store>::SpanSlash::remove(&(stash.clone(), span.index)); + } +} + +// apply the slash to a stash account, deducting any missing funds from the reward +// payout, saturating at 0. this is mildly unfair but also an edge-case that +// can only occur when overlapping locked funds have been slashed. +fn do_slash( + stash: &T::AccountId, + value: BalanceOf, + reward_payout: &mut BalanceOf, + slashed_imbalance: &mut NegativeImbalanceOf, +) { + let controller = match >::bonded(stash) { + None => return, // defensive: should always exist. + Some(c) => c, + }; + + let mut ledger = match >::ledger(&controller) { + Some(ledger) => ledger, + None => return, // nothing to do. + }; + + let value = ledger.slash(value, T::Currency::minimum_balance()); + + if !value.is_zero() { + let (imbalance, missing) = T::Currency::slash(stash, value); + slashed_imbalance.subsume(imbalance); + + if !missing.is_zero() { + // deduct overslash from the reward payout + *reward_payout = reward_payout.saturating_sub(missing); + } + + >::update_ledger(&controller, &ledger); + + // trigger the event + >::deposit_event( + super::RawEvent::Slash(stash.clone(), value) + ); + } +} + +/// Apply a previously-unapplied slash. +pub(crate) fn apply_slash(unapplied_slash: UnappliedSlash>) { + let mut slashed_imbalance = NegativeImbalanceOf::::zero(); + let mut reward_payout = unapplied_slash.payout; + + do_slash::( + &unapplied_slash.validator, + unapplied_slash.own, + &mut reward_payout, + &mut slashed_imbalance, + ); + + for &(ref nominator, nominator_slash) in &unapplied_slash.others { + do_slash::( + &nominator, + nominator_slash, + &mut reward_payout, + &mut slashed_imbalance, + ); + } + + pay_reporters::(reward_payout, slashed_imbalance, &unapplied_slash.reporters); +} + + +/// Apply a reward payout to some reporters, paying the rewards out of the slashed imbalance. +fn pay_reporters( + reward_payout: BalanceOf, + slashed_imbalance: NegativeImbalanceOf, + reporters: &[T::AccountId], +) { + if reward_payout.is_zero() || reporters.is_empty() { + // nobody to pay out to or nothing to pay; + // just treat the whole value as slashed. + T::Slash::on_unbalanced(slashed_imbalance); + return + } + + // take rewards out of the slashed imbalance. + let reward_payout = reward_payout.min(slashed_imbalance.peek()); + let (mut reward_payout, mut value_slashed) = slashed_imbalance.split(reward_payout); + + let per_reporter = reward_payout.peek() / (reporters.len() as u32).into(); + for reporter in reporters { + let (reporter_reward, rest) = reward_payout.split(per_reporter); + reward_payout = rest; + + // this cancels out the reporter reward imbalance internally, leading + // to no change in total issuance. + T::Currency::resolve_creating(reporter, reporter_reward); + } + + // the rest goes to the on-slash imbalance handler (e.g. treasury) + value_slashed.subsume(reward_payout); // remainder of reward division remains. + T::Slash::on_unbalanced(value_slashed); +} + +// TODO: function for undoing a slash. +// + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn span_contains_era() { + // unbounded end + let span = SlashingSpan { index: 0, start: 1000, length: None }; + assert!(!span.contains_era(0)); + assert!(!span.contains_era(999)); + + assert!(span.contains_era(1000)); + assert!(span.contains_era(1001)); + assert!(span.contains_era(10000)); + + // bounded end - non-inclusive range. + let span = SlashingSpan { index: 0, start: 1000, length: Some(10) }; + assert!(!span.contains_era(0)); + assert!(!span.contains_era(999)); + + assert!(span.contains_era(1000)); + assert!(span.contains_era(1001)); + assert!(span.contains_era(1009)); + assert!(!span.contains_era(1010)); + assert!(!span.contains_era(1011)); + } + + #[test] + fn single_slashing_span() { + let spans = SlashingSpans { + span_index: 0, + last_start: 1000, + prior: Vec::new(), + }; + + assert_eq!( + spans.iter().collect::>(), + vec![SlashingSpan { index: 0, start: 1000, length: None }], + ); + } + + #[test] + fn many_prior_spans() { + let spans = SlashingSpans { + span_index: 10, + last_start: 1000, + prior: vec![10, 9, 8, 10], + }; + + assert_eq!( + spans.iter().collect::>(), + vec![ + SlashingSpan { index: 10, start: 1000, length: None }, + SlashingSpan { index: 9, start: 990, length: Some(10) }, + SlashingSpan { index: 8, start: 981, length: Some(9) }, + SlashingSpan { index: 7, start: 973, length: Some(8) }, + SlashingSpan { index: 6, start: 963, length: Some(10) }, + ], + ) + } + + #[test] + fn pruning_spans() { + let mut spans = SlashingSpans { + span_index: 10, + last_start: 1000, + prior: vec![10, 9, 8, 10], + }; + + assert_eq!(spans.prune(981), Some((6, 8))); + assert_eq!( + spans.iter().collect::>(), + vec![ + SlashingSpan { index: 10, start: 1000, length: None }, + SlashingSpan { index: 9, start: 990, length: Some(10) }, + SlashingSpan { index: 8, start: 981, length: Some(9) }, + ], + ); + + assert_eq!(spans.prune(982), None); + assert_eq!( + spans.iter().collect::>(), + vec![ + SlashingSpan { index: 10, start: 1000, length: None }, + SlashingSpan { index: 9, start: 990, length: Some(10) }, + SlashingSpan { index: 8, start: 981, length: Some(9) }, + ], + ); + + assert_eq!(spans.prune(989), None); + assert_eq!( + spans.iter().collect::>(), + vec![ + SlashingSpan { index: 10, start: 1000, length: None }, + SlashingSpan { index: 9, start: 990, length: Some(10) }, + SlashingSpan { index: 8, start: 981, length: Some(9) }, + ], + ); + + assert_eq!(spans.prune(1000), Some((8, 10))); + assert_eq!( + spans.iter().collect::>(), + vec![ + SlashingSpan { index: 10, start: 1000, length: None }, + ], + ); + + assert_eq!(spans.prune(2000), None); + assert_eq!( + spans.iter().collect::>(), + vec![ + SlashingSpan { index: 10, start: 2000, length: None }, + ], + ); + + // now all in one shot. + let mut spans = SlashingSpans { + span_index: 10, + last_start: 1000, + prior: vec![10, 9, 8, 10], + }; + assert_eq!(spans.prune(2000), Some((6, 10))); + assert_eq!( + spans.iter().collect::>(), + vec![ + SlashingSpan { index: 10, start: 2000, length: None }, + ], + ); + } + + #[test] + fn ending_span() { + let mut spans = SlashingSpans { + span_index: 1, + last_start: 10, + prior: Vec::new(), + }; + + assert!(spans.end_span(10)); + + assert_eq!( + spans.iter().collect::>(), + vec![ + SlashingSpan { index: 2, start: 11, length: None }, + SlashingSpan { index: 1, start: 10, length: Some(1) }, + ], + ); + + assert!(spans.end_span(15)); + assert_eq!( + spans.iter().collect::>(), + vec![ + SlashingSpan { index: 3, start: 16, length: None }, + SlashingSpan { index: 2, start: 11, length: Some(5) }, + SlashingSpan { index: 1, start: 10, length: Some(1) }, + ], + ); + + // does nothing if not a valid end. + assert!(!spans.end_span(15)); + assert_eq!( + spans.iter().collect::>(), + vec![ + SlashingSpan { index: 3, start: 16, length: None }, + SlashingSpan { index: 2, start: 11, length: Some(5) }, + SlashingSpan { index: 1, start: 10, length: Some(1) }, + ], + ); + } +} diff --git a/frame/staking/src/tests.rs b/frame/staking/src/tests.rs new file mode 100644 index 000000000..9bb10610a --- /dev/null +++ b/frame/staking/src/tests.rs @@ -0,0 +1,2559 @@ +// Copyright 2017-2019 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. + +use super::*; +use mock::*; +use sp_runtime::{assert_eq_error_rate, traits::{OnInitialize, BadOrigin}}; +use sp_staking::offence::OffenceDetails; +use frame_support::{ + assert_ok, assert_noop, + traits::{Currency, ReservableCurrency}, + dispatch::DispatchError, +}; +use substrate_test_utils::assert_eq_uvec; + +#[test] +fn force_unstake_works() { + // Verifies initial conditions of mock + ExtBuilder::default().build().execute_with(|| { + // Account 11 is stashed and locked, and account 10 is the controller + assert_eq!(Staking::bonded(&11), Some(10)); + // Cant transfer + assert_noop!( + Balances::transfer(Origin::signed(11), 1, 10), + DispatchError::Module { + index: 0, + error: 1, + message: Some("LiquidityRestrictions"), + } + ); + // Force unstake requires root. + assert_noop!(Staking::force_unstake(Origin::signed(11), 11), BadOrigin); + // We now force them to unstake + assert_ok!(Staking::force_unstake(Origin::ROOT, 11)); + // No longer bonded. + assert_eq!(Staking::bonded(&11), None); + // Transfer works. + assert_ok!(Balances::transfer(Origin::signed(11), 1, 10)); + }); +} + +#[test] +fn basic_setup_works() { + // Verifies initial conditions of mock + ExtBuilder::default().build().execute_with(|| { + // Account 11 is stashed and locked, and account 10 is the controller + assert_eq!(Staking::bonded(&11), Some(10)); + // Account 21 is stashed and locked, and account 20 is the controller + assert_eq!(Staking::bonded(&21), Some(20)); + // Account 1 is not a stashed + assert_eq!(Staking::bonded(&1), None); + + // 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![] }) + ); + // 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![] }) + ); + // Account 1 does not control any stash + assert_eq!(Staking::ledger(&1), None); + + // ValidatorPrefs are default + assert_eq!(>::enumerate().collect::>(), vec![ + (31, ValidatorPrefs::default()), + (21, ValidatorPrefs::default()), + (11, ValidatorPrefs::default()) + ]); + + assert_eq!( + Staking::ledger(100), + Some(StakingLedger { stash: 101, total: 500, active: 500, unlocking: vec![] }) + ); + assert_eq!(Staking::nominators(101).unwrap().targets, vec![11, 21]); + + if cfg!(feature = "equalize") { + assert_eq!( + Staking::stakers(11), + Exposure { total: 1250, own: 1000, others: vec![ IndividualExposure { who: 101, value: 250 }] } + ); + assert_eq!( + Staking::stakers(21), + Exposure { total: 1250, own: 1000, others: vec![ IndividualExposure { who: 101, value: 250 }] } + ); + // initial slot_stake + assert_eq!(Staking::slot_stake(), 1250); + } else { + assert_eq!( + Staking::stakers(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 }] } + ); + // initial slot_stake + assert_eq!(Staking::slot_stake(), 1125); + } + + + // The number of validators required. + assert_eq!(Staking::validator_count(), 2); + + // Initial Era and session + assert_eq!(Staking::current_era(), 0); + + // Account 10 has `balance_factor` free balance + assert_eq!(Balances::free_balance(&10), 1); + assert_eq!(Balances::free_balance(&10), 1); + + // New era is not being forced + assert_eq!(Staking::force_era(), Forcing::NotForcing); + + // All exposures must be correct. + check_exposure_all(); + check_nominator_all(); + }); +} + +#[test] +fn change_controller_works() { + ExtBuilder::default().build().execute_with(|| { + assert_eq!(Staking::bonded(&11), Some(10)); + + assert!(>::enumerate().map(|(c, _)| c).collect::>().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_ok!(Staking::set_controller(Origin::signed(11), 5)); + + start_era(1); + + assert_noop!( + Staking::validate(Origin::signed(10), ValidatorPrefs::default()), + Error::::NotController, + ); + assert_ok!(Staking::validate(Origin::signed(5), ValidatorPrefs::default())); + }) +} + +#[test] +fn rewards_should_work() { + // should check that: + // * 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); + let init_balance_10 = Balances::total_balance(&10); + let init_balance_11 = Balances::total_balance(&11); + + // 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); + + // 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); + + 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); + + // 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(&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 meaningfull if reward something + >::reward_by_ids(vec![(11, 1)]); + + 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); + + start_session(4); + + let total_payout_1 = current_total_payout_for_duration(3000); + assert!(total_payout_1 > 10); // Test is meaningfull 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); + }); +} + +#[test] +fn staking_should_work() { + // should test: + // * new validators can be added to the default set + // * new ones will be chosen per era + // * either one can unlock the stash and back-down from being a validator via `chill`ing. + ExtBuilder::default() + .nominate(false) + .fair(false) // to give 20 more staked value + .build() + .execute_with(|| { + Timestamp::set_timestamp(1); // Initialize time. + + // remember + compare this along with the test. + assert_eq_uvec!(validator_controllers(), vec![20, 10]); + + // 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); + // add a new candidate for being a validator. account 3 controlled by 4. + assert_ok!(Staking::bond(Origin::signed(3), 4, 1500, RewardDestination::Controller)); + 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); + + // 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. + start_session(4); + + assert_eq_uvec!(validator_controllers(), vec![20, 4]); + // --- Block 4: 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); + assert_eq_uvec!(validator_controllers(), vec![20, 4]); + + // --- Block 6: 4 will not be a validator. + start_session(7); + 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![] }) + ); + // 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"), + } + ); + assert_ok!(Balances::reserve(&3, 409)); + }); +} + +#[test] +fn less_than_needed_candidates_works() { + ExtBuilder::default() + .minimum_validator_count(1) + .validator_count(4) + .nominate(false) + .num_validators(3) + .build() + .execute_with(|| { + assert_eq!(Staking::validator_count(), 4); + assert_eq!(Staking::minimum_validator_count(), 1); + assert_eq_uvec!(validator_controllers(), vec![30, 20, 10]); + + start_era(1); + + // Previous set is selected. NO election algorithm is even executed. + assert_eq_uvec!(validator_controllers(), vec![30, 20, 10]); + + // 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(); + }); +} + +#[test] +fn no_candidate_emergency_condition() { + ExtBuilder::default() + .minimum_validator_count(10) + .validator_count(15) + .num_validators(4) + .validator_pool(true) + .nominate(false) + .build() + .execute_with(|| { + // initial validators + assert_eq_uvec!(validator_controllers(), vec![10, 20, 30, 40]); + + // set the minimum validator count. + ::MinimumValidatorCount::put(10); + ::ValidatorCount::put(15); + assert_eq!(Staking::validator_count(), 15); + + let _ = Staking::chill(Origin::signed(10)); + + // trigger era + System::set_block_number(1); + Session::on_initialize(System::block_number()); + + // Previous ones are elected. chill is invalidates. TODO: #2494 + assert_eq_uvec!(validator_controllers(), vec![10, 20, 30, 40]); + assert_eq!(Staking::current_elected().len(), 0); + }); +} + +#[test] +fn nominating_and_rewards_should_work() { + // PHRAGMEN OUTPUT: running this test with the reference impl gives: + // + // Sequential Phragmén gives + // 10 is elected with stake 2200.0 and score 0.0003333333333333333 + // 20 is elected with stake 1800.0 and score 0.0005555555555555556 + + // 10 has load 0.0003333333333333333 and supported + // 10 with stake 1000.0 + // 20 has load 0.0005555555555555556 and supported + // 20 with stake 1000.0 + // 30 has load 0 and supported + // 30 with stake 0 + // 40 has load 0 and supported + // 40 with stake 0 + // 2 has load 0.0005555555555555556 and supported + // 10 with stake 600.0 20 with stake 400.0 30 with stake 0.0 + // 4 has load 0.0005555555555555556 and supported + // 10 with stake 600.0 20 with stake 400.0 40 with stake 0.0 + + // Sequential Phragmén with post processing gives + // 10 is elected with stake 2000.0 and score 0.0003333333333333333 + // 20 is elected with stake 2000.0 and score 0.0005555555555555556 + + // 10 has load 0.0003333333333333333 and supported + // 10 with stake 1000.0 + // 20 has load 0.0005555555555555556 and supported + // 20 with stake 1000.0 + // 30 has load 0 and supported + // 30 with stake 0 + // 40 has load 0 and supported + // 40 with stake 0 + // 2 has load 0.0005555555555555556 and supported + // 10 with stake 400.0 20 with stake 600.0 30 with stake 0 + // 4 has load 0.0005555555555555556 and supported + // 10 with stake 600.0 20 with stake 400.0 40 with stake 0.0 + ExtBuilder::default() + .nominate(false) + .validator_pool(true) + .build() + .execute_with(|| { + // initial validators -- everyone is actually even. + assert_eq_uvec!(validator_controllers(), vec![40, 30]); + + // Set payee to controller + assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); + assert_ok!(Staking::set_payee(Origin::signed(20), RewardDestination::Controller)); + assert_ok!(Staking::set_payee(Origin::signed(30), RewardDestination::Controller)); + assert_ok!(Staking::set_payee(Origin::signed(40), RewardDestination::Controller)); + + // give the man some money + let initial_balance = 1000; + for i in [1, 2, 3, 4, 5, 10, 11, 20, 21].iter() { + let _ = Balances::make_free_balance_be(i, initial_balance); + } + + // bond two account pairs and state interest in nomination. + // 2 will nominate for 10, 20, 30 + assert_ok!(Staking::bond(Origin::signed(1), 2, 1000, RewardDestination::Controller)); + assert_ok!(Staking::nominate(Origin::signed(2), vec![11, 21, 31])); + // 4 will nominate for 10, 20, 40 + assert_ok!(Staking::bond(Origin::signed(3), 4, 1000, RewardDestination::Controller)); + assert_ok!(Staking::nominate(Origin::signed(4), vec![11, 21, 41])); + + // the total reward for era 0 + let total_payout_0 = current_total_payout_for_duration(3000); + assert!(total_payout_0 > 100); // Test is meaningfull 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); + + // 10 and 20 have more votes, they will be chosen by phragmen. + assert_eq_uvec!(validator_controllers(), vec![20, 10]); + + // OLD validators must have already received some rewards. + 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. + + if cfg!(feature = "equalize") { + // total expo of 10, with 1200 coming from nominators (externals), according to phragmen. + assert_eq!(Staking::stakers(11).own, 1000); + assert_eq_error_rate!(Staking::stakers(11).total, 1000 + 1000, 2); + // 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![600, 400] + ); + 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 + 1000, 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![400, 600] + ); + assert_eq!( + Staking::stakers(21).others.iter().map(|e| e.who).collect::>(), + vec![3, 1] + ); + } else { + // 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] + ); + 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] + ); + assert_eq!( + Staking::stakers(21).others.iter().map(|e| e.who).collect::>(), + vec![3, 1] + ); + } + + // 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 meaningfull 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)]); + + start_era(2); + + // nothing else will happen, era ends and rewards are paid again, + // it is expected that nominators will also be paid. See below + + let payout_for_10 = total_payout_1 / 3; + let payout_for_20 = 2 * total_payout_1 / 3; + if cfg!(feature = "equalize") { + // Nominator 2: has [400 / 2000 ~ 1 / 5 from 10] + [600 / 2000 ~ 3 / 10 from 20]'s reward. + assert_eq_error_rate!( + Balances::total_balance(&2), + initial_balance + payout_for_10 / 5 + payout_for_20 * 3 / 10, + 2, + ); + // Nominator 4: has [400 / 2000 ~ 1 / 5 from 20] + [600 / 2000 ~ 3 / 10 from 10]'s reward. + assert_eq_error_rate!( + Balances::total_balance(&4), + initial_balance + payout_for_20 / 5 + payout_for_10 * 3 / 10, + 2, + ); + + // Validator 10: got 1000 / 2000 external stake. + assert_eq_error_rate!( + Balances::total_balance(&10), + initial_balance + payout_for_10 / 2, + 1, + ); + // Validator 20: got 1000 / 2000 external stake. + assert_eq_error_rate!( + Balances::total_balance(&20), + initial_balance + payout_for_20 / 2, + 1, + ); + } else { + // Nominator 2: has [400/1800 ~ 2/9 from 10] + [600/2200 ~ 3/11 from 20]'s reward. ==> 2/9 + 3/11 + assert_eq_error_rate!( + Balances::total_balance(&2), + initial_balance + (2 * payout_for_10 / 9 + 3 * payout_for_20 / 11), + 1, + ); + // Nominator 4: has [400/1800 ~ 2/9 from 10] + [600/2200 ~ 3/11 from 20]'s reward. ==> 2/9 + 3/11 + assert_eq_error_rate!( + Balances::total_balance(&4), + initial_balance + (2 * payout_for_10 / 9 + 3 * payout_for_20 / 11), + 1, + ); + + // Validator 10: got 800 / 1800 external stake => 8/18 =? 4/9 => Validator's share = 5/9 + assert_eq_error_rate!( + Balances::total_balance(&10), + initial_balance + 5 * payout_for_10 / 9, + 1, + ); + // Validator 20: got 1200 / 2200 external stake => 12/22 =? 6/11 => Validator's share = 5/11 + assert_eq_error_rate!( + Balances::total_balance(&20), + initial_balance + 5 * payout_for_20 / 11, + 1, + ); + } + + check_exposure_all(); + check_nominator_all(); + }); +} + +#[test] +fn nominators_also_get_slashed() { + // A nominator should be slashed if the validator they nominated is slashed + // Here is the breakdown of roles: + // 10 - is the controller of 11 + // 11 - is the stash. + // 2 - is the nominator of 20, 10 + ExtBuilder::default().nominate(false).build().execute_with(|| { + assert_eq!(Staking::validator_count(), 2); + + // Set payee to controller + assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); + + // give the man some money. + let initial_balance = 1000; + for i in [1, 2, 3, 10].iter() { + let _ = Balances::make_free_balance_be(i, initial_balance); + } + + // 2 will nominate for 10, 20 + let nominator_stake = 500; + assert_ok!(Staking::bond(Origin::signed(1), 2, nominator_stake, RewardDestination::default())); + assert_ok!(Staking::nominate(Origin::signed(2), vec![20, 10])); + + let total_payout = current_total_payout_for_duration(3000); + assert!(total_payout > 100); // Test is meaningfull if reward something + >::reward_by_ids(vec![(11, 1)]); + + // new era, pay rewards, + start_era(1); + + // Nominator stash didn't collect any. + assert_eq!(Balances::total_balance(&2), initial_balance); + + // 10 goes offline + on_offence_now( + &[OffenceDetails { + offender: ( + 11, + Staking::stakers(&11), + ), + reporters: vec![], + }], + &[Perbill::from_percent(5)], + ); + let expo = Staking::stakers(11); + let slash_value = 50; + let total_slash = expo.total.min(slash_value); + let validator_slash = expo.own.min(total_slash); + let nominator_slash = nominator_stake.min(total_slash - validator_slash); + + // 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(); + // Because slashing happened. + assert!(is_disabled(10)); + }); +} + +#[test] +fn double_staking_should_fail() { + // should test (in the same order): + // * an account already bonded as stash cannot be be stashed again. + // * an account already bonded as stash cannot nominate. + // * an account already bonded as controller can nominate. + ExtBuilder::default().build().execute_with(|| { + let arbitrary_value = 5; + // 2 = controller, 1 stashed => ok + assert_ok!( + Staking::bond(Origin::signed(1), 2, arbitrary_value, + RewardDestination::default()) + ); + // 4 = not used so far, 1 stashed => not allowed. + assert_noop!( + Staking::bond(Origin::signed(1), 4, arbitrary_value, + RewardDestination::default()), Error::::AlreadyBonded, + ); + // 1 = stashed => attempting to nominate should fail. + assert_noop!(Staking::nominate(Origin::signed(1), vec![1]), Error::::NotController); + // 2 = controller => nominating should work. + assert_ok!(Staking::nominate(Origin::signed(2), vec![1])); + }); +} + +#[test] +fn double_controlling_should_fail() { + // should test (in the same order): + // * an account already bonded as controller CANNOT be reused as the controller of another account. + ExtBuilder::default().build().execute_with(|| { + let arbitrary_value = 5; + // 2 = controller, 1 stashed => ok + assert_ok!(Staking::bond( + Origin::signed(1), + 2, + arbitrary_value, + RewardDestination::default(), + )); + // 2 = controller, 3 stashed (Note that 2 is reused.) => no-op + assert_noop!( + Staking::bond(Origin::signed(3), 2, arbitrary_value, RewardDestination::default()), + Error::::AlreadyPaired, + ); + }); +} + +#[test] +fn session_and_eras_work() { + ExtBuilder::default().build().execute_with(|| { + assert_eq!(Staking::current_era(), 0); + + // Block 1: No change. + start_session(0); + assert_eq!(Session::current_index(), 1); + assert_eq!(Staking::current_era(), 0); + + // Block 2: Simple era change. + start_session(2); + assert_eq!(Session::current_index(), 3); + assert_eq!(Staking::current_era(), 1); + + // Block 3: Schedule an era length change; no visible changes. + start_session(3); + assert_eq!(Session::current_index(), 4); + assert_eq!(Staking::current_era(), 1); + + // Block 4: Era change kicks in. + start_session(5); + assert_eq!(Session::current_index(), 6); + assert_eq!(Staking::current_era(), 2); + + // Block 5: No change. + start_session(6); + assert_eq!(Session::current_index(), 7); + assert_eq!(Staking::current_era(), 2); + + // Block 6: No change. + start_session(7); + assert_eq!(Session::current_index(), 8); + assert_eq!(Staking::current_era(), 2); + + // Block 7: Era increment. + start_session(8); + assert_eq!(Session::current_index(), 9); + assert_eq!(Staking::current_era(), 3); + }); +} + +#[test] +fn forcing_new_era_works() { + ExtBuilder::default().build().execute_with(|| { + // normal flow of session. + assert_eq!(Staking::current_era(), 0); + start_session(0); + assert_eq!(Staking::current_era(), 0); + start_session(1); + assert_eq!(Staking::current_era(), 0); + start_session(2); + assert_eq!(Staking::current_era(), 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); + start_session(5); + assert_eq!(Staking::current_era(), 1); + start_session(6); + assert_eq!(Staking::current_era(), 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); + + // forceful change + ForceEra::put(Forcing::ForceAlways); + start_session(9); + assert_eq!(Staking::current_era(), 3); + start_session(10); + assert_eq!(Staking::current_era(), 4); + start_session(11); + assert_eq!(Staking::current_era(), 5); + + // 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); + + }); +} + +#[test] +fn cannot_transfer_staked_balance() { + // Tests that a stash account cannot transfer funds + ExtBuilder::default().nominate(false).build().execute_with(|| { + // Confirm account 11 is stashed + assert_eq!(Staking::bonded(&11), Some(10)); + // 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); + // 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"), + } + ); + + // Give account 11 extra free balance + let _ = Balances::make_free_balance_be(&11, 10000); + // Confirm that account 11 can now transfer some balance + assert_ok!(Balances::transfer(Origin::signed(11), 20, 1)); + }); +} + +#[test] +fn cannot_transfer_staked_balance_2() { + // Tests that a stash account cannot transfer funds + // Same test as above but with 20, and more accurate. + // 21 has 2000 free balance but 1000 at stake + ExtBuilder::default().nominate(false).fair(true).build().execute_with(|| { + // Confirm account 21 is stashed + assert_eq!(Staking::bonded(&21), Some(20)); + // 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); + // 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"), + } + ); + assert_ok!(Balances::transfer(Origin::signed(21), 20, 1000)); + }); +} + +#[test] +fn cannot_reserve_staked_balance() { + // Checks that a bonded account cannot reserve balance from free balance + ExtBuilder::default().build().execute_with(|| { + // Confirm account 11 is stashed + assert_eq!(Staking::bonded(&11), Some(10)); + // 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); + // Confirm account 11 cannot transfer as a result + assert_noop!( + Balances::reserve(&11, 1), + DispatchError::Module { + index: 0, + error: 1, + message: Some("LiquidityRestrictions"), + } + ); + + // Give account 11 extra free balance + let _ = Balances::make_free_balance_be(&11, 10000); + // Confirm account 11 can now reserve balance + assert_ok!(Balances::reserve(&11, 1)); + }); +} + +#[test] +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)); + // Check the balance of the validator account + assert_eq!(Balances::free_balance(&10), 1); + // Check the balance of the stash account + assert_eq!(Balances::free_balance(&11), 1000); + // Check how much is at stake + assert_eq!(Staking::ledger(&10), Some(StakingLedger { + stash: 11, + total: 1000, + active: 1000, + unlocking: vec![], + })); + + // 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 meaningfull if reward something + >::reward_by_ids(vec![(11, 1)]); + + start_era(1); + + // Check that RewardDestination is Staked (default) + assert_eq!(Staking::payee(&11), RewardDestination::Staked); + // Check that reward went to the stash account of validator + assert_eq!(Balances::free_balance(&11), 1000 + total_payout_0); + // Check that amount at stake increased accordingly + assert_eq!(Staking::ledger(&10), Some(StakingLedger { + stash: 11, + total: 1000 + total_payout_0, + active: 1000 + total_payout_0, + unlocking: vec![], + })); + + //Change RewardDestination to Stash + >::insert(&11, RewardDestination::Stash); + + // 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 > 100); // Test is meaningfull if reward something + >::reward_by_ids(vec![(11, 1)]); + + start_era(2); + + // Check that RewardDestination is Stash + assert_eq!(Staking::payee(&11), RewardDestination::Stash); + // Check that reward went to the stash account + assert_eq!(Balances::free_balance(&11), 1000 + total_payout_0 + total_payout_1); + // Record this value + let recorded_stash_balance = 1000 + total_payout_0 + total_payout_1; + // Check that amount at stake is NOT increased + assert_eq!(Staking::ledger(&10), Some(StakingLedger { + stash: 11, + total: 1000 + total_payout_0, + active: 1000 + total_payout_0, + unlocking: vec![], + })); + + // Change RewardDestination to Controller + >::insert(&11, RewardDestination::Controller); + + // Check controller balance + assert_eq!(Balances::free_balance(&10), 1); + + // 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 > 100); // Test is meaningfull if reward something + >::reward_by_ids(vec![(11, 1)]); + + start_era(3); + + // Check that RewardDestination is Controller + assert_eq!(Staking::payee(&11), RewardDestination::Controller); + // Check that reward went to the controller account + assert_eq!(Balances::free_balance(&10), 1 + total_payout_2); + // Check that amount at stake is NOT increased + assert_eq!(Staking::ledger(&10), Some(StakingLedger { + stash: 11, + total: 1000 + total_payout_0, + active: 1000 + total_payout_0, + unlocking: vec![], + })); + // Check that amount in staked account is NOT increased. + assert_eq!(Balances::free_balance(&11), recorded_stash_balance); + }); +} + +#[test] +fn validator_payment_prefs_work() { + // Test that validator preferences are correctly honored + // 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); + >::insert(&11, ValidatorPrefs { + commission: Perbill::from_percent(50), + }); + + // 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 meaningfull if reward something + >::reward_by_ids(vec![(11, 1)]); + + start_era(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); + + check_exposure_all(); + check_nominator_all(); + }); + +} + +#[test] +fn bond_extra_works() { + // Tests that extra `free_balance` in the stash can be added to stake + // NOTE: this tests only verifies `StakingLedger` for correct updates + // See `bond_extra_and_withdraw_unbonded_works` for more details and updates on `Exposure`. + ExtBuilder::default().build().execute_with(|| { + // Check that account 10 is a validator + assert!(>::exists(11)); + // Check that account 10 is bonded to account 11 + assert_eq!(Staking::bonded(&11), Some(10)); + // Check how much is at stake + assert_eq!(Staking::ledger(&10), Some(StakingLedger { + stash: 11, + total: 1000, + active: 1000, + unlocking: vec![], + })); + + // Give account 11 some large free balance greater than total + let _ = Balances::make_free_balance_be(&11, 1000000); + + // Call the bond_extra function from controller, add only 100 + assert_ok!(Staking::bond_extra(Origin::signed(11), 100)); + // There should be 100 more `total` and `active` in the ledger + assert_eq!(Staking::ledger(&10), Some(StakingLedger { + stash: 11, + total: 1000 + 100, + active: 1000 + 100, + unlocking: vec![], + })); + + // Call the bond_extra function with a large number, should handle it + assert_ok!(Staking::bond_extra(Origin::signed(11), u64::max_value())); + // The full amount of the funds should now be in the total and active + assert_eq!(Staking::ledger(&10), Some(StakingLedger { + stash: 11, + total: 1000000, + active: 1000000, + unlocking: vec![], + })); + }); +} + +#[test] +fn bond_extra_and_withdraw_unbonded_works() { + // * Should test + // * Given an account being bonded [and chosen as a validator](not mandatory) + // * It can add extra funds to the bonded account. + // * it can unbond a portion of its funds from the stash account. + // * Once the unbonding period is done, it can actually take the funds out of the stash. + ExtBuilder::default().nominate(false).build().execute_with(|| { + // Set payee to controller. avoids confusion + assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); + + // Give account 11 some large free balance greater than total + let _ = Balances::make_free_balance_be(&11, 1000000); + + // Initial config should be correct + assert_eq!(Staking::current_era(), 0); + assert_eq!(Session::current_index(), 0); + + // check the balance of a validator accounts. + assert_eq!(Balances::total_balance(&10), 1); + + // confirm that 10 is a normal validator and gets paid at the end of the era. + start_era(1); + + // Initial state of 10 + assert_eq!(Staking::ledger(&10), Some(StakingLedger { + stash: 11, + total: 1000, + active: 1000, + unlocking: vec![], + })); + assert_eq!(Staking::stakers(&11), Exposure { total: 1000, own: 1000, others: vec![] }); + + // deposit the extra 100 units + Staking::bond_extra(Origin::signed(11), 100).unwrap(); + + assert_eq!(Staking::ledger(&10), Some(StakingLedger { + stash: 11, + total: 1000 + 100, + active: 1000 + 100, + unlocking: vec![], + })); + // 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![] }); + + // trigger next era. + Timestamp::set_timestamp(10); + start_era(2); + assert_eq!(Staking::current_era(), 2); + + // ledger should be the same. + assert_eq!(Staking::ledger(&10), Some(StakingLedger { + stash: 11, + total: 1000 + 100, + active: 1000 + 100, + unlocking: vec![], + })); + // Exposure is now updated. + assert_eq!(Staking::stakers(&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}] }) + ); + + // 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}] })); + + // trigger next era. + start_era(3); + + // 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}] })); + + // trigger next era. + start_era(5); + + 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![] })); + }) +} + +#[test] +fn too_many_unbond_calls_should_not_work() { + ExtBuilder::default().build().execute_with(|| { + // locked at era 0 until 3 + for _ in 0..MAX_UNLOCKING_CHUNKS-1 { + assert_ok!(Staking::unbond(Origin::signed(10), 1)); + } + + start_era(1); + + // locked at era 1 until 4 + assert_ok!(Staking::unbond(Origin::signed(10), 1)); + // can't do more. + assert_noop!(Staking::unbond(Origin::signed(10), 1), Error::::NoMoreChunks); + + start_era(3); + + assert_noop!(Staking::unbond(Origin::signed(10), 1), Error::::NoMoreChunks); + // free up. + assert_ok!(Staking::withdraw_unbonded(Origin::signed(10))); + + // Can add again. + assert_ok!(Staking::unbond(Origin::signed(10), 1)); + assert_eq!(Staking::ledger(&10).unwrap().unlocking.len(), 2); + }) +} + +#[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 + 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!(>::exists(&11) && >::exists(&21)); + + assert_eq!(Staking::stakers(&11).total, 1000); + assert_eq!(Staking::stakers(&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); + + // 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![] }); + + // 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 meaningfull if reward something + >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(21, 1)]); + + // New era --> rewards are paid --> stakes are changed + start_era(1); + + // -- 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); + + 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); + + check_exposure_all(); + check_nominator_all(); + }); +} + +#[test] +fn on_free_balance_zero_stash_removes_validator() { + // Tests that validator storage items are cleaned up when stash is empty + // Tests that storage items are untouched when controller is empty + ExtBuilder::default().existential_deposit(10).build().execute_with(|| { + // Check the balance of the validator account + assert_eq!(Balances::free_balance(&10), 256); + // Check the balance of the stash account + assert_eq!(Balances::free_balance(&11), 256000); + // Check these two accounts are bonded + assert_eq!(Staking::bonded(&11), Some(10)); + + // Set some storage items which we expect to be cleaned up + // Set payee information + assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Stash)); + + // Check storage items that should be cleaned up + assert!(>::exists(&10)); + assert!(>::exists(&11)); + assert!(>::exists(&11)); + assert!(>::exists(&11)); + + // Reduce free_balance of controller to 0 + let _ = Balances::slash(&10, u64::max_value()); + + // Check the balance of the stash account has not been touched + assert_eq!(Balances::free_balance(&11), 256000); + // Check these two accounts are still bonded + assert_eq!(Staking::bonded(&11), Some(10)); + + // Check storage items have not changed + assert!(>::exists(&10)); + assert!(>::exists(&11)); + assert!(>::exists(&11)); + assert!(>::exists(&11)); + + // Reduce free_balance of stash to 0 + let _ = Balances::slash(&11, u64::max_value()); + // Check total balance of stash + assert_eq!(Balances::total_balance(&11), 0); + + // Check storage items do not exist + assert!(!>::exists(&10)); + assert!(!>::exists(&11)); + assert!(!>::exists(&11)); + assert!(!>::exists(&11)); + assert!(!>::exists(&11)); + }); +} + +#[test] +fn on_free_balance_zero_stash_removes_nominator() { + // Tests that nominator storage items are cleaned up when stash is empty + // Tests that storage items are untouched when controller is empty + ExtBuilder::default().existential_deposit(10).build().execute_with(|| { + // Make 10 a nominator + assert_ok!(Staking::nominate(Origin::signed(10), vec![20])); + // Check that account 10 is a nominator + assert!(>::exists(11)); + // Check the balance of the nominator account + assert_eq!(Balances::free_balance(&10), 256); + // Check the balance of the stash account + assert_eq!(Balances::free_balance(&11), 256000); + + // Set payee information + assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Stash)); + + // Check storage items that should be cleaned up + assert!(>::exists(&10)); + assert!(>::exists(&11)); + assert!(>::exists(&11)); + assert!(>::exists(&11)); + + // Reduce free_balance of controller to 0 + let _ = Balances::slash(&10, u64::max_value()); + // Check total balance of account 10 + assert_eq!(Balances::total_balance(&10), 0); + + // Check the balance of the stash account has not been touched + assert_eq!(Balances::free_balance(&11), 256000); + // Check these two accounts are still bonded + assert_eq!(Staking::bonded(&11), Some(10)); + + // Check storage items have not changed + assert!(>::exists(&10)); + assert!(>::exists(&11)); + assert!(>::exists(&11)); + assert!(>::exists(&11)); + + // Reduce free_balance of stash to 0 + let _ = Balances::slash(&11, u64::max_value()); + // Check total balance of stash + assert_eq!(Balances::total_balance(&11), 0); + + // Check storage items do not exist + assert!(!>::exists(&10)); + assert!(!>::exists(&11)); + assert!(!>::exists(&11)); + assert!(!>::exists(&11)); + assert!(!>::exists(&11)); + }); +} + + +#[test] +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)); } + + assert_eq_uvec!(validator_controllers(), vec![20, 10]); + + // put some money in account that we'll use. + for i in 1..7 { let _ = Balances::deposit_creating(&i, 5000); } + + // add 2 nominators + assert_ok!(Staking::bond(Origin::signed(1), 2, 2000, RewardDestination::Controller)); + assert_ok!(Staking::nominate(Origin::signed(2), vec![11, 5])); + + assert_ok!(Staking::bond(Origin::signed(3), 4, 500, RewardDestination::Controller)); + assert_ok!(Staking::nominate(Origin::signed(4), vec![21, 1])); + + // add a new validator candidate + 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); + + // with current nominators 10 and 5 have the most stake + assert_eq_uvec!(validator_controllers(), vec![6, 10]); + + // 2 decides to be a validator. Consequences: + assert_ok!(Staking::validate(Origin::signed(2), ValidatorPrefs::default())); + // new stakes: + // 10: 1000 self vote + // 20: 1000 self vote + 250 vote + // 6 : 1000 self vote + // 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]); + + // ne era + start_session(6); + assert_eq_uvec!(validator_controllers(), vec![2, 20]); + + check_exposure_all(); + check_nominator_all(); + }); +} + +#[test] +fn wrong_vote_is_null() { + ExtBuilder::default().nominate(false).validator_pool(true).build().execute_with(|| { + assert_eq_uvec!(validator_controllers(), vec![40, 30]); + + // put some money in account that we'll use. + for i in 1..3 { let _ = Balances::deposit_creating(&i, 5000); } + + // add 1 nominators + assert_ok!(Staking::bond(Origin::signed(1), 2, 2000, RewardDestination::default())); + assert_ok!(Staking::nominate(Origin::signed(2), vec![ + 11, 21, // good votes + 1, 2, 15, 1000, 25 // crap votes. No effect. + ])); + + // new block + start_era(1); + + assert_eq_uvec!(validator_controllers(), vec![20, 10]); + }); +} + +#[test] +fn bond_with_no_staked_value() { + // Behavior when someone bonds with no staked value. + // Particularly when she votes and the candidate is elected. + ExtBuilder::default() + .validator_count(3) + .existential_deposit(5) + .nominate(false) + .minimum_validator_count(1) + .build() + .execute_with(|| { + // Can't bond with 1 + assert_noop!( + Staking::bond(Origin::signed(1), 2, 1, RewardDestination::Controller), + Error::::InsufficientValue, + ); + // bonded with absolute minimum value possible. + assert_ok!(Staking::bond(Origin::signed(1), 2, 5, RewardDestination::Controller)); + assert_eq!(Balances::locks(&1)[0].amount, 5); + + // unbonding even 1 will cause all to be unbonded. + assert_ok!(Staking::unbond(Origin::signed(2), 1)); + assert_eq!( + Staking::ledger(2), + Some(StakingLedger { + stash: 1, + active: 0, + total: 5, + unlocking: vec![UnlockChunk {value: 5, era: 3}] + }) + ); + + start_era(1); + start_era(2); + + // not yet removed. + assert_ok!(Staking::withdraw_unbonded(Origin::signed(2))); + assert!(Staking::ledger(2).is_some()); + assert_eq!(Balances::locks(&1)[0].amount, 5); + + start_era(3); + + // poof. Account 1 is removed from the staking system. + assert_ok!(Staking::withdraw_unbonded(Origin::signed(2))); + assert!(Staking::ledger(2).is_none()); + assert_eq!(Balances::locks(&1).len(), 0); + }); +} + +#[test] +fn bond_with_little_staked_value_bounded_by_slot_stake() { + // Behavior when someone bonds with little staked value. + // Particularly when she votes and the candidate is elected. + ExtBuilder::default() + .validator_count(3) + .nominate(false) + .minimum_validator_count(1) + .build() + .execute_with(|| { + // setup + assert_ok!(Staking::chill(Origin::signed(30))); + assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); + let init_balance_2 = Balances::free_balance(&2); + let init_balance_10 = Balances::free_balance(&10); + + // Stingy validator. + assert_ok!(Staking::bond(Origin::signed(1), 2, 1, RewardDestination::Controller)); + assert_ok!(Staking::validate(Origin::signed(2), ValidatorPrefs::default())); + + let total_payout_0 = current_total_payout_for_duration(3000); + assert!(total_payout_0 > 100); // Test is meaningfull if reward something + reward_all_elected(); + start_era(1); + + // 2 is elected. + // and fucks up the slot stake. + assert_eq_uvec!(validator_controllers(), vec![20, 10, 2]); + assert_eq!(Staking::slot_stake(), 1); + + // 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); + + let total_payout_1 = current_total_payout_for_duration(3000); + assert!(total_payout_1 > 100); // Test is meaningfull if reward something + reward_all_elected(); + start_era(2); + + assert_eq_uvec!(validator_controllers(), vec![20, 10, 2]); + assert_eq!(Staking::slot_stake(), 1); + + 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(); + }); +} + +#[cfg(feature = "equalize")] +#[test] +fn phragmen_linear_worse_case_equalize() { + ExtBuilder::default() + .nominate(false) + .validator_pool(true) + .fair(true) + .build() + .execute_with(|| { + bond_validator(50, 1000); + bond_validator(60, 1000); + bond_validator(70, 1000); + + bond_nominator(2, 2000, vec![11]); + bond_nominator(4, 1000, vec![11, 21]); + bond_nominator(6, 1000, vec![21, 31]); + bond_nominator(8, 1000, vec![31, 41]); + bond_nominator(110, 1000, vec![41, 51]); + bond_nominator(120, 1000, vec![51, 61]); + bond_nominator(130, 1000, vec![61, 71]); + + for i in &[10, 20, 30, 40, 50, 60, 70] { + assert_ok!(Staking::set_payee(Origin::signed(*i), RewardDestination::Controller)); + } + + assert_eq_uvec!(validator_controllers(), vec![40, 30]); + assert_ok!(Staking::set_validator_count(Origin::ROOT, 7)); + + start_era(1); + + assert_eq_uvec!(validator_controllers(), vec![10, 60, 40, 20, 50, 30, 70]); + + assert_eq_error_rate!(Staking::stakers(11).total, 3000, 2); + assert_eq_error_rate!(Staking::stakers(21).total, 2255, 2); + assert_eq_error_rate!(Staking::stakers(31).total, 2255, 2); + assert_eq_error_rate!(Staking::stakers(41).total, 1925, 2); + assert_eq_error_rate!(Staking::stakers(51).total, 1870, 2); + assert_eq_error_rate!(Staking::stakers(61).total, 1890, 2); + assert_eq_error_rate!(Staking::stakers(71).total, 1800, 2); + + check_exposure_all(); + check_nominator_all(); + }) +} + +#[test] +fn new_era_elects_correct_number_of_validators() { + ExtBuilder::default() + .nominate(true) + .validator_pool(true) + .fair(true) + .validator_count(1) + .build() + .execute_with(|| { + assert_eq!(Staking::validator_count(), 1); + assert_eq!(validator_controllers().len(), 1); + + System::set_block_number(1); + Session::on_initialize(System::block_number()); + + assert_eq!(validator_controllers().len(), 1); + check_exposure_all(); + check_nominator_all(); + }) +} + +#[test] +fn phragmen_should_not_overflow_validators() { + ExtBuilder::default().nominate(false).build().execute_with(|| { + let _ = Staking::chill(Origin::signed(10)); + let _ = Staking::chill(Origin::signed(20)); + + bond_validator(2, u64::max_value()); + bond_validator(4, u64::max_value()); + + bond_nominator(6, u64::max_value() / 2, vec![3, 5]); + bond_nominator(8, u64::max_value() / 2, vec![3, 5]); + + start_era(1); + + assert_eq_uvec!(validator_controllers(), vec![4, 2]); + + // 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()); + }) +} + +#[test] +fn phragmen_should_not_overflow_nominators() { + ExtBuilder::default().nominate(false).build().execute_with(|| { + let _ = Staking::chill(Origin::signed(10)); + let _ = Staking::chill(Origin::signed(20)); + + bond_validator(2, u64::max_value() / 2); + bond_validator(4, u64::max_value() / 2); + + bond_nominator(6, u64::max_value(), vec![3, 5]); + bond_nominator(8, u64::max_value(), vec![3, 5]); + + start_era(1); + + 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()); + }) +} + +#[test] +fn phragmen_should_not_overflow_ultimate() { + ExtBuilder::default().nominate(false).build().execute_with(|| { + bond_validator(2, u64::max_value()); + bond_validator(4, u64::max_value()); + + bond_nominator(6, u64::max_value(), vec![3, 5]); + bond_nominator(8, u64::max_value(), vec![3, 5]); + + start_era(1); + + 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()); + }) +} + +#[test] +fn reward_validator_slashing_validator_doesnt_overflow() { + ExtBuilder::default().build().execute_with(|| { + let stake = u32::max_value() as u64 * 2; + let reward_slash = u32::max_value() as u64 * 2; + + // Assert multiplication overflows in balance arithmetic. + assert!(stake.checked_mul(reward_slash).is_none()); + + // Set staker + let _ = Balances::make_free_balance_be(&11, stake); + >::insert(&11, Exposure { total: stake, own: stake, others: vec![] }); + + // Check reward + let _ = Staking::reward_validator(&11, reward_slash); + assert_eq!(Balances::total_balance(&11), stake * 2); + + // Set staker + let _ = Balances::make_free_balance_be(&11, stake); + let _ = Balances::make_free_balance_be(&2, stake); + + // 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 } + ]}); + + + // Check slashing + on_offence_now( + &[ + OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(100)], + ); + + assert_eq!(Balances::total_balance(&11), stake - 1); + assert_eq!(Balances::total_balance(&2), 1); + }) +} + +#[test] +fn reward_from_authorship_event_handler_works() { + ExtBuilder::default().build().execute_with(|| { + use pallet_authorship::EventHandler; + + assert_eq!(>::author(), 11); + + >::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]); + + // 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); + }) +} + +#[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]); + + >::reward_by_indices(vec![ + (0, 1), + (1, 1), + (2, 1), + (1, 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); + }) +} + +#[test] +fn unbonded_balance_is_not_slashable() { + ExtBuilder::default().build().execute_with(|| { + // total amount staked is slashable. + assert_eq!(Staking::slashable_balance_of(&11), 1000); + + assert_ok!(Staking::unbond(Origin::signed(10), 800)); + + // only the active portion. + assert_eq!(Staking::slashable_balance_of(&11), 200); + }) +} + +#[test] +fn era_is_always_same_length() { + // This ensures that the sessions is always of the same length if there is no forcing no + // session changes. + ExtBuilder::default().build().execute_with(|| { + start_era(1); + assert_eq!(Staking::current_era_start_session_index(), SessionsPerEra::get()); + + start_era(2); + assert_eq!(Staking::current_era_start_session_index(), 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); + + start_era(4); + assert_eq!(Staking::current_era_start_session_index(), session + SessionsPerEra::get() + 1); + }); +} + +#[test] +fn offence_forces_new_era() { + ExtBuilder::default().build().execute_with(|| { + on_offence_now( + &[OffenceDetails { + offender: ( + 11, + Staking::stakers(&11), + ), + reporters: vec![], + }], + &[Perbill::from_percent(5)], + ); + + assert_eq!(Staking::force_era(), Forcing::ForceNew); + }); +} + +#[test] +fn offence_ensures_new_era_without_clobbering() { + ExtBuilder::default().build().execute_with(|| { + assert_ok!(Staking::force_new_era_always(Origin::ROOT)); + + on_offence_now( + &[OffenceDetails { + offender: ( + 11, + Staking::stakers(&11), + ), + reporters: vec![], + }], + &[Perbill::from_percent(5)], + ); + + assert_eq!(Staking::force_era(), Forcing::ForceAlways); + }); +} + +#[test] +fn offence_deselects_validator_when_slash_is_zero() { + ExtBuilder::default().build().execute_with(|| { + assert!(>::exists(11)); + on_offence_now( + &[OffenceDetails { + offender: ( + 11, + Staking::stakers(&11), + ), + reporters: vec![], + }], + &[Perbill::from_percent(0)], + ); + assert_eq!(Staking::force_era(), Forcing::ForceNew); + assert!(!>::exists(11)); + }); +} + +#[test] +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); + + // Handle an offence with a historical exposure. + on_offence_now( + &[OffenceDetails { + offender: ( + 11, + Exposure { + total: 500, + own: 500, + others: vec![], + }, + ), + reporters: vec![], + }], + &[Perbill::from_percent(50)], + ); + + // The stash account should be slashed for 250 (50% of 500). + assert_eq!(Balances::free_balance(&11), 1000 - 250); + }); +} + +#[test] +fn slash_in_old_span_does_not_deselect() { + ExtBuilder::default().build().execute_with(|| { + start_era(1); + + assert!(>::exists(11)); + on_offence_now( + &[OffenceDetails { + offender: ( + 11, + Staking::stakers(&11), + ), + reporters: vec![], + }], + &[Perbill::from_percent(0)], + ); + assert_eq!(Staking::force_era(), Forcing::ForceNew); + assert!(!>::exists(11)); + + start_era(2); + + Staking::validate(Origin::signed(10), Default::default()).unwrap(); + assert_eq!(Staking::force_era(), Forcing::NotForcing); + assert!(>::exists(11)); + + start_era(3); + + // this staker is in a new slashing span now, having re-registered after + // their prior slash. + + on_offence_in_era( + &[OffenceDetails { + offender: ( + 11, + Staking::stakers(&11), + ), + reporters: vec![], + }], + &[Perbill::from_percent(0)], + 1, + ); + + // not for zero-slash. + assert_eq!(Staking::force_era(), Forcing::NotForcing); + assert!(>::exists(11)); + + on_offence_in_era( + &[OffenceDetails { + offender: ( + 11, + Staking::stakers(&11), + ), + reporters: vec![], + }], + &[Perbill::from_percent(100)], + 1, + ); + + // or non-zero. + assert_eq!(Staking::force_era(), Forcing::NotForcing); + assert!(>::exists(11)); + assert_ledger_consistent(11); + }); +} + +#[test] +fn reporters_receive_their_slice() { + // This test verifies that the reporters of the offence receive their slice from the slashed + // amount. + ExtBuilder::default().build().execute_with(|| { + // The reporters' reward is calculated from the total exposure. + #[cfg(feature = "equalize")] + let initial_balance = 1250; + #[cfg(not(feature = "equalize"))] + let initial_balance = 1125; + + assert_eq!(Staking::stakers(&11).total, initial_balance); + + on_offence_now( + &[OffenceDetails { + offender: ( + 11, + Staking::stakers(&11), + ), + reporters: vec![1, 2], + }], + &[Perbill::from_percent(50)], + ); + + // F1 * (reward_proportion * slash - 0) + // 50% * (10% * initial_balance / 2) + let reward = (initial_balance / 20) / 2; + let reward_each = reward / 2; // split into two pieces. + assert_eq!(Balances::free_balance(&1), 10 + reward_each); + assert_eq!(Balances::free_balance(&2), 20 + reward_each); + assert_ledger_consistent(11); + }); +} + +#[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. + ExtBuilder::default().build().execute_with(|| { + // The reporters' reward is calculated from the total exposure. + #[cfg(feature = "equalize")] + let initial_balance = 1250; + #[cfg(not(feature = "equalize"))] + let initial_balance = 1125; + + assert_eq!(Staking::stakers(&11).total, initial_balance); + + on_offence_now( + &[OffenceDetails { + offender: ( + 11, + Staking::stakers(&11), + ), + reporters: vec![1], + }], + &[Perbill::from_percent(20)], + ); + + // F1 * (reward_proportion * slash - 0) + // 50% * (10% * initial_balance * 20%) + let reward = (initial_balance / 5) / 20; + assert_eq!(Balances::free_balance(&1), 10 + reward); + + on_offence_now( + &[OffenceDetails { + offender: ( + 11, + Staking::stakers(&11), + ), + reporters: vec![1], + }], + &[Perbill::from_percent(50)], + ); + + let prior_payout = reward; + + // F1 * (reward_proportion * slash - prior_payout) + // 50% * (10% * (initial_balance / 2) - prior_payout) + let reward = ((initial_balance / 20) - prior_payout) / 2; + assert_eq!(Balances::free_balance(&1), 10 + prior_payout + reward); + assert_ledger_consistent(11); + }); +} + +#[test] +fn invulnerables_are_not_slashed() { + // For invulnerable validators no slashing is performed. + ExtBuilder::default().invulnerables(vec![11]).build().execute_with(|| { + assert_eq!(Balances::free_balance(&11), 1000); + assert_eq!(Balances::free_balance(&21), 2000); + + let exposure = Staking::stakers(&21); + let initial_balance = Staking::slashable_balance_of(&21); + + let nominator_balances: Vec<_> = exposure.others + .iter().map(|o| Balances::free_balance(&o.who)).collect(); + + on_offence_now( + &[ + OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }, + OffenceDetails { + offender: (21, Staking::stakers(&21)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(50), Perbill::from_percent(20)], + ); + + // The validator 11 hasn't been slashed, but 21 has been. + assert_eq!(Balances::free_balance(&11), 1000); + // 2000 - (0.2 * initial_balance) + assert_eq!(Balances::free_balance(&21), 2000 - (2 * initial_balance / 10)); + + // ensure that nominators were slashed as well. + for (initial_balance, other) in nominator_balances.into_iter().zip(exposure.others) { + assert_eq!( + Balances::free_balance(&other.who), + initial_balance - (2 * other.value / 10), + ); + } + assert_ledger_consistent(11); + assert_ledger_consistent(21); + }); +} + +#[test] +fn dont_slash_if_fraction_is_zero() { + // Don't slash if the fraction is zero. + ExtBuilder::default().build().execute_with(|| { + assert_eq!(Balances::free_balance(&11), 1000); + + on_offence_now( + &[OffenceDetails { + offender: ( + 11, + Staking::stakers(&11), + ), + reporters: vec![], + }], + &[Perbill::from_percent(0)], + ); + + // The validator hasn't been slashed. The new era is not forced. + assert_eq!(Balances::free_balance(&11), 1000); + assert_ledger_consistent(11); + }); +} + +#[test] +fn only_slash_for_max_in_era() { + ExtBuilder::default().build().execute_with(|| { + assert_eq!(Balances::free_balance(&11), 1000); + + on_offence_now( + &[ + OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(50)], + ); + + // The validator has been slashed and has been force-chilled. + assert_eq!(Balances::free_balance(&11), 500); + assert_eq!(Staking::force_era(), Forcing::ForceNew); + + on_offence_now( + &[ + OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(25)], + ); + + // The validator has not been slashed additionally. + assert_eq!(Balances::free_balance(&11), 500); + + on_offence_now( + &[ + OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(60)], + ); + + // The validator got slashed 10% more. + assert_eq!(Balances::free_balance(&11), 400); + assert_ledger_consistent(11); + }) +} + +#[test] +fn garbage_collection_after_slashing() { + ExtBuilder::default().existential_deposit(1).build().execute_with(|| { + assert_eq!(Balances::free_balance(&11), 256_000); + + on_offence_now( + &[ + OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(10)], + ); + + assert_eq!(Balances::free_balance(&11), 256_000 - 25_600); + assert!(::SlashingSpans::get(&11).is_some()); + assert_eq!(::SpanSlash::get(&(11, 0)).amount_slashed(), &25_600); + + on_offence_now( + &[ + OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(100)], + ); + + // validator and nominator slash in era are garbage-collected by era change, + // so we don't test those here. + + assert_eq!(Balances::free_balance(&11), 0); + assert!(::SlashingSpans::get(&11).is_none()); + assert_eq!(::SpanSlash::get(&(11, 0)).amount_slashed(), &0); + }) +} + +#[test] +fn garbage_collection_on_window_pruning() { + ExtBuilder::default().build().execute_with(|| { + start_era(1); + + 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; + + on_offence_now( + &[ + OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(10)], + ); + + let now = Staking::current_era(); + + assert_eq!(Balances::free_balance(&11), 900); + assert_eq!(Balances::free_balance(&101), 2000 - (nominated_value / 10)); + + assert!(::ValidatorSlashInEra::get(&now, &11).is_some()); + assert!(::NominatorSlashInEra::get(&now, &101).is_some()); + + // + 1 because we have to exit the bonding window. + for era in (0..(BondingDuration::get() + 1)).map(|offset| offset + now + 1) { + assert!(::ValidatorSlashInEra::get(&now, &11).is_some()); + assert!(::NominatorSlashInEra::get(&now, &101).is_some()); + + start_era(era); + } + + assert!(::ValidatorSlashInEra::get(&now, &11).is_none()); + assert!(::NominatorSlashInEra::get(&now, &101).is_none()); + }) +} + +#[test] +fn slashing_nominators_by_span_max() { + ExtBuilder::default().build().execute_with(|| { + start_era(1); + start_era(2); + start_era(3); + + assert_eq!(Balances::free_balance(&11), 1000); + assert_eq!(Balances::free_balance(&21), 2000); + assert_eq!(Balances::free_balance(&101), 2000); + assert_eq!(Staking::slashable_balance_of(&21), 1000); + + + let exposure_11 = Staking::stakers(&11); + let exposure_21 = Staking::stakers(&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; + + on_offence_in_era( + &[ + OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(10)], + 2, + ); + + assert_eq!(Balances::free_balance(&11), 900); + + let slash_1_amount = Perbill::from_percent(10) * nominated_value_11; + assert_eq!(Balances::free_balance(&101), 2000 - slash_1_amount); + + let expected_spans = vec![ + slashing::SlashingSpan { index: 1, start: 4, length: None }, + slashing::SlashingSpan { index: 0, start: 0, length: Some(4) }, + ]; + + let get_span = |account| ::SlashingSpans::get(&account).unwrap(); + + assert_eq!( + get_span(11).iter().collect::>(), + expected_spans, + ); + + assert_eq!( + get_span(101).iter().collect::>(), + expected_spans, + ); + + // second slash: higher era, higher value, same span. + on_offence_in_era( + &[ + OffenceDetails { + offender: (21, Staking::stakers(&21)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(30)], + 3, + ); + + // 11 was not further slashed, but 21 and 101 were. + assert_eq!(Balances::free_balance(&11), 900); + assert_eq!(Balances::free_balance(&21), 1700); + + let slash_2_amount = Perbill::from_percent(30) * nominated_value_21; + assert!(slash_2_amount > slash_1_amount); + + // only the maximum slash in a single span is taken. + assert_eq!(Balances::free_balance(&101), 2000 - slash_2_amount); + + // third slash: in same era and on same validator as first, higher + // in-era value, but lower slash value than slash 2. + on_offence_in_era( + &[ + OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(20)], + 2, + ); + + // 11 was further slashed, but 21 and 101 were not. + assert_eq!(Balances::free_balance(&11), 800); + assert_eq!(Balances::free_balance(&21), 1700); + + let slash_3_amount = Perbill::from_percent(20) * nominated_value_21; + assert!(slash_3_amount < slash_2_amount); + assert!(slash_3_amount > slash_1_amount); + + // only the maximum slash in a single span is taken. + assert_eq!(Balances::free_balance(&101), 2000 - slash_2_amount); + }); +} + +#[test] +fn slashes_are_summed_across_spans() { + ExtBuilder::default().build().execute_with(|| { + start_era(1); + start_era(2); + start_era(3); + + assert_eq!(Balances::free_balance(&21), 2000); + assert_eq!(Staking::slashable_balance_of(&21), 1000); + + let get_span = |account| ::SlashingSpans::get(&account).unwrap(); + + on_offence_now( + &[ + OffenceDetails { + offender: (21, Staking::stakers(&21)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(10)], + ); + + let expected_spans = vec![ + slashing::SlashingSpan { index: 1, start: 4, length: None }, + slashing::SlashingSpan { index: 0, start: 0, length: Some(4) }, + ]; + + assert_eq!(get_span(21).iter().collect::>(), expected_spans); + assert_eq!(Balances::free_balance(&21), 1900); + + // 21 has been force-chilled. re-signal intent to validate. + Staking::validate(Origin::signed(20), Default::default()).unwrap(); + + start_era(4); + + assert_eq!(Staking::slashable_balance_of(&21), 900); + + on_offence_now( + &[ + OffenceDetails { + offender: (21, Staking::stakers(&21)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(10)], + ); + + let expected_spans = vec![ + slashing::SlashingSpan { index: 2, start: 5, length: None }, + slashing::SlashingSpan { index: 1, start: 4, length: Some(1) }, + slashing::SlashingSpan { index: 0, start: 0, length: Some(4) }, + ]; + + assert_eq!(get_span(21).iter().collect::>(), expected_spans); + assert_eq!(Balances::free_balance(&21), 1810); + }); +} + +#[test] +fn deferred_slashes_are_deferred() { + ExtBuilder::default().slash_defer_duration(2).build().execute_with(|| { + start_era(1); + + 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; + + on_offence_now( + &[ + OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }, + ], + &[Perbill::from_percent(10)], + ); + + assert_eq!(Balances::free_balance(&11), 1000); + assert_eq!(Balances::free_balance(&101), 2000); + + start_era(2); + + assert_eq!(Balances::free_balance(&11), 1000); + assert_eq!(Balances::free_balance(&101), 2000); + + start_era(3); + + assert_eq!(Balances::free_balance(&11), 1000); + assert_eq!(Balances::free_balance(&101), 2000); + + // at the start of era 4, slashes from era 1 are processed, + // after being deferred for at least 2 full eras. + start_era(4); + + assert_eq!(Balances::free_balance(&11), 900); + assert_eq!(Balances::free_balance(&101), 2000 - (nominated_value / 10)); + }) +} + +#[test] +fn remove_deferred() { + ExtBuilder::default().slash_defer_duration(2).build().execute_with(|| { + start_era(1); + + 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; + + on_offence_now( + &[ + OffenceDetails { + offender: (11, exposure.clone()), + reporters: vec![], + }, + ], + &[Perbill::from_percent(10)], + ); + + assert_eq!(Balances::free_balance(&11), 1000); + assert_eq!(Balances::free_balance(&101), 2000); + + start_era(2); + + on_offence_in_era( + &[ + OffenceDetails { + offender: (11, exposure.clone()), + reporters: vec![], + }, + ], + &[Perbill::from_percent(15)], + 1, + ); + + Staking::cancel_deferred_slash(Origin::ROOT, 1, vec![0]).unwrap(); + + assert_eq!(Balances::free_balance(&11), 1000); + assert_eq!(Balances::free_balance(&101), 2000); + + start_era(3); + + assert_eq!(Balances::free_balance(&11), 1000); + assert_eq!(Balances::free_balance(&101), 2000); + + // at the start of era 4, slashes from era 1 are processed, + // after being deferred for at least 2 full eras. + start_era(4); + + // the first slash for 10% was cancelled, so no effect. + assert_eq!(Balances::free_balance(&11), 1000); + assert_eq!(Balances::free_balance(&101), 2000); + + start_era(5); + + let slash_10 = Perbill::from_percent(10); + let slash_15 = Perbill::from_percent(15); + let initial_slash = slash_10 * nominated_value; + + let total_slash = slash_15 * nominated_value; + let actual_slash = total_slash - initial_slash; + + // 5% slash (15 - 10) processed now. + assert_eq!(Balances::free_balance(&11), 950); + assert_eq!(Balances::free_balance(&101), 2000 - actual_slash); + }) +} + +#[test] +fn remove_multi_deferred() { + ExtBuilder::default().slash_defer_duration(2).build().execute_with(|| { + start_era(1); + + assert_eq!(Balances::free_balance(&11), 1000); + + let exposure = Staking::stakers(&11); + assert_eq!(Balances::free_balance(&101), 2000); + + on_offence_now( + &[ + OffenceDetails { + offender: (11, exposure.clone()), + reporters: vec![], + }, + ], + &[Perbill::from_percent(10)], + ); + + on_offence_now( + &[ + OffenceDetails { + offender: (21, Staking::stakers(&21)), + reporters: vec![], + } + ], + &[Perbill::from_percent(10)], + ); + + + on_offence_now( + &[ + OffenceDetails { + offender: (11, exposure.clone()), + reporters: vec![], + }, + ], + &[Perbill::from_percent(25)], + ); + + assert_eq!(::UnappliedSlashes::get(&1).len(), 3); + Staking::cancel_deferred_slash(Origin::ROOT, 1, vec![0, 2]).unwrap(); + + let slashes = ::UnappliedSlashes::get(&1); + assert_eq!(slashes.len(), 1); + assert_eq!(slashes[0].validator, 21); + }) +} + +#[test] +fn version_initialized() { + ExtBuilder::default().build().execute_with(|| { + assert_eq!(::StorageVersion::get(), crate::migration::CURRENT_VERSION); + }); +} diff --git a/frame/support/Cargo.toml b/frame/support/Cargo.toml new file mode 100644 index 000000000..1f9395b62 --- /dev/null +++ b/frame/support/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "darwinia-support" +version = "0.2.0" +authors = ["darwinia "] +edition = "2018" + +[dependencies] +# crates.io +codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } + +# github.com +frame-support = { git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402", default-features = false } +sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402", default-features = false } + +[features] +default = ["std"] +std = [ + "codec/std", + + "frame-support/std", + "sp-runtime/std", + "sp-std/std", +] \ No newline at end of file diff --git a/srml/support/src/lib.rs b/frame/support/src/lib.rs similarity index 94% rename from srml/support/src/lib.rs rename to frame/support/src/lib.rs index db0ce58c4..f047b45a4 100644 --- a/srml/support/src/lib.rs +++ b/frame/support/src/lib.rs @@ -1,15 +1,15 @@ #![recursion_limit = "128"] #![cfg_attr(not(feature = "std"), no_std)] -pub use srml_support::traits::{LockIdentifier, WithdrawReason, WithdrawReasons}; +pub use frame_support::traits::{LockIdentifier, WithdrawReason, WithdrawReasons}; pub use structs::*; pub use traits::*; mod structs { use codec::{Decode, Encode}; - use rstd::vec::Vec; - use sr_primitives::{traits::SimpleArithmetic, RuntimeDebug}; + use sp_runtime::{traits::SimpleArithmetic, RuntimeDebug}; + use sp_std::vec::Vec; use crate::{LockIdentifier, WithdrawReasons}; @@ -94,8 +94,8 @@ mod structs { } mod traits { - use rstd::result; - use srml_support::traits::Currency; + use frame_support::traits::Currency; + use sp_std::result; use crate::{LockIdentifier, WithdrawLock, WithdrawReasons}; diff --git a/node/cli/Cargo.toml b/node/cli/Cargo.toml deleted file mode 100644 index 6cb237182..000000000 --- a/node/cli/Cargo.toml +++ /dev/null @@ -1,137 +0,0 @@ -[package] -name = "node-cli" -version = "0.4.6" -authors = ["Darwinia Network "] -description = "Darwinia node implementation in Rust." -build = "build.rs" -edition = "2018" -default-run = "darwinia" - -[[bin]] -name = "darwinia" -path = "bin/main.rs" -required-features = ["cli"] - -[lib] -crate-type = ["cdylib", "rlib"] - -[dependencies] -# third-party dependencies -codec = { package = "parity-scale-codec", version = "1.0.6" } -serde = { version = "1.0.102", features = [ "derive" ] } -futures = "0.1.29" -hex-literal = "0.2.1" -jsonrpc-core = "14.0.3" -log = "0.4.8" -rand = "0.7.2" -structopt = "0.3.3" - -# primitives -primitives = { package = "substrate-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -sr-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -babe-primitives = { package = "substrate-consensus-babe-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -grandpa_primitives = { package = "substrate-finality-grandpa-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -# core dependencies -runtime-io = { package = "sr-io", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -client = { package = "substrate-client", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -inherents = { package = "substrate-inherents", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -chain-spec = { package = "substrate-chain-spec", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -transaction_pool = { package = "substrate-transaction-pool", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -network = { package = "substrate-network", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -babe = { package = "substrate-consensus-babe", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -grandpa = { package = "substrate-finality-grandpa", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -keyring = { package = "substrate-keyring", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -client_db = { package = "substrate-client-db", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -offchain = { package = "substrate-offchain", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -substrate-rpc = { package = "substrate-rpc", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -substrate-basic-authorship = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -substrate-service = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -substrate-telemetry = { package = "substrate-telemetry", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -# srml dependencies -indices = { package = "srml-indices", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -timestamp = { package = "srml-timestamp", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -finality_tracker = { package = "srml-finality-tracker", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -contracts = { package = "srml-contracts", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -system = { package = "srml-system", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -transaction-payment = { package = "srml-transaction-payment", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -support = { package = "srml-support", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -balances = { package = "darwinia-balances", path = "../../srml/balances" } -im-online = { package = "srml-im-online", path = "../../srml/im-online" } - -# node-specific dependencies -node-runtime = { path = "../runtime" } -node-rpc = { path = "../rpc" } -node-primitives = { path = "../primitives" } -node-executor = { path = "../executor" } - -# CLI-specific dependencies -ctrlc = { version = "3.1.3", features = ["termination"], optional = true } -exit-future = { version = "0.1.4", optional = true } -tokio = { version = "0.1.22", optional = true } - -transaction-factory = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", optional = true } - -darwinia-cli = { path = "../../core/cli" } - -# WASM-specific dependencies -clear_on_drop = { version = "0.2.3", features = ["no_cc"], optional = true } # Imported just for the `no_cc` feature -console_error_panic_hook = { version = "0.1.1", optional = true } -console_log = { version = "0.1.2", optional = true } -js-sys = { version = "0.3.22", optional = true } -wasm-bindgen = { version = "0.2.45", optional = true } -wasm-bindgen-futures = { version = "0.3.22", optional = true } -libp2p = { version = "0.13.0", default-features = false, optional = true } -rand6 = { package = "rand", version = "0.6", features = ["wasm-bindgen"], optional = true } # Imported just for the `wasm-bindgen` feature - -kvdb-memorydb = { git = "https://github.com/paritytech/parity-common", rev = "b0317f649ab2c665b7987b8475878fc4d2e1f81d", optional = true } - -[dev-dependencies] -tempfile = "3.1.0" -futures03 = { package = "futures-preview", version = "0.3.0-alpha.19" } - -keystore = { package = "substrate-keystore", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -babe = { package = "substrate-consensus-babe", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", features = ["test-helpers"] } -consensus-common = { package = "substrate-consensus-common", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -service-test = { package = "substrate-service-test", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -[build-dependencies] -structopt = "0.3.3" -vergen = "3.0.4" - -build-script-utils = { package = "substrate-build-script-utils", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -darwinia-cli = { path = "../../core/cli", optional = true } - -[features] -default = ["cli"] -browser = [ - "clear_on_drop", - "console_error_panic_hook", - "console_log", - "js-sys", - "libp2p", - "wasm-bindgen", - "wasm-bindgen-futures", - "kvdb-memorydb", - "rand/wasm-bindgen", - "rand6" -] -cli = [ - "transaction-factory", - "tokio", - "exit-future", - "ctrlc", - "substrate-service/rocksdb", - - "darwinia-cli" -] -wasmtime = [ - "cli", - "node-executor/wasmtime", - "substrate-service/wasmtime", - - "darwinia-cli/wasmtime" -] diff --git a/node/cli/res/icefrog.json b/node/cli/res/icefrog.json deleted file mode 100644 index ed2151019..000000000 --- a/node/cli/res/icefrog.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "name": "Darwinia IceFrog Testnet", - "id": "icefrog_testnet", - "bootNodes": [ - "/ip4/127.0.0.1/tcp/30333/p2p/QmW39B8n9GBiijuZzEpcLEBFqsQk1a4hb8XKt4Qc3h8J95" - ], - "telemetryEndpoints": [ - [ - "wss://telemetry.polkadot.io/submit/", - 0 - ] - ], - "protocolId": "DAR", - "properties": { - "ktonTokenDecimals": 9, - "ktonTokenSymbol": "IKTON", - "ss58Format": 42, - "tokenDecimals": 9, - "tokenSymbol": "IRING" - }, - "fork_blocks": null, - "consensusEngine": null, - "genesis": { - "runtime": { - "system": { - "changesTrieConfig": null, - "code": "0x0061736d0100000001fe023660047f7f7f7f0060027f7f0060017f0060037f7f7f017f60027f7f017f60037f7f7f0060057f7f7f7f7f0060017f017e60017e017f60017e017e60027e7e0060017e0060047f7f7f7f017f60027e7e017e60037e7e7e0060047f7e7e7f017f60067f7e7e7f7f7f017f6000017f60027f7e017e60047f7e7e7e017f60037f7e7e0060027f7e017f60037f7e7f017f60037e7e7f017e6000017e60037f7f7e017e60027f7f017e60017f017f60000060047f7f7f7f017e60067f7f7f7f7f7f0060027f7e0060047f7f7e7e0060037f7f7e0060057f7f7f7e7e0060057f7f7e7e7f0060077f7e7e7f7f7f7f0060067f7f7f7f7e7e0060057f7f7f7f7f017f60077f7f7e7e7f7f7f0060077f7f7f7e7e7f7f0060077f7f7f7e7e7e7f0060067f7f7f7e7e7f0060067f7f7f7f7f7f017f60037e7f7f017f60087f7f7f7f7f7e7e7f0060077f7e7e7e7e7e7e0060067f7f7e7e7e7f0060047f7e7e7e0060027e7f0060037f7e7f0060047f7e7e7f0060057f7e7e7e7e0060067f7e7e7e7e7f0002b50d2a03656e76206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f31000803656e761e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31000803656e76196578745f73746f726167655f6765745f76657273696f6e5f31000903656e76196578745f73746f726167655f7365745f76657273696f6e5f31000a03656e76206578745f73746f726167655f6368696c645f726f6f745f76657273696f6e5f31000903656e76286578745f73746f726167655f6368696c645f73746f726167655f6b696c6c5f76657273696f6e5f31000b03656e76206578745f73616e64626f785f6d656d6f72795f6765745f76657273696f6e5f31000c03656e761d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f31000b03656e76206578745f73616e64626f785f6d656d6f72795f7365745f76657273696f6e5f31000c03656e761b6578745f73746f726167655f636c6561725f76657273696f6e5f31000b03656e761f6578745f73746f726167655f6368696c645f6765745f76657273696f6e5f31000d03656e76216578745f73746f726167655f6368696c645f636c6561725f76657273696f6e5f31000a03656e761f6578745f73746f726167655f6368696c645f7365745f76657273696f6e5f31000e03656e76206578745f73616e64626f785f6d656d6f72795f6e65775f76657273696f6e5f31000403656e76256578745f73616e64626f785f6d656d6f72795f74656172646f776e5f76657273696f6e5f31000203656e76216578745f73616e64626f785f696e7374616e74696174655f76657273696f6e5f31000f03656e761c6578745f73616e64626f785f696e766f6b655f76657273696f6e5f31001003656e76276578745f73616e64626f785f696e7374616e63655f74656172646f776e5f76657273696f6e5f31000203656e761c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f31000b03656e761c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f31000b03656e76236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f31001103656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f31001203656e76346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f31001303656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f31001403656e76256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f31001503656e761a6578745f73746f726167655f726f6f745f76657273696f6e5f31001103656e76236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f31001603656e76226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f31000b03656e76236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f31001603656e761a6578745f73746f726167655f726561645f76657273696f6e5f31001703656e76226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31000703656e76326578745f73746f726167655f626c616b65325f3235365f6f7264657265645f747269655f726f6f745f76657273696f6e5f31000803656e76296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31000903656e76246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f31001803656e76286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f31000703656e76216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f31001903656e76376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f31001a03656e761e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31001b03656e761c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31000203656e761d6578745f68617368696e675f74776f785f36345f76657273696f6e5f31000803656e76196578745f6c6f6767696e675f6c6f675f76657273696f6e5f31001403656e76256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f310015038c058a050101011b010302021c011c1d0101000202010105011e051f2002010501140201010505020101050105012102050101000111012223020501022425200202021c010101010101010201020201010102011b010101020201010101010101010101010105010105000104260402020201180101010101022305050505020202020600010101010101040401040501040202020100000501000000000500000000060027000402000000000000000200000028000000000005020201020100010104010104050101010101040101010b02020101010102010101010101010101010129020101052a02200105052b2c140201010201050114020201022a0202010102020403020101010101042d1e01200201010101010101010202010201012001052e14050401010101010102020101010102010101052001052f0130200200010120020202010104030001010104010400010205050505010104031b02031b02011c0502050105050101041a1a02010100011c021a1a0501011a1a1a0105011a011a1a01010505011a010402110604031a1a1a1a1a1a1a0505050501000102020201010205020201020202010114020202010502013101000105230514020201221a010304040c050402070c030004041b040404040404040302040403040402040202020201010205010606060101040602010201010501040102040104040404040404040404040104010405010401050502050404040501010402020202020202020202020202020502020202010101010101050502051b040101040505060532010101050501040601010100050406010505020202020101040504010304040101050202010405060504050101050505000005050406060505050500020404030303033333343434350407017001d401d40105030100120619037f01418080c0000b7f004180eec4000b7f004180eec4000b07eb0417066d656d6f72790200195f5f696e6469726563745f66756e6374696f6e5f7461626c6501000a5f5f646174615f656e6403010b5f5f686561705f6261736503020c436f72655f76657273696f6e00940312436f72655f657865637574655f626c6f636b00950315436f72655f696e697469616c697a655f626c6f636b009d03114d657461646174615f6d65746164617461009e031c426c6f636b4275696c6465725f6170706c795f65787472696e73696300a2031b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b00a30320426c6f636b4275696c6465725f696e686572656e745f65787472696e7369637300a4031c426c6f636b4275696c6465725f636865636b5f696e686572656e747300a80318426c6f636b4275696c6465725f72616e646f6d5f7365656400aa032b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e00ab03214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b657200b1031e4772616e6470614170695f6772616e6470615f617574686f72697469657300b90315426162654170695f636f6e66696775726174696f6e00ba031d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e636500bb0311436f6e7472616374734170695f63616c6c00bc0318436f6e7472616374734170695f6765745f73746f7261676500bd03205472616e73616374696f6e5061796d656e744170695f71756572795f696e666f00be032153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b65797300bf0309686173685f7465737400ea0309a303010041010bd301fe03f301b101b701f103b401b201fb03d801cc01c801d901ca01c001bc01c101c601c501c201db01bd01dc01dd01d501c701d201d101d701d301de01df01c301d00135ad04a804f804bf04f1048004b704b703e504f703f8039804be04b404ff039f05a904e2018904e803d0033b9f01e204fb0183028402d704bb01d4037675eb029303ab0298019005fc03fc01d503fa0189028802870286028502820281028002ff01a202920593059505940591058d02b802c9019905e001b3029805b602d902d802d702d602dd02dc02db02ef02ee029401920182038803f002b0049d04d904ca03da03ec03ed03ee03f3038204810483048404850486048704a104a204a304fd03ae04a604af04aa04ab04ac04a704bd04b204aa02a502c903c803c404cc037374a102a002c504a302e101c604e703e603c7049601950197016768cf03ce038e058d05c804d303d103c904ec02ed029c04ca04d803d703cb04d903d502d402cc04da02f901f801cd04fe01ba01b901ce04ad02cf04d604d504d0043a39d104d804850586058705880589058b058a058c058f05a705a905a8050ae8f7438a05e905030c7f017e017f230041900d6b2202240020024180076a2001102b0240024020022802840722030d00200041003602040c010b2002418c076a280200210420022802880721052002280280072106200241106a20024190076a41e00010ab051a200241086a2001102c024020022802080d00024002400240024020012802044190066e22074190066c2208417f4c0d00200228020c21090240024020080d004108210a0c010b2008102d220a450d020b024002402009450d004100210b410021084100210c034020024180076a2001102e20022903e8074203510d02200c41016a210d200241f0006a20024180076a41900610ab051a0240200c2007470d00200b200d200b200d4b1b2207ad4290067e220e422088a70d07200ea7220f4100480d0702400240200c0d00200f102d210a0c010b200a2008200f102f210a0b200a450d060b200a20086a200241f0006a41900610ab051a200b41026a210b20084190066a2108200d210c2009200d470d000b0b200a450d0520024180076a200241106a41e00010ab051a2000410c6a2004360200200020053602082000200336020420002006360200200041106a20024180076a41e00010ab051a200041f8006a2009360200200041f4006a2007360200200041f0006a200a3602000c060b0240200c450d00200a4198016a210d0340200d1030200d4190066a210d200841f0796a22080d000b0b2007450d04200a10310c040b1032000b200841081033000b200f41081033000b1034000b2000410036020402402004450d00200441246c210d2003210803400240024020082d0000220c41034b0d00024002400240200c0e0404000102040b2008410c6a280200450d03200841086a28020010310c030b2008410c6a280200450d02200841086a28020010310c020b2008410c6a280200450d01200841086a28020010310c010b200841086a280200450d00200841046a28020010310b200841246a2108200d415c6a220d0d000b0b2005450d00200310310b200241900d6a24000b9f0a03077f037e057f230041d0026b2202240041002103200241003a00c8022001280204417f6a210402400240024003402004417f460d01200241a8026a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c8022004417f6a21042005210320054120470d000b200241e8006a41086a200241a8026a41086a290300370300200241e8006a41106a200241a8026a41106a290300370300200241e8006a41186a200241a8026a41186a290300370300200220022903a80237036820022001102c2002280200450d01200041003602040c020b0240200341ff0171450d00200241003a00c8020b200041003602040c010b2002280204210641002104200241003a00c80220012802042107417f21030240034020072004460d01200241a8026a20046a200128020022082d00003a00002001200720036a3602042001200841016a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241a8016a41086a200241a8026a41086a2903002209370300200241a8016a41106a200241a8026a41106a290300220a370300200241a8016a41186a200241a8026a41186a290300220b37030020024188016a41086a200937030020024188016a41106a200a37030020024188016a41186a200b370300200220022903a80222093703a801200220093703880141002104200241003a00c802200720056b210c200720036a210303400240200c2004470d000240200441ff0171450d00200241003a00c8020b200041003602040c030b200241a8026a20046a200820046a220541016a2d00003a0000200120033602042001200541026a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241e8016a41086a200241a8026a41086a2903002209370300200241e8016a41106a200241a8026a41106a290300220a370300200241e8016a41186a200241a8026a41186a290300220b370300200241c8016a41086a22042009370300200241c8016a41106a2203200a370300200241c8016a41186a2205200b370300200220022903a80222093703e801200220093703c801200241a8026a2001106b024020022802a8022201450d00200241c8006a41086a2208200241e8006a41086a290300370300200241c8006a41106a2207200241e8006a41106a290300370300200241c8006a41186a220c200241e8006a41186a290300370300200241286a41086a220d20024188016a41086a290300370300200241286a41106a220e20024188016a41106a290300370300200241286a41186a220f20024188016a41186a29030037030020022002290368370348200220022903880137032820022902ac022109200241086a41186a22102005290300370300200241086a41106a22052003290300370300200241086a41086a22032004290300370300200220022903c801370308200020093702082000200136020420002006360200200041106a2002290348370200200041186a2008290300370200200041206a2007290300370200200041286a200c290300370200200041306a2002290328370200200041386a200d290300370200200041c0006a200e290300370200200041c8006a200f290300370200200041e8006a2010290300370200200041e0006a2005290300370200200041d8006a2003290300370200200041d0006a20022903083702000c020b200041003602040c010b0240200441ff0171450d00200241003a00c8020b200041003602040b200241d0026a24000bcf0201067f0240024020012802042202450d00200128020022032d0000210420012002417f6a2205360204410121062001200341016a3602000240200441037122074103460d0002400240024020070e03000102000b20044102762107410021060c040b41012106024020050d000c040b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d03200141fcff03714102762107410021060c030b20054103490d01200341036a2d0000210620032f0001210720012002417c6a3602042001200341046a3602002007200641107472410874200472220141808004492106200141027621070c020b0240200441034d0d000c020b20054104490d012003280001210720012002417b6a3602042001200341056a36020020074180808080044921060c010b410121060b20002007360204200020063602000b070020001084030bcf1104047f017e037f047e230041a0096b22022400200241286a2001102c02400240024002400240024020022802280d0020012802042203450d01200128020022042d0000210520012003417f6a3602042001200441016a36020002400240200541ff00714104470d0020054118744118754100480d01420221060c060b200042033703680c060b200241b0076a2001105720022d00b0074102460d0220024188076a41206a200241b0076a41206a28020036020020024188076a41186a200241b0076a41186a29030037030020024188076a41106a200241b0076a41106a29030037030020024188076a41086a200241b0076a41086a290300370300200220022903b0073703880720012802042205450d02200128020022042d0000210320012005417f6a3602042001200441016a360200200341024b0d02024002400240024020030e03000102000b41002103200241003a00c8022005417f6a2107417e21080340024020072003470d00200341ff0171450d07200241003a00c8020c070b20024188026a20036a200420036a220941016a2d00003a00002001200520086a3602042001200941026a3602002002200341016a22093a00c8022008417f6a210820092103200941c000470d000b200241e0086a41386a20024188026a41386a2903002206370300200241e0086a41306a20024188026a41306a290300220a370300200241e0086a41286a20024188026a41286a290300220b370300200241e0086a41206a20024188026a41206a290300220c370300200241e0086a41186a20024188026a41186a290300220d37030020024198086a41086a20024188026a41086a29030037030020024198086a41106a20024188026a41106a29030037030020024198086a41186a200d37030020024198086a41206a200c37030020024198086a41286a200b37030020024198086a41306a200a37030020024198086a41386a20063703002002200229038802370398082009417f7320056a2105200420096a41016a2104410021030c020b41002103200241003a00c8022005417f6a2107417e21080340024020072003470d00200341ff0171450d06200241003a00c802420221060c070b20024188026a20036a200420036a220941016a2d00003a00002001200520086a3602042001200941026a3602002002200341016a22093a00c8022008417f6a210820092103200941c000470d000b200241e0086a41386a20024188026a41386a2903002206370300200241e0086a41306a20024188026a41306a290300220a370300200241e0086a41286a20024188026a41286a290300220b370300200241e0086a41206a20024188026a41206a290300220c370300200241e0086a41186a20024188026a41186a290300220d37030020024198086a41086a20024188026a41086a29030037030020024198086a41106a20024188026a41106a29030037030020024198086a41186a200d37030020024198086a41206a200c37030020024198086a41286a200b37030020024198086a41306a200a37030020024198086a41386a20063703002002200229038802370398082009417f7320056a210541012103200420096a41016a21040c010b41002103200241003a00c9022005417f6a2107417e21080340024020072003470d00200341ff0171450d05200241003a00c902420221060c060b20024188026a20036a200420036a220941016a2d00003a00002001200520086a3602042001200941026a3602002002200341016a22093a00c9022008417f6a210820092103200941c100470d000b20024198086a20024188026a41c10010ab051a2009417f7320056a2105200420096a41016a2104410221030b200241d7076a20024198086a41c10010ab051a2005450d022004310000210b20012005417f6a22083602042001200441016a36020002400240200b50450d00420021060c010b2008450d032004310001210c20012005417e6a3602042001200441026a3602004202200b420f8386220a4204540d0342012106200c420886200b84420488200a420c88220b4201200b4201561b7e220b200a5a0d030b200241206a2001102c20022802200d0220022802242105200241086a200110af012002290308a70d02200241086a41106a290300210d2002290310210c200241e0086a41206a20024188076a41206a280200360200200241e0086a41186a20024188076a41186a290300370300200241e0086a41106a20024188076a41106a290300370300200241e0086a41086a20024188076a41086a29030037030020022002290388073703e00820024188026a200241d7076a41c10010ab051a200220022f0186073b0186020c030b200042033703680c040b200042033703680c030b420221060b200241e0016a41086a2204200241e0086a41086a290300370300200241e0016a41106a2208200241e0086a41106a290300370300200241e0016a41186a2209200241e0086a41186a290300370300200241e0016a41206a2207200241e0086a41206a280200360200200220022903e0083703e0012002419f016a20024188026a41c10010ab051a200220022f0186023b019c01024020064202520d00200042033703680c020b200241f8006a41206a2007280200360200200241f8006a41186a2009290300370300200241f8006a41106a2008290300370300200241f8006a41086a2004290300370300200220022903e001370378200241376a2002419f016a41c10010ab051a200220022f019c013b01340b20024188026a200110880102402002280288024113460d0020002002290378370300200020033a0024200041206a200241f8006a41206a280200360200200041186a200241f8006a41186a290300370300200041106a200241f8006a41106a290300370300200041086a200241f8006a41086a290300370300200041256a200241376a41c10010ab051a200020022f01343b016620004188016a200d37030020004180016a200c37030020004190016a2005360200200041f8006a200b3703002000200a3703702000200637036820004198016a20024188026a41f80410ab051a0c010b200042033703680b200241a0096a24000b0b002000200120021086030b990d01057f024002402000280200220141114b0d00024002400240024002400240024002400240024020010e120b000b0b0b0b0b0102030b0b0405060708090b0b0240200041086a280200220141064b0d00024002400240024020010e070f0f000f0102030f0b200041106a280200450d0e2000410c6a28020010310f0b200041106a280200450d0d2000410c6a28020010310f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141186a2101200241686a22020d000b0b200041106a280200450d0c200028020c10310f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b200041106a280200450d0b200028020c10310f0b200041106a280200450d0a2000410c6a28020010310f0b02402000410c6a2802002201450d0020002802042203200141f0006c6a2104034002402003410c6a2802002202450d0020032802042101200241246c210203400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012002415c6a22020d000b0b200341f0006a21010240200341086a280200450d00200328020410310b2001210320012004470d000b0b200041086a280200450d09200028020410310f0b200041086a280200450d08200028020410310f0b02402000410c6a280200450d00200041086a28020010310b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b200041186a280200450d07200028021410310f0b200041086a280200450d06200028020410310f0b200041086a2d000041796a220141084b0d0502400240024020010e09000108080808080802000b200041106a280200450d072000410c6a28020010310f0b200041106a280200450d062000410c6a28020010310f0b200041106a280200450d052000410c6a28020010310f0b200041086a2d0000417e6a220141024b0d0402400240024020010e03000102000b200041106a280200450d062000410c6a28020010310f0b200041346a280200450d05200041306a28020010310f0b200041306a280200450d042000412c6a28020010310f0b02402000280204220141024b0d00024020010e03050005050b200041086a22012802001030200128020010310f0b2000412c6a22012802001030200128020010310f0b02402000410c6a2802002202450d0020002802042101200241f8046c2102034020011030200141f8046a2101200241887b6a22020d000b0b200041086a280200450d02200028020410310f0b200041086a2d0000417f6a220141034b0d01024002400240024020010e0400010203000b024020004184016a280200450d0020004180016a28020010310b024020004194016a2802002202450d002000418c016a28020021012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b20004190016a280200450d04200028028c0110310f0b024020004184016a280200450d0020004180016a28020010310b024020004194016a2802002202450d002000418c016a28020021012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b20004190016a280200450d03200028028c0110310f0b2000411c6a280200450d02200041186a28020010310c020b024020004184016a280200450d0020004180016a28020010310b024020004194016a2802002202450d002000418c016a28020021012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b20004190016a280200450d01200028028c0110310f0b0240200041086a280200220141024b0d000240024020010e03030001030b2000411c6a280200450d02200041186a28020010310f0b2000411c6a280200450d01200041186a28020010310f0b2000411c6a280200450d00200041186a28020010310f0b0b070020001085030b05001034000b14004184a0c400ad4280808080a00484100700000b1200419899c300411141ac99c30010a401000bc005020a7f017e230041c0006b220424002004200136020c20042000410120011b3602082004200441086a102c024020042802000d000240024002400240024002400240200428020c22014170712200417f4c0d002004280204210502400240200141047622060d00410821070c010b2000102d2207450d020b02402005450d00200441206a4104722108410021094100210a410021000340200441206a200441086a1036200441306a41086a220b200841086a2802003602002004200829020037033002402004280220220c4104470d002006450d0a200710310c0a0b200041016a2101200441106a41086a220d200b28020036020020042004290330370310024020002006470d0020092001200920014b1b220641ffffffff00712006470d062006410474220b4100480d060240024020000d00200b102d21070c010b2007200a200b102f21070b2007450d050b2007200a6a2200200c360200200041046a20042903103702002000410c6a200d280200360200200941026a2109200a41106a210a2001210020052001470d000b0b2007450d07200441206a2002200720052003110000200428022021004101102d2201450d042004428180808010370234200420013602300240024020004105460d00200141003a0000200141014102102f2101024020004104470d002001450d08200141003a00012004428280808020370234200420013602304202210e0c020b2001450d08200141013a0001200442828080802037023420042001360230200441206a200441306a10372004350238210e200428023021010c010b200141013a00004201210e0b2001ad422086200e84210e02402006450d00200710310b200441c0006a2400200e0f0b1032000b200041081033000b200b41081033000b1034000b410141011033000b410241011033000b410241011033000b418081c00041f000200441206a41f081c0001038000bde0202047f017e02400240024002400240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a3602002004417f6a220441034b0d0520040e0401020304010b200041043602000f0b0240200541034b0d00200041043602000f0b200041003602002003280001210420012002417b6a3602042001200341056a360200200020043602040f0b024020054108490d0020004101360200200329000121062001200241776a3602042001200341096a360200200041086a20063703000f0b200041043602000f0b0240200541034b0d00200041043602000f0b200041023602002003280001210420012002417b6a3602042001200341056a360200200020043602040f0b024020054108490d0020004103360200200329000121062001200241776a3602042001200341096a360200200041086a20063703000f0b200041043602000f0b200041043602000b840b02037f017e024002400240024002400240024002400240024002400240024020002802000e0400010203000b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d0c200241017422042003200420034b1b22044100480d0c0240024020020d002004102d21030c010b200128020020022004102f21030b2003450d0420012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41013a00002000280204210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d0c200241017422002004200020044b1b22004100480d0c0240024020020d002000102d21020c010b200128020020022000102f21020b2002450d0520012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d0b200241017422042003200420034b1b22044100480d0b0240024020020d002004102d21030c010b200128020020022004102f21030b2003450d0520012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41023a00002000290308210502400240200141046a2802002202200428020022006b4108490d00200128020021020c010b200041086a22032000490d0b200241017422002003200020034b1b22004100480d0b0240024020020d002000102d21020c010b200128020020022000102f21020b2002450d0620012002360200200141046a2000360200200141086a28020021000b200141086a200041086a360200200220006a20053700000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d0a200241017422042003200420034b1b22044100480d0a0240024020020d002004102d21030c010b200128020020022004102f21030b2003450d0620012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a00002000280204210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d0a200241017422002004200020044b1b22004100480d0a0240024020020d002000102d21020c010b200128020020022000102f21020b2002450d0720012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d09200241017422042003200420034b1b22044100480d090240024020020d002004102d21030c010b200128020020022004102f21030b2003450d0720012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41043a00002000290308210502400240200141046a2802002202200428020022006b4108490d00200128020021020c010b200041086a22032000490d09200241017422002003200020034b1b22004100480d090240024020020d002000102d21020c010b200128020020022000102f21020b2002450d0820012002360200200141046a2000360200200141086a28020021000b200141086a200041086a360200200220006a20053700000f0b200441011033000b200041011033000b200441011033000b200041011033000b200441011033000b200041011033000b200441011033000b200041011033000b1034000b820101017f230041c0006b220424002004200136020c2004200036020820042003360214200420023602102004412c6a41023602002004413c6a41013602002004420237021c200441a8a0c400360218200441023602342004200441306a3602282004200441106a3602382004200441086a360230200441186a41fcc7c30010b301000b130020004103360204200041d483c0003602000b3400200041da85c40036020420004100360200200041146a4108360200200041106a41fc84c000360200200041086a420a3702000b6d01017f230041306b22022400200241186a4100360200200241086a41086a42003703002002420037030820024100360228200242013703202002200241206a36022c200241086a2002412c6a103c200041086a200228022836020020002002290320370200200241306a24000b8e0401037f20002d00002102024002400240024002400240024002404101102d2203450d00200320023a000020002d00012102200341014102102f2203450d01200320023a000120002d00022102200341024104102f2203450d02200320023a0002200320002d00033a000320002d00042102200341044108102f2203450d03200320023a0004200320002d00053a0005200320002f00063b000620002d00082102200341084110102f2203450d04200320023a0008200320002d00093a0009200320002f000a3b000a2003200028000c36000c20002d00102102200341104120102f2203450d05200320023a0010200320002d00113a0011200320002f00123b0012024002402001280200220041046a2802002202200041086a28020022016b4114490d00200028020021020c010b200141146a22042001490d08200241017422012004200120044b1b22014100480d080240024020020d002001102d21020c010b200028020020022001102f21020b2002450d0720002002360200200041046a2001360200200041086a28020021010b200041086a200141146a360200200220016a220041106a200341106a280000360000200041086a200341086a29000037000020002003290000370000200310310f0b410141011033000b410241011033000b410441011033000b410841011033000b411041011033000b412041011033000b200141011033000b1034000be8810106037f017e037f097e107f017e230041a00a6b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402001290300a72204417f6a0e03000102000b200341c8046a41306a200141386a290300370300200341c8046a41286a200141306a290300370300200341c8046a41206a200141286a290300370300200341c8046a41186a200141206a290300370300200341c8046a41106a200141186a290300370300200341c8046a41086a200141106a290300370300200320012903083703c804024020022d00004101460d004194c4c4002105411321020c230b20032903c804210620034188056a41186a200341f4046a29020037030020034188056a41106a200341ec046a29020037030020034188056a41086a200341c8046a411c6a290200370300200320032902dc0437038805200320063703a805411c102d2202450d13200241002900aca142370000200241186a41002800c4a142360000200241106a41002900bca142370000200241086a41002900b4a1423700002003429c808080c003370224200320023602202003200341206a3602c80220034188056a200341c8026a103e20032903a80521060240024020032802242205200328022822026b4108490d00200328022021050c010b200241086a22072002490d18200541017422022007200220074b1b22024100480d180240024020050d002002102d21050c010b200328022020052002102f21050b2005450d132003200236022420032005360220200328022821020b2003200241086a360228200520026a2006370000200341c8026a41186a220520033502284220862003350220841000220241186a290000370300200341c8026a41106a2207200241106a290000370300200341c8026a41086a2208200241086a290000370300200320022900003703c80220021031200341c8036a41186a2005290300370300200341c8036a41106a2007290300370300200341c8036a41086a2008290300370300200320032903c8023703c80302402003280224450d00200328022010310b200341086a200341c8036a4120410141004100103f024020032802084101470d0041f88bc0002105412b21020c230b20034188056a200341c8046a41a38cc000104020034188046a41086a220720034188056a41146a29020037030020034198046a220820034188056a411c6a290200370300200341a0046a2209200341ac056a280200360200200320034188056a410c6a2902003703880420034188056a41086a2205280200210202402003280288054101470d00200328028c0521050c230b200341b8056a290300210a200341b0056a290300210b200341206a410c6a2007290300370200200341206a41146a2008290300370200200341206a411c6a2009280200360200200320023602202003200329038804370224200541b58cc000ad4280808080d002841001220241086a29000037030020032002290000370388052002103120034188026a41086a200529030037030020032003290388053703880220034188056a20034188026aad4280808080800284220c100210410240024020032802880522020d00420021064200210d0c010b20034188056a41086a2802004110490d12200241086a290000210d20022900002106200328028c05450d00200210310b02402006200b7d220e200656200d200a7d2006200b54ad7d2206200d562006200d511b4101470d0041ca8cc0002105412a21020c230b20034188056a200341206a200b200a104202402003280288054101470d002003280290052102200328028c0521050c230b200329039005210d200320034188056a41106a2205290300370390052003200d37038805200320034188056a3602c803200341c8036a104320032903c804210d20034188056a41186a200341dc046a220241186a2902003703002005200241106a29020037030020034188056a41086a200241086a2902003703002003200d3703a8052003200229020037038805411c102d2205450d10200541002900aca142370000200541186a41002800c4a142360000200541106a41002900bca142370000200541086a41002900b4a1423700002003429c808080c00337028c042003200536028804200320034188046a3602c80220034188056a200341c8026a103e20032903a805210d02400240200328028c04220720032802900422056b4108490d0020032802880421070c010b200541086a22082005490d18200741017422052008200520084b1b22054100480d180240024020070d002005102d21070c010b20032802880420072005102f21070b2007450d102003200536028c04200320073602880420032802900421050b2003200541086a36029004200720056a200d370000200341c8026a41186a2207200335029004422086200335028804841000220541186a290000370300200341c8026a41106a2208200541106a290000370300200341c8026a41086a2209200541086a290000370300200320052900003703c80220051031200341c8036a41186a2007290300370300200341c8036a41106a2008290300370300200341c8036a41086a2009290300370300200320032903c8023703c8030240200328028c04450d0020032802880410310b2003412036028c052003200341c8036a36028805200341c8046a20034188056a104420034188056a41086a220741b58cc000ad4280808080d00284220d1001220541086a29000037030020032005290000370388052005103120034188026a41086a200729030037030020032003290388053703880220034188056a200c1002104102402003280288052205450d0020034190056a2802004110490d0f200328028c05450d00200510310b20034188056a41086a2207200d1001220541086a29000037030020032005290000370388052005103120034188026a41086a200729030037030020032003290388053703880220032006370390052003200e37038805200c20034188056aad4280808080800284100320032903c8042106200341c0056a200a370300200341b8056a200b37030041002105200741003a000020034191056a200329032037000020034199056a200341206a41086a290300370000200341a1056a200341206a41106a290300370000200341a9056a200341206a41186a290300370000200341c8056a2002290000370300200341d0056a200241086a290000370300200341d8056a200241106a290000370300200341e0056a200241186a2900003703002003410d3a008805200341e8056a20063703004101410020034188056a10450240200341d4046a280200450d0020032802d00410310b0c230b200341c8046a41306a200141386a290300370300200341c8046a41286a200141306a290300370300200341c8046a41206a200141286a290300370300200341c8046a41186a200141206a290300370300200341c8046a41106a200141186a290300370300200341c8046a41086a200141106a290300370300200320012903083703c804024020022d00004101460d004194c4c4002105411321020c200b20032903c804210620034188056a41186a200341f4046a29020037030020034188056a41106a200341ec046a29020037030020034188056a41086a200341c8046a411c6a290200370300200320032902dc0437038805200320063703a805411c102d2202450d0c200241002900e4a142370000200241186a41002800fca142360000200241106a41002900f4a142370000200241086a41002900eca1423700002003429c808080c003370224200320023602202003200341206a3602c80220034188056a200341c8026a103e20032903a80521060240024020032802242205200328022822026b4108490d00200328022021050c010b200241086a22072002490d17200541017422022007200220074b1b22024100480d170240024020050d002002102d21050c010b200328022020052002102f21050b2005450d0c2003200236022420032005360220200328022821020b2003200241086a360228200520026a2006370000200341c8026a41186a220520033502284220862003350220841000220241186a290000370300200341c8026a41106a2207200241106a290000370300200341c8026a41086a2208200241086a290000370300200320022900003703c80220021031200341c8036a41186a2005290300370300200341c8036a41106a2007290300370300200341c8036a41086a2008290300370300200320032903c8023703c80302402003280224450d00200328022010310b200341106a200341c8036a4120410141004100103f024020032802104101470d0041f48cc0002105412b21020c200b20034188056a200341c8046a419f8dc000104020034188046a41086a220720034188056a41146a29020037030020034198046a220820034188056a411c6a290200370300200341a0046a2209200341ac056a280200360200200320034188056a410c6a2902003703880420034188056a41086a2205280200210202402003280288054101470d00200328028c0521050c200b200341b8056a290300210a200341b0056a290300210b200341206a410c6a2007290300370200200341206a41146a2008290300370200200341206a411c6a2009280200360200200320023602202003200329038804370224200541b18dc000ad4280808080d002841001220241086a29000037030020032002290000370388052002103120034188026a41086a200529030037030020032003290388053703880220034188056a20034188026aad4280808080800284220c100210410240024020032802880522020d00420021064200210d0c010b20034188056a41086a2802004110490d0b200241086a290000210d20022900002106200328028c05450d00200210310b02402006200b7d220e200656200d200a7d2006200b54ad7d2206200d562006200d511b4101470d0041c68dc0002105412a21020c200b4110102d2202450d0920024100290089f342370000200241086a4100290091f34237000020034290808080800237028c052003200236028805200341206a20034188056a1046200341c8026a41186a2205200335029005422086200335028805841000220241186a290000370300200341c8026a41106a2207200241106a290000370300200341c8026a41086a2208200241086a290000370300200320022900003703c80220021031200341c8036a41186a2005290300370300200341c8036a41106a2007290300370300200341c8036a41086a2008290300370300200320032903c8023703c8030240200328028c05450d0020032802880510310b20034188056a200341c8036aad4280808080800484220f100210410240024020032802880522020d00410121050c010b20034188056a41086a2802004110490d09200241086a29000021102002290000210d41002105200328028c05450d00200210310b4114102d2202450d0720024100290086f442370000200241106a4100280096f442360000200241086a410029008ef44237000020034294808080c00237028c052003200236028805200341206a20034188056a1046200341c8026a41186a2207200335029005422086200335028805841000220241186a290000370300200341c8026a41106a2208200241106a290000370300200341c8026a41086a2209200241086a290000370300200320022900003703c80220021031200341c8036a41186a2007290300370300200341c8036a41106a2008290300370300200341c8036a41086a2009290300370300200320032903c8023703c8030240200328028c05450d0020032802880510310b20034188056a200f100210410240024020032802880522020d0042002111420021120c010b20034188056a41086a2802004110490d07200241086a290000211220022900002111200328028c05450d00200210310b0240201142004200200d7d20051b852012420042002010200d420052ad7c7d20051b858450450d00419af4c2002105412221020c200b4110102d2202450d0520024100290089f342370000200241086a4100290091f34237000020034290808080800237028c052003200236028805200341206a20034188056a1046200341c8026a41186a2205200335029005422086200335028805841000220241186a290000370300200341c8026a41106a2207200241106a290000370300200341c8026a41086a2208200241086a290000370300200320022900003703c80220021031200341c8036a41186a2005290300370300200341c8036a41106a2007290300370300200341c8036a41086a2008290300370300200320032903c8023703c8030240200328028c05450d0020032802880510310b20034188056a200f100210410240024020032802880522020d004200210d4200210f0c010b20034188056a41086a2802004110490d05200241086a290000210f2002290000210d200328028c05450d00200210310b200341206a200d200b7c2210200f200a7c2010200d54ad7c10472003200a370390052003200b37038805200320034188056a3602c803200341c8036a104820032903c804210d20034188056a41186a200341dc046a220241186a29020037030020034188056a41106a200241106a29020037030020034188056a41086a200241086a2902003703002003200d3703a8052003200229020037038805411c102d2205450d03200541002900e4a142370000200541186a41002800fca142360000200541106a41002900f4a142370000200541086a41002900eca1423700002003429c808080c00337028c042003200536028804200320034188046a3602c80220034188056a200341c8026a103e20032903a805210d02400240200328028c04220720032802900422056b4108490d0020032802880421070c010b200541086a22082005490d17200741017422052008200520084b1b22054100480d170240024020070d002005102d21070c010b20032802880420072005102f21070b2007450d032003200536028c04200320073602880420032802900421050b2003200541086a36029004200720056a200d370000200341c8026a41186a2207200335029004422086200335028804841000220541186a290000370300200341c8026a41106a2208200541106a290000370300200341c8026a41086a2209200541086a290000370300200320052900003703c80220051031200341c8036a41186a2007290300370300200341c8036a41106a2008290300370300200341c8036a41086a2009290300370300200320032903c8023703c8030240200328028c04450d0020032802880410310b2003412036028c052003200341c8036a36028805200341c8046a20034188056a104420034188056a41086a220741b18dc000ad4280808080d00284220d1001220541086a29000037030020032005290000370388052005103120034188026a41086a200729030037030020032003290388053703880220034188056a200c1002104102402003280288052205450d0020034190056a2802004110490d02200328028c05450d00200510310b20034188056a41086a2205200d1001220741086a29000037030020032007290000370388052007103120034188026a41086a200529030037030020032003290388053703880220032006370390052003200e37038805200c20034188056aad4280808080800284100320032903c8042106200341c0056a200a370300200341b8056a200b370300200541013a000020034191056a200329032037000020034199056a200341206a41086a290300370000200341a1056a200341206a41106a290300370000200341a9056a200341206a41186a290300370000200341c8056a2002290000370300200341d0056a200241086a290000370300200341d8056a200241106a290000370300200341e0056a200241186a2900003703002003410d3a008805200341e8056a2006370300410021054101410020034188056a10450240200341d4046a280200450d0020032802d00410310b0c200b200341206a41306a200141386a290300370300200341206a41286a200141306a290300370300200341206a41206a200141286a290300370300200341206a41186a200141206a290300370300200341206a41106a200141186a290300370300200341206a41086a200141106a29030037030020032001290308370320024020022d00004101460d004194c4c4002105411321020c1d0b2003290320210620034188056a41186a200341cc006a29020037030020034188056a41106a200341c4006a29020037030020034188056a41086a2003413c6a2902003703002003200329023437038805200320063703a8050240411f102d2202450d0020024100290080a242370000200241176a4100290097a242370000200241106a4100290090a242370000200241086a4100290088a2423700002003429f808080f0033702cc03200320023602c8032003200341c8036a3602c80220034188056a200341c8026a103e20032903a805210602400240024020032802cc03220520032802d00322026b4108490d0020032802c80321050c010b200241086a22042002490d18200541017422022004200220044b1b22024100480d180240024020050d002002102d21050c010b20032802c80320052002102f21050b2005450d01200320023602cc03200320053602c80320032802d00321020b2003200241086a3602d003200520026a2006370000200341c8026a41186a220520033502d00342208620033502c803841000220241186a290000370300200341c8026a41106a2204200241106a290000370300200341c8026a41086a2207200241086a290000370300200320022900003703c80220021031200341c8046a41186a2005290300370300200341c8046a41106a2004290300370300200341c8046a41086a2007290300370300200320032903c8023703c804024020032802cc03450d0020032802c80310310b200341186a200341c8046a4120410141004100103f024020032802184101470d0041f08dc0002105412e21020c1f0b20034188056a200341206a104902402003280288054101470d002003280290052102200328028c0521050c1f0b200341b8056a2802002113200341b4056a2802002114200341b0056a280200210902404108102d2215450d00201542c2eac9f3c6ccdcb7f000370000024041c401102d2204450d000240410a102d2202450d00200241086a41002f00a68f403b00002002410029009e8f403700000240410a102d2205450d00200541086a41002f00b08f403b0000200541002900a88f4037000002404107102d2207450d00200741036a41002800b58f40360000200741002800b28f4036000002404108102d2216450d00201642dfe6d18ba68edda0f4003700000240410d102d2208450d00200841056a41002900be8f40370000200841002900b98f4037000002404106102d2217450d00201741046a41002f00ca8f403b0000201741002800c68f4036000002404105102d2218450d00201841046a41002d00d08f403a0000201841002800cc8f40360000200441003a00c001200441013602b40120044285808080d0003702ac01200420183602a801200441003a00a4012004428380808080103702980120044286808080e000370290012004201736028c01200441003a00880120044283808080800837027c2004428d808080d00137027420042008360270200441003a006c20044283808080800637026020044288808080800137025820042016360254200441003a005020044283808080800637024420044287808080f00037023c20042007360238200441003a0034200441003602282004428a808080a0013702202004200536021c200441013a001820044180023602102004428a808080303702082004410a36020420042002360200200341c8046a41106a4287808080f000370300200341003a00e004200320043602d4042003428880808080013702cc04200320153602c8042013450d26200341346a21192013412c6c211a20034188026aad4280808080800284210b20034188036a20096b41686a211b41002107034020034188056a41086a2208419fa2c200ad4280808080f003841001220241086a29000037030020032002290000370388052002103120034188026a41086a2008290300370300200320032903880537038802200341e8016a200b1002104102400240024020032802e8012202450d0020032802ec01211720032802f0012105200341003a009c052005450d22200320022d00003a008805200341013a009c0520054101470d010c210b20034188036a41086a420037030020034188036a41106a4100360200200341c8036a41106a20034188056a41106a280200360200200341c8036a41086a2008290300370300200342003703880320032003290388053703c8030c010b200320022d00013a008905200341023a009c0520054102460d1f200320022d00023a008a05200341033a009c0520054103460d1f200320022d00033a008b05200341043a009c0520054104460d1f200320022d00043a008c05200341053a009c0520054105460d1f200320022d00053a008d05200341063a009c0520054106460d1f200320022d00063a008e05200341073a009c0520054107460d1f200320022d00073a008f05200341083a009c0520054108460d1f200320022d00083a009005200341093a009c0520054109460d1f200320022d00093a0091052003410a3a009c052005410a460d1f200320022d000a3a0092052003410b3a009c052005410b460d1f200320022d000b3a0093052003410c3a009c052005410c460d1f200320022d000c3a0094052003410d3a009c052005410d460d1f200320022d000d3a0095052003410e3a009c052005410e460d1f200320022d000e3a0096052003410f3a009c052005410f460d1f200320022d000f3a009705200341103a009c0520054110460d1f200320022d00103a009805200341113a009c0520054111460d1f200320022d00113a009905200341123a009c0520054112460d1f200320022d00123a009a05200341133a009c0520054113460d1f20034188046a41086a22052008290300370300200320022d00133a009b0520034188046a41106a221820034188056a41106a221628020036020020032003290388053703880402402017450d00200210310b20162018280200220236020020082005290300220637030020034188036a41086a200637030020034188036a41106a20023602002003200329038804220d37038805200341c8036a41106a2002360200200341c8036a41086a20063703002003200d370388032003200d3703c8030b024002400240201b2007460d00200920076a41186a20034188036a411410ad050d010b200920076a220541086a280200450d012005280200210220034188056a200341c8046a104a200220034188056a460d22200220034188056a412010ad05450d220b201a2007412c6a2207460d280c010b0b41e49cc40041004100104b000b410541011033000b410641011033000b410d41011033000b410841011033000b410741011033000b410a41011033000b410a41011033000b41c40141041033000b410841011033000b200241011033000b411f41011033000b41e9bcc000413320034188046a419cbdc0001038000b200541011033000b411c41011033000b41e9bcc000413320034188046a419cbdc0001038000b411041011033000b41e9bcc000413320034188046a419cbdc0001038000b411441011033000b41e9bcc000413320034188046a419cbdc0001038000b411041011033000b41e9bcc000413320034188046a419cbdc0001038000b200241011033000b411c41011033000b41e9bcc000413320034188046a419cbdc0001038000b200541011033000b411c41011033000b41e9bcc000413320034188046a419cbdc0001038000b200241011033000b411c41011033000b200341003a009c050b41e9bcc000413320034188046a419cbdc0001038000b02400240024002400240024002400240024041c000102d2202450d00200541086a2208280200450d0120034188056a41086a2005280200220741086a29000037030020034188056a41106a2217200741106a29000037030020034188056a41186a2218200741186a29000037030020032007290000370388052008280200220841014d0d02200741386a2900002106200741306a290000210d200741286a290000210a2007290020210c2002200329038805370000200241086a20034188056a41086a290300370000200241106a2017290300370000200241186a20182903003700002002200c370020200241286a200a370000200241306a200d370000200241386a2006370000200541146a2802002207417f4c0d032005410c6a28020021084101210502402007450d002007102d2205450d050b20052008200710ab052105200341dc036a2007360200200341d8036a2007360200200320053602d40320034282808080203702cc03200320023602c80320034188056a200341c8046a200341c8036a104c02402003280288054101470d0020034194056a280200210720034190056a280200210502400240024020032d008c05220241024b0d00024020020e03030003030b20070d010c020b2005450d012007450d010b200510310b201510310240200441046a280200450d00200428020010310b2004410c6a104d0240200441206a280200450d00200428021c10310b200441286a104d02402004413c6a280200450d00200428023810310b200441c4006a104d0240200441d8006a280200450d00200428025410310b200441e0006a104d0240200441f4006a280200450d00200428027010310b200441fc006a104d024020044190016a280200450d00200428028c0110310b20044198016a104d0240200441ac016a280200450d0020042802a80110310b200441b4016a104d200410312013412c6c21052009210203400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b2002412c6a2102200541546a22050d000b41b38ec0002105411621022014450d11200910310c110b2003200328028c052207360258200320034188056a410c6a2802002208360260200320034190056a280200221736025c201510310240200441046a280200450d00200428020010310b2004410c6a104d0240200441206a280200450d00200428021c10310b200441286a104d02402004413c6a280200450d00200428023810310b200441c4006a104d0240200441d8006a280200450d00200428025410310b200441e0006a104d0240200441f4006a280200450d00200428027010310b200441fc006a104d024020044190016a280200450d00200428028c0110310b20044198016a104d0240200441ac016a280200450d0020042802a80110310b200441b4016a104d200410312013412c6c21052009210203400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b2002412c6a2102200541546a22050d000b02402014450d00200910310b0240200841024b0d0041e49cc40041022008104b000b20034188056a200741f0006a104e200341c8046a20034188056a104f20032903c8044201520d0d20034190016a200341dc046a29020037030020034198016a200341e4046a290200370300200341a0016a200341ec046a280200360200200320032902d40437038801200841034d0d0520032802d004211820034188056a200741a8016a104e200341c8046a20034188056a104f20032903c8044201520d0d200341b0016a200341dc046a290200370300200341b8016a200341e4046a290200370300200341c0016a200341ec046a280200360200200320032902d4043703a801200841054d0d0620032802d004211620034188056a20074198026a104e200341c8046a20034188056a104f20032903c8044201520d0d200341c8026a41186a200341e8046a290300370300200341c8026a41106a200341c8046a41186a290300370300200341c8026a41086a200341c8046a41106a290300370300200320032903d0043703c802200341c8036a41106a4200370300200341c8036a41186a4200370300200342003703d0032003428094ebdc033703c80320034188056a200341c8026a200341c8036a105020034188046a41186a200341a4056a2202280200220536020020034188046a41106a2003419c056a2204290200220637030020034188046a41086a20034194056a2209290200220d3703002003200329028c05220a37038804200328028805211b2009200d37020020042006370200200220053602002003201b360288052003200a37028c0520034188056a41106a21094100210202400340200241086a22054118460d01200920026a2104200521022004290300500d000b41e08ec0002105412521020c0f0b200841064d0d072003290388052106200329039005210d20034188056a200741d0026a104e200341c8046a20034188056a1051024020032802c80422040d0041858fc0002105411921020c0f0b20032802cc0421094101210802400240200341c8046a41086a2802004121460d00411b210241d18fc00021050c010b024020042d0000412a460d00411a210241ec8fc00021050c010b200341c8036a41186a200441196a2202290000370300200341c8036a41106a200441116a2205290000370300200341c8036a41086a200441096a2208290000370300200320042900013703c8032005290000210e2002290000210a2004290001210c200341c8046a41086a2008290000370300200341c8046a41186a200a370300200341c8046a41106a200e3703002003200c3703c80420032800cb04210520032800cf0421022003418a046a20032d00ca043a00002003200c3d01880420034195056a200a37000020034188056a41086a200341db046a290000370300200320032900d30437038805410021080b20034188036a41026a221b20034188046a41026a2d00003a0000200341c8026a41086a20034188056a41086a290300370300200341c8026a41106a20034188056a41106a290300370300200320032f0188043b01880320032003290388053703c80220080d0c0c080b41c00041011033000b41e49cc40041004100104b000b41e49cc40041012008104b000b1032000b200741011033000b41e49cc40041032008104b000b41e49cc40041052008104b000b41e49cc40041062008104b000b200341db016a200341c8026a41086a290300370000200341e0016a200341d5026a290000370000200320032f0188033b01c801200320023600cf01200320053600cb01200320032903c8023700d3012003201b2d00003a00ca0102402009450d00200410310b20034188056a41086a220541b58cc000ad4280808080d002841001220241086a29000037030020032002290000370388052002103120034188026a41086a200529030037030020032003290388053703880220034188056a200b100210410240024002400240024002400240024020032802880522020d004200210a4200210c0c010b20034188056a41086a2802004110490d01200241086a290000210c2002290000210a200328028c05450d00200210310b0240200a20067d220e200a56200c200d7d200a200654ad7d220a200c56200a200c511b4101470d0041ca8cc0002105412a21020c0c0b20034194056a20034188016a41086a2903003702002003419c056a20034198016a290300370200200341a4056a200341a0016a280200360200200320032903880137028c05200320183602880520034188056a41086a210841002102200329038805210c02400340200241086a22054120460d01200820026a2104200521022004290300500d000b427f210c0b20034194056a200341a8016a41086a2903003702002003419c056a200341b8016a290300370200200341a4056a200341c0016a280200360200200320032903a80137028c05200320163602880520034188056a41086a210841002102200329038805210f02400340200241086a22054120460d01200820026a2104200521022004290300500d000b427f210f0b410e102d2202450d01200241002900a9ba41370000200241066a41002900afba413700002003428e808080e00137028c052003200236028805200341c8016a20034188056a1046200341c8026a41186a2204200335029005422086200335028805841000220241186a290000370300200341c8026a41106a2208200241106a290000370300200341c8026a41086a2205200241086a290000370300200320022900003703c80220021031200341c8036a41186a2004290300370300200341c8036a41106a2008290300370300200341c8036a41086a2005290300370300200320032903c8023703c8030240200328028c05450d0020032802880510310b20034188056a200341c8036a4120105220034188036a41026a220820032d008b053a000020052003419c056a290200370300200341c8026a410d6a2209200341a1056a290000370000200320032f0089053b018803200320034194056a2902003703c802410121040240024020032d0088054101460d0041f1bac1002105411721020c010b20034188056a41086a2802002102200328028c05210520034188026a41026a20082d00003a0000200341c8046a41086a200341c8026a41086a290300370300200341c8046a410d6a2009290000370000200320032f0188033b018802200320032903c8023703c804410021040b200341b0046a41026a20034188026a41026a2d00003a000020034188046a41086a2208200341c8046a41086a29030037030020034188046a41106a200341c8046a41106a290300370300200320032f0188023b01b004200320032903c8043703880420040d0b200341fb016a2008290300370000200341e8016a41186a20034195046a290000370000200320032f01b0043b01e801200320023600ef01200320053600eb0120032003290388043700f3012003200341b2046a2d00003a00ea0120034188056a200341e8016a10530240024020032802c805221c0d0041012105411c21020c010b200341c8046a41086a20034194056a290200370300200341c8046a41106a2003419c056a290200370300200341c8046a41186a200341a4056a290200370300200341c8046a41206a200341ac056a290200370300200341f0046a200341b4056a290200370300200341f8046a200341bc056a29020037030020034180056a200341c4056a2802003602002003200329028c053703c804200328028805210220032802cc05211d200341b0046a41106a200341e0056a290300370300200341b0046a41086a200341d8056a29030037030020034188046a41206a200341a0066a29030037030020034188046a41186a20034198066a29030037030020034188046a41106a20034190066a29030037030020034188046a41086a20034188066a2903003703002003200341d0056a2903003703b004200320034180066a29030037038804200341fc056a2802002104200341f8056a2802002108200341f0056a2903002110200341ec056a280200211e200341e8056a280200211f410021050b200341c8036a41086a2209200341c8046a41086a290300370300200341c8036a41106a2218200341c8046a41106a290300370300200341c8036a41186a200341c8046a41186a290300370300200341c8036a41206a2216200341c8046a41206a290300370300200341c8036a41286a221b200341c8046a41286a290300370300200341c8036a41306a221a200341c8046a41306a290300370300200341c8036a41386a2213200341c8046a41386a280200360200200341b0036a41086a2215200341b0046a41086a290300370300200341b0036a41106a2214200341b0046a41106a290300370300200320032903c8043703c803200320032903b0043703b00320034188036a41206a222020034188046a41206a29030037030020034188036a41186a20034188046a41186a29030037030020034188036a41106a222120034188046a41106a29030037030020034188036a41086a222220034188046a41086a29030037030020032003290388043703880302402005450d004188bbc10021050c0c0b200341c8026a41386a2013280200360200200341c8026a41306a201a290300370300200341c8026a41286a201b290300370300200341c8026a41206a2016290300370300200341c8026a41186a2205200341c8036a41186a290300370300200341c8026a41106a2018290300370300200341c8026a41086a2009290300370300200341b0026a41086a2015290300370300200341b0026a41106a2014290300370300200320032903c8033703c802200320032903b0033703b00220034188026a41206a202029030037030020034188026a41186a220920034188036a41186a29030037030020034188026a41106a202129030037030020034188026a41086a202229030037030020032003290388033703880220034188056a200341c8016a2006200d10422003280288054101460d082003290390052111200320034188056a41106a290300370390052003201137038805200320034188056a3602c804200341c8046a104320034194056a200341c8026a41086a2903003702002003419c056a200341c8026a41106a290300370200200341a4056a2005290300370200200341ac056a200341c8026a41206a290300370200200341b4056a200341f0026a290300370200200341bc056a200341f8026a290300370200200341c4056a20034180036a280200360200200341cc056a201d360200200341c8056a201c3602002003200236028805200320032903c80237028c05200341e8056a201f360200200341ec056a201e360200200341f0056a2010370300200341fc056a2004360200200341e0056a200341b0026a41106a290300370300200341d8056a200341b0026a41086a290300370300200341d0056a20032903b00237030020034180066a220220032903880237030020034188066a20034188026a41086a29030037030020034190066a20034188026a41106a29030037030020034198066a2009290300370300200341a0066a20034188026a41206a290300370300200320083602f80520034188056a41186a220529030021102003200329039805221120067c22123703980520052010200d7c2012201154ad7c3703000240200228020022022004470d00200441016a22022004490d07200441017422052002200520024b1b220241ffffff3f712002470d07200241057422054100480d070240024020040d002005102d21080c010b200820044105742005102f21080b2008450d03200320023602fc05200320083602f80520032802800621020b200820024105746a2202200c4224200c4224541b2211428090fbd3097e200f42e8077e220c7c3703182002200c3703102002200d3703082002200637030020034188056a41086a2202427f2002290300220f200d7c200329038805221020067c22122010542202ad7c221020022010200f542010200f511b22021b370300200320032802800641016a360280062003427f201220021b37038805200341e8016a20034188056a42001054024020032802fc05450d0020032802f80510310b024020032802cc05450d0020032802c80510310b024020032802ec05450d0020032802e80510310b20034188056a41086a2202418bbac100ad428080808080028422101001220541086a290000370300200320052900003703880520051031200341c8046a41086a2204200229030037030020032003290388053703c80420034188056a200341c8046aad42808080808002842212100210410240024020032802880522050d004200210f420021230c010b20022802004110490d04200541086a29000021232005290000210f200328028c05450d00200510310b200220101001220541086a2900003703002003200529000037038805200510312004200229030037030020032003290388053703c8042003200f20067c22103703880520032023200d7c2010200f54ad7c37039005201220034188056aad220f42808080808002841003200341a8056a200d37030020034188056a41186a22052006370300200341b8056a2011370300200341b0056a200c37030020034188056a41106a22044200370300200241043a0000200341083a0088054101410020034188056a10452003290320210c2005201941186a2902003703002004201941106a2902003703002002201941086a2902003703002003200c3703a8052003201929020037038805411f102d2202450d0420024100290080a242370000200241176a4100290097a242370000200241106a4100290090a242370000200241086a4100290088a2423700002003429f808080f0033702cc03200320023602c8032003200341c8036a3602c80220034188056a200341c8026a103e20032903a805210c0240024020032802cc03220520032802d00322026b4108490d0020032802c80321050c010b200241086a22042002490d07200541017422022004200220044b1b22024100480d070240024020050d002002102d21050c010b20032802c80320052002102f21050b2005450d06200320023602cc03200320053602c80320032802d00321020b2003200241086a3602d003200520026a200c370000200341c8026a41186a220520033502d00342208620033502c803841000220241186a290000370300200341c8026a41106a2204200241106a290000370300200341c8026a41086a2208200241086a290000370300200320022900003703c80220021031200341c8046a41186a2005290300370300200341c8046a41106a2004290300370300200341c8046a41086a2008290300370300200320032903c8023703c804024020032802cc03450d0020032802c80310310b2003412036028c052003200341c8046a36028805200341206a20034188056a104420034188056a41086a220541b58cc000ad4280808080d00284220c1001220241086a29000037030020032002290000370388052002103120034188026a41086a200529030037030020032003290388053703880220034188056a200b1002104102402003280288052202450d0020034190056a2802004110490d08200328028c05450d00200210310b20034188056a41086a2202200c1001220541086a29000037030020032005290000370388052005103120034188026a41086a20022903003703002003200329038805370388022003200a370390052003200e37038805200b200f428080808080028410032003290320210b200341c0056a200d370300200341b8056a2006370300200241023a000020034191056a20032903c80137000020034199056a200341c8016a41086a290300370000200341a1056a200341c8016a41106a290300370000200341a9056a200341c8016a41186a290300370000200341c8056a2019290000370300200341d0056a201941086a290000370300200341d8056a201941106a290000370300200341e0056a201941186a2900003703002003410d3a008805200341e8056a200b370300410021054101410020034188056a1045200341d8006a105502402017450d00200710310b02402003412c6a280200450d00200328022810310b0c0e0b41e9bcc000413320034188046a419cbdc0001038000b410e41011033000b200541081033000b41e9bcc000413320034188046a419cbdc0001038000b411f41011033000b200241011033000b1034000b41e9bcc000413320034188046a419cbdc0001038000b2003280290052102200328028c05210502402004450d00200810310b0240201d450d00201c10310b201e450d02201f10310c020b2009450d01200410310c010b41c98ec0002105411721020b200341d8006a10552017450d01200710310c010b201510310240200441046a280200450d00200428020010310b2004410c6a104d0240200441206a280200450d00200428021c10310b200441286a104d02402004413c6a280200450d00200428023810310b200441c4006a104d0240200441d8006a280200450d00200428025410310b200441e0006a104d0240200441f4006a280200450d00200428027010310b200441fc006a104d024020044190016a280200450d00200428028c0110310b20044198016a104d0240200441ac016a280200450d0020042802a80110310b200441b4016a104d2004103102402013450d002013412c6c21052009210203400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b2002412c6a2102200541546a22050d000b0b419e8ec0002105411521022014450d00200910310b2003412c6a280200450d00200328022810310b4100210941012108410121072001290300a70e0407040506070b200341d4046a280200450d0020032802d00410310b41002107410121084101210920040e0405020304050b200341d4046a280200450d0020032802d00410310b41012107410021084101210920040e0403000102030b2008450d02200141146a280200450d02200128021010310c020b2007450d01200141146a280200450d01200128021010310c010b2009450d00200141146a280200450d00200128021010310b2000200236020420002005360200200341a00a6a24000bd20501037f20002d00002102024002400240024002400240024002404101102d2203450d00200320023a000020002d00012102200341014102102f2203450d01200320023a000120002d00022102200341024104102f2203450d02200320023a0002200320002d00033a000320002d00042102200341044108102f2203450d03200320023a0004200320002d00053a0005200320002d00063a0006200320002d00073a000720002d00082102200341084110102f2203450d04200320023a0008200320002d00093a0009200320002d000a3a000a200320002d000b3a000b200320002d000c3a000c200320002d000d3a000d200320002d000e3a000e200320002d000f3a000f20002d00102102200341104120102f2203450d05200320023a0010200320002d00113a0011200320002d00123a0012200320002d00133a0013200320002d00143a0014200320002d00153a0015200320002d00163a0016200320002d00173a0017200320002d00183a0018200320002d00193a0019200320002d001a3a001a200320002d001b3a001b200320002d001c3a001c200320002d001d3a001d200320002d001e3a001e200320002d001f3a001f024002402001280200220041046a2802002202200041086a28020022016b4120490d00200028020021020c010b200141206a22042001490d08200241017422012004200120044b1b22014100480d080240024020020d002001102d21020c010b200028020020022001102f21020b2002450d0720002002360200200041046a2001360200200041086a28020021010b200041086a200141206a360200200220016a220041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a29000037000020002003290000370000200310310f0b410141011033000b410241011033000b410441011033000b410841011033000b411041011033000b412041011033000b200141011033000b1034000b940102017f017e230041106b2206240002402002ad4220862001ad842004ad4220862003ad842005101d2207422088a72203450d002007a722042d0000220241014b0d00410021050240024020020e020100010b2003417f6a4104490d0120042800012101410121050b2000200136020420002005360200200641106a24000f0b41c49fc400412e200641086a41f49fc4001038000bfa2204097f017e097f027e230041d0046b22032400200341086a200110490240024020032802084101470d002000200329020c370204200041013602000c010b200341386a2802002104200341346a2802002105200341306a28020021060240024002400240024002400240024002404112102d2207450d0020072002290000370000200741106a200241106a2f00003b0000200741086a200241086a290000370000024041f000102d2208450d0002404105102d2202450d00200241046a41002d008a90403a000020024100280086904036000002404105102d2201450d00200141046a41002d008f90403a00002001410028008b904036000002404106102d2209450d00200941046a41002f009490403b000020094100280090904036000002404104102d220a450d00200a41e4c2d18b06360000200841003a006c2008410136026020084284808080c0003702582008200a360254200841003a005020084283808080802037024420084286808080e00037023c20082009360238200841013a00342008410036022820084285808080d0003702202008200136021c200841013a00182008410036020c20084285808080d00037020420082002360200200341d0036a41106a4284808080c00037030020034292808080a0023702d403200341003a00e803200320083602dc03200320073602d00320062004412c6c22016a210b200621022004450d0d200341086a4104722104200341c0036aad4280808080800284210c200141546a210d200341086a41186a210e20034180036a41206a210f20034180036a41106a211020034180036a41086a2111200621090240024003402009280200210a200f200941246a29020037030020034180036a41186a22022009411c6a2902003703002010200941146a29020037030020112009410c6a2902003703002003200941046a29020037038003200a450d0f2004200329038003370200200441086a2011290300370200200441106a2010290300370200200441186a2002290300370200200441206a200f2903003702002003200a360208200341f0036a41086a221241c8a1c200ad4280808080c003841001220241086a290000370300200320022900003703f00320021031200341c0036a41086a2012290300370300200320032903f0033703c00320034190046a200c100210410240024002402003280290042202450d0020032802940421132003280298042101200341003a0084042001450d0e200320022d00003a00f003200341013a00840420014101470d010c0d0b200341a8036a41086a4200370300200341a8036a41106a4100360200200341e0026a41106a200341f0036a41106a280200360200200341e0026a41086a2012290300370300200342003703a803200320032903f0033703e0020c010b200320022d00013a00f103200341023a00840420014102460d0b200320022d00023a00f203200341033a00840420014103460d0b200320022d00033a00f303200341043a00840420014104460d0b200320022d00043a00f403200341053a00840420014105460d0b200320022d00053a00f503200341063a00840420014106460d0b200320022d00063a00f603200341073a00840420014107460d0b200320022d00073a00f703200341083a00840420014108460d0b200320022d00083a00f803200341093a00840420014109460d0b200320022d00093a00f9032003410a3a0084042001410a460d0b200320022d000a3a00fa032003410b3a0084042001410b460d0b200320022d000b3a00fb032003410c3a0084042001410c460d0b200320022d000c3a00fc032003410d3a0084042001410d460d0b200320022d000d3a00fd032003410e3a0084042001410e460d0b200320022d000e3a00fe032003410f3a0084042001410f460d0b200320022d000f3a00ff03200341103a00840420014110460d0b200320022d00103a008004200341113a00840420014111460d0b200320022d00113a008104200341123a00840420014112460d0b200320022d00123a008204200341133a00840420014113460d0b200341a0046a41086a22012012290300370300200320022d00133a008304200341a0046a41106a2214200341f0036a41106a2215280200360200200320032903f0033703a00402402013450d00200210310b201520142802002202360200201220012903002216370300200341a8036a41086a2016370300200341a8036a41106a2002360200200320032903a00422173703f003200341e0026a41106a2002360200200341e0026a41086a2016370300200320173703a803200320173703e0020b0240200e200341a8036a411410ad050d0020032802102212450d03200341f0036a200341d0036a104a200341f0036a200a460d02200a200341f0036a412010ad05450d020b0240200328020c450d00200a10310b02402003280218450d00200328021410310b200d41546a210d2009412c6a2209200b470d000b200b21020c0f0b2003411c6a280200210f200328020c21132003280214211020032802182111200d450d072009412c6a2102034020022802002209450d08200241106a28020021012002410c6a28020021040240200241046a280200450d00200910310b02402001450d00200410310b2002412c6a2202200b470d000c080b0b41e49cc40041004100104b000b410441011033000b410641011033000b410541011033000b410541011033000b41f00041041033000b411241011033000b02402005450d00200610310b0240024002400240024041e000102d2202450d00200341f0036a41186a200a41186a290000370300200341f0036a41106a200a41106a290000370300200341f0036a41086a200a41086a2900003703002003200a2900003703f00320124101460d0120034180036a41186a200a41386a29000037030020034180036a41106a200a41306a29000037030020034180036a41086a200a41286a2900003703002003200a29002037038003201241024d0d02200341086a41186a2201200a41d8006a290000370300200341086a41106a2209200a41d0006a290000370300200341086a41086a2204200a41c8006a290000370300200a2900402116200220032903f003370000200241086a200341f0036a41086a290300370000200241106a200341f0036a41106a290300370000200241186a200341f0036a41186a2903003700002002200329038003370020200241286a20034180036a41086a290300370000200241306a20034180036a41106a290300370000200241386a20034180036a41186a29030037000020032016370308200241d8006a2001290300370000200241d0006a2009290300370000200241c8006a200429030037000020022003290308370040200f417f4c0d03410121010240200f450d00200f102d2201450d050b20012010200f10ab05210120034194036a200f36020020034190036a200f3602002003200136028c032003428380808030370284032003200236028003200341086a200341d0036a20034180036a104c20032802084101470d07200341146a2802002109200341106a280200210102400240024020032d000c220241024b0d00024020020e03030003030b20090d010c020b2001450d012009450d010b200110310b200041b38ec00036020420004101360200200041086a411636020020130d080c090b41e00041011033000b41e49cc40041014101104b000b41e49cc40041022012104b000b1032000b200f41011033000b200341003a0084040b41e9bcc0004133200341f0036a419cbdc0001038000b2003200328020c22123602b8042003200341146a280200220b3602c0042003200341106a280200220f3602bc0402402013450d00200a10310b02402011450d00201010310b200710310240200841046a280200450d00200828020010310b2008410c6a104d0240200841206a280200450d00200828021c10310b200841286a104d02402008413c6a280200450d00200828023810310b200841c4006a104d0240200841d8006a280200450d00200828025410310b200841e0006a104d200810310240200b41024b0d0041e49cc4004102200b104b000b200341086a201241f0006a104e20034180036a200341086a104f024002402003290380034201520d00200341d0036a41186a200341a0036a290300370300200341d0036a41106a20034180036a41186a290300370300200341d0036a41086a20034180036a41106a29030037030020032003290388033703d003200341f0036a41106a4200370300200341f0036a41186a4200370300200342003703f8032003428094ebdc033703f003200341086a200341d0036a200341f0036a1050200341e0026a41186a200341246a22022802002201360200200341e0026a41106a2003411c6a22092902002216370300200341e0026a41086a200341146a220429020022173703002003200329020c220c3703e0022003280208210a2004201737020020092016370200200220013602002003200a3602082003200c37020c200341086a41106a21044100210202400340200241086a22014118460d01200420026a2109200121022009290300500d000b200041e08ec00036020420004101360200200041086a41253602000c020b024002400240200b41034d0d002003290308211620032903102117200341086a201241a8016a104e20034180036a200341086a1051024020032802800322020d00200041858fc00036020420004101360200200041086a41193602000c050b2003280284032109410121010240024020034180036a41086a22082802004121460d00411b210a41d18fc00021040c010b024020022d0000412a460d00411a210a41ec8fc00021040c010b200341d2036a200241036a2d00003a0000200341106a200241146a290000370300200341156a200241196a290000370000200320022f00013b01d0032003200229000c3703082002280008210a20022800042104410021010b200341e0026a41026a220b200341d0036a41026a2d00003a00002008200341086a41086a29030037030020034180036a41106a200341086a41106a290300370300200320032f01d0033b01e002200320032903083703800320010d020c010b41e49cc4004103200b104b000b200341a0046a41026a200b2d00003a0000200341f0036a41086a220120034180036a41086a290300370300200341f0036a410d6a220820034180036a410d6a290000370000200320032f01e0023b01a00420032003290380033703f00302402009450d00200210310b200041306a2017370300200041286a2016370300200041086a20032f01a0043b00002000410f6a200a3600002000410b6a2004360000200020032903f003370013200041003602002000410a6a200341a2046a2d00003a00002000411b6a2001290300370000200041206a2008290000370000200341b8046a1055200f450d07201210310c070b2000200436020420004101360200200041086a200a3602002009450d01200210310c010b200041c98ec00036020420004101360200200041086a41173602000b200341b8046a1055200f450d04201210310c040b200a10310b02402011450d00201010310b200710310240200841046a280200450d00200828020010310b2008410c6a104d0240200841206a280200450d00200828021c10310b200841286a104d02402008413c6a280200450d00200828023810310b200841c4006a104d0240200841d8006a280200450d00200828025410310b200841e0006a104d200810310c020b2009412c6a21020b2000419e8ec00036020420004101360200200041086a411536020002402002200b460d00034020022802002209450d01200241106a28020021012002410c6a28020021040240200241046a280200450d00200910310b02402001450d00200410310b2002412c6a2202200b470d000b0b02402005450d00200610310b200710310240200841046a280200450d00200828020010310b2008410c6a104d0240200841206a280200450d00200828021c10310b200841286a104d02402008413c6a280200450d00200828023810310b200841c4006a104d0240200841d8006a280200450d00200828025410310b200841e0006a104d200810310b200341d0046a24000b920201057f230041206b2202240020022001a7220336021020022001422088a7220436021402402004450d0020032d0000210520022004417f6a3602142002200341016a360210200541014b0d0041002103024002400240024020050e020100010b200241086a200241106a102c20022802080d0320022802142205200228020c2204490d032004417f4c0d010240024020040d00410121030c010b2004107a2203450d03200320022802102206200410ab051a2002200520046b3602142002200620046a3602100b2003450d032004ad220142208620018421010b2000200137020420002003360200200241206a24000f0b1032000b200441011033000b41c49fc400412e200241186a41f49fc4001038000bd70904057f037e017f027e230041d0006b220424000240024002400240024002404114102d2205450d00200541002900a09b41370000200541106a41002800b09b41360000200541086a41002900a89b4137000020044294808080c002370224200420053602202001200441206a1046200441306a41186a220620043502284220862004350220841000220541186a290000370300200441306a41106a2207200541106a290000370300200441306a41086a2208200541086a2900003703002004200529000037033020051031200441186a2006290300370300200441106a2007290300370300200441086a20082903003703002004200429033037030002402004280224450d00200428022010310b200441306a2004ad220942808080808004841002104102400240200428023022050d00410121060c010b200441306a41086a2802004110490d02200541086a290000210a2005290000210b410021062004280234450d00200510310b4118102d2205450d02200541002900b49b41370000200541106a41002900c49b41370000200541086a41002900bc9b41370000200442988080808003370224200420053602202001200441206a1046200441306a41186a220720043502284220862004350220841000220541186a290000370300200441306a41106a2208200541106a290000370300200441306a41086a220c200541086a2900003703002004200529000037033020051031200441186a2007290300370300200441106a2008290300370300200441086a200c2903003703002004200429033037030002402004280224450d00200428022010310b200441306a200942808080808004841002104102400240200428023022050d004200210d4200210e0c010b200441306a41086a2802004110490d04200541086a290000210e2005290000210d2004280234450d00200510310b02400240200d42004200200b7d20061b85200e42004200200a200b420052ad7c7d20061b8584500d004114102d2205450d06200541002900a09b41370000200541106a41002800b09b41360000200541086a41002900a89b4137000020044294808080c002370224200420053602202001200441206a1046200441306a41186a220620043502284220862004350220841000220541186a290000370300200441306a41106a2207200541106a290000370300200441306a41086a2208200541086a2900003703002004200529000037033020051031200441186a2006290300370300200441106a2007290300370300200441086a20082903003703002004200429033037030002402004280224450d00200428022010310b200441306a200942808080808004841002104102400240200428023022050d004200210b420021090c010b200441306a41086a2802004110490d08200541086a29000021092005290000210b2004280234450d00200510310b2001200b20027c220a200920037c200a200b54ad7c109702200041106a2003370300200041086a2002370300410021050c010b2000419af4c200360204200041086a4122360200410121050b20002005360200200441d0006a24000f0b411441011033000b41e9bcc0004133200441206a419cbdc0001038000b411841011033000b41e9bcc0004133200441206a419cbdc0001038000b411441011033000b41e9bcc0004133200441206a419cbdc0001038000bef0204027f017e027f057e230041306b22012400200141186a41086a2202418a9bc100ad4280808080e0028422031001220441086a2900003703002001200429000037031820041031200141086a41086a2205200229030037030020012001290318370308200141186a200141086aad4280808080800284220610021041024002400240200128021822040d0042002107420021080c010b20022802004110490d01200441086a290000210820042900002107200128021c450d00200410310b2000280200220441086a29030021092004290300210a200220031001220441086a290000370300200120042900003703182004103120052002290300370300200120012903183703082001427f200820097c2007200a7c22032007542202ad7c22072002200720085420072008511b22021b3703202001427f200320021b3703182006200141186aad42808080808002841003200141306a24000f0b41e9bcc0004133200141286a419cbdc0001038000bcc0203017f017e067f230041106b220224002002410036020820024201370300200029030021030240024002404108102d2204450d00200242888080808001370204200220043602002004200337000020002802082105200041106a28020022042002106f0240024020022802042206200228020822076b2004490d00200228020021060c010b200720046a22082007490d03200641017422092008200920084b1b22084100480d030240024020060d002008102d21060c010b200228020020062008102f21060b2006450d0220022008360204200220063602000b2002200720046a360208200620076a2005200410ab051a2002200236020c200041146a2002410c6a103e200228020421002001290200200235020842208620022802002204ad84100302402000450d00200410310b200241106a24000f0b410841011033000b200841011033000b1034000bea1f02097f037e230041800c6b22032400200341b0056a418ea7c200ad4280808080800284100210414101210402400240024002400240024002400240024002400240024002400240024002400240024020032802b00522050d00410121060c010b200341b8056a2802004104490d01200528000021074100210620032802b405450d00200510310b41002108410021094100210a02402001450d00200141057422054100480d0e2005102d2204450d082001410574220a41606a410576210b20042105200021090340200941086a290000210c200941106a290000210d200941186a290000210e20052009290000370000200541186a200e370000200541106a200d370000200541086a200c370000200541206a2105200941206a2109200a41606a220a0d000b200b41016a210a200121090b2003419c056a200736020020032006360298052003200241980510ab05220541a8056a200a360200200541a4056a2009360200200520043602a005200541e00a6a41086a220a41c2c6c400ad42808080809002841001220941086a290000370300200520092900003703e00a20091031200541800b6a41086a200a290300370300200520052903e00a3703800b200541b0056a200541800b6aad4280808080800284220c10021041024020052802b0052209450d00200541b0056a41086a2802004104490d022009280000210820052802b405450d00200910310b0240200841016a220a2008490d00200541e00a6a41086a220941c2c6c400ad42808080809002841001220341086a290000370300200520032900003703e00a20031031200541800b6a41086a22032009290300370300200520052903e00a3703800b2005200a3602b005200c200541b0056aad4280808080c000841003200541b0056a200541b00510ab051a20094181a8c200ad4280808080d001841001220a41086a2900003703002005200a2900003703e00a200a103120032009290300370300200520052903e00a3703800b200541c80b6a200c100210410240024020052802c80b450d00200541900b6a41086a200541c80b6a41086a280200360200200520052903c80b3703900b0c010b200541003602e80b200542083703e00b200541003602e80a200542013703e00a4100200541e00a6a106f200541900b6a41086a20052802e80a360200200520052903e00a3703900b200541e00b6a107e0b200541a00b6a41086a200541900b6a41086a2802002209360200200520052903900b3703a00b024002402009450d00200541e00a6a20052802a00b2009410110c50320052802e00a4101470d0120052802a40b450d0d20052802a00b10310c0d0b4101200541a00b6a106f200541b0056a200541a00b6a10c6030c0a0b20052802e40a21040240200541ec0a6a2802002209200541e00a6a41086a280200220a460d0020052802a80b2009200a6b6a220341046a2202417f4c0d110240024020020d00410121060c010b2002102d2206450d050b200520023602b40b200520063602b00b200520033602b80b2005200541b00b6a3602e00a2004200541e00a6a200910b50120032009490d0520052802b80b22042003490d0620052802a80b2204200a490d0720052802b00b210220052802a00b21062005200320096b22033602c00b20052004200a6b22043602c40b20032004470d08200220096a2006200a6a200310ab051a200541b0056a200541b00b6a10c60320052802b80b210a20052802b40b210320052802b00b210920052802a40b450d0b20052802a00b10310c0b0b2005200541a00b6a3602e00a2004200541e00a6a200a10b501200541b0056a200541a00b6a10c6030c090b200510c7030c0c0b41e9bcc0004133200341e00a6a419cbdc0001038000b41e9bcc0004133200541e00a6a419cbdc0001038000b200241011033000b20092003107b000b2003200410b601000b200a2004107b000b200541e00b6a41146a4103360200200541ec0b6a4104360200200541c80b6a41146a4103360200200542033702cc0b20054180ecc4003602c80b200541043602e40b2005200541c00b6a3602f80b2005200541c40b6a3602fc0b200542043703f00a200542013702e40a200541d4ecc4003602e00a2005200541e00b6a3602d80b2005200541e00a6a3602f00b2005200541fc0b6a3602e80b2005200541f80b6a3602e00b200541c80b6a4190edc40010b301000b200541011033000b20052802a80b210a20052802a40b210320052802a00b21090b20090d010b200541b0056a10c7030c010b200c200aad4220862009ad84100302402003450d00200910310b200541b0056a10c703200541e00a6a41086a220a41afa7c200ad4280808080d001841001220941086a290000370300200520092900003703e00a20091031200541800b6a41086a200a290300370300200520052903e00a3703800b200541b0056a200c100210410240024020052802b00522090d004100210b0c010b200541b0056a41086a2802004104490d032009280000210b20052802b405450d00200910310b2001450d00200141057421070240034002400240024002400240024002400240024002400240024002400240024002404112102d2209450d00200941106a41002f009ea8423b0000200941086a4100290096a8423700002009410029008ea842370000200541b0056a41186a22032009ad4280808080a002841000220a41186a290000370300200541b0056a41106a2201200a41106a290000370300200541b0056a41086a2204200a41086a2900003703002005200a2900003703b005200a1031200541e00a6a41186a220a2003290300370300200541e00a6a41106a22022001290300370300200541e00a6a41086a22062004290300370300200520052903b0053703e00a200910314120102d2209450d01200920052903e00a370000200941186a200a290300370000200941106a2002290300370000200941086a2006290300370000200541b0056a200010af022009412041c000102f2209450d02200920052900b005370020200941386a2003290000370000200941306a2001290000370000200941286a2004290000370000200541e00a6a2009ad4280808080800884220c100210410240024020052802e00a2203450d0020052802e80a210a20052802e40a21010c010b200541003602b805200542013703b0054100200541b0056a106f20052802b805210a20052802b405210120052802b00521030b2005200a3602880b200520013602840b200520033602800b02400240024002400240200a450d00200541b0056a2003200a410110c50320052802b0054101460d0420052802b405210420052802bc05220a20052802b8052203460d0320052802880b200a20036b6a220141046a2202417f4c0d1a20020d01410121060c020b4101200541800b6a106f0240024020052802840b220320052802880b220a6b4104490d0020052802800b21030c010b200a41046a2201200a490d182003410174220a2001200a20014b1b220a4100480d180240024020030d00200a102d21030c010b20052802800b2003200a102f21030b2003450d082005200a3602840b200520033602800b20052802880b210a0b2005200a41046a3602880b2003200a6a200b3600000240024020052802840b220320052802880b220a6b4104490d0020052802800b21030c010b200a41046a2201200a490d182003410174220a2001200a20014b1b220a4100480d180240024020030d00200a102d21030c010b20052802800b2003200a102f21030b2003450d092005200a3602840b200520033602800b20052802880b210a0b2005200a41046a3602880b2003200a6a20083600000c120b2002102d2206450d080b200520023602cc0b200520063602c80b200520013602d00b2005200541c80b6a3602b0052004200541b0056a200a10b5012001200a490d0820052802d00b22042001490d0920052802880b22042003490d0a20052802c80b210220052802800b210620052001200a6b22013602fc0b2005200420036b22043602900b20012004470d0b2002200a6a200620036a200110ab051a0240024020052802cc0b220320052802d00b220a6b4104490d0020052802c80b21030c010b200a41046a2201200a490d162003410174220a2001200a20014b1b220a4100480d160240024020030d00200a102d21030c010b20052802c80b2003200a102f21030b2003450d0d2005200a3602cc0b200520033602c80b20052802d00b210a0b2005200a41046a3602d00b2003200a6a200b3600000240024020052802cc0b220320052802d00b220a6b4104490d0020052802c80b21030c010b200a41046a2201200a490d162003410174220a2001200a20014b1b220a4100480d160240024020030d00200a102d21030c010b20052802c80b2003200a102f21030b2003450d0e2005200a3602cc0b200520033602c80b20052802d00b210a0b2005200a41046a3602d00b2003200a6a200836000020052802d00b210320052802cc0b210120052802c80b210a20052802840b450d1120052802800b10310c110b2005200541800b6a3602b0052004200541b0056a200310b5010240024020052802840b220320052802880b220a6b4104490d0020052802800b21030c010b200a41046a2201200a490d152003410174220a2001200a20014b1b220a4100480d150240024020030d00200a102d21030c010b20052802800b2003200a102f21030b2003450d0e2005200a3602840b200520033602800b20052802880b210a0b2005200a41046a3602880b2003200a6a200b3600000240024020052802840b220320052802880b220a6b4104490d0020052802800b21030c010b200a41046a2201200a490d152003410174220a2001200a20014b1b220a4100480d150240024020030d00200a102d21030c010b20052802800b2003200a102f21030b2003450d0f2005200a3602840b200520033602800b20052802880b210a0b2005200a41046a3602880b2003200a6a20083600000c0f0b20052802840b450d1120052802800b10310c110b411241011033000b412041011033000b41c00041011033000b200a41011033000b200a41011033000b200241011033000b200a2001107b000b2001200410b601000b20032004107b000b200541e00b6a41146a4103360200200541ec0b6a4104360200200541e00a6a41146a4103360200200542033702e40a20054180ecc4003602e00a200541043602e40b2005200541fc0b6a3602a00b2005200541900b6a3602b00b200542043703c005200542013702b405200541d4ecc4003602b0052005200541e00b6a3602f00a2005200541b0056a3602f00b2005200541b00b6a3602e80b2005200541a00b6a3602e00b200541e00a6a4190edc40010b301000b200a41011033000b200a41011033000b200a41011033000b200a41011033000b20052802880b210320052802840b210120052802800b210a0b200a450d01200c2003ad422086200aad84100302402001450d00200a10310b200041206a210020091031200741606a22070d000c020b0b200910310b200541800c6a24000f0b1034000b41e9bcc0004133200541e00a6a419cbdc0001038000b1032000b952901067f20002d0000210202400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141046a2203280200200141086a22042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0001210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0220012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0002210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0320012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0003210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0420012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0004210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0520012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0005210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0620012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0006210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0720012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0007210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0820012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0008210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0920012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0009210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0a20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000a210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0b20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000b210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0c20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000c210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0d20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000d210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0e20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000e210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0f20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000f210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1020012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0010210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0011210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1220012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0012210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1320012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0013210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1420012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0014210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1520012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0015210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1620012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0016210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1720012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0017210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1820012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0018210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1920012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0019210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1a20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001a210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1b20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001b210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1c20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001c210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1d20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001d210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1e20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001e210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1f20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001f210502400240200328020020042802002200460d00200128020021030c010b200041016a22032000490d21200041017422062003200620034b1b22064100480d210240024020000d002006102d21030c010b200128020020002006102f21030b2003450d2020012003360200200141046a2006360200200141086a28020021000b2004200041016a360200200320006a20053a00000f0b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200641011033000b1034000baa0201047f230041d0006b2203240002404110102d2204450d0020044100290089f342370000200441086a4100290091f342370000200342908080808002370224200320043602202000200341206a1046200341306a41186a220020033502284220862003350220841000220441186a290000370300200341306a41106a2205200441106a290000370300200341306a41086a2206200441086a2900003703002003200429000037033020041031200341186a2000290300370300200341106a2005290300370300200341086a20062903003703002003200329033037030002402003280224450d00200328022010310b20032002370338200320013703302003ad4280808080800484200341306aad42808080808002841003200341d0006a24000f0b411041011033000bef0204027f017e027f057e230041306b22012400200141186a41086a220241f7f2c200ad4280808080a0028422031001220441086a2900003703002001200429000037031820041031200141086a41086a2205200229030037030020012001290318370308200141186a200141086aad4280808080800284220610021041024002400240200128021822040d0042002107420021080c010b20022802004110490d01200441086a290000210820042900002107200128021c450d00200410310b2000280200220441086a29030021092004290300210a200220031001220441086a290000370300200120042900003703182004103120052002290300370300200120012903183703082001427f200820097c2007200a7c22032007542202ad7c22072002200720085420072008511b22021b3703202001427f200320021b3703182006200141186aad42808080808002841003200141306a24000f0b41e9bcc0004133200141286a419cbdc0001038000bb15c070c7f017e017f027e127f017e037f23004180116b22022400200241b8016a200141146a10dc040240024020022d00f4054102470d002000418b97c40036020420004101360200200041086a41143602000c010b20022802bc02210320022802b802210420022802b402210520022802ac02210620022802a80221072002200241c0026a41b40110ab052108200141106a28020021092001280208210a200841003602fc08200841003602f008200820093602ec082008200a3602e808200841b8016a200841e8086a410010a301200841980b6a41086a220b200841b8016a410c6a220a290200370300200841980b6a41106a220c200841b8016a41146a290200370300200841980b6a41186a220d200841d4016a280200360200200820082902bc013703980b410121090240024002400240024002400240024002400240024020082802b8014101470d00200841a8106a41086a200841880e6a41086a290300370300200820082903880e3703a810200829029c0b210e20082802980b210f0c010b200841b8016a41186a2209200d280200360200200841b8016a41106a220d200c290300370300200841b8016a41086a200b290300370300200841880e6a41086a220b200841b8016a41146a290200370300200820082903980b22103703b8012008200a2902003703880e20082902bc012111200841a8106a41086a220c200b290300370300200820082903880e3703a810200820113702940c200820103e02900c200841900c6a41146a200c290300370200200841900c6a410c6a20082903a8103702002008410b3602b810200841b8016a200841900c6a410010a301200841b8066a41086a20092903003703002008200d2903003703b80620082902bc01211041022109024020082802b8014101460d00200a2802002109200841d8106a41086a200841b8066a41086a290300370300200820082903b8063703d8100b200841b80b6a41086a220b200841d8106a41086a2212290300370300200820082903d8103703b80b02400240024020094102460d00200841c8016a210d200841c4016a210c200841880e6a41047221134102210a0340200c20082903b80b370200200c41086a200b290300370200200820093602c001200820103703b801200841880e6a200841b8016a108103024020082802880e4101470d00200841b8106a41086a201341086a280200360200200820132902003703b8100c020b200828028c0e22090d02200841b8016a200841900c6a200a417f6a10a301200841b8066a41086a2214200d41086a2902003703002008200d2902003703b80620082902bc01211041022109024020082802b8014101460d0020082802c401210920122014290300370300200820082903b8063703d8100b200b2012290300370300200820082903d8103703b80b200a41016a210a20094102470d000b0b4100210b4104210f410021090c010b20082903900e2110410c102d220f450d02200f2010370204200f2009360200200841b8016a200841900c6a200a417f6a10a301200841b8066a41086a220b200841d0016a2903003703002008200841c8016a2903003703b8064101210920082902bc0121104102210c024020082802b8014101460d00200841b8016a410c6a280200210c200841d8106a41086a200b290300370300200820082903b8063703d8100b2008419c0e6a200841d8106a41086a290300370200200820103703880e200820082903d8103702940e2008200c3602900e4101210b200c4102460d00200841940e6a210d200841b8016a41106a210c200841b8066a41047221140340200841b8016a41186a200841880e6a41186a280200360200200c200841880e6a41106a290300370300200841b8016a41086a200841880e6a41086a290300370300200820082903880e3703b801200841b8066a200841b8016a108103024020082802b8064101470d00200841b8106a41086a201441086a280200360200200820142902003703b810410121094101210b0c020b024020082802bc062212450d0020082903c0062110200841b8016a41106a210d200841880e6a410c6a2115200841b8066a4104722116410121094101210b024003400240200b2009470d00200941016a220b2009490d0a2009410174220c200b200c200b4b1b220bad420c7e2211422088a70d0a2011a7220c4100480d0a0240024020090d00200c102d210f0c010b200f2009410c6c200c102f210f0b200f450d020b200f2009410c6c6a220c2010370204200c2012360200200841b8016a200841900c6a200a10a301200841b8066a41086a2214200d41086a22172902003703002008200d2902003703b80620082902bc0121104102210c024020082802b8014101460d0020082802c401210c200841d8106a41086a2014290300370300200820082903b8063703d8100b200941016a2109201520082903d810370200201541086a2218200841d8106a41086a2213290300370200200820103703880e2008200c3602900e200c4102460d04200a41016a210a0340200841b8016a41186a200841880e6a41186a280200360200200d200841880e6a41106a290300370300200841b8016a41086a200841880e6a41086a290300370300200820082903880e3703b801200841b8066a200841b8016a108103024020082802b8064101470d00200841b8106a41086a201641086a280200360200200820162902003703b8100c060b024020082802bc062212450d0020082903c00621100c020b200841b8016a200841900c6a200a10a301201420172902003703002008200d2902003703b80620082902bc0121104102210c024020082802b8014101460d0020082802c401210c20132014290300370300200820082903b8063703d8100b201520082903d81037020020182013290300370200200820103703880e200a41016a210a2008200c3602900e200c4102470d000c050b0b0b200c41041033000b200841b8016a200841900c6a200a10a301200841b8066a41086a2209200c41086a2902003703002008200c2902003703b80620082902bc0121104102210b024020082802b8014101460d0020082802c401210b200841d8106a41086a2009290300370300200820082903b8063703d8100b200d20082903d810370200200d41086a200841d8106a41086a290300370200200820103703880e41012109200a41016a210a2008200b3602900e200b4102470d000b4101210b0b024020082802b810220c410b470d002009ad422086200bad84210e410021090c010b20082902bc10210e02402009450d002009410c6c210a200f210903400240200941046a280200450d00200928020010310b2009410c6a2109200a41746a220a0d000b0b410121090240200b450d00200f10310b200c210f0b20090d070240418002102d2209450d000240418008102d220a450d00200841c8016a428008370300200841003a00d0012008200a3602c401200842103702bc01200820093602b801200820012903002210423886201042288642808080808080c0ff0083842010421886428080808080e03f8320104208864280808080f01f838484201042088842808080f80f832010421888428080fc07838420104228884280fe038320104238888484843703880e2008200841c4016a3602900c201079a7220a41037621090240200a41c8004f0d00200841900c6a200841880e6a20096a410820096b108d03024020082d00d0010d00200841b8016a108c030b024020082802c0010d0020082802cc01211920082802c801211a20082802c401211b024020082802bc01450d0020082802b80110310b02404120102d221c450d00201c200829029401370000201c41186a200841ac016a290200370000201c41106a200841a4016a290200370000201c41086a2008419c016a290200370000410041003502eced4442adfed5e4d485fda8d8007e200841b8016aad7c421f8922103e02eced4402404138102d2217450d002017410036023020174100360220201741003602082017428180808010370300201741286a221d4204370300201741246a221e41bccac300360200201741186a2010370300201741ecedc400ad370310201741086a211f200f200e422088a72209410c6c6a2120024020090d00200f21140c080b201741206a2121201741106a2122200f2114034020142209410c6a211420092802002223450d0820092902042110200841b80b6a41186a22094200370300200841b80b6a41106a220a4200370300200841b80b6a41086a22014200370300200842003703b80b200841880e6a410041cc0110aa051a200841013b01d80f20084188013602d40f200841880e6a20232010422088a7220d108f03200841b8016a200841880e6a41d80110ab051a200841b8016a200841b80b6a4120109003200841900c6a41086a220b2001290300370300200841900c6a41106a220c200a290300370300200841900c6a41186a220a2009290300370300200820082903b80b3703900c02400240024002404120102d2201450d00200120082903900c370000200141186a200a290300370000200141106a200c290300370000200141086a200b290300370000201c2001460d01201c2001412010ad052109200d411f4b0d012009450d01200110312010a7450d02202310310c020b412041011033000b201f2802000d012017417f3602082008201741186a2903002224201729031022117c3703c00120082024201185222420114218898520244210868520244225897c3703b80120014120200841b8016a10ff0220082903c00120082903b801852211421988a741ff0071222541087420257222094110742009722126201d280200210d201e2802002115410021182017280220220c2011a72227712216210b034002402015200b6a28000022132026732209417f73200941fffdfb776a71418081828478712209450d00024003400240200d200968410376200b6a200c7141186c6a220a2802084120470d00200a28020022122001460d0220012012412010ad05450d020b2009417f6a2009712209450d020c000b0b200a280210210b200a2010370210200a28020c2109200a202336020c20011031201f201f28020041016a3602002009450d02200b450d02200910310c020b201841046a2218200b6a200c71210b201320134101747141808182847871450d000b200820223602880e4104210903402016220a20096a200c712116200941046a21092015200a6a28000041808182847871220b450d000b02402015200b68410376200a6a200c7122096a2c0000220a4100480d0020152015280200418081828478716841037622096a2d0000210a0b201728022c210b0240200a4101712212450d00200b0d00200841b8016a2021200841880e6a10fe022017280220220c202771210a201e2802002115410421090340200a220b20096a200c71210a200941046a21092015200b6a28000041808182847871220d450d000b02402015200d68410376200b6a200c7122096a2c00004100480d002015280200418081828478716841037621090b201d280200210d201728022c210b0b2017200b20126b36022c201520096a20253a0000200c2009417c6a7120156a41046a20253a0000200d200941186c6a220920103702102009202336020c200942a08080808004370204200920013602002017201728023041016a3602302017201728020841016a3602080b20142020470d010c0a0b0b419eddc4004110200841b8016a418cd3c3001038000b413841081033000b412041011033000b41b79bc400410e41c89bc40010a401000b20094108107b000b41800841011033000b41800241041033000b410c41041033000b20142020460d00034020142802002209450d010240201441046a280200450d00200910310b2014410c6a22142020470d000b0b0240200ea7450d00200f10310b200820173602b80b200841d8106a201f201c412010aa010240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020082802d810220a450d00200841d8106a41086a280200210120082802dc10210b4120102d2209450d09410041003502eced4442adfed5e4d485fda8d8007e200841e8086aad22107c421f8922113e02eced444100201142ffffffff0f8342adfed5e4d485fda8d8007e20107c421f8922243e02eced442009201c290000370000200941186a201c41186a290000370000200941106a201c41106a290000370000200941086a201c41086a2900003700004100202442ffffffff0f8342adfed5e4d485fda8d8007e20107c421f8922103e02eced44200841d4026a42a08080808004370200200820173602dc02200820093602d002200841003602c802200841c0026a4100360200200841b8026a4204370300200841b4026a41bccac300360200200841b0026a4100360200200841a8026a2010370300200841a0026a41ecedc400ad221037030020084190026a410036020020084188026a420437030020084184026a41bccac30036020020084180026a4100360200200841f8016a2024370300200841f0016a2010370300200841e0016a4100360200200841d8016a4204370300200841d4016a41bccac300360200200841b8016a41186a4100360200200841b8016a41106a20113703002008410036029802200841003602e801200820103703c001200841003602b801200841e8086a200a200110a10102400240024020082802e8084101460d00200841f0086a280200210920082802ec082101024020082802c802220c41034b0d0002400240200c0e0405000104050b20082802cc02220c200c280200417f6a36020020082802cc02220c2802000d040240200c41106a280200450d00200c28020c10310b0240200c411c6a280200450d00200c28021810310b20082802cc02220c200c280204417f6a36020420082802cc02220c2802040d04200c10310c040b20082802cc02220c200c280200417f6a36020020082802cc02220c2802000d030240200c41106a280200450d00200c28020c10310b200c41186a10a50120082802cc02220c200c280204417f6a36020420082802cc02220c2802040d03200c10310c030b20082802cc02220c200c280200417f6a36020020082802cc02220c2802000d020240200c41106a280200450d00200c28020c103120082802cc02210c0b200c200c280204417f6a36020420082802cc02220c2802040d02200c10310c020b200841880e6a41086a200841e8086a41106a2802003602002008200841e8086a41086a2903003703880e20082802ec082109200841b8016a10a701200b450d03200a10310c030b200841cc026a10a6010b200820093602cc02200820013602c802200841880e6a200841b8016a41a80110ab051a0240200b450d00200a10310b200841900c6a200841880e6a41a80110ab051a4100211720082802a00d0e050702030405070b200841b80b6a10a801410321090b200841b8066a41086a20082903880e370300200841c8066a200841880e6a41086a280200360200200820093602bc06200841013602b8060c060b41012117200841a40d6a2802002215280200220941016a41014b0d030c130b41022117200841a40d6a2802002215280200220941016a41014d0d120c020b41032117200841a40d6a2802002215280200220941016a41014d0d110c010b41042117200841a40d6a2802002215280200220941016a41014d0d100b2015200941016a3602000b2019417f4c0d0202400240024020190d004100210b4101210a0c010b2019102d2209450d052009201b201910ab0521144100210d4100210c410021094100210b4101210a0340200941016a21012014200d6a2d0000211202402009200b470d00200c2001200c20014b1b220b4100480d130240024020090d00200b102d210a0c010b200a2009200b102f210a0b200a450d090b200a20096a20124104763a000002402001200b470d00200141016a220b2001490d13200c41026a2213200b2013200b4b1b220b4100480d13200a2001200b102f220a450d0a0b200a20096a41016a2012410f713a0000200c41046a210c200941026a21092019200d41016a220d470d000b201410312009200b470d010b200b41016a2209200b490d10200b41017422012009200120094b1b22014100480d1002400240200b0d002001102d210a0c010b200a200b2001102f210a0b200a450d08200b21092001210b0b2008200a3602b801200a20096a41103a00002008200b3602bc012008200941016a3602c001200841b8066a200841900c6a20172015200841b8016a10a9010240200b450d00200a10310b200841900c6a10a7010b201c1031024020082802b8064101470d0020082802bc060d11200841c4066a280200450d11200841c0066a28020010310c110b200841b8066a41086a280200411620082802bc0622091b210b200941c797c40020091b2101024020090d002000200136020420004101360200200041086a200b3602000c120b200841c4066a28020021092008410036028c0b200841003602800b200820093602fc0a200820013602f80a2009450d0f20012d000041c001490d0f4100210a02400340200841b8016a200841f80a6a200a220910a30120082802b8014101460d01200941016a210a20082802c4014102470d000b0b20082009ad42208642018437028c0b0240024020094103460d00200841880e6a200841f80a6a410110a301200841980b6a41086a2209200841880e6a410c6a220a290200370300200841980b6a41106a220c200841880e6a41146a220d290200370300200841980b6a41186a2212200841a40e6a2802003602002008200829028c0e3703980b20082802880e4101470d01200841b8016a41086a200829029c0b370300200841f80b6a41086a200841b8016a41186a290300370300200841f80b6a41106a200841d8016a2903003703002008200841b8016a41106a2903003703f80b0c110b200841880e6a200841f80a6a410010a301200841980b6a41086a2209200841880e6a410c6a220a290200370300200841980b6a41106a220c200841880e6a41146a220d290200370300200841980b6a41186a2212200841a40e6a2802003602002008200829028c0e3703980b024020082802880e4101470d00200841b8016a41086a200829029c0b370300200841b8106a41086a200841b8016a41186a290300370300200841b8106a41106a200841d8016a2903003703002008200841b8016a41106a2903003703b8100c110b200841880e6a41186a2012280200360200200841880e6a41106a200c290300370300200841880e6a41086a2009290300370300200841d8106a41086a2209200d290200370300200820082903980b22103703880e2008200a2902003703d810200829028c0e2111200841a8106a41086a220a2009290300370300200820082903d8103703a810200820113702940c200820103e02900c200841900c6a41146a200a290300370200200841900c6a410c6a20082903a810370200200841b8016a200841900c6a10b104200841b8106a41086a200841b8016a41186a290300370300200841b8106a41106a200841d8016a2903003703002008200841b8016a41106a2903003703b81020082802b8014101460d10200841b8016a41086a2903002110200841f80b6a41106a200841b8106a41106a290300370300200841f80b6a41086a200841b8106a41086a290300370300200820082903b8103703f80b200841d8106a200841f80a6a410110a301200841980b6a41086a2209200841d8106a410c6a220a290200370300200841980b6a41106a220c200841d8106a41146a220d290200370300200841980b6a41186a2212200841f4106a280200360200200820082902dc103703980b024020082802d8104101470d00200841b8016a41086a200829029c0b37030020084182106a20082d00bb013a0000200820082802980b3602bc01200841013a00b801200820082f00b9013b018010200841880e6a200841b8016a41106a41f10110ab051a0c110b200841d8106a41186a2012280200360200200841d8106a41106a200c290300370300200841d8106a41086a200929030037030020084190106a41086a2209200d290200370300200820082903980b22113703d8102008200a2902003703901020082902dc102124200841a8106a41086a220a200929030037030020082008290390103703a810200820243702bc0b200820113e02b80b200841b80b6a41146a200a290300370200200841b80b6a410c6a20082903a810370200200841b8016a200841b80b6a109b0420084180106a41026a220c20082d00bb013a0000200820082f00b9013b018010200841b8016a41086a290300211120082802bc01210920082d00b801210a200841880e6a200841b8016a41106a41f10110ab051a200a4101460d10200841fc0f6a41026a200c2d00003a0000200820082f0180103b01fc0f200841900c6a200841880e6a41f10110ab051a200841b8016a200841f80a6a410210a301200841980b6a41086a220a200841b8016a410c6a220c290200370300200841980b6a41106a220d200841b8016a41146a2212290200370300200841980b6a41186a2214200841d4016a280200360200200820082902bc013703980b024020082802b8014101470d0020084190106a41086a200829029c0b370300200820082802980b3602941020084101360290100c110b200841b8016a41186a2014280200360200200841b8016a41106a200d290300370300200841b8016a41086a200a290300370300200841b80b6a41086a220a2012290200370300200820082903980b22243703b8012008200c2902003703b80b20082902bc01210e200841a8106a41086a220c200a290300370300200820082903b80b3703a8102008200e3702dc10200820243e02d810200841d8106a41146a200c290300370200200841d8106a410c6a20082903a81037020020084190106a200841d8106a10bb022008280290104101460d10200841e00a6a41106a200841f80b6a41106a290300370300200841e00a6a41086a200841f80b6a41086a290300370300200820082903f80b3703e00a200820082f01fc0f3b01dc0a2008200841fc0f6a41026a2d00003a00de0a200841e8086a200841900c6a41f10110ab051a200841d0086a41086a200841e00b6a41086a290000370300200841d0086a41106a200841e00b6a41106a2d00003a0000200841cc086a41026a200841840e6a41026a2d00003a0000200820082f01dc0b3b01e608200820082900e00b3703d008200820082f00840e3b01cc082010422088a721152008419c106a280200210a20084190106a41086a280200210d200828029410210c2010a72117410021120c0c0b200841880e6a41186a2012280200360200200841880e6a41106a200c290300370300200841880e6a41086a2009290300370300200841d8106a41086a2209200d290200370300200820082903980b22103703880e2008200a2902003703d810200829028c0e2111200841a8106a41086a220a2009290300370300200820082903d8103703a810200820113702940c200820103e02900c200841900c6a41146a200a290300370200200841900c6a410c6a20082903a810370200200841b8016a200841900c6a10b104200841f80b6a41086a200841b8016a41186a290300370300200841f80b6a41106a200841d8016a2903003703002008200841b8016a41106a2903003703f80b20082802b8014101460d0f200841b8016a41086a2903002110200841e00b6a41106a200841f80b6a41106a290300370300200841e00b6a41086a200841f80b6a41086a290300370300200820082903f80b3703e00b200841d8106a200841f80a6a410210a301200841980b6a41086a2209200841d8106a410c6a220a290200370300200841980b6a41106a220c200841d8106a41146a220d290200370300200841980b6a41186a2212200841f4106a280200360200200820082902dc103703980b024020082802d8104101470d00200841b8016a41086a200829029c0b370300200841fc0f6a41026a20082d00bb013a0000200820082802980b3602bc01200841013a00b801200820082f00b9013b01fc0f200841880e6a200841b8016a41106a41f10110ab051a0c100b200841d8106a41186a2012280200360200200841d8106a41106a200c290300370300200841d8106a41086a200929030037030020084190106a41086a2209200d290200370300200820082903980b22113703d8102008200a2902003703901020082902dc102124200841a8106a41086a220a200929030037030020082008290390103703a810200820243702bc10200820113e02b810200841b8106a41146a200a290300370200200841b8106a410c6a20082903a810370200200841b8016a200841b8106a109b04200841fc0f6a41026a20082d00bb013a0000200820082f00b9013b01fc0f200841b8016a41086a290300211120082802bc01210920082d00b801210a200841880e6a200841b8016a41106a41f10110ab051a200a4101460d0f200841840e6a41026a200841fc0f6a41026a2d00003a0000200820082f01fc0f3b01840e200841900c6a200841880e6a41f10110ab051a200841b8016a200841f80a6a410310a301200841980b6a41086a220a200841b8016a410c6a220c290200370300200841980b6a41106a220d200841b8016a41146a2212290200370300200841980b6a41186a2214200841d4016a280200360200200820082902bc013703980b024020082802b8014101470d0020084180106a41086a200829029c0b370300200820082802980b3602841020084101360280100c100b200841b8016a41186a2014280200360200200841b8016a41106a200d290300370300200841b8016a41086a200a290300370300200841b8106a41086a220a2012290200370300200820082903980b22243703b8012008200c2902003703b81020082902bc01210e200841a8106a41086a220c200a290300370300200820082903b8103703a8102008200e3702dc10200820243e02d810200841d8106a41146a200c290300370200200841d8106a410c6a20082903a81037020020084180106a200841d8106a10bb022008280280104101460d0f20084180106a410c6a280200210a20084180106a41086a280200210d200828028410210c200841b8016a200841f80a6a410010a301200841980b6a41086a2212200841b8016a410c6a2214290200370300200841980b6a41106a2213200841b8016a41146a2215290200370300200841980b6a41186a2217200841d4016a280200360200200820082902bc013703980b024020082802b8014101470d000240200a450d00200a412c6c2108200c210903400240200941046a280200450d00200928020010310b0240200941106a280200450d002009410c6a28020010310b2009412c6a2109200841546a22080d000b0b200d450d10200c10310c100b200841b8016a41186a2017280200360200200841b8016a41106a2013290300370300200841b8016a41086a2012290300370300200841b8106a41086a22122015290200370300200820082903980b220e3703b801200820142902003703b81020082902bc012124200841a8106a41086a22142012290300370300200820082903b8103703a810200820243702dc102008200ea722153602d810200841d8106a41146a2014290300370200200841d8106a410c6a20082903a8103702002024a72212450d0920152d000041c0014f0d09200841b8016a2015201210a20120082802b8014101460d0c20082802bc012214200841c0016a28020022176a22132014490d0c201320124b0d0c0240201320144f0d0020142013107b000b201741014b0d09024020152c00002214417f4a0d000240201441ff0171221341b801490d00201441ff017141c0014f0d0e201341ca7e6a221620124b0d0e201341c97e6a221341044b0d0e20152d0001450d0e201541016a211841002117410021140240034020132014460d01201820146a2d00002014417f7320136a4103744118717420176a21172013201441016a2214470d000b0b201620176a22142016490d0e201420124b0d0e20142016490d05201420166b221741014b0d0e410221124100211420170e020c090c0b201341817f6a20124b0d0d201341807f6a221741014b0d0d4102211241002114024020170e020c000c0b20152c00012214417f4a0d0d0c090b2014450d0c410221120c0a0b412041011033000b1032000b201941011033000b20162014107b000b200b41011033000b200b41011033000b200141011033000b201520166a2d00002214450d040b0c010b200841b8016a200841d8106a108003200841b8106a41086a2215200841d0016a290300370300200841b8106a41106a2217200841d8016a2d00003a0000200820082f01ba013b01980b2008200841b8016a41106a2903003703b8104101211220082d00b8014101460d02200841b8016a41086a290300212420082d00b901211420082802bc01211320084190106a41086a201529030037030020084190106a41106a20172d00003a0000200820082f01980b3b01a610200820082903b810370390100b200841b80b6a41106a2215200841e00b6a41086a290300370300200841d00b6a2217200841e00b6a41106a290300370300200820082903e00b3703c00b200820082f01840e3b01dc0a2008200841840e6a41026a2d00003a00de0a200820103703b80b200841e8086a200841900c6a41f10110ab051a200841d0086a41086a20084190106a41086a290300370300200841d0086a41106a20084190106a41106a2d00003a0000200841e00a6a41086a2015290300370300200841e00a6a41106a2017290300370300200820082f01a6103b01e60820082008290390103703d008200820082903c00b3703e00a200841cc086a41026a200841dc0b6a41026a2d00003a0000200820082f00dc0b3b01cc082010422088a721152010a721170b200841b0086a41086a2218200841e00a6a41086a290300370300200841b0086a41106a2216200841e00a6a41106a290300370300200820082903e00a3703b008200820082f01dc0a3b01ac08200820082d00de0a3a00ae08200841b8066a200841e8086a41f10110ab051a200841a0066a41086a2223200841d0086a41086a290300370300200841a0066a41106a2226200841d0086a41106a2d00003a00002008419c066a41026a221c200841cc086a41026a2d00003a0000200820082f01e6083b01b606200820082903d0083703a006200820082f01cc083b019c062000410c6a2015360200200041086a2017360200200041306a200a3602002000412c6a200d360200200041286a200c360200200041106a20082903b008370200200041186a2018290300370200200041206a20162903003702002000413b6a2011370000200041376a2009360000200041346a20082f01ac083b0100200041366a20082d00ae083a0000200041c3006a200841b8066a41f10110ab051a200020143a00b502200041b4026a20123a0000200041bc026a2024370100200041b8026a201336010020004100360200200020082f01b6063b01b602200041c4026a20082903a006370100200041cc026a2023290300370100200041d4026a20262d00003a0000200020082f019c063b00d502200041d7026a201c2d00003a00000240200b450d00200110310b0240201a450d00201b10310b02402006450d00200710310b02402003450d002003410c6c21082005210903400240200941046a280200450d00200928020010310b2009410c6a2109200841746a22080d000b0b2004450d08200510310c080b0240200a450d00200a412c6c2108200c210903400240200941046a280200450d00200928020010310b0240200941106a280200450d002009410c6a28020010310b2009412c6a2109200841546a22080d000b0b200d450d02200c10310c020b00000b1034000b200041086a411c360200200041dd97c40036020420004101360200200b450d01200110310c010b200041b297c40036020420004101360200200041086a41153602000b201a450d01201b10310c010b2000419f97c40036020420004101360200200041086a41133602000b02402006450d00200710310b02402003450d002003410c6c21082005210903400240200941046a280200450d00200928020010310b2009410c6a2109200841746a22080d000b0b2004450d00200510310b20024180116a24000bfd0203057f017e037f230041206b22022400200128020821032001280200210402400240200141146a28020022050d004104210641002105410021010c010b024002402005ad420c7e2207422088a70d002007a722084100480d00200128020c21012008102d22060d01200841041033000b1034000b2005411c6c21092001410c6a21082005410274417c6a210a20062101034020022008108f04200141086a200241086a280200360200200120022903003702002001410c6a21012008411c6a2108200941646a22090d000b200a41027641016a21010b200241186a22084200370300200241106a22094200370300200241086a220a42003703002002420037030020042003200620012002109904200041186a2008290300370000200041106a2009290300370000200041086a200a2903003700002000200229030037000002402001450d002001410c6c21082006210103402001104d2001410c6a2101200841746a22080d000b0b02402005450d00200610310b200241206a24000b6d01017f230041306b2203240020032002360204200320013602002003411c6a41023602002003412c6a41053602002003420237020c200341889dc300360208200341053602242003200341206a360218200320033602282003200341046a360220200341086a200010b301000bea51050e7f017e087f037e077f230041b0036b22032400200241146a2802002104200241106a2802002105200228020c2106200228020821072002280204210820022802002109200341013a00f802200141146a280200210a2003200128020c220236026820032002200a411c6c6a220b36026c2003200341f8026a3602702003200341e8006a108e044100210c200341003a00f8022003200b36026c200320023602682003200341f8026a360270200341106a200341e8006a108e044100210d0240024002400240024002400240024002400240024002400240024002400240024020012d00180d002007450d012001280208210e2001280200210f02400240200a0d004100210a41042110410021020c010b200aad420c7e2211422088a70d0c2011a7220b4100480d0c200b102d2210450d04200a411c6c21122002410c6a210b200a410274417c6a2113201021020340200341e8006a200b108f04200241086a200341e8006a41086a280200360200200220032903683702002002410c6a2102200b411c6a210b201241646a22120d000b201341027641016a21020b200341e8006a41186a220b4200370300200341e8006a41106a22124200370300200341e8006a41086a2213420037030020034200370368200f200e20102002200341e8006a109904200341f8026a41186a200b290300370300200341f8026a41106a2012290300370300200341f8026a41086a2013290300370300200320032903683703f80202402002450d002002410c6c210b2010210203402002104d2002410c6a2102200b41746a220b0d000b0b0240200a450d00201010310b0240200341f8026a2009460d002009200341f8026a412010ad050d0f0b4101210d0b2003280200211402400240200328020822150d0041042116410021170c010b2015ad420c7e2211422088a70d0b2011a722024100480d0b2002102d2216450d042015411c6c21122014410c6a210b2015410274417c6a2110201621020340024002400240200b280200220a41084b0d004101200a7441e202710d010b200341e8006a200b108f040c010b2003428780808080043703680b20022003290368370200200241086a200341e8006a41086a280200360200200b411c6a210b2002410c6a2102201241646a22120d000b201041027641016a21172015210c0b2003410036029c032003410036028c032003200d360288032003200936028003200320083602fc02200320093602f8022003200920074105746a22123602840320092102200d210a410021134100210f024003400240200f450d00200328029403220b200328029803460d002003200b41016a220236029403417f20034198036a28020020026b220241016a221220122002491b221841004e0d020c0f0b02400240200a450d00200341003602880320022012460d0c200a41016a210b02400340200341c0026a41186a220a200241186a290000370300200341c0026a41106a2210200241106a290000370300200341c0026a41086a220e200241086a290000370300200320022900003703c002200b417f6a220b450d012012200241206a2202470d000b20032012360280030c0d0b200341c0016a41086a200e290300370300200341c0016a41106a2010290300370300200341c0016a41186a200a290300370300200320032903c0023703c0012003200241206a2202360280030c010b200328028003220b2012460d0b2003200b41206a220236028003200341c0016a41086a200b41086a290000370300200341c0016a41106a200b41106a290000370300200341c0016a41186a200b41186a2900003703002003200b2900003703c0010b200341c0026a41186a220a200341c0016a41186a290300370300200341c0026a41106a2210200341c0016a41106a290300370300200341c0026a41086a220e200341c0016a41086a290300370300200320032903c0013703c0024120102d220b450d06200b20032903c002370000200b41186a200a290300370000200b41106a2010290300370000200b41086a200e290300370000200b41206a210a0240200f450d0002402003280294032003280298032210460d0020032010360294030b200328029003450d00201310310b2003200a360298032003200b3602940320034120360290032003200b36028c034100210a200b2113200b210f0c000b0b200b2d000021022018102d2219450d01201920023a0000200341e8006a41186a200341f8026a41186a2903002211370300200341e8006a41086a200341f8026a41086a290300221a370300200341e8006a41106a200341f8026a41106a290300221b370300200341e8006a41306a200341f8026a41306a280200360200200341e8006a41286a200341f8026a41286a290300370300200341e8006a41206a200341f8026a41206a290300221c370300200320032903f802370368201ca7211d2011a7211e201ba72110201aa7210220034184016a280200211f200328027421120240200328027c220e450d00201f201d460d00200e2113201f210b0c060b024002400240024002402010450d0020022012460d02201041016a210b02400340200341c0026a41186a200241186a290000370300200341c0026a41106a200241106a290000370300200341c0026a41086a200241086a290000370300200320022900003703c002200b417f6a220b450d012012200241206a2202470d000b20032012360270200341003602780c040b200341c0016a41186a200341c0026a41186a290300370300200341c0016a41106a200341c0026a41106a290300370300200341c0016a41086a200341c0026a41086a290300370300200320032903c0023703c001200241206a21020c010b20022012460d01200341c0016a41186a200241186a290000370300200341c0016a41106a200241106a290000370300200341c0016a41086a200241086a290000370300200320022900003703c001200241206a21020b200341c0026a41186a220b200341c0016a41186a290300370300200341c0026a41106a220a200341c0016a41106a290300370300200341c0026a41086a2210200341c0016a41086a290300370300200320032903c0013703c0024120102d22130d02412041011033000b20034100360278200320123602700b4101210a0240200328028c0122020d00410021020c090b20034194016a280200220b20034198016a280200460d082003200b41016a3602940141002110200e2113201221020c070b201320032903c002370000201341186a200b290300370000201341106a200a290300370000201341086a2010290300370000201341206a211d0240200e450d00201e450d00200e10310b2003201d36028801410021104120211e2013210b0c050b200041033a0004410121122000410136020041002110200041086a41003602000c0d0b201841011033000b200b41041033000b200241041033000b412041011033000b2003201e3602800120032010360278200320023602702003201336027c2003200b41016a221f360284010b200341fc006a21202003418c016a21214101210a0340200b2d0000210b0240024002402018200a470d004100210f4100210e02402013450d002020410020131b220e410c6a280200200e41086a2802006b210e0b0240200328028c012218450d002021410020181b220f410c6a280200200f41086a2802006b210f0b200a417f417f200e200f6a220f200f200e491b220e41016a220f200f200e491b6a220e200a490d07200a410174220f200e200f200e4b1b22184100480d0702400240200a0d002018102d21190c010b2019200a2018102f21190b2019450d010b2019200a6a200b3a0000200a41016a210a02402013450d00201f201d460d002013210e201f210b0c020b024002400240024002402010450d0020022012460d02201041016a210b02400340200341c0026a41186a2210200241186a290000370300200341c0026a41106a220e200241106a290000370300200341c0026a41086a220f200241086a290000370300200320022900003703c002200b417f6a220b450d012012200241206a2202470d000b2003201e36028001200341003602782003201f360284012003201336027c200320123602700c040b200341c0016a41186a2010290300370300200341c0016a41106a200e290300370300200341c0016a41086a200f290300370300200320032903c0023703c0010c010b20022012460d01200341c0016a41186a200241186a290000370300200341c0016a41106a200241106a290000370300200341c0016a41086a200241086a290000370300200320022900003703c0010b200241206a2102200341c0026a41186a220b200341c0016a41186a290300370300200341c0026a41106a2210200341c0016a41106a290300370300200341c0026a41086a220f200341c0016a41086a290300370300200320032903c0013703c0024120102d220e0d02412041011033000b2003201f36028401200320123602702003201e36028001200341003602782003201336027c0b0240200328028c0122020d00410021022013210e0c050b0240200328029401220b200328029801470d002013210e0c050b2003200b41016a3602940141002110201221020c030b200e20032903c002370000200e41186a200b290300370000200e41106a2010290300370000200e41086a200f290300370000200e41206a211d02402013450d00201e450d00201310310b2003201d36028801410021104120211e200e210b200e21130c010b201841011033000b2003201e3602800120032010360278200320023602702003200e36027c2003200b41016a221f360284010c000b0b0240200328026c450d00200328026810310b0240200e450d000240201f201d460d002003201d360284010b201e450d00200e10310b2002450d01024020034194016a28020020034198016a280200220b460d002003200b360294010b20034190016a280200450d01200210310c010b02402008450d00200910310b410121194100210a0240200f450d0002402003280294032003280298032202460d0020032002360294030b200328029003450d00201310310b410021180b200341e8006a201620172019200a10930441012112200341e8006a4104722102024020032802684101470d002000410136020020002002290200370204200041146a200241106a2902003702002000410c6a200241086a2902003702000c020b200341206a41086a200241086a280200220b360200200320022902003703200240200b2007200d6b460d00200041033a00044101211220004101360200200041086a4100360200200341206a108a042003280224450d02200328022010310c020b200341c8006a20032802202202360200200341c4006a2003280224360200200341306a411c6a2002200b41286c6a3602002003420037035020032002360240200320143602382003200328020436023420032014360230200320142015411c6c6a36023c20032802102110024002400240024002400240024002402003280218220a0d00410021204104211e4100211d0c010b200aad420c7e2211422088a70d072011a722024100480d072002102d221e450d01200a411c6c21122010410c6a210b200a410274417c6a210e201e21020340200341e8006a200b108f04200241086a200341e8006a41086a280200360200200220032903683702002002410c6a2102200b411c6a210b201241646a22120d000b200e41027641016a211d200a21200b200341e8006a201e201d20062004109304024020032802684101470d00200041013602002000200341e8006a4104722202290200370204200041146a200241106a2902003702002000410c6a200241086a2902003702000240201d450d00201d410c6c210b201e210203402002104d2002410c6a2102200b41746a220b0d000b0b02402020450d00201e10310b20032802382202200328023c220f460d06200341e8006a410c6a2101200341e8006a41106a210a0340200341e8006a41086a2212200241086a280200360200200320022902003703682002410c6a280200210b200341f8026a41086a2210200241186a2802003602002003200241106a2902003703f8020240200b4109470d002002411c6a210f0c070b200341c0026a41086a2012280200220e360200200341c0016a41086a201028020022103602002003200329036822113703c002200320032903f802221a3703c0012012200e360200200a201a370200200a41086a2010360200200320113703682003200b3602740240200328026c450d00200328026810310b2001104d2002411c6a2202200f470d000c060b0b200341e8006a41086a220b2802002112200341e8006a410c6a280200210e200328026c21022003280214210f2003420037025c20034198bfc000360258200341e8006a41206a2209200341306a41206a290300370300200341e8006a41186a2208200341306a41186a290300370300200341e8006a41106a2213200341306a41106a290300370300200b200341306a41086a290300370300200341b0016a4200370300200341ac016a2002200e41286c6a360200200341a8016a2002360200200341a4016a2012360200200341a0016a20023602002003419c016a2010200a411c6c6a360200200341e8006a41306a201036020020034194016a200f360200200341b8016a41003a00002003200329033037036820032010360290012003200341d8006a3602bc01200341c0016a41086a200b2903002211370300200341c0016a41206a2009290300370300200341c0016a41186a2008290300370300200341c0016a41106a2013290300370300200320032903683703c00120032802cc01210f2003200341bc016a3602bc02200f2011a72202460d02200341c0026a41116a210a200341f8026a410c6a2104200341f8026a41106a2112200341c0016a411c6a280200211f20032802d801210b20034190026a41086a210e024002400340200241046a29020021112002410c6a280200210920022802002110200e200241186a2802003602002003200241106a29020037039002024020094109470d002002411c6a21022003200b3602d8010c050b2012200329039002370200201241086a200e2802003602002003200936028403200320113702fc02200320103602f8022004104d024020100d002003200b3602d8012002411c6a21020c050b0240201f200b470d00200341f8026a411f6a20034190026a411f6a290000370000200341f8026a41186a20034190026a41186a290300370300200341f8026a41106a20034190026a41106a290300370300200341f8026a41086a20034190026a41086a29030037030020032003290390023703f8020c030b200e200b41096a220d29000037030020034190026a41106a200b41116a221329000037030020034190026a41186a200b41196a221529000037030020034190026a411f6a200b41206a22082900003700002003200b41016a220729000037039002200b2d00002109200341f8026a411f6a22142008290000370000200341f8026a41186a2208201529000037030020122013290000370300200341f8026a41086a2213200d290000370300200320072900003703f80220094109460d01200b41286a210b200341e8016a411f6a220d2014290000370000200341e8016a41186a22152008290300370300200341e8016a41106a2012290300221a370300200341e8016a41086a2013290300221b370300200320032903f802221c3703e801200a201c370000200a41086a201b370000200a41106a201a370000200a41186a2015290300370000200a411f6a200d290000370000200320113702c402200320103602c002200320093a00d002200341f8026a41306a200341c0026a41306a290300370300201220032903d0023703002013200341c0026a41086a290300370300200341f8026a41286a200341c0026a41286a290300370300200341f8026a41206a200341c0026a41206a2903003703002008200341c0026a41186a290300370300200320032903c0023703f802200341bc026a200341f8026a1092042002411c6a2202200f470d000b200f21022003200b3602d8010c030b200b41286a211f0b200341093a00d0022002411c6a210202402011a7450d00201010310b2003201f3602d801200320023602c8010c030b200241041033000b200320023602c8010b200341093a00d0020b200341c0026a10900402402002200f460d00200341f8026a410c6a2109200341f8026a41106a210a02400340200341f8026a41086a2212200241086a280200360200200320022902003703f8022002410c6a280200210b20034190026a41086a2210200241186a2802003602002003200241106a290200370390020240200b4109470d002002411c6a210f0c020b200341c0026a41086a2012280200220e360200200341e8016a41086a20102802002210360200200320032903f80222113703c0022003200329039002221a3703e8012012200e360200200a201a370200200a41086a2010360200200320113703f8022003200b36028403024020032802fc02450d0020032802f80210310b2009104d2002411c6a2202200f470d000b0b2003200f3602c8010b200341e8006a41286a2102024020032802c401450d0020032802c00110310b200341c0016a41106a220b108d04200341c0016a41086a200241086a2902002211370300200341c0016a41206a200241206a290200370300200341c0016a41186a200241186a290200370300200b200241106a290200370300200320022902003703c00120032802cc01210f2003200341bc016a3602bc0202400240200f2011a72202460d00200341c0026a41116a210a200341f8026a410c6a2104200341f8026a41106a2112200341c0016a411c6a280200211f20032802d801210b20034190026a41086a210e0240024002400340200241046a29020021112002410c6a280200210920022802002110200e200241186a2802003602002003200241106a29020037039002024020094109470d002002411c6a21022003200b3602d8010c040b2012200329039002370200201241086a200e2802003602002003200936028403200320113702fc02200320103602f8022004104d024020100d002003200b3602d8012002411c6a21020c040b0240201f200b470d00200341f8026a411f6a20034190026a411f6a290000370000200341f8026a41186a20034190026a41186a290300370300200341f8026a41106a20034190026a41106a290300370300200341f8026a41086a20034190026a41086a29030037030020032003290390023703f8020c030b200e200b41096a220d29000037030020034190026a41106a200b41116a221329000037030020034190026a41186a200b41196a221529000037030020034190026a411f6a200b41206a22082900003700002003200b41016a220729000037039002200b2d00002109200341f8026a411f6a22142008290000370000200341f8026a41186a2208201529000037030020122013290000370300200341f8026a41086a2213200d290000370300200320072900003703f80220094109460d01200b41286a210b200341e8016a411f6a220d2014290000370000200341e8016a41186a22152008290300370300200341e8016a41106a2012290300221a370300200341e8016a41086a2013290300221b370300200320032903f802221c3703e801200a201c370000200a41086a201b370000200a41106a201a370000200a41186a2015290300370000200a411f6a200d290000370000200320113702c402200320103602c002200320093a00d002200341f8026a41306a200341c0026a41306a290300370300201220032903d0023703002013200341c0026a41086a290300370300200341f8026a41286a200341c0026a41286a290300370300200341f8026a41206a200341c0026a41206a2903003703002008200341c0026a41186a290300370300200320032903c0023703f802200341bc026a200341f8026a1092042002411c6a2202200f470d000b200f21022003200b3602d8010c020b200b41286a211f0b200341093a00d0022002411c6a210202402011a7450d00201010310b2003201f3602d801200320023602c8010c020b200320023602c8010b200341093a00d0020b200341c0026a10900402402002200f460d00200341f8026a410c6a2109200341f8026a41106a210a02400340200341f8026a41086a2212200241086a280200360200200320022902003703f8022002410c6a280200210b20034190026a41086a2210200241186a2802003602002003200241106a290200370390020240200b4109470d002002411c6a210f0c020b200341c0026a41086a2012280200220e360200200341e8016a41086a20102802002210360200200320032903f80222113703c0022003200329039002221a3703e8012012200e360200200a201a370200200a41086a2010360200200320113703f8022003200b36028403024020032802fc02450d0020032802f80210310b2009104d2002411c6a2202200f470d000b0b2003200f3602c8010b024020032802c401450d0020032802c00110310b200341d0016a108d0441082121200341e8016a41086a200341d8006a41086a280200360200200320032903583703e801200128020c211220012802142104200341043602680240024002400240024002402004450d002004ad420c7e2211422088a70d082011a722024100480d0802402002102d220b0d00200241041033000b20122004411c6c6a210e2003200b3602682004410274417c6a410276210f0340201241086a2802002202417f4c0d0b2012280200210a0240024020020d00410121100c010b2002102d2210450d030b2010200a200210ab05210a200b41086a2002360200200b41046a2002360200200b200a360200200b410c6a210b2012411c6a2212200e470d000b200f410c6c410c6a2202410c6d210b20032802682122410021234108212102402002450d00200bad42387e2211422088a70d092011a722124100480d092012102d2221450d03200b21230b202220026a211f202221022021210841002107024003402002410c6a211520022802002209450d0120022902042211422088a72212417f4c0d0c0240024020120d00410121020c010b2012102d2202450d060b20022009201210ab052114200341e8016a210220032802ec01211303402002280200220141086a210220012f0106220d410c6c210b4100210e417f2110024002400340200b450d0202400240200920022802002002280208220a2012200a2012491b10ad05220f450d004101210a200f41004e0d01200e210d0c040b200a20124b0d02200a201247210a0b2002410c6a2102200e41016a210e200b41746a210b201041016a2110200a0d000b200341e8006a2001201041286c6a4190016a10960420032012360298012003201236029401200320143602900102402011a7450d00200910310b20082003290368370300200841306a200341e8006a41306a290300370300200841286a200341e8006a41286a290300370300200841206a200341e8006a41206a290300370300200841186a200341e8006a41186a290300370300200841106a200341e8006a41106a290300370300200841086a200341e8006a41086a290300370300200741016a2107200841386a2108201521022015201f470d030c090b201041016a210d0b02402013450d002013417f6a21132001200d4102746a41c8046a21020c010b0b0b41a7c9c300411610bf01000b2015201f460d04034020152802002202450d050240201541046a280200450d00200210310b2015410c6a2215201f470d000c050b0b41002107410021230c040b200241011033000b201241081033000b201241011033000b2004450d00202210310b20002021360204200041003602002000410c6a2007360200200041086a202336020020032802f001210f20032802e801210b024020032802ec012202450d000340200b2802c804210b2002417f6a22020d000b0b0240200f450d00200341fc006a2104200341f9006a210e41002112200341b6026a2107200341b4026a2114200341b0026a211f20034190026a41186a21014100210a034002400240200a200b2f01064f0d00200341e8006a41086a200b200a410c6c6a220241106a28020022103602002003200241086a2902002211370368200b200a41286c6a22024190016a2d00002109200341c0026a41086a2010360200200320113703c00220024191016a2900002111200241a1016a290000211a20024199016a290000211b200241a9016a290000211c200241b1016a2800002110200241b5016a2f000021082007200241b7016a2d00003a0000201420083b0100201f20103602002001201c37030020034190026a41086a201b37030020034190026a41106a201a3703002003201137039002200a41016a210a0c010b02400240200b28020022020d002012ad21114100210a410021020c010b200b3301044220862012ad8421114101210a0b200b10312011a72112024002402011422088a7221020022f01064f0d002002210b0c010b0340024002402002280200220b0d002012ad21114100210b0c010b200a41016a210a20023301044220862012ad8421110b200210312011a72112200b21022011422088a72210200b2f01064f0d000b0b200341e8006a41086a2208200b2010410c6c6a220241106a2802003602002003200241086a290200370368200b201041286c6a22024190016a2d00002109200341f8026a411f6a2213200241b0016a290000370000200341f8026a41186a220d200241a9016a290000370300200341f8026a41106a2200200241a1016a290000370300200341f8026a41086a221520024199016a290000370300200320024191016a2900003703f8022010410274200b6a41cc046a280200210b0240200a417f6a2202450d000340200b2802c804210b2002417f6a22020d000b0b200341c0026a41086a200828020036020020034190026a41086a201529030037030020034190026a41106a20002903003703002001200d29030037030020034190026a411f6a2013290000370000200320032903683703c002200320032903f802370390024100210a0b200941ff017122024109460d01200e200329039002370000200341e8006a41086a200341c0026a41086a290300370300200e41086a20034190026a41086a290300370000200e41106a20034190026a41106a290300370000200e41186a2001290300370000200e411f6a20034190026a411f6a290000370000200320032903c002370368200320093a00780240200328026c450d00200328026810310b200f417f6a210f02400240200241074b0d00024002400240024020020e080500010505050203050b200328028001450d04200328027c10310c040b200328028001450d03200328027c10310c030b200328028001450d02200328027c10310c020b2004108a04200328028001450d01200328027c10310c010b2004108a04200328028001450d00200328027c10310b200f0d000b0b0240200b4198bfc000460d00200b2802002102200b10312002450d002002280200210b20021031200b450d000240200b2802002202450d000340200b10312002210b20022802002212210220120d000b0b200b10310b0240201d450d00201d410c6c210b201e210203402002104d2002410c6a2102200b41746a220b0d000b0b02402020450d00201e10310b02402018450d00201910310b02402017450d002017410c6c210b2016210203402002104d2002410c6a2102200b41746a220b0d000b0b0240200c450d00201610310b2005450d07200610310c070b2003200f3602380b200341c0006a210202402003280234450d00200328023010310b2002108d04410021120c010b1034000b02402018450d00201910310b02402017450d002017410c6c210b2016210203402002104d2002410c6a2102200b41746a220b0d000b0b41012110200c450d02201610310c020b1032000b200041033a0004410121122000410136020041002110200041086a41003602000b2003280210210a024020032802182202450d002002411c6c210b200a210203400240200241046a280200450d00200228020010310b2002410c6a104d2002411c6a2102200b41646a220b0d000b0b02402003280214450d00200a10310b02402012450d0020032802002112024020032802082202450d002002411c6c210b2012210203400240200241046a280200450d00200228020010310b2002410c6a104d2002411c6a2102200b41646a220b0d000b0b2003280204450d00201210310b02402005450d00200610310b2008452010720d00200910310b200341b0036a24000b4a01017f024002400240200028020022014106490d002001417a6a220141014b0d0220010e020100010b0f0b2000280204104d200028020410310f0b2000280204104d200028020410310bfd0703037f017e017f230041306b22022400024002400240024002400240024002400240024002400240024002400240024020012d00000e09000102030405060708000b200041003a000020002001290001370001200041116a200141116a280000360000200041096a200141096a2900003700000c080b2001410c6a2802002203417f4c0d08200141046a28020021044101210102402003450d002003102d2201450d0a0b20012004200310ab0521012000410c6a2003360200200041086a2003360200200041046a2001360200200041013a00000c070b2001410c6a2802002203417f4c0d07200141046a28020021010240024020030d00410121040c010b2003102d2204450d0a0b20042001200310ab0521012000410c6a2003360200200041086a2003360200200041046a2001360200200041023a00000c060b200041033a0000200041206a200141206a290300370300200041186a200141186a290300370300200041106a200141106a290300370300200041086a200141086a2903003703000c050b200041043a0000200041206a200141206a290300370300200041186a200141186a290300370300200041106a200141106a290300370300200041086a200141086a2903003703000c040b200041053a0000200020012d00014100473a00010c030b2001410c6a2802002203417f4c0d03200141046a28020021010240024020030d00410121040c010b2003102d2204450d070b20042001200310ab0521012000410c6a2003360200200041086a2003360200200041046a2001360200200041063a00000c020b2001410c6a2802002203ad42287e2205422088a70d022005a72206417f4c0d02200141046a28020021044108210102402006450d002006102d2201450d070b200241003602182002200136021020022003360214200241206a41086a41003602002002200241106a41086a3602242002200136022020042004200341286c6a200241206a1056200241086a200228021822013602002002200229031022053703002000410c6a2001360200200041046a2005370200200041073a00000c010b2001410c6a2802002203ad42287e2205422088a70d012005a72206417f4c0d01200141046a28020021044108210102402006450d002006102d2201450d070b200241003602182002200136021020022003360214200241206a41086a41003602002002200241106a41086a3602242002200136022020042004200341286c6a200241206a1056200241086a200228021822013602002002200229031022053703002000410c6a2001360200200041046a2005370200200041083a00000b200241306a24000f0b1032000b200341011033000b200341011033000b200341011033000b200641081033000b200641081033000b820202017e017f42002102024020012d000022034104470d00200041206a200141206a290300370300200041186a200141186a290300370300200041106a200141106a2903003703002000200141086a290300370308420121020b2000200237030002400240200341074b0d00024002400240024020030e080500010505050203050b200141086a280200450d04200141046a28020010310f0b200141086a280200450d03200141046a28020010310f0b200141086a280200450d02200141046a28020010310f0b200141046a2200108a04200141086a280200450d01200028020010310f0b200141046a2200108a04200141086a280200450d00200028020010310b0b852810037f017e017f017e077f017e017f027e027f067e017f017e017f047e017f037e230041a0026b22032400200141186a210441c0022105024002400340200541406a220541c000460d0120042903002106200441786a21042006500d000c020b0b2001290300210641c00021050b200241186a21042005200679a76b210741c0022105024002400340200541406a220541c000460d0120042903002106200441786a21042006500d000c020b0b2002290300210641c00021050b02400240024002400240024002402005200679a76b2204450d000240024002400240024002400240024020072004490d00200441c100490d07200341d8006a41086a200141106a290300370300200341d8006a41106a200141186a2903003703002003200129030837035820012903002108200341f0006a41186a2205200241186a290300370300200341f0006a41106a2209200241106a290300370300200341f0006a41086a220a200241086a290300370300200320022903003703702004417f6a220b410676210c200b41ff014b0d022007417f6a410676220d200c6b2101200c41016a210e200341f0006a200c4103746a220f290300210620034190016a41186a200529030037030020034190016a41106a200929030037030020034190016a41086a200a2903003703002003200329037037039001200341b8016a41106a4200370300200341b8016a41186a4200370300200342003703c001200320067922103703b8012010a72111200341b8016a41086a2107410021040340200441086a22054120460d02200720046a2102200521042002290300500d000b41c8e2c30041264190e2c30010a401000b20004200370300200041186a4200370300200041106a4200370300200041086a420037030020002001290300370320200041286a200141086a290300370300200041306a200141106a290300370300200041386a200141186a2903003703000c0d0b200341f8016a4200370300200341f0016a4200370300200341e0016a41086a4200370300200342003703e0012011410676220741037421042011413f712202ad210620034190016a21050340200341e0016a20046a2005290300200686370300200541086a2105200441086a22044120470d000b02402002450d0020074103742104420020107d423f832106200341e0016a41086a210720034190016a21050340200720046a2202200229030020052903002006887c370300200541086a2105200441086a22044118470d000b0b200341f0006a41186a200341e0016a41186a290300370300200341f0006a41106a200341e0016a41106a290300370300200341f0006a41086a200341e0016a41086a290300370300200320032903e00137037020034180026a41106a200341d8006a41086a29030037030020034180026a41186a200341d8006a41106a29030037030020032003290358370388022003200837038002200341b8016a41106a4200370300200341b8016a41186a4200370300200342003703c001200341c00020116b2209ad22123703b80120082010423f832213862108200341b8016a41086a21074100210402400340200441086a22054120460d01200720046a2102200521042002290300500d000b41c8e2c30041264190e2c30010a401000b200341f8016a4200370300200341f0016a4200370300200341e0016a41086a4200370300200342003703e0012009413f712102200941067621070240200941ff014b0d00200741037421042002ad2106200341e0016a21050340200520034180026a20046a290300200688370300200541086a2105200441086a22044120470d000b0b02402002450d00200741016a41034b0d0020074103742105420020127d423f83210620034180026a41086a2102200341e0016a2104034020042004290300200220056a2903002006867c370300200441086a2104200541086a22054118470d000b0b200320032903f8013703b001200320032903f0013703a801200320032903e8013703a001200320032903e00137039801200320083703900120034198026a420037030020034180026a41106a420037030020034180026a41086a42003703002003420037038002200c417f6a220441034b0d01200c41026a211420034190016a200d200c6b4103746a221541086a210d200f29030022162016792206423f83221786221842ffffffff0f8321192018422088211a200341f0006a20044103746a290300211b41c0002006a76b221c413f71ad211d200341b8016a41106a211e200329038801211f20032903800121202003290378212120032903702122200b418002492123034020012209200e6a220441054f0d03427f2108024020034190016a20044103746a220f290300220620165a0d002009200c6a220541044b0d05201a500d0920034190016a20054103746a2903002208201786221242ffffffff0f8321242012422088211242002008201d88201c413f4b1b20062017868422252025201a802208201a7e7d2106024003400240200842ffffffff0f560d00200820197e2006422086201284580d020b2008427f7c21082006201a7c2206428080808010540d000b0b2025422086201284200820187e7d22252025201a802212201a7e7d2106024003400240201242ffffffff0f560d00201220197e2006422086202484580d020b2012427f7c21122006201a7c220642ffffffff0f580d000b0b2004417e6a220441044b0d0a2025422086202484201220187e7d2017882106201220084220867c210820034190016a20044103746a29030021240340200341c8006a20084200201b420010b005202420032903485a2006200341c8006a41086a29030022125a20062012511b0d012008427f7c2108200620167c22122006542104201221062004450d000b0b200341386a202242002008420010b005200341286a202142002008420010b005200341186a202042002008420010b005200341086a201f42002008420010b0052003200329033822263703b801200320032903282212200341386a41086a2903007c22063703c001200320032903182224200341286a41086a2903002006201254ad7c7c22123703c801200320032903082225200341186a41086a2903002012202454ad7c7c22123703d0012003200341086a41086a2903002012202554ad7c3703d801200941064f0d0a2023450d0b0240201441282009410374220b6b410376220a200a20144b1b2207450d0020034190016a200b6a22042004290300221220267d222437030020242012562102024020074101460d0041022105201e2101200d2104034020042004290300221220062002ad4201837c22247d222537030020242006542025201256722102200520074f0d01200541016a2105200441086a210420012903002106200141086a21010c000b0b2002450d00410021010240200e200a200a200e4b1b2207450d00200341f0006a210520152104410021020340200420042903002206200529030022122001ad42ff01837c22247c222537030020242012542025200654722101200441086a2104200541086a2105200241016a22022007490d000b0b2008427f7c2108200f200f2903002001ad7c3703000b200941034b0d05200920094100476b210120034180026a200b6a2008370300201541786a2115200d41786a210d2009450d0c0c000b0b4190e2c300200c4104104b000b4190e2c30020044104104b000b4190e2c30020044105104b000b4190e2c30020054105104b000b4190e2c30020094104104b000b200341b8016a41186a200141186a290300370300200341b8016a41106a200141106a290300370300200341b8016a41086a200141086a290300370300200320012903003703b801024002400240200229030022062006792212423f83221b8622164220882206500d00201642ffffffff0f83210820032903d001212441c0002012a76b220441c000490d01200642208621192024201b86221242ffffffff0f832126201242208821174200211242002124420021254200211a024003400240201a42ffffffff0f560d0020122024201784580d020b201220087d2112202420197c2124201a427f7c211a202520067c2225428080808010540d000b0b2017201a20167e7d22252025200680221220067e7d2124024003400240201242ffffffff0f560d00201220087e2024422086202684580d020b2012427f7c2112202420067c2224428080808010540d000b0b20032012201a4220867c3703d001427f201b862025422086202684201220167e7d8322192019200680221220067e7d211a20032903c801201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2024201942208684201220167e7d22192019200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703c801427f201b862019422086202584201a20167e7d8322192019200680221220067e7d211a20032903c001201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2024201942208684201220167e7d22192019200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703c001427f201b862019422086202584201a20167e7d8322192019200680221220067e7d211a20032903b801201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2024201942208684201220167e7d22192019200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703b8012019422086202584201a20167e7d21060c020b4190e1c30041194190e2c30010a401000b20242004413f71ad22198822262026200680221220067e7d211a2024201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2026422086202484201220167e7d22262026200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703d00120032903c8012224201988427f201b862026422086202584201a20167e7d838422262026200680221220067e7d211a2024201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2026422086202484201220167e7d22262026200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703c80120032903c0012224201988427f201b862026422086202584201a20167e7d838422262026200680221220067e7d211a2024201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2026422086202484201220167e7d22262026200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703c00120032903b8012224201988427f201b862026422086202584201a20167e7d838422192019200680221220067e7d211a2024201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2019422086202484201220167e7d22192019200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703b8012019422086202584201a20167e7d21060b200020032903b801370300200041286a420037030020002006201b88370320200041306a4200370300200041386a4200370300200041186a200341b8016a41186a290300370300200041106a200341b8016a41106a290300370300200041086a200341b8016a41086a2903003703000c060b41b8e2c30041104190e2c30010a401000b41f0e2c30041194190e2c30010a401000b4190e2c30020044105104b000b20094105107b000b2014410510b601000b20032903a8012225201388210620032903a0012219201388210820032903980122162013882112200329039001201388211a02402011450d00200620032903b001420020107d423f832224868421062008202520248684210820122019202486842112201a201620248684211a0b20002003290380023703002000201a370320200041386a2006370300200041306a2008370300200041286a2012370300200041186a20034180026a41186a290300370300200041106a20034180026a41106a290300370300200041086a20034180026a41086a2903003703000b200341a0026a24000bdb0101017f024020012d000022024102470d00200041086a2001410c6a2802003602002000200141046a2902003702000f0b2000410036020002400240200241074b0d00024002400240024020020e080500010505050203050b200141086a280200450d04200141046a28020010310f0b200141086a280200450d03200141046a28020010310f0b200141086a280200450d02200141046a28020010310f0b200141046a2200108a04200141086a280200450d01200028020010310c010b200141046a2200108a04200141086a280200450d00200028020010310f0b0bd10201047f230041e0006b22032400200341086a2002ad4220862001ad841002104102400240200328020822040d00200041003a00000c010b200341106a2802002105200328020c210641002101200341003a00580340024020052001470d000240200141ff0171450d00200341003a00580b41e9bcc0004133200341386a419cbdc0001038000b200341386a20016a200420016a2d00003a00002003200141016a22023a00582002210120024120470d000b200341186a41186a2201200341386a41186a290300370300200341186a41106a2202200341386a41106a290300370300200341186a41086a2205200341386a41086a2903003703002003200329033837031802402006450d00200410310b20002003290318370001200041013a0000200041196a2001290300370000200041116a2002290300370000200041096a20052903003700000b200341e0006a24000bba0701087f230041b0036b2202240002400240410e102d2203450d00410021042003410029009bba41370000200341066a41002900a1ba413700002002428e808080e00137020c200220033602082001200241086a104620024188026a41186a220120023502104220862002350208841000220341186a29000037030020024188026a41106a2205200341106a29000037030020024188026a41086a2206200341086a290000370300200220032900003703880220031031200241a8016a41186a2001290300370300200241a8016a41106a2005290300370300200241a8016a41086a200629030037030020022002290388023703a8010240200228020c450d00200228020810310b200241c8016a200241a8016aad428080808080048410021041024020022802c8012203450d0020022802cc0121012002200241c8016a41086a2802003602ac03200220033602a80320024188026a200241a8036a10d10220022802c8022204450d02200241e8006a41386a20024188026a41386a290300370300200241e8006a41306a20024188026a41306a290300370300200241e8006a41286a20024188026a41286a290300370300200241e8006a41206a20024188026a41206a290300370300200241e8006a41186a20024188026a41186a290300370300200241e8006a41106a20024188026a41106a290300370300200241e8006a41086a20024188026a41086a2903003703002002200229038802370368200241086a200241cc026a41dc0010ab051a2001450d00200310310b200241c8016a41086a2203200241e8006a41086a290300370300200241c8016a41106a2201200241e8006a41106a290300370300200241c8016a41186a2205200241e8006a41186a290300370300200241c8016a41206a2206200241e8006a41206a290300370300200241c8016a41286a2207200241e8006a41286a290300370300200241c8016a41306a2208200241e8006a41306a290300370300200241c8016a41386a2209200241e8006a41386a290300370300200220022903683703c80120024188026a200241086a41dc0010ab051a02402004450d00200020022903c801370300200041386a2009290300370300200041306a2008290300370300200041286a2007290300370300200041206a2006290300370300200041186a2005290300370300200041106a2001290300370300200041086a2003290300370300200041c4006a20024188026a41dc0010ab051a0b20002004360240200241b0036a24000f0b410e41011033000b41e9bcc0004133200241086a419cbdc0001038000bc81e05017f027e077f017e027f230041c0016b220324000240024002400240024002400240024002400240024002400240024002402002a70d00200120012903002204370330200141386a200141086a2903002205370300200141c8006a2802002206ad42187e2202422088a70d022002a72207417f4c0d02200141c0006a28020021080240024020070d00410821090c010b2007102d2209450d040b200141fc006a210a0240024020060d004100210b0c010b2008200641186c6a210c4100210b200921070340200841106a2903002102200841086a290300210d200720082903003703002007200d370308200741106a2002370300200741186a2107200b41016a210b200841186a2208200c470d000b0b200341086a41106a2005370300200341246a2006360200200341086a41186a22082009360200200341086a41206a2207200b3602002003200437031020034201370308200342f3e885db96cddbb320370338200341c0006a41206a220c2007290300370300200341c0006a41186a2008290300370300200341c0006a41106a22062005370300200341c0006a41086a22092004370300200341c0006a41306a220e411f3a0000200341c0006a41286a220f42f3e885db96cddbb3203703002003420137034020034188016a200a109e02200328028c0121072003280288012108200328029001210b2003419c016a200341c0006a36020020032008200b41386c6a3602940120032008360290012003200736028c0120032008360288012003200341386a36029801200341f8006a20034188016a108d01024020032903404202510d0020034188016a41306a200e29030037030020034188016a41286a200f29030037030020034188016a41206a200c29030037030020034188016a41186a220b200341c0006a41186a29030037030020034188016a41106a200629030037030020034188016a41086a2009290300370300200320032903403703880102402003280280012207200328027c470d00200741016a22082007490d102007410174220c2008200c20084b1b220cad42387e2202422088a70d102002a722064100480d100240024020070d002006102d21080c010b2003280278200741386c2006102f21080b2008450d062003200c36027c200320083602780b2003280278200741386c6a2208200329038801370300200841086a20034188016a41086a220c290300370300200841106a20034188016a41106a290300370300200841186a200b290300370300200841206a20034188016a41206a290300370300200841286a20034188016a41286a290300370300200841306a20034188016a41306a2903003703002003200741016a220836028001200c20083602002003200329037837038801200a20034188016a109c020c020b20034188016a41086a200341f8006a41086a2802003602002003200329037837038801200a20034188016a109c020240200329034022024202560d002002a70e03020002020b200341dc006a280200450d01200328025810310c010b200120012903202204370350200141d8006a200141286a2903002205370300200141e8006a2802002206ad42187e2202422088a70d012002a72207417f4c0d01200141e0006a28020021080240024020070d00410821090c010b2007102d2209450d050b200141fc006a210a0240024020060d004100210b0c010b2008200641186c6a210c4100210b200921070340200841106a2903002102200841086a290300210d200720082903003703002007200d370308200741106a2002370300200741186a2107200b41016a210b200841186a2208200c470d000b0b200341086a41106a2005370300200341246a2006360200200341086a41186a22082009360200200341086a41206a2207200b3602002003200437031020034201370308200342f3e885db96cddbb320370330200341c0006a41206a220c2007290300370300200341c0006a41186a2008290300370300200341c0006a41106a22062005370300200341c0006a41086a22092004370300200341c0006a41306a220e411f3a0000200341c0006a41286a220f42f3e885db96cddbb3203703002003420137034020034188016a200a10d202200328028c0121072003280288012108200328029001210b2003419c016a200341c0006a36020020032008200b41386c6a3602940120032008360290012003200736028c0120032008360288012003200341306a36029801200341f8006a20034188016a108d01024020032903404202510d0020034188016a41306a200e29030037030020034188016a41286a200f29030037030020034188016a41206a200c29030037030020034188016a41186a220b200341c0006a41186a29030037030020034188016a41106a200629030037030020034188016a41086a2009290300370300200320032903403703880102402003280280012207200328027c470d00200741016a22082007490d0f2007410174220c2008200c20084b1b220cad42387e2202422088a70d0f2002a722064100480d0f0240024020070d002006102d21080c010b2003280278200741386c2006102f21080b2008450d072003200c36027c200320083602780b2003280278200741386c6a2208200329038801370300200841086a20034188016a41086a220c290300370300200841106a20034188016a41106a290300370300200841186a200b290300370300200841206a20034188016a41206a290300370300200841286a20034188016a41286a290300370300200841306a20034188016a41306a2903003703002003200741016a220836028001200c20083602002003200329037837038801200a20034188016a10d3020c010b20034188016a41086a200341f8006a41086a2802003602002003200329037837038801200a20034188016a10d3020240200329034022024202560d002002a70e03010001010b200341dc006a280200450d00200328025810310b410e102d2208450d052008410029009bba41370000200841066a41002900a1ba413700002003428e808080e00137020c200320083602082000200341086a104620034188016a41186a220720033502104220862003350208841000220841186a29000037030020034188016a41106a220b200841106a29000037030020034188016a41086a220c200841086a290000370300200320082900003703880120081031200341c0006a41186a2007290300370300200341c0006a41106a200b290300370300200341c0006a41086a200c29030037030020032003290388013703400240200328020c450d00200328020810310b20034100360290012003420137038801200141fc006a20034188016a104620032001360208200341086a20034188016a10ac012003200141106a360208200341086a20034188016a10ac012003200141206a360208200341086a20034188016a10ac0120012802702108200141f8006a280200220720034188016a106f02402007450d00200820074105746a2107034020032008360208200341086a20034188016a10ac01200841106a20034188016a10b001200841186a20034188016a10b001200841206a22082007470d000b0b200141386a29030021022001290330210d02400240200328028c01220720032802900122086b4110490d0020032802880121070c010b200841106a220b2008490d0d20074101742208200b2008200b4b1b22084100480d0d0240024020070d002008102d21070c010b20032802880120072008102f21070b2007450d072003200836028c01200320073602880120032802900121080b200720086a220720023700082007200d3700002003200841106a36029001200141c0006a280200210c200141c8006a280200220820034188016a106f02402008450d00200c200841186c6a21000340200c41086a2903002102200c290300210d02400240200328028c01220b20032802900122076b4110490d0020032802880121080c010b200741106a22082007490d0f200b41017422072008200720084b1b22064100480d0f02400240200b0d002006102d21080c010b200328028801200b2006102f21080b2008450d0a2003200636028c01200320083602880120032802900121072006210b0b200820076a220620023700082006200d3700002003200741106a220736029001200c41106a29030021020240200b20076b41074b0d00200741086a22062007490d0f200b41017422072006200720064b1b22074100480d0f02400240200b0d002007102d21080c010b2008200b2007102f21080b2008450d0b2003200736028c01200320083602880120032802900121070b2003200741086a36029001200820076a20023700002000200c41186a220c470d000b0b200141d8006a29030021022001290350210d02400240200328028c01220720032802900122086b4110490d0020032802880121070c010b200841106a220b2008490d0d20074101742208200b2008200b4b1b22084100480d0d0240024020070d002008102d21070c010b20032802880120072008102f21070b2007450d0a2003200836028c01200320073602880120032802900121080b200720086a220720023700082007200d3700002003200841106a36029001200141e0006a280200210c200141e8006a280200220820034188016a106f02402008450d00200c200841186c6a21010340200c41086a2903002102200c290300210d02400240200328028c01220b20032802900122076b4110490d0020032802880121080c010b200741106a22082007490d0f200b41017422072008200720084b1b22064100480d0f02400240200b0d002006102d21080c010b200328028801200b2006102f21080b2008450d0d2003200636028c01200320083602880120032802900121072006210b0b200820076a220620023700082006200d3700002003200741106a220736029001200c41106a29030021020240200b20076b41074b0d00200741086a22062007490d0f200b41017422072006200720064b1b22074100480d0f02400240200b0d002007102d21080c010b2008200b2007102f21080b2008450d0e2003200736028c01200320083602880120032802900121070b2003200741086a36029001200820076a20023700002001200c41186a220c470d000b0b200328028c012108200341c0006aad42808080808004842003350290014220862003280288012207ad84100302402008450d00200710310b200341c0016a24000f0b1032000b200741081033000b200641081033000b200741081033000b200641081033000b410e41011033000b200841011033000b200641011033000b200741011033000b200841011033000b200641011033000b200741011033000b1034000bf81e010d7f024020002802082201450d0020002802002202200141386c6a21030340024020022204412c6a280200450d00200428022810310b200441386a21020240024020042d0000220041074b0d00024002400240024020000e080500010505050203050b200441086a280200450d04200441046a28020010310c040b200441086a280200450d03200441046a28020010310c030b200441086a280200450d02200441046a28020010310c020b02402004410c6a2802002200450d00200441046a2802002205200041286c6a210603402005220741286a21050240024020072d0000220041074b0d00024002400240024020000e080500010505050203050b200741086a280200450d04200741046a28020010310c040b200741086a280200450d03200741046a28020010310c030b200741086a280200450d02200741046a28020010310c020b02402007410c6a2802002200450d00200741046a2802002208200041286c6a210903402008220a41286a210802400240200a2d0000220041074b0d00024002400240024020000e080500010505050203050b200a41086a280200450d04200a41046a28020010310c040b200a41086a280200450d03200a41046a28020010310c030b200a41086a280200450d02200a41046a28020010310c020b0240200a410c6a2802002200450d00200a41046a280200220b200041286c6a210c0340200b220d41286a210b02400240200d2d0000220041074b0d00024002400240024020000e080500010505050203050b200d41086a280200450d04200d41046a28020010310c040b200d41086a280200450d03200d41046a28020010310c030b200d41086a280200450d02200d41046a28020010310c020b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d01200d28020410310c010b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d00200d28020410310b200b200c470d000b0b200a41086a280200450d01200a28020410310c010b0240200a410c6a2802002200450d00200a41046a280200220b200041286c6a210c0340200b220d41286a210b02400240200d2d0000220041074b0d00024002400240024020000e080500010505050203050b200d41086a280200450d04200d41046a28020010310c040b200d41086a280200450d03200d41046a28020010310c030b200d41086a280200450d02200d41046a28020010310c020b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d01200d28020410310c010b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d00200d28020410310b200b200c470d000b0b200a41086a280200450d00200a28020410310b20082009470d000b0b200741086a280200450d01200728020410310c010b02402007410c6a2802002200450d00200741046a2802002208200041286c6a210903402008220a41286a210802400240200a2d0000220041074b0d00024002400240024020000e080500010505050203050b200a41086a280200450d04200a41046a28020010310c040b200a41086a280200450d03200a41046a28020010310c030b200a41086a280200450d02200a41046a28020010310c020b0240200a410c6a2802002200450d00200a41046a280200220b200041286c6a210c0340200b220d41286a210b02400240200d2d0000220041074b0d00024002400240024020000e080500010505050203050b200d41086a280200450d04200d41046a28020010310c040b200d41086a280200450d03200d41046a28020010310c030b200d41086a280200450d02200d41046a28020010310c020b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d01200d28020410310c010b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d00200d28020410310b200b200c470d000b0b200a41086a280200450d01200a28020410310c010b0240200a410c6a2802002200450d00200a41046a280200220b200041286c6a210c0340200b220d41286a210b02400240200d2d0000220041074b0d00024002400240024020000e080500010505050203050b200d41086a280200450d04200d41046a28020010310c040b200d41086a280200450d03200d41046a28020010310c030b200d41086a280200450d02200d41046a28020010310c020b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d01200d28020410310c010b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d00200d28020410310b200b200c470d000b0b200a41086a280200450d00200a28020410310b20082009470d000b0b200741086a280200450d00200728020410310b20052006470d000b0b200441086a280200450d01200428020410310c010b02402004410c6a2802002200450d00200441046a2802002205200041286c6a210603402005220741286a21050240024020072d0000220041074b0d00024002400240024020000e080500010505050203050b200741086a280200450d04200741046a28020010310c040b200741086a280200450d03200741046a28020010310c030b200741086a280200450d02200741046a28020010310c020b02402007410c6a2802002200450d00200741046a2802002208200041286c6a210903402008220a41286a210802400240200a2d0000220041074b0d00024002400240024020000e080500010505050203050b200a41086a280200450d04200a41046a28020010310c040b200a41086a280200450d03200a41046a28020010310c030b200a41086a280200450d02200a41046a28020010310c020b0240200a410c6a2802002200450d00200a41046a280200220b200041286c6a210c0340200b220d41286a210b02400240200d2d0000220041074b0d00024002400240024020000e080500010505050203050b200d41086a280200450d04200d41046a28020010310c040b200d41086a280200450d03200d41046a28020010310c030b200d41086a280200450d02200d41046a28020010310c020b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d01200d28020410310c010b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d00200d28020410310b200b200c470d000b0b200a41086a280200450d01200a28020410310c010b0240200a410c6a2802002200450d00200a41046a280200220b200041286c6a210c0340200b220d41286a210b02400240200d2d0000220041074b0d00024002400240024020000e080500010505050203050b200d41086a280200450d04200d41046a28020010310c040b200d41086a280200450d03200d41046a28020010310c030b200d41086a280200450d02200d41046a28020010310c020b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d01200d28020410310c010b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d00200d28020410310b200b200c470d000b0b200a41086a280200450d00200a28020410310b20082009470d000b0b200741086a280200450d01200728020410310c010b02402007410c6a2802002200450d00200741046a2802002208200041286c6a210903402008220a41286a210802400240200a2d0000220041074b0d00024002400240024020000e080500010505050203050b200a41086a280200450d04200a41046a28020010310c040b200a41086a280200450d03200a41046a28020010310c030b200a41086a280200450d02200a41046a28020010310c020b0240200a410c6a2802002200450d00200a41046a280200220b200041286c6a210c0340200b220d41286a210b02400240200d2d0000220041074b0d00024002400240024020000e080500010505050203050b200d41086a280200450d04200d41046a28020010310c040b200d41086a280200450d03200d41046a28020010310c030b200d41086a280200450d02200d41046a28020010310c020b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d01200d28020410310c010b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d00200d28020410310b200b200c470d000b0b200a41086a280200450d01200a28020410310c010b0240200a410c6a2802002200450d00200a41046a280200220b200041286c6a210c0340200b220d41286a210b02400240200d2d0000220041074b0d00024002400240024020000e080500010505050203050b200d41086a280200450d04200d41046a28020010310c040b200d41086a280200450d03200d41046a28020010310c030b200d41086a280200450d02200d41046a28020010310c020b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d01200d28020410310c010b0240200d410c6a2802002201450d00200d41046a2802002100200141286c210103402000107f200041286a2100200141586a22010d000b0b200d41086a280200450d00200d28020410310b200b200c470d000b0b200a41086a280200450d00200a28020410310b20082009470d000b0b200741086a280200450d00200728020410310b20052006470d000b0b200441086a280200450d00200428020410310b20022003470d000b0b0bc208020c7f017e230041306b22032400200241086a280200210420022802042105024020002001460d0020022802002106200120006b2107200341206a41086a21084100210103400240024002400240024002400240024002400240024002400240024002400240200020016a22022d00000e09000102030405060708000b2003200241106a2800003602082003200241146a2d00003a000c2002410c6a2800002109200241086a280000210a200241046a280000210b200241026a2f0000210c200241016a2d0000210d4100210e0c0e0b2002410c6a280200220a417f4c0d074101210e200a450d0b200241046a28020021020240200a102d220b450d00200b2002200a10ab051a200a21090c0d0b200a41011033000b2002410c6a280200220a417f4c0d064102210e200a450d0a200241046a28020021020240200a102d220b450d00200b2002200a10ab051a200a21090c0c0b200a41011033000b200341086a41086a200241186a290100370300200341086a41106a200241206a2901003703002003200241106a2901003703082002410c6a2802002109200241086a280200210a4103210e0c0a0b200341086a41086a200241186a290100370300200341086a41106a200241206a2901003703002003200241106a2901003703082002410c6a2802002109200241086a280200210a4104210e0c090b200241016a2d0000410047210d4105210e0c090b2002410c6a280200220a417f4c0d02200241046a280200210202400240200a0d004101210b0c010b200a102d220b450d040b200b2002200a10ab051a4106210e200a21090c070b2002410c6a280200220aad42287e220f422088a70d01200fa7220e417f4c0d01200241046a280200210202400240200e0d004108210d0c010b200e102d220d450d040b200341003602282003200d3602202003200a360224200341003602102003200836020c2003200d36020820022002200a41286c6a200341086a10562003280220210b2003280224210a200328022821094107210e0c060b2002410c6a280200220aad42287e220f422088a70d00200fa7220b417f4c0d00200241046a280200210d4108210e410821020240200b450d00200b102d2202450d040b20034100360228200320023602202003200a360224200341003602102003200836020c20032002360208200d200d200a41286c6a200341086a10562003280220210b2003280224210a200328022821090c050b1032000b200a41011033000b200e41081033000b200b41081033000b4100210a4101210b410021090b0b200620016a2202200e3a00002002410c6a2009360100200241086a200a360100200241046a200b360100200241026a200c3b0100200241016a200d3a0000200241106a2003290308370100200241186a200341086a41086a290300370100200241206a200341086a41106a290300370100200441016a21042007200141286a2201470d000b0b20052004360200200341306a24000bf40601067f230041f0006b21020240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a2206360204410121072001200441016a360200200541f001490d0a200541847e6a220541034b0d0420050e0401020803010b200041023a00000f0b20064102490d0320042f0001210520012003417d6a3602042001200441036a360200200541ef014b0d04200041023a00000f0b20064104490d042004280001210520012003417b6a3602042001200441056a36020041012107200541ffff034b0d07200041023a00000f0b41002105200241003a00682003417f6a21062003417e6a210302400340024020062005470d000240200541ff0171450d00200241003a00680b410121010c020b200241c8006a20056a200420056a220741016a2d00003a0000200120033602042001200741026a3602002002200541016a22073a00682003417f6a21032007210520074120470d000b200241c6006a20022d004a3a0000200241306a200241d7006a290000370300200241386a200241df006a290000370300200241c0006a200241e7006a2d00003a0000200220022f01483b01442002200229004f370328200228004b2105410021010b200241246a41026a2203200241c4006a41026a2d00003a0000200241086a41086a2207200241286a41086a290300370300200241086a41106a2204200241286a41106a290300370300200241086a41186a2206200241286a41186a2d00003a0000200220022f01443b0124200220022903283703082001450d05200041023a00000f0b200041023a00000f0b200041023a00000f0b410121070c030b200041023a00000f0b0240200641044f0d00200041023a00000f0b200041023a000020012003417b6a3602042001200441056a3602000f0b200241286a41026a20032d00003a0000200241c8006a41086a2007290300370300200241c8006a41106a2004290300370300200241c8006a41186a20062d00003a0000200220022f01243b012820022002290308370348410021070b200020073a0000200020022f01283b0001200041046a2005360200200041086a2002290348370200200041036a2002412a6a2d00003a0000200041106a200241c8006a41086a290300370200200041186a200241c8006a41106a290300370200200041206a200241c8006a41186a2802003602000bb20801037f0240024002400240024002400240024020002d00004101460d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d08200241017422042003200420034b1b22044100480d080240024020020d002004102d21030c010b200128020020022004102f21030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41ff013a0000200041016a200110460f0b0240024002400240200041046a280200220241ffff034b0d00200241ef014b0d03200141046a280200200141086a2802002200460d01200128020021030c020b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0a200041017422042003200420034b1b22044100480d0a0240024020000d002004102d21030c010b200128020020002004102f21030b2003450d0520012003360200200141046a2004360200200141086a28020021000b200141086a2204200041016a360200200320006a41fd013a000002400240200141046a2802002203200428020022006b4104490d00200128020021030c010b200041046a22042000490d0a200341017422002004200020044b1b22004100480d0a0240024020030d002000102d21030c010b200128020020032000102f21030b2003450d0620012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20023600000f0b200041016a22032000490d08200041017422042003200420034b1b22044100480d080240024020000d002004102d21030c010b200128020020002004102f21030b2003450d0520012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a20023a00000f0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d07200041017422042003200420034b1b22044100480d070240024020000d002004102d21030c010b200128020020002004102f21030b2003450d0520012003360200200141046a2004360200200141086a28020021000b200141086a2204200041016a360200200320006a41fc013a000002400240200141046a2802002203200428020022006b4102490d00200128020021030c010b200041026a22042000490d07200341017422002004200020044b1b22004100480d070240024020030d002000102d21030c010b200128020020032000102f21030b2003450d0620012003360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200320006a20023b00000f0b200441011033000b200441011033000b200041011033000b200441011033000b200441011033000b200041011033000b1034000bfe1204057f027e0a7f077e230041f0026b22042400200441d0006a2001105a0240024020042d00502205417f6a41ff017141024f0d00200041003a0000200041086a200441d0006a41d80010ab051a0c010b200441a8016a41086a2206200441d0006a413c6a290200370300200441a8016a41106a2207200441d0006a41c4006a290200370300200441a8016a41186a2208200441d0006a41cc006a2902003703002004200441d0006a41346a2902003703a801200441d0006a41106a2903002109200441d0006a41086a290300210a200441d0006a41306a280200210b200441d0006a412c6a280200210c200441d0006a41246a280200210d200441d0006a41206a280200210e200441ec006a280200210f200441d0006a41186a2802002110200441d0006a41d4006a2802002111200441d0006a41286a2802002112024002400240024002400240024002400240024041004100105b221320026b2202200220134b1b220220126b2214201420024b1b2214450d00200441c0006a2001105c200441306a20042903402215200441c0006a41086a29030022164280a094a58d1d420010b1054200200dad2217200429033022187d221920192017564200200441306a41086a2903002017201854ad7c7d22174200522017501b22021b22184200201720021b221784500d0420154280a8d6b9075441002016501b0d01200441186a2014ad42002018201710b005200441086a2004290318200441186a41086a290300428094ebdc03420010b005200441286a200141084200201520154280d8a9c6787c2217200a200a201756200920162017201554ad7c427f7c22175620092017511b22021b22182004290308221920182019542017200920021b2218200441086a41086a29030022175420182017511b22021b221a7d221b201b20155620162018201720021b22187d2015201a54ad7d221520165620152016511b22141b4200201520141b105d0240024020042802280d000240024020020d002003450d010b20044188026a2001201a20184108105e2004280288024101460d0820044188026a41086a2903002115200420044198026a290300370390022004201537038802200420044188026a3602e801200441e8016a105f0b20020d0020030d01200041003a0008200041023a0000200041186a2009370000200041106a200a370000200041386a200b360000200041346a200c360000200041306a20123600002000412c6a200d360000200041286a200e360000200041246a200f360000200041206a20103600002000413c6a20042903a801370000200041c4006a200441b0016a290300370000200041cc006a200441a8016a41106a290300370000200041d4006a200441a8016a41186a290300370000200041dc006a2011360000200541037122004103460d0520000e030c05050c0b200ead4220862010ad84220a10042109200441e8016a41186a200441a8016a41186a290300370300200441e8016a41106a200441a8016a41106a290300370300200441e8016a41086a200441a8016a41086a290300370300200420042903a8013703e801200441003602e802200442013703e0022009a7220b2009422088a72213200441e0026a10600240024020042802e402220320042802e802220d6b4120490d00200d41206a210220042802e00221120c010b200d41206a2202200d490d09200341017422122002201220024b1b220e4100480d090240024020030d00200e102d21120c010b20042802e0022003200e102f21120b2012450d082004200e3602e402200420123602e002200e21030b200420023602e8022012200d6a220d20042903e801370000200d41086a200441e8016a41086a290300370000200d41106a200441e8016a41106a290300370000200d41186a200441e8016a41186a29030037000020044188026a41186a220d2002ad4220862012ad841000220241186a29000037030020044188026a41106a220e200241106a29000037030020044188026a41086a2214200241086a290000370300200420022900003703880220021031200441c8016a41186a2202200d290300370300200441c8016a41106a220d200e290300370300200441c8016a41086a220e201429030037030020042004290388023703c80102402003450d00201210310b200441a1026a200229030037000020044199026a200d29030037000020044191026a200e290300370000200420042903c80137008902200441013a008802200120044188026a1061200a1005200041013a0000200041086a20044188026a41d80010ab051a2013450d03200b10310c030b200441b8026a200b360200200441b4026a200c360200200441b0026a2013360200200441ac026a200d360200200441a8026a200e360200200441a4026a200f36020020044188026a41186a2010360200200441bc026a20042903a801370200200441c4026a200441a8016a41086a290300370200200441cc026a200441a8016a41106a290300370200200441d4026a200441a8016a41186a29030037020020044188026a41106a200920177d200a201954ad7d370300200441003a0088022004200a20197d37039002200120044188026a1061200041023a0000200041086a20044188026a41d80010ab051a0c080b200041003a0008200041003a0000200041186a2009370000200041106a200a370000200041386a200b360000200041346a200c360000200041306a20123600002000412c6a200d360000200041286a200e360000200041246a200f360000200041206a20103600002000413c6a20042903a801370000200041c4006a2006290300370000200041cc006a2007290300370000200041d4006a2008290300370000200041dc006a20113600000c070b20011062200ead4220862010ad841005200041023a0008200041013a00000b200f450d05201010310c050b200f450d060c050b200041003a0008200041003a0000200041186a2009370000200041106a200a370000200041386a200b360000200041346a200c360000200041306a20123600002000412c6a200d360000200041286a200e360000200041246a200f360000200041206a20103600002000413c6a20042903a801370000200041c4006a200441b0016a290300370000200041cc006a200441a8016a41106a290300370000200041d4006a200441a8016a41186a290300370000200041dc006a20113600000c030b2004200429028c023703e801419690c00041fe00200441e8016a419491c0001038000b200e41011033000b1034000b0240200541037122004103460d0020000e03020000020b200f450d010b201010310b200441f0026a24000bfd0301047f230041f0016b22022400024002404117102d2203450d0020034100290082e1403700002003410f6a4100290091e140370000200341086a410029008ae14037000020024297808080f00237020c200220033602082001200241086a104620024190016a41186a220120023502104220862002350208841000220341186a29000037030020024190016a41106a2204200341106a29000037030020024190016a41086a2205200341086a290000370300200220032900003703900120031031200241e0006a41186a2001290300370300200241e0006a41106a2004290300370300200241e0006a41086a200529030037030020022002290390013703600240200228020c450d00200228020810310b20024180016a200241e0006aad4280808080800484100210414102210302402002280280012201450d002002280284012104200220024188016a2802003602ec01200220013602e80120024190016a200241e8016a10f40120022d00900122034102460d02200241086a20024190016a41017241d70010ab051a2004450d00200110310b20024190016a200241086a41d70010ab051a0240024020034102470d00200041023a00000c010b200020033a0000200041016a20024190016a41d70010ab051a0b200241f0016a24000f0b411741011033000b41e9bcc0004133200241086a419cbdc0001038000bc40101037f230041306b22002400200041186a41086a220141afa7c200ad4280808080d001841001220241086a2900003703002000200229000037031820021031200041086a41086a200129030037030020002000290318370308200041186a200041086aad428080808080028410021041024002400240200028021822020d00410021010c010b20012802004104490d0120022800002101200028021c450d00200210310b200041306a240020010f0b41e9bcc0004133200041286a419cbdc0001038000b910302047f027e230041d0006b22022400024002404114102d2203450d00200341002900a09b41370000200341106a41002800b09b41360000200341086a41002900a89b4137000020024294808080c002370224200220033602202001200241206a1046200241306a41186a220120023502284220862002350220841000220341186a290000370300200241306a41106a2204200341106a290000370300200241306a41086a2205200341086a2900003703002002200329000037033020031031200241186a2001290300370300200241106a2004290300370300200241086a20052903003703002002200229033037030002402002280224450d00200228022010310b200241306a2002ad42808080808004841002104102400240200228023022030d0042002106420021070c010b200241306a41086a2802004110490d02200341086a2900002107200329000021062002280234450d00200310310b2000200737030820002006370300200241d0006a24000f0b411441011033000b41e9bcc0004133200241206a419cbdc0001038000bcb0c05057f057e017f037e047f23004180016b22052400024002400240024002400240024002402002410671450d004110102d2206450d01200641002900da9b41370000200641086a41002900e29b41370000200542908080808002370254200520063602502001200541d0006a1046200541e0006a41186a220720053502584220862005350250841000220641186a290000370300200541e0006a41106a2208200641106a290000370300200541e0006a41086a2209200641086a2900003703002005200629000037036020061031200541306a41186a2007290300370300200541306a41106a2008290300370300200541306a41086a20092903003703002005200529036037033002402005280254450d00200528025010310b200541e0006a200541306aad4280808080800484220a1002104120052802602206450d00200541e0006a41086a28020022074110490d0220074170714110460d022007417c714120460d02200641086a290000210b2006290000210c200641186a290000210d2006290010210e2006280020210702402005280264450d00200610310b4114102d2206450d03200641002900a09b41370000200641106a41002800b09b41360000200641086a41002900a89b4137000020054294808080c002370254200520063602502001200541d0006a1046200541e0006a41186a220820053502584220862005350250841000220641186a290000370300200541e0006a41106a2209200641106a290000370300200541e0006a41086a220f200641086a2900003703002005200629000037036020061031200541306a41186a2008290300370300200541306a41106a2009290300370300200541306a41086a200f2903003703002005200529036037033002402005280254450d00200528025010310b200541e0006a200a100210414200211002400240200528026022060d00420021114200210a0c010b200541e0006a41086a2802004110490d05200641086a290000210a200629000021112005280264450d00200610310b200541106a200d42004100105b220620076b2207200720064b1bad2212420010b005200541206a20124200200e420010b005200542004200200e420010b0054200210e02402005290308200529031884420052200541286a2903002212200529030020052903107c7c220d201254720d00200b200d200c2005290320221056200b200d56200b200d511b22061b200d7d200c201020061b220d201054ad7d210e200d20107d21100b201020112011201056200a200e56200a200e511b22061b200356200e200a20061b220e200456200e2004511b450d0041e0f3c2002106412621010c070b200541e0006a2001109e02200528026822060d04410021062005280264450d05200528026010310c050b411041011033000b41e9bcc0004133200541d0006a419cbdc0001038000b411441011033000b41e9bcc0004133200541d0006a419cbdc0001038000b109901211020052802602213200641386c6a211420052802642115201321060240024002400340200641386a2108200641106a290300210e2006411c6a280200210f200641186a28020021092006290308210a20062d00302116024002400240024020062903002211427f7c220d4201560d00200da70e020105010b41002106200a200358200e200458200e2004511b0d02200fad4220862009ad842010560d010c020b0240200641206a2802002206450d002009200641186c6a2107200921060340200641186a21010240200641106a2903002010580d00200641086a290300200e7c2006290300220e200a7c220a200e54ad7c210e0b2001210620072001470d000b0b41002106200a200358200e200458200e2004511b0d010b201620027141ff017141004721060b02402011500d00200f450d00200910310b024020060d002008210620082014470d010c030b0b20082014460d0203402008290300220e4202510d030240200e500d002008411c6a280200450d00200841186a28020010310b200841386a22082014470d000c030b0b20082014460d0003402008290300220e4202510d010240200e500d002008411c6a280200450d00200841186a28020010310b200841386a22082014470d000b0b410021062015450d01201310310c010b41aff3c20021062015450d00201310310b413121010b200020013602042000200636020020054180016a24000bfb0402057f047e230041e0006b22052400024002400240024002404114102d2206450d00200641002900a09b41370000200641106a41002800b09b41360000200641086a41002900a89b4137000020054294808080c002370234200520063602302001200541306a1046200541c0006a41186a220720053502384220862005350230841000220641186a290000370300200541c0006a41106a2208200641106a290000370300200541c0006a41086a2209200641086a2900003703002005200629000037034020061031200541106a41186a2007290300370300200541106a41106a2008290300370300200541106a41086a20092903003703002005200529034037031002402005280234450d00200528023010310b200541c0006a200541106aad42808080808004841002104102400240200528024022060d004200210a4200210b0c010b200541c0006a41086a2802004110490d02200641086a290000210b2006290000210a2005280244450d00200610310b410121060240200a20027d220c200a56200b20037d200a200254ad7d220d200b56200d200b511b4101470d00200041d998c100360204200041086a411d3602000c050b0240200a428094ebdc03544100200b501b0d00200c42ff93ebdc0356200d420052200d501b0d00200041f698c100360204200041086a411a3602000c040b200541086a20012004200c200d105d200528020822060d022001200c200d109702200041106a2003370300200041086a2002370300410021060c040b411441011033000b41e9bcc0004133200541306a419cbdc0001038000b200528020c210120002006360204200041086a20013602000b410121060b20002006360200200541e0006a24000bf00204027f017e027f057e230041306b22012400200141186a41086a2202418a9bc100ad4280808080e0028422031001220441086a2900003703002001200429000037031820041031200141086a41086a2205200229030037030020012001290318370308200141186a200141086aad4280808080800284220610021041024002400240200128021822040d0042002107420021080c010b20022802004110490d01200441086a290000210820042900002107200128021c450d00200410310b2000280200220441086a29030021092004290300210a200220031001220441086a2900003703002001200429000037031820041031200520022903003703002001200129031837030820014200200820097d2007200a54ad7d22032007200a7d220a200756200320085620032008511b22021b37032020014200200a20021b3703182006200141186aad42808080808002841003200141306a24000f0b41e9bcc0004133200141286a419cbdc0001038000bbc0301057f230041106b2203240002400240024002400240200141046a2204417f4c0d000240024020040d00410121050c010b2004102d2205450d020b20034100360208200320043602042003200536020020012003106f0240024020032802042206200328020822056b2001490d00200328020021040c010b200520016a22042005490d05200641017422072004200720044b1b22074100480d050240024020060d002007102d21040c010b200328020020062007102f21040b2004450d032003200736020420032004360200200721060b200420056a2000200110ab051a02400240200241046a2802002207200241086a28020022006b200520016a2201490d00200228020021050c010b200020016a22052000490d05200741017422002005200020054b1b22004100480d050240024020070d002000102d21050c010b200228020020072000102f21050b2005450d0420022005360200200241046a2000360200200241086a28020021000b200241086a200020016a360200200520006a2004200110ab051a02402006450d00200410310b200341106a24000f0b1032000b200441011033000b200741011033000b200041011033000b1034000bfa0301047f230041d0006b220224000240024002404117102d2203450d0020034100290082e1403700002003410f6a4100290091e140370000200341086a410029008ae14037000020024297808080f002370224200220033602202000200241206a1046200241306a41186a220020023502284220862002350220841000220341186a290000370300200241306a41106a2204200341106a290000370300200241306a41086a2205200341086a2900003703002002200329000037033020031031200241186a2000290300370300200241106a2004290300370300200241086a20052903003703002002200229033037030002402002280224450d00200228022010310b200241003602382002420137033020012d000021004101102d21030240024020004101460d002003450d032002410136023420022002280238220041016a36023820022003360230200320006a41003a0000200141086a200241306a10f5010c010b2003450d032002410136023420022002280238220041016a36023820022003360230200320006a41013a00002002200241306a360220200141016a200241206a103e0b200228023421032002ad4280808080800484200235023842208620022802302201ad84100302402003450d00200110310b200241d0006a24000f0b411741011033000b410141011033000b410141011033000b9d0201047f230041d0006b2201240002404117102d2202450d0020024100290082e1403700002002410f6a4100290091e140370000200241086a410029008ae14037000020014297808080f002370224200120023602202000200141206a1046200141306a41186a220020013502284220862001350220841000220241186a290000370300200141306a41106a2203200241106a290000370300200141306a41086a2204200241086a2900003703002001200229000037033020021031200141186a2000290300370300200141106a2003290300370300200141086a20042903003703002001200129033037030002402001280224450d00200128022010310b2001ad42808080808004841009200141d0006a24000f0b411741011033000b950c05017f037e017f047e027f23004190026b22072400200741d8006a200620042005200120021064200741c8016a200320072903582208200741d8006a41086a2903002209410141112001200284501b105e0240024020072802c8014101470d0020004180023b0001200041013a0000200041036a41003a00000c010b200741386a20072903d001220242004204420010b005200741286a420042002002420010b005200741c8006a2007290338200741386a41086a290300220a200741c8016a41106a220b290300220142028620072903287c7c220c4205420010b105200741c8016a41086a220641f8bfc000ad42808080808001841001220341086a290000370300200720032900003703c80120031031200741e8006a41086a2006290300370300200720072903c801370368200741f8006a200741e8006aad4280808080800284100210412007290330210d200741c8006a41086a290300210e2007290348210f024002400240024002400240200728027822040d00410021030c010b20074180016a2802002105200728027c211041002103200741003a00e801034020052003460d02200741c8016a20036a200420036a2d00003a00002007200341016a22063a00e8012006210320064120470d000b200741f0016a41186a2203200741c8016a41186a290300370300200741f0016a41106a2205200741c8016a41106a290300370300200741f0016a41086a2211200741c8016a41086a290300370300200720072903c8013703f001200641ff01714120490d0220074188016a41086a201129030037030020074188016a41106a200529030037030020074188016a41186a2003290300370300200720072903f0013703880102402010450d00200410310b200741f0016a41186a20074188016a41186a290300370300200741f0016a41106a20074188016a41106a290300370300200741f0016a41086a20074188016a41086a29030037030020072007290388013703f001410121030b200142b3e6cc99b3e6cc9933200e200142ffffffffffffffff3f83200152200d42005272200c200a547222061b220a200142b3e6cc99b3e6cc9933200f20061b220c200254200a200154200a2001511b22061b220a7d210d2002200c200220061b220154ad210c200741c8016a41186a2206200741f0016a41186a290300370300200b200741f0016a41106a290300370300200741c8016a41086a2204200741f0016a41086a290300370300200720072903f0013703c80120030d02200741a8016a41186a4200370300200741b8016a4200370300200741a8016a41086a4200370300200742003703a8010c030b200341ff0171450d00200741003a00e8010b41e9bcc0004133200741c8016a419cbdc0001038000b200741a8016a41186a2006290300370300200741a8016a41106a200741c8016a41106a290300370300200741a8016a41086a2004290300370300200720072903c8013703a8010b200d200c7d210c200220017d2102200741186a200741a8016a2001200a1065200741d8016a200a200741186a41086a290300220e7d20012007290318220d54ad7d200e200a7d200d200154ad7d200d200158200e200a58200e200a5122031b22061b37030020072001200d7d200d20017d20061b3703d0012007200d200156200e200a5620031b2203ad3703c801200741c8016a41086a21060240024020030d00200720063602f001200741f0016a105f0c010b200720063602f001200741f0016a10430b200741c8016a1066200741086a200741c8016a2002200c106520074180026a200c200741086a41086a290300220a7d20022007290308220154ad7d200a200c7d2001200254ad7d2001200258200a200c58200a200c5122031b22061b3703002007200220017d200120027d20061b3703f80120072001200256200a200c5620031b2203ad3703f001200741f0016a41086a21060240024020030d00200720063602a801200741a8016a105f0c010b200720063602a801200741a8016a10430b200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a2008427f2009501b370300200041003a00000b20074190026a24000bf00502017f067e230041f0006b220624004200210742002108024020030d00200641386a2001ad42004290ce00420010b005200641c0006a2903002006290338220942e8077c2207200954ad7c21080b200641286a2002418094ebdc032002418094ebdc03491bad42004232420010b005200641d8006a41086a220341e8c7c400ad4280808080a003841001220241086a2900003703002006200229000037035820021031200641c8006a41086a200329030037030020062006290358370348200641d8006a200641c8006aad428080808080028410021041200641286a41086a290300210a2006290328210b0240024020062802582202450d00024020032802004108490d00200229000021090240200628025c450d00200210310b20092009423f87220c7c200c85210c200942005521020c020b41e9bcc0004133200641e8006a419cbdc0001038000b4200210c410021020b200641186a2007200b7c22092008200a7c2009200754ad7c2207200c428094ebdc03802208420010b0052006200c20084280ec94a37c7e7ca722033602582006418094ebdc0336025c200641086a2009428094ebdc03804200200641d8006a2003418094ebdc034b4102746a3502002208420010b0052000427f427f2007427f200641186a41086a290300220c200641086a41086a2903002006290308220a20082009428094ebdc03827e22082008428094ebdc038022084280ec94a37c7e7c4280cab5ee01562008a76aad7c2208200a54ad7c7c2006290318220a20087c220b200a542203ad7c220820032008200c542008200c511b22031b220a7c2009427f200b20031b220c7c220b2009542203ad7c22082003200820075420082007511b22031b42002007200a7d2009200c54ad7d22082009200c7d220c200956200820075620082007511b22011b20021b220920057c427f200b20031b4200200c20011b20021b220720047c220c2007542202ad7c22072002200720095420072009511b22021b3703082000427f200c20021b370300200641f0006a24000bfe0302057f027e230041d0006b22042400024002404114102d2205450d00200541002900a09b41370000200541106a41002800b09b41360000200541086a41002900a89b4137000020044294808080c002370224200420053602202001200441206a1046200441306a41186a220620043502284220862004350220841000220541186a290000370300200441306a41106a2207200541106a290000370300200441306a41086a2208200541086a2900003703002004200529000037033020051031200441186a2006290300370300200441106a2007290300370300200441086a20082903003703002004200429033037030002402004280224450d00200428022010310b200441306a2004ad42808080808004841002104102400240200428023022050d00420021094200210a0c010b200441306a41086a2802004110490d02200541086a290000210a200529000021092004280234450d00200510310b200441306a2001200920027c2202200a20037c2002200954ad7c109102200441106a200441306a41106a2903002209370300200420042903382202370308200420042903302203370300024020034200510d002004200441086a360230200441306a105f42002102420021090b2000200237030020002009370308200441d0006a24000f0b411441011033000b41e9bcc0004133200441206a419cbdc0001038000bb00b04067f017e037f017e230041c0016b22012400200141386a41086a220241f4c7c200ad42808080809002841001220341086a2900003703002001200329000037033820031031200141086a41086a200229030037030020012001290338370308200141c8006a200141086a4110105220012d00482103200141186a41186a2204200141e1006a290000370300200141186a41106a2205200141d9006a290000370300200141186a41086a2206200141d1006a290000370300200120012900493703180240024020034101470d0020002001290318370000200041186a2004290300370000200041106a2005290300370000200041086a20062903003700000c010b200141c8006a41086a220441d1a7c200ad4280808080d001841001220341086a29000037030020012003290000370348200310312002200429030037030020012001290348370338200141186a200141386aad4280808080800284100210410240024002400240024020012802182203450d00200128021c21022001200141206a28020036020c20012003360208200141c8006a200141086a106b20012802482206450d02200129024c21072002450d01200310310c010b41042106420021070b2007422088a7220841246c2203450d012003415c6a21022006210303400240024020032d00004101460d002002450d040c010b200341016a2800002104200341086a28020021052001200341106a28020036021c200120053602180240200441c28289aa04460d0020020d010c040b200141c8006a200141186a106c20012d004822034102460d03200141ac016a2802002105200128024c2109200141386a41086a220441fcdbc200ad4280808080a002841001220241086a2900003703002001200229000037033820021031200141c8006a41086a200429030037030020012001290338370348200141386a200141c8006aad42808080808002841002104102400240024020012802382202450d00200128023c210a2001200428020036020c20012002360208200141186a200141086a10890120012802182204450d02200129021c210b200a450d01200210310c010b4200210b410121040b4100210202402009200520034101711b2203200b422088a74f0d00200420034105746a2203450d00200141186a41186a200341186a290000370300200141186a41106a200341106a290000370300200141186a41086a200341086a29000037030020012003290000370318410121020b0240200ba7450d00200410310b2002450d04200141c8006a41186a2202200141186a41186a290300370300200141c8006a41106a2204200141186a41106a290300370300200141c8006a41086a2205200141186a41086a29030037030020012001290318370348200141386a41086a220941f4c7c200ad42808080809002841001220341086a2900003703002001200329000037033820031031200141086a41086a2009290300370300200120012903383703082001411036023c2001200141086a360238200141c8006a200141386a10b002200041186a2002290300370000200041106a2004290300370000200041086a2005290300370000200020012903483700000c050b41e9bcc0004133200141b8016a419cbdc0001038000b200341246a21032002415c6a21020c000b0b41e9bcc0004133200141b8016a419cbdc0001038000b20004200370000200041186a4200370000200041106a4200370000200041086a42003700000b02402008450d00200841246c21022006210303400240024020032d0000220441034b0d0002400240024020040e0404000102040b2003410c6a280200450d03200341086a28020010310c030b2003410c6a280200450d02200341086a28020010310c020b2003410c6a280200450d01200341086a28020010310c010b200341086a280200450d00200341046a28020010310b200341246a21032002415c6a22020d000b0b2007a7450d00200610310b200141c0016a24000b3400200041da84c40036020420004100360200200041146a4101360200200041106a41a491c000360200200041086a42083702000b130020004102360204200041a892c0003602000bd41604057f017e037f067e230041f0036b22002400200041c8036a41086a2201418ba9c400ad42808080808002841001220241086a290000370300200020022900003703c80320021031200041e8026a41086a2001290300370300200020002903c8033703e802200041c0016a200041e8026a106a0240024002400240024002400240024020002d00c0014102470d00200041c0016a41086a220341d1a7c200ad4280808080d001841001220241086a290000370300200020022900003703c0012002103120012003290300370300200020002903c0013703c803200041e0006a200041c8036aad4280808080800284100210410240024020002802602202450d00200028026421012000200041e8006a28020036020420002002360200200041c0016a2000106b20002802c0012204450d0320002902c40121052001450d01200210310c010b41042104420021050b024002402005422088a722060d00410221070c010b200641246c210120042102024002400340024020022d00004101470d00200241016a2800002103200241086a28020021082000200241106a28020036026420002008360260200341c28289aa04470d00200041c0016a200041e0006a106c20002d00c00122074102470d020b200241246a21022001415c6a22010d000b410221070c010b200020002800c40136005b200020002800c101360258200041c8016a29030021092000200041d0016a41d80010ab0541a8026a290300210a0b2006450d00200641246c21012004210203400240024020022d0000220341034b0d0002400240024020030e0404000102040b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b02402005a7450d00200410310b200020002802583602b8012000200028005b3600bb01200041e0006a200041d80010ab051a0240024020074102470d0041002102200041e8026a21030c010b200020002802b8013602c002200020002800bb013600c302200020093703b802200041c0016a200041e0006a41d80010ab051a2000200a3703b002200041c8036a41086a220141a2a8c400ad42808080808002841001220241086a290000370300200020022900003703c80320021031200041e8026a41086a2001290300370300200020002903c8033703e80220004188036a200041e8026aad4280808080800284220a10021041024002402000280288032202450d0020004188036a41086a2802004108490d05200229000021050240200028028c03450d00200210310b20054200520d010b200041b8026a200041b0026a20074101461b2903002105200041c8036a41086a220241a2a8c400ad42808080808002841001220141086a290000370300200020012900003703c80320011031200041e8026a41086a22032002290300370300200020002903c8033703e8022000200537038803200a20004188036aad4280808080800184100320024192a8c400ad42808080808002841001220141086a290000370300200020012900003703c8032001103120032002290300370300200020002903c8033703e802200041c8036a200a100210410240024020002802c80322080d00410021010c010b20002802cc032104200020022802003602cc02200020083602c80220004188036a200041c8026a106d2000280288032201450d06200029028c0321052004450d00200810310b200241c2a8c400ad4280808080f001841001220841086a290000370300200020082900003703c8032008103120032002290300370300200020002903c8033703e80220004188036a200041e8026a106e20002d0088032103200041c8036a41186a2208200041a1036a290000370300200041c8036a41106a220420004199036a290000370300200220004191036a29000037030020002000290089033703c8032001410820011b21020240024020034101460d00200041e8026a41186a4200370300200041e8026a41106a4200370300200041f0026a4200370300200042003703e8020c010b200041e8026a41186a2008290300370300200041e8026a41106a2004290300370300200041e8026a41086a200041c8036a41086a290300370300200020002903c8033703e8020b200041c8026a41086a200041e8026a41086a290300220b370300200041c8026a41106a200041e8026a41106a290300220c370300200041c8026a41186a200041e8026a41186a290300220d370300200020002903e802220e3703c80220004188036a41086a2005420020011b37030020004188036a41106a2206200e37030020004188036a41186a200b370300200041a8036a200c37030020004188036a41286a200d3703002000200236028c032000410036028803200041003602d003200042013703c8034101102d2202450d06200041013602cc03200020002802d003220141016a3602d003200020023602c803200220016a41013a0000200028028c03210120004188036a410c6a2802002202200041c8036a106f02402002450d002001200241286c6a210403402001200041c8036a1046200141206a29030021050240024020002802cc03220320002802d00322026b4108490d0020002802c80321030c010b200241086a22082002490d0b200341017422022008200220084b1b22024100480d0b0240024020030d002002102d21030c010b20002802c80320032002102f21030b2003450d0a200020023602cc03200020033602c80320002802d00321020b2000200241086a3602d003200320026a20053700002004200141286a2201470d000b0b2006200041c8036a1070200041f3026a200041d0036a280200360000200020002903c80322053703b803200020053700eb02200041c8036a410c6a200041ef026a290000370000200041c28289aa043600c903200041023a00c803200020002900e8023700cd03200041c8036a10712000280288030d00200028029003450d00200028028c0310310b200041b8026a200041b0026a20074101461b2903002105200041c8036a41086a220141b2a8c400ad42808080808002841001220241086a290000370300200020022900003703c80320021031200041e8026a41086a2001290300370300200020002903c8033703e8022000200537038803200a20004188036aad4280808080800184100341002102024020070d0020004188036a41086a200041c0016a41086a29030037030020004188036a41106a200041c0016a41106a2d00003a0000200020002800c3023600cb02200020002802c0023602c802200020002903c00137038803410121020b200041e8026a21030b200041c0016a41086a2009370300200041c0016a41106a200029038803370300200041d8016a20004188036a41086a290300370300200041e0016a20004188036a41106a2d00003a0000200020023a00c001200020002802c8023600c101200020002800cb023600c401200041c8036a41086a2208418ba9c400ad42808080808002841001220141086a290000370300200020012900003703c80320011031200041e8026a41086a2008290300370300200020002903c8033703e8024101102d2201450d0720004201370264200020013602600240024020020d0020004101360268200141003a00000c010b20004101360268200141013a0000200041c0016a410172200041e0006a10700b200028026421022003ad4280808080800284200035026842208620002802602201ad8410032002450d00200110310b200041f0036a24000f0b41e9bcc0004133200041b8036a419cbdc0001038000b41e9bcc0004133200041b8036a419cbdc0001038000b41e9bcc0004133200041b8036a419cbdc0001038000b410141011033000b200241011033000b1034000b410141011033000b870301067f230041e0006b22022400200241086a2001ad428080808080028410021041024002400240200228020822030d00200041023a00000c010b200241106a2802002204450d0120032d0000220541014b0d01200228020c2106410021010240024020050e020100010b41002101200241003a0058200341016a21072004417f6a21040340024020042001470d00200141ff0171450d04200241003a00580c040b200241386a20016a200720016a2d00003a00002002200141016a22053a00582005210120054120470d000b200241186a41186a200241386a41186a290300370300200241186a41106a200241386a41106a290300370300200241186a41086a200241386a41086a29030037030020022002290338370318410121010b200020013a000020002002290318370001200041096a200241206a290300370000200041116a200241286a290300370000200041196a200241306a2903003700002006450d00200310310b200241e0006a24000f0b41e9bcc0004133200241386a419cbdc0001038000b990a02137f017e230041e0006b22022400200241086a2001102c0240024020022802080d000240200128020441246e220341246c2204417f4c0d00200228020c210502400240024020040d00410421060c010b2004102d2206450d010b02400240024020050d00410021040c010b2002412d6a2107200241cb006a220841056a21094100210a4100210b0340024002402001280204220c450d002001280200220d2d000021042001200c417f6a220e3602042001200d41016a360200200441064b0d00024002400240024002400240024020040e0700070107030402000b20022001102c20022802000d0620012802042002280204220c490d06200c417f4c0d0c024002400240200c0d004101210441010d010c090b200c107a2204450d012001280204200c490d0620042001280200200c10ab05210f2001280204220d200c490d072001200d200c6b36020420012001280200200c6a360200200f450d080b200241206a41086a200241386a41086a290200370300200220022902383703202004410876210f4104210d200c210e201041ffffff0771200441187472221021110c080b200c41011033000b41002104200241003a0058200c417e6a210c03400240200e2004470d00200441ff0171450d07200241003a00580c070b200241386a20046a200d20046a220f41016a2d00003a00002001200c3602042001200f41026a3602002002200441016a220f3a0058200c417f6a210c200f2104200f4120470d000b2002200829000037032020022009290000370025200228004721122002280043210e200228003f210c2002280238211120022f013c210420022d003e210f200741026a200241356a41026a2d00003a0000200720022f00353b00002004200f41107472210f4100210d0c060b200241386a20011079200228023c220c450d04200228024421122002280240210e200228023821114101210d0c050b200241386a20011079200228023c220c450d03200228024421122002280240210e200228023821114102210d0c040b200241386a20011079200228023c220c450d02200228024421122002280240210e200228023821114103210d0c030b200410310c010b200c200d107b000b200041003602000240200b450d002006210403400240024020042d0000220141034b0d0002400240024020010e0404000102040b2004410c6a280200450d03200441086a28020010310c030b2004410c6a280200450d02200441086a28020010310c020b2004410c6a280200450d01200441086a28020010310c010b200441086a280200450d00200441046a28020010310b200441246a2104200a415c6a220a0d000b0b2003450d07200610310c070b200241106a41086a2213200241206a41086a290300370300200220022903203703100240200b2003470d0002400240200341016a22042003490d00200341017422142004201420044b1b2204ad42247e2215422088a70d002015a7221441004e0d010b1034000b0240024020030d002014102d21060c010b2006200341246c2014102f21060b2006450d03200421030b2006200b41246c6a220420123600102004200e36000c2004200c3600082004200f3b0005200420113600012004200d3a0000200441076a200f4110763a0000200420022903103700142004411c6a2013290300370000200a41246a210a200b41016a2204210b20042005470d000b0b2000200336020420002006360200200041086a20043602000c040b201441041033000b200441041033000b1032000b200041003602000b200241e0006a24000bd20903067f017e057f230041f0016b22022400024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002005417f6a220541014b0d0520050e020102010b200041023a00000c050b20064104490d012004280001210720012003417b6a22053602042001200441056a36020020054108490d02200429000521082001200341736a36020420012004410d6a36020041002105200241003a00b001410d20036b2109200341726a210603400240200920056a0d000240200541ff0171450d00200241003a00b0010b200041023a00000c060b20024190016a20056a200420056a220a410d6a2d00003a0000200120063602042001200a410e6a3602002002200541016a220a3a00b0012006417f6a2106200a2105200a4120470d000b200241f0006a41186a20024190016a41186a290300370300200241f0006a41106a20024190016a41106a290300370300200241f0006a41086a20024190016a41086a290300370300200220022903900137037041002105200241003a00d0012004200a6a2109200a20036b410d6a210a03400240200a20056a0d000240200541ff0171450d00200241003a00d0010b200041023a00000c060b20024190016a20056a200920056a2204410d6a2d00003a00002001200636020420012004410e6a3602002002200541016a22043a00d0012006417f6a210620042105200441c000470d000b200241106a41386a220120024190016a41386a290300370300200241106a41306a220520024190016a41306a290300370300200241106a41286a220620024190016a41286a290300370300200241106a41206a220420024190016a41206a290300370300200241106a41186a220a20024190016a41186a290300370300200241106a41106a220320024190016a41106a290300370300200241106a41086a220920024190016a41086a290300370300200241d0006a41086a220b200241f0006a41086a290300370300200241d0006a41106a220c200241f0006a41106a290300370300200241d0006a41186a220d200241f0006a41186a290300370300200220022903900137031020022002290370370350200041003a000020002002290350370001200041096a200b290300370000200041116a200c290300370000200041196a200d290300370000200041216a2002290310370000200041296a2009290300370000200041316a2003290300370000200041396a200a290300370000200041c1006a2004290300370000200041c9006a2006290300370000200041d1006a2005290300370000200041d9006a2001290300370000200041e3006a2002410f6a2d00003a0000200041e1006a20022f000d3b0000200041e8006a2008370300200041e4006a20073602000c040b0240024020064104490d002004280001210620012003417b6a22053602042001200441056a360200200541084f0d010b200041023a00000c040b200041013a0000200020022f00103b0001200429000521082001200341736a36020420012004410d6a360200200041086a2008370300200041046a2006360200200041036a200241126a2d00003a0000200041106a20024190016a41e00010ab051a0c030b200041023a00000c020b200041023a00000c010b200041023a00000b200241f0016a24000bb005020c7f047e230041f0006b2202240020022001102c0240024002400240024020022802000d00200128020441286e220341286c2204417f4c0d02200228020421050240024020040d00410821060c010b2004102d2206450d040b02402005450d00410021070340200241003a00682007220841016a210720012802042109417f210a410021040240024002400240034020092004460d01200241c8006a20046a2001280200220b2d00003a000020012009200a6a3602042001200b41016a3602002002200441016a220c3a0068200a417f6a210a200c2104200c4120470d000b200241286a41186a2204200241c8006a41186a290300370300200241286a41106a220a200241c8006a41106a290300370300200241286a41086a220d200241c8006a41086a290300370300200220022903483703282009200c6b220c4108490d01200b290001210e2001200b41096a3602002001200c41786a360204200241086a41086a220c200d290300370300200241086a41106a2209200a290300370300200241086a41186a220a20042903003703002002200229032837030820032008470d030240200841017422042007200420074b1b2203ad42287e220f422088a70d00200fa7220441004e0d030b1034000b200441ff0171450d00200241003a00680b200041003602002003450d05200610310c050b0240024020080d002004102d21060c010b2006200841286c2004102f21060b2006450d070b2006200841286c6a22042002290308370300200c290300210f20092903002110200a29030021112004200e370320200441186a2011370300200441106a2010370300200441086a200f37030020072005470d000b0b2000200336020420002006360200200041086a20053602000c010b200041003602000b200241f0006a24000f0b1032000b200441081033000b200441081033000bd20201057f230041e0006b22022400200241086a2001ad42808080808002841002104102400240200228020822030d00200041003a00000c010b200241106a2802002104200228020c210541002101200241003a00580340024020042001470d000240200141ff0171450d00200241003a00580b41e9bcc0004133200241386a419cbdc0001038000b200241386a20016a200320016a2d00003a00002002200141016a22063a00582006210120064120470d000b200241186a41186a2201200241386a41186a290300370300200241186a41106a2206200241386a41106a290300370300200241186a41086a2204200241386a41086a2903003703002002200229033837031802402005450d00200310310b20002002290318370001200041013a0000200041196a2001290300370000200041116a2006290300370000200041096a20042903003700000b200241e0006a24000b920701037f0240024002400240024002402000413f4b0d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d06200241017422042003200420034b1b22044100480d060240024020020d002004102d21030c010b200128020020022004102f21030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a20004102743a00000f0b200041808001490d032000418080808004490d020c010b200441011033000b0240024002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102d21030c010b200128020020022004102f21030b2003450d0120012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a000002400240200141046a2802002203200428020022026b4104490d00200128020021030c010b200241046a22042002490d05200341017422022004200220044b1b22024100480d050240024020030d002002102d21030c010b200128020020032002102f21030b2003450d0220012003360200200141046a2002360200200141086a28020021020b200141086a200241046a360200200320026a20003600000f0b200441011033000b200241011033000b024002400240200141046a2802002203200141086a28020022026b4104490d00200128020021030c010b200241046a22042002490d03200341017422022004200220044b1b22024100480d030240024020030d002002102d21030c010b200128020020032002102f21030b2003450d0120012003360200200141046a2002360200200141086a28020021020b200141086a200241046a360200200320026a20004102744102723600000f0b200241011033000b024002400240200141046a2802002203200141086a28020022026b4102490d00200128020021030c010b200241026a22042002490d02200341017422022004200220044b1b22024100480d020240024020030d002002102d21030c010b200128020020032002102f21030b2003450d0120012003360200200141046a2002360200200141086a28020021020b200141086a200241026a360200200320026a20004102744101723b00000f0b200241011033000b1034000b952901067f20002d0000210202400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141046a2203280200200141086a22042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0001210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0220012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0002210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0320012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0003210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0420012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0004210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0520012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0005210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0620012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0006210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0720012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0007210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0820012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0008210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0920012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0009210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0a20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000a210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0b20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000b210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0c20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000c210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0d20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000d210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0e20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000e210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d0f20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000f210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1020012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0010210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0011210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1220012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0012210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1320012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0013210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1420012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0014210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1520012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0015210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1620012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0016210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1720012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0017210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1820012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0018210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1920012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0019210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1a20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001a210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1b20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001b210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1c20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001c210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1d20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001d210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1e20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001e210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102d21060c010b200128020020052007102f21060b2006450d1f20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001f210502400240200328020020042802002200460d00200128020021030c010b200041016a22032000490d21200041017422062003200620034b1b22064100480d210240024020000d002006102d21030c010b200128020020002006102f21030b2003450d2020012003360200200141046a2006360200200141086a28020021000b2004200041016a360200200320006a20053a00000f0b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200641011033000b1034000b850907037f017e017f017e047f027e047f230041d0006b22012400200141186a41086a220241d1a7c200ad4280808080d001841001220341086a2900003703002001200329000037031820031031200141086a200229030037030020012001290318370300200141c0006a2001ad428080808080028422041002104102400240024002400240024020012802402203450d00200128024421022001200141c0006a41086a28020036021420012003360210200141186a200141106a106b20012802182205450d02200129021c210602402002450d00200310310b2006422088a721072006a721020c010b410421054100210742002106410021020b200141186a41206a2208200041206a280200360200200141186a41186a2209200041186a290200370300200141186a41106a220a200041106a290200370300200141186a41086a2203200041086a29020037030020012000290200370318024020072002470d00024020072006a7470d00200741016a22002007490d05200741017422022000200220004b1bad220b42247e220c422088a70d05200ca722004100480d050240024020070d002000102d21050c010b2005200741246c2000102f21050b2005450d03200642808080807083200b8421060b2006422088a721070b2005200741246c6a22002001290318370200200041206a2008280200360200200041186a2009290300370200200041106a200a290300370200200041086a2003290300370200200341d1a7c200ad4280808080d001841001220041086a2900003703002001200029000037031820001031200141086a2003290300370300200120012903183703002001410036024820014201370340200741016a220d200141c0006a106f02400240200d20074f0d00200128024821032001280244210a200128024021080c010b2005200d41246c6a210e2001280244210a20012802482100200521020340200141186a200210ba022001280218210f02400240200a20006b20012802202209490d00200020096a2103200128024021080c010b200020096a22032000490d06200a41017422082003200820034b1b22104100480d0602400240200a0d002010102d21080c010b2001280240200a2010102f21080b2008450d0520012010360244200120083602402010210a0b200241246a210220012003360248200820006a200f200910ab051a0240200128021c450d00200f10310b20032100200e2002470d000b0b20042003ad4220862008ad8410030240200a450d00200810310b0240200d450d00200741246c41246a21032005210003400240024020002d0000220241034b0d0002400240024020020e0404000102040b2000410c6a280200450d03200041086a28020010310c030b2000410c6a280200450d02200041086a28020010310c020b2000410c6a280200450d01200041086a28020010310c010b200041086a280200450d00200041046a28020010310b200041246a21002003415c6a22030d000b0b02402006a7450d00200510310b200141d0006a24000f0b41e9bcc0004133200141186a419cbdc0001038000b200041041033000b201041011033000b1034000bbb2901057f230041c0006b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002404116102d2203450d002003410e6a4100290083a944370000200341086a41002900fda844370000200341002900f5a84437000020034116412c102f2204450d0120042000360016200241206a41186a22002004ad4280808080a003841000220341186a290000370300200241206a41106a2205200341106a290000370300200241206a41086a2206200341086a2900003703002002200329000037032020031031200241186a2000290300370300200241106a2005290300370300200241086a20062903003703002002200229032037030020041031200128020021032001280208210420024100360228200242013703202004200241206a106f02402004450d00200320044105746a2106034020032d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d0520022005360224200220013602200b2002200441016a360228200120046a20003a0000200341016a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d0620022005360224200220013602200b2002200441016a360228200120046a20003a0000200341026a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d0720022005360224200220013602200b2002200441016a360228200120046a20003a0000200341036a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d0820022005360224200220013602200b2002200441016a360228200120046a20003a0000200341046a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d0920022005360224200220013602200b2002200441016a360228200120046a20003a0000200341056a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d0a20022005360224200220013602200b2002200441016a360228200120046a20003a0000200341066a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d0b20022005360224200220013602200b2002200441016a360228200120046a20003a0000200341076a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d0c20022005360224200220013602200b2002200441016a360228200120046a20003a0000200341086a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d0d20022005360224200220013602200b2002200441016a360228200120046a20003a0000200341096a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d0e20022005360224200220013602200b2002200441016a360228200120046a20003a00002003410a6a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d0f20022005360224200220013602200b2002200441016a360228200120046a20003a00002003410b6a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1020022005360224200220013602200b2002200441016a360228200120046a20003a00002003410c6a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1120022005360224200220013602200b2002200441016a360228200120046a20003a00002003410d6a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1220022005360224200220013602200b2002200441016a360228200120046a20003a00002003410e6a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1320022005360224200220013602200b2002200441016a360228200120046a20003a00002003410f6a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1420022005360224200220013602200b2002200441016a360228200120046a20003a0000200341106a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1520022005360224200220013602200b2002200441016a360228200120046a20003a0000200341116a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1620022005360224200220013602200b2002200441016a360228200120046a20003a0000200341126a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1720022005360224200220013602200b2002200441016a360228200120046a20003a0000200341136a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1820022005360224200220013602200b2002200441016a360228200120046a20003a0000200341146a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1920022005360224200220013602200b2002200441016a360228200120046a20003a0000200341156a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1a20022005360224200220013602200b2002200441016a360228200120046a20003a0000200341166a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1b20022005360224200220013602200b2002200441016a360228200120046a20003a0000200341176a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1c20022005360224200220013602200b2002200441016a360228200120046a20003a0000200341186a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1d20022005360224200220013602200b2002200441016a360228200120046a20003a0000200341196a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1e20022005360224200220013602200b2002200441016a360228200120046a20003a00002003411a6a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d1f20022005360224200220013602200b2002200441016a360228200120046a20003a00002003411b6a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d2020022005360224200220013602200b2002200441016a360228200120046a20003a00002003411c6a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d2120022005360224200220013602200b2002200441016a360228200120046a20003a00002003411d6a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d2220022005360224200220013602200b2002200441016a360228200120046a20003a00002003411e6a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d2320022005360224200220013602200b2002200441016a360228200120046a20003a00002003411f6a2d0000210002400240200228022420022802282204460d00200228022021010c010b200441016a22012004490d25200441017422052001200520014b1b22054100480d250240024020040d002005102d21010c010b200228022020042005102f21010b2001450d2420022005360224200220013602200b2002200441016a360228200120046a20003a0000200341206a22032006470d000b0b200228022421032002ad4280808080800484200235022842208620022802202204ad84100302402003450d00200410310b200241c0006a24000f0b411641011033000b412c41011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b1034000b3400200041d684c40036020420004100360200200041146a4109360200200041106a41b494c000360200200041086a42043702000b13002000410236020420004184a7c0003602000b3101017f02404108102d22020d00410841011033000b20004288808080800137020420002002360200200242b8173700000b3101017f02404108102d22020d00410841011033000b20004288808080800137020420002002360200200242c8013700000bea0b01057f230041106b22022400200141046a2802002103200141086a28020021040240024002400240024002400240024002400240024020002d00004101460d000240024020032004460d00200128020021050c010b200441016a22032004490d0b200441017422052003200520034b1b22034100480d0b0240024020040d002003102d21050c010b200128020020042003102f21050b2005450d0320012005360200200141046a2003360200200141086a28020021040b200141086a2206200441016a36020041002103200520046a41003a000002400240024002400240024002400240024020002d00010e080700010203040506070b200241013a000f410121030c070b410221030c050b410321030c040b410421030c030b410521030c020b410621030c010b200241073a000f02400240200141046a28020020062802002204460d00200128020021030c010b200441016a22032004490d0d200441017422052003200520034b1b22054100480d0d0240024020040d002005102d21030c010b200128020020042005102f21030b2003450d0620012003360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200320046a41073a000020002d000221030b200220033a000f0b02400240200141046a280200200141086a2802002204460d00200128020021000c010b200441016a22002004490d0b200441017422052000200520004b1b22054100480d0b0240024020040d002005102d21000c010b200128020020042005102f21000b2000450d0520012000360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200020046a20033a00000c010b0240024020032004460d00200128020021030c010b200441016a22032004490d0a200441017422052003200520034b1b22054100480d0a0240024020040d002005102d21030c010b200128020020042005102f21030b2003450d0520012003360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200320046a41013a000020002d0001220441024b0d0002400240024020040e03000102000b02400240200141046a280200200141086a2802002204460d00200128020021000c010b200441016a22002004490d0c200441017422032000200320004b1b22034100480d0c0240024020040d002003102d21000c010b200128020020042003102f21000b2000450d0820012000360200200141046a2003360200200141086a28020021040b200141086a200441016a360200200020046a41003a00000c020b02400240200141046a280200200141086a2802002204460d00200128020021000c010b200441016a22002004490d0b200441017422032000200320004b1b22034100480d0b0240024020040d002003102d21000c010b200128020020042003102f21000b2000450d0820012000360200200141046a2003360200200141086a28020021040b200141086a200441016a360200200020046a41013a00000c010b02400240200141046a280200200141086a2802002204460d00200128020021030c010b200441016a22032004490d0a200441017422052003200520034b1b22054100480d0a0240024020040d002005102d21030c010b200128020020042005102f21030b2003450d0820012003360200200141046a2005360200200141086a28020021040b200141086a2205200441016a360200200320046a41023a000020002d0002210302400240200141046a28020020052802002204460d00200128020021000c010b200441016a22002004490d0a200441017422052000200520004b1b22054100480d0a0240024020040d002005102d21000c010b200128020020042005102f21000b2000450d0920012000360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200020046a20033a00000b200241106a24000f0b200341011033000b200541011033000b200541011033000b200541011033000b200341011033000b200341011033000b200541011033000b200541011033000b1034000b950201057f230041c00a6b22012400024020002802082202200028020c460d00200141a0056a4101722103200141c8056a210403402000200241a0056a36020820022d00002105200141a0056a200241016a419f0510ab051a20054103460d01200141016a200141a0056a419f0510ab051a200120053a00a0052003200141016a419f0510ab051a02400240200541014b0d000240024020050e020001000b024020012802a805450d0020012802a40510310b20012d00b0054105490d0220012802d805450d0220012802d40510310c020b200410300c010b200128028806450d0020012802840610310b20002802082202200028020c470d000b0b02402000280204450d00200028020010310b200141c00a6a24000b960301097f230041106b2202240002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002006450d0020042d0001210720012003417e6a22063602042001200441026a3602002006450d0020042d0002210820012003417d6a22063602042001200441036a3602002006450d0020042d0003210620012003417c6a3602042001200441046a360200200241086a2001102c20022802080d022001280204200228020c2204490d022004417f4c0d0302400240024020040d004101210341010d010c050b2004107a2203450d0120012802042004490d0320032001280200200410ab0521092001280204220a2004490d062001200a20046b3602042001200128020020046a3602002009450d040b20002004360208200020033602042000410c6a2004360200200020074108742005722008411074722006411874723602000c060b200441011033000b200041003602040c040b200310310b200041003602040c020b1032000b2004200a107b000b200241106a24000b070020001087030b7001017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41053602002002420237020c20024184a0c300360208200241053602242002200241206a3602182002200241046a36022820022002360220200241086a4194a0c30010b301000b900201067f0240200041086a220228020022032001490d00200220013602000f0b0240024002400240200041046a280200220420036b200120036b2205490d0020002802002104200321000c010b200320056a22062003490d02200441017422072006200720064b1b22064100480d020240024020040d002006102d21040c010b200028020020042006102f21040b2004450d0120002004360200200041046a2006360200200041086a28020021000b200420006a210602400240024020054102490d00200641002003417f73220320016a10aa051a2004200020016a20036a22006a21060c010b2005450d010b200641003a0000200041016a21000b200220003602000f0b200641011033000b1034000b850505027f017e0a7f037e037f230041206b2202240002400240024020012802082203ad42d0007e2204422088a70d002004a72205417f4c0d00200128020021060240024020050d00410821070c010b2005102d2207450d020b0240024020030d00410021080c010b2006200341d0006c6a2109410021082007210a0340200241186a220b200641186a290300370300200241106a220c200641106a290300370300200241086a220d200641086a29030037030020022006290300370300200641c8006a280200220ead42307e2204422088a70d022004a72205417f4c0d02200641386a2903002104200641306a290300210f200641286a2903002110200641c0006a2802002101200629032021110240024020050d00410821120c010b2005102d2212450d050b200641d0006a210602400240200e0d00410021130c010b2001200e41306c6a211441002113201221050340200520012903003703002005200141086a290300370308200541106a200141106a290300370300200541186a200141186a290300370300200541206a200141206a290300370300200541286a200141286a290300370300200541306a2105201341016a2113200141306a22012014470d000b0b200a2011370320200a2002290300370300200a41386a2004370300200a41306a200f370300200a41286a2010370300200a41c8006a2013360200200a41c4006a200e360200200a41c0006a2012360200200a41186a200b290300370300200a41106a200c290300370300200a41086a200d290300370300200841016a2108200a41d0006a210a20062009470d000b0b200020083602082000200336020420002007360200200241206a24000f0b1032000b200541081033000b200541081033000bf70601037f024020002802082201450d0020002802002200200141b0056c6a21020340024020002d0000417c6a220141084b0d00024002400240024002400240024020010e09000102070304070506000b200041046a2802000d062000410c6a280200450d06200041086a28020010310c060b200041046a2d00004102490d050240200041106a2802002201450d00200141d0006c2103200041086a28020041c0006a210103400240200141046a280200450d00200128020010310b200141d0006a2101200341b07f6a22030d000b0b2000410c6a280200450d05200028020810310c050b200041086a280200450d04200041046a28020010310c040b200041086a2d00000d030240200041146a2802002201450d00200141067421032000410c6a28020041106a210103400240200141046a280200450d00200128020010310b200141c0006a2101200341406a22030d000b0b200041106a280200450d03200028020c10310c030b200041086a2d00004105490d02200041306a280200450d022000412c6a28020010310c020b200041086a280200450d01200041046a28020010310c010b0240200041086a2d0000220141014b0d000240024020010e020001000b0240200041a4016a280200450d00200041a0016a28020010310b0240200041b4016a2802002203450d00200041ac016a28020021012003410c6c210303400240200141046a280200450d00200128020010310b2001410c6a2101200341746a22030d000b0b200041b0016a280200450d0220002802ac0110310c020b0240200041a4016a280200450d00200041a0016a28020010310b0240200041b4016a2802002203450d00200041ac016a28020021012003410c6c210303400240200141046a280200450d00200128020010310b2001410c6a2101200341746a22030d000b0b200041b0016a280200450d0120002802ac0110310c010b0240200041d8006a2802002203450d00200041d0006a28020021012003412c6c210303400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b2001412c6a2101200341546a22030d000b0b0240200041d4006a280200450d00200028025010310b2000418c036a280200450d0020004188036a28020010310b200041b0056a21010240200041a4056a280200450d0020002802a00510310b2001210020012002470d000b0b0b880201027f0240024020002d0000220141074b0d00024002400240024020010e080500010505050203050b200041086a280200450d04200041046a28020010310f0b200041086a280200450d03200041046a28020010310f0b200041086a280200450d02200041046a28020010310f0b02402000410c6a2802002202450d00200041046a2802002101200241286c210203402001107f200141286a2101200241586a22020d000b0b200041086a280200450d01200028020410310c010b02402000410c6a2802002202450d00200041046a2802002101200241286c210203402001107f200141286a2101200241586a22020d000b0b200041086a280200450d00200028020410310f0b0baf04010a7f230041d0006b2202240020022001102c0240024002400240024020022802000d00200128020422034160712204417f4c0d022002280204210502400240200341057622060d00410121070c010b2004102d2207450d040b02402005450d00410021080340200241003a00482008220941016a21082001280204417f6a21034100210402400240024003402003417f460d01200241286a20046a2001280200220a2d00003a0000200120033602042001200a41016a3602002002200441016a220a3a00482003417f6a2103200a2104200a4120470d000b200241086a41186a2204200241286a41186a290300370300200241086a41106a220a200241286a41106a290300370300200241086a41086a220b200241286a41086a2903003703002002200229032837030820062009470d020240200941017422032008200320084b1b220641ffffff3f712006470d002006410574220341004e0d020b1034000b0240200441ff0171450d00200241003a00480b200041003602002006450d05200710310c050b0240024020090d002003102d21070c010b200720094105742003102f21070b2007450d070b200720094105746a22032002290308370000200341186a2004290300370000200341106a200a290300370000200341086a200b29030037000020082005470d000b0b2000200636020420002007360200200041086a20053602000c010b200041003602000b200241d0006a24000f0b1032000b200441011033000b200341011033000baf04010a7f230041d0006b2202240020022001102c0240024002400240024020022802000d00200128020422034160712204417f4c0d022002280204210502400240200341057622060d00410121070c010b2004102d2207450d040b02402005450d00410021080340200241003a00482008220941016a21082001280204417f6a21034100210402400240024003402003417f460d01200241286a20046a2001280200220a2d00003a0000200120033602042001200a41016a3602002002200441016a220a3a00482003417f6a2103200a2104200a4120470d000b200241086a41186a2204200241286a41186a290300370300200241086a41106a220a200241286a41106a290300370300200241086a41086a220b200241286a41086a2903003703002002200229032837030820062009470d020240200941017422032008200320084b1b220641ffffff3f712006470d002006410574220341004e0d020b1034000b0240200441ff0171450d00200241003a00480b200041003602002006450d05200710310c050b0240024020090d002003102d21070c010b200720094105742003102f21070b2007450d070b200720094105746a22032002290308370000200341186a2004290300370000200341106a200a290300370000200341086a200b29030037000020082005470d000b0b2000200636020420002007360200200041086a20053602000c010b200041003602000b200241d0006a24000f0b1032000b200441011033000b200341011033000bf90605097f017e037f057e027f230041c0006b2202240020022001102c02400240024002400240024020022802000d00200128020441386e220341386c2204417f4c0d02200228020421050240024020040d00410821060c010b2004102d2206450d040b02402005450d002002411c6a21074100210841002104410021090340200241306a20011083010240024020022d00304101460d002001280204220a450d002002290031210b2001280200220c2d0000210d2001200a417f6a220e3602042001200c41016a360200200d41014b0d00024002400240200d0e020001000b200e4110490d02200c41096a290000210f200c29000121102001200a416f6a220d3602042001200c41116a360200200d4108490d02200c29001121112001200a41676a220d3602042001200c41196a3602002002201142208822123e02202011a7210e420021110c010b200e4110490d01200c41096a290000210f200c29000121102001200a416f6a3602042001200c41116a360200200241306a20011084012002280230220e450d012002200229023422123703202001280204210d42012111200229022421130b2012a72114200d0d012011500d002014450d00200e10310b2000410036020002402009450d0020062101034002402001290300500d002001411c6a280200450d00200141186a28020010310b200141386a2101200441486a22040d000b0b2003450d04200610310c040b200941016a210a2001280200220c2d000021152001200d417f6a3602042001200c41016a3602002002200228001936021020022007280000360013200220022802103602082002200228001336000b024020092003470d002008200a2008200a4b1b2203ad42387e2212422088a70d082012a7220c4100480d080240024020090d00200c102d21060c010b20062004200c102f21060b2006450d070b200620046a220c41306a20153a0000200c411c6a2014360200200c41186a200e360200200c2011370300200c41106a200f370300200c41086a2010370300200c41286a200b370300200c41206a2013370300200c41316a2002280208360000200c41346a200228000b360000200841026a2108200441386a2104200a21092005200a470d000b0b2000200336020420002006360200200041086a20053602000c010b200041003602000b200241c0006a24000f0b1032000b200441081033000b200c41081033000b1034000bf00204027f017e017f077e0240024020012802042202450d0020012802002203310000210420012002417f6a22053602042001200341016a3602002005450d012003310001210620012002417e6a22053602042001200341026a3602002005450d012003310002210720012002417d6a22053602042001200341036a3602002005450d012003310003210820012002417c6a22053602042001200341046a3602002005450d012003310004210920012002417b6a22053602042001200341056a3602002005450d012003310005210a20012002417a6a22053602042001200341066a3602002005450d012003310006210b2001200241796a22053602042001200341076a3602002005450d01200041003a00002003310007210c2001200241786a3602042001200341086a3602002000200c423886200b42308684200a422886842009422086842008421886842007421086842006420886842004843700010f0b200041013a00000f0b200041013a00000bb90304097f027e017f027e230041106b22022400200241086a2001102c0240024002400240024020022802080d00200128020441186e220341186c2204417f4c0d02200228020c21050240024020040d00410821060c010b2004102d2206450d040b02402005450d0041002107410021084100210903400240024002402001280204220a4110490d002001280200220441086a290000210b2004290000210c2001200441106a3602002001200a41706a220d360204200d4108490d00200941016a210d2004290010210e2001200a41686a3602042001200441186a36020020092003470d0202402007200d2007200d4b1b2203ad42187e220f422088a70d00200fa7220441004e0d020b1034000b200041003602002003450d05200610310c050b0240024020090d002004102d21060c010b200620082004102f21060b2006450d070b200620086a2204200b3703082004200c370300200441106a200e370300200741026a2107200841186a2108200d21092005200d470d000b0b2000200336020420002006360200200041086a20053602000c010b200041003602000b200241106a24000f0b1032000b200441081033000b200441081033000be60403087f017e017f230041f0016b22022400200241086a2001102c02400240024002400240024020022802080d00200128020441f0006e220341f0006c2204417f4c0d02200228020c21050240024020040d00410421060c010b2004102d2206450d040b024002402005450d00410021074100210841002109034020024180016a2001102b200228028401450d02200941016a2104200241106a20024180016a41f00010ab051a024020092003470d0020072004200720044b1b2203ad42f0007e220a422088a70d09200aa7220b4100480d090240024020090d00200b102d21060c010b20062008200b102f21060b2006450d080b200620086a200241106a41f00010ab051a200741026a2107200841f0006a21082004210920052004470d000b0b2000200336020420002006360200200041086a20053602000c020b2000410036020002402009450d00200620086a210120062107034002402007410c6a2802002209450d0020072802042104200941246c210903400240024020042d0000220841034b0d0002400240024020080e0404000102040b2004410c6a280200450d03200441086a28020010310c030b2004410c6a280200450d02200441086a28020010310c020b2004410c6a280200450d01200441086a28020010310c010b200441086a280200450d00200441046a28020010310b200441246a21042009415c6a22090d000b0b200741f0006a21040240200741086a280200450d00200728020410310b2004210720012004470d000b0b2003450d01200610310c010b200041003602000b200241f0016a24000f0b1032000b200441041033000b200b41041033000b1034000bfb1002147f037e230041c0026b22022400200241086a2001102c0240024020022802080d000240200128020441c4006e220341c4006c2204417f4c0d00200228020c210502400240024020040d00410421060c010b2004102d2206450d010b024002402005450d0020024198026a410772210741002108034002400240024002400240024020012802042209450d002001280200220a2d0000210420012009417f6a220b3602042001200a41016a360200200441014b0d000240024020040e020001000b200b41034d0d01200a280001210c20012009417b6a3602042001200a41056a360200200241d4016a41026a200241d8016a41026a2d00003a0000200241b8016a41086a200241f8016a41086a290200370300200241b8016a41106a200241f8016a41106a290200370300200241b8016a41186a200241f8016a41186a2d00003a000020024198016a41086a20024198026a41086a29010037030020024198016a41106a20024198026a41106a29010037030020024198016a41186a20024198026a41186a290100370300200220022f00d8013b01d401200220022902f8013703b801200220022901980237039801200220022f01f4013b0196014100210d0c030b4100210e200241003a00b8022009417e6a210d03400240200b200e2204470d000240200441ff0171450d00200241003a00b8020b4102210d0c040b20024198026a20046a200a20046a220e41016a2d00003a00002001200d3602042001200e41026a3602002002200441016a220e3a00b802200d417f6a210d200e4120470d000b200241f4016a41026a220f20022d009a023a0000200241d8016a41086a2210200741086a290000370300200241d8016a41106a2211200741106a290000370300200241d8016a41186a2212200741186a2d00003a0000200220022f0198023b01f401200220072900003703d801200b200e460d01200228009b022113200a200e6a220a41016a2d0000210b2001200d3602042001200a41026a360200200b41014b0d014100211402400240200b0e020100010b4100210d200241003a00b802200e20096b41026a210b200920046b417c6a210403400240200b200d6a0d00200d41ff0171450d04200241003a00b8020c040b20024198026a200d6a200a200d6a220e41026a2d00003a0000200120043602042001200e41036a3602002002200d41016a220e3a00b8022004417f6a2104200e210d200e4120470d000b200241f8016a41186a20024198026a41186a290300370300200241f8016a41106a20024198026a41106a290300370300200241f8016a41086a20024198026a41086a29030037030020022002290398023703f801410121140b20024198016a41186a200241f8016a41186a29030037030020024198016a41106a200241f8016a41106a29030037030020024198016a41086a200241f8016a41086a290300370300200241d4016a41026a200f2d00003a0000200241b8016a41086a2010290300370300200241b8016a41106a2011290300370300200241b8016a41186a20122d00003a0000200220022903f80137039801200220022f01f4013b01d401200220022903d8013703b8014101210d201421152013210c0c020b20024192016a41026a200241d4016a41026a2d00003a0000200241f8006a41086a200241b8016a41086a290300370300200241f8006a41106a200241b8016a41106a290300370300200241f8006a41186a200241b8016a41186a2d00003a0000200241d8006a41086a20024198016a41086a290300370300200241d8006a41106a20024198016a41106a290300370300200241d8006a41186a20024198016a41186a290300370300200220022f01d4013b019201200220022903b8013703782002200229039801370358200220022f0196013b01560c020b4102210d0b20024192016a41026a2204200241d4016a41026a2d00003a0000200241f8006a41086a220a200241b8016a41086a290300370300200241f8006a41106a220b200241b8016a41106a290300370300200241f8006a41186a2209200241b8016a41186a2d00003a0000200241d8006a41086a220f20024198016a41086a290300370300200241d8006a41106a221020024198016a41106a290300370300200241d8006a41186a221120024198016a41186a290300370300200220022f01d4013b019201200220022903b8013703782002200229039801370358200220022f0196013b0156200d4102460d00200841016a210e200241d2006a41026a221220042d00003a0000200241386a41086a2213200a290300370300200241386a41106a220a200b290300370300200241386a41186a220b20092d00003a0000200241186a41086a2209200f290300370300200241186a41106a220f2010290300370300200241186a41186a22102011290300370300200220022f0192013b01522002200229037837033820022002290358370318200220022f01563b011620032008470d02024020084101742204200e2004200e4b1b2203ad42c4007e2216422088a70d002016a7220441004e0d020b1034000b200041003602002003450d08200610310c080b0240024020080d002004102d21060c010b2006200841c4006c2004102f21060b2006450d030b2006200841c4006c6a2204200d3a00002004200c360004200441036a20122d00003a0000200420022f01523b0001200b2d0000210d200a29030021162013290300211720022903382118200420153a002120042018370008200441106a2017370000200441186a2016370000200441206a200d3a00002004413a6a2010290300370000200441326a200f2903003700002004412a6a200929030037000020042002290318370022200420022f01163b0042200e2108200e2005470d000b0b2000200336020420002006360200200041086a20053602000c040b200441041033000b200441041033000b1032000b200041003602000b200241c0026a24000ba10303087f017e017f230041800a6b22022400200241086a2001102c02400240024002400240024020022802080d00200128020441f8046e220341f8046c2204417f4c0d02200228020c21050240024020040d00410821060c010b2004102d2206450d040b024002402005450d00410021074100210441002108034020024188056a20011088012002280288054113460d02200841016a2109200241106a20024188056a41f80410ab051a024020082003470d0020072009200720094b1b2203ad42f8047e220a422088a70d09200aa7220b4100480d090240024020080d00200b102d21060c010b20062004200b102f21060b2006450d080b200620046a200241106a41f80410ab051a200741026a2107200441f8046a21042009210820052009470d000b0b2000200336020420002006360200200041086a20053602000c020b2000410036020002402008450d0020062109034020091030200941f8046a2109200441887b6a22040d000b0b2003450d01200610310c010b200041003602000b200241800a6a24000f0b1032000b200441081033000b200b41081033000b1034000bc17e06087f017e067f0a7e017f037e23004180186b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200200541124b0d14200141046a210720050e130102030405060708090a0b0c0d0e0f10111213010b200041133602000c410b02402006450d0020012003417e6a3602042001200441026a3602000b200041133602000c400b2006450d3d20042d0001210520012003417e6a22083602042001200441026a360200200541064b0d3d4101210902400240024002400240024020050e0741000102030405410b20022001102c20022802000d42200128020420022802042204490d422004417f4c0d1d02400240024020040d00410121060c010b2004107a2206450d0120072802002004490d4320062001280200200410ab051a200128020422032004490d202001200320046b3602042001200128020020046a3602000b2006450d432004ad220a422086200a84210a410221090c410b200441011033000b20084108490d412004290002210a2001200341766a36020420012004410a6a360200410321090c3f0b200241086a2001102c20022802080d402001280204200228020c2204490d402004417f4c0d1b02400240024020040d00410121060c010b2004107a2206450d0120072802002004490d4120062001280200200410ab051a200128020422032004490d1f2001200320046b3602042001200128020020046a3602000b2006450d412004ad220a422086200a84210a410421090c3f0b200441011033000b200241206a2001102c20022802200d3f200728020041186e220b41186c2204417f4c0d1a2002280224210c0240024020040d00410421060c010b2004102d2206450d1e0b0240200c450d004100210d41002105410021090340200241186a2001102c02400240024020022802180d002001280204200228021c2203490d002003417f4c0d1f02400240024020030d004101210e0c010b2003107a220e450d3520072802002003490d01200e2001280200200310ab051a200128020422042003490d252001200420036b3602042001200128020020036a3602000b200241106a2001102c024020022802100d00200128020420022802142204490d002004417f4c0d21024002400240024020040d004101210f0c010b2004107a220f450d0120072802002004490d02200f2001280200200410ab051a200128020422082004490d292001200820046b3602042001200128020020046a3602000b200941016a21082009200b470d06200d2008200d20084b1b220bad42187e220a422088a70d49200aa7221041004e0d050c490b200441011033000b200f10310b2003450d010b200e10310b02402009450d002006210103400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141186a2101200541686a22050d000b0b200b450d430c420b0240024020090d002010102d21060c010b200620052010102f21060b2006450d230b200620056a2209200e360200200941146a2004360200200941106a20043602002009410c6a200f360200200941046a2003ad220a422086200a84370200200d41026a210d200541186a210520082109200c2008470d000b0b2006450d3f200cad422086200bad84210a410521090c3d0b200241900e6a2001108a0120022802900e2206450d3e20022902940e210a410621090c3c0b200241286a2001102c20022802280d3d2001280204200228022c2204490d3d2004417f4c0d1802400240024020040d00410121060c010b2004107a2206450d0120072802002004490d3e20062001280200200410ab051a200128020422032004490d212001200320046b3602042001200128020020046a3602000b2006450d3e2004ad220a422086200a84210a410721090c3c0b200441011033000b02402006450d0020012003417e6a3602042001200441026a3602000b200041133602000c3e0b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541034b0d00024002400240024020050e0400010203000b200241900e6a2001105720022d00900e4102460d03200241a80e6a290300210a200241900e6a41106a2903002111200241980e6a2903002112200241b00e6a280200210420022903900e2113200241306a200110af0120022802300d03200241306a41106a290300211441012101200229033821150c3c0b200241900e6a2001105720022d00900e4102460d02200241a80e6a290300210a200241900e6a41106a2903002111200241980e6a2903002112200241b00e6a280200210420022903900e2113200241e0006a200110af012002290360a70d02200241e0006a41106a290300211420022903682115200241c8006a200110af012002290348a70d02200241c8006a41106a290300211620022903502117410221010c3b0b200241900e6a2001105720022d00900e4102460d01200241a8086a41206a200241900e6a41206a2204280200360200200241a8086a41186a200241900e6a41186a2203290300370300200241a8086a41106a200241900e6a41106a2205290300370300200241a8086a41086a200241900e6a41086a2206290300370300200220022903900e3703a808200241900e6a2001105720022d00900e4102460d01200241e0036a41206a2004280200360200200241e0036a41186a2003290300370300200241e0036a41106a2005290300370300200241e0036a41086a2006290300370300200220022903900e3703e003200241f8006a200110af012002290378a70d01200241f8006a41106a29030021182002290380012119200241d80c6a41206a200241a8086a41206a2802002204360200200241d80c6a41186a200241a8086a41186a290300220a370300200241d80c6a41106a200241a8086a41106a2903002211370300200241e0036a41086a2903002114200241e0036a41186a2903002116200241e0036a41106a2903002117200241a8086a41086a2903002112200241e0036a41206a350200211a20022903e003211520022903a8082113410321010c3a0b200241900e6a2001105720022d00900e4102460d00200241e0036a41206a2204200241900e6a41206a280200360200200241e0036a41186a2203200241900e6a41186a290300370300200241e0036a41106a2205200241900e6a41106a290300370300200241e0036a41086a2206200241900e6a41086a290300370300200220022903900e3703e00320024190016a200110af01200229039001a70d0020024190016a41106a29030021142002290398012115200241b00d6a41186a2003290300220a370300200241b00d6a41106a20052903002211370300200428020021042006290300211220022903e0032113410421010c390b200041133602000c3d0b02402006450d0020012003417e6a3602042001200441026a3602000b200041133602000c3c0b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541024b0d00024002400240024020050e03000102000b200241900e6a2001105720022d00900e4102460d03200241a80e6a290300210a200241900e6a41106a2903002111200241980e6a2903002112200241b00e6a280200210420022903900e2113200241a8016a200110af0120022802a8010d03200241a8016a41106a29030021144101210120022903b00121150c020b200241900e6a2001105720022d00900e4102460d02200241a80e6a290300210a200241900e6a41106a2903002111200241980e6a2903002112200241b00e6a280200210420022903900e2113200241d8016a200110af0120022903d801a70d02200241d8016a41106a290300211420022903e0012115200241c0016a200110af0120022903c001a70d02200241c0016a41106a290300211620022903c8012117410221010c010b200241900e6a2001105720022d00900e4102460d01200241a8086a41206a200241900e6a41206a2204280200360200200241a8086a41186a200241900e6a41186a2203290300370300200241a8086a41106a200241900e6a41106a2205290300370300200241a8086a41086a200241900e6a41086a2206290300370300200220022903900e3703a808200241900e6a2001105720022d00900e4102460d01200241e0036a41206a2004280200360200200241e0036a41186a2003290300370300200241e0036a41106a2005290300370300200241e0036a41086a2006290300370300200220022903900e3703e003200241f0016a200110af0120022903f001a70d01200241f0016a41106a290300211820022903f8012119200241b00d6a41206a2201200241a8086a41206a280200360200200241b00d6a41186a2203200241a8086a41186a290300370300200241b00d6a41106a2205200241a8086a41106a290300370300200241b00d6a41086a2206200241a8086a41086a290300370300200241d80c6a41086a2207200241e0036a41086a290300370300200241d80c6a41106a2209200241e0036a41106a290300370300200241d80c6a41186a2208200241e0036a41186a290300370300200241d80c6a41206a220d200241e0036a41206a280200360200200220022903a8083703b00d200220022903e0033703d80c20012802002104200d350200211a200929030021172008290300211620072903002114200529030021112003290300210a2006290300211220022903d80c211520022903b00d2113410321010b20004105360200200041e0006a2018370200200041d8006a2019370200200041c8006a2016370200200041c0006a2017370200200041386a2014370200200041306a2015370200200041246a200a3702002000411c6a2011370200200041146a20123702002000410c6a2013370200200041d0006a201a3702002000412c6a2004360200200041086a2001360200200041e8006a20024188136a41900410ab051a0c3c0b200041133602000c3b0b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d0020024188026a200110ae01200229038802a70d00200229039002210a20004106360200200041086a200a370300200041106a20024188136a41e80410ab051a0c3b0b200041133602000c3a0b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241900e6a200110850120022802900e22010d0e0b200041133602000c390b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d0020024198026a2001102c2002280298020d002001280204200228029c022204490d002004417f4c0d12024002400240024020040d00410121030c010b2004107a2203450d0120072802002004490d0220032001280200200410ab051a200128020422052004490d1d2001200520046b3602042001200128020020046a3602000b2003450d022000200336020420004108360200200041086a2004ad220a422086200a84370200200041106a20024188136a41e80410ab051a0c3b0b200441011033000b200310310b200041133602000c380b2006450d3120042d0001210520012003417e6a22063602042001200441026a36020020050d3120064104490d312004280002210b20012003417a6a3602042001200441066a360200200241b0026a2001102c20022802b0020d31200128020420022802b4022205490d312005417f4c0d100240024020050d004101210c41010d010c330b2005107a220c450d2820072802002005490d31200c2001280200200510ab052104200128020422032005490d1a2001200320056b3602042001200128020020056a3602002004450d320b200241a8026a2001102c20022802a8020d2f2007280200410c6e220f410c6c2204417f4c0d1020022802ac0221100240024020040d004104210e0c010b2004102d220e450d1b0b0240024002400240024002402010450d004100210841002103410021090340200241a0026a2001102c20022802a0020d03200128020420022802a4022204490d032004417f4c0d170240024020040d004101210d0c010b2004107a220d450d2d20072802002004490d03200d2001280200200410ab051a200128020422062004490d232001200620046b3602042001200128020020046a3602000b200941016a210602402009200f470d0020082006200820064b1b220fad420c7e220a422088a70d3e200aa7221b4100480d3e0240024020090d00201b102d210e0c010b200e2003201b102f210e0b200e450d240b200e20036a2209200d360200200941046a2004ad220a422086200a84370200200841026a21082003410c6a21032006210920102006470d000b0b200e450d34200c450d36200728020022034104490d0220012802002207280000210820012003417c6a22043602042001200741046a36020020044104490d032007280004210d2001200341786a22093602042001200741086a36020041002104200241003a00d00e200341776a2103034020092004460d05200241900e6a20046a200720046a220641086a2d00003a0000200120033602042001200641096a3602002002200441016a22063a00d00e2003417f6a210320062104200641c000470d000b200241e0036a41106a2201200241900e6a41106a290300370300200241e0036a41086a2204200241900e6a41086a290300370300200220022903900e3703e003200641ff017141c000490d33200241b00d6a41086a2004290300370300200241b00d6a41106a2001290300370300200220022903e0033703b00d200c450d36200241900e6a41306a290300210a20022903b80e211120022903a80e211220022903b00e211320022903c80e2114200241d80c6a41106a200241b00d6a41106a2903002215370300200241d80c6a41086a200241b00d6a41086a290300221a370300200220022903b00d22193703d80c200041d8006a200a370200200041d0006a2011370200200041246a200d360200200041206a20083602002000411c6a2010360200200041186a200f360200200041146a200e360200200041106a20053602002000410c6a2005360200200041086a200c3602002000200b36020420004109360200200041286a2019370200200041306a201a370200200041386a2015370200200041e0006a2014370200200041c8006a2013370200200041c0006a2012370200200041e8006a20024188136a41900410ab051a0c3c0b200d10310b02402009450d00200e210103400240200141046a280200450d00200128020010310b2001410c6a2101200341746a22030d000b0b200f450d32200e10310c320b02402005450d00200c10310b02402010450d002010410c6c2104200e210103400240200141046a280200450d00200128020010310b2001410c6a2101200441746a22040d000b0b200f450d33200e10310c330b02402005450d00200c10310b02402010450d002010410c6c2104200e210103400240200141046a280200450d00200128020010310b2001410c6a2101200441746a22040d000b0b200f450d32200e10310c320b200441ff0171450d2e200241003a00d00e0c2e0b024002402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241b8026a2001102c20022802b802450d010b200041133602000c370b20022802bc0221012000410a36020020002001360204200041086a20024188136a41f00410ab051a0c360b02402006450d0020012003417e6a3602042001200441026a3602000b200041133602000c350b02402006450d0020042d0001210920012003417e6a22063602042001200441026a220536020020090d0041002109200241003a00b00e02400240024002400240024002400340200921082006450d01200241900e6a20086a20052d00003a000020012006417f6a22063602042001200541016a22053602002002200841016a22093a00b00e20094120470d000b200941ff01714120490d07200241a00e6a290300210a20022903980e211120022903a80e211220022903900e211341002106200241003a00b00e2011423888200a420886842114200420096a210d200920036b41026a2109200320086b417c6a2104200a423888a721080340200920066a450d02200241900e6a20066a200520066a2d00003a0000200120043602042001200d20066a41036a3602002002200641016a22033a00b00e2004417f6a21042003210620034120470d000b200341ff01714120490d07200520036a2106200241a00e6a290300210a20022903980e211520022903a80e211a20022903900e211941002105200241003a00b00e200d20036a210903402004417f460d03200241900e6a20056a20062d00003a0000200120043602042001200920056a41036a3602002002200541016a22033a00b00e2004417f6a2104200641016a21062003210520034120470d000b200341ff01714120490d07200241a00e6a290300211720022903980e211820022903a80e211620022903900e211c200241c0026a2001102c20022802c0020d07200128020420022802c4022204490d072004417f4c0d1520040d03410121030c040b200841ff0171450d06200241003a00b00e0c060b200641ff0171450d05200241003a00b00e0c050b200541ff0171450d04200241003a00b00e0c040b2004107a2203450d0120072802002004490d0220032001280200200410ab051a200128020422052004490d1e2001200520046b3602042001200128020020046a3602000b2003450d0220002017423888a73a0067200020083a0027200020033602042000410c360200200041de006a20184230883c0000200041dc006a20184220883d0100200041d8006a20183e02002000411e6a20114230883c00002000411c6a20114220883d0100200041186a20113e0200200041c0006a200a370200200041386a2015370200200041e8006a2016370200200041df006a2018423888201742088684370000200041d0006a201c370200200041c8006a201a370200200041306a2019370200200041286a20123700002000411f6a2014370000200041106a20133702002000410c6a2004360200200041086a2004360200200041f0006a20024188136a41880410ab051a0c370b200441011033000b200310310b200041133602000c340b2006450d2920042d0001210520012003417e6a220e3602042001200441026a360200200541104b0d2941052108024002400240024002400240024002400240024002400240024002400240024020050e1100010203380405060708090a0b0c0d0e0f000b200241900e6a2001105720022d00900e4102460d38200241e8036a2002419c0e6a290200370300200241f0036a200241a40e6a290200370300200220022902940e3703e00320072802002204450d38200241ac0e6a290200210a20022802900e2106200128020022032d0000210520012004417f6a22073602042001200341016a2209360200200541014b0d3802400240024020050e020001000b20074110490d3a200341116a2105420021110c010b20074110490d39200341116a2105420121110b200941086a29000021132009290000211220012004416f6a2207360204200120053602002007450d3820032d0011210520012004416e6a22073602042001200341126a360200200541014b0d38410021090240024020050e020100010b410121090b20074108490d38200329001221142001200441666a36020420012003411a6a360200200241b00d6a41086a200241e0036a41086a290300370300200241b00d6a41106a200241e0036a41106a290300370300200220022903e0033703b00d410121080c370b200e450d3720042d0002210520012003417d6a22063602042001200441036a360200200541014b0d3702400240024020050e020001000b42002111200641104f0d010c390b4201211120064110490d380b2004410b6a29000021122004290003211320012003416d6a22053602042001200441136a36020020054108490d372004290013210a200241c00d6a20123703002001200341656a36020420012004411b6a360200200220133703b80d200220113703b00d410221080c360b200e4110490d362004410a6a290000210a2004290002211120012003416e6a22053602042001200441126a36020020054108490d36200429001221122001200341666a36020420012004411a6a360200200220113703b00d2002200a3703b80d200220123703c00d410321080c350b200e450d3520042d0002210520012003417d6a22063602042001200441036a360200200541014b0d3502400240024020050e020001000b4200210a200641104f0d010c370b4201210a20064110490d360b20042900032111200241c00d6a2004410b6a29000037030020012003416d6a3602042001200441136a360200200220113703b80d2002200a3703b00d410421080c340b200e4108490d342004290002210a2001200341766a36020420012004410a6a360200200241c00d6a200241900e6a41086a2903003703002002200a3703b00d200220022903900e3703b80d410621080c330b200241d0026a2001102c20022802d0020d33200128020420022802d4022204490d332004417f4c0d160240024002400240024020040d00410121064101450d380c010b2004107a2206450d0120072802002004490d0320062001280200200410ab052103200128020422052004490d282001200520046b3602042001200128020020046a3602002003450d370b200241c8026a2001102c20022802c8020d0120022802cc022101200241c40d6a200241980e6a280200360200200220043602b40d200220043602b00d200220022902900e3702bc0d200220013602b80d410721080c350b200441011033000b2004450d340b200610310c330b200241d8026a2001102c20022802d8020d32200728020041246e221041246c2204417f4c0d1520022802dc02211b0240024020040d00410421060c010b2004102d2206450d250b0240201b450d00200241900e6a41017221034100210941002107410021040340200241900e6a20011057200241e0036a41086a2208200341086a290000370300200241e0036a41106a220d200341106a290000370300200241e0036a41186a220e200341186a290000370300200241e0036a411f6a220f2003411f6a280000360000200220032900003703e003024020022d00900e220b4102470d002010450d35200610310c350b200441016a2105200241a8086a411f6a220c200f280000360000200241a8086a41186a220f200e290300370300200241a8086a41106a220e200d290300370300200241a8086a41086a220d2008290300370300200220022903e0033703a808024020042010470d0020092005200920054b1b2210ad42247e220a422088a70d3e200aa722084100480d3e0240024020040d002008102d21060c010b200620072008102f21060b2006450d280b200620076a2204200b3a0000200441016a20022903a808370000200441096a200d290300370000200441116a200e290300370000200441196a200f290300370000200441206a200c280000360000200941026a2109200741246a210720052104201b2005470d000b0b2002201b36028c0e200220103602880e2006450d3241082108200241c00d6a200241800c6a41086a2903003703002002200231008f0e3c00b70d2002200233008d0e3d00b50d200220023500890e3e00b10d200220103a00b00d200220022903800c3703b80d0c310b410921080c300b200e450d3020042d0002210520012003417d6a3602042001200441036a360200200541014b0d30410021090240024020050e020100010b410121090b200241b00d6a41106a200241900e6a41106a290100370300200241b00d6a41086a200241900e6a41086a290100370300200220022901900e3703b00d410a21080c2f0b200241900e6a2001105720022d00900e4102460d2f200241b80d6a2002419c0e6a290200370300200241c00d6a200241a40e6a290200370300200220022902940e3703b00d200241ac0e6a290200210a20022802900e2106410b21080c2e0b200241e0026a2001102c20022802e0020d2e20022802e4022106200241b00d6a41106a200241e0036a41106a290300370300200241b00d6a41086a200241e0036a41086a290300370300200220022903e0033703b00d410c21080c2d0b410d21080c2c0b410e21080c2b0b200241900e6a200110890120022802900e2206450d2b200220022902940e3703b00d410f21080c2a0b41002105200241003a00b00e2003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d2c200241003a00b00e0c2c0b200241900e6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00b00e2003417f6a21032006210520064120470d000b200241c70d6a20022903a80e220a4230883c0000200241c50d6a200a4220883d000041102108200241b90d6a200241900e6a41106a2903003700002002200a3e00c10d200220022903980e3700b10d200220022903900e22124238883c00b00d200a423888210a2012421888a721062012420888a7210d20022900870c211120022903b80821142012a721090c290b411121080c280b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541044b0d0002400240024002400240024020050e050001020304000b200241900e6a2001108c0220022d00800f4102460d05200241b80d6a200241c00e6a290300370300200241c00d6a200241c80e6a290300370300200220022903b80e3703b00d20023100900e423886211220023500910e20023300950e20023100970e4210868442208684210a200241f80e6a290300211520022903f00e211a20022903b00e211920022802ac0e210420022f01aa0e210120022d00a90e210320022900a10e211320022d00a00e210520022903980e211120022903d00e211420022903d80e211820022903e00e211720022903e80e211620022903800f211c410121060c2c0b200241f0026a200110ae0120022903f002a70d0420022903f8022111200241e8026a2001102c20022802e8020d04200128020420022802ec022204490d042004417f4c0d10024002400240024020040d00410121030c010b2004107a2203450d0120072802002004490d0220032001280200200410ab051a200128020422052004490d242001200520046b3602042001200128020020046a3602000b200220043602e403200220043602e0032003450d06200241b00d6a41086a200241900e6a41086a290300370300200241b00d6a41106a200241900e6a41106a290300370300200220022903900e3703b00d2004ad4238862003ad42188684211220023500e10320023300e50320023100e7034210868442208684210a410221060c2d0b200441011033000b200310310c040b200241900e6a2001105720022d00900e4102460d03200241e0036a41206a200241900e6a41206a280200360200200241e0036a41186a200241900e6a41186a290300370300200241e0036a41106a200241900e6a41106a290300370300200241e0036a41086a200241900e6a41086a290300370300200220022903900e3703e00320024198036a200110af01200229039803a70d0320024198036a41106a290300210a20022903a003211520024188036a200110ae01200229038803a70d03200229039003211420024180036a2001102c2002280280030d0320012802042002280284032205490d032005417f4c0d0f02400240024020050d004101210641010d010c060b2005107a2206450d0120072802002005490d0420062001280200200510ab052104200128020422032005490d232001200320056b3602042001200128020020056a3602002004450d050b2002418b0c6a200241e0036a41086a280200360000200241a8086a41106a200241fc036a290200370300200241a8086a41086a200241f4036a290200221a370300200220022903e0033700830c2002200241e0036a410c6a29020022113703a808200241800c6a410c6a33010021182002418e0c6a310000211720022903800c211220022802bc08210420022f01ba08210120022d00b908210320022900b108211320023502880c2116200241b00d6a41106a200a370300200220153703b80d200220053602b00d2005ad4220862006ad8421192016201820174210868442208684210a201aa72105410321060c2b0b200541011033000b200241c8036a200110af0120022903c803a70d02200241d8036a290300211420022903d0032115200241b8036a200110ae0120022903b803a70d0220022903c003211a41002103200241003a00b00e2007280200417f6a21040240024002400240024003402004417f460d01200241900e6a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00b00e2004417f6a21042005210320054120470d000b20022903980e210a200241a00e6a290300211920022903a80e211320022903900e2112200241b0036a2001102c20022802b0030d07200128020420022802b4032203490d072003417f4c0d1320030d01410121040c020b200341ff0171450d06200241003a00b00e0c060b2003107a2204450d0120072802002003490d0220042001280200200310ab051a200128020422052003490d242001200520036b3602042001200128020020036a3602000b2004450d04200a42388820194208868421112019423888a721052003ad22194220862019842119200220153703b00d2002201a3703c00d200220143703b80d410421060c2b0b200341011033000b200410310c020b41002105200241003a00b00e2003417e6a21092003417d6a21060340024020092005470d00200541ff0171450d03200241003a00b00e0c030b200241900e6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00b00e2006417f6a21062007210520074120470d000b2003417e6a2007460d0120022903980e210a200241a00e6a290300211420022903a80e211320022903900e2112200420076a220941026a2d00002104200120063602042001200941036a360200200441014b0d0102400240024020040e020100010b41002104200241003a00b00e200720036b41036a2106200320076b417c6a210303400240200620046a0d00200441ff0171450d05200241003a00b00e0c050b200241900e6a20046a200920046a220541036a2d00003a0000200120033602042001200541046a3602002002200441016a22053a00b00e2003417f6a21032005210420054120470d000b200241e0036a41106a200241900e6a41106a290300370300200220022903980e3703e803200220022903900e22113703e0032011421088a7210420022903a80e21152011a72101410121030c010b4100210320022801e20321040b200a42388820144208868421112014423888a72105200241b80d6a200241e0036a41166a2f01003b0100200241b00d6a41166a200241ac086a2f01003b0100200220022901ee033703b00d200220153701ba0d200220022801a8083601c20d20022901e6032119410521060c280b200610310b200041133602000c320b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541024b0d0002400240024020050e03000102000b200241900e6a200110880120022802900e4113460d0220024188136a200241900e6a41f80410ab051a41f804102d22010d0941f80441081033000b20024188136a200110574102210420022d0088134102460d01200241d80c6a41206a20024188136a41206a280200360200200241d80c6a41186a20024188136a41186a290300370300200241d80c6a41106a20024188136a41106a290300370300200241d80c6a41086a20024188136a41086a290300370300200220022903881322143703d80c200241e40c6a290200210a200241f40c6a290200211120022902dc0c211220022902ec0c21132014a721010c090b20024188136a2001105720022d0088134102460d00200241a8086a41206a20024188136a41206a280200360200200241a8086a41186a20024188136a41186a290300370300200241a8086a41106a20024188136a41106a290300370300200241a8086a41086a20024188136a41086a29030037030020022002290388133703a808200241900e6a200110880120022802900e4113460d0020024188136a200241900e6a41f80410ab051a41f804102d2203450d21200320024188136a41f80410ab051a200241b00d6a41206a200241a8086a41206a280200360200200241b00d6a41186a200241a8086a41186a290300370300200241b00d6a41106a200241a8086a41106a290300370300200241b00d6a41086a200241a8086a41086a290300370300200220022903a80822143703b00d200241bc0d6a290200210a200241cc0d6a290200211120022902b40d211220022902c40d21132014a72101410321040c090b200041133602000c310b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241900e6a200110870120022802900e22010d090b200041133602000c300b2006450d2220042d0001210520012003417e6a3602042001200441026a360200200541064b0d2241072108024002400240024002400240024020050e0706000102040527060b20024188136a200110bf024102210820022d00c4174102460d2820024191136a29000021122002290089132111200229009913210a2002310088132113200241d80c6a200241a1136a41d70010ab051a2002418c146a280200210620024188146a280200210d20024180146a280200210b200241fc136a280200210e200228028414210920022802f813210f200241e0036a20024190146a41d80310ab051a201342388621140c020b200241900e6a200110c00220022802980e450d27200241d80c6a41086a200241b10e6a290000370300200241d80c6a41106a200241b90e6a290000370300200241ef0c6a200241900e6a41306a290000370000200241ff0c6a200241b00d6a41086a290300370000200241870d6a200241b00d6a41106a2903003700002002418f0d6a200241c80d6a290300370000200241970d6a200241d00d6a2903003700002002419f0d6a200241d80d6a290300370000200241a70d6a200241b00d6a41306a2903003700002002200241a90e6a2900003703d80c200220022903b00d3700f70c200241990e6a290000211220022900910e211120022900a10e210a20023100900e2113200241e0036a20024188136a41d80310ab051a20134238862114410321080c250b20024188136a200110bf0220022d00c4174102460d2620024191136a29000021122002290089132111200229009913210a2002310088132113200241d80c6a200241a1136a41d70010ab051a2002418c146a280200210620024188146a280200210d20024180146a280200210b200241fc136a280200210e200228028414210920022802f813210f200241e0036a20024190146a41d80310ab051a20134238862114410421080b0c230b41002105200241003a00d00d2003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d26200241003a00d00d0c260b200241b00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00d00d2003417f6a21032006210520064120470d000b200241c00d6a290300211220022903b80d211120022903c80d210a20022903b00d2114200241d80c6a200241900e6a41d70010ab051a200241e0036a20024188136a41d80310ab051a410521080c220b41002105200241003a00d00d2003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d25200241003a00d00d0c250b200241b00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00d00d2003417f6a21032006210520064120470d000b200241c00d6a290300211220022903b80d211120022903c80d210a20022903b00d2114200241d80c6a200241900e6a41d70010ab051a200241e0036a20024188136a41d80310ab051a410621080c210b20024188136a200110bf0220022d00c4174102460d2220024191136a29000021122002290089132111200229009913210a2002310088132114200241b00d6a200241a1136a41d70010ab051a2002418c146a280200210620024188146a280200210d20024180146a280200210b200241fc136a280200210e200228028414210920022802f813210f200241900e6a20024190146a41d80310ab051a200728020022044108490d212001280200220329000021132001200441786a3602042001200341086a360200200241d80c6a200241b00d6a41d70010ab051a200241e0036a200241900e6a41d80310ab051a20144238862114410121080c200b2006450d0120042d0001210520012003417e6a3602042001200441026a360200200541024b0d01024002400240024020050e03000102000b200241900e6a200110c00220022802980e450d04200241e0036a41306a200241900e6a41306a290300370300200241e0036a41286a200241900e6a41286a290300370300200241e0036a41206a200241900e6a41206a290300370300200241e0036a41186a200241900e6a41186a290300370300200241e0036a41106a200241900e6a41106a290300370300200241e0036a41086a200241900e6a41086a290300370300200220022903900e3703e0034201210a0c020b200241900e6a200110c00220022802980e450d03200241e0036a41306a200241900e6a41306a290300370300200241e0036a41286a200241900e6a41286a290300370300200241e0036a41206a200241900e6a41206a290300370300200241e0036a41186a200241900e6a41186a290300370300200241e0036a41106a200241900e6a41106a290300370300200241e0036a41086a200241900e6a41086a290300370300200220022903900e3703e0034202210a0c010b200241900e6a200110c00220022802980e450d02200241e0036a41306a200241900e6a41306a290300370300200241e0036a41286a200241900e6a41286a290300370300200241e0036a41206a200241900e6a41206a290300370300200241e0036a41186a200241900e6a41186a290300370300200241e0036a41106a200241900e6a41106a290300370300200241e0036a41086a200241900e6a41086a290300370300200220022903900e3703e0034203210a0b200241a8086a41306a200241e0036a41306a2903002211370300200241a8086a41286a200241e0036a41286a2903002212370300200241a8086a41206a200241e0036a41206a2903002213370300200241a8086a41186a200241e0036a41186a2903002214370300200241a8086a41106a200241e0036a41106a2903002215370300200241a8086a41086a200241e0036a41086a290300221a370300200220022903e00322193703a808200041086a200a37020020004112360200200041106a2019370200200041186a201a370200200041206a2015370200200041286a2014370200200041306a2013370200200041386a2012370200200041c0006a2011370200200041c8006a20024188136a41b00410ab051a0c2e0b200041133602000c2d0b200041133602000c2c0b200041086a20022902940e3702002000200136020420004107360200200041106a20024188136a41e80410ab051a0c2b0b200120024188136a41f80410ab051a410121040b0b200020043602042000410f360200200041246a20113702002000411c6a2013370200200041146a200a3702002000410c6a20123702002000412c6a2003360200200041086a2001360200200041306a200241e0036a41c80410ab051a0c280b200041086a20022902940e3702002000200136020420004110360200200041106a20024188136a41e80410ab051a0c270b1032000b20042003107b000b20042003107b000b200441041033000b20032004107b000b20042008107b000b201041041033000b20042003107b000b20042005107b000b20052003107b000b200441041033000b20042006107b000b201b41041033000b20042005107b000b20042005107b000b200441041033000b200841041033000b20042005107b000b20052003107b000b20032005107b000b200341011033000b200441011033000b41f80441081033000b200541011033000b200241800c6a200241d80c6a41d70010ab051a200241a8086a200241e0036a41d80310ab051a200041196a2012370000200020113700112000200a37002120002014370009200041086a20083a000020004111360200200041296a200241800c6a41d70010ab051a20004194016a200636020020004190016a200d3602002000418c016a200936020020004188016a200b36020020004184016a200e36020020004180016a200f36020020004198016a200241a8086a41d80310ab051a200041f0046a20133702000c0e0b0240200e450d00200f10310b02402006450d002006410c6c21042009210103400240200141046a280200450d00200128020010310b2001410c6a2101200441746a22040d000b0b200d450d00200910310b200041133602000c0c0b200241d80c6a41106a2207200241b00d6a41106a290300370300200241d80c6a41086a200241b00d6a41086a290300221d370300200220022903b00d221e3703d80c200041176a200a4230883c0000200041156a200a4220883d00002000200a3e0011200041306a20193700002000412c6a2004360000200020013b002a200020033a0029200041216a2013370000200041206a20053a0000200041186a201137020020002012370009200041086a20063a00002000410e360200200041f8006a2015370200200041f0006a201a370200200041386a201e370200200041c0006a201d37020020004180016a201c370200200041e8006a2016370200200041e0006a2017370200200041d8006a2018370200200041d0006a2014370200200041c8006a200729030037020020004188016a20024188136a41f00310ab051a0c0b0b200241d80c6a41106a200241b00d6a41106a2903002215370300200241d80c6a41086a200241b00d6a41086a290300221a370300200220022903b00d22193703d80c200041c0006a2013370200200041386a20123702002000410c6a20063602002000200d3b010a200020093a0009200041086a20083a00002000410d360200200041106a2019370200200041186a201a370200200041206a2015370200200041c8006a2014370200200041306a2011370200200041286a200a370200200041d0006a20024188136a41a80410ab051a0c0a0b200041133602000c090b02402005450d00200c10310b02402010450d002010410c6c2104200e210103400240200141046a280200450d00200128020010310b2001410c6a2101200441746a22040d000b0b200f450d02200e10310c020b2005450d010b200c10310b200041133602000c050b20004103360200200041e0006a2018370200200041d8006a2019370200200041c8006a2016370200200041c0006a2017370200200041386a2014370200200041306a2015370200200041246a200a3702002000411c6a2011370200200041146a20123702002000410c6a2013370200200041d0006a201a3702002000412c6a2004360200200041086a2001360200200041e8006a20024188136a41900410ab051a0c040b20004101360200200041106a200a3702002000410c6a2006360200200041086a2009360200200041186a20024188136a41e00410ab051a0c030b200610310b200041133602000c010b1034000b20024180186a24000baf04010a7f230041d0006b2202240020022001102c0240024002400240024020022802000d00200128020422034160712204417f4c0d022002280204210502400240200341057622060d00410121070c010b2004102d2207450d040b02402005450d00410021080340200241003a00482008220941016a21082001280204417f6a21034100210402400240024003402003417f460d01200241286a20046a2001280200220a2d00003a0000200120033602042001200a41016a3602002002200441016a220a3a00482003417f6a2103200a2104200a4120470d000b200241086a41186a2204200241286a41186a290300370300200241086a41106a220a200241286a41106a290300370300200241086a41086a220b200241286a41086a2903003703002002200229032837030820062009470d020240200941017422032008200320084b1b220641ffffff3f712006470d002006410574220341004e0d020b1034000b0240200441ff0171450d00200241003a00480b200041003602002006450d05200710310c050b0240024020090d002003102d21070c010b200720094105742003102f21070b2007450d070b200720094105746a22032002290308370000200341186a2004290300370000200341106a200a290300370000200341086a200b29030037000020082005470d000b0b2000200636020420002007360200200041086a20053602000c010b200041003602000b200241d0006a24000f0b1032000b200441011033000b200341011033000ba504030a7f017e017f230041106b22022400200241086a2001102c02400240024002400240024020022802080d002001280204410c6e2203410c6c2204417f4c0d02200228020c21050240024020040d00410421060c010b2004102d2206450d040b0240024002402005450d00410021074100210841002109034020022001102c20022802000d03200128020420022802042204490d032004417f4c0d060240024002400240024020040d004101210a0c010b2004107a220a450d0120012802042004490d06200a2001280200200410ab051a2001280204220b2004490d0c2001200b20046b3602042001200128020020046a3602000b200941016a210b20092003470d0202402007200b2007200b4b1b2203ad420c7e220c422088a70d00200ca7220d41004e0d020b1034000b200441011033000b0240024020090d00200d102d21060c010b20062008200d102f21060b2006450d0a0b200620086a2209200a360200200941086a2004360200200941046a2004360200200741026a21072008410c6a2108200b21092005200b470d000b0b2000200336020420002006360200200041086a20053602000c030b200a10310b2000410036020002402009450d002006210403400240200441046a280200450d00200428020010310b2004410c6a2104200841746a22080d000b0b2003450d01200610310c010b200041003602000b200241106a24000f0b1032000b200441041033000b2004200b107b000b200d41041033000bf602010b7f230041106b22022400200241086a2001102c0240024002400240024020022802080d0020012802042203417c712204417f4c0d02200228020c210502400240200341027622060d00410421070c010b2004102d2207450d040b02402005450d0041002108410021094100210403400240024002402001280204220a4104490d00200441016a21032001280200220b280000210c2001200a417c6a3602042001200b41046a36020020042006470d02024020082003200820034b1b220641ffffffff03712006470d002006410274220a41004e0d020b1034000b200041003602002006450d05200710310c050b0240024020040d00200a102d21070c010b20072009200a102f21070b2007450d070b200720096a200c360200200841026a2108200941046a21092003210420052003470d000b0b2000200636020420002007360200200041086a20053602000c010b200041003602000b200241106a24000f0b1032000b200441041033000b200a41041033000bed0704067f017e0a7f027e230041f0006b22032400200341206a2001200228020c22041101000240024020032802200d002000410036020820004208370200200120022802001102002002280204450d01200110310c010b200341c8006a41106a200341206a41106a290300370300200341c8006a41086a200341206a41086a290300370300200341c8006a41186a200341206a41186a290300370300200341c8006a41206a200341206a41206a280200360200200341086a200341d4006a290200370300200341106a200341dc006a290200370300200341186a200341e4006a290200370300200320032903203703482003200329024c370300200341c8006a2001200228021022051101000240024002400240417f2003280248220641016a220720072006491b2208ad42287e2209422088a70d002009a72206417f4c0d000240024020060d004108210a4108210b0c010b2006102d220a450d02200a210b0b200a2003290300370300200a41186a200341186a220c290300370300200a41106a200341106a220d290300370300200a41086a200341086a290300370300200b4201370320200341206a200120041101000240024020032802200d004101210e0c010b200341c8006a410472210641c800210f4101210e0340200341c8006a41206a200341206a41206a280200360200200341c8006a41186a2210200341206a41186a290300370300200341c8006a41106a2211200341206a41106a290300370300200341c8006a41086a2212200341206a41086a29030037030020032003290320370348200341086a2207200641086a290200370300200d200641106a290200370300200c200641186a290200370300200320062902003703002010200c2903003703002011200d29030037030020122007290300370300200320032903003703480240200e2008470d00200341206a200120051101002008417f2003280220220741016a221320132007491b6a22072008490d06200841017422132007201320074b1b2213ad42287e2209422088a70d062009a722074100480d060240024020080d002007102d210a0c010b200a200841286c2007102f210a0b200a450d05200a210b201321080b200b200f6a221341606a2207200329034837030020122903002109201129030021142010290300211520134201370300200741186a2015370300200741106a2014370300200741086a2009370300200341206a20012004110100200f41286a210f200e41016a210e20032802200d000b0b2001200228020011020002402002280204450d00200110310b2000200e360208200020083602042000200b3602000c040b1032000b200641081033000b200741081033000b1034000b200341f0006a24000b9714040d7f047e057f037e230041b0016b220224000240024002400240200141086a220328020022042001410c6a2802002205470d00200241306a21060c010b200241f8006a41206a2107200241f8006a41286a2108200241f8006a41086a2109024003402003200441386a220a360200200241086a2206200441106a290300370300200241106a220b200441186a290300370300200241186a220c200441206a290300370300200241206a220d200441286a290300370300200241286a220e200441306a2903003703002002200441086a2903003703002004290300220f4202510d0120092002290300370300200941086a2006290300370300200941106a200b290300370300200941186a200c290300370300200941206a200d290300370300200941286a200e2903003703002002200f370378024002402001280210220b2008460d002008290000200b290000510d00200241e0006a41086a200741086a290300370300200241e0006a41106a200741106a29030037030020022007290300370360200241f8006a41186a2903002110200229038801211120022903800121122002290378210f0c010b20012802142206290300210f20064202370300200241e0006a41086a200641286a290300370300200241e0006a41106a200641306a2903003703002002200641206a290300370360200641186a290300211020062903102111200629030821122002290378500d00200228029401450d0020022802900110310b200f4202520d03200a21042005200a470d000b200241306a2106200521040c010b200441386a2104200241306a21060b2000410036020820004208370200024020042005460d00200641106a210a0340200141086a2004220941386a2204360200200941186a29030021102009290300210f200641086a200941286a290300370300200a200941306a2903003703002006200941206a290300370300200f4202510d010240200f500d004100201042808080801054201042808080801085501b0d002010a710310b20052004470d000b0b2001280204450d01200128020010310c010b200241c8006a41086a2209200241e0006a41086a290300370300200241c8006a41106a2206200241e0006a41106a29030037030020022002290360370348024002404138102d220e450d00200e200f370300200e2002290348370320200e2012370308200e41106a2011370300200e41286a2009290300370300200e41306a2006290300370300200e41186a20103703002001280204211320012802002114410121150240200541486a2004470d0041012116200521040c020b20012802142106200441386a290300210f200241286a200441e8006a290300370300200241206a2201200441e0006a290300370300200241186a200441d8006a290300370300200241106a220a200441d0006a290300370300200241086a220c200441c8006a2903003703002002200441c0006a290300370300200441f0006a21040240200f4202520d00410121160c020b200641206a210d200241f8006a41206a2108200241f8006a41286a2117200241f8006a41086a21094101211541012116024002400340024002400240200b2017470d00034020092002290300370300200941086a200c290300370300200941106a200a290300370300200941186a200241186a2207290300370300200941206a2001290300370300200941286a200241286a22032903003703002002200f3703782006290300210f20064202370300200241e0006a41086a200d41086a290300370300200241e0006a41106a200d41106a2903003703002002200d290300370360200641186a2903002110200629031021112006290308211202402002290378500d00200228029401450d0020022802900110310b200f4202520d03024020052004470d00200521040c090b2004290300210f2003200441306a2903003703002001200441286a2903003703002007200441206a290300370300200a200441186a290300370300200c200441106a2903003703002002200441086a290300370300200441386a2104200f4202520d000b200441486a21040c010b02400340200941286a200241286a2207290300370300200941206a2001290300370300200941186a200241186a2203290300370300200941106a200a290300370300200941086a200c290300370300200920022903003703002002200f370378024002402017290000200b290000510d00200241e0006a41086a200841086a290300370300200241e0006a41106a200841106a29030037030020022008290300370360200241f8006a41186a2903002110200229038801211120022903800121122002290378210f0c010b2006290300210f20064202370300200241e0006a41086a200d41086a290300370300200241e0006a41106a200d41106a2903003703002002200d290300370360200641186a290300211020062903102111200629030821122002290378500d00200228029401450d0020022802900110310b200f4202520d03024020052004460d002004290300210f2007200441306a2903003703002001200441286a2903003703002003200441206a290300370300200a200441186a290300370300200c200441106a2903003703002002200441086a290300370300200441386a2104200f4202510d020c010b0b200521040c070b200441486a21040b200441386a21040c050b200241c8006a41086a200241e0006a41086a2903002218370300200241c8006a41106a200241e0006a41106a290300221937030020022002290360221a370348200241f8006a41106a22032019370300200920183703002002201a370378024020162015470d00201541016a22072015490d03201541017422162007201620074b1b2216ad42387e2218422088a70d032018a722074100480d030240024020150d002007102d210e0c010b200e201541386c2007102f210e0b200e450d020b200e201541386c6a220720123703082007200f370300200741186a2010370300200741106a2011370300200741206a2002290378370300200741286a2009290300370300200741306a2003290300370300201541016a2115024020042005460d002004290300210f200241286a200441306a2903003703002001200441286a290300370300200241186a200441206a290300370300200a200441186a290300370300200c200441106a29030037030020022004290308370300200441386a2104200f4202510d050c010b0b200521040c030b200741081033000b1034000b413841081033000b024020042005460d00200241386a2109200241c0006a21060340200441186a29030021102004290300210f2009200441286a2903003703002006200441306a2903003703002002200441206a290300370330200f4202510d010240200f500d004100201042808080801054201042808080801085501b0d002010a710310b200441386a22042005470d000b0b02402013450d00201410310b20002015360208200020163602042000200e3602000b200241b0016a24000bcb12050c7f027e097f017e027f230041c0016b220224000240024002400240200141086a220328020022042001410c6a2802002205470d00200241386a2106200241d0006a21070c010b20024188016a41286a210820024188016a41086a21060240034020032004220941386a2204360200200241086a41086a2207200941106a290300370300200241086a41106a220a200941186a290300370300200241086a41186a220b200941206a290300370300200241086a41206a220c200941286a290300370300200241086a41286a220d200941306a2903003703002002200941086a2903003703082009290300220e4202510d0120062002290308370300200641086a2007290300370300200641106a200a290300370300200641186a200b290300370300200641206a200c290300370300200641286a200d2903003703002002200e370388010240200128021022072008460d0020082900002007290000520d040b0240200e500d0020022802a401450d0020022802a00110310b20052004470d000b200241d0006a2107200241386a2106200521040c010b200941386a2104200241d0006a2107200241386a21060b2000410036020820004208370200024020042005460d000340200141086a2004220941386a22043602002009290300210e200741086a200941106a2903003703002007200941086a290300370300200941186a280200210b2009411c6a280200210a200641106a200941306a290300370300200641086a200941286a2903003703002006200941206a290300370300200e4202510d010240200e500d00200a450d00200b10310b20052004470d000b0b2001280204450d01200128020010310c010b200241f8006a41086a2204200641086a290300370300200241e0006a41106a220b20024188016a41306a290300370300200241e0006a41086a220c20024188016a41286a2903003703002002200241a8016a290300220f370338200220062903003703782002200f37036020022802a001210620022802a401210d0240024002404138102d220a450d00200a200e370300200a2002290378370308200a200d36021c200a2006360218200a2002290360370320200a41106a2004290300370300200a41286a200c290300370300200a41306a200b290300370300200128020421102001280200211141012112200541486a2009460d01200941386a290300210f200241086a41286a220b200941e8006a290300370300200241086a41206a220c200941e0006a290300370300200241086a41186a220d200941d8006a290300370300200241086a41106a2208200941d0006a290300370300200241086a41086a2201200941c8006a2903003703002002200941c0006a290300370308200941f0006a21090240200f4202520d00410121130c030b20024188016a41206a211420024188016a41286a210320024188016a41086a2106200921154101211241012113200a2116200f210e02400240024003402015210402400240024020072003470d000340200641286a200241086a41286a2204290300370300200641206a200241086a41206a2201290300370300200641186a200241086a41186a2207290300370300200641106a200241086a41106a220b29030037030020062002290308370300200641086a200241086a41086a220c2903003703002002200f370388010240200f500d0020022802a401450d0020022802a00110310b024020052009470d00410121120c0a0b2009290300210f2004200941306a2903003703002001200941286a2903003703002007200941206a290300370300200b200941186a290300370300200c200941106a2903003703002002200941086a290300370308200941386a2109200f4202520d000b200941486a210941012112410121130c010b0340200641286a200b290300370300200641206a200c290300370300200641186a200d290300370300200641106a2008290300370300200641086a22152001290300370300200620022903083703002002200e3703880120032900002007290000520d020240200e500d0020022802a401450d0020022802a00110310b20052004460d042004290300210e200b200441306a290300370300200c200441286a290300370300200d200441206a2903003703002008200441186a2903003703002001200441106a2903003703002002200441086a290300370308200441386a2104200e4202520d000b200441486a21092016210a0b200941386a21090c070b200241f8006a41086a22172015290300370300200241e0006a41106a2215201441106a290300370300200241e0006a41086a2218201441086a290300370300200220142903002219370338200220062903003703782002201937036020022802a001211a20022802a401211b20012017290300370300200220022903783703082006201829030037030020024188016a41106a221720152903003703002002200229036037038801024020132012470d00201241016a22152012490d04201241017422132015201320154b1b2213ad42387e2219422088a70d042019a722154100480d040240024020120d002015102d21160c010b2016201241386c2015102f21160b2016450d030b2016201241386c6a2215200e37030020152002290308370308201541106a20012903003703002015411c6a201b360200201541186a201a360200201541206a200229038801370300201541286a2006290300370300201541306a2017290300370300201241016a211220052004460d012004290300210e200b200441306a290300370300200c200441286a290300370300200d200441206a2903003703002008200441186a2903003703002001200441106a2903003703002002200441086a290300370308200441386a2115200e4202520d000b200441386a21092016210a0c050b2016210a200521090c040b201541081033000b1034000b413841081033000b41012113200521090b024020092005460d0003402009290300210e200241d0006a41086a200941106a2903003703002002200941086a290300370350200941186a28020021062009411c6a2802002104200241386a41106a200941306a290300370300200241386a41086a200941286a2903003703002002200941206a290300370338200e4202510d010240200e500d002004450d00200610310b200941386a22092005470d000b0b02402010450d00201110310b20002012360208200020133602042000200a3602000b200241c0016a24000b891304057f017e067f017e230041b0016b2203240002400240024002400240024002400240024002404114102d2204450d00200441002900eee040370000200441106a41002800fee040360000200441086a41002900f6e04037000020034294808080c00237022c200320043602282003200341286a3602782001200341f8006a103e200341f8006a41186a220520033502304220862003350228841000220441186a290000370300200341f8006a41106a2206200441106a290000370300200341f8006a41086a2207200441086a2900003703002003200429000037037820041031200341d0006a41186a2005290300370300200341d0006a41106a2006290300370300200341d0006a41086a2007290300370300200320032903783703500240200328022c450d00200328022810310b200341f8006a200341d0006aad428080808080048422081002104102400240200328027822070d00410221050c010b200328027c2109200320034180016a28020036022c20032007360228200341206a200341286a102c20032802200d042003280224210a200341186a200341286a102c20032802180d04200328021c210b200341106a200341286a102c20032802100d04200328022c2204450d042003280214210c20032004417f6a36022c20032003280228220441016a36022820042d0000220441014b0d04410021050240024020040e020100010b410121050b200341086a200341286a102c20032802080d04200328022c220d200328020c2204490d042004417f4c0d020240024020040d00410121060c010b2004107a2206450d0420062003280228220e200410ab051a2003200d20046b36022c2003200e20046a3602280b2006450d04200341cc006a41026a20034198016a41026a2d00003a0000200320032f0098013b014c2009450d00200710310b200341f8006a41026a200341cc006a41026a2d00003a0000200320032f014c3b0178024002400240024002400240024002400240024020054102460d00200341286a41146a2004360200200341386a22092004360200200341c3006a200341fa006a2d00003a0000200320053a0040200320063602342003200c3602302003200b36022c200320032f01783b00412003200a360228200341306a21072002280258200a4d0d094115102d2205450d0e200541002900d9e0403700002005410d6a41002900e6e040370000200541086a41002900e1e04037000020034295808080d00237029c012003200536029801200320034198016a3602782001200341f8006a103e200341f8006a41186a220a20033502a001422086200335029801841000220541186a290000370300200341f8006a41106a220c200541106a290000370300200341f8006a41086a220b200541086a2900003703002003200529000037037820051031200341d0006a41186a200a290300370300200341d0006a41106a200c290300370300200341d0006a41086a200b290300370300200320032903783703500240200328029c01450d0020032802980110310b200341f8006a2008100210412003280278220c450d06200328027c210b200320034180016a28020036029c012003200c36029801200320034198016a102c20032802000d03200328029c01220d20032802042205490d032005417f4c0d0b20050d014101210a0c020b200041086a4111360200200041dcafc000360204200041013602000c120b2005107a220a450d02200a200328029801220e200510ab051a2003200d20056b36029c012003200e20056a360298010b200a0d020b41e9bcc0004133200341a8016a419cbdc0001038000b200541011033000b2005ad220f422086200f84210f0240200b450d00200c10310b200341f8006a200a200f422088a72002109001200fa7210220032802784101470d022000200329027c370204200041013602002002450d01200a10310c010b200041086a411a360200200041edafc000360204200041013602000b2004450d0b200610310c0b0b200341d0006a41186a220c200341f8006a410472220541186a280200360200200341d0006a41106a220b200541106a290200370300200341d0006a41086a220d200541086a2902003703002003200529020037035002402004450d00200610310b200341286a41186a200c280200360200200341286a41106a200b290300370300200341286a41086a200d290300370300200320032903503703284114102d2204450d06200341286a4104722105200441002900eee040370000200441106a41002800fee040360000200441086a41002900f6e04037000020034294808080c00237029c012003200436029801200320034198016a3602782001200341f8006a103e200341f8006a41186a220620033502a001422086200335029801841000220441186a290000370300200341f8006a41106a2201200441106a290000370300200341f8006a41086a220c200441086a2900003703002003200429000037037820041031200341d0006a41186a2006290300370300200341d0006a41106a2001290300370300200341d0006a41086a200c290300370300200320032903783703500240200328029c01450d0020032802980110310b200341003602800120034201370378200341286a200341f8006a1091012005200341f8006a1091012007200341f8006a10910120032d0040210602400240200328027c2003280280012204460d00200328027821050c010b200441016a22052004490d0a200441017422012005200120054b1b22014100480d0a0240024020040d002001102d21050c010b200328027820042001102f21050b2005450d082003200136027c200320053602780b2003200441016a36028001200520046a20063a00002003280234210c200328023c2205200341f8006a106f02400240200328027c220120032802800122066b2005490d00200328027821040c010b200620056a22042006490d0a2001410174220b2004200b20044b1b220b4100480d0a0240024020010d00200b102d21040c010b20032802782001200b102f21040b2004450d092003200b36027c20032004360278200b21010b200420066a200c200510ab051a2008200620056aad4220862004ad84100302402001450d00200410310b2002450d00200a10310b20002003290328370204200041003602002000411c6a200341c0006a280200360200200041146a20092903003702002000410c6a20072903003702000c090b411441011033000b1032000b200441011033000b41e9bcc0004133200341a8016a419cbdc0001038000b411541011033000b411441011033000b200141011033000b200b41011033000b1034000b200341b0016a24000b81880106147f027e077f017e027f017e230041d0046b22042400200441c0036a20012002200310f202200441c0036a41086a280200210520042802c40321060240024020042802c0034101470d002000200636020420004101360200200041086a20053602000c010b200441d4036a280200220741306c2108200441d8036a2802002109200441d0036a280200210a200441cc036a280200210b4100210c4100210102400340024020082001470d000c020b200b20016a2102200141306a220d210120022d00004102470d000b200441d0006a200b200d6a41546a10f3022004280250210c200428025421010b4100210e20014100200c1b210f200741306c2108200c4104200c1b21104100210102400340024020082001470d000c020b200b20016a2102200141306a220d210120022d00004108470d000b200441c8006a200b200d6a41546a10f3022004280248210e200428024c21010b4100211120014100200e1b2112200741306c2108200e4104200e1b210c4100210102400340024020082001470d000c020b200b20016a2102200141306a220d210120022d00004104470d000b200441c0006a200b200d6a41546a10f30220042802402111200428024421010b4100210e2001410020111b2113200741306c21082011410420111b21114100210102400340024020082001470d000c020b200b20016a2102200141306a220d210120022d00004103470d000b200441386a200b200d6a41546a10f3022004280238210e200428023c21010b41002102024020014100200e1b2201450d00200141286c2108200e4104200e1b41186a2101410021020340200220012d0000456a2102200141286a2101200841586a22080d000b0b0240024020120d00411e2101200041d9adc4003602040c010b200c201241146c6a2112410021144100211502400240034041f7adc400210841382101200c41086a280200417c6a220e41024b0d01200c280200210d024002400240200e0e03000401000b41012115200d41cfadc400460d01200d28000041e3c2b1e306460d010c030b41012114200d41d3adc400460d00200d41d3adc400410610ad050d020b0240200c410c6a280200450d0041132101200041f5aec4003602040c040b0240200c41106a280200220120026b220d20014d0d00412a210120004188afc4003602040c040b41cfaec4002108412621012013200d4d0d012011200d4102746a220d450d0141afaec400210841202101200f200d280200220d4d0d012010200d4104746a220d450d0141b2afc4002108411f2101200d2802080d01200d2d000d220d41077141044b0d010240200d0e050002020200000b200c41146a220c2012470d000b20142015714101710d01411c411e201441017122021b2101200041d1afc40041d9adc40020021b3602040c020b200020083602040c010b200741306c2108410021010240034020082001460d01200b20016a2102200141306a220d210120022d00004106470d000b200441306a200b200d6a41546a10f3022004280234450d002000419dabc400360204411f21010c010b200741306c21082003280268210c410021010240034020082001460d01200b20016a2102200141306a220d210120022d00004105470d000b200441286a200b200d6a41546a220110f3020240200428022c41014d0d0041182101200041bcabc4003602040c020b200441206a200110f3022004280224450d0020042802202201450d002001280200200c4d0d0041222101200041d4abc4003602040c010b200741306c2108410021010240034020082001460d01200b20016a2102200141306a220d210120022d00004107470d000b200441186a200b200d6a41546a10f30220042802182201200428021c4104746a2108034020012008460d012001450d012001410c6a2102200141106a210120022d0000410271450d000b41322101200041e0acc4003602040c010b200741306c2108410021010240034020082001460d01200b20016a2102200141306a220d210120022d0000410c470d000b200b200d6a2201415c6a2802002202450d00200141546a280200220d200241186c6a210c0340200d220241186a210d2002280208410374210120022802002102024003402001450d01200141786a210120022d00042108200241086a21022008410271450d000b41312101200041afacc4003602040c030b200d200c470d000b0b200741306c2108410021010240034020082001460d01200b20016a2102200141306a220d210120022d00004102470d000b200441106a200b200d6a41546a10f30220042802142201450d002004280210220220014104746a211103402002450d01200241106a210e200420022d000d22083a00c0032002280200220120022802086a210c410021024100200441c0036a20084104461b210d024003400240024002400240200241ff01710e03000102000b2001200c460d014100210220012108200141016a21010c020b2001200c460d034101210220012108200141016a21010c010b200d450d0241022102200d21084100210d0b20082d0000410271450d000b41392101200041f6abc4003602040c030b200e2102200e2011470d000b0b200741306c21084100210c4100210102400340024020082001470d000c020b200b20016a2102200141306a220d210120022d00004102470d000b200441086a200b200d6a41546a10f3022004280208210c200428020c21010b4100210e20014100200c1b2110200741306c2108200c4104200c1b21124100210102400340024020082001470d000c020b200b20016a2102200141306a220d210120022d00004103470d000b2004200b200d6a41546a10f3022004280200210e200428020421010b200e4104200e1b220220014100200e1b41286c6a210d41002113024002400340024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402002200d460d00412d210141b99bc200210820022802084103470d2102402002280200220c41aaefc300460d00200c41aaefc300410310ad050d220b200241286a21114115210c41b29ac200210e4114210141a59bc200210802400240024020022d00180e0400240123000b4136210c41fc99c200210e2010200228021c22014d0d22201220014104746a220f450d222002280214210c200228020c210220092d00700d01200c410b470d014138210141ed9ac20021082002418dbac400460d232002418dbac400410b10ad05450d230c210b412f210141e69bc200210820022802144106470d220240200228020c220c41ac9fc200460d00200c41ac9fc200410610ad050d230b02402013450d00411f2101200041959cc2003602040c280b2002411c6a2113201121020c240b4126210141c79ac2002108200c417d6a220c41134b0d2102400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200c0e14003e3e3e0e043e073c0b0a120114111b103e0c19000b200241d0b7c400460d3d200241d0b7c400410310ad05450d3d41d0b7c4002002410310ad050d3d4101102d220e450d1d200e41003a0000200f2d000c41e000460d010c3a0b200241d3b7c400460d0141d3b7c4002002410f10ad05450d01200241e2b7c400460d0341e2b7c4002002410f10ad05450d030240200241f9b7c400460d0041f9b7c4002002410f10ad050d3d0b4107102d220e450d20200e4100360003200e41013a0002200e41003b0000200f2d000c41e000460d060c380b200f2802084101470d380240200f2802002214200e460d0041002102034020024101460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d3a0c000b0b200f2d000d4104470d38200e1031201121020c3d0b4104102d220e450d1b200e4100360000200f2d000c41e000470d35200f2802084104470d350240200f2802002214200e460d0041002102034020024104460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d370c000b0b200f2d000d4104470d35200e1031201121020c3c0b0240200241f1b7c400460d00200229000042e5f0d1fbb5ac98b6ec00520d3a0b4107102d220e450d1c200e4100360003200e41013a0002200e41003b0000200f2d000c41e000460d010c330b4101102d220e450d1a200e41003a0000200f2d000c41e000470d31200f2802084101470d31200f2802002214200e460d3041002102034020024101460d31200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d320c000b0b200f2802084107470d31200f2802002214200e460d2e41002102034020024107460d2f200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d320c000b0b20024188b8c400460d014188b8c4002002410a10ad05450d01024020024192b8c400460d004192b8c4002002410a10ad050d060b4126210c41c79ac200210e200f2d000c41e000470d35200f2802080d3520112102200f2d000d4104460d380c350b200f2802084107470d31200f2802002214200e460d2b41002102034020024107460d2c200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d320c000b0b4102102d220e450d19200e41003b0000200f2d000c41e000470d29200f2802084102470d290240200f2802002214200e460d0041002102034020024102460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d2b0c000b0b200f2d000d4104470d29200e1031201121020c360b0240200241a7b8c400460d0041a7b8c4002002410d10ad050d340b4126210c41c79ac200210e200f2d000c41e000470d32200f2802080d3220112102200f2d000d4104460d350c320b0240200241b4b8c400460d0041b4b8c4002002410c10ad050d330b4126210c41c79ac200210e200f2d000c41e000470d31200f2802080d3120112102200f2d000d4104460d340c310b0240200241cbb8c400460d0041cbb8c4002002411510ad050d320b4126210c41c79ac200210e200f2d000c41e000470d30200f2802080d3020112102200f2d000d4104460d330c300b0240200241e0b8c400460d0041e0b8c4002002410a10ad050d310b4102102d220e450d16200e41003b0000200f2d000c41e000460d010c240b0240200241eab8c400460d0041eab8c4002002410710ad050d300b4126210c41c79ac200210e200f2d000c41e000470d2e200f2802080d2e20112102200f2d000d4104460d310c2e0b200f2802084102470d220240200f2802002214200e460d0041002102034020024102460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d240c000b0b200f2d000d4104470d22200e1031201121020c300b0240200241f1b8c400460d0041f1b8c4002002411310ad050d2e0b4126210c41c79ac200210e200f2d000c41e000470d2c200f2802080d2c20112102200f2d000d4104460d2f0c2c0b20024184b9c400460d014184b9c4002002411110ad05450d01200241c3b9c400460d0641c3b9c4002002411110ad05450d060240200241d4b9c400460d0041d4b9c4002002411110ad050d2d0b4104102d220e450d17200e4100360000200f2d000c41e000460d080c1f0b024020024195b9c400460d004195b9c4002002410e10ad050d2c0b4108102d220e450d13200e4200370000200f2d000c41e000460d020c1d0b4102102d220e450d11200e41003b0000200f2d000c41e000470d1b200f2802084102470d1b0240200f2802002214200e460d0041002102034020024102460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d1d0c000b0b200f2d000d4104470d1b200e1031201121020c2c0b200241a3b9c400460d0141a3b9c4002002411010ad05450d01200241b3b9c400460d0241b3b9c4002002411010ad05450d02024020024198bac400460d004198bac4002002411010ad050d2a0b4126210c41c79ac200210e200f2d000c41e000470d28200f2802080d2820112102200f2d000d4104460d2b0c280b200f2802084108470d1a0240200f2802002214200e460d0041002102034020024108460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d1c0c000b0b200f2d000d4104470d1a200e1031201121020c2a0b4126210c41c79ac200210e200f2d000c41e000470d26200f2802080d26200f2d000d22014104460d2620112102200141fb0171450d290c260b4103102d220e450d0f200e41003a0002200e41003b0000200f2d000c41e000470d16200f2802084103470d160240200f2802002214200e460d0041002102034020024103460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d180c000b0b200f2d000d4104470d16200e1031201121020c280b4102102d220e450d0f200e41003b0000200f2d000c41e000470d14200f2802084102470d140240200f2802002214200e460d0041002102034020024102460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d160c000b0b200f2d000d4104470d14200e1031201121020c270b0240200241e5b9c400460d0041e5b9c4002002411610ad050d250b4102102d220e450d10200e41003b0000200f2d000c41e000460d020c120b200f2802084104470d160240200f2802002214200e460d0041002102034020024104460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d180c000b0b200f2d000d4104470d16200e1031201121020c250b0240200241fbb9c400460d0041fbb9c4002002411210ad050d230b4126210c41c79ac200210e200f2d000c41e000470d21200f2802080d2120112102200f2d000d4104460d240c210b200f2802084102470d0f0240200f2802002214200e460d0041002102034020024102460d01200e20026a2108201420026a210c200241016a2102200c2d000020082d0000470d110c000b0b200f2d000d4104470d0f200e1031201121020c230b024020130d0041002116410021170c0e0b024020132802040d00200041b49cc200360204413221010c260b024020132802002216201341086a28020022174d0d00200041e69cc20036020441c90021010c260b201720032802644d0d0d200041af9dc20036020441c10021010c250b410141011033000b410441011033000b410141011033000b410741011033000b410741011033000b410241011033000b410241011033000b410241011033000b410841011033000b410341011033000b410241011033000b410441011033000b410241011033000b20092903082118200441c0036a41086a2202420037030020044198bfc0003602c4032009290310211920042018a7417f2018428080808010541b3602d00320042019a7417f2019428080808010541b3602c003200441c0036a4104722201410d10f4022001410c10f4022001410710f4022001410f10f402200441d8006a41106a20042802d003360200200441d8006a41086a2002290300370300200420042903c003370358200441c0036a41106a22082007360200200441c0036a410c6a200a3602002004200b3602c803200420053602c403200420063602c003200441f0006a200441c0036a10f5020240024002404101102d2201450d00200141003a0000200420042f01c003220d3b01b002200841e0083b01002002428180808010370300200420013602c403200441013602c0032004200d3b01d203200441f0006a200441c0036a10f602210c02404103102d2202450d00200241026a41002d00acef433a0000200241002f00aaef433b000002404103102d2208450d00200841026a41002d00d2b7443a0000200841002f00d0b7443b0000200441b0026a41026a200441c0036a41026a220b2d000022073a0000200420042f00c003220e3b01b00220044184016a280200210d200441f0006a41106a2802002101200b20073a00002004200e3b01c00302400240024002400240024002400240200d2001470d00200141016a220d2001490d012001410174220b200d200b200d4b1b220dad42287e2218422088a70d012018a7220b4100480d010240024020010d00200b102d21010c010b200428027c200141286c200b102f21010b2001450d072004200d360280012004200136027c200428028401210d0b200428027c200d41286c6a220141003a00182001200836020c200142838080803037020420012002360200200141106a428380808030370200200141196a20042f01c0033b00002001411b6a200441c2036a2d00003a00002001411c6a200c360200200420042802840141016a36028401200441c0036a200441f0006a418c0110ab051a20044180026a200441c0036a10f70220044180026a41106a280200220e41306c2101200428028802220741546a210202400340410021082001450d01200141506a21012002412c6a210d200241306a220c2102200d2d00004103470d000b200c41086a2802002201450d00200141286c2102200c28020041186a2101410021080340200820012d0000456a2108200141286a2101200241586a22020d000b0b200e41306c2101200741546a21022008417f6a210d02400340410021082001450d01200141506a21012002412c6a210c200241306a220b2102200c2d00004103470d000b200b41086a2802002201450d00200141286c2102200b28020041186a2101410021080340200820012d0000456a2108200141286a2101200241586a22020d000b0b200e41306c21012007415c6a21020240034041002111024020010d00410021010c020b200141506a2101200241246a210c200241306a220b2102200c2d00004104470d000b200b28020021010b0240024002400240200e450d00200120086a211a2007200e41306c6a2112200441d8006a410472211b4100211c4100211d0340024020072d000041786a220141044b0d00024002400240024020010e050301020400030b200728020c2201450d032007280204220c200141186c6a211e201d210103402001211d0240200c22082802144104742202450d00200828020c21010340024020012d0000410b470d00200141046a220c280200220b200d490d00200c200b41016a3602000b200141106a2101200241706a22020d000b0b200442003703d00320044280808080c0003703c803200442043703c0030240024002404110102d2201450d0020042802c8032102200420013602c003200441013602c403200120024104746a22014200370200200141056a4200370000200420042802c80341016a3602c80302402008280214221f450d0041002110201f21010340024002400240024002400240024002400240024002400240201020014f0d004110210c0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200828020c222020104104746a2d000022140eac010001020202020202020202020202020303030404050506060707080809090a0a0b0b0c0d0d0e0e0f0f1010111213131414151516161717181819191a1a1b1b1c1c1d1d1e1e1f1f2020212122222323242425252627272828292a2a2b2b2c2d2d2e2e2f2f303031313232333434353536363737383839393a3a3b3b3c3c3d3d3e3e3f3f40404141424243434444454546464747484a4a4a4a49494a4a4a4a4a4a4a4a4a4a4a4a4a4a4b4b4b4b000b4111210c0c4a0b4112210c0c490b410a210c0c480b4108210c0c470b4108210c0c460b4104210c0c450b4104210c0c440b4104210c0c430b4104210c0c420b4104210c0c410b4104210c0c400b4104210c0c3f0b4105210c0c3e0b4105210c0c3d0b4105210c0c3c0b4105210c0c3b0b4105210c0c3a0b4113210c0c390b4114210c0c380b4106210c0c370b4107210c0c360b410b210c0c350b410b210c0c340b410b210c0c330b410b210c0c320b410b210c0c310b410b210c0c300b410b210c0c2f0b410b210c0c2e0b410b210c0c2d0b410b210c0c2c0b410b210c0c2b0b410c210c0c2a0b410c210c0c290b410c210c0c280b410c210c0c270b410c210c0c260b410c210c0c250b4100210c0c240b4100210c0c230b4101210c0c220b4102210c0c210b4103210c0c200b4103210c0c1f0b4100210c0c1e0b4100210c0c1d0b4100210c0c1c0b4100210c0c1b0b4100210c0c1a0b4100210c0c190b4101210c0c180b4102210c0c170b4103210c0c160b4103210c0c150b4100210c0c140b4100210c0c130b4100210c0c120b4100210c0c110b410d210c0c100b410d210c0c0f0b410d210c0c0e0b410d210c0c0d0b410d210c0c0c0b410d210c0c0b0b410d210c0c0a0b410d210c0c090b410d210c0c080b410d210c0c070b410d210c0c060b410d210c0c050b410d210c0c040b410d210c0c030b410e210c0c020b410e210c0c010b410f210c0b201041016a210a20042802602105201b2101024003402001280200221141086a210f20112f0106210b41002102024002400340200b20022201460d01200141016a210202404100417f4101200f20016a2d00002213200c4b1b2013200c461b41016a0e03000301000b0b2002417f6a210b0b024020050d00200441d8006a21020c030b2005417f6a21052011200b4102746a41ec006a21010c010b0b200441d8006a21020240201120014103746a41146a22012802000e04010c0001010b200141046a21020b20022802002102024002400240024002400240024002402014417e6a220141084b0d0020010e09010302110405050607010b20042802c8032201417f6a220c20014f0d11200c20014b0d1120042802c003200c4104746a220c280208220120026a22022001490d11200c41086a20023602000c120b20042802c8032201417f6a220c20014f0d10200c20014b0d1020042802c003200c4104746a220c280208220120026a22022001490d10200c41086a200236020020042802c8032201417f6a220c20014f0d10200c20014b0d1020042802c0032202200c4104746a280204210c02400240200120042802c403460d002001210b0c010b200141016a220b2001490d2220014101742211200b2011200b4b1b220b41ffffffff0071200b470d22200b41047422114100480d22200220014104742011102f2202450d082004200b3602c403200420023602c00320042802c803210b0b2002200b4104746a2202200e3b000d200241003a000c2002200c360204200220013602002002410f6a200e4110763a0000200241086a4100360200200420042802c80341016a3602c8030c110b20042802c8032201417f6a220c20014f0d0f200c20014b0d0f20042802c003200c4104746a220c280208220120026a22022001490d0f200c41086a200236020020042802c803220221010240200220042802c403470d00200241016a22012002490d212002410174220c2001200c20014b1b220141ffffffff00712001470d212001410474220b4100480d210240024020020d00200b102d210c0c010b20042802c0032002410474200b102f210c0b200c450d08200420013602c4032004200c3602c00320042802c80321010b20042802c00320014104746a2201200e3b000d200141003a000c2001200a360204200120023602002001410f6a200e4110763a0000200141086a4100360200200420042802c80341016a3602c8030c100b20042802c8032201417f6a220c20014f0d0e200c20014b0d0e20042802c003200c4104746a220c280208220120026a22022001490d0e200c41086a200236020020042802c803220221010240200220042802c403470d00200241016a22012002490d202002410174220c2001200c20014b1b220141ffffffff00712001470d202001410474220b4100480d200240024020020d00200b102d210c0c010b20042802c0032002410474200b102f210c0b200c450d08200420013602c4032004200c3602c00320042802c80321010b20042802c00320014104746a2201200e3b000d200141013a000c2001200a360204200120023602002001410f6a200e4110763a0000200141086a4100360200200420042802c80341016a3602c8030c0f0b200441c0036a201010f8020d0d20042802c8032202450d0d20042002417f6a22013602c80320042802c003220c20014104746a220b2d000c4102460d0d2001450d0e2002417e6a220220014f0d0d200c20024104746a220c200b2802002202200c280200220c200c20024b1b360200200220014f0d0e200441c0036a201010f8020d0d0c0e0b20042802c8032201417f6a220c20014f0d0c200c20014b0d0c20042802c003200c4104746a220c280208220120026a22022001490d0c202020104104746a41046a280200210b200c41086a200236020020042802c8032201417f6a220220014b0d0c2002200b6b220120024b0d0c200441c0036a201010f8020d0c20042802c803220220014d0d0c20042802c003220c20014104746a2d000c0d0d2002410474200c6a41706a2202200120022802002202200220014b1b3602000c0d0b20042802c8032201417f6a220c20014f0d0b200c20014b0d0b20042802c003200c4104746a220c280208220120026a22022001490d0b200c41086a200236020020042802c8032201417f6a221320014b0d0b202020104104746a41046a280200220128020421022001280200211420012802082101200441003a00b0020240201320016b220120134d0d00200441013a00b0020c0c0b4104102d2211450d0520112001360200024020020d004101210c4101210b0c090b201320142802006b220f20134b0d064102210c200241027421204101210b410421014102210203400240200c417f6a2205200b470d00200541016a220b2005490d1e2002200b2002200b4b1b220b41ffffffff0371200b470d1e200b41027422054100480d1e0240024020020d002005102d21110c010b201120012005102f21110b2011450d090b201120016a200f36020020202001460d09201420016a210f200c41016a210c200241026a2102200141046a21012013200f2802006b220f20134d0d000b200441013a00b0020c090b20042802c8032201417f6a220c20014f0d0a200c20014b0d0a20042802c003200c4104746a220c280208220120026a22022001490d0a200c41086a2002360200200441c0036a201010f8020d0a20042802c8032201450d0a20042802c00322022d000c0d0b200141047420026a41706a41003602000c0b0b41b0efc30020102001104b000b201141041033000b200b41041033000b200b41041033000b410441041033000b4101210b200441013a00b0020c020b200541041033000b20042d00b0020d002011450d02200cad422086200bad8421184101210f0240200441c0036a201010f8020d0002402018422088a72201450d002001410274210c20112101034020042802c803220b200128020022024d0d02024020042802c003221320024104746a2d000c0d00200b41047420136a41706a220b2002200b280200220b200b20024b1b3602000b200141046a2101200c417c6a220c0d000b0b4100210f0b02402018a7450d00201110310b200f0d020c030b200b450d01201110310c010b200441c0036a201010f802450d010b024020042802c403450d0020042802c00310310b024020042802d003450d0020042802cc0310310b4101211c0c0a0b200a201f460d0120082802142101200a21100c000b0b20042802cc0320042802d4032201410041202001676b10f90220042903d003212120042802cc032120024020042802c403450d0020042802c00310310b024020200d004101211c0c080b0240200828021422022021422088a722114101746a220141ffffffff00712001470d002001410474220c417f4c0d00024002400240200c0d004108210b0c010b200c102d220b450d01200828021421020b20084100360214200828020c21222008200b36020c200841106a220b2802002123200b2001360200202220024104746a2105202020114103746a211f41022111024020020d002020210a202221010c040b410021012020210a4100210c20222102024002400340200241016a2f0000200241036a2d000041107472210e024020022d0000221341ac01470d00200241106a21010c070b200241086a2900002118200241046a280000210f02400240024020114102470d000240200a201f470d0041002111201f210a0c020b200a2902002219422088a721152019a7210641012111200a41086a210a0b20114101470d00200c2006470d0002402001200b280200470d00200141016a22112001490d15200141017422102011201020114b1b221141ffffffff00712011470d15201141047422104100480d150240024020010d002010102d21010c010b200828020c20014104742010102f21010b2001450d022008200136020c200b2011360200200828021421010b200828020c20014104746a220120042f00c0033b00012001412d3a000020012015360204200141036a200441c0036a41026a2d00003a00002008200828021441016a220136021402402001200b280200470d00200141016a22112001490d15200141017422102011201020114b1b221141ffffffff00712011470d15201141047422104100480d150240024020010d002010102d21010c010b200828020c20014104742010102f21010b2001450d042008200136020c200b2011360200200828021421010b200828020c20014104746a220120042f00c0033b00012001410b3a00002001200d36020441022111200141036a200441c0036a41026a2d00003a00002008200828021441016a2201360214200c21060b02402001200b280200470d00200141016a22102001490d14200141017422142010201420104b1b221041ffffffff00712010470d14201041047422144100480d140240024020010d002014102d21010c010b200828020c20014104742014102f21010b2001450d042008200136020c200b2010360200200828021421010b200c41016a210c200828020c20014104746a220120183703082001200f3602042001200e3b0001200120133a0000200141036a200e4110763a00002008200828021441016a2201360214200241106a22022005470d010c080b0b201041081033000b201041081033000b201441081033000b200c41081033000b1032000b411041041033000b20012005460d0003400240024020012d000022024109460d00200241ac01470d010c030b0240200141046a280200220228020441ffffffff0371450d00200228020010310b200210310b200141106a22012005470d000b0b2021a7210102402023450d00202210310b200a201f47201120114102461b210202402001450d00202010310b024020024101470d004101211c0c050b200841186a210c024002402004280268450d0020082802142202450d00200828020c210120024104742102410021080340024020012d0000412c470d002001410b3a0000200141046a201a360200200841016a21080b200141106a2101200241706a22020d000b4101210120080d010b201d21010b200c201e470d000b2001211d0c030b20072802042201200d490d022007200141016a3602040c020b200728020c2201450d012007280204220c2001411c6c6a210b0340200c2201411c6a210c024020012802182202450d0020012802102101200241027421020340024020012802002208200d490d002001200841016a3602000b200141046a21012002417c6a22020d000b0b200c200b460d020c000b0b200728020c2201450d00200141146c2102200728020441106a2101034002402001417c6a2802000d0020012802002208200d490d002001200841016a3602000b200141146a21012002416c6a22020d000b0b200741306a22072012470d000b201c4101710d02201d4101710d01200428029002211120042802880221070b2004418c026a28020021052004280284022113200428028002210f410021100c020b200441c0036a41106a20044180026a41106a280200360200200441c0036a41086a20044180026a41086a29030037030020042004290380023703c003200441b0026a200441c0036a10f5024110102d2202450d07200241063a00004101102d2201450d06200141003a00004101102d220c450d05200c20012d00003a0000200110314110102d2208450d04200841063a000041f000102d2201450d03200141063a00602001412c3b01502001200d3602442001410b3a0040200141d8003a0030200120042802683602242001412d3a0020200141003602142001410f3a0010200141003602042001410f3a0000024020082d00004109470d0002402008280204220d28020441ffffffff0371450d00200d28020010312008280204210d0b200d10310b20081031024020022d00004109470d0002402002280204220828020441ffffffff0371450d0020082802001031200228020421080b200810310b20021031200441e4036a4287808080f000370200200441e0036a2001360200200441dc036a4100360200200441c0036a410c6a4281808080800c370200200441c8036a4101360200200441003602ec03200442043702d4032004200c3602c403200441013602c003200441b0026a200441c0036a10fa02200441c0036a200441b0026a418c0110ab051a20044198026a200441c0036a10f70220044198026a410c6a2802002105200441a8026a2802002111200428029802210f200428029c02211320042802a0022107410021100c010b2004418c026a2802002105200428028802210702402004280290022211450d00201141306c2102200721010340200110fb02200141306a2101200241506a22020d000b0b41012110411a21134192adc400210f02402005450d00200710310b0b200441e4006a280200210e200428025c21080240200441e0006a2802002201450d000340200828026c21082001417f6a22010d000b0b4100210d4100210102400340200e450d0102400240200120082f01064f0d00200820014103746a41146a2902002118200141016a21010c010b02400240200828020022010d00200dad21184100210c410021010c010b2008330104422086200dad8421184101210c0b200810312018a7210d024002402018422088a7220b20012f01064f0d00200121020c010b034002400240200128020022020d00200dad2118410021020c010b200c41016a210c2001330104422086200dad8421180b200110312018a7210d200221012018422088a7220b20022f01064f0d000b0b200b41027420026a41f0006a28020021082002200b4103746a41146a29020021180240200c417f6a2201450d000340200828026c21082001417f6a22010d000b0b410021010b200e417f6a210e2018a74103470d000b0b024020084198bfc000460d0020082802002101200810312001450d0020012802002102200110312002450d00024020022802002201450d000340200210312001210220012802002208210120080d000b0b200210310b02402010450d002000200f36020420004101360200200041086a20133602000c250b200441b0026a41106a2011360200200441b0026a410c6a2005360200200420073602b802200420133602b4022004200f3602b002200441c0036a200441b0026a200928026010fc02024020042802c0034101470d000240200441c0036a41086a280200450d0020042802c40310310b200041acadc40036020420004101360200200041086a41233602000c250b200441d4036a2802002102200441c0036a41106a2802002105200441c0036a410c6a2802002110200441c8036a280200210d20042802c403210820032802582106200441003602a0022004420137039802024002404104102d2201450d002004410436029c02200420042802a002220c41046a3602a00220042001360298022001200c6a200836000002400240200428029c02220820042802a00222016b4104490d0020042802980221080c010b200141046a220c2001490d0320084101742201200c2001200c4b1b22014100480d030240024020080d002001102d21080c010b20042802980220082001102f21080b2008450d022004200136029c02200420083602980220042802a00221010b2004200141046a3602a002200820016a200d3600002010200241306c22016a210d024020020d00201021010c0e0b200141506a2111200441c0036a4101722102200441c0036a41276a210c200441c0036a41206a210b200441c0036a41186a2107200441c0036a41086a210e20102101034020012d00002108200c200141286a290000370000200b200141216a2900003703002007200141196a290000370300200441c0036a41106a2203200141116a290000370300200e200141096a2900003703002004200141016a2900003703c003024020084110470d00200141306a21010c0f0b200441b0026a41276a2213200c290000370000200441b0026a41206a220f200b290300370300200441b0026a41186a20072903002218370300200441b0026a41106a20032903002219370300200441b0026a41086a200e2903002221370300200420042903c00322243703b00220022024370000200241086a2021370000200241106a2019370000200241186a2018370000200241206a200f290300370000200241276a2013290000370000200420083a00c003200441f0006a200441c0036a20044198026a10fd0220042d00702208411f470d0d201141506a2111200141306a2201200d470d000b200d21010c0d0b410441011033000b200141011033000b1034000b41f00041081033000b411041081033000b410141011033000b410141011033000b411041081033000b200b41041033000b410341011033000b410341011033000b410141011033000b200428027421122004280278210602402011450d00200141306a2101200441c0036a4101722102200441c0036a41276a210b200441c0036a41206a2107200441c0036a41186a210e200441c0036a41086a2111034020012d0000210c200b200141286a2900003700002007200141216a290000370300200e200141196a290000370300200441c0036a41106a2203200141116a2900003703002011200141096a2900003703002004200141016a2900003703c003200c4110460d01200441b0026a41276a2213200b290000370000200441b0026a41206a220f2007290300370300200441b0026a41186a200e2903002218370300200441b0026a41106a20032903002219370300200441b0026a41086a20112903002221370300200420042903c00322243703b00220022024370000200241086a2021370000200241106a2019370000200241186a2018370000200241206a200f290300370000200241276a20132900003700002004200c3a00c003200441c0036a10fb02200141306a2201200d470d000b0b02402005450d00201010310b0240200428029c02450d0020042802980210310b024020084105470d002006450d00201210310b200041edafc40036020420004101360200200041086a41253602000c190b02402001200d460d00200441c0036a4101722102200441c0036a41276a210c200441c0036a41206a210b200441c0036a41186a2107200441c0036a41086a210e034020012d00002108200c200141286a290000370000200b200141216a2900003703002007200141196a290000370300200441c0036a41106a2211200141116a290000370300200e200141096a2900003703002004200141016a2900003703c00320084110460d01200441b0026a41276a2203200c290000370000200441b0026a41206a2213200b290300370300200441b0026a41186a20072903002218370300200441b0026a41106a20112903002219370300200441b0026a41086a200e2903002221370300200420042903c00322243703b00220022024370000200241086a2021370000200241106a2019370000200241186a2018370000200241206a2013290300370000200241276a2003290000370000200420083a00c003200441c0036a10fb02200141306a2201200d470d000b0b02402005450d00201010310b2004280298022101200429029c0221182000411c6a41003a0000200041146a2018370200200041106a20013602002000410c6a2017360200200041086a2016360200200020063602042000411d6a20042f0080023b0000200041003602002000411f6a20044182026a2d00003a00000c180b200e1031200041c79ac2003602040c160b200e1031200041c79ac2003602040c150b200e1031200041c79ac2003602040c140b200e1031200041c79ac2003602040c130b200e1031200041c79ac2003602040c120b200e1031200041c79ac2003602040c110b200e1031200041c79ac2003602040c100b200e1031200041c79ac2003602040c0f0b200f2d000d22024104460d05200241fb01710d05200e1031201121020c0b0b200f2d000d22024104460d02200241fb01710d02200e1031201121020c0a0b200f2d000d22024104460d00200241fb01710d00200e1031201121020c090b200e1031200041c79ac2003602040c0b0b200e1031200041c79ac2003602040c0a0b200e1031200041c79ac2003602040c090b200e1031200041c79ac2003602040c080b200e1031200041c79ac2003602040c070b024002402002419cb8c400460d00419cb8c4002002410b10ad050d010b4126210c41c79ac200210e200f2d000c41e000470d01200f2802080d0120112102200f2d000d4104460d040c010b0240200241c0b8c400460d0041c0b8c4002002410b10ad050d030b4126210c41c79ac200210e200f2d000c41e000470d00200f2802080d0020112102200f2d000d4104460d030b200e2108200c21010b200020083602040c040b02402002418dbac400460d00418dbac4002002410b10ad050d030b02404102102d220c450d00200c41003b0000200f2d000c41e000470d02200f2802084102470d020240200f280200220e200c460d0041002101034020014102460d01200c20016a2102200e20016a2108200141016a210120082d000020022d0000470d040c000b0b200f2d000d4104470d02200c1031201121020c010b0b410241011033000b200c10310b41262101200041c79ac2003602040b20004101360200200041086a200136020002402007450d00200b200741306c6a2111200b210703402007220041306a21070240024020002d00002201410e4b0d00024002400240024002400240024002400240024002400240024020010e0f0001020304050607080e090e0a0b0c000b200041086a280200450d0d200041046a28020010310c0d0b0240200041086a280200450d00200041046a28020010310b200041146a280200450d0c200041106a28020010310c0c0b02402000410c6a2802002202450d00200041046a28020021012002410474210203400240200141046a280200450d00200128020010310b200141106a2101200241706a22020d000b0b200041086a280200450d0b200028020410310c0b0b02402000410c6a2802002202450d00200041046a2802002101200241286c210203400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141286a2101200241586a22020d000b0b200041086a280200450d0a200028020410310c0a0b200041086a280200450d09200041046a28020010310c090b200041086a280200450d08200041046a28020010310c080b200041086a280200450d07200041046a28020010310c070b02402000410c6a2802002201450d00200041046a280200220c20014104746a210e03400240200c2802082202450d00200c2802002101200241047421020340024020012d00004109470d000240200141046a220d280200220828020441ffffffff0371450d0020082802001031200d28020021080b200810310b200141106a2101200241706a22020d000b0b200c41106a21010240200c41046a280200450d00200c28020010310b2001210c2001200e470d000b0b200041086a280200450d06200028020410310c060b02402000410c6a2802002202450d00200041046a2802002101200241146c210203400240200141046a280200450d00200128020010310b200141146a21012002416c6a22020d000b0b200041086a280200450d05200028020410310c050b02402000410c6a2802002201450d00200041046a280200220c2001411c6c6a210e03400240200c2802042201450d000240200c410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a220d280200220828020441ffffffff0371450d0020082802001031200d28020021080b200810310b200141106a2101200241706a22020d000b0b200c41086a280200450d00200c28020410310b200c411c6a21010240200c41146a280200450d00200c28021010310b2001210c2001200e470d000b0b200041086a280200450d04200028020410310c040b02402000410c6a2802002201450d00200041046a280200220c200141186c6a210e03400240200c41046a280200450d00200c28020010310b0240200c41146a2802002202450d00200c28020c2101200241047421020340024020012d00004109470d000240200141046a220d280200220828020441ffffffff0371450d0020082802001031200d28020021080b200810310b200141106a2101200241706a22020d000b0b200c41186a21010240200c41106a280200450d00200c28020c10310b2001210c2001200e470d000b0b200041086a280200450d03200028020410310c030b02402000410c6a2802002201450d00200041046a280200220c2001411c6c6a210e03400240200c2802042201450d000240200c410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a220d280200220828020441ffffffff0371450d0020082802001031200d28020021080b200810310b200141106a2101200241706a22020d000b0b200c41086a280200450d00200c28020410310b200c411c6a21010240200c41146a280200450d00200c28021010310b2001210c2001200e470d000b0b200041086a280200450d02200028020410310c020b0240200041046a2802002201450d00200041086a280200450d00200110310b0240200041146a2802002201450d0002402000411c6a2802002202450d002002410c6c21020340024020012802002208450d00200141046a280200450d00200810310b2001410c6a2101200241746a22020d000b0b200041186a280200450d00200028021410310b200041246a280200220c450d0102402000412c6a2802002201450d00200c20014104746a210e0340200c220d41106a210c0240200d2802042201450d000240200d410c6a2802002202450d002002410c6c21020340024020012802002208450d00200141046a280200450d00200810310b2001410c6a2101200241746a22020d000b0b200d41086a280200450d00200d28020410310b200c200e470d000b0b200041286a280200450d01200028022410310c010b0240200041086a280200450d00200041046a28020010310b0240200041146a2802002201450d00200041186a280200450d00200110310b200041246a280200450d00200041206a28020010310b20072011470d000b0b200a450d00200b10310b200441d0046a24000b9e0701037f02400240024002400240024020002802002202413f4b0d0002400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d06200041017422042003200420034b1b22044100480d060240024020000d002004102d21030c010b200128020020002004102f21030b2003450d0220012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a20024102743a00000f0b200241808001490d032002418080808004490d020c010b200441011033000b0240024002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102d21030c010b200128020020022004102f21030b2003450d0120012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a00002000280200210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d05200241017422002004200020044b1b22004100480d050240024020020d002000102d21020c010b200128020020022000102f21020b2002450d0220012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b200441011033000b200041011033000b024002400240200141046a2802002203200141086a28020022006b4104490d00200128020021030c010b200041046a22042000490d03200341017422002004200020044b1b22004100480d030240024020030d002000102d21030c010b200128020020032000102f21030b2003450d0120012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20024102744102723600000f0b200041011033000b024002400240200141046a2802002203200141086a28020022006b4102490d00200128020021030c010b200041026a22042000490d02200341017422002004200020044b1b22004100480d020240024020030d002000102d21030c010b200128020020032000102f21030b2003450d0120012003360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200320006a20024102744101723b00000f0b200041011033000b1034000b890201027f230041106b2202240020002802002100200128021841b3b0c00041082001411c6a28020028020c1103002103200241003a0005200220033a0004200220013602002002200036020c200241bbb0c00041082002410c6a41c4b0c00010930121012002200041046a36020c200141d4b0c00041052002410c6a41c4b0c0001093011a20022d00042101024020022d0005450d00200141ff0171210041012101024020000d0020022802002201411c6a28020028020c210020012802182103024020012d00004104710d00200341ecc8c3004102200011030021010c010b200341eec8c3004101200011030021010b200220013a00040b200241106a2400200141ff01714100470bdd0302047f057e230041d0006b2205240041012106024020002d00040d0020002d000521070240200028020022082d00004104710d0041012106200828021841b1c8c30041aec8c300200741ff017122071b4102410320071b2008411c6a28020028020c1103000d014101210620002802002208280218200120022008411c6a28020028020c1103000d01410121062000280200220828021841b8a0c40041022008411c6a28020028020c1103000d0120032000280200200428020c11040021060c010b0240200741ff01710d0041012106200828021841b3c8c30041032008411c6a28020028020c1103000d01200028020021080b41012106200541013a00172005200541176a360210200829020821092008290210210a200541346a41b8c8c300360200200520082902183703082008290220210b2008290228210c200520082d00303a00482008290200210d2005200c3703402005200b3703382005200a370328200520093703202005200d3703182005200541086a360230200541086a200120021081040d00200541086a41b8a0c40041021081040d002003200541186a200428020c1104000d00200528023041d0c8c3004102200528023428020c11030021060b200041013a0005200020063a0004200541d0006a240020000bac0201027f230041106b2202240020002802002100200128021841d9b0c000410b2001411c6a28020028020c1103002103200241003a0005200220033a0004200220013602002002200036020c200241e4b0c00041032002410c6a41e8b0c00010930121012002200041286a36020c200141f8b0c00041032002410c6a41e8b0c00010930121012002200041d0006a36020c200141d4b0c00041052002410c6a41fcb0c0001093011a20022d00042101024020022d0005450d00200141ff0171210041012101024020000d0020022802002201411c6a28020028020c210020012802182103024020012d00004104710d00200341ecc8c3004102200011030021010c010b200341eec8c3004101200011030021010b200220013a00040b200241106a2400200141ff01714100470b130020004101360204200041a4b3c0003602000b3400200041ed84c40036020420004100360200200041146a4102360200200041106a4184b7c000360200200041086a42093702000b130020004101360204200041c8b9c0003602000b3101017f02404108102d22020d00410841011033000b20004288808080800137020420002002360200200242dc0b3700000bc60102037f017e230041306b22002400200041186a41086a220141b5b2c000ad4280808080d001841001220241086a2900003703002000200229000037031820021031200041086a41086a200129030037030020002000290318370308200041186a200041086aad428080808080028410021041024002400240200028021822020d00420021030c010b20012802004108490d0120022900002103200028021c450d00200210310b200041306a240020030f0b41e9bcc0004133200041286a419cbdc0001038000b970301067f230041106b22022400024002400240024002400240024002400240200128020022030d00410121040c010b0240200141086a28020041056a2204417f4c0d0020040d0120024100360208200242013703000c020b1032000b2004102d2205450d03200241003602082002200436020420022005360200024020030d00200541003a0000200241013602080c030b20040d010b4101102d2205450d0320024101360204200220053602000b200541013a000020024101360208200141086a28020022042002106f0240024020022802042201200228020822056b2004490d00200228020021010c010b200520046a22062005490d05200141017422072006200720064b1b22064100480d050240024020010d002006102d21010c010b200228020020012006102f21010b2001450d0420022006360204200220013602000b2002200520046a360208200120056a2003200410ab051a0b20002002290300370200200041086a200241086a280200360200200241106a24000f0b200441011033000b410141011033000b200641011033000b1034000b850203017e027f017e2001290300210202400240024002404101102d2203450d000240024020024200520d00200341003a000041012101410121040c010b200341013a0000200141106a290300210220012903082105200341014111102f2203450d0220032005370001200341096a2002370000200141206a2903002102200141186a2903002105200341114122102f2203450d0320032005370011200341196a2002370000200141286a280200210141c40021042003412241c400102f2203450d0420032001360021412521010b2000200136020820002004360204200020033602000f0b410141011033000b411141011033000b412241011033000b41c40041011033000bd20201057f230041e0006b22022400200241086a2001ad42808080808002841002104102400240200228020822030d00200041003a00000c010b200241106a2802002104200228020c210541002101200241003a00580340024020042001470d000240200141ff0171450d00200241003a00580b41e9bcc0004133200241386a419cbdc0001038000b200241386a20016a200320016a2d00003a00002002200141016a22063a00582006210120064120470d000b200241186a41186a2201200241386a41186a290300370300200241186a41106a2206200241386a41106a290300370300200241186a41086a2204200241386a41086a2903003703002002200229033837031802402005450d00200310310b20002002290318370001200041013a0000200041196a2001290300370000200041116a2006290300370000200041096a20042903003700000b200241e0006a24000bbb0101047f230041206b22022400200241086a2001ad428080808080028410021041024002400240200228020822010d00410021010c010b200241106a2802002103200228020c21042002410036021820034104490d0120012800002105200241003602182003417c714104460d012001280004210302402004450d00200110310b20002005360204200041086a2003360200410121010b20002001360200200241206a24000f0b41e9bcc0004133200241186a419cbdc0001038000bcf0101047f230041306b22022400200241086a2001ad428080808080028410021041024002400240200228020822010d00200041003602040c010b200228020c21032002200241106a280200220436021c2002200136021820044104490d0120022004417c6a36021c2002200141046a36021820012800002104200241206a200241186a108b0120022802202205450d012000200229022437020820002005360204200020043602002003450d00200110310b200241306a24000f0b41e9bcc0004133200241206a419cbdc0001038000b02000ba00b030b7f027e037f230041a0036b220524000240024002400240024002400240200141046a28020022062f01062207410b490d002001280208210820012802002109200541ec016a410272410041b20110aa051a200541386a200541ec016a41b40110ab051a200541306a220a4200370300200541286a220b4200370300200541206a220c4200370300200541186a220d4200370300200541086a41086a220e42003703002005420037030841e801102d2207450d0620074100360200200741046a200541386a41b40110ab051a200741e0016a200a290300370300200741d8016a200b290300370300200741d0016a200c290300370300200741c8016a200d290300370300200741c0016a200e290300370300200720052903083703b8014108200641086a220f20064198bfc000461b220a29033021102006290390012111200741086a2212200a41386a20062f0106220a41796a220b410374220c10ab051a200741e0006a20064198016a200c10ab052113200741b8016a200641d4016a200a417a6a220d41027410ab05210e200641063b01062007200b3b01060240200d450d004100210a200e210b0340200b280200220c200a3b0104200c2007360200200b41046a210b200d200a41016a220a470d000b0b200128020c220a4107490d03200a41796a210b4198bfc000210d20074198bfc000470d0141082112410021010c020b4100210d4108200641086a20064198bfc00046220c1b2209200128020c220a41016a220b410374220e6a2009200a410374220f6a220941002007200c1b200a6b41037410ac051a20092002370300200641e0006a2207200e6a2007200f6a220720062f0106200a6b41037410ac051a20072003370300200620062f010641016a22073b0106200a410274200641b8016a220c6a41086a200c200b4102746a220c200741ffff0371200b6b41027410ac051a200c20043602000240200b20062f010622074b0d002004200b3b0104200420063602000240200b20074f0d002007417f6a2106200a41027441c0016a210b0340200141046a2802002207200b6a280200220c200a41026a3b0104200c2007360200200b41046a210b2006200a41016a220a470d000b0b200128020c210a0b20002001290200370204200041106a200a3602002000410c6a200141086a2802003602000c040b20072f010621012007210d0b2012200a417a6a220c410374220f6a2012200b41037422146a22122001200b6b41037410ac051a201220023703002013200f6a201320146a2201200d2f0106200b6b41037410ac051a20012003370300200720072f010641016a220b3b0106200a410274220f200e6a416c6a200e200c4102746a2201200b41ffff0371200c6b41027410ac051a20012004360200200c200d2f0106220d4b0d01200a41796a210a200f20076a41a0016a210b0340200b280200220c200a41016a220a3b0104200c2007360200200b41046a210b200a200d490d000c020b0b200641b8016a210b200641e0006a210c0240024020064198bfc000470d00410021014108210f0c010b20062f010621010b200f200a41016a220d410374220e6a200f200a41037422126a220f2001200a6b41037410ac051a200f2002370300200c200e6a200c20126a220c20062f0106200a6b41037410ac051a200c2003370300200620062f010641016a220c3b0106200a4102742201200b6a41086a200b200d4102746a220b200c41ffff0371200d6b41027410ac051a200b2004360200200a20062f0106220d4f0d00200620016a41bc016a210b0340200b280200220c200a41016a220a3b0104200c2006360200200b41046a210b200d200a470d000b0b20002009360204200041206a2011370300200041186a20103703002000410c6a2008360200200041086a2006360200200041146a2009360200200041106a20073602004101210d0b2000200d360200200541a0036a24000f0b41e80141081033000bac4d04037f017e077f017e230041e0036b220324002003410036021420034100360208200320023602042003200136020002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402002450d000240024020012d000041bf014b0d0020034180026a2001200210a2012003280280024101460d1c200328028402220120034188026a28020022046a22052001490d1c200520024d0d010c1c0b410021010240034020034180026a20032001220210a3012003280280024101460d01200241016a2101200328028c024102470d000b0b20032002ad4220864201843702142002417e6a2202410f4b0d0120020e1002010101010101010101010101010103020b2004450d1a0b024020032802042202450d00200328020022012d000041c0014f0d0020034180026a2001200210a2012003280280024101460d0020034188026a28020022054120470d00200328028402220420056a22052004490d00200520024d0d070b20004281808080203702000c1a0b20034180026a2003410010a30120034180036a41086a22022003418c026a220129020037030020034180036a41106a220520034194026a29020037030020034198036a22042003419c026a28020036020020032003290284023703800302402003280280024101470d00200341e0016a41086a200341206a41086a290300370300200341e0016a41106a200341206a41106a28020036020020032003280288033602202003200329032022063703e001200041086a2003290380033702002000428180808010370200200041106a20063e02000c1a0b200341e0016a41086a2005290300370300200341e0016a41106a20042802003602002003200329038003220637038002200320022903003703e00120034180026a2006a72207200328028402220810a2012001280200210520034180026a41086a2802002101200328028402210202402003280280024101470d00200221040c180b41012104200220016a22092002490d17200920084b0d1720092002490d022001417f4c0d0d024002402001450d002001102d22050d01200141011033000b41e49cc40041004100104b000b0240024002400240024002402005200720026a200110ab05220a2d00002208410476220441034b0d004100210b410121054100210220040e0405010203050b41e280c000410c41f080c00010a401000b410121024101102d2205450d0820052008410f713a00000c030b41012105410021020c010b410121024101102d2205450d0520052008410f713a00000b4101210b0b024020014101470d00200221010c090b2001417f6a210720024101742108200a41016a210420022101034020042d00002109024020022001470d00200241016a22012002490d0b20082001200820014b1b22014100480d0b0240024020020d002001102d21050c010b200520022001102f21050b2005450d030b200520026a20094104763a000020042d0000210902400240200241016a2001470d00200141016a220c2001490d0c2001410174220d200c200d200c4b1b220c4100480d0c0240024020010d00200c102d21050c010b20052001200c102f21050b2005450d01200c21010b200441016a2104200520026a41016a2009410f713a0000200841046a2108200241026a21022007417f6a2207450d0a0c010b0b200c41011033000b410021052003410036029801200341003602900120034100360288012003410036028001200341003602782003410036027020034100360268200341003602602003410036025820034100360250200341003602482003410036024020034100360238200341003602302003410036022820034100360220200341206a410472210220034180026a4104722101034020034180026a2003200510a30120034180036a41086a2204200141086a29020037030020034180036a41106a2208200141106a29020037030020034180036a41186a2207200141186a280200360200200320012902003703800302402003280280024101470d00200341e0016a41086a220220034180036a41086a280200360200200341c0016a41106a200341e0016a41106a290300370300200341c0016a41186a200341e0016a41186a280200360200200341c0016a41086a200229030022063703002003200329038003220e3703c0012000428180808010370200200041086a200e370200200041106a20063e02000c080b200341c0016a41086a20042903002206370300200341a0016a41186a2007280200360200200341a0016a41106a2008290300370300200341a0016a41086a2006370300200320032903800322063703c001200320063703a00120034180026a20032802a00120032802a40110a10102402003280280024101470d002000200329028402370204200041013602002000410c6a20034180026a410c6a2902003702000c080b200541016a210520032802880221042003280284022108024002402002417c6a2207280200220941034b0d0002400240024020090e0404000102040b200228020022092009280200417f6a360200200228020022092802000d030240200941106a280200450d00200928020c10310b02402009411c6a280200450d00200928021810310b20092009280204417f6a360204200228020022092802040d03200910310c030b200228020022092009280200417f6a360200200228020022092802000d020240200941106a280200450d00200928020c10310b200941186a10a50120092009280204417f6a360204200228020022092802040d02200910310c020b200210a6010c010b200228020022092009280200417f6a360200200228020022092802000d000240200941106a280200450d00200928020c10310b20092009280204417f6a360204200228020022092802040d00200910310b2002200436020020072008360200200241086a210220054110460d060c000b0b200141011033000b20022009107b000b410141011033000b410141011033000b20034180026a2001200210a2014101210820034180026a410c6a280200210720034180026a41086a28020021052003280284022104024002402003280280024101470d00200421080c010b200420056a22092004490d00200920024b0d00024020092004490d002005417f4c0d09024002400240024020050d00410121080c010b2005102d2208450d012008200120046a200510ab051a0b4118102d2202450d0120022005360214200220053602102002200836020c200241003602082002428180808010370200200041086a200236020020004280808080c0003702000c170b200541011033000b411841041033000b20042009107b000b2000428180808010370200200041106a20073602002000410c6a2005360200200041086a20083602000c130b20034180026a2003411010a30120034180036a41086a22022003418c026a29020037030020034180036a41106a220120034194026a29020037030020034180036a41186a22052003419c026a28020036020020032003290284023703800302402003280280024101470d00200341e0016a41086a22012002280200360200200341c0016a41106a200341e0016a41106a290300370300200341c0016a41186a200341e0016a41186a280200360200200341c0016a41086a200129030022063703002003200329038003220e3703c0012000428180808010370200200041086a200e370200200041106a20063e02000c010b200341c0016a41086a20022903002206370300200341a0016a41186a2005280200360200200341a0016a41106a2001290300370300200341a0016a41086a2006370300200320032903800322063703c001200320063703a00120032802a001210202400240024002400240024020032802a4012205450d0020022d000041c0007241c001470d00410021050c010b20034180026a2002200510a2014101210820034180026a410c6a280200210720034180026a41086a2802002101200328028402210402402003280280024101470d00200421080c050b200420016a22092004490d04200920054b0d0420092004490d032001417f4c0d0b024020010d0041012105420021060c010b2001102d2205450d012005200220046a200110ab051a2001ad220642208620068421060b20034180026a200341206a41800110ab051a419801102d2202450d012002410036020820024281808080103702002002410c6a20034180026a41800110ab051a20022006370290012002200536028c01200041086a200236020020004280808080303702000c160b200141011033000b41980141041033000b20042009107b000b2000428180808010370200200041106a20073602002000410c6a2001360200200041086a20083602000b024002402003280220220241034b0d0002400240024020020e0404000102040b200328022422022002280200417f6a360200200328022422022802000d030240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328022422022802040d03200210310c030b200328022422022002280200417f6a360200200328022422022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328022422022802040d02200210310c020b200341206a41047210a6010c010b200328022422022002280200417f6a360200200328022422022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328022422022802040d00200210310b024002402003280228220241034b0d0002400240024020020e0404020100040b2003412c6a10a6010c030b2003412c6a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328022c22022802040d02200210310c020b2003412c6a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328022c22022802040d01200210310c010b2003412c6a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328022c22022802040d00200210310b024002402003280230220241034b0d0002400240024020020e0404020100040b200341346a10a6010c030b200341346a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328023422022802040d02200210310c020b200341346a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328023422022802040d01200210310c010b200341346a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328023422022802040d00200210310b024002402003280238220241034b0d0002400240024020020e0404020100040b2003413c6a10a6010c030b2003413c6a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328023c22022802040d02200210310c020b2003413c6a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328023c22022802040d01200210310c010b2003413c6a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328023c22022802040d00200210310b024002402003280240220241034b0d0002400240024020020e0404020100040b200341c4006a10a6010c030b200341c4006a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328024422022802040d02200210310c020b200341c4006a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328024422022802040d01200210310c010b200341c4006a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328024422022802040d00200210310b024002402003280248220241034b0d0002400240024020020e0404020100040b200341cc006a10a6010c030b200341cc006a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328024c22022802040d02200210310c020b200341cc006a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328024c22022802040d01200210310c010b200341cc006a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328024c22022802040d00200210310b024002402003280250220241034b0d0002400240024020020e0404020100040b200341d4006a10a6010c030b200341d4006a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328025422022802040d02200210310c020b200341d4006a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328025422022802040d01200210310c010b200341d4006a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328025422022802040d00200210310b024002402003280258220241034b0d0002400240024020020e0404020100040b200341dc006a10a6010c030b200341dc006a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328025c22022802040d02200210310c020b200341dc006a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328025c22022802040d01200210310c010b200341dc006a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328025c22022802040d00200210310b024002402003280260220241034b0d0002400240024020020e0404020100040b200341e4006a10a6010c030b200341e4006a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328026422022802040d02200210310c020b200341e4006a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328026422022802040d01200210310c010b200341e4006a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328026422022802040d00200210310b024002402003280268220241034b0d0002400240024020020e0404020100040b200341ec006a10a6010c030b200341ec006a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328026c22022802040d02200210310c020b200341ec006a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328026c22022802040d01200210310c010b200341ec006a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328026c22022802040d00200210310b024002402003280270220241034b0d0002400240024020020e0404020100040b200341f4006a10a6010c030b200341f4006a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328027422022802040d02200210310c020b200341f4006a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328027422022802040d01200210310c010b200341f4006a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328027422022802040d00200210310b024002402003280278220241034b0d0002400240024020020e0404020100040b200341fc006a10a6010c030b200341fc006a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328027c22022802040d02200210310c020b200341fc006a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328027c22022802040d01200210310c010b200341fc006a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328027c22022802040d00200210310b02400240200328028001220241034b0d0002400240024020020e0404020100040b20034184016a10a6010c030b20034184016a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a36020420032802840122022802040d02200210310c020b20034184016a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a36020420032802840122022802040d01200210310c010b20034184016a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a36020420032802840122022802040d00200210310b02400240200328028801220241034b0d0002400240024020020e0404020100040b2003418c016a10a6010c030b2003418c016a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328028c0122022802040d02200210310c020b2003418c016a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328028c0122022802040d01200210310c010b2003418c016a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328028c0122022802040d00200210310b02400240200328029001220241034b0d0002400240024020020e0404020100040b20034194016a10a6010c030b20034194016a220228020022012001280200417f6a360200200228020022022802000d020240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a36020420032802940122022802040d02200210310c020b20034194016a220228020022012001280200417f6a360200200228020022022802000d010240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a36020420032802940122022802040d01200210310c010b20034194016a220228020022012001280200417f6a360200200228020022022802000d000240200241106a280200450d00200228020c10310b20022002280204417f6a36020420032802940122022802040d00200210310b0240200328029801220241034b0d0002400240024020020e0415020100150b2003419c016a10a6010c140b2003419c016a220228020022012001280200417f6a360200200228020022022802000d130240200241106a280200450d00200228020c10310b200241186a10a50120022002280204417f6a360204200328029c0122022802040d13200210310c130b2003419c016a220228020022012001280200417f6a360200200228020022022802000d120240200241106a280200450d00200228020c10310b02402002411c6a280200450d00200228021810310b20022002280204417f6a360204200328029c0122022802040d12200210310c120b2003419c016a220228020022012001280200417f6a360200200228020022022802000d110240200241106a280200450d00200228020c10310b20022002280204417f6a360204200328029c0122022802040d11200210310c110b200b450d0320012002470d02200241016a22012002490d00200241017422042001200420014b1b220141004e0d010b1034000b0240024020020d002001102d21050c010b200520022001102f21050b2005450d070b200520026a41103a0000200241016a21020b200a10312002417f6a21042002450d0102400240200520046a2d00004110460d0020034180026a2003410110a30120034180036a41086a22042003418c026a29020037030020034180036a41106a20034194026a29020037030020034198036a22082003419c026a2802003602002003200329028402370380032003280280024101470d01200341e0016a41086a200341206a41086a290300370300200341e0016a41106a200341206a41106a28020036020020032003280288033602202003200329032022063703e001200041086a20032903800337020020004101360204200041106a20063e02000c0b0b20034180026a2003410110a30120034180036a41086a22042003418c026a220829020037030020034180036a41106a20034194026a29020037030020034198036a22072003419c026a28020036020020032003290284023703800302402003280280024101470d00200341e0016a41086a200341206a41086a290300370300200341e0016a41106a200341206a41106a28020036020020032003280288033602202003200329032022063703e001200041086a2003290380033702002000428180808010370200200041106a20063e02000c0a0b200341e0016a41086a20034180036a41106a290300370300200341e0016a41106a20072802003602002003200329038003220637038002200320042903003703e00120034180026a2006a7220d200328028402220c10a2012008280200210720034180026a41086a2802002104200328028402210802402003280280024101470d00200821090c090b41012109200820046a220a2008490d08200a200c4b0d08200a2008490d072004417f4c0d010240024020040d00410121070c010b2004102d2207450d042007200d20086a200410ab051a0b4124102d2208450d04200820043602202008200436021c2008200736021820082002360214200820013602102008200536020c200841003602082008428180808010370200200041086a200836020020004280808080103702000c0d0b200341e0016a41086a20034180036a41106a290300370300200341e0016a41106a20082802003602002003200329038003220637038002200320042903003703e001200341c0016a2006a720032802840210a101024020032802c0014101470d00200020032902c4013702042000410c6a200341c0016a410c6a2902003702000c0a0b200341c0016a41086a280200210820032802c40121074120102d2204450d042004200836021c2004200736021820042002360214200420013602102004200536020c200441003602082004428180808010370200200041086a200436020020004280808080203702000c0c0b1032000b41e49cc40020044100104b000b200441011033000b412441041033000b412041041033000b200141011033000b2008200a107b000b2000428180808010370200200041106a20073602002000410c6a2004360200200041086a20093602000b2001450d03200510310c030b200041013602002001450d02200510310c020b2000428180808010370200200041106a20053602002000410c6a2001360200200041086a20043602000c010b200042003702000b200341e0036a24000bca0401037f02402002450d00024002400240024020012c00002203417f4a0d00200341ff0171220441b801490d01024002400240200341ff0171220341c001490d00200341f801490d0220024102490d0720012d00010d0120004105360204200041013602000f0b20024102490d06024020012d00010d0020004105360204200041013602000f0b200441ca7e6a220520024b0d06200441c97e6a220341044b0d05200141016a210441002101410021020240034020032002460d01200420026a2d00002002417f7320036a4103744118717420016a21012003200241016a2202470d000b0b024020014138490d0020002005360204200041086a2001360200200041003602000f0b20004107360204200041013602000f0b2004418a7e6a220520024b0d052005450d0302400240200441897e6a220341044b0d0002402003450d00200141016a210441002101410021020240034020032002460d01200420026a2d00002002417f7320036a4103744118717420016a21012003200241016a2202470d000b0b20014138490d0220002005360204200041086a2001360200200041003602000f0b41d89bc40041004100104b000b20004100360204200041013602000f0b20004107360204200041013602000f0b20004101360204200041086a200441c07e6a360200200041003602000f0b2000428080808010370204200041003602000f0b20004101360204200041086a200441807f6a360200200041003602000f0b41014100107b000b20004100360204200041013602000f0b20004101360204200041013602000bf705010d7f230041106b220324000240024002400240024002400240024020012802042204450d00200128020022052d000041c001490d00024020012802084101470d002001410c6a280200220620024d0d030b20032005200410a2012003410c6a2802002107200341086a28020021062003280204210820032802004101470d01200821050c050b200041023602040c050b41012105200820066a22092008490d03200920044b0d034101210520012802042009490d03200920084f0d0120082009107b000b02402004200141106a28020022084f0d0041012104200041013602040c050b200220066b210a200420086b2106200520086a21090c010b200128020020086a21092002210a0b0240024002400240200a0d004100210b0c010b20032009200610a201410121042003410c6a280200210c200341086a280200210d2003280204210720032802004101460d0102402007200d6a220520074f0d00410121070c030b4101210720062005490d024100210b0340200d210e2005200b6a210b200920056a2109200620056b2106200a417f6a220a450d0120032009200610a201200328020c210c2003280208210d2003280204210720032802004101460d022007200d6a2205200749210f41012107200f0d0320062005490d030c000b0b2001200236020c41012104200141013602082001200b20086a220736021020032009200610a2012003410c6a2802002105200341086a2802002102200328020421010240024020032802004101460d00200120026a2208200149210d41012101200d0d0041012101200820064d0d010b200020013602042000410c6a2005360200200041086a20023602000c050b20002009360204200041206a200736020041002104200041186a41003602002000410c6a4100360200200041086a20083602000c040b200d210e0b200020073602042000410c6a200c360200200041086a200e3602000c020b200020053602042000410c6a2007360200200041086a20063602000b410121040b20002004360200200341106a24000b3b01017f230041206b2203240020034204370310200342013702042003200136021c200320003602182003200341186a3602002003200210b301000bb20401027f024002402000280200220141034b0d0002400240024020010e0404000102040b200028020422012001280200417f6a360200200028020422012802000d030240200141106a280200450d00200128020c10310b02402001411c6a280200450d00200128021810310b200028020422012001280204417f6a360204200028020422002802040d03200010310f0b200028020422012001280200417f6a360200200028020422012802000d020240200141106a280200450d00200128020c10310b200141186a10a501200028020422012001280204417f6a360204200028020422002802040d02200010310f0b200028020422012001280200417f6a360200200028020422012802000d012001410c6a10a501200141146a10a5012001411c6a10a501200141246a10a5012001412c6a10a501200141346a10a5012001413c6a10a501200141c4006a10a501200141cc006a10a501200141d4006a10a501200141dc006a10a501200141e4006a10a501200141ec006a10a501200141f4006a10a501200141fc006a10a50120014184016a10a5010240200128028c012202450d0020014190016a280200450d00200210310b200028020422012001280204417f6a360204200028020422002802040d01200010310c010b200028020422012001280200417f6a360200200028020422012802000d000240200141106a280200450d00200128020c1031200028020421010b20012001280204417f6a360204200028020422002802040d00200010310f0b0bee0101027f200028020022012001280200417f6a3602000240200028020022012802000d002001410c6a10a501200141146a10a5012001411c6a10a501200141246a10a5012001412c6a10a501200141346a10a5012001413c6a10a501200141c4006a10a501200141cc006a10a501200141d4006a10a501200141dc006a10a501200141e4006a10a501200141ec006a10a501200141f4006a10a501200141fc006a10a50120014184016a10a5010240200128028c012202450d0020014190016a280200450d00200210310b200028020022012001280204417f6a360204200028020022012802040d00200110310b0bfd0801067f02400240200028029001220141034b0d0002400240024020010e0404000102040b20004194016a220128020022022002280200417f6a360200200128020022012802000d030240200141106a280200450d00200128020c10310b02402001411c6a280200450d00200128021810310b20002802940122012001280204417f6a36020420002802940122012802040d03200110310c030b20004194016a220128020022022002280200417f6a360200200128020022012802000d020240200141106a280200450d00200128020c10310b200141186a10a50120002802940122012001280204417f6a36020420002802940122012802040d02200110310c020b20004194016a10a6010c010b20004194016a220128020022022002280200417f6a360200200128020022012802000d000240200141106a280200450d00200128020c103120002802940121010b20012001280204417f6a36020420002802940122012802040d00200110310b02402000419c016a280200450d0020002802980110310b200041a4016a10a8010240200041186a2802002203450d002000411c6a280200220241046a2101200320026a41016a21042002280200417f73418081828478712103200041206a280200210202400340024020030d000340200120044f0d03200241e0006a210220012802002103200141046a220521012003418081828478712203418081828478460d000b2003418081828478732103200521010b2003417f6a21060240200220036841037641186c6a220541046a280200450d00200528020010310b20062003712103200541106a280200450d00200528020c10310c000b0b02402000280218220141086a200141056a490d00200141016aad42187e422088a71a0b200028021c10310b0240200041c8006a2802002203450d00200041cc006a280200220241046a2101200320026a41016a21042002280200417f73418081828478712105200041d0006a280200210202400340024002402005450d00200521030c010b0340200120044f0d03200241306a210220012802002103200141046a220521012003418081828478712203418081828478460d000b2003418081828478732103200521010b2003417f6a20037121052002200368410376410c6c6a220341046a280200450d00200328020010310c000b0b02402000280248220141086a200141056a490d00200141016aad420c7e422088a71a0b200028024c10310b0240200041f8006a2802002203450d00200041fc006a280200220241046a2101200320026a41016a21042002280200417f7341808182847871210520004180016a280200210202400340024002402005450d00200521030c010b0340200120044f0d03200241306a210220012802002103200141046a220521012003418081828478712203418081828478460d000b2003418081828478732103200521010b2003417f6a20037121052002200368410376410c6c6a220341046a280200450d00200328020010310c000b0b02402000280278220141086a200141056a490d00200141016aad420c7e422088a71a0b200028027c10310b0bc60201077f200028020022012001280200417f6a3602000240200028020022022802000d00024020022802202203450d00200241246a280200220441046a2101200320046a41016a21052004280200417f734180818284787121032002280228210402400340024020030d000340200120054f0d03200441e0006a210420012802002103200141046a220621012003418081828478712203418081828478460d000b2003418081828478732103200621010b2003417f6a21070240200420036841037641186c6a220641046a280200450d00200628020010310b20072003712103200641106a280200450d00200628020c10310c000b0b02402002280220220141086a200141056a490d00200141016aad42187e422088a71a0b20022802241031200028020021020b20022002280204417f6a360204200028020022012802040d00200110310b0bcb0e02077f017e230041306b2205240002400240024002400240024002400240024002400240024002400240024002400240024002400240024020020e050400020103040b200328020841016a220241004c0d0520032002360208024002400240200328021422062004280208470d00200328020c220720042802002208460d0120072008200610ad05450d010b200041003602040c010b20032802202206417f4c0d070240024020060d00410121070c010b200328021821022006102d2207450d0920072002200610ab051a200328020821020b200020073602042000410c6a2006360200200041086a20063602000b2000410036020020032002417f6a36020820032003280200417f6a220236020020020d130240200341106a280200450d00200328020c10310b02402003411c6a280200450d00200328021810310b20032003280204417f6a220236020420020d13200310310c130b20052003360208200328020841016a220241004c0d07200320023602080240024002400240024002400240200441086a2802002206450d00200428020022092d000022024110460d00200241104f0d0a410021082003410c6a220a20024103746a22042802000e050601020304060b02400240200328028c0122070d00410021060c010b2003280294012202417f4c0d0c024020020d00410121060c010b2002102d2206450d0f20062007200210ab051a0b20002006360204200041003602002000410c6a2002360200200041086a20023602000c170b41012108200a20024103746a2802042207280200220241016a41014b0d030c150b41022108200a20024103746a2802042207280200220241016a41014d0d140c020b4103210820042802042207280200220241016a41014d0d130c010b4104210820042802042207280200220241016a41014d0d120b2007200241016a3602000b2006417f6a2202417f4c0d050240024020020d00410121060c010b2002102d2206450d0a2006200941016a200210ab051a0b200520023602202005200236021c200520063602182000200120082007200541186a10a9012002450d11200610310c110b41002102200328020841016a220b41004c0d092003200b3602080240200341146a2802002206200441086a2802002207200720064b1b2208450d0020042802002109200328020c210a41002102034020072002460d0c20062002460d0d200920026a2d0000200a20026a2d0000470d01200241016a22022008490d000b0b0240024020022006460d00200042003702000c010b4100210902400240024002400240024020032802180e050500010203050b41012109200328021c2208280200220241016a41014d0d150c030b41022109200328021c2208280200220241016a41014d0d140c020b41032109200328021c2208280200220241016a41014d0d130c010b41042109200328021c2208280200220241016a41014d0d120b2008200241016a3602000b20072006490d0d200720066b2202417f4c0d050240024020020d00410121070c010b2004280200210a2002102d2207450d0f2007200a20066a200210ab051a0b200520023602202005200236021c200520073602182000200120092008200541186a10a90102402002450d00200710310b2003280208210b0b2003200b417f6a36020820032003280200417f6a220236020020020d110240200341106a280200450d00200328020c10310b200341186a10a50120032003280204417f6a220236020420020d11200310310c110b41002102200328020841016a220641004c0d0d20032006360208200541086a200141a4016a28020041086a200328020c200328021410aa0102400240200528020822060d000c010b200528020c2108200541186a2006200541086a41086a28020010a101200541186a41086a2802002107200528021c2102024020052802184101470d00200541186a410c6a290200210c02402008450d00200610310b20002002360204200041013602002000410c6a200c370200200041086a200736020020032003280208417f6a36020820032003280200417f6a220236020020020d120240200341106a280200450d00200328020c10310b20032003280204417f6a220236020420020d12200310310c120b2008450d00200610310b2000200120022007200410a90120032003280208417f6a36020820032003280200417f6a220236020020020d100240200341106a280200450d00200328020c10310b20032003280204417f6a220236020420020d10200310310c100b200042003702000c0f0b41f0bdc00020024110104b000b41aeddc4004118200541186a41e0bdc0001038000b1032000b200641011033000b41aeddc4004118200541186a41e0bdc0001038000b200241011033000b200241011033000b41aeddc4004118200541186a41e0bdc0001038000b41e49cc40020072007104b000b41e49cc40020062006104b000b20062007107b000b200241011033000b41aeddc4004118200541186a41e0bdc0001038000b00000b20032003280208417f6a360208200541086a10a6010b200541306a24000bee0303037f027e097f230041106b22042400410021050240200128020041016a220641004c0d00200120063602002004200141106a2903002207200129030822087c37030820042007200885220720084218898520074210868520074225897c37030020022003200410ff022004290308200429030085a7220641197622094108742009722209411074200972210a200141186a280200220b200671210c200141206a280200210d2001411c6a280200210e0240024003400240200e200c6a280000220f200a732206417f73200641fffdfb776a71418081828478712206450d00024003400240200d200668410376200c6a200b71221041186c6a22092802082003470d00200928020022112002460d0220022011200310ad05450d020b2006417f6a2006712206450d020c000b0b2009450d0202400240200d201041186c6a22032802142206417f4c0d000240024020060d00410121030c010b200328020c21092006102d2203450d0220032009200610ab051a0b2000200636020420002003360200200041086a20063602000c050b1032000b200641011033000b200541046a2205200c6a200b71210c200f200f4101747141808182847871450d000b0b200041003602000b20012001280200417f6a360200200441106a24000f0b41aeddc4004118200441fcd2c3001038000b8c1703077f027e057f230041206b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240419206102d2203450d00200242920637020420022003360200200341003b00002002410236020802400240200128020022042903684202520d0020022802002103024020022802044102470d00200341024104102f2203450d0420024104360204200220033602000b200341043a00022002200228020841016a3602080c010b20022802002103024020022802044102470d00200341024104102f2203450d0420024104360204200220033602000b20034184013a00022002200228020841016a360208200420021058024020042d0024220341024b0d0002400240024020030e03000102000b02400240200228020420022802082203460d00200228020021010c010b200341016a22012003490d19200341017422052001200520014b1b22054100480d190240024020030d002005102d21010c010b200228020020032005102f21010b2001450d082002200536020420022001360200200228020821030b2002200341016a360208200120036a41003a0000200441256a2106410021010340200620016a2d0000210702400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d1a200341017422082005200820054b1b22084100480d1a0240024020030d002008102d21050c010b200228020020032008102f21050b2005450d0a2002200836020420022005360200200228020821030b2002200341016a360208200520036a20073a0000200141016a220141c000470d000c030b0b02400240200228020420022802082203460d00200228020021010c010b200341016a22012003490d18200341017422052001200520014b1b22054100480d180240024020030d002005102d21010c010b200228020020032005102f21010b2001450d092002200536020420022001360200200228020821030b2002200341016a360208200120036a41013a0000200441256a2106410021010340200620016a2d0000210702400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d19200341017422082005200820054b1b22084100480d190240024020030d002008102d21050c010b200228020020032008102f21050b2005450d0b2002200836020420022005360200200228020821030b2002200341016a360208200520036a20073a0000200141016a220141c000470d000c020b0b02400240200228020420022802082203460d00200228020021010c010b200341016a22012003490d17200341017422052001200520014b1b22054100480d170240024020030d002005102d21010c010b200228020020032005102f21010b2001450d0a2002200536020420022001360200200228020821030b2002200341016a360208200120036a41023a0000412521010340200420016a2d0000210702400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d18200341017422082005200820054b1b22084100480d180240024020030d002008102d21050c010b200228020020032008102f21050b2005450d0c2002200836020420022005360200200228020821030b2002200341016a360208200520036a20073a0000200141016a220141e600470d000b0b0240024020042903684201510d0002400240200228020420022802082203460d00200228020021010c010b200341016a22012003490d18200341017422052001200520014b1b22054100480d180240024020030d002005102d21010c010b200228020020032005102f21010b2001450d0d2002200536020420022001360200200228020821030b2002200341016a360208200120036a41003a00000c010b200441f8006a29030020042903702209420c88220a4201200a4201561b80210a0240024020022802042201200228020822036b4102490d00200228020021010c010b200341026a22052003490d17200141017422032005200320054b1b22034100480d170240024020010d002003102d21010c010b200228020020012003102f21010b2001450d0d2002200336020420022001360200200228020821030b2002200341026a360208200120036a200aa741047420097aa7417f6a22034101200341014b1b2203410f2003410f491b723b00000b20044190016a2002109101200220044180016a360210200241106a200210ac010b20044198016a200210ad012002280208210320024100360218200242013703102003417e6a200241106a106f2002280208220141014d0d0b200228021821042002280214210b200228021021072002410036020820022802002103024002402001417e6a2208450d00410221062004450d13200320072d00003a00004101210c2002200228020841016a36020820044101460d13200720046a210d200320072d00013a00012002200228020841016a36020841022106200741026a21052004417e6a220e0d014100210e0c110b0240024002402002280204220120044f0d00200141017422052004200520044b1b22054100480d180240024020010d002005102d21030c010b200320012005102f21030b2003450d102002200536020420022003360200200228020821060c010b410021062004450d010b200320066a220120072d00003a0000024020044101470d00200641016a21060c010b2004417f6a2105200741016a2103200141016a21010340200120032d00003a0000200141016a2101200341016a21032005417f6a22050d000b200620046a21060b20022006360208410221060c110b024002402002280204220320016b200e490d00200228020021030c010b2001200e6a22062001490d15200341017422012006200120064b1b22014100480d150240024020030d002001102d21030c010b200228020020032001102f21030b2003450d0e20022001360204200220033602000b200320046a200341026a200810ac051a0240200420022802082203460d00200420036b21062004417e6a2101200228020020036a210c410021030340024020012003470d00200421060c130b200c20036a20052d00003a00002002200228020841016a360208200541016a21052006200341016a2203470d000b200d20056b220e0d004100210e4101210c0c0f0b200e4100480d14200e102d220c0d0e200e41011033000b41920641011033000b410441011033000b410441011033000b200541011033000b200841011033000b200541011033000b200841011033000b200541011033000b200841011033000b200541011033000b200341011033000b41cfe9c300411c419cdec40010a401000b200541011033000b200141011033000b200421060b0240200d2005460d00200c20052d00003a00004101210f02400240200541016a2203200d470d00200c41016a21040c010b200c41016a21012007200420056b6a21050340200120032d00003a0000200141016a2101200d200341016a2203470d000b2005450d01200c20056a21042005210f0b0240024020022802042203200820066a22016b200f490d00200228020021030c010b2001200f6a22052001490d06200341017422012005200120054b1b22014100480d060240024020030d002001102d21030c010b200228020020032001102f21030b2003450d0520022001360204200220033602000b20032006200f6a220d6a200320066a200810ac051a0240200d20022802082203460d00200228020020036a21012006200f6a20036b2105200c2103034020042003460d01200120032d00003a00002002200228020841016a360208200341016a2103200141016a21012005417f6a22050d000b0b200d21060b200e450d00200c10310b2008450d010b0240200620022802082203460d002002280200220120036a200120066a200810ac051a0b2002200820036a3602080b0240200b450d00200710310b20002002290300370200200041086a200241086a280200360200200241206a24000f0b200141011033000b1034000b890a03017f027e057f230041e0006b2202240002400240024002400240024002400240024002400240200028020022002903002203423f56200041086a290300220442005220045022051b0d0002400240200141046a280200200141086a2802002200460d00200128020021050c010b200041016a22052000490d0b200041017422062005200620054b1b22064100480d0b0240024020000d002006102d21050c010b200128020020002006102f21050b2005450d0220012005360200200141046a2006360200200141086a28020021000b200141086a200041016a360200200520006a2003a74102743a00000c080b20034280800154410020051b0d06200342808080800454410020051b0d05411020047920037942c0007c20044200521ba741037622066b4104490d0402400240200141046a280200200141086a2802002205460d00200128020021070c010b200541016a22082005490d0a200541017422072008200720084b1b22084100480d0a0240024020050d002008102d21070c010b200128020020052008102f21070b2007450d0220012007360200200141046a2008360200200141086a28020021050b200141086a2208200541016a360200200720056a413320064102746b3a0000200029030021032002200041086a290300220437030820022003370300200641706a2105200141046a2107034002400240200728020020082802002200460d00200128020021060c010b200041016a22062000490d0b200041017422092006200920064b1b22094100480d0b0240024020000d002009102d21060c010b200128020020002009102f21060b2006450d042001200636020020072009360200200828020021000b2008200041016a360200200620006a2003a73a00002003420888200442388684210320044208882104200541016a22002005492106200021052006450d000b2002200337030020022004370308200320048450450d030c070b200641011033000b200841011033000b200941011033000b200241286a41146a4103360200200241346a4106360200200241106a41146a410336020020022002360240200241e8bfc0003602442002420337021420024180ecc4003602102002410636022c200242043703582002420137024c200241a0bfc0003602482002200241286a3602202002200241c8006a3602382002200241c4006a3602302002200241c0006a360228200241106a41dc94c40010b301000b41dfbec0004136419cdec40010a401000b024002400240200141046a2802002205200141086a28020022006b4104490d00200128020021050c010b200041046a22062000490d05200541017422002006200020064b1b22004100480d050240024020050d002000102d21050c010b200128020020052000102f21050b2005450d0120012005360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200520006a2003a74102744102723600000c020b200041011033000b02400240200141046a2802002205200141086a28020022006b4102490d00200128020021050c010b200041026a22062000490d03200541017422002006200020064b1b22004100480d030240024020050d002000102d21050c010b200128020020052000102f21050b2005450d0220012005360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200520006a2003a74102744101723b00000b200241e0006a24000f0b200041011033000b1034000bcdb50104057f017e067f017e230041206b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402000280200220341124b0d00024002400240024002400240024002400240024002400240024002400240024002400240024020030e13000102030405060708090a0b0c0d0e0f101112000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5f200341017422002004200020044b1b22004100480d5f0240024020030d002000102d21040c010b200128020020032000102f21040b2004450d1420012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200110a9020c120b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5e200341017422052004200520044b1b22054100480d5e0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000280208417f6a220341064b0d11024002400240024002400240024020030e0700010203040506000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d64200341017422002004200020044b1b22004100480d640240024020030d002000102d21040c010b200128020020032000102f21040b2004450d1b20012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a41003a00000c170b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d63200341017422052004200520044b1b22054100480d630240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200028020c2106200041146a28020022032001106f02400240200141046a2802002200200528020022046b2003490d00200128020021000c010b200420036a22052004490d63200041017422042005200420054b1b22044100480d630240024020000d002004102d21000c010b200128020020002004102f21000b2000450d1c20012000360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200020046a2006200310ab051a0c160b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d62200341017422052004200520044b1b22054100480d620240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000290310210702400240200141046a2802002204200528020022036b4108490d00200128020021040c010b200341086a22002003490d62200441017422032000200320004b1b22034100480d620240024020040d002003102d21040c010b200128020020042003102f21040b2004450d1d20012004360200200141046a2003360200200141086a28020021030b200141086a200341086a360200200420036a20073700000c150b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d61200341017422052004200520044b1b22054100480d610240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200028020c2106200041146a28020022032001106f02400240200141046a2802002200200528020022046b2003490d00200128020021000c010b200420036a22052004490d61200041017422042005200420054b1b22044100480d610240024020000d002004102d21000c010b200128020020002004102f21000b2000450d1e20012000360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200020046a2006200310ab051a0c140b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d60200341017422052004200520044b1b22044100480d600240024020030d002004102d21050c010b200128020020032004102f21050b2005450d1e20012005360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200520036a41043a0000200028020c2103200041146a28020022002001106f2000450d132003200041186c6a2108200141046a2106034020032802002109200341086a28020022002001106f024002402006280200220a200428020022056b2000490d002001280200210a0c010b200520006a220b2005490d61200a4101742205200b2005200b4b1b22054100480d6102400240200a0d002005102d210a0c010b2001280200200a2005102f210a0b200a450d202001200a36020020062005360200200428020021050b2004200520006a360200200a20056a2009200010ab051a2003410c6a2802002109200341146a28020022002001106f024002402006280200220a200428020022056b2000490d002001280200210a0c010b200520006a220b2005490d61200a4101742205200b2005200b4b1b22054100480d6102400240200a0d002005102d210a0c010b2001280200200a2005102f210a0b200a450d212001200a36020020062005360200200428020021050b2004200520006a360200200a20056a2009200010ab051a200341186a22032008470d000c140b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5f200341017422052004200520044b1b22054100480d5f0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2020012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41053a0000200028020c2105200041146a28020022032001106f2003450d1220052003410c6c6a2108200141046a210903402005280200210a200541086a28020022032001106f0240024020092802002200200628020022046b2003490d00200128020021000c010b200420036a220b2004490d6020004101742204200b2004200b4b1b22044100480d600240024020000d002004102d21000c010b200128020020002004102f21000b2000450d222001200036020020092004360200200628020021040b2006200420036a360200200020046a200a200310ab051a2005410c6a22052008470d000c130b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5e200341017422052004200520044b1b22054100480d5e0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41063a0000200028020c2106200041146a28020022032001106f02400240200141046a2802002200200528020022046b2003490d00200128020021000c010b200420036a22052004490d5e200041017422042005200420054b1b22044100480d5e0240024020000d002004102d21000c010b200128020020002004102f21000b2000450d2220012000360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200020046a2006200310ab051a0c110b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5d200341017422002004200020044b1b22004100480d5d0240024020030d002000102d21040c010b200128020020032000102f21040b2004450d2220012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200110a9020c100b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5c200341017422052004200520044b1b22054100480d5c0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a00002000280208417f6a220341034b0d0f0240024002400240024020030e0400010203000b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d60200341017422052004200520044b1b22044100480d600240024020030d002004102d21050c010b200128020020032004102f21050b2005450d2720012005360200200141046a2004360200200141086a28020021030b200041306a2104200141086a200341016a360200200520036a41003a00002000410c6a20011058200221030c030b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d5f200341017422052004200520044b1b22044100480d5f0240024020030d002004102d21050c010b200128020020032004102f21050b2005450d2720012005360200200141046a2004360200200141086a28020021030b200041c0006a2104200141086a200341016a360200200520036a41013a00002000410c6a200110582002200041306a360204200241046a200110ac01200241086a21030c020b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d5e200341017422052004200520044b1b22044100480d5e0240024020030d002004102d21050c010b200128020020032004102f21050b2005450d2720012005360200200141046a2004360200200141086a28020021030b200041d8006a2104200141086a200341016a360200200520036a41023a00002000410c6a20011058200041306a200110582002410c6a21030c010b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d5d200341017422052004200520044b1b22044100480d5d0240024020030d002004102d21050c010b200128020020032004102f21050b2005450d2720012005360200200141046a2004360200200141086a28020021030b200041306a2104200141086a200341016a360200200520036a41033a00002000410c6a20011058200241106a21030b200320043602002003200110ac010c0f0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5b200341017422002004200020044b1b22004100480d5b0240024020030d002000102d21040c010b200128020020032000102f21040b2004450d2620012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a41043a0000200110a9020c0e0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5a200341017422052004200520044b1b22054100480d5a0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a00002000280208417f6a220341024b0d0d024002400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d5d200341017422052004200520044b1b22044100480d5d0240024020030d002004102d21050c010b200128020020032004102f21050b2005450d2a20012005360200200141046a2004360200200141086a28020021030b200041306a2104200141086a200341016a360200200520036a41003a00002000410c6a20011058200241046a21030c020b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d5c200341017422052004200520044b1b22044100480d5c0240024020030d002004102d21050c010b200128020020032004102f21050b2005450d2a20012005360200200141046a2004360200200141086a28020021030b200041c0006a2104200141086a200341016a360200200520036a41013a00002000410c6a200110582002200041306a360208200241086a200110ac012002410c6a21030c010b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22042003490d5b200341017422052004200520044b1b22044100480d5b0240024020030d002004102d21050c010b200128020020032004102f21050b2005450d2a20012005360200200141046a2004360200200141086a28020021030b200041d8006a2104200141086a200341016a360200200520036a41023a00002000410c6a20011058200041306a20011058200241106a21030b200320043602002003200110ac010c0d0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d59200341017422052004200520044b1b22054100480d590240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41063a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d59200341017422052004200520044b1b22054100480d590240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041086a200110b0010c0c0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d58200341017422052004200520044b1b22054100480d580240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41073a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d58200341017422052004200520044b1b22054100480d580240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2b20012004360200200141046a2005360200200141086a28020021030b200141086a220a200341016a360200200420036a41003a00002000280204210c2000410c6a28020022032001106f2003450d0b200c200341f0006c6a210d200141046a210b034020022001360210200c41106a200241106a103e200c200110910120022001360210200c41306a200241106a103e20022001360210200c41d0006a200241106a103e200c2802042100200c28020c22032001106f02402003450d00200341246c21090340200241106a200010ba022002280210210602400240200b2802002205200a28020022036b20022802182204490d00200128020021050c010b200320046a22082003490d5b200541017422032008200320084b1b22034100480d5b0240024020050d002003102d21050c010b200128020020052003102f21050b2005450d2f20012005360200200b2003360200200a28020021030b200a200320046a360200200520036a2006200410ab051a02402002280214450d00200610310b200041246a21002009415c6a22090d000b0b200c41f0006a220c200d470d000c0c0b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d57200341017422052004200520044b1b22054100480d570240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41083a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d57200341017422052004200520044b1b22054100480d570240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200028020421062000410c6a28020022032001106f02400240200141046a2802002200200528020022046b2003490d00200128020021000c010b200420036a22052004490d57200041017422042005200420054b1b22044100480d570240024020000d002004102d21000c010b200128020020002004102f21000b2000450d2e20012000360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200020046a2006200310ab051a0c0a0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d56200341017422052004200520044b1b22054100480d560240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41093a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d56200341017422052004200520044b1b22054100480d560240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280204210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d56200441017422032005200320054b1b22034100480d560240024020040d002003102d21040c010b200128020020042003102f21040b2004450d3020012004360200200141046a2003360200200141086a28020021030b200141086a220a200341046a360200200420036a2006360000200041086a2802002106200041106a28020022032001106f02400240200141046a2802002205200a28020022046b2003490d00200128020021050c010b200420036a220a2004490d5620054101742204200a2004200a4b1b22044100480d560240024020050d002004102d21050c010b200128020020052004102f21050b2005450d3120012005360200200141046a2004360200200141086a28020021040b200141086a220a200420036a360200200520046a2006200310ab051a200041146a28020021052000411c6a28020022032001106f02402003450d0020052003410c6c6a210c200141046a210b034020052802002109200541086a28020022032001106f02400240200b2802002206200a28020022046b2003490d00200128020021060c010b200420036a22082004490d58200641017422042008200420084b1b22044100480d580240024020060d002004102d21060c010b200128020020062004102f21060b2006450d3420012006360200200b2004360200200a28020021040b200a200420036a360200200620046a2009200310ab051a2005410c6a2205200c470d000b0b200041206a280200210502400240200141046a2802002204200a28020022036b4104490d00200128020021040c010b200341046a22062003490d56200441017422032006200320064b1b22034100480d560240024020040d002003102d21040c010b200128020020042003102f21040b2004450d3320012004360200200141046a2003360200200141086a28020021030b200141086a2206200341046a360200200420036a2005360000200041246a280200210a02400240200141046a2802002204200628020022036b4104490d00200128020021040c010b200341046a22052003490d56200441017422032005200320054b1b22034100480d560240024020040d002003102d21040c010b200128020020042003102f21040b2004450d3420012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a200a360000200041286a210b410021040340200b20046a2d0000210602400240200141046a220a28020020052802002203460d00200128020021000c010b200341016a22002003490d57200341017422092000200920004b1b22094100480d570240024020030d002009102d21000c010b200128020020032009102f21000b2000450d3620012000360200200a2009360200200528020021030b2005200341016a360200200020036a20063a0000200441016a220441c000470d000c0a0b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d55200341017422052004200520044b1b22054100480d550240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410a3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d55200341017422052004200520044b1b22054100480d550240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041046a20011091010c080b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d54200341017422002004200020044b1b22004100480d540240024020030d002000102d21040c010b200128020020032000102f21040b2004450d3620012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a410b3a0000200110a9020c070b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d53200341017422052004200520044b1b22054100480d530240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410c3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d53200341017422052004200520044b1b22054100480d530240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041106a20011046200041306a20011046200041d0006a20011046200028020421062000410c6a28020022032001106f02400240200141046a2802002200200528020022046b2003490d00200128020021000c010b200420036a22052004490d53200041017422042005200420054b1b22044100480d530240024020000d002004102d21000c010b200128020020002004102f21000b2000450d3820012000360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200020046a2006200310ab051a0c060b02400240200141046a2206280200200141086a22042802002203460d00200128020021050c010b200341016a22052003490d522003410174220a2005200a20054b1b220a4100480d520240024020030d00200a102d21050c010b20012802002003200a102f21050b2005450d3820012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a410d3a0000200041086a22052d0000417f6a220341104b0d050240024002400240024002400240024002400240024002400240024002400240024020030e11000102030405060708090a0b0c0d0e0f10000b02400240200628020020042802002203460d002001280200210a0c010b200341016a220a2003490d6220034101742209200a2009200a4b1b22094100480d620240024020030d002009102d210a0c010b200128020020032009102f210a0b200a450d492001200a360200200141046a2009360200200141086a28020021030b200141086a2209200341016a360200200a20036a41003a00002000410c6a20011058200141046a280200210a200928020021030240024020002903304201510d0002400240200a2003460d002001280200210a0c010b200341016a220a2003490d6420034101742209200a2009200a4b1b22094100480d640240024020030d002009102d210a0c010b200128020020032009102f210a0b200a450d4c2001200a360200200141046a2009360200200141086a28020021030b2004200341016a360200200a20036a41003a0000200029033821072002200041c0006a29030037031820022007370310200241106a210a0c010b02400240200a2003460d002001280200210a0c010b200341016a220a2003490d6320034101742209200a2009200a4b1b22094100480d630240024020030d002009102d210a0c010b200128020020032009102f210a0b200a450d4c2001200a360200200141046a2009360200200141086a28020021030b2004200341016a360200200a20036a41013a0000200029033821072002200041c0006a29030037031820022007370310200241106a210a0b0240024020062802002209200428020022036b4110490d00200128020021090c010b200341106a220b2003490d6220094101742203200b2003200b4b1b22034100480d620240024020090d002003102d21090c010b200128020020092003102f21090b2009450d4c20012009360200200141046a2003360200200141086a28020021030b2004200341106a360200200920036a220341086a200a41086a2900003700002003200a29000037000020052d0001210a02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d62200341017422092005200920054b1b22094100480d620240024020030d002009102d21050c010b200128020020032009102f21050b2005450d4d20012005360200200141046a2009360200200141086a28020021030b2004200341016a360200200520036a200a3a0000200029034821070240024020062802002200200428020022036b4108490d00200128020021000c010b200341086a22052003490d62200041017422032005200320054b1b22034100480d620240024020000d002003102d21000c010b200128020020002003102f21000b2000450d4e20012000360200200141046a2003360200200141086a28020021030b2004200341086a360200200020036a20073700000c150b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d612003410174220a2005200a20054b1b220a4100480d610240024020030d00200a102d21050c010b20012802002003200a102f21050b2005450d4e20012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41013a000020062802002105200428020021030240024020002903104201510d000240024020052003460d00200128020021050c010b200341016a22052003490d632003410174220a2005200a20054b1b220a4100480d630240024020030d00200a102d21050c010b20012802002003200a102f21050b2005450d5120012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41003a0000200029031821072002200041206a29030037031820022007370310200241106a21050c010b0240024020052003460d00200128020021050c010b200341016a22052003490d622003410174220a2005200a20054b1b220a4100480d620240024020030d00200a102d21050c010b20012802002003200a102f21050b2005450d5120012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41013a0000200029031821072002200041206a29030037031820022007370310200241106a21050b024002402006280200220a200428020022036b4110490d002001280200210a0c010b200341106a22092003490d61200a41017422032009200320094b1b22034100480d6102400240200a0d002003102d210a0c010b2001280200200a2003102f210a0b200a450d512001200a360200200141046a2003360200200141086a28020021030b2004200341106a360200200a20036a220341086a200541086a29000037000020032005290000370000200029032821070240024020062802002200200428020022036b4108490d00200128020021000c010b200341086a22052003490d61200041017422032005200320054b1b22034100480d610240024020000d002003102d21000c010b200128020020002003102f21000b2000450d5220012000360200200141046a2003360200200141086a28020021030b2004200341086a360200200020036a20073700000c140b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d602003410174220a2005200a20054b1b220a4100480d600240024020030d00200a102d21050c010b20012802002003200a102f21050b2005450d5220012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41023a0000200041186a29030021072000290310210e0240024020062802002205200428020022036b4110490d00200128020021050c010b200341106a220a2003490d6020054101742203200a2003200a4b1b22034100480d600240024020050d002003102d21050c010b200128020020052003102f21050b2005450d5320012005360200200141046a2003360200200141086a28020021030b2004200341106a360200200520036a220320073700082003200e370000200029032021070240024020062802002200200428020022036b4108490d00200128020021000c010b200341086a22052003490d60200041017422032005200320054b1b22034100480d600240024020000d002003102d21000c010b200128020020002003102f21000b2000450d5420012000360200200141046a2003360200200141086a28020021030b2004200341086a360200200020036a20073700000c130b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5f2003410174220a2005200a20054b1b220a4100480d5f0240024020030d00200a102d21050c010b20012802002003200a102f21050b2005450d5420012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41033a00002006280200210520042802002103024020002903104201510d000240024020052003460d00200128020021050c010b200341016a22052003490d602003410174220a2005200a20054b1b220a4100480d600240024020030d00200a102d21050c010b20012802002003200a102f21050b2005450d5620012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41003a0000200041206a29030021072000290318210e0240024020062802002200200428020022036b4110490d00200128020021000c010b200341106a22052003490d60200041017422032005200320054b1b22034100480d600240024020000d002003102d21000c010b200128020020002003102f21000b2000450d5720012000360200200141046a2003360200200141086a28020021030b2004200341106a360200200020036a220320073700082003200e3700000c130b0240024020052003460d00200128020021050c010b200341016a22052003490d5f2003410174220a2005200a20054b1b220a4100480d5f0240024020030d00200a102d21050c010b20012802002003200a102f21050b2005450d5720012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41013a0000200041206a29030021072000290318210e0240024020062802002200200428020022036b4110490d00200128020021000c010b200341106a22052003490d5f200041017422032005200320054b1b22034100480d5f0240024020000d002003102d21000c010b200128020020002003102f21000b2000450d5820012000360200200141046a2003360200200141086a28020021030b2004200341106a360200200020036a220320073700082003200e3700000c120b02400240200628020020042802002203460d00200128020021000c010b200341016a22002003490d5e200341017422052000200520004b1b22054100480d5e0240024020030d002005102d21000c010b200128020020032005102f21000b2000450d5820012000360200200141046a2005360200200141086a28020021030b2004200341016a360200200020036a41043a00000c110b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5d2003410174220a2005200a20054b1b220a4100480d5d0240024020030d00200a102d21050c010b20012802002003200a102f21050b2005450d5820012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41053a0000200029031021070240024020062802002200200428020022036b4108490d00200128020021000c010b200341086a22052003490d5d200041017422032005200320054b1b22034100480d5d0240024020000d002003102d21000c010b200128020020002003102f21000b2000450d5920012000360200200141046a2003360200200141086a28020021030b2004200341086a360200200020036a20073700000c100b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d5c200341017422052004200520044b1b22054100480d5c0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d5920012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41063a0000200028020c210a200041146a28020022032001106f02400240200141046a2802002205200628020022046b2003490d00200128020021050c010b200420036a22062004490d5c200541017422042006200420064b1b22044100480d5c0240024020050d002004102d21050c010b200128020020052004102f21050b2005450d5a20012005360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200520046a200a200310ab051a200041186a20011091010c0f0b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d5b200341017422052004200520044b1b22054100480d5b0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d5a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41073a0000200028020c2103200041146a28020022042001106f2004450d0e200441246c21040340200320011058200341246a21032004415c6a22040d000c0f0b0b02400240200628020020042802002203460d00200128020021000c010b200341016a22002003490d8c01200341017422052000200520004b1b22054100480d8c010240024020030d002005102d21000c010b200128020020032005102f21000b2000450d5b20012000360200200141046a2005360200200141086a28020021030b2004200341016a360200200020036a41083a00000c0d0b02400240200628020020042802002203460d00200128020021000c010b200341016a22002003490d8b012003410174220a2000200a20004b1b220a4100480d8b010240024020030d00200a102d21000c010b20012802002003200a102f21000b2000450d5b20012000360200200141046a200a360200200141086a28020021030b2004200341016a360200200020036a41093a00002006280200210020042802002103024020052d00014101460d000240024020002003460d00200128020021000c010b200341016a22002003490d8c01200341017422052000200520004b1b22054100480d8c010240024020030d002005102d21000c010b200128020020032005102f21000b2000450d5d20012000360200200141046a2005360200200141086a28020021030b2004200341016a360200200020036a41003a00000c0d0b0240024020002003460d00200128020021000c010b200341016a22002003490d8b01200341017422052000200520004b1b22054100480d8b010240024020030d002005102d21000c010b200128020020032005102f21000b2000450d5d20012000360200200141046a2005360200200141086a28020021030b2004200341016a360200200020036a41013a00000c0c0b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d8a01200341017422052004200520044b1b22054100480d8a010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d5d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a00002000410c6a200110580c0b0b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d8901200341017422052004200520044b1b22054100480d89010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d5d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410b3a00002000410c6a20011091010c0a0b02400240200628020020042802002203460d00200128020021000c010b200341016a22002003490d8801200341017422052000200520004b1b22054100480d88010240024020030d002005102d21000c010b200128020020032005102f21000b2000450d5d20012000360200200141046a2005360200200141086a28020021030b2004200341016a360200200020036a410c3a00000c090b02400240200628020020042802002203460d00200128020021000c010b200341016a22002003490d8701200341017422052000200520004b1b22054100480d87010240024020030d002005102d21000c010b200128020020032005102f21000b2000450d5d20012000360200200141046a2005360200200141086a28020021030b2004200341016a360200200020036a410d3a00000c080b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d8601200341017422052004200520044b1b22054100480d86010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d5d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410e3a0000200028020c2103200041146a28020022042001106f2004450d07200441057421040340200320011046200341206a2103200441606a22040d000c080b0b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d8501200341017422002004200020044b1b22004100480d85010240024020030d002000102d21040c010b200128020020032000102f21040b2004450d5d20012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a410f3a0000200541016a200110460c060b02400240200628020020042802002203460d00200128020021000c010b200341016a22002003490d8401200341017422052000200520004b1b22054100480d84010240024020030d002005102d21000c010b200128020020032005102f21000b2000450d5d20012000360200200141046a2005360200200141086a28020021030b2004200341016a360200200020036a41103a00000c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8301200341017422052004200520044b1b22054100480d83010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d5d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410e3a0000200041086a22042d0000417f6a220341044b0d040240024002400240024020030e050001020304000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8701200341017422052004200520044b1b22054100480d87010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d6220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041106a200110fd010c080b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8601200341017422052004200520044b1b22054100480d86010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d6220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041186a200110b001200028020c2106200041146a28020022032001106f02400240200141046a2802002200200528020022046b2003490d00200128020021000c010b200420036a22052004490d8601200041017422042005200420054b1b22044100480d86010240024020000d002004102d21000c010b200128020020002004102f21000b2000450d6320012000360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200020046a2006200310ab051a0c070b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8501200341017422052004200520044b1b22054100480d85010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d6320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000410c6a200110582002200041c0006a360210200241106a200110ac01200041d0006a200110b00120002802302106200041386a28020022032001106f02400240200141046a2802002200200528020022046b2003490d00200128020021000c010b200420036a22052004490d8501200041017422042005200420054b1b22044100480d85010240024020000d002004102d21000c010b200128020020002004102f21000b2000450d6420012000360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200020046a2006200310ab051a0c060b02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22052003490d8401200341017422062005200620054b1b22064100480d84010240024020030d002006102d21050c010b200128020020032006102f21050b2005450d6420012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a41033a00002002200041386a360210200241106a200110ac01200041c8006a200110b00120022001360210200441016a200241106a103e200028022c2105200041346a28020022032001106f02400240200141046a2802002200200628020022046b2003490d00200128020021000c010b200420036a22062004490d8401200041017422042006200420064b1b22044100480d84010240024020000d002004102d21000c010b200128020020002004102f21000b2000450d6520012000360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200020046a2005200310ab051a0c050b02400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d8301200341017422052000200520004b1b22054100480d83010240024020030d002005102d21000c010b200128020020032005102f21000b2000450d6520012000360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200020036a41043a0000200441016a20011046024020042d00214101460d0002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d8401200341017422002004200020044b1b22004100480d84010240024020030d002000102d21040c010b200128020020032000102f21040b2004450d6720012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a41003a00000c050b02400240200141046a28020020052802002203460d00200128020021000c010b200341016a22002003490d8301200341017422052000200520004b1b22054100480d83010240024020030d002005102d21000c010b200128020020032005102f21000b2000450d6720012000360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200020036a41013a0000200441226a200110460c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8201200341017422052004200520044b1b22054100480d82010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d6720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410f3a00002000280204417f6a220341024b0d0302400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8401200341017422052004200520044b1b22054100480d84010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d6a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002000280208200110ad010c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8301200341017422052004200520044b1b22054100480d83010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d6a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041086a200110580c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8201200341017422052004200520044b1b22054100480d82010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d6a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041086a20011058200028022c200110ad010c030b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8101200341017422052004200520044b1b22054100480d81010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d6a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41103a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d8101200341017422052004200520044b1b22054100480d81010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d6b20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200028020421032000410c6a28020022042001106f2004450d02200441f8046c210403402003200110ad01200341f8046a2103200441887b6a22040d000c030b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8001200341017422052004200520044b1b22054100480d80010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d6b20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41113a0000200041086a22042d0000417f6a220341064b0d01024002400240024002400240024020030e0700010203040506000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8601200341017422052004200520044b1b22054100480d86010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d7220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041106a200110bd0220002903f004210702400240200141046a2802002204200528020022036b4108490d00200128020021040c010b200341086a22002003490d8601200441017422032000200320004b1b22034100480d86010240024020040d002003102d21040c010b200128020020042003102f21040b2004450d7320012004360200200141046a2003360200200141086a28020021030b200141086a200341086a360200200420036a20073700000c070b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8501200341017422052004200520044b1b22054100480d85010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d7320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041106a200110bd020c060b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8401200341017422052004200520044b1b22054100480d84010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d7320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000290310210702400240200141046a2802002204200528020022036b4108490d00200128020021040c010b200341086a22052003490d8401200441017422032005200320054b1b22034100480d84010240024020040d002003102d21040c010b200128020020042003102f21040b2004450d7420012004360200200141046a2003360200200141086a28020021030b200141086a2206200341086a360200200420036a2007370000200041186a280200210a200041206a28020022032001106f02400240200141046a2802002205200628020022046b2003490d00200128020021050c010b200420036a22062004490d8401200541017422042006200420064b1b22044100480d84010240024020050d002004102d21050c010b200128020020052004102f21050b2005450d7520012005360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200520046a200a200310ab051a20022001360210200041246a200241106a103e0c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8301200341017422052004200520044b1b22054100480d83010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d7520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a0000200041106a200110bd020c040b02400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d8201200341017422052000200520004b1b22054100480d82010240024020030d002005102d21000c010b200128020020032005102f21000b2000450d7520012000360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200020036a41043a0000200441016a200110460c030b02400240200141046a280200200141086a2802002203460d00200128020021000c010b200341016a22002003490d8101200341017422052000200520004b1b22054100480d81010240024020030d002005102d21000c010b200128020020032005102f21000b2000450d7520012000360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200020036a41053a0000200441016a200110460c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8001200341017422002004200020044b1b22004100480d80010240024020030d002000102d21040c010b200128020020032000102f21040b2004450d7520012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a41063a00000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d7f200341017422052004200520044b1b22054100480d7f0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d7520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41123a00002000280208417f6a220341024b0d00024002400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8201200341017422052004200520044b1b22054100480d82010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d7920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000290310210702400240200141046a2802002204200528020022036b4108490d00200128020021040c010b200341086a22052003490d8201200441017422032005200320054b1b22034100480d82010240024020040d002003102d21040c010b200128020020042003102f21040b2004450d7a20012004360200200141046a2003360200200141086a28020021030b200141086a2206200341086a360200200420036a2007370000200041186a280200210a200041206a28020022032001106f02400240200141046a2802002205200628020022046b2003490d00200128020021050c010b200420036a22062004490d8201200541017422042006200420064b1b22044100480d82010240024020050d002004102d21050c010b200128020020052004102f21050b2005450d7b20012005360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200520046a200a200310ab051a20022001360210200241106a21030c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8101200341017422052004200520044b1b22054100480d81010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d7b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a00002000290310210702400240200141046a2802002204200528020022036b4108490d00200128020021040c010b200341086a22052003490d8101200441017422032005200320054b1b22034100480d81010240024020040d002003102d21040c010b200128020020042003102f21040b2004450d7c20012004360200200141046a2003360200200141086a28020021030b200141086a2206200341086a360200200420036a2007370000200041186a280200210a200041206a28020022032001106f02400240200141046a2802002205200628020022046b2003490d00200128020021050c010b200420036a22062004490d8101200541017422042006200420064b1b22044100480d81010240024020050d002004102d21050c010b200128020020052004102f21050b2005450d7d20012005360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200520046a200a200310ab051a20022001360210200241106a21030c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d8001200341017422052004200520044b1b22054100480d80010240024020030d002005102d21040c010b200128020020032005102f21040b2004450d7d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000290310210702400240200141046a2802002204200528020022036b4108490d00200128020021040c010b200341086a22052003490d8001200441017422032005200320054b1b22034100480d80010240024020040d002003102d21040c010b200128020020042003102f21040b2004450d7e20012004360200200141046a2003360200200141086a28020021030b200141086a2206200341086a360200200420036a2007370000200041186a280200210a200041206a28020022032001106f02400240200141046a2802002205200628020022046b2003490d00200128020021050c010b200420036a22062004490d8001200541017422042006200420064b1b22044100480d80010240024020050d002004102d21050c010b200128020020052004102f21050b2005450d7f20012005360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200520046a200a200310ab051a20022001360210200241106a21030b200041246a2003103e0b200241206a24000f0b200041011033000b200541011033000b200041011033000b200541011033000b200441011033000b200541011033000b200341011033000b200541011033000b200441011033000b200441011033000b200541011033000b200541011033000b200541011033000b200441011033000b200541011033000b200441011033000b200041011033000b200541011033000b200441011033000b200441011033000b200441011033000b200441011033000b200041011033000b200541011033000b200441011033000b200441011033000b200441011033000b200541011033000b200541011033000b200541011033000b200541011033000b200341011033000b200541011033000b200541011033000b200441011033000b200541011033000b200541011033000b200341011033000b200441011033000b200441011033000b200341011033000b200341011033000b200941011033000b200541011033000b200541011033000b200041011033000b200541011033000b200541011033000b200441011033000b200a41011033000b200941011033000b200941011033000b200941011033000b200341011033000b200941011033000b200341011033000b200a41011033000b200a41011033000b200a41011033000b200341011033000b200341011033000b200a41011033000b200341011033000b200341011033000b200a41011033000b200a41011033000b200341011033000b200a41011033000b200341011033000b200541011033000b200a41011033000b200341011033000b200541011033000b200441011033000b200541011033000b1034000b200541011033000b200a41011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200041011033000b200541011033000b200541011033000b200541011033000b200541011033000b200441011033000b200541011033000b200441011033000b200641011033000b200441011033000b200541011033000b200041011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200341011033000b200541011033000b200541011033000b200341011033000b200441011033000b200541011033000b200541011033000b200541011033000b200041011033000b200541011033000b200541011033000b200341011033000b200441011033000b200541011033000b200341011033000b200441011033000b200541011033000b200341011033000b200441011033000b1034000bb50404057f017e017f017e0240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a3602000240200441037122064103460d00024002400240024020060e03000102000b2004410276ad21070c020b41012106024020050d000c050b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d04200141fcff0371410276ad21070c010b410121060240200541034f0d000c040b200341036a2d0000210520032f0001210820012002417c6a3602042001200341046a3602002008200541107472410874200472220141808004490d032001410276ad21070b410021060c020b02402004410276220841044b0d000240024020080e050002020201000b20054104490d022003350001210720012002417b6a3602042001200341056a36020020074280808080045421060c030b20054108490d01200329000121072001200241776a3602042001200341096a3602002007428080808080808080015421060c020b200841046a220541084b0d002002417e6a2102200341026a2103410021044200210741012106034002402002417f470d000c030b2003417f6a310000210920012002360204200120033602002002417f6a2102200341016a210320092004410374413871ad862007842107200441016a220441ff01712005490d000b2007427f412820084103746b413871ad885821060c010b410121060b2000200737030820002006ad3703000bde0506067f017e017f017e017f017e230041206b220224000240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240200541037122074103460d0002400240024020070e03000102000b2005410276ad21080c040b410121072006450d0220042d0001210620012003417e6a3602042001200441026a3602002006410874200572220141ffff0371418002490d02200141fcff0371410276ad21080c030b4101210720064103490d01200441036a2d0000210620042f0001210920012003417c6a3602042001200441046a3602002009200641107472410874200572220141808004490d012001410276ad21080c020b024020054102762209410c4b0d0002400240024020090e0d00030303010303030303030302000b20064104490d052004350001210820012003417b6a3602042001200441056a36020020084280808080045421074200210a0c060b20064108490d04200429000121082001200341776a3602042001200441096a3602002008428080808080808080015421074200210a0c050b20064110490d03200441096a290000210a2004290001210820012003416f6a3602042001200441116a360200200a428080808080808080015421070c040b200941046a220641104b0d022003417e6a2103200441026a21044100210541012107200241186a210b420021084200210a03402003417f460d01200241106a2004417f6a3100004200200541037441f8007110ae0520012003360204200120043602002003417f6a2103200441016a2104200b290300200a84210a20022903102008842108200541016a220541ff01712006490d000b2002427f427f41e80020094103746b41f8007110af052008200229030058200a200241086a290300220c58200a200c511b21070c030b0c020b4200210a410021070c010b410121070b20002008370308200041106a200a37030020002007ad370300200241206a24000bb50903017f017e057f230041e0006b220224000240024002400240024002400240024002400240024020002903002203423f560d0002400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d0b200041017422052004200520044b1b22054100480d0b0240024020000d002005102d21040c010b200128020020002005102f21040b2004450d0220012004360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200420006a2003a74102743a00000c080b200342808001540d062003428080808004540d054108200379a741037622056b4104490d0402400240200141046a280200200141086a2802002204460d00200128020021060c010b200441016a22072004490d0a200441017422062007200620074b1b22074100480d0a0240024020040d002007102d21060c010b200128020020042007102f21060b2006450d0220012006360200200141046a2007360200200141086a28020021040b200141086a2207200441016a360200200620046a411320054102746b3a0000200220002903002203370308200541786a2104200141046a2106034002400240200628020020072802002200460d00200128020021050c010b200041016a22052000490d0b200041017422082005200820054b1b22084100480d0b0240024020000d002008102d21050c010b200128020020002008102f21050b2005450d042001200536020020062008360200200728020021000b2007200041016a360200200520006a2003a73a000020034208882103200441016a22002004492105200021042005450d000b20022003370308200350450d030c070b200541011033000b200741011033000b200841011033000b200241286a41146a4103360200200241346a4107360200200241106a41146a41033602002002200241086a36024020024198bfc0003602442002420337021420024180ecc4003602102002410736022c200242043703582002420137024c200241a0bfc0003602482002200241286a3602202002200241c8006a3602382002200241c4006a3602302002200241c0006a360228200241106a41dc94c40010b301000b41dfbec0004136419cdec40010a401000b024002400240200141046a2802002204200141086a28020022006b4104490d00200128020021040c010b200041046a22052000490d05200441017422002005200020054b1b22004100480d050240024020040d002000102d21040c010b200128020020042000102f21040b2004450d0120012004360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200420006a2003a74102744102723600000c020b200041011033000b02400240200141046a2802002204200141086a28020022006b4102490d00200128020021040c010b200041026a22052000490d03200441017422002005200020054b1b22004100480d030240024020040d002000102d21040c010b200128020020042000102f21040b2004450d0220012004360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200420006a2003a74102744101723b00000b200241e0006a24000f0b200041011033000b1034000b6501027f230041206b220224002001411c6a280200210320012802182101200241086a41106a200041106a290200370300200241086a41086a200041086a2902003703002002200029020037030820012003200241086a10ac022100200241206a240020000bc20202027f017e23004180016b220224002000280200210002400240024002400240200128020022034110710d002000290300210420034120710d0120044101200110960221000c020b20002903002104410021000340200220006a41ff006a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d02200141014184a3c3004102200220006a4180016a410020006b10950221000c010b410021000340200220006a41ff006a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d02200141014184a3c3004102200220006a4180016a410020006b10950221000b20024180016a240020000f0b2003418001107b000b2003418001107b000b3201017f230041106b220224002002200136020c20022000360208200241989dc30036020420024101360200200210f203000b840605027f027e017f027e027f230041a0016b220224002000280200210002400240024002400240024002400240200128020022034110710d00200041086a29030021042000290300210520034120710d0220054290ce005441002004501b450d012005a72103412721000c060b200041086a2903002105200029030021044180012100024003402000450d01200241206a20006a417f6a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a210020044204882005423c8684220420054204882205844200520d000b0b20004181014f0d02200141014184a3c3004102200241206a20006a41800120006b10950221000c060b41272100200241186a21060340200241106a200520044290ce00420010b1052002200229031022072006290300220842f0b17f427f10b005200241206a20006a2203417c6a200520022903007ca7220941ffff037141e4006e220a41017441da9dc3006a2f00003b00002003417e6a200a419c7f6c20096a41ffff037141017441da9dc3006a2f00003b0000200542ffc1d72f56210320044200522109200450210a2000417c6a2100200721052008210420032009200a1b0d000c040b0b4180012100024003402000450d01200241206a20006a417f6a2005a7410f712203413072200341376a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b0b20004181014f0d01200141014184a3c3004102200241206a20006a41800120006b10950221000c040b2000418001107b000b2000418001107b000b2007a721030b02400240200341e3004a0d00200321090c010b200241206a2000417e6a22006a2003200341ffff037141e4006e2209419c7f6c6a41ffff037141017441da9dc3006a2f00003b00000b024002402009410a480d00200241206a2000417e6a22006a200941017441da9dc3006a2f00003b00000c010b200241206a2000417f6a22006a200941306a3a00000b2001410141f0eac4004100200241206a20006a412720006b10950221000b200241a0016a240020000b8f0301027f230041e0006b22032400200341003a0005024002402000413f4b0d0041012104200341013a0005200320004102743a00000c010b02400240200041808001490d0020004180808080044f0d0141042104200341043a0005200320004102744102723602000c020b41022104200341023a0005200320004102744101723b01000c010b41052104200341053a0005200341033a0000200320003600010b024002402001280200220028020822012002490d0020002802002100200320023602082003200436020c20042002470d0120002003200210ab051a200341e0006a24000f0b2002200110b601000b200341286a41146a4103360200200341346a4104360200200341106a41146a41033602002003420337021420034180ecc4003602102003410436022c2003200341086a36024020032003410c6a360244200342043703582003420137024c200341d4ecc4003602482003200341286a3602202003200341c8006a3602382003200341c4006a3602302003200341c0006a360228200341106a4190edc40010b301000b7001017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41053602002002420237020c200241a49fc300360208200241053602242002200241206a3602182002200241046a36022820022002360220200241086a41b49fc30010b301000bb90201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d002000280200210420034120710d012004ad4101200110960221000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141014184a3c3004102200220006a4180016a410020006b10950221000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141014184a3c3004102200220006a4180016a410020006b10950221000b20024180016a240020000f0b2004418001107b000b2004418001107b000ba50d01067f0240024020002802002201280200220241114b0d00024002400240024002400240024002400240024020020e120b000b0b0b0b0b0102030b0b0405060708090b0b0240200141086a280200220241064b0d00024002400240024020020e070f0f000f0102030f0b200141106a280200450d0e2001410c6a28020010310c0e0b200141106a280200450d0d2001410c6a28020010310c0d0b0240200141146a2802002203450d002001410c6a2802002102200341186c210303400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200341686a22030d000b0b200141106a280200450d0c200128020c10310c0c0b0240200141146a2802002203450d002001410c6a28020021022003410c6c210303400240200241046a280200450d00200228020010310b2002410c6a2102200341746a22030d000b0b200141106a280200450d0b200128020c10310c0b0b200141106a280200450d0a2001410c6a28020010310c0a0b02402001410c6a2802002202450d0020012802042204200241f0006c6a2105034002402004410c6a2802002203450d0020042802042102200341246c210303400240024020022d0000220641034b0d0002400240024020060e0404000102040b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022003415c6a22030d000b0b200441f0006a21020240200441086a280200450d00200428020410310b2002210420022005470d000b0b200141086a280200450d09200128020410310c090b200141086a280200450d08200128020410310c080b02402001410c6a280200450d00200141086a28020010310b02402001411c6a2802002203450d00200141146a28020021022003410c6c210303400240200241046a280200450d00200228020010310b2002410c6a2102200341746a22030d000b0b200141186a280200450d07200128021410310c070b200141086a280200450d06200128020410310c060b200141086a2d000041796a220241084b0d0502400240024020020e09000108080808080802000b200141106a280200450d072001410c6a28020010310c070b200141106a280200450d062001410c6a28020010310c060b200141106a280200450d052001410c6a28020010310c050b200141086a2d0000417e6a220241024b0d0402400240024020020e03000102000b200141106a280200450d062001410c6a28020010310c060b200141346a280200450d05200141306a28020010310c050b200141306a280200450d042001412c6a28020010310c040b02402001280204220241024b0d00024020020e03050005050b200141086a10b8010c040b2001412c6a10b8010c030b02402001410c6a2802002203450d0020012802042102200341f8046c2103034020021030200241f8046a2102200341887b6a22030d000b0b200141086a280200450d02200128020410310c020b200141086a2d0000417f6a220241034b0d01024002400240024020020e0400010203000b024020014184016a280200450d0020014180016a28020010310b024020014194016a2802002203450d002001418c016a28020021022003410c6c210303400240200241046a280200450d00200228020010310b2002410c6a2102200341746a22030d000b0b20014190016a280200450d04200128028c0110310c040b024020014184016a280200450d0020014180016a28020010310b024020014194016a2802002203450d002001418c016a28020021022003410c6c210303400240200241046a280200450d00200228020010310b2002410c6a2102200341746a22030d000b0b20014190016a280200450d03200128028c0110310c030b2001411c6a280200450d02200141186a28020010310c020b024020014184016a280200450d0020014180016a28020010310b024020014194016a2802002203450d002001418c016a28020021022003410c6c210303400240200241046a280200450d00200228020010310b2002410c6a2102200341746a22030d000b0b20014190016a280200450d01200128028c0110310c010b0240200141086a280200220241024b0d000240024020020e03030001030b2001411c6a280200450d02200141186a28020010310c020b2001411c6a280200450d01200141186a28020010310c010b2001411c6a280200450d00200141186a28020010310b200028020010310b130020004103360204200041e4c2c0003602000b3400200041cf85c40036020420004100360200200041146a4101360200200041106a41a0cac000360200200041086a42043702000bcf0101017f0240024002400240024002404101102d2202450d00200241003a0000200241014102102f2202450d01200241003a0001200241024104102f2202450d02200241003b0002200241044108102f2202450d0320024100360004200241084110102f2202450d0420024200370008200241104120102f2202450d052002420037001820024200370010200042a08080808004370204200020023602000f0b410141011033000b410241011033000b410441011033000b410841011033000b411041011033000b412041011033000b22002001410c6a4100360200200128020041206a200141046a1046200041043602000b970302047f027e230041c0006b220424000240024002402003450d0020022802000d0020034101460d0120022802100d01410521050240200241146a28020022032001280210220628026c4b0d0020022802042107200441086a200629034842002003ad420010b00520012802182202420020022903082208427f200429030820042903104200521b7d2209200920085622021b37030820020d002003417f4c0d0302400240024020030d004101210202402001280214280208200741014100100641026a220641024b0d0020060e03040002040b41b7a6c400412841e0a6c40010a401000b02402003107a2202450d0002402001280214280208200720022003100641026a220641024b0d0020060e03030002030b41b7a6c400412841e0a6c40010a401000b200341011033000b2001410c6a4100360200200441186a2002200310be01410421052004200141046a36023c200441186a2004413c6a103e2003450d010b200210310b20002005360200200441c0006a24000f0b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b1032000bf91803037f017e297f230041c00d6b220324002003200236020c20032001360208105b2102200341186a41086a220441e6a7c100ad4280808080f004841001220141086a2900003703002003200129000037031820011031200341980d6a41086a2004290300370300200320032903183703980d200341f80c6a200341980d6aad4280808080800284100210412002417f6a41d10070210102400240024020032802f80c2202450d0020032802fc0c21042003200341f80c6a41086a28020036021420032002360210200341186a200341106a10890120032802182205450d02200329021c21062004450d01200210310c010b41012105420021060b024002402006422088a722020d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b200341186a410041e00c10aa051a200541206a2107200520024105746a2108410021094100210a4100210b4100210c4100210d4100210e4100210f410021104100211141002112410021134100211441002115410021164100211741002118410021194100211a4100211b4100211c4100211d4100211e4100211f410021204100212141002122410021234100212441002125410021264100212741002128200521024100212941d100212a024003402029212b20022104024002402001450d00200141016a2101200421020340024020082002470d00200521020b2002220441206a21022001417f6a22010d000b20040d010c030b024020042008460d00200441206a21020c010b20072102200521040b024002400240024002400240200328020c220141056a222c417f4c0d002003280208212d02400240202c450d00202c102d222e450d0341002129200341003602a00d2003202c36029c0d2003202e3602980d0c010b200341003602a00d2003202c36029c0d200341013602980d4101102d222e450d032003410136029c0d2003202e3602980d20032802a00d21290b2003202941016a3602a00d202e20296a202b3a00002001200341980d6a106f02400240200328029c0d222e20032802a00d222c6b2001490d0020032802980d212e0c010b202c20016a2229202c490d05202e410174222c2029202c20294b1b222c4100480d0502400240202e0d00202c102d212e0c010b20032802980d202e202c102f212e0b202e450d042003202c36029c0d2003202e3602980d20032802a00d212c0b2003202c20016a3602a00d202e202c6a202d200110ab051a2003200341980d6a3602102004200341106a103e200328029c0d2104200341980d6a41186a222c20033502a00d42208620032802980d222fad841000220141186a290000370300200341980d6a41106a222e200141106a290000370300200341980d6a41086a2229200141086a290000370300200320012900003703980d20011031200341f80c6a41186a222d202c290300370300200341f80c6a41106a222c202e290300370300200341f80c6a41086a222e2029290300370300200320032903980d3703f80c02402004450d00202f10310b202a417f6a212a202b41016a2129200341186a202b4103704105746a220120032903f80c370000200141186a202d290300370000200141106a202c290300370000200141086a202e290300370000410021040340202b202b41036e222c417d6c6a4102470d06200341186a20046a220141df006a2d000022282001411f6a2d0000222e712028202e722001413f6a2d000071722120200141de006a2d000022282001411e6a2d0000222e712028202e722001413e6a2d00007172211f200141dd006a2d000022282001411d6a2d0000222e712028202e722001413d6a2d00007172211e200141dc006a2d000022282001411c6a2d0000222e712028202e722001413c6a2d00007172211d200141db006a2d000022282001411b6a2d0000222e712028202e722001413b6a2d00007172211c200141da006a2d000022282001411a6a2d0000222e712028202e722001413a6a2d00007172211b200141d9006a2d00002228200141196a2d0000222e712028202e72200141396a2d00007172211a200141d8006a2d00002228200141186a2d0000222e712028202e72200141386a2d000071722119200141d7006a2d00002228200141176a2d0000222e712028202e72200141376a2d000071722118200141d6006a2d00002228200141166a2d0000222e712028202e72200141366a2d000071722117200141d5006a2d00002228200141156a2d0000222e712028202e72200141356a2d000071722116200141d4006a2d00002228200141146a2d0000222e712028202e72200141346a2d000071722115200141d3006a2d00002228200141136a2d0000222e712028202e72200141336a2d000071722114200141d2006a2d00002228200141126a2d0000222e712028202e72200141326a2d000071722113200141d1006a2d00002228200141116a2d0000222e712028202e72200141316a2d000071722112200141d0006a2d00002228200141106a2d0000222e712028202e72200141306a2d000071722111200141cf006a2d000022282001410f6a2d0000222e712028202e722001412f6a2d000071722110200141ce006a2d000022282001410e6a2d0000222e712028202e722001412e6a2d00007172210f200141cd006a2d000022282001410d6a2d0000222e712028202e722001412d6a2d00007172210e200141cc006a2d000022282001410c6a2d0000222e712028202e722001412c6a2d00007172210d200141cb006a2d000022282001410b6a2d0000222e712028202e722001412b6a2d00007172210c200141ca006a2d000022282001410a6a2d0000222e712028202e722001412a6a2d00007172210b200141c9006a2d00002228200141096a2d0000222e712028202e72200141296a2d00007172210a200141c8006a2d00002228200141086a2d0000222e712028202e72200141286a2d000071722109200141c7006a2d00002228200141076a2d0000222e712028202e72200141276a2d000071722121200141c6006a2d00002228200141066a2d0000222e712028202e72200141266a2d000071722122200141c5006a2d00002228200141056a2d0000222e712028202e72200141256a2d000071722123200141c4006a2d00002228200141046a2d0000222e712028202e72200141246a2d000071722124200141c3006a2d00002228200141036a2d0000222e712028202e72200141236a2d000071722125200141c2006a2d00002228200141026a2d0000222e712028202e72200141226a2d000071722126200141c1006a2d00002228200141016a2d0000222e712028202e72200141216a2d000071722127200141c0006a2d0000222820012d0000222e712028202e72200141206a2d000071722128200441800c460d06200341186a2004202c410574202b41096e41e0006c6b6a6a220141ff006a20203a0000200141fe006a201f3a0000200141fd006a201e3a0000200141fc006a201d3a0000200141fb006a201c3a0000200141fa006a201b3a0000200141f9006a201a3a0000200141f8006a20193a0000200141f7006a20183a0000200141f6006a20173a0000200141f5006a20163a0000200141f4006a20153a0000200141f3006a20143a0000200141f2006a20133a0000200141f1006a20123a0000200141f0006a20113a0000200141ef006a20103a0000200141ee006a200f3a0000200141ed006a200e3a0000200141ec006a200d3a0000200141eb006a200c3a0000200141ea006a200b3a0000200141e9006a200a3a0000200141e8006a20093a0000200141e7006a20213a0000200141e6006a20223a0000200141e5006a20233a0000200141e4006a20243a0000200141e3006a20253a0000200141e2006a20263a0000200141e1006a20273a0000200141e0006a20283a0000202c212b200441e0006a220441e00c470d000c060b0b1032000b202c41011033000b410141011033000b202c41011033000b1034000b41002101202a0d000b0b200020203a001f2000201f3a001e2000201e3a001d2000201d3a001c2000201c3a001b2000201b3a001a2000201a3a0019200020193a0018200020183a0017200020173a0016200020163a0015200020153a0014200020143a0013200020133a0012200020123a0011200020113a0010200020103a000f2000200f3a000e2000200e3a000d2000200d3a000c2000200c3a000b2000200b3a000a2000200a3a0009200020093a0008200020213a0007200020223a0006200020233a0005200020243a0004200020253a0003200020263a0002200020273a0001200020283a00000b02402006a7450d00200510310b200341c00d6a24000f0b41e9bcc0004133200341b80d6a419cbdc0001038000b5f01017f230041306b220224002002200136020c20022000360208200241246a410136020020024201370214200241e8eac4003602102002410236022c2002200241286a3602202002200241086a360228200241106a41b0c7c30010b301000ba10303027f037e017f230041206b22042400024002402003450d0020022802000d0020034101460d0120022802100d0120022802042103200441106a20012802102903184200200241146a2802002205ad2206420010b00520012802182202420020022903082207427f200429031020042903184200521b7d2208200820075622021b370308024020020d002004200128021029034842002006420010b00520012802182202420020022903082207427f200429030020042903084200521b7d2208200820075622021b37030820020d00200141046a2005107c024002402001280214280208200320012802042001410c6a280200100641026a220241024b0d0020020e03020001020b41b7a6c400412841e0a6c40010a401000b200128020c21022001410036020c200141086a280200210320012802042105200142013702040240200128021c2209450d00200141206a280200450d00200910310b2001200536021c200141246a2002360200200141206a20033602000b20004105360200200441206a24000f0b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b26002001410c6a4100360200200128020028021841d0006a200141046a1046200041043602000bb804020b7f027e230041206b220424002001410c6a41003602000240024002402001280200280218220528021841016a220641004c0d00200541d0006a2107200520063602182005411c6a2108200541206a28020021090240024003402008280200220a41086a210b200a2f0106220c41057421084100210d0240024003402008450d012007200b412010ad05220e450d02200841606a2108200d41016a210d200b41206a210b200e417f4a0d000b200d417f6a210c0b2009450d022009417f6a2109200a200c4102746a41880b6a21080c010b0b200a200d41e0006c6a220841c5036a310000200841e8026a290300220f200f50220b1ba7450d004200200841f8026a290300200b1b210f4200200841f0026a290300200b1b21100c010b200441086a200541286a28020020072005412c6a28020028021c110500200441106a290300210f20052802182106200429030821100b20052006417f6a36021802400240200141086a280200220b2001410c6a28020022086b4110490d002001280204210b0c010b200841106a220d2008490d03200b4101742208200d2008200d4b1b22084100480d0302400240200b0d002008102d210b0c010b2001280204200b2008102f210b0b200b450d022001200b360204200141086a20083602002001410c6a28020021080b2001410c6a200841106a360200200b20086a2208200f3700082008201037000020004104360200200441206a24000f0b41aeddc4004118200441186a41d8ddc4001038000b200841011033000b1034000bf90203027f027e017f230041206b220424000240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200420012802102903484200200241146a2802002202ad420010b00520012802182203420020032903082206427f200429030020042903084200521b7d2207200720065622081b37030841052103024020080d002002417f4c0d0302400240024020020d004101210802402001280214280208200541014100100641026a220141024b0d0020010e03040002040b41b7a6c400412841e0a6c40010a401000b02402002107a2208450d0002402001280214280208200520082002100641026a220141024b0d0020010e03030002030b41b7a6c400412841e0a6c40010a401000b200241011033000b200441106a2008200210c401024020042802100d00200429021410070b410421032002450d010b200810310b20002003360200200441206a24000f0b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b1032000b850804057f017e017f017e02400240024002402002450d00410020016b410020014103711b2103200241796a4100200241074b1b210441002105034002400240200120056a2d000022064118744118752207417f4a0d0042808080801021080240200641869bc3006a2d0000417e6a220941024d0d0042808080808020210a0c070b0240024002400240024020090e03000102000b200541016a22062002490d024200210a0c090b4200210a200541016a220920024f0d08200120096a2d0000210902400240200641a07e6a2206410d4b0d000240024020060e0e0002020202020202020202020201000b200941e0017141a001460d0242808080808020210a0c0c0b02402009411874411875417f4c0d0042808080808020210a0c0c0b200941ff017141a001490d0142808080808020210a0c0b0b02402007411f6a41ff0171410b4b0d0002402009411874411875417f4c0d0042808080808020210a0c0c0b200941ff017141c001490d0142808080808020210a0c0b0b0240200941ff017141bf014d0d0042808080808020210a0c0b0b0240200741fe017141ee01460d0042808080808020210a0c0b0b2009411874411875417f4c0d0042808080808020210a0c0a0b42002108200541026a220620024f0d09200120066a2d000041c00171418001460d020c070b4200210a200541016a220920024f0d07200120096a2d0000210902400240200641907e6a220641044b0d000240024020060e050002020201000b200941f0006a41ff01714130490d0242808080808020210a0c0b0b02402009411874411875417f4c0d0042808080808020210a0c0b0b200941ff0171419001490d0142808080808020210a0c0a0b0240200941ff017141bf014d0d0042808080808020210a0c0a0b02402007410f6a41ff017141024d0d0042808080808020210a0c0a0b2009411874411875417f4c0d0042808080808020210a0c090b200541026a220620024f0d07200120066a2d000041c00171418001470d0642002108200541036a220620024f0d08200120066a2d000041c00171418001460d01428080808080e000210a42808080801021080c080b42808080808020210a4280808080102108200120066a2d000041c00171418001470d070b200641016a21050c010b0240200320056b4103710d000240200520044f0d000340200120056a220641046a280200200628020072418081828478710d01200541086a22052004490d000b0b200520024f0d010340200120056a2c00004100480d022002200541016a2205470d000c040b0b200541016a21050b20052002490d000b0b20002001360204200041086a2002360200200041003602000f0b428080808080c000210a42808080801021080c010b420021080b2000200a2008842005ad84370204200041013602000bc20103017f017e017f410021042001410c6a4100360200200128021829030821050240024002400240200141086a28020022064108490d00200128020421060c010b200641017422044108200441084b1b22044100480d020240024020060d002004102d21060c010b200128020420062004102f21060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441086a360200200620046a2005370000200041043602000f0b200441011033000b1034000bd50102027f027e410021042001410c6a41003602002001280218220541186a2903002106200529031021070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102d21050c010b200128020420052004102f21050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b200441011033000b1034000bed1605087f027e037f027e057f23004190066b22042400024002400240024002400240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d0220034103460d0320022802300d0320034104460d0420022802400d0420034105460d0520022802500d0520034106460d0620022802600d0620034107460d0720022802700d0720022802042103200241246a2802002105200241346a2802002106200241c4006a2802002107200241d4006a2802002108200241e4006a2802002109200241f4006a280200210a200441206a20012802102903484200200241146a280200220bad420010b0052001280218220242002002290308220c427f200429032020042903284200521b7d220d200d200c5622021b3703080240024020020d00200b417f4c0d0a024002400240200b0d004101210e02402001280214280208200341014100100641026a220241024b0d00200141146a210f20020e03040002040b41b7a6c400412841e0a6c40010a401000b0240200b107a220e450d00024020012802142802082003200e200b100641026a220241024b0d00200141146a210f20020e03030002030b41b7a6c400412841e0a6c40010a401000b200b41011033000b41002102200441003a00f00102400340200b2002460d01200441d0016a20026a200e20026a2d00003a00002004200241016a22033a00f0012003210220034120470d000b200441f0056a41086a2202200441d0016a41086a290300370300200441f0056a41106a2203200441d0016a41106a290300370300200441f0056a41186a2210200441d0016a41186a290300370300200420042903d0013703f0050240200b450d00200e10310b200441306a41086a2002290300370300200441306a41106a2003290300370300200441306a41186a2010290300370300200420042903f005370330200441106a200128021029034842002006ad420010b0052001280218220242002002290308220c427f200429031020042903184200521b7d220d200d200c5622021b3703082002450d030c100b0240200241ff0171450d00200441003a00f0010b200b450d010b200e10310b200441f0006a41186a200441f0056a41186a290300370300200441f0006a41106a200441f0056a41106a290300370300200441f0006a41086a200441f0056a41086a290300370300200420042903f005370370410521020c0e0b2006417f4c0d080240024002400240024020060d004101210b0240200f280200280208200541014100100641026a220241024b0d0020020e03120002120b41b7a6c400412841e0a6c40010a401000b02402006107a220b450d000240200f2802002802082005200b2006100641026a220241024b0d0020020e03030002030b41b7a6c400412841e0a6c40010a401000b200641011033000b41002102200441003a00f0010240034020062002460d01200441d0016a20026a200b20026a2d00003a00002004200241016a22033a00f0012003210220034120470d000b200441f0056a41086a2202200441d0016a41086a290300370300200441f0056a41106a2203200441d0016a41106a290300370300200441f0056a41186a220e200441d0016a41186a290300370300200420042903d0013703f00502402006450d00200b10310b200441d0006a41086a2002290300370300200441d0006a41106a2003290300370300200441d0006a41186a200e290300370300200420042903f0053703502004200128021029034842002008ad420010b0052001280218220242002002290308220c427f200429030020042903084200521b7d220d200d200c5622031b3703084105210220030d112008417f4c0d0c20080d03200f280200280208200741014100100641026a220341024b0d0220030e03110211110b0240200241ff0171450d00200441003a00f0010b2006450d0f0b200b1031410521020c0f0b41b7a6c400412841e0a6c40010a401000b024002400240024002402008107a2203450d000240200f280200280208200720032008100641026a220b41024b0d00200b0e03030002030b41b7a6c400412841e0a6c40010a401000b200841011033000b2008410f4d0d00200341086a29000021112003290000211220031031024002400240200a0d004101210e4100210b0c010b200441f0056a41186a2106200441f0056a41106a2105200441f0056a41086a21084100211041002102410021034100210b4101210e03402006420037030020054200370300200842003703002001280218220742002007290308220d427f2001280210290348220c420586200c42ffffffffffffffff0783200c521b7d220c200c200d5622071b370308200442003703f00520070d1102400240200f280200280208200920026a2213200441f0056a4120100641026a220741024b0d0020070e03130001130b41b7a6c400412841e0a6c40010a401000b200341016a2107200441d0016a41186a22142006290300370300200441d0016a41106a22152005290300370300200441d0016a41086a22162008290300370300200420042903f0053703d00102402003200b470d0020102007201020074b1b220b41ffffff3f71200b470d03200b41057422174100480d030240024020030d002017102d210e0c010b200e20022017102f210e0b200e450d100b200e20026a220320042903d001370000200341186a2014290300370000200341106a2015290300370000200341086a2016290300370000201341206a2013490d11201041026a2110200241206a210220072103200a2007470d000b0b2001280200280218210320044190016a41086a200441306a41086a29030037030020044190016a41106a2201200441306a41106a29030037030020044190016a41186a2206200441306a41186a290300370300200441b0016a41086a200341d8006a290000370300200441b0016a41106a2205200341e0006a290000370300200441b0016a41186a2208200341e8006a2900003703002004200429033037039001200420032900503703b001200441f0056a41186a2207200441d0006a41186a290300370300200441f0056a41106a2209200441d0006a41106a290300370300200441f0056a41086a200441d0006a41086a290300370300200420042903503703f0052003413c6a2802002202200341386a280200470d03200241016a220f2002490d0020024101742210200f2010200f4b1b220fad42a0057e220c422088a70d00200ca7221041004e0d020b1034000b200310310c0f0b0240024020020d002010102d21020c010b2003280234200241a0056c2010102f21020b2002450d0b20032002360234200341386a200f360200200328023c21020b2003280234200241a0056c6a220241023a0000200220042903b0013700012002200429039001370021200241096a200441b0016a41086a290300370000200241116a2005290300370000200241196a2008290300370000200241296a20044190016a41086a290300370000200241316a2001290300370000200241396a20062903003700002002200e3600642002200b3600682002200a36006c20022012370370200241f8006a2011370300200220042903f005370041200241c9006a200441f0056a41086a290300370000200241d1006a2009290300370000200241d9006a2007290300370000200220042f00703b0061200241e3006a200441f0006a41026a2d00003a000020024180016a200441d0016a41a00410ab051a2003200328023c41016a36023c410421020c0d0b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b1032000b201741011033000b201041081033000b41052102200b450d01200e10310c010b410521020b2000200236020020044190066a24000b990302017f027e230041c0006b22042400024002402003450d0020022802000d0020022802042103200441186a4200370300200441106a4200370300200441086a420037030020012802182202420020022903082205427f20012802102903482206420586200642ffffffffffffffff07832006521b7d2206200620055622021b3703082004420037030002400240024020020d00024002402001280214280208200320044120100641026a220241024b0d0020020e03020001020b41b7a6c400412841e0a6c40010a401000b200441206a2001280200280218220241186a200241d0006a2002410c6a4100200228020c1b200410c9012004280220450d01200441306a41086a2203200441206a41086a28020036020020042004290320370330200141046a21020240200141086a280200450d00200228020010310b20022004290330370200200241086a2003280200360200410021010c020b200041053602000c030b2001410c6a4100360200410121010b20004100360200200020013602040c010b41b1cbc00041f40310bf01000b200441c0006a24000bcb0402097f017e230041106b22052400024002400240200128020041016a220641004c0d0020012006360200200141046a2106200141086a28020021070240024003402006280200220841086a210920082f0106220a41057421064100210b0240024003402006450d0120022009412010ad05220c450d02200641606a2106200b41016a210b200941206a2109200c417f4a0d000b200b417f6a210a0b2007450d022007417f6a21072008200a4102746a41880b6a21060c010b0b2008200b41e0006c6a22094198036a2106200941e8026a210d2009419c036a2802002107024003402006280200220841086a210920082f0106220a41057421064100210b0240024003402006450d0120042009412010ad05220c450d02200641606a2106200b41016a210b200941206a2109200c417f4a0d000b200b417f6a210a0b024020070d00410021090c030b2007417f6a21072008200a4102746a41ec036a21060c010b0b02400240200841e8026a200b410c6c6a2206280200220b0d00410021064200210e0c010b20062802082209417f4c0d050240024020090d00410121060c010b2009102d2206450d072006200b200910ab051a0b2009ad210e0b200e422086200e84210e410121090b02400240200d2d005d450d002006410020091b21060c010b2009450d010b2000200e370204200020063602000c010b20002001280210200220032004200141146a28020028020c1106000b20012001280200417f6a360200200541106a24000f0b41aeddc4004118200541086a41d8ddc4001038000b1032000b200941011033000be10e06017f017e057f027e037f027e230041e0016b22042400024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802204101470d0220034103460d0320022802300d0320034104460d0420022802400d0420034105460d0520022802500d0520034106460d0620022802600d0620022802042103200241286a2903002105200241346a2802002106200241c4006a2802002107200241d4006a2802002108200241e4006a2802002109200441206a20012802102903484200200241146a280200220aad420010b0052001280218220242002002290308220b427f200429032020042903284200521b7d220c200c200b5622021b3703080240024020020d00200a417f4c0d0902400240024002400240200a0d004101210d02402001280214280208200341014100100641026a220241024b0d00200141146a210e20020e03060002060b41b7a6c400412841e0a6c40010a401000b0240200a107a220d450d00024020012802142802082003200d200a100641026a220241024b0d00200141146a210e20020e03030002030b41b7a6c400412841e0a6c40010a401000b200a41011033000b41002102200441003a00c80102400340200a2002460d01200441a8016a20026a200d20026a2d00003a00002004200241016a22033a00c8012003210220034120470d000b20044188016a41186a2202200441a8016a41186a29030037030020044188016a41106a2203200441a8016a41106a29030037030020044188016a41086a220f200441a8016a41086a290300370300200420042903a801370388010240200a450d00200d10310b200441306a41086a200f290300370300200441306a41106a2003290300370300200441306a41186a20022903003703002004200429038801370330200441106a200128021029034842002007ad420010b0052001280218220242002002290308220b427f200429031020042903184200521b7d220c200c200b5622021b37030820020d042007417f4c0d0d20070d03200e280200280208200641014100100641026a220241024b0d0220020e03040204040b0240200241ff0171450d00200441003a00c8010b200a450d030b200d10310c020b41b7a6c400412841e0a6c40010a401000b0240024002402007107a2202450d000240200e280200280208200620022007100641026a220341024b0d0020030e03030002030b41b7a6c400412841e0a6c40010a401000b200741011033000b2007410f4d0d00200241086a290000211020022900002111200210312004200128021029034842002009ad420010b0052001280218220242002002290308220b427f200429030020042903084200521b7d220c200c200b5622021b37030820020d01200141046a220d2009107c024002402001280214280208200820012802042001410c6a280200100641026a220241024b0d0020020e03030001030b41b7a6c400412841e0a6c40010a401000b200128020c21072001410036020c200141086a28020021032001280204210a2001420137020420012802182202290308220c210b0240024002402005500d002005210b200c2005540d010b2002200c200b7d3703082002290310210c20044188016a41186a200241186a2903003703002004200b370390012004200b370388012004200c370398012001280200280218210620042007360258200420033602542004200a360250200441a8016a20062011201020044188016a200441306a200441d0006a10cb01410121070240024020042802a8014101460d00200441d0006a41086a200441a8016a41186a290300370300200441d0006a41106a200441c8016a2802003602002004200441a8016a41106a290300370350200441d8016a2d00002106200441d0016a2802002109200441cc016a2802002108200441b4016a280200210e200441a8016a41086a28020021034100210720042802ac01210a0c010b200441bc016a280200210e200441b8016a2802002103200441b4016a280200210a410021060b200220042903900120022903087c370308200441f0006a41086a2202200441d0006a41086a290300370300200441f0006a41106a220f200441d0006a41106a28020036020020042004290350370370024020070d00200441bc016a2002290300370200200441c4016a200f2802003602002004200e3602b001200420033602ac012004200a3602a801200420042903703702b4010240200141086a280200450d00200d28020010310b2001410036020c20012008360204200141086a2009360200200641ff017122020d02200441a8016a200d10460c020b200141086a280200450d00200d28020010310b2001410036020c2001200a360204200141086a200336020041800221020b20004100360200200020023602040c020b200210310b200041053602000b200441e0016a24000f0b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b1032000bff2504027f027e087f037e230041b00d6b220724000240024002402001280230200128024022082802b801460d002004420020042903082209200841c0006a2903007d220a200a20095622081b3703082008450d012000419eadc10036020420004101360200200041086a412a3602002000410c6a2006290200370200200041146a200641086a2802003602000c020b200041b0acc10036020420004101360200200041086a41293602002000410c6a2006290200370200200041146a200641086a2802003602000c010b200741186a41186a200141e8006a290000370300200741186a41106a200141e0006a290000370300200741186a41086a200141d8006a29000037030020072001290050370318200741b0026a41186a220b2006280208220cad4220862006350200841000220841186a290000370300200741b0026a41106a220d200841106a290000370300200741b0026a41086a220e200841086a290000370300200720082900003703b00220081031200741d00a6a41186a200b290300370300200741d00a6a41106a200d290300370300200741d00a6a41086a200e290300370300200720072903b0023703d00a02400240024002400240024002400240024002404120102d2208450d0020082005290000370000200841186a200541186a290000370000200841106a200541106a290000370000200841086a200541086a2900003700002008412041c000102f2208450d01200820072903d00a370020200841386a200741d00a6a41186a290300370000200841306a200741d00a6a41106a290300370000200841286a200741d00a6a41086a290300370000200841c000418001102f2208450d0220082007290318370040200841d8006a200741186a41186a290300370000200841d0006a200741186a41106a290300370000200841c8006a200741186a41086a290300370000200741b0026a41186a220d2008ad4280808080800c841000220b41186a290000370300200741b0026a41106a220e200b41106a290000370300200741b0026a41086a220f200b41086a2900003703002007200b2900003703b002200b1031200741386a41186a220b200d290300370300200741386a41106a220d200e290300370300200741386a41086a220e200f290300370300200720072903b0023703382008103120062902002109200741d8006a41d8006a200e290300370300200741b8016a200d290300370300200741c0016a200b29030037030020074194016a410036020020074184016a41dcacc100360200200741f8006a4200370300200741f4006a22104198bfc00036020020072001360260200741d8006a41286a200141186a2211360200200720072903383703a8012007420837028c012007410036027020074100360264200720012802483602a00120072001290340370398012007200128023041016a360288012001290300210a2007200128024c3602a4012007200a370358200741c8016a41186a200541186a290000370300200741c8016a41106a200541106a290000370300200741c8016a41086a200541086a29000037030020074101360270200720052900003703c8012011200741386a10b302210620072007280270417f6a2208360270024020060d0020080d042007417f36027020074190026a41186a200741386a41186a29030037030020074190026a41106a200741386a41106a29030037030020074190026a41086a200741386a41086a2903003703002007200729033837039002024002402007280274220e4198bfc000460d002007280278210f0c010b4100210f200741d00a6a410041e00210aa051a200741b0026a410041a00810aa051a41880b102d220e450d06200e41003b0106200e4100360200200e41086a200741d00a6a41e00210ab051a200e41e8026a200741b0026a41a00810ab051a200741003602782007200e3602740b024002400340200e41086a2108200e2f0106221241057421064100210b0240024003402006450d0120074190026a2008412010ad05220d450d02200641606a2106200b41016a210b200841206a2108200d417f4a0d000b200b417f6a21120b200f450d02200f417f6a210f200e20124102746a41880b6a280200210e0c010b0b200e200b41e0006c6a41e8026a21060c010b200741f0016a41186a20074190026a41186a290300220a370300200741f0016a41106a20074190026a41106a2903002213370300200741f0016a41086a20074190026a41086a2903002214370300200720072903900222153703f001200741ec0a6a2014370200200741d00a6a41246a2013370200200741fc0a6a200a3702002007200741d8006a41246a3602e00a200720123602dc0a200720103602d80a2007200e3602d40a200741003602d00a200720153702e40a200741e4026a4200370200200741003a00ec02200742003703b002200741003a008d0320074198bfc0003602e002200742003703c802200741d00a6a200741b0026a10cd0121060b200741e0016a290300210a20064201370318200641013a003c200641286a427f370300200641206a427f3703002006413d6a20072903c801370000200641c5006a200741d0016a290300370000200641cd006a200741d8016a290300370000200641d5006a200a3700002007200728027041016a360270200741106a20044101200741186a200741386a20022003200741d8006a10b4022007280210220e0d06200741b0026a200520072802a001280200108f01024020072802b0024101470d002009422088a72106200741b8026a280200210520072802b402210e2009a721010c0b0b20074190026a41186a200741b0026a410472220641186a2802002208360200200741d00a6a41106a200641086a290200370300200741d00a6a41186a200641106a290200370300200741f00a6a2008360200200741063602d40a200741d3adc4003602d00a200720062902003703d80a200728029c0121062007200741d8006a3602c8022007290358210a20072802a4012108200741d8026a200741186a41086a290300370300200741e0026a200741186a41106a290300370300200741e8026a200741186a41186a290300370300200720033703b802200720023703b002200720083602cc022007200a3703c002200720072903183703d0022007200c3602f801200720093703f00120074190026a2006200741d00a6a200741b0026a200741f0016a200410b5022007419c026a290200210220074190026a41086a2802002112200728029402210f02402007280290024101470d002002422088a72106200741a4026a280200210c2002a7210120122105200f210e0c0a0b200728027041016a220c41004c0d072007200c360270200728027821040240024003402010280200220541086a210820052f0106220e41057421064100210b0240024003402006450d01200741386a2008412010ad05220d450d02200641606a2106200b41016a210b200841206a2108200d417f4a0d000b200b417f6a210e0b2004450d022004417f6a21042005200e4102746a41880b6a21100c010b0b2005200b41e0006c6a220641c5036a310000200641e8026a290300220320035022081ba7450d004200200641f8026a29030020081b21034200200641f0026a29030020081b21090c010b2007200728028001200741386a20072802840128021c110500200741086a2903002103200729030021092007280270210c0b2007200c417f6a3602702009200728029801220629037854200320064180016a29030022095420032009511b450d082002a7210c4180adc100210e411e2105200f2101201221060c090b2009422088a721062009a7210141f4dcc400210e412a21050c090b412041011033000b41c00041011033000b41800141011033000b419eddc4004110200741b0026a41c8ddc4001038000b41880b41081033000b200728021421052009422088a721062009a721010c030b41aeddc4004118200741b0026a41d8ddc4001038000b20074190026a41086a2208200741186a41086a29030037030020074190026a41106a220b200741186a41106a29030037030020074190026a41186a220d200741186a41186a290300370300200741f0016a41086a2205200741386a41086a290300370300200741f0016a41106a2204200741386a41106a290300370300200741f0016a41186a220e200741386a41186a2903003703002007200729031837039002200720072903383703f00102400240024002402007280294012206200728029001470d00200641016a220c2006490d0320064101742210200c2010200c4b1b2210ad42a0057e2203422088a70d032003a7220c4100480d030240024020060d00200c102d21060c010b200728028c01200641a0056c200c102f21060b2006450d0120072010360290012007200636028c0120072802940121060b200728028c01200641a0056c6a220641003a0000200620072f00ed013b0001200641013a00102006410036000c200642013700042006200729039002370011200620072903f001370031200641036a200741ef016a2d00003a0000200641196a2008290300370000200641216a200b290300370000200641296a200d290300370000200641396a2005290300370000200641c1006a2004290300370000200641c9006a200e290300370000200641e0006a200741d7016a290000370000200641d9006a200741c8016a41086a290000370000200620072900c801370051200641e8006a200741b0026a41b80410ab051a200720072802940141016a2208360294010240200741d00a6a41186a280200450d00200741e40a6a280200103120072802940121080b200728029001210e200728028c012105200728027c210c2007280278210d2007280274210602402007280264220b450d00200741e8006a280200450d00200b10310b0240024020024280808080f01f8350450d002007200c3602b8022007200d3602b402200720063602b0022011200741b0026a10b6022007200e3602b402200720053602b00220072005200841a0056c22086a22043602bc0202400240200141386a280200220b2001413c6a28020022066b200841a0056d220d490d002001280234210b0c010b2006200d6a220e2006490d05200b4101742206200e2006200e4b1b2206ad42a0057e2203422088a70d052003a7220e4100480d0502400240200b0d00200e102d210b0c010b2001280234200b41a0056c200e102f210b0b200b450d042001200b360234200141386a20063602002001413c6a28020021060b200b200641a0056c6a2005200810ab051a2001413c6a22062006280200200d6a360200200720043602b802200741b0026a10780c010b02402008450d00200841a0056c210441002108034002400240200520086a220b2d0000220141014b0d000240024020010e020001000b0240200b41086a280200450d00200b41046a28020010310b200b41106a2d00004105490d02200b41386a280200450d02200b41346a28020010310c020b200b41286a10300c010b200b41e8006a280200450d00200b41e4006a28020010310b2004200841a0056a2208470d000b0b0240200e450d00200510310b02400240200d0d00200621080c010b200d210b20062108034020082802880b2108200b417f6a220b0d000b0340200620062f01064102746a41880b6a2802002106200d417f6a220d0d000b0b200741cc026a20062f0106360200200741c8026a4100360200200741c4026a20063602002007200c3602d002200741003602c002200742003703b802200720083602b402200741003602b002200741b0026a1090020b20002007290338370004200041003602002000412c6a2002370200200041286a2012360200200041246a200f3602002000411c6a200741d0006a290300370000200041146a200741c8006a2903003700002000410c6a200741c0006a2903003700000c050b200c41081033000b200e41081033000b1034000b200741e80a6a280200450d00200741e40a6a28020010310b024020072802642208450d00200741e8006a280200450d00200810310b2006ad2102200728027c21042007280274210602400240200728027822080d002006210b0c010b2008210d2006210b0340200b2802880b210b200d417f6a220d0d000b0340200620062f01064102746a41880b6a28020021062008417f6a22080d000b0b200242208621022001ad2103200741cc026a20062f010636020041002108200741c8026a4100360200200741c4026a2006360200200720043602d002200741003602c002200742003703b8022007200b3602b402200741003602b002200741b0026a10900202402007280294012206450d00200728028c01210d200641a0056c2101034002400240200d20086a22062d0000220b41014b0d0002400240200b0e020001000b0240200641086a280200450d00200641046a28020010310b200641106a2d00004105490d02200641386a280200450d02200641346a28020010310c020b200641286a10300c010b200641e8006a280200450d00200641e4006a28020010310b2001200841a0056a2208470d000b0b200220038421020240200728029001450d00200728028c0110310b2000200e36020420004101360200200041146a200c3602002000410c6a2002370200200041086a20053602000b200741b00d6a24000b900f05047f027e027f017e027f230041c00c6b22042400024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d0220034103460d0320022802300d0320022802042105200241246a2802002106200241346a28020021030240200241146a2802002207450d004105210220012802002802182802402802bc012003490d080b200441286a4200370300200441206a4200370300200441186a420037030020012802182202420020022903082208427f20012802102903482209420586200942ffffffffffffffff07832009521b7d22092009200856220a1b3703082004420037031041052102200a0d070240024020012802142802082005200441106a4120100641026a220a41024b0d00200a0e03090001090b41b7a6c400412841e0a6c40010a401000b024002400240024020070d00410121034100210b0c010b2004200128021029034842002003ad220c420010b0052001280218220a4200200a2903082209427f200429030020042903084200521b7d22082008200956220a1b370308200a0d0a2003417f4c0d070240024020030d004101210b02402001280214280208200641014100100641026a220341024b0d0020030e030d00020d0b41b7a6c400412841e0a6c40010a401000b02402003107a220b450d00024020012802142802082006200b2003100641026a220341024b0d0020030e03040002040b41b7a6c400412841e0a6c40010a401000b200341011033000b200c422086200c842109200b4521030b20012802002101200441306a41186a220a200441106a41186a290300370300200441306a41106a2205200441106a41106a290300370300200441306a41086a2206200441106a41086a290300370300200420042903103703302001280218210720030d0120072802402802bc012009422088a74f0d012009a7450d090b200b10310c080b200441d0006a41186a200a290300370300200441d0006a41106a2005290300370300200441d0006a41086a20062903003703002004200429033037035020072802180d052007417f360218200441a8016a200741e8006a290000370300200441a0016a200741e0006a29000037030020044198016a200741d8006a2900003703002004200729005037039001024002402007411c6a220d280200220a4198bfc000460d00200741206a28020021060c010b41002106200441e0096a410041e00210aa051a200441c0016a410041a00810aa051a41880b102d220a450d07200a41003b0106200a4100360200200a41086a200441e0096a41e00210ab051a200a41e8026a200441c0016a41a00810ab051a200741206a41003602002007200a36021c0b024002400340200a2f0106220e4105742105410021024100210302400240034020052002460d0120044190016a200a20026a41086a412010ad052201450d02200241206a2102200341016a21032001417f4a0d000b2003417f6a210e0b2006450d022006417f6a2106200a200e4102746a41880b6a280200210a0c010b0b200741246a2101410121020c010b200441f0006a41186a20044190016a41186a290300370300200441f0006a41106a20044190016a41106a290300370300200441f0006a41086a20044190016a41086a2903003703002004200429039001370370200741246a210141002106200e2103410021020b0240024020020d00200441fc096a200441f0006a41086a290300370200200441840a6a200441f0006a41106a2903003702002004418c0a6a200441f0006a41186a290300370200200420013602f009200420033602ec092004200d3602e8092004200a3602e409200420063602e009200420042903703702f409200441e0016a20042903b001370300200441e8016a200441b0016a41086a290300370300200441f4016a4200370200200442003703d801200442003703c00120044198bfc0003602f001200441003a00fc01200441fd016a20042900900137000020044185026a20044190016a41086a2900003700002004418d026a20044190016a41106a29000037000020044195026a20044190016a41186a290000370000200441003a009d02200441e0096a200441c0016a10cd0121020c010b200441d8016a4200370300200441d4016a4198bfc000360200200441003602e001200441003602d001200442003703c80120044198bfc0003602c401200441003602c001200a200341e0006c6a41e8026a2102200441c0016a10ce010b200441c0016a41186a200441d0006a41186a290300370300200441c0016a41106a200441d0006a41106a290300370300200441c0016a41086a200441d0006a41086a290300370300200420042903503703c00120042009370294012004200b36029001200441e0096a200241306a200441c0016a20044190016a10cf01024020042802e009450d0020042802e4092202450d00200441e8096a280200450d00200210310b2007200728021841016a360218410421020c070b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b1032000b419eddc4004110200441c0016a41c8ddc4001038000b41880b41081033000b20002002360200200441c00c6a24000b8f1901187f230041d0116b2202240020002802102203200328020041016a360200200028020c21042000280208210520002802042103200241206a41186a22062000412c6a290000370300200241206a41106a2207200041246a290000370300200241206a41086a22082000411c6a29000037030020022000290014370320200241a0026a200141e00010ab051a024002400240024020032f01062201410b490d00200241b0036a410041e00210aa051a20024198066a410041a00810aa051a0240024041880b102d2209450d00200941003b010620094100360200200941086a200241b0036a41e00210ab052101200941e8026a20024198066a41a00810ab052106200220032f00c8013b01ac032002200341ca016a2d00003a00ae03200220032900db01370398032002200341e0016a29000037009d03200341cb016a280000210a200341cf016a280000210b200341d3016a280000210c200341d7016a280000210d20024198066a200341a8076a41e00010ab051a2001200341e8016a20032f010641796a220041057410ab052101200620034188086a200041e0006c10ab052106200341063b0106200920003b0106200220022f01ac033b019403200220022d00ae033a0096032002200229039803370380032002200229009d0337008503200241b0036a20024198066a41e00010ab051a0240024020044107490d00200441057420016a41c07e6a2001200441796a22074105746a2201200041ffff037120076b41057410ac051a200141186a200241206a41186a290300370000200141106a200241206a41106a290300370000200141086a200241206a41086a29030037000020012002290320370000200441e0006c20066a220041c07b6a200041e07a6a220e200941066a22002f010020076b41e0006c10ac051a200e200241a0026a41e00010ab051a0c010b200341086a20044105746a220141206a2001200341066a22002f010020046b41057410ac051a200141186a200241206a41186a290300370000200141106a200241206a41106a290300370000200141086a200241206a41086a29030037000020012002290320370000200341e8026a200441e0006c6a220e41e0006a200e20002f010020046b41e0006c10ac051a200e200241a0026a41e00010ab051a0b20024188026a41026a220420022d0096033a0000200020002f010041016a3b0100200220022f0194033b01880220022002290380033703800120022002290085033700850120024190016a200241b0036a41e00010ab051a2002411c6a41026a220f20042d00003a0000200220022f0188023b011c2002200229038001370308200220022900850137000d200241206a20024190016a41e00010ab051a20032802002206450d0320032f0104211020024198066a410272211103402002419c026a41026a2212200f2d00003a0000200220022f011c3b019c0220022002290308370388022002200229000d37008d02200241a0026a200241206a41e00010ab051a201041ffff0371210702400240024020062f01062203410b490d002011410041b20b10aa051a41b80b102d2201450d0520014100360200200141046a20024198066a41b40b10ab051a200220062f00c8013b01ac032002200641ca016a2d00003a00ae03200220062900db01370398032002200641e0016a29000037009d03200641cb016a2800002113200641cf016a2800002114200641d3016a2800002115200641d7016a280000211620024198066a200641a8076a41e00010ab051a200141086a200641e8016a20062f0106220041796a220341057410ab052117200141e8026a20064188086a200341e0006c10ab052118200141880b6a200641a40b6a2000417a6a220841027410ab052119200641063b0106200120033b010602402008450d00410021032019210003402000280200220420033b010420042001360200200041046a21002008200341016a2203470d000b0b200241b0036a20024198066a41e00010ab051a200220022d00ae0322033a009603200220022f01ac0322003b0194032002200229009d033700850320022002290398033703800320024194066a41026a220820033a0000200220003b01940620022002290380033703800120022002290085033700850120024198066a200241b0036a41e00010ab051a201041ffff037122004107490d0120172007417a6a22044105746a2017200741796a22034105746a220020012f010620036b41057410ac051a200041186a200229008d023700002000200d36000f2000200c36000b2000200b3600072000200a360003200041026a20122d00003a0000200020022f019c023b00002000200229038802370013200741e0006c20186a220041c07b6a200041e07a6a220020012f010620036b41e0006c10ac051a2000200241a0026a41e00010ab051a200120012f010641016a22003b01062007410274220a20196a416c6a201920044102746a2210200041ffff0371220720046b41027410ac051a2010200936020020072004490d022001200a6a41f00a6a2100034020002802002204200341016a22033b010420042001360200200041046a210020032007490d000c030b0b200641086a2200200741016a22044105746a200020074105746a2200200320076b220141057410ac051a2000200d36000f2000200c36000b2000200b3600072000200a360003200041026a2002419c026a41026a2d00003a0000200020022f019c023b00002000200229038802370013200041186a200229008d023700002006200741e0006c6a220041c8036a200041e8026a2200200141e0006c10ac051a2000200241a0026a41e00010ab051a2006200341016a22033b01062007410274200641880b6a22006a41086a200020044102746a2200200341ffff037120046b41027410ac051a20002009360200201041ffff037120062f010622034f0d07200920043b010420092006360200200420034f0d072003417f6a210120062004417f6a22034102746a41900b6a2100034020002802002204200341026a3b010420042006360200200041046a21002001200341016a2203470d000c080b0b200641086a2203200741016a22044105746a200320074105746a220320062f0106221020076b221941057410ac051a2003200d36000f2003200c36000b2003200b3600072003200a360003200341026a20122d00003a0000200320022f019c023b00002003200229038802370013200341186a200229008d02370000200641e8026a200741e0006c6a220341e0006a2003201941e0006c10ac051a2003200241a0026a41e00010ab051a2006201041016a22033b010620074102742219200641880b6a22106a41086a201020044102746a2210200341ffff037120046b41027410ac051a20102009360200200020062f010622044f0d00200620196a418c0b6a2103034020032802002200200741016a22073b010420002006360200200341046a210320042007470d000b0b20024184026a41026a220320082d00003a0000200220022f0194063b01840220022002290380013703f00120022002290085013700f50120024190016a20024198066a41e00010ab051a200f20032d00003a0000200220022f0184023b011c200220022903f001370308200220022900f50137000d200241206a20024190016a41e00010ab051a0240200628020022030d002013210a2016210d2015210c2014210b200121090c050b20062f010421102013210a2016210d2015210c2014210b20032106200121090c000b0b41880b41081033000b41b80b41081033000b200320044105746a220041286a200041086a2210200120046b41057410ac051a200041206a2006290300370000200041186a2007290300370000200041106a2008290300370000201020022903203700002003200441e0006c6a220041c8036a200041e8026a220e20032f010620046b41e0006c10ac051a200e200241a0026a41e00010ab051a200320032f010641016a3b01060c010b20024198066a410272410041b20b10aa051a41b80b102d2203450d0120034100360200200341046a20024198066a41b40b10ab051a2003200528020022003602880b200520033602002005200528020441016a360204200041003b010420002003360200200320032f010622044105746a220041086a20022f011c3b00002000410a6a2002411c6a41026a2d00003a0000200041176a200d360000200041136a200c3600002000410f6a200b3600002000410b6a200a3600002000411b6a2002290308370000200041206a200229000d3700002003200441e0006c6a41e8026a200241206a41e00010ab051a200341880b6a200441016a22004102746a2009360200200320003b0106200920003b0104200920033602000b200241d0116a2400200e0f0b41b80b41081033000bb00101037f230041306b2201240020012000109705024020012802004101470d000340024020012802242202450d002001280228450d00200210310b2001200010970520012802004101460d000b0b0240200028020422024198bfc000460d0020022802002103200210312003450d0020032802002100200310312000450d00024020002802002202450d000340200010312002210020022802002203210220030d000b0b200010310b200141306a24000bc31e03087f037e127f23004180076b22042400200441e0006a41186a200241186a290000370300200441e0006a41106a200241106a290000370300200441e0006a41086a200241086a29000037030020042002290000370360024002400240024002400240024002400240200128020022054198bfc000460d00200128020421060c010b41002106200441e8026a410041e00210aa051a200441c0016a410041840110aa051a41ec03102d2205450d01200541003b010620054100360200200541086a200441e8026a41e00210ab051a200541e8026a200441c0016a41840110ab051a20014100360204200120053602000b02400340200541086a2107200541066a210820052f0106220941057421024100210a0240024003402002450d01200441e0006a2007412010ad05220b450d02200241606a2102200a41016a210a200741206a2107200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200520094102746a41ec036a28020021050c010b0b200441e8026a41086a22022005200a410c6c6a220741f0026a220a2802003602002004200741e8026a22072902003703e80220072003290200370200200a200341086a280200360200200441c0016a41086a20022802002202360200200420042903e802220c3703c0012000410c6a20023602002000200c370204200041013602000c060b200441086a41186a220b200441e0006a41186a2202290300370300200441086a41106a200441e0006a41106a2207290300220c370300200441086a41086a200441e0006a41086a220a290300220d37030020042004290360220e3703082001200128020841016a3602082007200c370300200a200d3703002002200b2903003703002004200e370360200441d8026a41086a2206200341086a280200360200200420032902003703d802024020082f01002203410b490d00200441e8026a410041e00210aa051a200441c0016a410041840110aa051a41ec03102d220f450d02200f41003b0106200f4100360200200f41086a200441e8026a41e00210ab052107200f41e8026a200441c0016a41840110ab05210a200441e8026a41086a220b200541b8036a280200360200200420052900db013703a8012004200541e0016a2900003700ad01200420052902b0033703e802200420052f00c8013b01bc012004200541ca016a2d00003a00be01200541cb016a2800002110200541cf016a2800002111200541d3016a2800002112200541d7016a28000021132007200541e8016a20052f010641796a220241057410ab052107200a200541bc036a2002410c6c10ab05210a200541063b0106200f20023b0106200420042f01bc013b01a401200420042d00be013a00a601200420042903a8013703c001200420042900ad013700c501200441286a41086a200b280200360200200420042903e8023703280240024020094107490d00200941057420076a41c07e6a2007200941796a220b4105746a2207200241ffff0371200b6b41057410ac051a200741186a200441e0006a41186a290300370000200741106a200441e0006a41106a290300370000200741086a200441e0006a41086a290300370000200720042903603700002009410c6c200a6a220241b87f6a200241ac7f6a2202200f41066a22082f0100200b6b410c6c10ac051a200241086a200441d8026a41086a280200360200200220042903d8023702000c010b200541086a20094105746a220241206a200220082f010020096b41057410ac051a200241186a200441e0006a41186a290300370000200241106a200441e0006a41106a290300370000200241086a200441e0006a41086a29030037000020022004290360370000200541e8026a2009410c6c6a2202410c6a200220082f010020096b410c6c10ac051a200241086a200441d8026a41086a280200360200200220042903d8023702000b200820082f010041016a3b010020044198016a41026a220220042d00a6013a0000200441c8026a41086a2214200441286a41086a280200360200200420042f01a4013b019801200420042903c001370350200420042900c501370055200420042903283703c8022004413c6a41026a221520022d00003a0000200420042f0198013b013c2004200429005537002d20042004290350370328200441c0006a41086a22162014280200360200200420042903c80237034020052802002206450d0420052f01042103200441e8026a4102722117034020044194016a41026a221820152d00003a0000200420042f013c3b019401200420042903283703602004200429002d37006520044198016a41086a221920162802003602002004200429034037039801200341ffff0371210502400240024020062f01062202410b490d002017410041960410aa051a419c04102d220b450d07200b4100360200200b41046a200441e8026a41980410ab051a200420062f00c8013b01bc012004200641ca016a2d00003a00be012004200641db016a2900003703a8012004200641e0016a2900003700ad01200641cb016a280000211a200641cf016a280000211b200641d3016a280000211c200641d7016a280000211d200441e8026a41086a221e200641b8036a2802003602002004200641b0036a2902003703e802200b41086a200641e8016a20062f0106220741796a220241057410ab05211f200b41e8026a200641bc036a2002410c6c10ab052120200b41ec036a20064188046a2007417a6a220941027410ab052108200641063b0106200b20023b010602402009450d00410021022008210703402007280200220a20023b0104200a200b360200200741046a21072009200241016a2202470d000b0b200441d8026a41086a2202201e280200360200200420042d00be0122073a00a601200420042f01bc01220a3b01a401200420042903a8013703c001200420042900ad013700c501200420042903e8023703d802200441c4026a41026a220920073a00002004200a3b01c402200420042903c0013703e802200420042900c5013700ed0220142002280200360200200420042903d8023703c802200341ffff037122074107490d01201f2005417a6a220a4105746a201f200541796a22024105746a2207200b2f010620026b41057410ac051a200741186a20042900653700002007201336000f2007201236000b2007201136000720072010360003200741026a20182d00003a0000200720042f0194013b0000200720042903603700132005410c6c20206a220741b87f6a200741ac7f6a2207200b2f0106220320026b410c6c10ac051a200741086a20192802003602002007200429039801370200200b200341016a22073b01062005410274221020086a416c6a2008200a4102746a2203200741ffff03712205200a6b41027410ac051a2003200f3602002005200a490d02200b20106a41d4036a210703402007280200220a200241016a22023b0104200a200b360200200741046a210720022005490d000c030b0b200641086a2207200541016a220a4105746a200720054105746a2207200220056b41057410ac051a200741186a20042900653700002007201336000f2007201236000b2007201136000720072010360003200741026a20044194016a41026a2d00003a0000200720042f0194013b00002007200429036037001320062005410c6c6a220241f4026a200241e8026a220720062f0106220b20056b410c6c10ac051a200241f0026a20044198016a41086a28020036020020072004290398013702002006200b41016a22023b01062005410274200641ec036a22076a41086a2007200a4102746a2207200241ffff0371220b200a6b41027410ac051a2007200f360200200341ffff0371200b4f0d082006200a417f6a22024102746a41f0036a210703402007280200220a200241016a22023b0104200a2006360200200741046a21072002200b490d000c090b0b200641086a2202200541016a22034105746a200220054105746a220220062f010620056b41057410ac051a200241186a20042900653700002002201336000f2002201236000b2002201136000720022010360003200241026a20182d00003a0000200220042f0194013b000020022004290360370013200641e8026a2005410c6c6a2202410c6a200220062f0106220a20056b410c6c10ac051a200241086a201928020036020020022004290398013702002006200a41016a22023b010620054102742210200641ec036a220a6a41086a200a20034102746a2208200241ffff0371220a20036b41027410ac051a2008200f3602002007200a4f0d00200620106a41f0036a2102034020022802002207200541016a22053b010420072006360200200241046a2102200a2005470d000b0b20044190016a41026a220220092d00003a000020044180016a41086a22072014280200360200200420042f01c402220a3b019001200420042903e802370350200420042900ed02370055200420042903c80237038001201520022d00003a00002004200a3b013c2004200429005537002d200420042903503703282016200728020036020020042004290380013703400240200628020022020d00201a2110201d2113201c2112201b2111200b210f0c060b20062f01042103201a2110201d2113201c2112201b211120022106200b210f0c000b0b200520094105746a220b41286a200b41086a2201200320096b41057410ac051a200b41206a2002290300370000200b41186a2007290300370000200b41106a200a2903003700002001200429036037000020052009410c6c6a220241f4026a200241e8026a220720052f010620096b410c6c10ac051a200241f0026a2006280200360200200720042903d802370200200520052f010641016a3b01060c040b41ec0341041033000b41ec0341041033000b419c0441041033000b200441e8026a410272410041960410aa051a419c04102d2202450d0220024100360200200241046a200441e8026a41980410ab051a2002200128020022073602ec03200120023602002001200128020441016a360204200741003b010420072002360200200220022f0106220a4105746a220741086a20042f013c3b00002007410a6a2004413c6a41026a2d00003a0000200741176a2013360000200741136a20123600002007410f6a20113600002007410b6a20103600002007411b6a2004290328370000200741206a200429002d3700002002200a410c6c6a220741f0026a200441c0006a41086a280200360200200741e8026a2004290340370200200241ec036a200a41016a22074102746a200f360200200220073b0106200f20073b0104200f20023602000b200041003602000b20044180076a24000f0b419c0441041033000bbe0101037f410021042001410c6a4100360200200128020028021c21050240024002400240200141086a28020022064104490d00200128020421060c010b200641017422044104200441044b1b22044100480d020240024020060d002004102d21060c010b200128020420062004102f21060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441046a360200200620046a2005360000200041043602000f0b200441011033000b1034000bb60202057f027e230041106b220424000240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d024105210302402001410c6a2802002205200241146a2802002206490d00200520066b200241246a2802002205470d0020022802042107200128020421082004200128021029035042002005ad420010b00520012802182202420020022903082209427f200429030020042903084200521b7d220a200a20095622021b37030820020d000240024020012802142802082007200820066a2005100841026a220241024b0d0020020e03020001020b41b7a6c400412841dca7c40010a401000b410421030b20002003360200200441106a24000f0b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b16002000410036020020002001410c6a2802003602040bd80b05047f027e037f017e037f230041d0056b2204240002400240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802200d0220034103460d0320022802300d03200241246a2802002105200241346a280200210602400240024002400240200241146a2802002203450d0020022802042107200441306a200128021029034842002003ad420010b00520012802182202420020022903082208427f200429033020042903384200521b7d22092009200856220a1b37030841052102200a0d0e2003417f4c0d092003107a220a450d0a024020012802142802082007200a2003100641026a220741024b0d0020070e03040002040b41b7a6c400412841e0a6c40010a401000b4101210b410021074100210c0c010b200420033602fc042004200a3602f804200441c0006a200441f8046a108901200429024421082004280240210b200a1031200b450d0c2008a7210c200128021028025c2008422088a72207490d0b0b200b2007410041202007676b10d401024020074102490d00200b21022007210303402002200241206a220a412010ad05450d0c200a21022003417f6a220341024f0d000b0b200441206a200128021029034842002006ad220d420010b00520012802182202420020022903082208427f200429032020042903284200521b7d2209200920085622021b37030820020d0a2006417f4c0d060240024020060d004101210a02402001280214280208200541014100100641026a220241024b0d0020020e030d00020d0b41b7a6c400412841e0a6c40010a401000b024002402006107a220a450d00024020012802142802082005200a2006100641026a220241024b0d0020020e03020003020b41b7a6c400412841e0a6c40010a401000b200641011033000b200a10310c0b0b20042001280210220329032842002007ad420010b005200441106a20032903204200200d420010b00520012802182102427f2109024020042903184200520d0020042903084200520d002004290310220820042903007c220d2008540d00427f200d20032903307c22082008200d541b21090b200242002002290308220820097d220920092008561b37030820092008580d012006450d0a200a10310c0a0b200a10310c0a0b200441a8056a41086a22052001280200280218220341d8006a290000370300200441a8056a41106a2201200341e0006a290000370300200441a8056a41186a220e200341e8006a290000370300200420032900503703a80502402003413c6a2802002202200341386a280200470d00200241016a220f2002490d0820024101742210200f2010200f4b1b2210ad42a0057e2208422088a70d082008a7220f4100480d080240024020020d00200f102d21020c010b2003280234200241a0056c200f102f21020b2002450d0720032002360234200341386a2010360200200328023c21020b2003280234200241a0056c6a220241003a0000200220042f00cd053b0001200241053a00102002200736000c2002200c3600082002200b360004200220042903a805370011200241036a200441cd056a41026a2d00003a0000200241196a2005290300370000200241216a2001290300370000200241296a200e2903003700002002200a360034200220063600382002200636003c200220042f00a5053b0031200241336a200441a5056a41026a2d00003a0000200220042903f804370340200241c8006a200441f8046a41086a290300370300200241d0006a200441f8046a41106a290300370300200241d8006a200441f8046a41186a290300370300200241e0006a20044198056a290300370300200241e8006a200441c0006a41b80410ab051a2003200328023c41016a36023c410421020c090b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b1032000b200341011033000b200f41081033000b1034000b41052102200c450d00200b10310b20002002360200200441d0056a24000be72003167f037e067f230041c0026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d002000200110ea012003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200a200a417f6a220d2000200a4105746a2000200d4105746a412010ad05220e410048220f1b2210200a41016a2211200d200a200f1b220a200020114105746a2000200a4105746a412010ad0541004822111b220a2000200a4105746a200020104105746a412010ad0522104100481b210a200c200c417f6a220d2000200c4105746a2000200d4105746a412010ad05221241004822131b2214200c4101722215200d200c20131b220c200020154105746a2000200c4105746a412010ad0522134100481b220c2000200c4105746a200020144105746a412010ad0522144100481b210c200b200b417f6a220d2000200b4105746a2000200d4105746a412010ad05221541004822161b2217200b41016a2218200d200b20161b220b200020184105746a2000200b4105746a412010ad05220d4100481b220b2000200b4105746a200020174105746a412010ad0522164100481b210b41024101200f1b200e411f7620111b2010411f766a2012411f766a2013411f766a2014411f766a2015411f766a200d411f766a2016411f766a210d0b2000200c4105746a2000200a4105746a412010ad05220f411f76200d6a2000200b4105746a2000200a200c200f410048220f1b220e4105746a412010ad052210411f766a210d2000200b200e20104100481b220b4105746a2000200c200a200f1b22194105746a412010ad05417f4c0d01200b21190c020b2000200110eb010c0f0b200d41016a220d410c490d0002402001410176220b450d00200020014105746a41606a210a2000210c0340200441206a41186a220d200c41186a220f290000370300200441206a41106a220e200c41106a2210290000370300200441206a41086a2211200c41086a22122900003703002004200c290000370320200a41086a2213290000211a200a41106a2214290000211b200a41186a2215290000211c200c200a290000370000200f201c3700002010201b3700002012201a3700002015200d2903003700002014200e29030037000020132011290300370000200a2004290320370000200a41606a210a200c41206a210c200b417f6a220b0d000b0b20012019417f736a21194101210a0c010b200d45210a0b0240200a452009724101710d002000200110ec010d0d0b2002450d02201920014f0d0102402002200020194105746a220a412010ad0541004e0d0020002108200121070c040b200441206a41186a2212200041186a220e290000370300200441206a41106a2213200041106a2210290000370300200441206a41086a2214200041086a221129000037030020042000290000370320200a41086a220c290000211a200a41106a220b290000211b200a41186a220d290000211c2000200a290000370000200e201c3700002010201b3700002011201a370000200d2012290300370000200b2013290300370000200c2014290300370000200a2004290320370000200441c0016a41186a2217200e290000370300200441c0016a41106a22182010290000370300200441c0016a41086a22192011290000370300200420002900003703c001200041606a2115200041206a21164100210c2001210b03400240200c200b417f6a220d4f0d002016200c4105746a210a0340200441c0016a200a412010ad05417f4c0d01200a41206a210a200d200c41016a220c470d000b200d210c0b2015200b4105746a210a02400340200c200b417f6a220b4f0d01200441c0016a200a412010ad05210d200a41606a220f210a200d4100480d000b20122016200c4105746a220a41186a220d2900003703002013200a41106a221d2900003703002014200a41086a22062900003703002004200a290000370320200f41286a221e290000211a200f41306a221f290000211b200f41386a2220290000211c200a200f41206a220f290000370000200d201c370000201d201b3700002006201a37000020202012290300370000201f2013290300370000201e2014290300370000200f2004290320370000200c41016a210c0c010b0b200020042903c001370000200e2017290300370000201020182903003700002011201929030037000002402001200c41016a220a490d002000200a4105746a21002001200a6b220141154f0d010c0c0b0b200a2001107b000b41c4b1c40020192001104b000b2007450d010b201920074f0d01200441206a41186a2216200841186a221e290000370300200441206a41106a2217200841106a221f290000370300200441206a41086a2218200841086a222029000037030020042008290000370320200820194105746a220a41086a220c290000211a200a41106a220b290000211b200a41186a220d290000211c2008200a290000370000201e201c370000201f201b3700002020201a370000200d2016290300370000200b2017290300370000200c2018290300370000200a2004290320370000200441186a2205201e290000370300200441106a2209201f290000370300200441086a2221202029000037030020042008290000370300200841206a21014100211d2007417f6a220d450d022001210a0340200a2004412010ad0541004e0d03200a41206a210a200d201d41016a221d470d000b200d211d0c020b41f8b0c40041004100104b000b4188b1c40020192007104b000b200820074105746a210c200d210b02400340200c2100200b220a201d4d22060d01200a417f6a210b200041606a220c2004412010ad05417f4a0d000b0b0240200a201d490d00200d200a490d0241800121144100210f410021124100210d4100211141800121152001201d4105746a2222210103400240200020016b220a419fc0004b22190d00200a410576220a41807f6a200a2012200f492011200d49220c72220b1b210a0240200b450d002015200a200c1b2115200a2014200c1b21140c010b200a200a41017622156b21140b02402011200d470d00024020150d00200441c0006a220d21110c010b4100210a200441c0006a2211210d2001210c0340200d200a3a0000200d200c2004412010ad05417f73411f766a210d200c41206a210c2015200a41016a220a470d000b0b02402012200f470d00024020140d00200441c0016a220f21120c010b200041606a210a4100210c200441c0016a2212210f0340200f200c3a0000200f200a2004412010ad05411f766a210f200a41606a210a2014200c41016a220c470d000b0b0240200f20126b220a200d20116b220c200c200a4b1b2213450d002016200120112d00004105746a220a41186a2900003703002017200a41106a2900003703002018200a41086a2900003703002004200a290000370320200120112d00004105746a220a200020122d0000417f734105746a220c290000370000200a41186a200c41186a290000370000200a41106a200c41106a290000370000200a41086a200c41086a290000370000024020134101460d004100210a034020002012200a6a220e2d0000417f734105746a220c20012011200a6a41016a22102d00004105746a220b290000370000200c41186a200b41186a290000370000200c41106a200b41106a290000370000200c41086a200b41086a290000370000200120102d00004105746a220c2000200e41016a2d0000417f734105746a220b290000370000200c41186a200b41186a290000370000200c41106a200b41106a290000370000200c41086a200b41086a290000370000200a41026a210c200a41016a220b210a200c2013490d000b2012200b6a21122011200b6a21110b200020122d0000417f734105746a220a2004290320370000200a41186a2016290300370000200a41106a2017290300370000200a41086a2018290300370000201241016a2112201141016a21110b200020144105746b20002012200f461b2100200120154105746a20012011200d461b210120190d000b024002402011200d4f0d002000210a034020162001200d417f6a220d2d00004105746a220c41186a220b2900003703002017200c41106a220f2900003703002018200c41086a22002900003703002004200c290000370320200a41606a220a41086a220e290000211a200a41106a2210290000211b200a41186a2212290000211c200c200a290000370000200b201c370000200f201b3700002000201a3700002012201629030037000020102017290300370000200e2018290300370000200a20042903203700002011200d490d000c020b0b2001210a2012200f4f0d000340200f417f6a220f2d0000210c2016200a41186a220b2900003703002017200a41106a220d2900003703002018200a41086a22012900003703002004200a2900003703202000200c417f734105746a220c41086a220e290000211a200c41106a2210290000211b200c41186a2211290000211c200a200c290000370000200b201c370000200d201b3700002001201a3700002011201629030037000020102017290300370000200e2018290300370000200c2004290320370000200a41206a210a2012200f490d000b0b20082004290300370000201e2005290300370000201f2009290300370000202020212903003700002007200a20226b410576201d6a22014d0d032016201e2900003703002017201f2900003703002018202029000037030020042008290000370320200820014105746a220a41086a220c290000211a200a41106a220b290000211b200a41186a220d290000211c2008200a290000370000201e201c370000201f201b3700002020201a370000200d2016290300370000200b2017290300370000200c2018290300370000200a2004290320370000200720016b220c450d04200c20012001200c4b1b210b2007410376210d200a41206a2100024002402001200c417f6a220c490d002000200c200a200310d401200821000c010b200820012002200310d401200a2102200c21010b200b200d4f2105200141154f0d010c050b0b201d200a107b000b200a200d10b601000b4188b1c40020012007104b000b4198b1c400411c41b4b1c40010a401000b20014102490d00200041606a210f4101210b0340200b410574210a200b417f6a210c200b41016a210b02402000200a6a220a2000200c4105746a220d412010ad05417f4a0d00200441c0016a41186a220e200a41186a2210290000370300200441c0016a41106a2211200a41106a2212290000370300200441c0016a41086a2213200a41086a22142900003703002004200a2900003703c001200a200d2900003700002014200d41086a2900003700002012200d41106a2900003700002010200d41186a2900003700004100210d0240200c450d00200f210a03400240200441c0016a200a412010ad054100480d00200c210d0c020b200a41206a200a290000370000200a41386a200a41186a290000370000200a41306a200a41106a290000370000200a41286a200a41086a290000370000200a41606a210a200c417f6a220c0d000b0b2000200d4105746a220a20042903c001370000200a41186a200e290300370000200a41106a2011290300370000200a41086a20132903003700000b200f41206a210f200b2001470d000b0b200441c0026a24000bc70803027f047e027f230041a0146b2204240002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200441286a20012802102903484200200241146a2802002202ad420010b00520012802182203420020032903082206427f200429032820042903304200521b7d2207200720065622031b3703080240024020030d002002417f4c0d0402400240024020020d004101210302402001280214280208200541014100100641026a220541024b0d0020050e03040002040b41b7a6c400412841e0a6c40010a401000b02402002107a2203450d0002402001280214280208200520032002100641026a220541024b0d0020050e03030002030b41b7a6c400412841e0a6c40010a401000b200241011033000b2004200236023c20042003360238200441a00f6a200441386a108801024020042802a00f22054113460d00200441a80a6a200441a00f6a41047241f40410ab051a02402002450d00200310310b200441b0056a200441a80a6a41f40410ab051a20042005360238200441386a410472200441b0056a41f40410ab051a200441003602a80f200442013703a00f200441386a200441a00f6a10ad0120042802a80f2103024020042802a40f450d0020042802a00f10310b200128021822022903102206200241186a2903002207844200510d07200441186a2003ad42004290ce00420010b005200441086a2004290318220842e8077c2209200441186a41086a2903002009200854ad7c2006200710b10520024200200229030822062004290308427f200441086a41086a290300501b7d220720072006561b37030820072006580d03200441386a10d6010c020b2002450d010b200310310b410521020c070b20012802002102200441a80a6a200441386a41f80410ab051a200441b0056a41086a2002280218220241d8006a290000370300200441c0056a2203200241e0006a290000370300200441c8056a2205200241e8006a290000370300200420022900503703b005200441a70f6a200441a80a6a41f80410ab051a02402002413c6a2802002201200241386a280200470d00200141016a220a2001490d062001410174220b200a200b200a4b1b220aad42a0057e2206422088a70d062006a7220b4100480d060240024020010d00200b102d21010c010b2002280234200141a0056c200b102f21010b2001450d0520022001360234200241386a200a360200200228023c21010b2002280234200141a0056c6a220141013a0000200120042903b005370001200141096a200441b8056a290300370000200141116a2003290300370000200141196a2005290300370000200141216a200441a00f6a41ff0410ab051a2002200228023c41016a36023c410421020c060b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b1032000b41c098c100411941e097c10010a401000b200b41081033000b1034000b20002002360200200441a0146a24000b9b0d01057f024002402000280200220141114b0d00024002400240024002400240024002400240024020010e120b000b0b0b0b0b0102030b0b0405060708090b0b0240200041086a280200220141064b0d00024002400240024020010e070f0f000f0102030f0b200041106a280200450d0e2000410c6a28020010310f0b200041106a280200450d0d2000410c6a28020010310f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141186a2101200241686a22020d000b0b200041106a280200450d0c200028020c10310f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b200041106a280200450d0b200028020c10310f0b200041106a280200450d0a2000410c6a28020010310f0b02402000410c6a2802002201450d0020002802042203200141f0006c6a2104034002402003410c6a2802002202450d0020032802042101200241246c210203400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012002415c6a22020d000b0b200341f0006a21010240200341086a280200450d00200328020410310b2001210320012004470d000b0b200041086a280200450d09200028020410310f0b200041086a280200450d08200028020410310f0b02402000410c6a280200450d00200041086a28020010310b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b200041186a280200450d07200028021410310f0b200041086a280200450d06200028020410310f0b200041086a2d000041796a220141084b0d0502400240024020010e09000108080808080802000b200041106a280200450d072000410c6a28020010310f0b200041106a280200450d062000410c6a28020010310f0b200041106a280200450d052000410c6a28020010310f0b200041086a2d0000417e6a220141024b0d0402400240024020010e03000102000b200041106a280200450d062000410c6a28020010310f0b200041346a280200450d05200041306a28020010310f0b200041306a280200450d042000412c6a28020010310f0b02402000280204220141024b0d00024020010e03050005050b200041086a220128020010d601200128020010310f0b2000412c6a220128020010d601200128020010310f0b02402000410c6a2802002202450d0020002802042101200241f8046c2102034020011030200141f8046a2101200241887b6a22020d000b0b200041086a280200450d02200028020410310f0b200041086a2d0000417f6a220141034b0d01024002400240024020010e0400010203000b024020004184016a280200450d0020004180016a28020010310b024020004194016a2802002202450d002000418c016a28020021012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b20004190016a280200450d04200028028c0110310f0b024020004184016a280200450d0020004180016a28020010310b024020004194016a2802002202450d002000418c016a28020021012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b20004190016a280200450d03200028028c0110310f0b2000411c6a280200450d02200041186a28020010310c020b024020004184016a280200450d0020004180016a28020010310b024020004194016a2802002202450d002000418c016a28020021012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b20004190016a280200450d01200028028c0110310f0b0240200041086a280200220141024b0d000240024020010e03030001030b2000411c6a280200450d02200041186a28020010310f0b2000411c6a280200450d01200041186a28020010310f0b2000411c6a280200450d00200041186a28020010310f0b0b800202037f027e230041106b22042400024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200420012802102903484200200241146a2802002206ad420010b00520012802182202420020022903082207427f200429030020042903084200521b7d2208200820075622031b37030841052102024020030d00200141046a2006107c024002402001280214280208200520012802042001410c6a280200100641026a220141024b0d0020010e03020001020b41b7a6c400412841e0a6c40010a401000b410421020b20002002360200200441106a24000f0b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b5201027e024002402003450d002002280200450d010b41b1cbc00041f40310bf01000b2001280218220342002003290308220420023502047d2205200520045622021b37030820004105410420021b3602000bcc0d06017f017e057f027e037f027e230041d0016b2204240002400240024002400240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120034102460d0220022802204101470d0220034103460d0320022802300d0320034104460d0420022802400d0420034105460d0520022802500d0520034106460d0620022802600d0620022802042103200241286a2903002105200241346a2802002106200241c4006a2802002107200241d4006a2802002108200241e4006a2802002109200441286a20012802102903484200200241146a280200220aad420010b0052001280218220242002002290308220b427f200429032820042903304200521b7d220c200c200b5622021b370308024020020d00200a417f4c0d0802400240024002400240200a0d004101210d02402001280214280208200341014100100641026a220241024b0d00200141146a210e20020e03060002060b41b7a6c400412841e0a6c40010a401000b0240200a107a220d450d00024020012802142802082003200d200a100641026a220241024b0d00200141146a210e20020e03030002030b41b7a6c400412841e0a6c40010a401000b200a41011033000b41002102200441003a00980102400340200a2002460d01200441f8006a20026a200d20026a2d00003a00002004200241016a22033a0098012003210220034120470d000b200441a0016a41186a2202200441f8006a41186a290300370300200441a0016a41106a2203200441f8006a41106a290300370300200441a0016a41086a220f200441f8006a41086a290300370300200420042903783703a0010240200a450d00200d10310b200441386a41086a200f290300370300200441386a41106a2003290300370300200441386a41186a2002290300370300200420042903a001370338200441186a200128021029034842002007ad420010b0052001280218220242002002290308220b427f200429031820042903204200521b7d220c200c200b5622021b37030820020d042007417f4c0d0c20070d03200e280200280208200641014100100641026a220241024b0d0220020e03040204040b0240200241ff0171450d00200441003a0098010b200a450d030b200d10310c020b41b7a6c400412841e0a6c40010a401000b0240024002402007107a2202450d000240200e280200280208200620022007100641026a220341024b0d0020030e03030002030b41b7a6c400412841e0a6c40010a401000b200741011033000b2007410f4d0d00200241086a29000021102002290000211120021031200441086a200128021029034842002009ad420010b0052001280218220242002002290308220b427f200429030820042903104200521b7d220c200c200b5622021b37030820020d01200141046a22032009107c024002402001280214280208200820012802042001410c6a280200100641026a220241024b0d0020020e03030001030b41b7a6c400412841e0a6c40010a401000b200128020c21072001410036020c200141086a280200210a2001280204210d2001420137020420012802182202290308220c210b024002402005500d002005210b200c2005540d010b2002200c200b7d3703082002290310210c200441a0016a41186a200241186a2903003703002004200b3703a8012004200b3703a0012004200c3703b00120012802002802182106200441f8006a41186a200441386a41186a290300370300200441f8006a41106a200441386a41106a290300370300200441f8006a41086a200441386a41086a29030037030020042004290338370378200420073602c8012004200a3602c4012004200d3602c001200441d8006a2006200441f8006a20112010200441a0016a200441c0016a10da01410121090240024020042802584101460d00200441d8006a410472210d200441d8006a41106a2d00002107200441e4006a2802002106200441e0006a280200210a410021090c010b200441e4006a210d200441ec006a2802002106200441d8006a41106a280200210a410021070b200d280200210d200220042903a80120022903087c370308200141086a2802002102024020090d0002402002450d00200328020010310b2003200d3602000c0c0b2002450d00200328020010310b2003200d3602004180022107410021060c0a0b200210310b200041053602000c090b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b1032000b2001200636020c200141086a200a36020020004100360200200020073602040b200441d0016a24000b872a020c7f037e230022072108200741800f6b41607122072400200720043703382007200337033020072005360244024002400240024002402001280230200128024022092802b801460d002005420020052903082203200941386a2903007d2204200420035622091b37030820090d0120074180046a2002410041011059200741a4046a280200210a200741a0046a280200210b20072d008804220941037122054103460d0220050e03030203030b20004189aec10036020420004101360200200041086a41293602002000410c6a2006290200370200200041146a200641086a2802003602000c030b200041b2aec10036020420004101360200200041086a41233602002000410c6a2006290200370200200041146a200641086a280200360200200824000f0b200041d5aec10036020420004101360200200041086a41193602002000410c6a2006290200370200200041146a200641086a28020036020020090d01200a450d01200b1031200824000f0b200741a8046a2802002105200741c8006a41186a220c200141e8006a290000370300200741c8006a41106a220d200141e0006a290000370300200741c8006a41086a220e200141d8006a290000370300200720012900503703484100210f4100211002400240024002400240024002400240024002400240024002400240024020090d002005417f4c0d010240024020050d00410121100c010b2005102d2210450d032010200b200510ab051a0b200a450d00200b10310b200741a4016a410036020020074194016a41dcacc100360200200741e8006a41206a420037030020074184016a4198bfc000360200200741e8006a41146a2005360200200741e8006a41106a2005360200200741e8006a41d8006a200241086a290000370300200741e8006a41e0006a200241106a290000370300200741e8006a41e8006a200241186a29000037030020072001360270200741e8006a41286a200141186a22113602002007420837029c01200741003602800120072010360274200720022900003703b801200720012802483602b001200720012903403703a8012007200128023041016a36029801200129030021032007200128024c3602b40120072003370368200741d8016a41206a200e290300370300200741d8016a41286a200d29030037030020074188026a200c290300370300200741d8016a41146a200641086a280200360200200720023602e001200720072903483703f001200720062902003702e4012007200741c4006a3602dc012007200741306a3602d8010240024020072903302203200741306a41086a290300220484500d00200741286a20072802444100200741f0016a200220032004200741e8006a10b402200728022822060d01200728028001210f20072802e00121020b200f41016a220d41004c0d03200741d8016a41186a210e200741e4016a210f2007200d36028001200741e8006a41206a280200210b20074184016a2212210602400240024003402006280200220a41086a2105200a2f0106220c4105742106410021090240024003402006450d0120022005412010ad052210450d02200641606a2106200941016a2109200541206a21052010417f4a0d000b2009417f6a210c0b200b450d02200b417f6a210b200a200c4102746a41880b6a21060c010b0b200a200941e0006c6a220541e8026a210602400240200541c5036a2d00000d0020074180046a41086a2209200641c5006a29000037030020074180046a41106a2210200641cd006a29000037030020074180046a41186a220a200641d5006a29000037030020072006413d6a290000370380044102210520062d003c4101470d01200741a00c6a41186a200a290300370300200741a00c6a41106a2010290300370300200741a00c6a41086a200929030037030020072007290380043703a00c410121050c010b200741a80c6a200641c5006a290000370300200741b00c6a200641cd006a290000370300200741b80c6a200641d5006a29000037030020072006413d6a2900003703a00c20062d003c21050b200541ff01714102470d010b20074190026a2007280290012002200728029401280210110500200728028001210d20072d00900221050c010b20074199026a200741a80c6a290300370000200741a1026a200741b00c6a290300370000200741a9026a200741b80c6a290300370000200720053a009002200720072903a00c370091020b2007200d417f6a360280014101210b0240200541ff01714101470d00200741b8026a41186a200741a9026a290000370300200741b8026a41106a200741a1026a290000370300200741b8026a41086a20074199026a29000037030020072007290091023703b80220074180046a200741b8026a20072802b001280200108f0102402007280280044101470d0020072902e4012203422088a7210520074180046a41086a28020021092007280284042106200741ec016a28020021102003a721020c100b200741a00c6a41186a220520074180046a410472220641186a2802002209360200200741d8026a41106a200641086a290200370300200741d8026a41186a200641106a290200370300200741f8026a2009360200200741043602dc02200741cfadc4003602d802200720062902003703e00220072802ac0121062005200e41186a2900002203370300200741a00c6a41106a200e41106a2900002204370300200741a00c6a41086a2205200e41086a2900002213370300200741a8046a2013370300200741b0046a2004370300200741b8046a20033703002007200e29000022033703a00c200720033703a00420072802d801220941086a29030021032007200741e8006a36029804200929030021042007290368211320072802b4012109200720033703880420072004370380042007200936029c0420072013370390042005200f41086a2802003602002007200f2902003703a00c200741e0036a2006200741d8026a20074180046a200741a00c6a20072802dc0128020010b502200741ec036a2902002103200741e0036a41086a280200210c20072802e403210b024020072802e0034101470d002003422088a72105200741f4036a28020021102003a72102200c2109200b21060c0f0b20072802800141016a220f41004c0d0520072802e00121022007200f36028001200728028801210d201221060240024003402006280200220a41086a2105200a2f0106220e4105742106410021090240024003402006450d0120022005412010ad052210450d02200641606a2106200941016a2109200541206a21052010417f4a0d000b2009417f6a210e0b200d450d02200d417f6a210d200a200e4102746a41880b6a21060c010b0b200a200941e0006c6a220641c5036a310000200641e8026a290300220420045022051ba7450d004200200641f8026a29030020051b21044200200641f0026a29030020051b21130c010b200741186a200728029001200220072802940128021c110500200741206a290300210420072903182113200728028001210f0b2007200f417f6a221036028001201320072802a801220629037854200420064180016a29030022135420042013511b0d060c070b4100210c420021030240200741e8016a280200450d0020072802e40110310b420021040c070b200728022c210920072902e4012203422088a721052003a72102200741ec016a28020021100c0d0b1032000b200541011033000b41aeddc400411820074180046a41d8ddc4001038000b41aeddc400411820074180046a41d8ddc4001038000b20072802702206450d020240024020072802e0012205200641d0006a2209460d0020092005412010ad05450d00034020062802082206450d022005200641d0006a2209460d0120092005412010ad050d000b0b2003a7211041eeaec100210641372109200c2105200b21020c080b20100d032007417f36028001200741003a00bc03200742003702b403200741013a009d0320074198bfc0003602b003200741e0036a41186a200541186a290000370300200741e0036a41106a200541106a290000370300200741e0036a41086a200541086a290000370300200720052900003703e0030240024020072802840122104198bfc000460d00200728028801210a0c010b200741a00c6a410041e00210aa051a20074180046a410041a00810aa051a41880b102d2210450d054100210a201041003b010620104100360200201041086a200741a00c6a41e00210ab051a201041e8026a20074180046a41a00810ab051a200741003602880120072010360284010b02400240034020102f0106220d4105742102410021064100210502400240034020022006460d01200741e0036a201020066a41086a412010ad052209450d02200641206a2106200541016a21052009417f4a0d000b2005417f6a210d0b200a450d02200a417f6a210a2010200d4102746a41880b6a28020021100c010b0b2010200541e0006c6a22064190036a20072903a80337030020064188036a20072903a003370300200641c0036a200729039803370000200641b8036a200729039003370000200641b0036a200729038803370000200641a8036a20072903800337000020064180036a4200370300200641e8026a2205290300211320054200370300200641a0036a22052802002102200520072903b80337030020064198036a22062903002104200620072903b0033703002004a721062004422088a721050c010b200741c0036a41186a200741e0036a41186a2903002204370300200741c0036a41106a200741e0036a41106a2903002213370300200741c0036a41086a200741e0036a41086a2903002214370300200720072903e00322153703c003200741bc0c6a2014370200200741a00c6a41246a2013370200200741cc0c6a20043702002007200741e8006a41246a3602b00c2007200d3602ac0c200720123602a80c200720103602a40c200741003602a00c200720153702b40c20074180046a41186a42003703002007420037038004200741b8046a20072903b803370300200741b0046a20072903b003370300200741a8046a20072903a803370300200741a0046a20072903a003370300200741d8046a200729039803370300200741d0046a200729039003370300200741c8046a200729038803370300200741c0046a200729038003370300200741a00c6a20074180046a10cd011a420221130b024020134202510d000240024020050d00200621090c010b2005211020062109034020092802ec0321092010417f6a22100d000b0340200620062f01064102746a41ec036a28020021062005417f6a22050d000b0b2007419c046a20062f010636020020074198046a410036020020074194046a2006360200200720023602a004200741003602900420074200370388042007200936028404200741003602800420074180046a10ce010b200720072802800141016a360280010b0240200741f0026a280200450d00200741ec026a28020010310b200342ffffffff0f83210420034280808080708321030b20072802a401210520072802a001210d200728029c01210a200728028c01210e20072802880121102007280284012106024020072802742209450d002007280278450d00200910310b200420038421040240024020034280808080f01f8350450d002007200e3602880420072010360284042007200636028004201120074180046a10b6022007200d360284042007200a360280042007200a200541a0056c22056a220236028c0402400240200141386a28020022092001413c6a28020022066b200541a0056d2210490d00200128023421090c010b200620106a220d2006490d0720094101742206200d2006200d4b1b2206ad42a0057e2203422088a70d072003a7220d4100480d070240024020090d00200d102d21090c010b2001280234200941a0056c200d102f21090b2009450d0620012009360234200141386a20063602002001413c6a28020021060b2009200641a0056c6a200a200510ab051a2001413c6a2206200628020020106a360200200720023602880420074180046a10782000410c6a2004370200200041086a200c3602002000200b3602040c010b2000200b3602042000410c6a2004370200200041086a200c36020002402005450d00200541a0056c210141002105034002400240200a20056a22092d0000220241014b0d000240024020020e020001000b0240200941086a280200450d00200941046a28020010310b200941106a2d00004105490d02200941386a280200450d02200941346a28020010310c020b200941286a10300c010b200941e8006a280200450d00200941e4006a28020010310b2001200541a0056a2205470d000b0b0240200d450d00200a10310b0240024020100d00200621050c010b2010210920062105034020052802880b21052009417f6a22090d000b0340200620062f01064102746a41880b6a28020021062010417f6a22100d000b0b2007419c046a20062f010636020020074198046a410036020020074194046a20063602002007200e3602a004200741003602900420074200370388042007200536028404200741003602800420074180046a1090020b20004100360200200824000f0b41a5afc100413210bf01000b419eddc400411020074180046a41c8ddc4001038000b41880b41081033000b200d41081033000b1034000b200741f0026a280200450d00200741ec026a28020010310b2000200636020420004101360200200041146a2010360200200041086a20093602002000410c6a2005ad4220862002ad84370200024020072802742206450d002007280278450d00200610310b200741e8006a411c6a2802002106200728028c0121000240024020072802880122050d00200621090c010b2005211020062109034020092802880b21092010417f6a22100d000b0340200620062f01064102746a41880b6a28020021062005417f6a22050d000b0b20074180046a411c6a20062f01063602004100210520074198046a410036020020074194046a2006360200200720003602a004200741003602900420074200370388042007200936028404200741003602800420074180046a109002024020072802a4012206450d00200728029c012110200641a0056c2100034002400240201020056a22062d0000220941014b0d000240024020090e020001000b0240200641086a280200450d00200641046a28020010310b200641106a2d00004105490d02200641386a280200450d02200641346a28020010310c020b200641286a10300c010b200641e8006a280200450d00200641e4006a28020010310b2000200541a0056a2205470d000b0b20072802a001450d00200728029c011031200824000f0b200824000bd50102027f027e410021042001410c6a41003602002001280200220541086a2903002106200529030021070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102d21050c010b200128020420052004102f21050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b200441011033000b1034000bc20103017f017e017f410021042001410c6a4100360200200128020029031021050240024002400240200141086a28020022064108490d00200128020421060c010b200641017422044108200441084b1b22044100480d020240024020060d002004102d21060c010b200128020420062004102f21060b2006450d0120012006360204200141086a20043602002001410c6a28020021040b2001410c6a200441086a360200200620046a2005370000200041043602000f0b200441011033000b1034000bdc0102027f027e410021042001410c6a4100360200200128020028021828024022054180016a2903002106200529037821070240024002400240200141086a28020022054110490d00200128020421050c010b200541017422044110200441104b1b22044100480d020240024020050d002004102d21050c010b200128020420052004102f21050b2005450d0120012005360204200141086a20043602002001410c6a28020021040b2001410c6a200441106a360200200520046a2201200637000820012007370000200041043602000f0b200441011033000b1034000ba00a03027f027e057f230041e00b6b220424000240024002400240024002402003450d0020022802000d0020034101460d0120022802100d0120022802042105200420012802102903484200200241146a2802002202ad420010b00520012802182203420020032903082206427f200429030020042903084200521b7d2207200720065622081b3703084105210320080d052002417f4c0d02024020020d0002402001280214280208200541014100100641026a220241024b0d0020020e03070007070b41b7a6c400412841e0a6c40010a401000b02400240024002402002107a2208450d0002402001280214280208200520082002100641026a220541024b0d0020050e03030002030b41b7a6c400412841e0a6c40010a401000b200241011033000b2002410f4b0d010b200810310c060b200841086a29000021062008290000210720081031200128020028021822092802180d032009417f360218200441c8006a200941e8006a290000370300200441c0006a200941e0006a290000370300200441306a41086a200941d8006a29000037030020042009290050370330024002402009411c6a220a28020022084198bfc000460d00200941206a280200210b0c010b4100210b20044180096a410041e00210aa051a200441e0006a410041a00810aa051a41880b102d2208450d05200841003b010620084100360200200841086a20044180096a41e00210ab051a200841e8026a200441e0006a41a00810ab051a200941206a41003602002009200836021c0b02400240034020082f0106220c4105742105410021024100210102400240034020052002460d01200441306a200820026a41086a412010ad052203450d02200241206a2102200141016a21012003417f4a0d000b2001417f6a210c0b200b450d02200b417f6a210b2008200c4102746a41880b6a28020021080c010b0b200941246a2103410121020c010b200441106a41186a200441306a41186a290300370300200441106a41106a200441306a41106a290300370300200441106a41086a200441306a41086a29030037030020042004290330370310200941246a21034100210b200c2101410021020b0240024020020d002004419c096a200441106a41086a290300370200200441a4096a200441106a41106a290300370200200441ac096a200441106a41186a29030037020020042003360290092004200136028c092004200a3602880920042008360284092004200b36028009200420042903103702940920044180016a200429035037030020044188016a200441d0006a41086a29030037030020044194016a4200370200200442003703782004420037036020044198bfc00036029001200441003a009c012004419d016a2004290030370000200441a5016a200441306a41086a290000370000200441ad016a200441306a41106a290000370000200441b5016a200441306a41186a290000370000200441003a00bd0120044180096a200441e0006a10cd0121020c010b200441f8006a4200370300200441f4006a4198bfc0003602002004410036028001200441003602702004420037036820044198bfc000360264200441003602602008200141e0006c6a41e8026a2102200441e0006a10ce010b200241286a2006370300200241206a2007370300200242013703182009200928021841016a360218410421030c050b41b1cbc00041f40310bf01000b41b1cbc00041f40310bf01000b1032000b419eddc4004110200441e0006a41c8ddc4001038000b41880b41081033000b20002003360200200441e00b6a24000ba30203037f027e027f230041206b220424002001410c6a22054100360200200441086a2001280200280218220641186a200641d0006a10e001200441086a41106a290300210720042802082106200429031021080240024002400240200141086a2802002209200528020022056b4110490d00200128020421090c010b200541106a220a2005490d0220094101742205200a2005200a4b1b22054100480d020240024020090d002005102d21090c010b200128020420092005102f21090b2009450d0120012009360204200141086a20053602002001410c6a28020021050b2001410c6a200541106a360200200920056a22012007427f20061b37000820012008427f20061b37000020004104360200200441206a24000f0b200541011033000b1034000bfc0202097f037e230041206b220324000240200128020041016a220441004c0d0020012004360200200141046a2105200141086a28020021060240024003402005280200220741086a210820072f0106220941057421054100210a0240024003402005450d0120022008412010ad05220b450d02200541606a2105200a41016a210a200841206a2108200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200720094102746a41880b6a21050c010b0b2007200a41e0006c6a22054190036a290300210c20054188036a290300210d20054180036a290300210e0240200541c5036a2d00000d00200ea721054201210e2005450d010c020b200e4202520d010b200320012802102002200141146a280200280214110500200341106a290300210c200128020021042003290308210d2003290300210e0b20012004417f6a360200200041106a200c3703002000200d3703082000200e370300200341206a24000f0b41aeddc4004118200341186a41d8ddc4001038000b3400200041e284c40036020420004100360200200041146a4102360200200041106a41dcd1c000360200200041086a42073702000b02000b960302057f017e230041e0006b22022400024002400240410f102d2203450d00200341076a41002900d2d140370000200341002900cbd1403700002003410f411e102f2204450d012004200136000f200241386a41186a22012004ad4280808080b002841000220341186a290000370300200241386a41106a2205200341106a290000370300200241386a41086a2206200341086a2900003703002002200329000037033820031031200241186a2001290300370300200241106a2005290300370300200241086a20062903003703002002200229033837030020041031200241206a2002ad4280808080800484100210410240024020022802202203450d00200228022421042002200241206a41086a28020036023420022003360230200241386a200241306a10890120022802382201450d04200229023c210702402004450d00200310310b20002007370204200020013602000c010b20004100360208200042013702000b200241e0006a24000f0b410f41011033000b411e41011033000b41e9bcc0004133200241d8006a419cbdc0001038000be01104037f027e077f037e230041e0056b22012400200141186a41086a22024195d4c000ad4280808080b002841001220341086a2900003703002001200329000037031820031031200141b0056a41086a2002290300370300200120012903183703b005200141186a200141b0056aad2204428080808080028422051002104102400240024002400240024002400240024002400240024002400240200128021822060d00410021030c010b20022802004104490d0120062800002103200128021c450d00200610310b20002d000021064101102d2202450d01200220063a000020002d00012106200241014102102f2202450d02200220063a000120002d00022106200241024104102f2202450d03200220063a0002200220002d00033a000320002d00042106200241044108102f2202450d04200220063a0004200220002d00053a0005200220002d00063a0006200220002d00073a000720002d00082106200241084110102f2202450d05200220063a0008200220002d00093a0009200220002d000a3a000a200220002d000b3a000b200220002d000c3a000c200220002d000d3a000d200220002d000e3a000e200220002d000f3a000f20002d00102106200241104120102f2202450d06200220063a0010200220002d00113a0011200220002d00123a0012200220002d00133a0013200220002d00143a0014200220002d00153a0015200220002d00163a0016200220002d00173a0017200220002d00183a0018200220002d00193a0019200220002d001a3a001a200220002d001b3a001b200220002d001c3a001c200220002d001d3a001d200220002d001e3a001e200220002d001f3a001f20022d0000210620022d0001210720021031200141086a2006200741087472410676220810e30102402006413f71220620012802104f0d00200128020821094114102d2202450d08200241002900a09b41370000200241106a41002800b09b41360000200241086a41002900a89b4137000020014294808080c0023702d405200120023602d005200920064105746a220a200141d0056a1046200141186a41186a220720013502d80542208620013502d005841000220241186a290000370300200141186a41106a220b200241106a290000370300200141186a41086a220c200241086a2900003703002001200229000037031820021031200141b0056a41186a2007290300370300200141b0056a41106a200b290300370300200141b0056a41086a200c290300370300200120012903183703b005024020012802d405450d0020012802d00510310b200141186a200442808080808004841002104102400240200128021822020d00410121070c010b200141186a41086a2802004110490d0a200241086a290000210d2002290000210e41002107200128021c450d00200210310b4118102d2202450d0a200241002900b49b41370000200241106a41002900c49b41370000200241086a41002900bc9b413700002001429880808080033702d405200120023602d005200a200141d0056a1046200141186a41186a220a20013502d80542208620013502d005841000220241186a290000370300200141186a41106a220b200241106a290000370300200141186a41086a220c200241086a2900003703002001200229000037031820021031200141b0056a41186a200a290300370300200141b0056a41106a200b290300370300200141b0056a41086a200c290300370300200120012903183703b005024020012802d405450d0020012802d00510310b200141186a200442808080808004841002104102400240200128021822020d00420021044200210f0c010b200141186a41086a2802004110490d0c200241086a290000210f20022900002104200128021c450d00200210310b200442004200200e7d20071b85200f42004200200d200e420052ad7c7d20071b85844200520d00200041086a2900002104200041106a290000210e200041186a2900002105200920064105746a22032000290000370000200341186a2005370000200341106a200e370000200341086a2004370000200141186a41086a200141086a41086a280200360200200120012903083703182008200141186a10e5010c0c0b0240200128020c450d00200128020810310b200141186a200310e301024020012802202202413f4d0d000340200341016a21030240200128021c450d00200128021810310b200141186a200310e30120012802202202413f4b0d000b0b20012802182106200128021c2108200141186a41186a2209200041186a290000370300200141186a41106a220a200041106a290000370300200141186a41086a220b200041086a29000037030020012000290000370318200241016a2107024020082002470d000240200241017422082007200820074b1b2208410574220c4100480d000240024020020d00200c102d21060c010b20062002410574200c102f21060b20060d01200c41011033000b1034000b200220034106746a210c200620024105746a22022001290318370000200241186a2009290300370000200241106a200a290300370000200241086a200b2903003700000240200741c000470d00200141186a41086a22094195d4c000ad4280808080b002841001220241086a2900003703002001200229000037031820021031200141b0056a41086a2009290300370300200120012903183703b0052001200341016a3602182005200141186aad4280808080c0008410030b200120073602202001200836021c200120063602182003200141186a10e501200141186a41086a2000290000370300200141186a41106a200041086a290000370300200141186a41186a200041106a290000370300200141386a200041186a2900003703002001200c36021c200141023a001841014100200141186a10450c0b0b41e9bcc0004133200141d0056a419cbdc0001038000b410141011033000b410241011033000b410441011033000b410841011033000b411041011033000b412041011033000b411441011033000b41e9bcc0004133200141d0056a419cbdc0001038000b411841011033000b41e9bcc0004133200141d0056a419cbdc0001038000b200141e0056a24000b890301057f230041c0006b2202240002400240410f102d2203450d00200341076a41002900d2d140370000200341002900cbd1403700002003410f411e102f2204450d012004200036000f200241206a41186a22002004ad4280808080b002841000220341186a290000370300200241206a41106a2205200341106a290000370300200241206a41086a2206200341086a2900003703002002200329000037032020031031200241186a2000290300370300200241106a2005290300370300200241086a20062903003703002002200229032037030020041031200128020021002001280208210320024100360228200242013703202003200241206a106f02402003450d00200341057421042000210303402003200241206a1046200341206a2103200441606a22040d000b0b200228022421032002ad4280808080800484200235022842208620022802202204ad84100302402003450d00200410310b0240200141046a280200450d00200010310b200241c0006a24000f0b410f41011033000b411e41011033000bf720070b7f027e097f017e057f017e027f230041c0026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d002000200110e7012003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200b200b417f6a220e2000200e4105746a41186a290300220f2000200b4105746a41186a290300221054220d1b2211200b41016a2212200e200b200d1b200f2010200d1b220f200020124105746a41186a29030022105422121b200020114105746a41186a2903002010200f20121b5422131b210b200c200c417f6a220e2000200e4105746a41186a290300220f2000200c4105746a41186a29030022105422111b2214200c4101722215200e200c20111b200f201020111b220f200020154105746a41186a29030022105422151b200020144105746a41186a2903002010200f20151b5422161b210c200a200a417f6a2214200020144105746a41186a290300220f2000200a4105746a41186a290300221054220e1b2217200a41016a22182014200a200e1b200f2010200e1b220f200020184105746a41186a29030022105422141b200020174105746a41186a2903002010200f20141b5422171b210a41024101200e1b200e20141b20176a20116a20156a20166a200d6a20126a20136a210d0b200d2000200a4105746a41186a290300220f2000200c4105746a41186a290300221054220e6a200f2010200e1b220f2000200b4105746a41186a29030022105422116a210d2000200c200a200e1b22194105746a41186a2903002010200f20111b540d01200b200a200c200e1b20111b21190c020b2000200110e8010c0f0b200d41016a220d410c490d0002402001410176220b450d00200020014105746a41606a210a2000210c0340200441a0026a41186a220e200c41186a220d290300370300200441a0026a41106a2211200c41106a2212290300370300200441a0026a41086a2215200c41086a22142903003703002004200c2903003703a002200a41086a2213290300210f200a41106a22162903002110200a41186a2217290300211a200c200a290300370300200d201a370300201220103703002014200f3703002017200e2903003703002016201129030037030020132015290300370300200a20042903a002370300200c41206a210c200a41606a210a200b417f6a220b0d000b0b20012019417f736a21194101210a0c010b200d45210a0b0240200a452009724101710d002000200110e9010d0d0b2002450d02201920014f0d010240200020194105746a220a41186a220c290300200241186a2903005a0d0020002108200121070c040b200441a0026a41186a2212200041186a220b290300370300200441a0026a41106a2215200041106a220d290300370300200441a0026a41086a2214200041086a2211290300370300200420002903003703a002200a41086a220e290300210f200a41106a22132903002110200c290300211a2000200a290300370300200b201a370300200d20103703002011200f370300200c201229030037030020132015290300370300200e2014290300370300200a20042903a002370300200441a0016a41106a2216200d290300370300200441a0016a41086a22172011290300370300200420002903003703a001200041786a2113200041386a2118200041206a211b200b29030021104100210c2001210b03400240200c200b417f6a220e4f0d002018200c4105746a210a0340200a2903002010540d01200a41206a210a200e200c41016a220c470d000b200e210c0b2013200b4105746a210a02400340200c200b417f6a220b4f0d01200a290300210f200a41606a220e210a200f2010540d000b2012201b200c4105746a220a41186a221c2903003703002015200a41106a22192903003703002014200a41086a221d2903003703002004200a2903003703a002200e41106a2206290300210f200e41186a221e290300211a200e41206a221f2903002120200a200e41086a220e290300370300201c20203703002019201a370300201d200f370300201f2012290300370300201e201529030037030020062014290300370300200e20042903a002370300200c41016a210c0c010b0b200020042903a00137030020002010370318200d20162903003703002011201729030037030002402001200c41016a220a490d002000200a4105746a21002001200a6b220141154f0d010c0c0b0b200a2001107b000b41c4b1c40020192001104b000b2007450d010b201920074f0d01200441a0026a41186a2218200841186a2205290300370300200441a0026a41106a221b200841106a221e290300370300200441a0026a41086a221c200841086a221f290300370300200420082903003703a002200820194105746a220a41086a220c290300210f200a41106a220b2903002110200a41186a220e290300211a2008200a2903003703002005201a370300201e2010370300201f200f370300200e2018290300370300200b201b290300370300200c201c290300370300200a20042903a002370300200441086a41106a2209201e290300370300200441086a41086a2221201f290300370300200420082903003703082005290300210f02402007417f6a220e0d004100211d0c030b200841386a210a4100211d0340200f200a2903005a0d03200a41206a210a200e201d41016a221d470d000b200e211d0c020b41f8b0c40041004100104b000b4188b1c40020192007104b000b200841206a210d200820074105746a210c200e210b02400340200c2100200b220a201d4d22060d01200041606a210c200a417f6a210b200f200041786a2903005a0d000b0b0240200a201d490d00200e200a490d02418001211641002101410021144100210e410021154180012117200d201d4105746a2222210d034002402000200d6b220a419fc0004b22190d00200a410576220a41807f6a200a20142001492015200e49220c72220b1b210a0240200b450d002017200a200c1b2117200a2016200c1b21160c010b200a200a41017622176b21160b02402015200e470d00024020170d00200441206a220e21150c010b4100210a200441206a2215210e200d210c0340200e200a3a0000200e200f200c41186a2903005a6a210e200c41206a210c2017200a41016a220a470d000b0b024020142001470d00024020160d00200441a0016a220121140c010b200041786a210a4100210c200441a0016a2214210103402001200c3a00002001200f200a290300546a2101200a41606a210a2016200c41016a220c470d000b0b0240200120146b220a200e20156b220c200c200a4b1b2213450d002018200d20152d00004105746a220a41186a290300370300201b200a41106a290300370300201c200a41086a2903003703002004200a2903003703a002200d20152d00004105746a220a200020142d0000417f734105746a220c290300370300200a41186a200c41186a290300370300200a41106a200c41106a290300370300200a41086a200c41086a290300370300024020134101460d004100210a034020002014200a6a22112d0000417f734105746a220c200d2015200a6a41016a22122d00004105746a220b290300370300200c41186a200b41186a290300370300200c41106a200b41106a290300370300200c41086a200b41086a290300370300200d20122d00004105746a220c2000201141016a2d0000417f734105746a220b290300370300200c41186a200b41186a290300370300200c41106a200b41106a290300370300200c41086a200b41086a290300370300200a41026a210c200a41016a220b210a200c2013490d000b2014200b6a21142015200b6a21150b200020142d0000417f734105746a220a20042903a002370300200a41186a2018290300370300200a41106a201b290300370300200a41086a201c290300370300201441016a2114201541016a21150b200020164105746b200020142001461b2100200d20174105746a200d2015200e461b210d20190d000b024002402015200e4f0d002000210a03402018200d200e417f6a220e2d00004105746a220c41186a220b290300370300201b200c41106a2200290300370300201c200c41086a22012903003703002004200c2903003703a002200a41606a220a41086a22112903002110200a41106a2212290300211a200a41186a22142903002120200c200a290300370300200b20203703002000201a37030020012010370300201420182903003703002012201b2903003703002011201c290300370300200a20042903a0023703002015200e490d000c020b0b200d210a201420014f0d0003402001417f6a22012d0000210c2018200a41186a220b290300370300201b200a41106a220e290300370300201c200a41086a220d2903003703002004200a2903003703a0022000200c417f734105746a220c41086a22112903002110200c41106a2212290300211a200c41186a22152903002120200a200c290300370300200b2020370300200e201a370300200d2010370300201520182903003703002012201b2903003703002011201c290300370300200c20042903a002370300200a41206a210a20142001490d000b0b200820042903083703002008200f370318201e2009290300370300201f20212903003703002007200a20226b410576201d6a22014d0d0320182005290300370300201b201e290300370300201c201f290300370300200420082903003703a002200820014105746a220a41086a220c290300210f200a41106a220b2903002110200a41186a220e290300211a2008200a2903003703002005201a370300201e2010370300201f200f370300200e2018290300370300200b201b290300370300200c201c290300370300200a20042903a002370300200720016b220c450d04200c20012001200c4b1b210b2007410376210e200a41206a2100024002402001200c417f6a220c490d002000200c200a200310e601200821000c010b200820012002200310e601200a2102200c21010b200b200e4f2105200141154f0d010c050b0b201d200a107b000b200a200e10b601000b4188b1c40020012007104b000b4198b1c400411c41b4b1c40010a401000b20014102490d00200041586a2112410021154101210b0340200b410574210a200b417f6a210d200b41016a210b02402000200d4105746a220e41186a220c2903002000200a6a221141186a220a29030022105a0d00200441a0016a41106a2214201141106a2213290300370300200441a0016a41086a2216201141086a2217290300370300200420112903003703a0012011200e2903003703002017200e41086a2903003703002013200e41106a290300370300200a200c29030037030002400240200d0d004100210d0c010b2012210a2015210c201141586a29030020105a0d00024002400340200a41c0006a200a41206a290300370300200a41386a200a41186a290300370300200a41306a200a41106a290300370300200a41286a200a41086a290300370300200c4101460d01200c417f6a210c200a290300210f200a41606a210a200f2010540d000c020b0b4100210c0b2000200c4105746a210e200c210d0b200e20042903a001370300200e41106a2014290300370300200e41086a20162903003703002000200d4105746a20103703180b201241206a2112201541016a2115200b2001470d000b0b200441c0026a24000beb050a067f017e017f017e017f017e017f017e017f017e230041206b2202240002400240024020014108490d00200141017641feffffff07712203417f6a220420014f0d022001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d01200020044105746a22042903002108200020054105746a220541086a2209290300210a200541106a220b290300210c200541186a220d290300210e20042005290300370300200441186a220f2903002110200f200e370300200441106a220f290300210e200f200c370300200441086a2204290300210c2004200a370300200d2010370300200b200e3703002009200c37030020052008370300024020032001490d00200321040c030b2006410d7420067322054111762005732205410574200573220620077122054100200120052001491b6b220520014f0d01200020034105746a22042903002108200020054105746a220541086a2209290300210a200541106a220b290300210c200541186a220d290300210e20042005290300370300200441186a220f2903002110200f200e370300200441106a220f290300210e200f200c370300200441086a2204290300210c2004200a370300200d2010370300200b200e3703002009200c370300200520083703002003410172220420014f0d022006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d01200020044105746a22012903002108200020054105746a220041086a2205290300210a200041106a2204290300210c200041186a2203290300210e20012000290300370300200141186a220629030021102006200e370300200141106a2206290300210e2006200c370300200141086a2201290300210c2001200a370300200320103703002004200e3703002005200c370300200020083703000b200241206a24000f0b4188b1c40020052001104b000b41f8b0c40020042001104b000bef0607077f017e017f017e017f037e037f230041206b22022400024020014101762203450d0003402003417f6a2203210402400240024003402004410174220541017221060240200541026a220520014f0d00200620014f0d0220052006200020054105746a41186a290300200020064105746a41186a290300541b21060b200620014f0d03200420014f0d02200020064105746a220541186a2207290300200020044105746a220441186a22082903005a0d0320042903002109200541086a220a290300210b200541106a220c290300210d2007290300210e200420052903003703002008290300210f2008200e370300200441106a2208290300210e2008200d370300200441086a2204290300210d2004200b3703002007200f370300200c200e370300200a200d37030020052009370300200621040c000b0b41e8b2c40020062001104b000b41f8b2c40020042001104b000b20030d000b0b0240024020014102490d002001210703402007417f6a220720014f0d02200241186a220a200041186a2205290300370300200241106a220c200041106a2204290300370300200241086a2203200041086a2208290300370300200020074105746a220641086a2903002109200641106a290300210b200641186a290300210d2000290300210e200020062903003703002005200d3703002004200b370300200820093703002002200e37030041002104024002400240034020062002290300370300200641186a200a290300370300200641106a200c290300370300200641086a20032903003703002004410174220641017221050240200641026a220620074f0d00200520074f0d0220062005200020064105746a41186a290300200020054105746a41186a290300541b21050b200520074f0d03200420074f0d02200020054105746a220641186a2210290300200020044105746a220441186a22082903005a0d03200a2008290300370300200c200441106a22112903003703002003200441086a221229030037030020042903002109200641086a290300210b200641106a290300210d2010290300210e200420062903003703002008200e3703002011200d3703002012200b37030020022009370300200521040c000b0b41e8b2c40020052007104b000b41f8b2c40020042007104b000b200741014b0d000b0b200241206a24000f0b4188b1c40020072001104b000bdf08030a7f027e0b7f230041c0006b22022400200041987f6a21032001417f6a2104200041386a2105410021062001413249210741012108024003400240024020082001490d00410021090c010b4101210920002008410574220a6a220b41786a290300200b41186a290300220c540d002005200a6a210903404101210b20042008460d03200841016a2108200c2009290300220d5a210b200941206a2109200d210c200b0d000b200820014921090b2008200146210b20070d0120082001460d010240024002400240024002402008417f6a220a20014f0d002009450d0120002008410574220e6a220b290300210c200b2000200a4105746a22092903003703002009200c370300200b41086a220f290300210c200f200941086a22102903003703002010200c370300200b41106a2211290300210c2011200941106a22122903003703002012200c370300200b41186a2213290300210c2013200941186a220a290300370300200a200c37030020084102490d0520002008417e6a22144105746a221541186a2216290300200a290300220d5a0d05200241086a41106a22172012290300370300200241086a41086a221820102903003703002009290300210c200920152903003703002010201541086a2903003703002012201541106a290300370300200a20162903003703002002200c370308024020140d00410021140c050b20002008417d6a220a4105746a41186a290300200d5a0d042003200e6a21090340200941c0006a200941206a290300370300200941386a200941186a290300370300200941306a200941106a290300370300200941286a200941086a290300370300200a450d03200a417f6a210a2009290300210c200941606a2109200c200d540d000b200a41016a21140c030b41f8b0c400200a2001104b000b4188b1c40020082001104b000b410021140b200020144105746a21150b20152002290308370300201541106a2017290300370300201541086a2018290300370300200020144105746a200d3703180b200641016a21060240200120086b22104102490d002013290300220c200b41386a22092903005a0d00200b290300210d200b200b290320370300200241086a41106a22122011290300370300200241086a41086a2215200f290300370300200f200b41286a2903003703002011200b41306a290300370300201320092903003703002002200d370308200b41206a210941012111024020104103490d00200c200b41d8006a2903005a0d004103210a410221130340200b201322114105746a220941606a22132009290300370300201341186a200941186a290300370300201341106a200941106a290300370300201341086a200941086a290300370300200a20104f0d01200a410574210f200a2113200a41016a210a200c200b200f6a41186a290300540d000b0b20092002290308370300200941106a2012290300370300200941086a2015290300370300200b20114105746a200c3703180b20064105470d000b4100210b0b200241c0006a2400200b0beb050a067f017e017f017e017f017e017f017e017f017e230041206b2202240002400240024020014108490d00200141017641feffffff07712203417f6a220420014f0d022001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d01200020044105746a22042900002108200020054105746a220541086a2209290000210a200541106a220b290000210c200541186a220d290000210e20042005290000370000200441186a220f2900002110200f200e370000200441106a220f290000210e200f200c370000200441086a2204290000210c2004200a370000200d2010370000200b200e3700002009200c37000020052008370000024020032001490d00200321040c030b2006410d7420067322054111762005732205410574200573220620077122054100200120052001491b6b220520014f0d01200020034105746a22042900002108200020054105746a220541086a2209290000210a200541106a220b290000210c200541186a220d290000210e20042005290000370000200441186a220f2900002110200f200e370000200441106a220f290000210e200f200c370000200441086a2204290000210c2004200a370000200d2010370000200b200e3700002009200c370000200520083700002003410172220420014f0d022006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d01200020044105746a22012900002108200020054105746a220041086a2205290000210a200041106a2204290000210c200041186a2203290000210e20012000290000370000200141186a220629000021102006200e370000200141106a2206290000210e2006200c370000200141086a2201290000210c2001200a370000200320103700002004200e3700002005200c370000200020083700000b200241206a24000f0b4188b1c40020052001104b000b41f8b0c40020042001104b000be90609067f017e017f017e017f027e017f017e027f230041206b22022400024020014101762203450d0003402003417f6a2203210402400240024003402004410174220541017221060240200541026a220520014f0d00200620014f0d0220052006200020064105746a200020054105746a412010ad054100481b21060b200620014f0d03200420014f0d02200020044105746a2204200020064105746a2205412010ad0541004e0d03200541086a22072900002108200541106a2209290000210a200541186a220b290000210c2004290000210d20042005290000370000200441186a220e290000210f200e200c370000200441106a220e290000210c200e200a370000200441086a2204290000210a20042008370000200b200f3700002009200c3700002007200a3700002005200d370000200621040c000b0b41e8b2c40020062001104b000b41f8b2c40020042001104b000b20030d000b0b0240024020014102490d002001210703402007417f6a220720014f0d02200241186a2209200041186a2204290000370300200241106a220b200041106a2205290000370300200241086a220e200041086a2203290000370300200020074105746a220641086a2900002108200641106a290000210a200641186a290000210c2000290000210d200020062900003700002004200c3700002005200a370000200320083700002002200d37030041002105024002400240034020062002290300370000200641186a2009290300370000200641106a200b290300370000200641086a200e2903003700002005410174220641017221040240200641026a220620074f0d00200420074f0d0220062004200020044105746a200020064105746a412010ad054100481b21040b200420074f0d03200520074f0d02200020054105746a2205200020044105746a2206412010ad0541004e0d032009200541186a2203290000370300200b200541106a2210290000370300200e200541086a2211290000370300200641086a2900002108200641106a290000210a200641186a290000210c2005290000210d200520062900003700002003200c3700002010200a370000201120083700002002200d370300200421050c000b0b41e8b2c40020042007104b000b41f8b2c40020052007104b000b200741014b0d000b0b200241206a24000f0b4188b1c40020072001104b000bdb08030a7f017e0a7f230041c0006b22022400200041a07f6a21032001417f6a2104200141324921054101210641002107024003400240024020062001490d00410021080c010b41012108200020064105746a2209200941606a412010ad054100480d0003404101210a20042006460d03200641016a2106200941206a220a2009412010ad052108200a21092008417f4a0d000b200620014921080b2006200146210a20050d0120062001460d0102400240024002402006417f6a220920014f0d002008450d0120002006410574220b6a220a290000210c200a200020094105746a22092900003700002009200c370000200a41086a220d290000210c200d200941086a220e290000370000200e200c370000200a41106a220f290000210c200f200941106a22102900003700002010200c370000200a41186a2211290000210c2011200941186a22122900003700002012200c37000020064102490d03200920002006417e6a22084105746a2213412010ad05417f4a0d032009290000210c20092013290000370000200241206a41186a22142012290000370300200241206a41106a22152010290000370300200241206a41086a2216200e290000370300200e201341086a2900003700002010201341106a2900003700002012201341186a2900003700002002200c3703204100210e2008450d022003200b6a210903400240200241206a2009412010ad054100480d002008210e0c040b200941206a2009290000370000200941386a200941186a290000370000200941306a200941106a290000370000200941286a200941086a290000370000200941606a21092008417f6a22080d000c030b0b41f8b0c40020092001104b000b4188b1c40020062001104b000b2000200e4105746a22092002290320370000200941186a2014290300370000200941106a2015290300370000200941086a20162903003700000b200741016a21070240200120066b22104102490d00200a41206a2209200a412010ad05417f4a0d00200a290000210c200a2009290000370000200241206a41186a22122011290000370300200241206a41106a2213200f290000370300200241206a41086a220b200d290000370300200d200941086a290000370000200f200941106a2900003700002011200941186a2900003700002002200c3703204101210d024020104103490d00200a41c0006a200241206a412010ad05417f4a0d00410321084102210e0340200a200e4105746a220941606a220d2009290000370000200d41186a200941186a290000370000200d41106a200941106a290000370000200d41086a200941086a290000370000024020082010490d00200e210d0c020b20084105742109200e210d2008210e200841016a2108200a20096a200241206a412010ad054100480d000b0b200a200d4105746a22092002290320370000200941186a2012290300370000200941106a2013290300370000200941086a200b2903003700000b20074105470d000b4100210a0b200241c0006a2400200a0b9705060a7f047e037f027e047f027e200128020821032001280204210420012802002105200241386a2106200241286a210703400240024020044198bfc000462208450d00410021094108210a4108210b0c010b20042f01062109200441086a220a210b0b200b200941d0006c6a210c2006290300210d2007290300210e2002290330210f2002290320211020022802482111200228024021124100210b0240024002400340200b21090240200a200c470d0002402008450d00410021090c030b20042f010621090c020b024002402002200a412010ad05220b450d00417f4101200b4100481b21130c010b417f2010200a290320221485200e200a41286a290300221585844200522010201454200e201554200e2015511b1b22130d00417f200f200a41306a290300221485200d200a41386a29030022158584420052200f201454200d201554200d2015511b1b22130d00200a41c8006a28020022162011201120164b1b2117200a280240210b417f21182012211903400240201841016a22182017490d00417f201120164720112016491b21130c020b0240201941106a200b41106a412010ad052213450d00417f410120134100481b21130c020b2019290300221a200b290300221b54201941086a2903002215200b41086a29030022145420152014511b0d03200b41306a210b201941306a211941012113201a201b85201520148584500d000b0b200941016a210b200a41d0006a210a0240201341016a0e03020001020b0b4100210a0c010b20050d014101210a410021050b200020053602042000200a360200200041106a20093602002000410c6a2003360200200041086a20043602000f0b2001200336020820012005417f6a22053602002001200420094102746a41f8066a28020022043602040c000b0bd50501037f024002400240024002400240024020002d00004101460d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d07200241017422042003200420034b1b22044100480d070240024020020d002004102d21030c010b200128020020022004102f21030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41003a00000c010b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d06200241017422042003200420034b1b22044100480d060240024020020d002004102d21030c010b200128020020022004102f21030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41013a0000200041016a200110460b024020002d00214101460d0002400240200141046a280200200141086a2802002200460d00200128020021020c010b200041016a22022000490d06200041017422032002200320024b1b22034100480d060240024020000d002003102d21020c010b200128020020002003102f21020b2002450d0420012002360200200141046a2003360200200141086a28020021000b200141086a200041016a360200200220006a41003a00000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102d21030c010b200128020020022004102f21030b2003450d0420012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41013a0000200041226a200110460f0b200441011033000b200441011033000b200341011033000b200441011033000b1034000bc00501047f200141046a2802002102200141086a28020021030240024002400240024002400240200028020022040d000240024020022003460d00200128020021020c010b200341016a22022003490d07200341017422042002200420024b1b22044100480d070240024020030d002004102d21020c010b200128020020032004102f21020b2002450d0320012002360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200220036a41003a00000c010b0240024020022003460d00200128020021020c010b200341016a22022003490d06200341017422052002200520024b1b22054100480d060240024020030d002005102d21020c010b200128020020032005102f21020b2002450d0320012002360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200220036a41013a00002004280200200110460b200141046a2802002102200141086a28020021030240200028020422040d000240024020022003460d00200128020021000c010b200341016a22002003490d06200341017422022000200220004b1b22024100480d060240024020030d002002102d21000c010b200128020020032002102f21000b2000450d0420012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000f0b0240024020022003460d00200128020021000c010b200341016a22002003490d05200341017422022000200220004b1b22024100480d050240024020030d002002102d21000c010b200128020020032002102f21000b2000450d0420012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41013a00002004200110460f0b200441011033000b200541011033000b200241011033000b200241011033000b1034000bde0803037f047e037f230022022103200241c0026b41607122022400200141186a22042900002105200420022903f80137000020012900102106200120022903f00137001020012900082107200120022903e801370008200241003a00e00120012900002108200120022903e00137000020022005370378200220063703702002200737036820022008370360200141206a2d00002104200241e0016a41176a22092005370000200241e0016a41106a220a2002290071370300200241e0016a41086a220b2002290069370300200220022900613703e00102402008a741ff01714101460d0020004100360220200324000f0b200241106a41176a2009290000370000200241106a41106a200a290300370300200241106a41086a200b290300370300200220022903e001370310200220043a002f0240024002404112102d2204450d002004410029008db941370000200441106a41002f009db9413b0000200441086a4100290095b94137000020024292808080a00237026420022004360260200241106a200241e0006a1046200241e0016a41186a220920023502684220862002350260841000220441186a290000370300200241e0016a41106a220a200441106a290000370300200241e0016a41086a220b200441086a290000370300200220042900003703e00120041031200241c0006a41186a2009290300370300200241c0006a41106a200a290300370300200241c0006a41086a200b290300370300200220022903e00137034002402002280264450d00200228026010310b200241d0016a200241c0006aad42808080808004841002104120022802d0012204450d0220022802d40121092002200241d0016a41086a28020036023420022004360230200241e0016a200241306a10f10120022d00f0014102460d01200241c0016a41086a200241e0016a41086a290300370300200220022903e0013703c001200241e0006a200241f1016a41c30010ab051a02402009450d00200410310b200241306a41086a2204200241c0016a41086a290300370300200220022903c001370330200241e0016a200241e0006a41c30010ab051a200241c0006a41086a2209200429030037030020022002290330370340200241e0006a200241e0016a41c10010ab051a200141206a200241a0016a2d00003a0000200141186a20024198016a290000370000200141106a20024190016a290000370000200141086a200241e0006a41286a2900003700002001200229008001370000200241e0016a41186a200241106a41186a2903002205370300200241e0016a41106a200241106a41106a2903002208370300200241e0016a41086a200241106a41086a2903002206370300200020022903102207370200200041086a2006370200200041106a2008370200200041186a2005370200200220073703e001200041206a2002290340370200200041286a2009290300370200200324000f0b411241011033000b41e9bcc0004133200241e0006a419cbdc0001038000b4199d7c00041dd0010bf01000bf409020b7f017e230041c0016b22022400200241106a2001102c024002400240024002400240024020022802100d00200128020420022802142203490d002003417f4c0d030240024002400240024020030d00410121040c010b2003107a2204450d0120012802042003490d0320042001280200200310ab051a200128020422052003490d082001200520036b3602042001200128020020036a3602000b200241086a2001102c20022802080d0120012802042206450d08200228020c2107200128020022082d0000210520012006417f6a22093602042001200841016a220a360200200541014b0d084100210b20050e020504050b200341011033000b2003450d010b200410310b200041023a00100c050b41002105200241003a00b8012006417f6a210a417e210903400240200a2005470d00200541ff0171450d05200241003a00b8010c050b20024198016a20056a200820056a220c41016a2d00003a00002001200620096a3602042001200c41026a3602002002200541016a220c3a00b8012009417f6a2109200c2105200c4120470d000b200241d8006a41086a20024198016a41086a290300220d370300200241386a41186a20024198016a41186a290300370300200241386a41106a20024198016a41106a290300370300200241386a41086a200d3703002002200229039801220d3703582002200d370338200c417f7320066a21094101210b2008200c6a41016a210a0b200241186a41186a200241386a41186a290300370300200241186a41106a200241386a41106a290300370300200241186a41086a200241386a41086a290300370300200220022903383703182009450d02200a2d0000210520012009417f6a3602042001200a41016a360200200541014b0d024100210c0240024020050e020100010b41002105200241003a00b8012009417f6a21062009417e6a21090340024020062005470d00200541ff0171450d05200241003a00b8010c050b20024198016a20056a200a20056a220c41016a2d00003a0000200120093602042001200c41026a3602002002200541016a220c3a00b8012009417f6a2109200c2105200c4120470d000b200241d8006a41086a20024198016a41086a290300220d370300200241386a41186a20024198016a41186a290300370300200241386a41106a20024198016a41106a290300370300200241386a41086a200d3703002002200229039801220d3703582002200d3703384101210c0b200241f8006a41186a2201200241386a41186a290300370300200241f8006a41106a2205200241386a41106a290300370300200241f8006a41086a2209200241386a41086a29030037030020024198016a41086a2206200241186a41086a29030037030020024198016a41106a2208200241186a41106a29030037030020024198016a41186a220a200241186a41186a2903003703002002200229033837037820022002290318370398012000200b3a001020002007ad4220862003ad843702082000200336020420002004360200200041316a200c3a00002000200229039801370011200041196a2006290300370000200041216a2008290300370000200041296a200a290300370000200041326a20022903783700002000413a6a2009290300370000200041c2006a2005290300370000200041ca006a20012903003700000c030b1032000b20032005107b000b200041023a00102003450d00200410310b200241c0016a24000bd80402037f017e230041306b22022400024002402001280200410e460d00200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c010b024002400240024002400240200141086a2d00000e06050402010004050b200141c8006a21030c020b200141d0006a21030c010b200141186a21030b200241086a220441b6b0c400ad42808080809002841001220141086a2900003703002002200129000037030020011031200241186a41086a2004290300370300200220022903003703182002200241186aad428080808080028410021041024002400240200228020022010d00420021050c010b20042802004108490d01200129000021052002280204450d00200110310b024020032903004280ade20420057d560d00200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c040b200041800c3b0001200041013a0000200041036a41003a00000c030b41e9bcc0004133200241286a419cbdc0001038000b200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c010b200241146a410136020020024201370204200241d494c4003602002002410236021c200241e0d9c0003602182002200241186a360210200241dc94c40010b301000b200241306a24000b110020012000280200200028020410f5030bc20b030a7f027e017f230041f0016b220224000240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a360200200541014b0d0520050e020102010b200041023a00000c090b200241086a2001102c20022802080d062001280204200228020c2206490d062006417f4c0d010240024020060d0020012802042104410121070c010b2006107a2207450d0820012802042006490d0620072001280200200610ab051a200128020422052006490d032001200520066b22043602042001200128020020066a3602000b20044104490d0420012802002208280000210920012004417c6a220a3602042001200841046a36020041002105200241003a0030417b210303400240200a2005470d000240200541ff0171450d00200241003a00300b20060d070c080b200241106a20056a200820056a220b41046a2d00003a00002001200420036a3602042001200b41056a3602002002200541016a220b3a00302003417f6a2103200b2105200b4120470d000b20024188016a41086a200241106a41086a29030037030020024188016a41106a200241106a41106a29030037030020024188016a41186a200241106a41186a290300370300200220022903103703880102400240024002402004200b6b2203417c6a4110490d002008200b6a2205410c6a290000210c200541046a290000210d20012003416c6a22083602042001200541146a220a36020020084104490d00200a280000210a2001200341686a3602042001200541186a2208360200200441686a200b460d0320082d0000210b2001200341676a22043602042001200541196a360200200b41014b0d0341002108200b0e020201020b20060d080c090b20044104490d01200541196a280000210e2001200341636a36020420012005411d6a360200410121080b200241c8016a41086a220520024188016a41086a290300370300200241c8016a41106a220120024188016a41106a290300370300200241c8016a41186a220320024188016a41186a29030037030020022002290388013703c801200041003a0000200041106a200c370000200041086a200d37000020002002280048360001200041046a200241cb006a280000360000200041306a200e3600002000412c6a2008360000200041286a200a360000200041246a2009360000200041206a20063600002000411c6a2006360000200041186a2007360000200041346a20022903c8013700002000413c6a2005290300370000200041c4006a2001290300370000200041cc006a20032903003700000c090b2006450d060c050b41002105200241003a00e8012003417f6a21062003417e6a21030340024020062005470d000240200541ff0171450d00200241003a00e8010b200041023a00000c090b200241c8016a20056a200420056a220b41016a2d00003a0000200120033602042001200b41026a3602002002200541016a220b3a00e8012003417f6a2103200b2105200b4120470d000b200241e8006a41086a200241c8016a41086a290300220c370300200241c8006a41186a2205200241c8016a41186a290300370300200241c8006a41106a2201200241c8016a41106a290300370300200241c8006a41086a2203200c370300200220022903c801220c3703682002200c370348200041013a000020002002290348370001200041096a2003290300370000200041116a2001290300370000200041196a2005290300370000200041216a2002290010370000200041296a200241106a41086a290000370000200041316a200241106a41106a290000370000200041396a200241106a41186a290000370000200041c1006a200241306a290000370000200041c9006a200241386a290000370000200041d0006a2002413f6a2900003700000c070b1032000b20062005107b000b200041023a00000c040b2006450d010b200710310b200041023a00000c010b200641011033000b200241f0016a24000ba40a02067f027e230041106b2202240020002802102103200041186a28020022042001106f0240024002400240024002400240024002400240200141046a2802002205200141086a28020022066b2004490d00200128020021050c010b200620046a22072006490d08200541017422062007200620074b1b22064100480d080240024020050d002006102d21050c010b200128020020052006102f21050b2005450d0120012005360200200141046a2006360200200141086a28020021060b200141086a2207200620046a360200200520066a2003200410ab051a200028021c210502400240200141046a2802002206200728020022046b4104490d00200128020021060c010b200441046a22032004490d08200641017422042003200420034b1b22044100480d080240024020060d002004102d21060c010b200128020020062004102f21060b2006450d0220012006360200200141046a2004360200200141086a28020021040b200141086a2203200441046a360200200620046a20053600002002200136020c2000412c6a2002410c6a103e200041086a29030021082000290300210902400240200141046a2802002206200328020022046b4110490d00200128020021060c010b200441106a22052004490d08200641017422042005200420054b1b22044100480d080240024020060d002004102d21060c010b200128020020062004102f21060b2006450d0320012006360200200141046a2004360200200141086a28020021040b200141086a2205200441106a360200200620046a22042008370008200420093700002000280220210302400240200141046a2802002206200528020022046b4104490d00200128020021060c010b200441046a22052004490d08200641017422042005200420054b1b22044100480d080240024020060d002004102d21060c010b200128020020062004102f21060b2006450d0420012006360200200141046a2004360200200141086a28020021040b200141086a2205200441046a360200200620046a20033600000240024020002802244101460d0002400240200141046a28020020052802002200460d00200128020021040c010b200041016a22042000490d0a200041017422062004200620044b1b22064100480d0a0240024020000d002006102d21040c010b200128020020002006102f21040b2004450d0720012004360200200141046a2006360200200141086a28020021000b200141086a200041016a360200200420006a41003a00000c010b02400240200141046a28020020052802002204460d00200128020021060c010b200441016a22062004490d09200441017422052006200520064b1b22054100480d090240024020040d002005102d21060c010b200128020020042005102f21060b2006450d0720012006360200200141046a2005360200200141086a28020021040b200141086a2205200441016a360200200620046a41013a00002000280228210602400240200141046a2802002204200528020022006b4104490d00200128020021040c010b200041046a22052000490d09200441017422002005200020054b1b22004100480d090240024020040d002000102d21040c010b200128020020042000102f21040b2004450d0820012004360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200420006a20063600000b200241106a24000f0b200641011033000b200441011033000b200441011033000b200441011033000b200641011033000b200541011033000b200041011033000b1034000b990401047f230041d0006b220224000240024002404117102d2203450d0020034100290082e1403700002003410f6a4100290091e140370000200341086a410029008ae14037000020024297808080f002370224200220033602202000200241206a1046200241306a41186a220020023502284220862002350220841000220341186a290000370300200241306a41106a2204200341106a290000370300200241306a41086a2205200341086a2900003703002002200329000037033020031031200241186a2000290300370300200241106a2004290300370300200241086a20052903003703002002200229033037030002402002280224450d00200228022010310b200241003602382002420137033020012d000021004101102d21030240024020004101460d002003450d032002410136023420022002280238220041016a36023820022003360230200320006a41003a0000200141086a200241306a10f5010c010b2003450d032002410136023420022002280238220041016a36023820022003360230200320006a41013a00002002200241306a360220200141016a200241206a103e0b200228023421032002ad4280808080800484200235023842208620022802302200ad84100302402003450d00200010310b024020012d00000d002001411c6a280200450d00200141186a28020010310b200241d0006a24000f0b411741011033000b410141011033000b410141011033000b9d0204027f017e027f027e230041306b22012400200141186a41086a220241b6b0c400ad428080808090028422031001220441086a2900003703002001200429000037031820041031200141086a41086a2205200229030037030020012001290318370308200141186a200141086aad4280808080800284220610021041024002400240200128021822040d00420021070c010b20022802004108490d0120042900002107200128021c450d00200410310b200220031001220441086a290000370300200120042900003703182004103120052002290300370300200120012903183703082001200720007c3703182006200141186aad42808080808001841003200141306a24000f0b41e9bcc0004133200141286a419cbdc0001038000b130020004105360204200041ace1c0003602000b3400200041b8ddc00036020420004100360200200041146a4107360200200041106a4198f4c000360200200041086a42083702000b3701017f02404110102d22020d00411041011033000b2002420037000820024201370000200042908080808002370204200020023602000b3001017f02404108102d22020d00410841011033000b20004288808080800137020420002002360200200242003700000bc70101017f23004190016b22022400200241003a00782002428080848080023703682002420137035820024201370350200242af0137034820024287013703402002420137033820024201370330200242013703282002420137032020024201370318200242013703102002420137030820024280808080c00037036020024280808180800437037020024100360288012002420137038001200241086a20024180016a10fd01200041086a200228028801360200200020022903800137020020024190016a24000bfb1802047f017e20002802582102024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141046a2802002203200141086a28020022046b4104490d00200128020021030c010b200441046a22052004490d13200341017422042005200420054b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0120012003360200200141046a2004360200200141086a28020021040b200141086a2205200441046a360200200320046a20023600002000290300210602400240200141046a2802002203200528020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0220012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290308210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0320012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290310210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0420012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290318210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0520012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290320210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0620012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290328210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0720012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290330210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0820012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290338210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0920012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290340210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0a20012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290348210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0b20012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a20063700002000290350210602400240200141046a2802002203200228020022046b4108490d00200128020021030c010b200441086a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0c20012003360200200141046a2004360200200141086a28020021040b200141086a2202200441086a360200200320046a2006370000200028025c210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0d20012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a20053600002000280260210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0e20012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a20053600002000280264210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d0f20012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a20053600002000280268210502400240200141046a2802002203200228020022046b4104490d00200128020021030c010b200441046a22022004490d13200341017422042002200420024b1b22044100480d130240024020030d002004102d21030c010b200128020020032004102f21030b2003450d1020012003360200200141046a2004360200200141086a28020021040b200141086a2202200441046a360200200320046a200536000020002d0070210502400240200141046a28020020022802002204460d00200128020021030c010b200441016a22032004490d13200441017422022003200220034b1b22024100480d130240024020040d002002102d21030c010b200128020020042002102f21030b2003450d1120012003360200200141046a2002360200200141086a28020021040b200141086a2202200441016a360200200320046a20053a0000200028026c210302400240200141046a2802002204200228020022006b4104490d00200128020021040c010b200041046a22022000490d13200441017422002002200020024b1b22004100480d130240024020040d002000102d21040c010b200128020020042000102f21040b2004450d1220012004360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200420006a20033600000f0b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200241011033000b200041011033000b1034000b130020004110360204200041fcfdc0003602000b3301017f02404108102d22020d00410841011033000b2000428880808080013702042000200236020020024280ade2043700000b3201017f02404104102d22020d00410441011033000b20004284808080c000370204200020023602002002418080013600000b3001017f02404104102d22020d00410441011033000b20004284808080c00037020420002002360200200241203600000b3101017f02404108102d22020d00410841011033000b20004288808080800137020420002002360200200242e8073700000b3801017f02404110102d22020d00411041011033000b20024200370008200242e807370000200042908080808002370204200020023602000b3901017f02404110102d22020d00411041011033000b2002420037000820024290ce00370000200042908080808002370204200020023602000b3c01017f02404110102d22020d00411041011033000b2002420037000820024280b8c9e5ae04370000200042908080808002370204200020023602000b3c01017f02404110102d22020d00411041011033000b2002420037000820024280a094a58d1d370000200042908080808002370204200020023602000b3b01017f02404110102d22020d00411041011033000b200242003700082002428094ebdc03370000200042908080808002370204200020023602000b3001017f02404104102d22020d00410441011033000b20004284808080c00037020420002002360200200241083600000b3001017f02404104102d22020d00410441011033000b20004284808080c00037020420002002360200200241023600000bb41a03027f047e117f23004190156b22072400200741e0006a41186a200141186a290000370300200741e0006a41106a200141106a290000370300200741e0006a41086a200141086a2900003703002007200129000037036020074180016a41186a200241186a29000037030020074180016a41106a200241106a29000037030020074180016a41086a200241086a2900003703002007200229000037038001200628020021012006280204210220062802082108200741d0006a108b020240024002400240024020072903502209200741d0006a41086a290300220a8450450d004200210b4200210c0c010b200741306a200a42002005420010b005200741c0006a200942002005420010b005200741206a420042002009420010b00502402007290338200729032884420052200741c0006a41086a290300220b200729033020072903207c7c220c200b5472450d004127210641b997c10021080c020b2007290340210b0b200741c0096a200741e0006a200b200c4108105e20072802c0094101470d0120072802c809210620072802c40921080b2000200836020420004101360200200041146a41003602002000410c6a4201370200200041086a20063602002002450d01200110310c010b200741d0096a290300210b20072903c809210c200741b8016a200a370300200720093703b001200720053703a801200720053703a001200741c0096a41086a220d41c7b0c400ad42808080808003841001220641086a290000370300200720062900003703c00920061031200741f00f6a41086a200d290300370300200720072903c0093703f00f200741c0016a200741f00f6aad42808080808002841002104141022106024002400240024020072802c001220d450d0020072802c401210e2007200741c0016a41086a28020036028c032007200d36028803200741c0096a20074188036a108c0220072d00b00a22064102460d01200741a0046a200741c0096a41f00010ab051a2007200741b40a6a2800003600e30e200720072800b10a3602e00e200e450d00200d10310b200741c0096a200741a0046a41f00010ab051a200720072800e30e3600f30f200720072802e00e3602f00f0240024020064102470d002007428080818080043703a8022007428080848080023703a00220074201370390022007420137038802200742af013703800220074287013703f801200742013703f001200742013703e801200742013703e001200742013703d801200742013703d001200742013703c801200742013703c00120074280808080c00037039802410021060c010b200741c0016a200741c0096a41f00010ab051a200741b4026a20072800f30f360000200720072802f00f3600b1020b200741c0026a4200370300200741f0026a4200370300200741e0026a4200370300200741d0026a4200370300200720063a00b0022007428094ebdc033703b802200742e8073703e802200742e8073703d802200742e8073703c802200742a08080808080103703f8022007200741c0016a360280032007200741c0016a36028403200741c0096a41186a220e200741e0006a41186a290300370300200741c0096a41106a2206200741e0006a41106a290300370300200741c0096a41086a220d200741e0006a41086a290300370300200720072903603703c0091099012105105b210f200741c0036a4200370300200741b4036a418cacc10036020041012110200741b0036a4101360200200741a8036a4200370300200741a4036a4198bfc000360200200741e0036a200d290300370300200741e8036a2006290300370300200741f0036a200e29030037030020074200370390032007428080808080013703b803200741003602a003200720072903c0093703d803200720074184036a3602d003200720074180036a3602cc032007200741c0016a3602c8032007200f3602d4032007200537038803200e20074180016a41186a290300370300200620074180016a41106a290300370300200d20074180016a41086a29030037030020072007290380013703c009200720083602a804200720023602a404200720013602a004200741f8036a20074188036a200741c0096a20032004200741a0016a200741a0046a10da014101211120072802f8030d0241012111200741f8036a41106a2d0000450d010c020b41e9bcc000413320074188156a419cbdc0001038000b200741c0096a41086a200741a8036a290300370300200741a0046a41086a200741cc096a280200360200200720072903a0033703c009200720072902c4093703a00420074188156a200741a0046a108d02410021110b200720072903b001200741a0016a41186a29030020072903a8012205420010b00520072903a00120057d10f701200741106a200741e0006a2007290300200741086a29030010652006200b200741106a41086a29030022097d200c2007290310220554ad7d2009200b7d2005200c54ad7d2005200c582009200b582009200b5122021b22011b220a3703002007200c20057d2005200c7d20011b22033703c80920072005200c562009200b5620021b2202ad22053703c009024020020d00200720033703a0042007200a3703a8042007200741a0046a3602f00f200741f00f6a105f4100211020072903c00921050b0240024020054200520d002010450d012007200d3602a004200741a0046a105f0c010b2007200d3602a004200741a0046a10430b20072802c403210120072802c0032106200720072802bc032202360298042007200636029404200720023602900420072002200141a0056c6a221236029c0402402001450d00200741f00f6a4101722113200741e70e6a2114200741f00f6a41096a2108200741e00e6a410172210d200741c0096a41106a2115200741e8096a2116200741a40a6a2117200741810a6a210e200741e1096a210f200741c0096a4101722118200741b80a6a2119034020022d00002101200741a0046a200241016a419f0510ab051a0240024020014103460d00200720013a00c0092018200741a0046a419f0510ab052106024002400240024020010e03000102000b20072802c809211a20072802cc09210620072802c40921012014201541d80010ab051a200741093a00f00f2013200741e00e6a41df0010ab051a20012006200741f00f6a104541012106410021100240201a450d00200110310b4100211a0c020b200741c00f6a41186a2201200641186a2210290000370300200741c00f6a41106a221a200641106a221b290000370300200741c00f6a41086a221c200641086a221d290000370300200720062900003703c00f200741f00f6a201641f80410ab051a200d2006290000370000200d41086a201d290000370000200d41106a201b290000370000200d41186a201029000037000041012110200741013a00e00e200741e00f6a200741f00f6a200741e00e6a108e0220072d00e80f2106200820072903c00f370000200841086a201c290300370000200841106a201a290300370000200841186a2001290300370000200741043a00f80f200741093a00f00f200720064102463a0099104100210641014100200741f00f6a10454100211a0c010b2019290300210520072903b00a2109200741c00f6a41186a200641186a290000370300200741c00f6a41106a200641106a290000370300200741c00f6a41086a200641086a290000370300200720062900003703c00f200741e00e6a41186a200f41186a290000370300200741e00e6a41106a200f41106a290000370300200741e00e6a41086a200f41086a2900003703002007200f2900003703e00e200741f00f6a41186a200e41186a290000370300200741f00f6a41106a200e41106a290000370300200741f00f6a41086a200e41086a2900003703002007200e2900003703f00f200741e00f6a41086a201741086a280200360200200720172902003703e00f200741c00f6a200741e00e6a200741f00f6a20092005200741e00f6a108f0241012110410121064101211a0b024020072d00c009220141014b0d000240024020010e020001000b2010450d03024020072802c809450d0020072802c40910310b20072d00d0094105490d0320072802f809450d0320072802f40910310c030b2006450d02201610d6010c020b201a20072802a80a45720d0120072802a40a10310c010b2007200241a0056a360298040c020b200241a0056a22022012470d000b20072012360298040b20074190046a1078200041106a200741f8036a41106a290300370200200041086a200741f8036a41086a290300370200200020072903f80337020002402007280294032202450d0020074188036a41106a280200450d00200210310b2011450d0020074188036a411c6a280200210220072802ac0321080240024020072802a80322060d00200221010c010b2006210020022101034020012802880b21012000417f6a22000d000b0340200220022f01064102746a41880b6a28020021022006417f6a22060d000b0b200741c0096a411c6a20022f0106360200200741d8096a4100360200200741d4096a2002360200200720083602e009200741003602d009200742003703c809200720013602c409200741003602c009200741c0096a1090020b20074190156a24000be00102037f027e230041306b22012400200141186a41086a22024199e1c000ad42808080809002841001220341086a2900003703002001200329000037031820031031200141086a41086a200229030037030020012001290318370308200141186a200141086aad428080808080028410021041024002400240200128021822030d0042002104420121050c010b20022802004110490d01200341086a290000210420032900002105200128021c450d00200310310b2000200437030820002005370300200141306a24000f0b41e9bcc0004133200141286a419cbdc0001038000bf10603057f0b7e067f230041106b21020240200128020422034104490d0020012802002204280000210520012003417c6a22063602042001200441046a36020020064108490d00200429000421072001200341746a220636020420012004410c6a36020020064108490d00200429000c210820012003416c6a22063602042001200441146a36020020064108490d00200429001421092001200341646a220636020420012004411c6a36020020064108490d00200429001c210a20012003415c6a22063602042001200441246a36020020064108490d002004290024210b2001200341546a220636020420012004412c6a36020020064108490d00200429002c210c20012003414c6a22063602042001200441346a36020020064108490d002004290034210d2001200341446a220636020420012004413c6a36020020064108490d00200429003c210e2001200341bc7f6a22063602042001200441c4006a36020020064108490d002004290044210f2001200341b47f6a22063602042001200441cc006a36020020064108490d00200429004c21102001200341ac7f6a22063602042001200441d4006a36020020064108490d00200429005421112001200341a47f6a22063602042001200441dc006a36020020064104490d00200428005c21122001200341a07f6a22063602042001200441e0006a36020020064104490d002004280060211320012003419c7f6a22063602042001200441e4006a36020020064104490d00200428006421142001200341987f6a22063602042001200441e8006a36020020064104490d00200428006821152001200341947f6a22063602042001200441ec006a22043602002006450d0020042d000021062001200341937f6a22163602042001200441016a360200200641014b0d00410021170240024020060e020100010b410121170b20164104490d00200020173a00702000201536026820002014360264200020133602602000201236025c2000200536025820002011370350200020103703482000200f3703402000200e3703382000200d3703302000200c3703282000200b3703202000200a3703182000200937031020002008370308200020073703002004280001210620012003418f7f6a3602042001200441056a3602002000200636026c200041f4006a2002410c6a280000360000200020022800093600710f0b200041023a00700bf9200c067f037e0d7f067e047f027e017f027e0d7f027e067f017e230041c0046b22022400200241186a42003703002002420037031020024200370308200128020821032001280200210402400240200128020422050d00200421010c010b2005210620042101034020012802880b21012006417f6a22060d000b0340200420042f01064102746a41880b6a28020021042005417f6a22050d000b0b200241106a21072002413c6a20042f0106360200200241206a41186a4100360200200241346a2004360200200220033602402002410036023020024200370328200220013602242002410036022020024188016a200241206a109605024002400240024020022903a80122084202510d00200241a0046aad4280808080800484210920024180046aad4280808080800484210a200241bc016a210b20024188016a412c6a210c20024188016a410472210d200241e5016a210e20024188016a41086a2103200241e8026a412c6a210f200241e8026a41106a2110200241b8016a2111200241d0016a21120340200241e8006a41186a220620024188016a41186a2205290300370300200241e8006a41106a221320024188016a41106a2201290300370300200241e8006a41086a22142003290300370300200241c8006a41086a2215200e41086a290000370300200241c8006a41106a2216200e41106a290000370300200241c8006a41186a2217200e41186a29000037030020022002290388013703682002200e290000370348201129030021182012290300211920022903b001211a20022903c801211b20022903c001211c20022903d801211d20022802e001211e20022d00e401211f20022d008502210420024188026a41186a200629030037030020024188026a41106a201329030037030020024188026a41086a20142903003703002002200229036837038802200241a8026a41186a22142017290300370300200241a8026a41106a22202016290300370300200241a8026a41086a22212015290300370300200220022903483703a8020240024002402004ad42ff0183200820085022061b4201520d0020024188016a20024188026a4200201a20061b4200201820061b10910220012903002122200229039001211a20022d00a00121062002290388012123200241086a41106a2213290300210820022903102118024002400240024020022903084201510d0020234200520d01427f200820227c2018201a7c221a2018542215ad7c22182015201820085420182008511b22151b2108427f201a20151b2118410021150c030b20234200520d01201a2018582022200858202220085122161b2115202220087d201a201854ad7d200820227d2018201a54ad7d201a201856202220085620161b22161b2108201a20187d2018201a7d20161b21180c020b2018201a582008202258200820225122161b2115200820227d2018201a54ad7d202220087d201a201854ad7d2018201a56200820225620161b22161b21082018201a7d201a20187d20161b21180c010b427f200820227c2018201a7c221a2018542215ad7c22182015201820085420182008511b22151b2108427f201a20151b2118410121150b201320083703002002201837031020022015ad370308200641ff01710d010b024002400240201f41ff0171222441014622060d00200441ff01710d00201e201ca772450d010b20024188016a20024188026a105a0240024020022d0088012213417f6a221541014b0d00024020150e020002000b20130d0420022802a401450d0420022802a00110310c040b200241c8026a41086a200b41086a290200370300200241c8026a41106a200b41106a290200370300200241c8026a41186a200b41186a2902003703002002200b2902003703c80220012903002125200229039001212620022802dc01212720022802b801212820022802b401212920022802b001212a20022802ac01212b20022802a801212c20022802a401212d20022802a001212e0c020b4102212920130d0120022802a401450d0120022802a00110310c010b201da7210402400240201d422088a722050d00200421010c010b2005210620042101034020012802ec0321012006417f6a22060d000b0340200420042f01064102746a41ec036a28020021042005417f6a22050d000b0b2002201e3602a801200241003602a001200241003602980120024200370390012002200136028c0120024100360288012002200436029c01200220042f01063602a40120024188016a10ce010c020b4102212f02400240024002400240024002400240024020294102460d00202c417f4c0d0102400240202c0d00410121300c010b202c102d2230450d032030202e202c10ab051a0b2005200241c8026a41186a2903003703002001200241c8026a41106a2903003703002003200241c8026a41086a290300370300200220022903c802370388012029410146212f202c2131202c2132202b21332026213420252135202a2136202821370b200241b8036a41186a22382005290300370300200241b8036a41106a22392001290300370300200241b8036a41086a223a2003290300370300200241a0046a41086a221f2021290300370300200241a0046a41106a22162020290300370300200241a0046a41186a2217201429030037030020022002290388013703b803200220022903a8023703a004200441ff0171450d030c020b1032000b202c41011033000b202f4102460d012032ad4220862030ad84100520060d0320024188026a10622031450d02203010310c020b202f4102460d00200f20022903b803370200200f41086a203a290300370200200f41106a2039290300370200200f41186a2038290300370200200220343703e80220022037360290032002202f36028c03200220363602880320022033360284032002203236028003200220313602fc02200220303602f802200220353703f0022036213b203421232035213c203321130c030b2006450d004108211320024188016a20024188026a109202105b213b201041086a20024188016a41086a2802003602002010200229038801370200200f20022903a004370100200f41086a200241a0046a41086a290300370100200f41106a2016290300370100200f41186a2017290300370100427f21232002427f3703f0022002427f3703e80220024108360284034100212f2002410036028c032002203b36028803427f213c0c020b20294102460d020240202d0d004100212d0c030b202e10310c020b4108211320024188016a20024188026a109202105b213b201041086a20024188016a41086a2802003602002010200229038801370200200f20022903a004370100200f41086a200241a0046a41086a290300370100200f41106a2016290300370100200f41186a2017290300370100427f21232002427f3703f0022002427f3703e80220024108360284034100212f2002410036028c032002203b3602880302402031450d0020301031427f21230b427f213c0b0240201c4201520d002002201b3703e802200220193703f002201b21232019213c0b02402024450d00200f20022903a802370000200f41186a2014290300370000200f41106a2020290300370000200f41086a20212903003700000b0240201e450d002002105b360290034101212f2002410136028c030b201da7210402400240201d422088a722140d00200421060c010b2014211520042106034020062802ec0321062015417f6a22150d000b0340200420042f01064102746a41ec036a28020021042014417f6a22140d000b0b20042f010621142002201e3602d803200220143602d403200241003602d003200220043602cc03200241003602c803200242003703c003200220063602bc03200241003602b80320024188016a200241b8036a10970502402002280288014101470d0020023502800342208620023502f8028421080340200241e0036a41186a200d41186a290200221d370300200241e0036a41106a200d41106a2902002218370300200241e0036a41086a200d41086a290200221a3703002002200d29020022223703e00320022802ac01210620022802b001211520022802b401211420024180046a41186a201d37030020024180046a41106a201837030020024180046a41086a201a37030020022022370380042005200a1000220441186a2900003703002001200441106a2900003703002003200441086a2900003703002002200429000037038801200410312017200529030037030020162001290300370300201f200329030037030020022002290388013703a00420024188016a20082009100a104102402002280288012204450d0020132002280290016b2113200228028c01450d00200410310b0240024020060d002005200a1000220441186a2900003703002001200441106a2900003703002003200441086a2900003703002002200429000037038801200410312017200529030037030020162001290300370300201f200329030037030020022002290388013703a00420082009100b0c010b2005200a1000220441186a2900003703002001200441106a2900003703002003200441086a2900003703002002200429000037038801200410312017200529030037030020162001290300370300201f200329030037030020022002290388013703a004200820092014ad4220862006ad84100c201320146a21132015450d00200610310b20024188016a200241b8036a1097052002280288014101460d000b20022013360284030b200241b8036a10ce012038200241c8026a41186a2903003703002039200241c8026a41106a290300370300203a200241c8026a41086a290300370300200220022903c8023703b8030240024020294102460d00200c20022903b803370200200c41086a203a290300370200200c41106a2039290300370200200c41186a20382903003702002002202637038801200220283602b001200220293602ac012002202a3602a8012002202b3602a4012002202d36029c012002202e36029801200220273602d40120022025370390012002202c3602a001410121040240202c200228028003470d0002400240202e20022802f8022201460d00202e2001202c10ad050d02202b2013470d020c010b202b2013470d010b200c200f412010ad050d0020262023852025203c85844200520d00202a203b470d0002402029202f470d004100210420294101470d012028200228029003460d010b410121040b0240202d450d00202e10310b20044102460d002004450d010b2003200241e8026a41d00010ab051a200241003a00880120024188026a20024188016a10f6010c020b20022802fc02450d0120022802f80210310c010b201da7210402400240201d422088a722050d00200421010c010b2005210620042101034020012802ec0321012006417f6a22060d000b0340200420042f01064102746a41ec036a28020021042005417f6a22050d000b0b2002201e3602a801200241003602a001200241003602980120024200370390012002200136028c0120024100360288012002200436029c01200220042f01063602a40120024188016a10ce010b20024188016a200241206a10960520022903a80122084202520d000b20022903082108200241206a1090022008500d010c020b200241206a1090020b02402002290310200241186a29030084500d0041e8ddc4004133419cdec40010a401000b20022903084200520d00200220073602880120024188016a10430c010b200220073602880120024188016a105f0b200241c0046a24000ba0d80109017f017e067f057e017f017e027f037e087f230041e0096b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402001280200417f6a0e12010002000304051e19180017161514131211010b000b200141106a29030021042001410c6a280200210520022d00002102024002400240024002400240024002400240200141086a2802002206417f6a0e0708000102030405080b2004a721070240200241ff01714101460d002007450d44200510310c440b2007450d41200510310c410b200241ff01710d414108102d2202450d152002200437000041cbc7c200ad4280808080a001842002ad42808080808001841003200210310c400b2004a721070240200241ff0171450d0020070d040c410b41d5c7c200ad4280808080d000842004428080808070832005ad8410032007450d3f200510310c3f0b2004422088a721082004a721090240200241ff0171450d0002402008450d00200841186c21072005210203400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200741686a22070d000b0b410121074100210a4105210820090d3d0c3e0b0240200841186c2202450d00200520026a2107200521020340200241086a350200422086200235020084200241146a3502004220862002410c6a350200841003200241186a22022007470d000b0b02402008450d00200841186c21072005210203400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200741686a22070d000b0b410121074100210a4107210820090d3c0c3d0b2004422088a721082004a721090240200241ff0171450d0002402008450d002008410c6c21072005210203400240200241046a280200450d00200228020010310b2002410c6a2102200741746a22070d000b0b410021074101210a410521082009450d3d0c3c0b02402008410c6c2202450d00200520026a2107200521020340200241086a35020042208620023502008410092002410c6a22022007470d000b0b02402008450d002008410c6c21072005210203400240200241046a280200450d00200228020010310b2002410c6a2102200741746a22070d000b0b410021074101210a4107210820090d3b0c3c0b2004a72107200241ff0171450d012007450d3d0b200510310c3c0b2004428080808070832005ad84101b2007450d3a200510310c3a0b200241ff01710d3a0c390b200341e2006a22052001410f6a2d00003a000020034198046a41086a22062001411c6a29020037030020034198046a41106a2208200141246a29020037030020034198046a41186a220a2001412c6a280200360200200320012f000d3b01602003200141146a2902003703980420022f0001200241036a2d0000411074722109200241186a290000210b200241106a290000210c200141c8006a290300210d200141c0006a290300210e200141386a290300210f200241206a2d00002110200241086a2900002111200241046a2800002112200141106a28020021072001410c6a2d00002113200141306a290300210420022d000021020240024002400240024002400240024002400240200141086a2802000e050001020304000b200341c0046a41146a4101360200200342013702c404200341d494c4003602c004200341023602ac01200341cc94c4003602a8012003200341a8016a3602d004200341c0046a41dc94c40010b301000b200341a8036a41086a2006290300370300200341a8036a41106a2008290300370300200341a8036a41186a200a280200360200200320032f01603b01880420032003290398043703a803200320052d00003a008a04200320093b019002200320094110763a00920220124104200241ff017141014622021b2105024020020d0041cac4c4002102410f2107024020050e07003c050607083d000b2011422088a721072011a721020c3c0b200341bf016a200b3700002003200c3700b701200320032d0092023a00aa01200320032f0190023b01a801200320103a00c701200320113700af01200320053600ab010240201341ff01714101460d0020032f01880420032d008a04411074722102200341a8036a41106a290300210e20032903b003211120032802c003210520032903a803210d0c380b200341a8026a200741067610e30120032802a80221080240024020032802b0022007413f7122024b0d00410021060c010b200820024105746a22062f0000200641026a2d0000411074722102200629000f211120062d001f21052006290007210d20062800032107200641176a290000210e410121060b024020032802ac02450d00200810310b20060d37410121064200210d4200210b0c380b200341a8016a41086a2006290300370300200341a8016a41106a2008290300370300200341a8016a41186a200a280200360200200320032f01603b01880320032003290398043703a801200320052d00003a008a03200241ff01710d0502400240201341ff01714101460d0020032f01880320032d008a03411074722102200341a8016a41106a290300211120032903b001210b20032802c001210520032903a801210c0c010b200341a8036a200741067610e30120032802a80321080240024020032802b0032007413f7122024b0d00410021060c010b200820024105746a22062f0000200641026a2d0000411074722102200629000f210b20062d001f21052006290007210c20062800032107200641176a2900002111410121060b024020032802ac03450d00200810310b2006450d3a0b200341d7046a20113700002003200b3700cf04200320053a00df042003200c3700c704200320073600c304200320023b01c0042003200241107622023a009202200320023a00c2044114102d2202450d13200241002900a09b41370000200241106a41002800b09b41360000200241086a41002900a89b4137000020034294808080c0023702ac03200320023602a803200341c0046a200341a8036a104620034188016a41186a220720033502b00342208620033502a803841000220241186a29000037030020034188016a41106a2205200241106a29000037030020034188016a41086a2206200241086a290000370300200320022900003703880120021031200341e8006a41186a2007290300370300200341e8006a41106a2005290300370300200341e8006a41086a20062903003703002003200329038801370368024020032802ac03450d0020032802a80310310b200341a8036a200341e8006aad4280808080800484220c100210410240024020032802a80322020d004200210b420021110c010b200341a8036a41086a2802004110490d13200241086a29000021112002290000210b20032802ac03450d00200210310b200b20045422072011200f542011200f5122021b0d11200b2004562011200f5620021b450d352003200b20047d3703a80320032011200f7d2007ad7d3703b0032003200341a8036a3602a802200341a8026a105f0c350b200141e0006a290300210b200141d8006a290300210c200141d0006a2903002111200341a8036a41086a2006290300370300200341a8036a41106a2008290300370300200341a8036a41186a200a280200360200200320032f01603b018804200320052d00003a008a0420032003290398043703a803200341a8026a41106a200d3703002003200e3703b002200320113e02c0022003200f3703a80220032004420888a722053b018801200320054110763a008a01200241ff01710d0402400240201341ff01714101460d0020032f01880420032d008a04411074722106200341a8036a41106a290300211420032903b003211520032802c003210220032903a80321160c010b200341c0046a200741067610e30120032802c004210a0240024020032802c8042007413f7122024b0d00410021080c010b200a20024105746a22082f0000200841026a2d0000411074722106200829000f211520082d001f21022008290007211620082800032107200841176a2900002114410121080b024020032802c404450d00200a10310b2008450d390b2004422088a72108200341bf016a2014370000200320153700b701200320023a00c701200320163700af01200320073600ab01200320063b01a8012003200641107622073a009202200320073a00aa0102402004a741ff01714101460d002011a721020c330b20034188036a2004422688a710e301200328028803210a024002402003280290032008413f7122074b0d00410021072016210f2015210e2014210d200621050c010b200a20074105746a22072f0000200741026a2d0000411074722105200729000f210e20072d001f21022007290007210f20072800032108200741176a290000210d410121070b0240200328028c03450d00200a10310b20070d32410121070c330b200341a8026a41086a2006290300370300200341a8026a41106a2008290300370300200341a8026a41186a200a280200360200200320032f01603b016420032003290398043703a802200320052d00003a0066200320093b019002200320094110763a00920220124104200241ff017141014622021b210520020d0441cac4c4002102410f2107024020050e0700380102030439000b2011422088a721072011a721020c380b41b0c4c4002102410c21070c370b41a7c4c4002102410921070c360b4194c4c4002102411321070c350b4183c4c4002102411121070c340b200341bf016a200b3700002003200c3700b701200320032d0092023a00aa01200320032f0190023b01a801200320103a00c701200320113700af01200320053600ab010240201341ff01714101460d0020032f016420032d0066411074722102200341a8026a41106a290300210e20032903b002211120032802c002210520032903a802210d0c2b0b200341a8036a200741067610e30120032802a80321080240024020032802b0032007413f7122024b0d00410021060c010b200820024105746a22062f0000200641026a2d0000411074722102200629000f211120062d001f21052006290007210d20062800032107200641176a290000210e410121060b024020032802ac03450d00200810310b20060d2a410121064200210d4200210b0c2b0b2003418a036a22052001410f6a2d00003a000020034198046a41086a22062001411c6a29020037030020034198046a41106a2208200141246a29020037030020034198046a41186a220a2001412c6a280200360200200320012f000d3b0188032003200141146a29020037039804200141c8006a290300210d200141c0006a290300210e200141386a2903002104200141106a28020021072001410c6a2d00002112200141306a290300210f20022d000021090240024002400240200141086a2802000e0400010203000b200341c0046a41146a4101360200200342013702c404200341d494c4003602c004200341023602ac01200341cc94c4003602a8012003200341a8016a3602d004200341c0046a41dc94c40010b301000b200241036a2d0000211320022f00012110200241186a290000210e200241106a2900002111200241206a2d00002117200241086a290000210d200241046a2800002102200341a8036a41086a2006290300370300200341a8036a41106a2008290300370300200341a8036a41186a200a280200360200200320032f0188033b018801200320052d00003a008a0120032003290398043703a80320024104200941ff017141014622051b2106024020050d0041cac4c4002102410f2107024002400240024020060e07002e0102032a2f000b200d422088a72107200da721020c2e0b41b0c4c4002102410c21070c2d0b41a7c4c4002102410921070c2c0b4194c4c4002102411321070c2b0b200341bf016a200e370000200320113700b701200320173a00c7012003200d3700af01200320063600ab012003201020134110747222023b01a801200320024110763a00aa010240201241ff01714101460d0020032f01880120032d008a01411074722102200341a8036a41106a290300210d20032903b003210e20032802c003210520032903a80321110c270b200341a8026a200741067610e30120032802a80221080240024020032802b0022007413f7122024b0d00410021060c010b200820024105746a22062f0000200641026a2d0000411074722102200629000f210e20062d001f21052006290007211120062800032107200641176a290000210d410121060b024020032802ac02450d00200810310b20060d26410121060c270b200341a8026a41086a2006290300370300200341a8026a41106a2008290300370300200341a8026a41186a200a280200360200200320032f0188033b016420032003290398043703a802200320052d00003a0066200941ff01710d2402400240201241ff01714101460d0020032f016420032d0066411074722102200341a8026a41106a290300211120032903b002210b20032802c002210520032903a802210c0c010b200341a8016a200741067610e30120032802a80121080240024020032802b0012007413f7122024b0d00410021060c010b200820024105746a22062f0000200641026a2d0000411074722102200629000f210b20062d001f21052006290007210c20062800032107200641176a2900002111410121060b024020032802ac01450d00200810310b2006450d290b200341d7046a20113700002003200b3700cf04200320053a00df042003200c3700c704200320073600c304200320023b01c004200320024110763a00c2044110102d2202450d0920024100290089f342370000200241086a4100290091f3423700002003429080808080023702ac01200320023602a801200341c0046a200341a8016a104620034188016a41186a220720033502b00142208620033502a801841000220241186a29000037030020034188016a41106a2205200241106a29000037030020034188016a41086a2206200241086a290000370300200320022900003703880120021031200341e8006a41186a2007290300370300200341e8006a41106a2005290300370300200341e8006a41086a20062903003703002003200329038801370368024020032802ac01450d0020032802a80110310b200341a8016a200341e8006aad4280808080800484220c100210410240024020032802a80122020d004200210b420021110c010b200341a8016a41086a2802004110490d09200241086a29000021112002290000210b20032802ac01450d00200210310b200b200f5422072011200454201120045122021b0d07200b200f56201120045620021b450d232003200b200f7d3703a8012003201120047d2007ad7d3703b0012003200341a8016a3602a803200341a8036a10e6020c230b200141e0006a2903002111200141d8006a290300210b200141d0006a290300210c200341a8026a41086a2006290300370300200341a8026a41106a2008290300370300200341a8026a41186a200a280200360200200320032f0188033b019002200320052d00003a00920220032003290398043703a802200941ff01710d2302400240201241ff01714101460d0020032f01900220032d009202411074722102200341a8026a41106a290300211420032903b002211520032802c002210520032903a80221160c010b200341c0046a200741067610e30120032802c00421080240024020032802c8042007413f7122024b0d00410021060c010b200820024105746a22062f0000200641026a2d0000411074722102200629000f211520062d001f21052006290007211620062800032107200641176a2900002114410121060b024020032802c404450d00200810310b2006450d280b200f422088a72106200341bf016a2014370000200320153700b701200320053a00c701200320163700af01200320073600ab01200320023b01a801200320024110763a00aa010240200fa741ff01714101460d00200f420888a72102200ca721050c210b200341a8036a200f422688a710e30120032802a80321080240024020032802b0032006413f7122074b0d0041002107201621042015210e2014210d0c010b200820074105746a22072f0000200741026a2d0000411074722102200729000f210e20072d001f21052007290007210420072800032106200741176a290000210d410121070b024020032802ac03450d00200810310b20070d2041012107420021044200210f0c210b024020022d00004102470d00200141086a290300210f20034188036a41086a220741acc7c400ad4280808080b002841001220241086a29000037030020032002290000370388032002103120034190026a41086a2007290300370300200320032903880337039002200341286a20034190026a4110410141004100103f20032802284101460d0420034188036a41086a220741b5b2c000ad4280808080d001841001220241086a29000037030020032002290000370388032002103120034190026a41086a2007290300370300200320032903880337039002200341c0046a20034190026aad4280808080800284220410021041024020032802c0042202450d00200341c0046a41086a2802004108490d062002290000210d024020032802c404450d00200210310b200d500d0020034188036a41086a220741b5b2c000ad4280808080d001841001220241086a29000037030020032002290000370388032002103120034190026a41086a2007290300370300200320032903880337039002200341c0046a2004100210410240024020032802c00422020d004200210d0c010b200341c0046a41086a2802004108490d052002290000210d20032802c404450d00200210310b200d42dc0b7c200f560d030b20034188036a41086a220241b5b2c000ad4280808080d001841001220741086a29000037030020032007290000370388032007103120034190026a41086a220520022903003703002003200329038803370390022003200f3703c0042004200341c0046aad42808080808001841003200241acc7c400ad4280808080b002841001220741086a2900003703002003200729000037038803200710312005200229030037030020032003290388033703900241012105200341013a008801200420034188016aad428080808010841003200041023a00080c340b200041810c3b01082000410f360204200041cac4c4003602002000410a6a41003a00000c320b410221052001410c6a2802002107200141086a280200211820012802042109024020022d00004102460d0041cac4c4002113410f21100c1d0b20034188036a41086a220641eca7c400ad4280808080f002841001220241086a29000037030020032002290000370388032002103120034190026a41086a2006290300370300200320032903880337039002200341c0046a20034190026aad4280808080800284220c10021041024020032802c0042202450d00200341c8046a280200210620032802c404210841002105200341003a0088010240024002402006450d0020022d0000220641014b0d0020060e020201020b41e9bcc0004133200341d8096a419cbdc0001038000b410121050b2008450d00200210310b024020054102460d002005410171450d004197cdc2002113411c21100c1d0b20034188036a41086a220241eca7c400ad4280808080f002841001220541086a29000037030020032005290000370388032005103120034190026a41086a22062002290300370300200320032903880337039002200341013a008804200c20034188046aad428080808010841003105b210820024185c8c200ad42808080809002841001220541086a29000037030020032005290000370388032005103120062002290300370300200320032903880337039002200341a8016a200c100210410240024002400240024020032802a8012202450d0020032802ac0121052003200341a8016a41086a2802003602ac03200320023602a803200341c0046a200341a8036a10860120032802c0042206450d0420032902c404210402402005450d00200210310b200320063602880402402004422088220fa722022004a7470d00200341c0046a21050c020b200341c0046a21050c020b4104210620034104360288044200210441002102200341c0046a21050b024020022004a7470d00200241016a220a2002490d1820024101742212200a2012200a4b1bad220f42c4007e220d422088a70d18200da7220a4100480d180240024020020d00200a102d21060c010b2006200241c4006c200a102f21060b2006450d022003200636028804200442808080807083200f8421040b2004422088220fa721020b2006200241c4006c6a22022008360204200241003a000020022005290200370208200241106a200541086a290200370200200241186a200541106a290200370200200241206a200541186a290200370200200241286a200541206a290200370200200241306a200541286a290200370200200241386a200541306a290200370200200241c0006a200541386a280200360200200f422086200442ffffffff0f83844280808080107c21042009200741f0006c6a210a024020070d00200921060c1d0b200341c0046a41106a2119200341c0046a41086a211a200341e8006a41186a2117200341bf026a211b20092106024003402006280204210220062802002107200341c0046a200641086a41e80010ab051a200641f0006a21062002450d1e200341a8016a200341c0046a41e80010ab051a200320023602c404200320073602c004201a200341a8016a41e80010ab051a2003280288042112105b2102200341a8026a200341c0046a10b90202400240024020032802c00422070d0041c9cdc2002113411021100c010b0240200720024d0d00411a211041d9cdc20021130c010b200341a8036a2007417f6a1097030240200341a8036a2019412010ad05450d004119211041f3cdc20021130c010b024020032802c004221341002002417b6a2207200720024b1b4f0d0041262110418ccec20021130c010b02400240201220122004422088220fa7220841c4006c22076a460d00201241016a2102034002402002417f6a2d00004101470d0041012105200341a8026a2002460d032002200341a8026a412010ad05450d030b200241c4006a2102200741bc7f6a22070d000b0b410021050b200341a8036a2013109703200341a8036a200341a8026a412010ad05210220034188036a41086a220720034198046a41086a29020037030020034188036a41106a20034198046a41106a29020037030020032003290298043703880341b3cdc20021134116211020050d1f20020d010c1f0b20034188036a41086a20034198046a41086a29020037030020034188036a41106a20034198046a41106a2902003703002003200329029804370388030c1e0b20034190026a410e6a220520034188036a410e6a29010037010020034190026a41086a22132007290300370300200320032903880337039002200341a8026a200341c0046a10b90220174200370300200341e8006a41106a22074200370300200341e8006a41086a2210420037030020034200370368024041c800102d2202450d0020034188016a1066200241186a20034188016a41186a290300370200200241106a20034188016a41106a290300370200200241086a20034188016a41086a29030037020020022003290388013702002002410236022020024101360244200220032903683702242002412c6a2010290300370200200241346a20072903003702002002413c6a2017290300370200200320023602a80320034282808080203702ac03200341a8036a10c402200341a8036a41186a4200370300200341a8036a41106a4200370300200341a8036a41086a22074200370300200342003703a803200341a8036a10d20320072013290300370300200341a8036a410e6a2213200529010037010020032003290390023703a80320032d00aa02210520032f01a8022110201b290000210d20032900b702210e20032d00c702211c20032900af02211120032800ab02211d0240024020082004a7460d002004210b0c010b200841016a22022008490d1a200fa7410174221e20022002201e491bad220b42c4007e220f422088a70d1a200fa7221e4100480d1a0240024020080d00201e102d21020c010b2012200841c4006c201e102f21020b2002450d0320032002360288042004422088220fa721080b200328028804200841c4006c6a2202201020054110747222053b00012002200e37001020024116360028200241b3cdc200360024200241003a00212002201c3a0020200220113700082002201d360004200241013a0000200220032903a80337002c200241036a20054110763a0000200241186a200d3700002002413a6a2013290100370000200241346a2007290300370000200b42ffffffff0f832104200f422086210f024020032802cc042207450d0020032802c4042102200741246c210703400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022007415c6a22070d000b0b200f2004842104024020032802c804450d0020032802c40410310b20044280808080107c21042006200a470d010c200b0b41c80041041033000b201e41041033000b200a41041033000b41e9bcc0004133200341d8096a419cbdc0001038000b41e7b1c00041ce00419cdec40010a401000b41e9bcc0004133200341d8096a419cbdc0001038000b41b7b1c0004130419cdec40010a401000b41e9bcc0004133200341d8096a419cbdc0001038000b2003200f200b7d3703a8012003200420117d200f200b54ad7d3703b0012003200341a8016a3602a803200341a8036a10480c1b0b41e9bcc0004133200341d8096a419cbdc0001038000b411041011033000b20032004200b7d3703a8032003200f20117d2004200b54ad7d3703b0032003200341a8036a3602a802200341a8026a10430c230b41e9bcc0004133200341d8096a419cbdc0001038000b411441011033000b410841011033000b200341c0046a41386a200141c0006a290300370300200341c0046a41306a200141386a290300370300200341c0046a41286a200141306a290300370300200341c0046a41206a200141286a290300370300200341c0046a41186a200141206a290300370300200341c0046a41106a200141186a290300370300200341c0046a41086a200141106a2903003703002003200141086a2903003703c004200341a8016a41206a200241206a2d00003a0000200341a8016a41186a200241186a290000370300200341a8016a41106a200241106a290000370300200341a8016a41086a200241086a290000370300200320022900003703a801200341d8006a200341c0046a200341a8016a103d02400240200328025822020d00200041023a0008410021170c010b200328025c210720004181243b010820002002360200410021172000410a6a41003a0000200020073602040b41012105410121074101210641012118410121084101210a410121094101211241012113410121100c360b200341c0046a200141086a41f00410ab051a200341a8016a41206a200241206a2d00003a0000200341a8016a41186a200241186a290000370300200341a8016a41106a200241106a290000370300200341a8016a41086a200241086a290000370300200320022900003703a801200341d0006a200341c0046a200341a8016a10d20402400240200328025022020d00200041023a0008410021100c010b2003280254210720004181223b010820002002360200410021102000410a6a41003a0000200020073602040b41012105410121074101210641012118410121084101210a4101210941012112410121130c340b2001410c6a2802002107200141086a28020021062001280204210502400240024020022d0000450d0002402007450d00200741f8046c210720052102034020021030200241f8046a2102200741887b6a22070d000b0b02402006450d00200510310b20004181203b01082000411136020420004183c4c400360200410021132000410a6a41003a0000410121050c010b41002113200341003602b003200342043703a803200741f8046c220241f8046d21080240024020020d00410421070c010b2008ad420c7e2204422088a70d092004a7220a4100480d09200a102d2207450d02200320083602ac03200320073602a8030b2003200520026a3602cc04200320053602c80420032006ad4220862005ad843703c004200341a8016a41086a41003602002003200341a8036a41086a3602ac01200320073602a801200341c0046a200341a8016a10c403200341a8026a41086a200341a8036a41086a2802002202360200200320032903a80322043703a802200341a8016a410b6a2002360000200320043700ab01200341c0046a41086a200341af016a2900003700002003410b3a00c004200320032900a8013700c1044101210541014100200341c0046a1045200041023a00080b410121074101210641012118410121084101210a4101210941012112410121100c340b200a41041033000b20034198046a41086a2206200141186a29020037030020034198046a41106a2208200141206a29020037030020034198046a41186a220a200141286a2802003602002003200141106a2902003703980420022f0001200241036a2d0000411074722107200241186a290000210f200241106a290000210d200241206a2d00002105200241086a290000210441042113200241046a28000021092001410c6a2802002110200141086a280200211220022d0000210202400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802040e0400010203000b200341d4046a4101360200200342013702c404200341d494c4003602c004200341023602ac01200341cc94c4003602a8012003200341a8016a3602d004200341c0046a41dc94c40010b301000b200320123602680240200241ff01714101460d00411321074194c4c40021020c180b200341bf036a200f3700002003200d3700b703200320053a00c703200320043700af03200320093600ab03200320073b01a803200320074110763a00aa0320034188036a41086a220741f8bfc000ad42808080808001841001220241086a29000037030020032002290000370388032002103120034190026a41086a2007290300370300200320032903880337039002200341a8016a20034190026aad428080808080028410021041024020032802a80122050d00410021020c140b200341a8016a41086a280200210620032802ac012108200341003a00e0044100210202400340200341003a00880120062002460d01200341c0046a20026a200520026a2d00003a00002003200241016a22073a00e0042007210220074120460d140c000b0b200241ff0171450d14200341003a00e0040c140b200341a8036a41186a200a280200360200200341a8036a41106a2008290300370300200341a8036a41086a200629030037030020032003290398043703a803410121060240200241ff01714101470d00200320073b018801200320074110763a008a0141002106200921130b200341d0046a2202200f3703002003200d3703c804200320032d008a013a008a04200320032f0188013b018804200320053a00d804200320043703c00402402006450d0041cac4c4002102410f2107024002400240024020130e070614000102031c060b41b0c4c4002102410c21070c1b0b41a7c4c4002102410921070c1a0b4194c4c4002102411321070c190b4183c4c4002102411121070c180b200341b7016a200341c0046a41086a290300370000200341bf016a2002290300370000200341c7016a200341d8046a2d00003a0000200320032d008a043a00aa01200320032f0188043b01a801200320133600ab01200320032903c0043700af0120034188036a41086a220741f8bfc000ad42808080808001841001220241086a29000037030020032002290000370388032002103120034190026a41086a2007290300370300200320032903880337039002200341a8026a20034190026aad4280808080800284220e10021041024020032802a80222050d00410021070c0c0b200341a8026a41086a280200210620032802ac02210a200341003a00e0044100210202400340200341003a00880120062002460d01200341c0046a20026a200520026a2d00003a00002003200241016a22073a00e0042007210220074120460d0c0c000b0b200241ff0171450d0c200341003a00e0040c0c0b2001412c6a2802002113200341a8026a41186a200a280200360200200341a8026a41106a2008290300370300200341a8026a41086a200629030037030020032003290398043703a8022003201336028804200341e8006a41106a200f3703002003200d370370200320053a008001200320073b0164200320074110763a006620094104200241ff017141014622021b210520032004370368024020020d0041cac4c4002102410f21070240024002400240024020050e07000c010203040e000b2004422088a721072004a721020c0d0b41b0c4c4002102410c21070c0c0b41a7c4c4002102410921070c0b0b4194c4c4002102411321070c0a0b4183c4c4002102411121070c090b200341b7036a200341e8006a41086a290300370000200341bf036a200341e8006a41106a290300370000200341c7036a20034180016a2d00003a0000200320032d00663a00aa03200320032f01643b01a803200320053600ab03200320032903683700af0320034188036a41086a220741f8bfc000ad42808080808001841001220241086a29000037030020032002290000370388032002103120034190026a41086a2007290300370300200320032903880337039002200341a8016a20034190026aad428080808080028410021041024020032802a80122050d00410021070c030b200341a8016a41086a280200210620032802ac01210a200341003a00e0044100210202400340200341003a00880120062002460d01200341c0046a20026a200520026a2d00003a00002003200241016a22073a00e0042007210220074120460d030c000b0b200241ff0171450d03200341003a00e0040c030b2004422088a721072004a721020c150b20034188016a41186a200341c0046a41186a29030037030020034188016a41106a200341c0046a41106a29030037030020034188016a41086a200341c0046a41086a290300370300200320032903c00437038801200741ff0171411f4d0d0120032f01880120032d008a014110747221022003419f016a290000210d200329009701210f20032d00a7012106200329008f012104200328008b01210841012107200a450d00200510310b200320023b018803200320024110763a008a0320070d01200341d8046a4200370300200341d0046a4200370300200341c8046a4200370300200342003703c0040c020b41e9bcc0004133200341d8096a419cbdc0001038000b200341d7046a200d3700002003200f3700cf04200320032d008a033a00c204200320032f0188033b01c004200320063a00df04200320043700c704200320083600c3040b0240200341a8036a200341c0046a412010ad05450d00418ec2c0002102412221070c030b0240201241ff01714101460d0020124108762102200341b8026a290300210420032903b002210f20032802c002210720032903a802210d0c020b200341c0046a201041067610e30120032802c00421060240024020032802c8042010413f7122024b0d00410021050c010b200620024105746a22052f0000200541026a2d0000411074722102200529000f210f20052d001f21072005290007210d20052800032110200541176a2900002104410121050b024020032802c404450d00200610310b20050d010b41bcc4c4002102410e21070c010b20034188036a41106a220520043703002003200f37039003200320073a00a0032003200d37038803200320023b019002200320024110763a009202200341c0046a201341f80410ab051a200341b0016a200329038803370300200341a8016a41106a200329039003370300200341c0016a2005290300370300200341c8016a20032d00a0033a0000200341013a00a801200320032f0190023b00a901200320032d0092023a00ab01200320103602ac0120034188016a200341c0046a200341a8016a108e0241012102024020032d00900122074102460d0020034191016a310000210f2003310092012104200335028c01210d200328028801210541d1c3c400ad4280808080d00184100702402007450d00200f10130b20041013410021022005450d00200d4220862005ad8410070b200320023a00c2042003418a043b01c0044100210241014100200341c0046a1045201310310c0e0b20034188046a10b8010c0d0b20034188016a41186a200341c0046a41186a29030037030020034188016a41106a200341c0046a41106a29030037030020034188016a41086a200341c0046a41086a290300370300200320032903c00437038801200741ff0171411f4d0d0120032f01880120032d008a014110747221022003419f016a290000210f200329009701210420032d00a7012106200329008f01210d200328008b01210841012107200a450d00200510310b200320023b018803200320024110763a008a0320070d01200341d8046a4200370300200341c0046a41106a4200370300200341c8046a4200370300200342003703c0040c020b41e9bcc0004133200341d8096a419cbdc0001038000b200341d7046a200f370000200320043700cf04200320032d008a033a00c204200320032f0188033b01c004200320063a00df042003200d3700c704200320083600c3040b0240200341a8016a200341c0046a412010ad05450d0041b0c2c0002102413121070c090b024002400240201241ff01714101460d0020124108762102200341b8036a290300210f20032903b003210d20032802c003210720032903a80321040c010b200341c0046a201041067610e30120032802c00421060240024020032802c8042010413f7122024b0d00410021050c010b200620024105746a22052f0000200541026a2d0000411074722102200529000f210d20052d001f21072005290007210420052800032110200541176a290000210f410121050b024020032802c404450d00200610310b20050d004101210542002111420021040c010b2004428080808070832111410021050b20034188036a41106a2206200f3703002003200d37039003200320073a00a003200320023b019002200320024110763a00920220032011200442ffffffff0f8384370388032005450d010b41bcc4c4002102410e21070c070b200341e8006a41086a20034188036a41086a2202290300370300200341e8006a41106a2006290300370300200341e8006a41186a20034188036a41186a2d00003a0000200320032d0092023a0066200320032f0190023b01642003200329038803370368200241f8bfc000ad42808080808001841001220741086a29000037030020032007290000370388032007103120034190026a41086a2002290300370300200320032903880337039002200341a8026a200e10021041410021084200210f0240024002400240024020032802a80222050d004200210e42002104410021050c010b200341a8026a41086a280200210620032802ac02210a200341003a00e00441002102024002400340200341003a00880120062002460d01200341c0046a20026a200520026a2d00003a00002003200241016a22073a00e0042007210220074120460d020c000b0b200241ff0171450d02200341003a00e0040c020b20034188016a41186a200341c0046a41186a29030037030020034188016a41106a200341c0046a41106a29030037030020034188016a41086a200341c0046a41086a290300370300200320032903c00437038801200741ff0171411f4d0d0120032d008a01411074210220032f01880121092003419f016a290000210d200329009701211120032d00a7012106200329008f01210e200328008b0121070240200a450d00200510310b20092002722102200e428080808070832104410121050b200320023b018803200320024110763a008a0320050d014200210d410021024200210e42002104410021070c020b41e9bcc0004133200341d8096a419cbdc0001038000b2004200e42ffffffff0f8384210e2011210f200621080b200341d9046a200d370000200341d1046a200f370000200341e1046a20083a0000200341c9046a2004200e42ffffffff0f8384370000200320073600c5042003418a023b01c004200320023b01c204200320024110763a00c4044100210241014100200341c0046a1045200341cf046a200341e8006a41086a290300370000200341d7046a200341e8006a41106a290300370000200341df046a20034180016a2d00003a0000200320032d00663a00c204200320032f01643b01c004200320103600c304200320032903683700c70420034188036a41086a220541f8bfc000ad42808080808001841001220741086a29000037030020032007290000370388032007103120034190026a41086a2005290300370300200320032903880337039002200341103602ac02200320034190026a3602a802200341c0046a200341a8026a10b0020c060b20034188016a41186a200341c0046a41186a29030037030020034188016a41106a200341c0046a41106a29030037030020034188016a41086a200341c0046a41086a290300370300200320032903c00437038801200741ff0171411f4d0d0120032f01880120032d008a014110747221022003419f016a290000210d200329009701210f20032d00a7012107200329008f012104200328008b01210602402008450d00200510310b200320023b018804200320024110763a008a04410121020b200320032d008a043a008a03200320032f0188043b01880320020d01200341d8046a4200370300200341d0046a4200370300200341c8046a4200370300200342003703c0040c020b41e9bcc0004133200341d8096a419cbdc0001038000b200341d7046a200d3700002003200f3700cf04200320032d008a033a00c204200320032f0188033b01c004200320073a00df04200320043700c704200320063600c3040b0240200341a8036a200341c0046a412010ad05450d00418ec2c0002102412221070c010b200341c0046a201241f80410ab051a41002102200341003a00a801200341a8026a200341c0046a200341a8016a108e0241012107024020032d00b00222054102460d00200341b1026a310000210f20033100b202210420033502ac02210d20032802a802210641d1c3c400ad4280808080d00184100702402005450d00200f10130b20041013410021072006450d00200d4220862006ad8410070b200320073a00c2042003410a3b01c00441014100200341c0046a1045201210310c010b200341e8006a10b8010b0240024020020d00200041023a0008410021120c010b200041811e3b01082000200736020420002002360200410021122000410a6a41003a00000b41012105410121074101210641012118410121084101210a410121090c310b200341c0046a200141086a41800110ab051a200341a8016a41206a200241206a2d00003a0000200341a8016a41186a200241186a290000370300200341a8016a41106a200241106a290000370300200341a8016a41086a200241086a290000370300200320022900003703a801200341c8006a200341c0046a200341a8016a10930202400240200328024822020d00200041023a0008410021090c010b200328024c2107200041811c3b010820002002360200410021092000410a6a41003a0000200020073602040b41012105410121074101210641012118410121084101210a0c2f0b200341c0046a200141086a41c80010ab051a200341a8016a41206a200241206a2d00003a0000200341a8016a41186a200241186a290000370300200341a8016a41106a200241106a290000370300200341a8016a41086a200241086a290000370300200320022900003703a801200341c0006a200341c0046a200341a8016a10e10202400240200328024022020d00200041023a00084100210a0c010b20032802442107200041811a3b0108200020023602004100210a2000410a6a41003a0000200020073602040b41012105410121074101210641012118410121080c2d0b200141086a280200211d2001280204211a200341a8016a2001410c6a41e40010ab051a200241186a290000210f200241106a290000210d200241206a2d00002105200241086a2900002104200241036a2d00002106200241046a280000210720022f0001210820022d00002102200341a8026a200341a8016a41046a41e00010ab051a20074104200241014622021b2107024002400240024020020d0041cac4c4002102410f210502400240024002400240024020070e0700010203040507000b2004a721022004422088a721050c060b41bcc4c4002102410e21050c050b41b0c4c4002102410c21050c040b41a7c4c4002102410921050c030b4194c4c4002102411321050c020b4183c4c4002102411121050c010b200341bf036a200f3700002003200d3700b703200320053a00c703200320043700af03200320073600ab032003200820064110747222023b01a803200320024110763a00aa03200341c0046a200341a8036a105302402003280280052202450d00200341be056a2d00002107200341bc056a2f01002105200341d3056a2900002104200341bf056a2800002106200341a4056a2802002108200341a0056a280200211220032900cb05210f20032d00db05210a20032900c305210d20032802840521090240200341b4056a280200450d00200341b0056a28020010310b2007411074210702402009450d00200210310b2005200772210202402008450d00201210310b2003419f036a2004370000200320023b018803200320024110763a008a032003200f370097032003200a3a00a7032003200d37008f032003200636008b03200341a8036a200341a8026a41e00010ab051a20034188046a20034188036a10990220034190026a2003350290044220862003280288042212ad8410021041024002402003280290022208450d0020034198026a28020021062003280294022113200341003a00b804200621054100210202400240024002400340200341003a00880120062002460d0120034198046a20026a200820026a2d00003a00002003200241016a22073a00b8042005417f6a21052007210220074120470d000b20034188016a41186a20034198046a41186a29030037030020034188016a41106a20034198046a41106a29030037030020034188016a41086a20034198046a41086a290300370300200320032903980437038801200741ff0171411f4d0d03200620076b210a2003419f016a2900002104200329009701210f20032d00a7012110200329008f01210d200328008b01211720032f018801210920032d008a01211841002102200341003a00b804200820076a2106200920184110747221090340200a2002460d0220034198046a20026a200620026a2d00003a00002003200241016a22073a00b8042007210220074120470d000b200341e8006a41186a20034198046a41186a290300370300200341e8006a41106a20034198046a41106a290300370300200341e8006a41086a20034198046a41086a2903003703002003200329039804370368200741ff0171411f4d0d03200520076b2102200620076a2107200341ff006a290000210e2003290077211120032d0087012118200329006f210b200328006b211c20032f0168210620032d006a210a41002105200341003a00b8042006200a41107472210a03402002450d0320034198046a20056a20072d00003a00002003200541016a22063a00b8042002417f6a2102200741016a21072006210520064120470d000b200641ff01714120490d0320032f01980420032d009a04411074722102200341af046a290000210c20032900a704211420032d00b7042107200329009f042115200328009b04210502402013450d00200810310b20034183056a20024110763a000020034181056a20023b0000200341e3046a200a4110763a0000200341e1046a200a3b000020034198056a200c37030020034190056a2014370300200341f8046a200e370300200341f0046a2011370300200341d8046a2004370300200341c0046a41106a200f370300200341a0056a20073a000020034188056a201537030020034184056a200536020020034180056a20183a0000200341e8046a200b370300200341e4046a201c360200200341e0046a20103a0000200341c8046a200d370300200320173602c404200341013a00c004200320093b00c104200320094110763a00c3040c050b200241ff0171450d02200341003a00b8040c020b200241ff0171450d01200341003a00b8040c010b200541ff0171450d00200341003a00b8040b41e9bcc0004133200341d8096a419cbdc0001038000b200341003a00c0040b0240200328028c04450d00201210310b200341e1046a211920034181056a211b200341a8036a41206a2118200341e8036a211c200341c0046a410172211e41bcf3c3002102200341af046a2113034002400240024020022209280000220241e2c289ab06460d00200241e9dabdf306460d014101210a41002108200241e7e485f306470d0241202108200341a8036a210a0c020b412021082018210a0c010b41202108201c210a0b200320083602a0042003200a36029c042003200236029804200341e8006a20034198046a109a0220034188016a200335027042208620032802682212ad8410021041024002402003280288012205450d002003280290012106200328028c01211041002102200341003a00b804024002400340200341003a00880420062002460d0120034198046a20026a200520026a2d00003a00002003200241016a22073a00b8042007210220074120470d000b200741ff0171411f4d0d0120032d009a04411074210220032f01980421072013290000210420032900a704210f200328009b042106200329009f04210d20032d00b704211702402010450d00200510310b200720027221020240200328026c450d00201210310b201320043700002003200f3700a704200320173a00b7042003200d37009f042003200636009b04200320023b019804200320024110763a009a0420034198046a20034188036a412010ad05450d0341ecefc2002102411821050c060b200241ff0171450d00200341003a00b8040b41e9bcc0004133200341d8096a419cbdc0001038000b200328026c450d00201210310b200941046a21020240024020032d00c0044101470d000240024002402009280000220741e2c289ab06460d00200741e9dabdf306460d010240200741e7e485f306460d0041002105410121060c030b41202105201e21060c020b41202105201921060c010b41202105201b21060b024020082005470d00200a2006460d02200a2006200810ad05450d020b200320053602a0042003200636029c04200320073602980420034188016a20034198046a109a022003350290014220862003280288012207ad841009200328028c01450d00200710310b20092800002107200320083602a0042003200a36029c04200320073602980420034188016a20034198046a109a022003280288012107200320032802900136029c04200320073602980420034188036a20034198046a10b002200328028c01450d00200710310b200241c8f3c300470d000b20034188016a20034188036a10990220032802880121022003350290012104200341003602a0042003420137039804200341a8036a20034198046a1046201820034198046a1046201c20034198046a1046200328029c04210720044220862002ad8420033502a0044220862003280298042205ad84100302402007450d00200510310b0240200328028c01450d00200210310b201d450d02201a10310c020b41c5efc2002102412721050b0240201d450d00201a10310b2002450d0020004181183b01082000200536020420002002360200410021082000410a6a41003a00000c010b200041023a0008410021080b410121054101210741012106410121180c2b0b02400240024020022d00004102470d002001280204210220034188036a41086a220541e291c200ad42808080808002841001220741086a29000037030020032007290000370388032007103120034190026a41086a2005290300370300200320032903880337039002200341386a20034190026a4110410141004100103f20032802384101460d01105b2002490d0220034188036a41086a220541e291c200ad42808080808002841001220741086a29000037030020032007290000370388032007103120034190026a41086a2005290300370300200320032903880337039002200320023602c00420034190026aad4280808080800284200341c0046aad4280808080c000841003200041023a00080c210b20004181143b01082000410f360204200041cac4c4003602002000410a6a41003a00000c200b418792c2004131419cdec40010a401000b41b892c2004123419cdec40010a401000b2001411c6a2802002113200141186a2802002117200141146a28020021102001410c6a2802002118200141086a280200211c024020022d00004102460d0041cac4c4002105410f21060c030b200141246a280200211d200141106a280200210610b503211902400240024002400240024002400240411b102d2202450d00200241176a4100280096b141360000200241106a410029008fb141370000200241086a4100290087b141370000200241002900ffb0413700002002411b4136102f2207450d012007201936001b20034188016a41186a22052007ad4280808080f003841000220241186a29000037030020034188016a41106a200241106a29000037030020034188016a41086a200241086a29000037030020032002290000370388012002103120034188016a41176a2900002104200329009701210f20032d00a7012108200329008f01210d200328008b01210a20032f018801210920032d008a012112200710314120102d2202450d022002200920124110747222073b00002002200f37000f200220083a001f2002200d3700072002200a360003200241026a20074110763a0000200241176a20043700002003201d3602c0042005200341c0046aad220f4280808080c000841000220741186a29000037030020034188016a41106a2208200741106a29000037030020034188016a41086a220a200741086a290000370300200320072900003703880120071031200341e8006a41186a2005290300370300200341e8006a41106a22072008290300370300200341e8006a41086a2205200a29030037030020032003290388013703682002412041c000102f2202450d0320022003290368370020200241386a20034180016a290300370000200241306a2007290300370000200241286a20052903003700004101211a200341306a200241c000410141004100103f200328023021072002103120034188036a41086a220541edd1c200ad4280808080d001841001220241086a29000037030020032002290000370388032002103120034190026a41086a2005290300370300200320032903880337039002200341a8016a20034190026aad4280808080800284100210410240024020032802a8012202450d0020032802ac0121052003200341b0016a2802003602ac03200320023602a803200341c0046a200341a8036a10800120032802c004221a450d0620032902c40421042005450d01200210310c010b420021040b02400240024020074101470d0041cfdbc2002105411521060c010b201a201d4105746a4100201d2004422088a7491b22020d0141e4dbc2002105411821060b2004a7450d0b201a10310c0b0b200241026a2d0000210720022f00002105200228000321082002290007210d20022d001f210a200229000f210e200341dc046a200241176a290000370200200341d4046a200e370200200341e4046a200a3a0000200341cc046a200d370200200341c8046a2008360200200320073a00c704200320053b00c504200341003a00c404200341053a00c00441014100200341c0046a1045200341003602c804200342013703c0042006200341c0046a106f0240024020032802c404220720032802c80422026b2006490d0020032802c00421070c010b200220066a22052002490d09200741017422082005200820054b1b22054100480d090240024020070d002005102d21070c010b20032802c00420072005102f21070b2007450d06200320053602c404200320073602c0040b2003200220066a3602c804200720026a201c200610ab051a2013200341c0046a106f2013450d0620102013410c6c6a21122010210703402007280200210a200741086a2802002202200341c0046a106f0240024020032802c404220820032802c80422056b2002490d0020032802c00421060c010b200520026a22062005490d0a200841017422092006200920064b1b22094100480d0a0240024020080d002009102d21060c010b20032802c00420082009102f21060b2006450d09200320093602c404200320063602c004200921080b2003200520026a22093602c804200620056a200a200210ab051a2007410c6a22072012470d000c0a0b0b411b41011033000b413641011033000b412041011033000b41c00041011033000b41e9bcc0004133200341d8096a419cbdc0001038000b200541011033000b20032802c804210920032802c404210820032802c00421060c020b200941011033000b1034000b0240024002400240411b102d2202450d00200241176a4100280096b141360000200241106a410029008fb141370000200241086a4100290087b141370000200241002900ffb0413700002002411b4136102f2207450d012007201936001b20034188016a41186a22052007ad4280808080f003841000220241186a29000037030020034188016a41106a200241106a29000037030020034188016a41086a200241086a29000037030020032002290000370388012002103120034188016a41176a290000210d200329009701210e20032d00a701210a200329008f012111200328008b01211220032f018801211920032d008a01211b200710314120102d2202450d0220022019201b4110747222073b00002002200e37000f2002200a3a001f2002201137000720022012360003200241026a20074110763a0000200241176a200d3700002003201d3602c0042005200f4280808080c000841000220741186a29000037030020034188016a41106a220a200741106a29000037030020034188016a41086a2212200741086a290000370300200320072900003703880120071031200341e8006a41186a2005290300370300200341e8006a41106a2207200a290300370300200341e8006a41086a2205201229030037030020032003290388013703682002412041c000102f2202450d0320022003290368370020200241386a20034180016a290300370000200241306a2007290300370000200241286a2005290300370000200341c0003602c404200320023602c00420062009200341c0046a1094022002103102402008450d00200610310b02402004a7450d00201a10310b02402018450d00201c10310b02402013450d002013410c6c21072010210203400240200241046a280200450d00200228020010310b2002410c6a2102200741746a22070d000b0b02402017450d00201010310b200041023a0008410021180c050b411b41011033000b413641011033000b412041011033000b41c00041011033000b02402018450d00201c10310b02402013450d002013410c6c21072010210203400240200241046a280200450d00200228020010310b2002410c6a2102200741746a22070d000b0b02402017450d00201010310b20004181123b01082000200636020420002005360200410021182000410a6a41003a00000b4101210541012107410121060c240b200141086a2802002107200128020421050240024020022d00004101460d0002402007450d00200510310b20004181103b01082000411336020420004194c4c400360200410021062000410a6a41003a00000c010b02402007450d00200510310b200041023a0008410021060b41012105410121070c220b024020032802cc042207450d0020032802c4042102200741246c210703400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022007415c6a22070d000b0b024020032802c804450d0020032802c40410310b02402006200a460d00034020062802042208450d01200641086a280200211702402006410c6a2802002202450d00200241246c21072008210203400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022007415c6a22070d000b0b200641f0006a210602402017450d00200810310b2006200a470d000b0b02402018450d00200910310b2004a7450d03201210310c030b2006200a460d00034020062802042208450d01200641086a280200211202402006410c6a2802002202450d00200241246c21072008210203400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022007415c6a22070d000b0b200641f0006a210602402012450d00200810310b2006200a470d000b0b02402018450d00200910310b20034188036a41086a22074185c8c200ad42808080809002841001220241086a29000037030020032002290000370388032002103120034190026a41086a2007290300370300200320032903880337039002200341c0046a20032802880422022004422088a710cd03200c20033502c80442208620032802c0042207ad841003024020032802c404450d00200710310b02402004a7450d00200210310b200041023a000841002107410121050c1e0b02402007450d002009200741f0006c6a210820092106034002402006410c6a2802002207450d0020062802042102200741246c210703400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022007415c6a22070d000b0b200641f0006a21020240200641086a280200450d00200628020410310b2002210620022008470d000b0b2018450d00200910310b200041810e3b01082000201036020420002013360200410021072000410a6a41003a0000410121050c1c0b200442808080807083210f410021070b200341ff006a200d3700002003200e370077200320053a0087012003200636006b200320023b0168200320024110763a006a2003200f200442ffffffff0f838437006f20070d05200341c0046a41186a200341e8006a41186a290300370300200341c0046a41106a200341e8006a41106a290300370300200341c0046a41086a200341e8006a41086a290300370300200320032903683703c004200341206a200341a8016a200341c0046a200b201110e90320032802202202450d04200328022421070c060b200341c0046a200f2004104702400240024002404114102d2202450d0020024100290086f442370000200241106a4100280096f442360000200241086a410029008ef44237000020034294808080c0023702ac01200320023602a801200341c0046a200341a8016a104620034188016a41186a220720033502b00142208620033502a801841000220241186a29000037030020034188016a41106a2205200241106a29000037030020034188016a41086a2206200241086a290000370300200320022900003703880120021031200341e8006a41186a2007290300370300200341e8006a41106a2005290300370300200341e8006a41086a20062903003703002003200329038801370368024020032802ac01450d0020032802a80110310b200341a8016a200c100210410240024020032802a80122020d004200210f420021040c010b200341a8016a41086a2802004110490d02200241086a29000021042002290000210f20032802ac01450d00200210310b200f200e5422072004200d542004200d5122021b0d02200f200e562004200d5620021b450d032003200f200e7d3703a80120032004200d7d2007ad7d3703b0012003200341a8016a3602a803200341a8036a10e6020c030b411441011033000b41e9bcc0004133200341d8096a419cbdc0001038000b2003200e200f7d3703a8012003200d20047d200e200f54ad7d3703b0012003200341a8016a3602a803200341a8036a10480b200341c0046a200e200d10e5030c030b4183c4c4002102411121070c040b410021060b200341ff006a200d3700002003200e370077200320053a0087012003201137006f2003200736006b200320023b0168200320024110763a006a20060d01200341c0046a41186a200341e8006a41186a290300370300200341c0046a41106a200341e8006a41106a290300370300200341c0046a41086a200341e8006a41086a290300370300200320032903683703c004200341186a200341a8016a200341c0046a200f200410e90320032802182202450d00200328021c21070c020b410021020c010b41bcc4c4002102410e21070b024020020d00200041023a00080c0b0b200041810a3b010820002007360204200020023602002000410a6a41003a00000c0a0b200d42808080807083210b410021060b200341ff006a200e37000020032011370077200320053a0087012003200736006b200320023b0168200320024110763a006a2003200b200d42ffffffff0f838437006f20060d06200341c0046a41186a200341e8006a41186a290300370300200341c0046a41106a200341e8006a41106a290300370300200341c0046a41086a200341e8006a41086a290300370300200320032903683703c004200341106a200341a8016a200341c0046a2004200f410010a402024020032802102202450d00200328021421070c080b410021020c070b410021070b200341ff006a200d3700002003200e370077200320023a0087012003200f37006f2003200836006b200320053b0168200320054110763a006a20070d04200341c0046a41186a200341e8006a41186a290300370300200341c0046a41106a200341e8006a41106a290300370300200341c0046a41086a200341e8006a41086a290300370300200320032903683703c004200341086a200341a8016a200341c0046a200c200b410110a40220032802082202450d03200328020c21070c050b200341c0046a2004200f10970202400240024002404118102d2202450d00200241002900b49b41370000200241106a41002900c49b41370000200241086a41002900bc9b413700002003429880808080033702ac03200320023602a803200341c0046a200341a8036a104620034188016a41186a220720033502b00342208620033502a803841000220241186a29000037030020034188016a41106a2205200241106a29000037030020034188016a41086a2206200241086a290000370300200320022900003703880120021031200341e8006a41186a2007290300370300200341e8006a41106a2005290300370300200341e8006a41086a20062903003703002003200329038801370368024020032802ac03450d0020032802a80310310b200341a8036a200c100210410240024020032802a80322020d004200210f420021040c010b200341a8036a41086a2802004110490d02200241086a29000021042002290000210f20032802ac03450d00200210310b200f200e5422072004200d542004200d5122021b0d02200f200e562004200d5620021b450d032003200f200e7d3703a80320032004200d7d2007ad7d3703b0032003200341a8036a3602a802200341a8026a105f0c030b411841011033000b41e9bcc0004133200341d8096a419cbdc0001038000b2003200e200f7d3703a8032003200d20047d200e200f54ad7d3703b0032003200341a8036a3602a802200341a8026a10430b200341c0046a200e200d109f020c020b200d42808080807083210b410021060b200341ff006a200e37000020032011370077200320053a0087012003200736006b200320023b0168200320024110763a006a2003200b200d42ffffffff0f838437006f20060d01200341c0046a41186a200341e8006a41186a290300370300200341c0046a41106a200341e8006a41106a290300370300200341c0046a41086a200341e8006a41086a290300370300200320032903683703c0042003200341a8016a200341c0046a2004200f410110a40220032802002202450d00200328020421070c020b410021020c010b41bcc4c4002102410e21070b024020020d00200041023a00080c010b20004181063b010820002007360204200020023602002000410a6a41003a00000b410121050b410121070c070b200510310b0240024002402006417f6a220241064b0d000240024002400240024020020e0707000701020304070b41000d062004a70d050c060b41000d052004a70d040c050b200a450d0402402004422088a72202450d00200241186c21072005210203400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200741686a22070d000b0b2004a70d030c040b2007450d0302402004422088a72202450d002002410c6c21072005210203400240200241046a280200450d00200228020010310b2002410c6a2102200741746a22070d000b0b2004a70d020c030b41000d022004a70d010c020b2004a7450d010b200510310b41cac4c4002102410f2107410621052008417c6a0e0402010300020b200041023a00080c030b4183c4c400210241112107410521050c010b4194c4c400210241132107410421050b20004181023b010820002007360204200020023602002000410a6a20053a00000b41012107410021050b410121060b410121180b410121080b4101210a0b410121090b410121120b41012113410121100b410121170b024002402001280200417f6a220241104b0d00024002400240024002400240024002400240024020020e11000a0b0a0b0b0102030b0a040506070809000b2005450d0a200141086a10d3040c0a0b2007450d0902402001410c6a2802002202450d0020012802042206200241f0006c6a2100034002402006410c6a2802002207450d0020062802042102200741246c210703400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022007415c6a22070d000b0b200641f0006a21020240200641086a280200450d00200628020410310b2002210620022000470d000b0b200141086a280200450d09200128020410310c090b2006450d08200141086a280200450d08200128020410310c080b2018450d0702402001410c6a280200450d00200141086a28020010310b02402001411c6a2802002207450d00200141146a28020021022007410c6c210703400240200241046a280200450d00200228020010310b2002410c6a2102200741746a22070d000b0b200141186a280200450d07200128021410310c070b2008450d06200141086a280200450d06200128020410310c060b200a450d05200141086a2d000041796a220241084b0d0502400240024020020e09000108080808080802000b200141106a280200450d072001410c6a28020010310c070b200141106a280200450d062001410c6a28020010310c060b200141106a280200450d052001410c6a28020010310c050b2009450d04200141086a2d0000417e6a220241024b0d0402400240024020020e03000102000b200141106a280200450d062001410c6a28020010310c060b200141346a280200450d05200141306a28020010310c050b200141306a280200450d042001412c6a28020010310c040b2012450d0302402001280204220241024b0d00024020020e03050005050b200141086a10d4040c040b2001412c6a10d4040c030b2013450d0202402001410c6a2802002207450d0020012802042102200741f8046c2107034020021030200241f8046a2102200741887b6a22070d000b0b200141086a280200450d02200128020410310c020b2010450d01200141086a2d0000417f6a220241034b0d01024002400240024020020e0400010203000b024020014184016a280200450d0020014180016a28020010310b024020014194016a2802002207450d002001418c016a28020021022007410c6c210703400240200241046a280200450d00200228020010310b2002410c6a2102200741746a22070d000b0b20014190016a280200450d04200128028c0110310c040b024020014184016a280200450d0020014180016a28020010310b024020014194016a2802002207450d002001418c016a28020021022007410c6c210703400240200241046a280200450d00200228020010310b2002410c6a2102200741746a22070d000b0b20014190016a280200450d03200128028c0110310c030b2001411c6a280200450d02200141186a28020010310c020b024020014184016a280200450d0020014180016a28020010310b024020014194016a2802002207450d002001418c016a28020021022007410c6c210703400240200241046a280200450d00200228020010310b2002410c6a2102200741746a22070d000b0b20014190016a280200450d01200128028c0110310c010b2017450d000240200141086a280200220241024b0d000240024020020e03030001030b2001411c6a280200450d02200141186a28020010310c020b2001411c6a280200450d01200141186a28020010310c010b2001411c6a280200450d00200141186a28020010310b200341e0096a24000bc01b05117f037e027f017e027f230041a0026b22062400200641d8006a2000105a0240024020062d005822074102460d00410220064184016a28020020071b22084102460d0020064188016a2802002109200641fc006a280200210a200641f8006a280200210b200641f4006a280200210c200641f0006a280200210d41012107105b210e0240024020084101470d002009200e460d010b200641d8006a2001105a0240024020062d0058220f4102470d00412e210f41e595c10021100c010b200641c0016a41026a20062d005b3a0000200641f0016a41086a2207200641ec006a280200360200200620062f00593b01c0012006200641e4006a2902003703f001200641f4006a2802002111200641f0006a28020021120240200f0d0041012107412e210f41e595c1002110024020110d000c020b201210310c010b200641d8006a41086a280200210f200628025c2110200641b0016a41026a200641c0016a41026a2d00003a0000200641d0016a41086a2007280200360200200620062f01c0013b01b001200620062903f0013703d001200641f8006a2d00002113410021070b200641c8006a41026a200641b0016a41026a2d00003a000020064190026a41086a2214200641d0016a41086a280200360200200620062f01b0013b0148200620062903d0013703900220070d002006413b6a2014280200360000200620062f01483b01282006200f36002f2006201036002b2006200629039002370033200620133a0047200620113600432006201236003f2006200641ca006a2d00003a002a2005280200211502400240024002400240024002400240024002400240200541086a28020022160d00200bad422086200dad8421170c010b20164105742112200641d0016aad42808080808004842118200bad422086200dad842117201521110340200641d8006a41186a220f2011ad428080808080048422191000220741186a290000370300200641d8006a41106a2210200741106a290000370300200641d8006a41086a2213200741086a2900003703002006200729000037035820071031200641d0016a41186a200f290300370300200641d0016a41106a2010290300370300200641d0016a41086a2013290300370300200620062903583703d00120064190026a20172018100a10412006280290020d02201141206a2111201241606a22120d000b0b4100211a2006410036025020064204370348410421144100211b0c010b200641d8006a41186a220f20191000220741186a290000370300200641d8006a41106a2210200741106a290000370300200641d8006a41086a2213200741086a2900003703002006200729000037035820071031200641f0016a41186a200f290300370300200641f0016a41106a2010290300370300200641f0016a41086a2013290300370300200620062903583703f0012017200641f0016aad4280808080800484221c100b200641c0016a41086a20064190026a41086a2802002207360200200641b0016a41086a220f200736020020062006290390023703b0014110102d2214450d0120142011360200201420062903b0013702042014410c6a200f2802003602000240024020124120470d004101211a4101211b0c010b201141206a2107201520164105746a221341606a211d4101211a4101211b03402007211102400340200641d8006a41186a220f2011ad428080808080048422191000220741186a290000370300200641d8006a41106a2210200741106a290000370300200641d8006a41086a2212200741086a2900003703002006200729000037035820071031200641d0016a41186a200f290300370300200641d0016a41106a2010290300370300200641d0016a41086a2012290300370300200620062903583703d00120064190026a20172018100a1041201141206a21072006280290020d012007211120132007470d000c030b0b200f20191000221e41186a2900003703002010201e41106a2900003703002012201e41086a2900003703002006201e290000370358201e1031200641f0016a41186a200f290300370300200641f0016a41106a2010290300370300200641f0016a41086a2012290300370300200620062903583703f0012017201c100b200641c0016a41086a20064190026a41086a280200220f360200200620062903900222193703c0012012200f360200200620193703580240201b201a470d00201a41016a220f201a490d07201a4101742210200f2010200f4b1b221b41ffffffff0071201b470d07201b410474220f4100480d0702400240201a0d00200f102d21140c010b2014201a410474200f102f21140b2014450d050b2014201a4104746a220f2011360200200f2006290358370204200f410c6a2012280200360200201a41016a211a201d2011470d000b0b2006201a3602502006201b36024c200620143602480b201710042118200641f0016a41186a200241186a290000370300200641f0016a41106a200241106a290000370300200641f0016a41086a200241086a290000370300200620022900003703f001200641003602980220064201370390022018a7221d2018422088a7221020064190026a106002400240200628029402220f20062802980222126b4120490d00201241206a210720062802900221110c010b201241206a22072012490d04200f41017422112007201120074b1b22134100480d0402400240200f0d002013102d21110c010b200628029002200f2013102f21110b2011450d03200620133602940220062011360290022013210f0b2006200736029802201120126a221220062903f001370000201241086a200641f0016a41086a290300370000201241106a200641f0016a41106a290300370000201241186a200641f0016a41186a290300370000200641d8006a41186a22122007ad4220862011ad841000220741186a290000370300200641d8006a41106a2213200741106a290000370300200641d8006a41086a221e200741086a2900003703002006200729000037035820071031200641d0016a41186a2012290300370300200641d0016a41106a2013290300370300200641d0016a41086a201e290300370300200620062903583703d0010240200f450d00201110310b02402010450d00201d10310b0240200641d0016a200641286a412010ad050d0002400240201a0d00410021110c010b201a41047421122014410c6a2107410021110340200728020020116a2111200741106a2107201241706a22120d000b0b4117102d2207450d05200e200920161b21104101200820161b2113200a20116b210820074100290082e1403700002007410f6a4100290091e140370000200741086a410029008ae14037000020064297808080f002370294022006200736029002200020064190026a1046200641d8006a41186a2211200635029802422086200635029002841000220741186a290000370300200641d8006a41106a2212200741106a290000370300200641d8006a41086a220f200741086a2900003703002006200729000037035820071031200641f0016a41186a2011290300370300200641f0016a41106a2012290300370300200641f0016a41086a200f290300370300200620062903583703f0010240200628029402450d0020062802900210310b200641f0016aad428080808080048410092012200437030020064188016a201036020020064184016a201336020020064180016a200e360200200641fc006a2008360200200641f8006a200b360200200641f4006a200c3602002011200d3602002006418c016a200229000037020020064194016a200241086a2900003702002006419c016a200241106a290000370200200641a4016a200241186a29000037020020062003370360200641003a00582001200641d8006a10f601200641186a2000105c200641186a41086a290300211720062903182118200641d8006a2000420042001091020240024020062903584200520d002006200f3602f001200641f0016a10430c010b2006200f3602f001200641f0016a105f0b200641086a20012018201710652006200641106a290300370360200620062903083703582006200641d8006a3602f001200641f0016a10430240201a450d00201a4104742100201441046a210703400240200741046a280200450d00200728020010310b200741106a2107200041706a22000d000b0b0240201b450d00201410310b200541046a280200450d0a201510310c0a0b2014201a4104746a211320142107201a450d05200641f0016aad428080808080048421032014210703400240200728020022000d00200741106a21070c070b200741046a2802002111200741086a28020021022007410c6a3502002118200641d8006a41186a22122000ad42808080808004841000220041186a290000370300200641d8006a41106a220f200041106a290000370300200641d8006a41086a2210200041086a2900003703002006200029000037035820001031200641f0016a41186a2012290300370300200641f0016a41106a200f290300370300200641f0016a41086a2010290300370300200620062903583703f0012017200320184220862011ad84100c02402002450d00201110310b200741106a22072013470d000c070b0b411041041033000b200f41041033000b201341011033000b1034000b411741011033000b20072013460d0003402007280200450d010240200741086a280200450d00200741046a28020010310b200741106a22072013470d000b0b201b450d00201410310b200c450d00200d10310b200541046a280200450d00200528020010310b200641a0026a24000bca0201067f230041b0016b22012400200141086a2000109605024020012903284202510d000340200128026021022001280258210302400240200128025c22040d00200321050c010b2004210620032105034020052802ec0321052006417f6a22060d000b0340200320032f01064102746a41ec036a28020021032004417f6a22040d000b0b200120023602a801200141003602a001200141003602980120014200370390012001200536028c0120014100360288012001200336029c01200120032f01063602a40120014188016a10ce01200141086a200010960520012903284202520d000b0b0240200028020422034198bfc000460d0020032802002104200310312004450d0020042802002105200410312005450d00024020052802002203450d000340200510312003210520032802002204210320040d000b0b200510310b200141b0016a24000bf00703057f027e017f230041d0056b2204240002400240024002404114102d2205450d00200541002900a09b41370000200541106a41002800b09b41360000200541086a41002900a89b4137000020044294808080c00237022c200420053602282001200441286a1046200441386a41186a220620043502304220862004350228841000220541186a290000370300200441386a41106a2207200541106a290000370300200441386a41086a2208200541086a2900003703002004200529000037033820051031200441086a41186a2006290300370300200441086a41106a2007290300370300200441086a41086a2008290300370300200420042903383703080240200428022c450d00200428022810310b200441386a200441086aad42808080808004841002104102400240200428023822050d00420021094200210a0c010b200441386a41086a2802004110490d02200541086a290000210a20052900002109200428023c450d00200510310b0240200242ff93ebdc0356200342005220035022051b0d002009200a844200520d0020004200370300200041013a0018200041106a4200370300200041086a42003703000c040b4101210602402002428094ebdc0354410020051b0d004114102d2205450d0341002106200541002900a09b41370000200541106a41002800b09b41360000200541086a41002900a89b4137000020044294808080c00237022c200420053602282001200441286a1046200441386a41186a220720043502304220862004350228841000220541186a290000370300200441386a41106a2208200541106a290000370300200441386a41086a220b200541086a2900003703002004200529000037033820051031200441086a41186a2007290300370300200441086a41106a2008290300370300200441086a41086a200b290300370300200420042903383703080240200428022c450d00200428022810310b2004200441086a4120410141004100103f20042802004101460d00200110e401200441f0006a2003370300200441e8006a200237030041002106200441386a41086a41003a0000200441c1006a2001290000370000200441c9006a200141086a290000370000200441d1006a200141106a290000370000200441d9006a200141186a290000370000200441013a003841014100200441386a10450b200120022003109702200041106a200a20037d2009200254ad7d2003200a7d2002200954ad7d2009200256200a200356200a2003511b22051b3703002000200920027d200220097d20051b370308200020063a001820002005ad3703000c030b411441011033000b41e9bcc0004133200441286a419cbdc0001038000b411441011033000b200441d0056a24000be00605027f017e027f027e017f230041d0006b22022400200241286a41086a220341dfb0c400ad4280808080f0028422041001220541086a2900003703002002200529000037032820051031200241086a41086a2206200329030037030020022002290328370308200241286a200241086aad4280808080800284220710021041024002400240024002400240200228022822050d00420021080c010b20032802004108490d0120052900002108200228022c450d00200510310b200320041001220541086a290000370300200220052900003703282005103120062003290300370300200220022903283703082002200842017c22043703282007200241286aad428080808080018410034120102d2203450d0120032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003412041c000102f2201450d0220012004370020200241286a41186a22052001ad42808080808005841000220341186a290000370300200241286a41106a2206200341106a290000370300200241286a41086a2209200341086a2900003703002002200329000037032820031031200241086a41186a2005290300370300200241086a41106a2006290300370300200241086a41086a2009290300370300200220022903283703084137102d2203450d03200342bac6a1cbc68dd9aff300370000200342f4dec98bf6ac999de400370008200341e5cc85ab073600102003413a3a0016200341ece8013b001420032002290308370017200320022f01103b001f20032002280112360021200320022f01163b0025200320022d00183a0027200320022d00193a0028200320022d001a3a0029200320022d001b3a002a200320022d001c3a002b200320022d001d3a002c200320022d001e3a002d200320022d001f3a002e200320022d00203a002f200320022d00213a0030200320022d00223a0031200320022d00233a0032200320022d00243a0033200320022d00253a0034200320022d00263a0035200320022d00273a0036200041bb96c100419396c1006b410f6a360208200041373602042000200336020020011031200241d0006a24000f0b41e9bcc0004133200241c8006a419cbdc0001038000b412041011033000b41c00041011033000b413741011033000bfb5e07037f017e087f047e017f0b7e117f23004190166b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e06000102030405000b200341d40a6a4101360200200342013702c40a200341d494c4003602c00a200341023602a405200341cc94c4003602a0052003200341a0056a3602d00a200341c00a6a41dc94c40010b301000b200141e0006a2802002104200341a0056a200141086a41d80010ab051a20034188116a200141fc006a28020036020020034180116a200141f4006a290200370300200341f0106a41086a200141ec006a2902003703002003200141e4006a2902003703f010024020022d0000450d004183c4c4002104411121020c1b0b200341a0046a41086a220541c7b0c400ad42808080808003841001220241086a290000370300200320022900003703a00420021031200341e00f6a41086a2005290300370300200320032903a0043703e00f200341d8026a200341e00f6aad42808080808002842206100210410240024020032802d80222020d00410221070c010b20032802dc0221082003200341e0026a2802003602a404200320023602a004200341c00a6a200341a0046a108c0220032d00b00b22074102460d05200320032800b10b3602c0102003200341b40b6a2800003600c31020032802980b21052008450d00200210310b02404100200520074102461b2004490d00419b96c1002104413521020c1b0b200341cc0a6a2004360200200341c00a6a41086a41033a0000200341093a00c00a41014100200341c00a6a1045200341c00a6a200341a0056a41d80010ab051a200341a40b6a200341f0106a41086a290300370200200341ac0b6a20034180116a290300370200200341b40b6a20034188116a280200360200200320043602980b200320032903f01037029c0b200341a0046a41086a220441c7b0c400ad42808080808003841001220241086a290000370300200320022900003703a00420021031200341e00f6a41086a2004290300370300200320032903a0043703e00f200341003602e002200342013703d802200341c00a6a200341d8026a10fd0120032802dc022102200620033502e00242208620032802d8022204ad84100302402002450d00200410310b410021040c1a0b2001410c6a2802002109200141086a280200210841042105200141046a280200210a200141106a2903002106200241046a280000210720022d00002104200341e00f6a41026a220b200241036a2d00003a0000200341a0056a41086a220c200241106a290000370300200341a0056a41106a220d200241186a290000370300200341a0056a41186a220e200241206a2d00003a0000200320022f00013b01e00f2003200241086a2900003703a00541012102024020044101470d00200341f0106a41026a200b2d00003a0000200341c00a6a41086a200c290300370300200341c00a6a41106a200d290300370300200341c00a6a41186a200e2d00003a0000200320032f01e00f3b01f010200320032903a0053703c00a41002102200721050b200341f4016a41026a200341f0106a41026a2d00003a0000200341c0106a41086a200341c00a6a41086a290300370300200341c0106a41106a200341c00a6a41106a290300370300200341c0106a41186a200341c00a6a41186a2d00003a0000200320032f01f0103b01f401200320032903c00a3703c01002402002450d0041cac4c4002104410f210202400240024002400240024020050e070001020304051f000b20032802c010210420032802c41021020c1e0b41bcc4c4002104410e21020c1d0b41b0c4c4002104410c21020c1c0b41a7c4c4002104410921020c1b0b4194c4c4002104411321020c1a0b4183c4c4002104411121020c190b200341e7026a200341c0106a41086a290300370000200341ef026a200341d0106a290300370000200341f7026a200341d8106a2d00003a0000200320032f01f4013b01d802200320053600db02200320032903c0103700df022003200341f6016a2d00003a00da02200341e0006a108b02024002402003290360220f200341e0006a41086a29030022108450450d0042002111420021120c010b200341c0006a201042002006420010b005200341d0006a200f42002006420010b005200341306a42004200200f420010b00502402003290348200329033884420052200341d0006a41086a2903002211200329034020032903307c7c221220115472450d004127210241b997c10021040c1a0b200329035021110b200341c00a6a200341d8026a201120124108105e024020032802c00a4101470d0020032802c80a210220032802c40a21040c190b200341d00a6a290300211120032903c80a2112200341a0046a41086a220441c7b0c400ad42808080808003841001220241086a290000370300200320022900003703a00420021031200341e00f6a41086a2004290300370300200320032903a0043703e00f200341a0056a200341e00f6aad4280808080800284100210410240024020032802a005220d0d00410221020c010b20032802a40521132003200341a0056a41086a2802003602f4102003200d3602f010200341c00a6a200341f0106a108c0220032d00b00b22024102460d0520032802ac0b210c20032802a80b210b20032802a40b210720032802a00b2105200328029c0b210420032802980b210e20032903900b211420032903880b211520032903800b211620032903f80a211720032903f00a211820032903e80a211920032903e00a211a20032903d80a211b20032903d00a211c20032903c80a211d20032903c00a211e200320032800b10b3602a0042003200341b40b6a2800003600a3042013450d00200d10310b200320032800a3043600c30a200320032802a0043602c00a0240024020024102470d004201211e200342013703e805200342af013703e00520034287013703d805200342013703d005200342013703c805200342013703c005200342013703b805200342013703b005200342013703a805200342013703a00541002102200341003602f8054120210c41808001210b4110210741808004210541042104420121140c010b20034194066a20032800c30a3600002003200e3602f805200320153703e805200320163703e005200320173703d805200320183703d005200320193703c8052003201a3703c0052003201b3703b8052003201c3703b0052003201d3703a8052003201e3703a005200320032802c00a360091060b200341206a201e42002009ad221d420010b005200320023a0090062003200c36028c062003200b3602880620032007360284062003200536028006200320043602fc05200320143703f00502402006427f200329032020032903284200521b7d221e2006562204450d004187b0c0002105412c21020c170b200341c00a6a200a2009200341a0056a109001024020032802c00a4101470d00200341c80a6a280200210220032802c40a21050c170b200341e00f6a41186a220e200341c00a6a410472220241186a280200360200200341e00f6a41106a2213200241106a290200370300200341e00f6a41086a221f200241086a290200370300200320022902003703e00f200341d0016a41026a220b201d422086200aad841000220741026a2d00003a0000200728000321052007280007210220072f00002120200341c0106a410d6a220c200741186a290000370000200341c0106a41086a220d200741136a290000370300200320203b01d0012003200729000b3703c01020071031200341f8016a41026a2207200b2d00003a0000200341b8026a41086a2220200d290300370300200341b8026a410d6a2221200c290000370000200320032f01d0013b01f801200320032903c0103703b802200341a0046a41186a200e280200360200200341a0046a41106a2013290300370300200341a0046a41086a201f290300370300200320032903e00f3703a004200320023600c70a200320053600c30a200320072d00003a00c20a200320032f01f8013b01c00a200341c00a6a41136a2020290300370000200341c00a6a41186a2021290000370000200320032903b8023700cb0a4114102d2207450d05200741002900eee040370000200741106a41002800fee040360000200741086a41002900f6e04037000020034294808080c00237029c022003200736029802200320034198026a3602c010200341c00a6a200341c0106a103e200b20033502a002422086200335029802841000220741026a2d00003a00002007290003211420072f0000210e200d200741136a290000370300200c200741186a2900003700002003200e3b01d0012003200729000b3703c01020071031200341f0106a41026a200b2d00003a0000200341f0106a41136a200d290300370000200341f0106a41186a200c290000370000200320143700f310200320032f01d0013b01f010200320032903c0103700fb100240200328029c02450d0020032802980210310b200341003602c80a200342013703c00a200341a0046a200341c00a6a109101200341a0046a410472200341c00a6a109101200341a8046a200341c00a6a10910120032d00b804210c0240024020032802c40a20032802c80a2207460d0020032802c00a210b0c010b200741016a220b2007490d092007410174220d200b200d200b4b1b220d4100480d090240024020070d00200d102d210b0c010b20032802c00a2007200d102f210b0b200b450d072003200d3602c40a2003200b3602c00a0b2003200741016a3602c80a200b20076a200c3a000020032802ac04210e200341b4046a280200220b200341c00a6a106f0240024020032802c40a220d20032802c80a220c6b200b490d0020032802c00a21070c010b200c200b6a2207200c490d09200d41017422132007201320074b1b22134100480d0902400240200d0d002013102d21070c010b20032802c00a200d2013102f21070b2007450d08200320133602c40a200320073602c00a2013210d0b2007200c6a200e200b10ab051a200341f0106aad4280808080800484200c200b6aad4220862007ad8410030240200d450d00200710310b0240200341b0046a280200450d00200e10310b200341c00a6a41136a200341b8026a41086a290300370000200341c00a6a41186a200341b8026a410d6a2900003700002003200341f8016a41026a2d00003a00c20a200320032f01f8013b01c00a200320023600c70a200320053600c30a200320032903b8023700cb0a4115102d2207450d09200741002900d9e0403700002007410d6a41002900e6e040370000200741086a41002900e1e04037000020034295808080d0023702a404200320073602a0042003200341a0046a3602c010200341c00a6a200341c0106a103e200341d0016a41026a220b20033502a80442208620033502a004841000220741026a2d00003a00002007290003211420072f0000210c200341c0106a41086a220d200741136a290000370300200341c0106a410d6a220e200741186a2900003700002003200c3b01d0012003200729000b3703c01020071031200341f0106a41026a200b2d00003a0000200341fb106a220720032903c010370000200741086a200d2903003700002007410d6a200e290000370000200320143700f310200320032f01d0013b01f010024020032802a404450d0020032802a00410310b200341203602c40a2003200341f0106a3602c00a200a2009200341c00a6a10940202402008450d00200a10310b200341c0106a41026a200341f8016a41026a2d000022073a0000200341f0106a41086a2208200341b8026a41086a290300370300200341f0106a410d6a220b200341b8026a410d6a290000370000200320032f01f801220a3b01c010200320032903b8023703f010200341c00a6a41086a41023a0000200341cb0a6a20073a0000200341d00a6a2002360200200341cc0a6a2005360200200341093a00c00a200341c00a6a41096a200a3b0000200341d40a6a20032903f010370200200341dc0a6a2008290300370200200341e10a6a200b2900003700004100210741014100200341c00a6a10450c170b200141c0006a2903002106200141386a290300210f200141c8006a2903002112200341e0106a41026a200141076a2d00003a0000200341f0106a41086a200141146a290200370300200341f0106a41106a2001411c6a290200370300200341f0106a41186a200141246a2802003602002003200141056a2f00003b01e01020032001410c6a2902003703f01041042105200141046a2d0000210a200141086a2802002104200141286a280200210b2001412c6a2802002107200141306a280200211f200241046a280000210c20022d00002108200341e00f6a41026a220d200241036a2d00003a0000200341a0056a41086a220e200241106a290000370300200341a0056a41106a2209200241186a290000370300200341a0056a41186a2213200241206a2d00003a0000200320022f00013b01e00f2003200241086a2900003703a00541012102024020084101470d00200341d8026a41026a200d2d00003a0000200341c00a6a41086a200e290300370300200341c00a6a41106a2009290300370300200341c00a6a41186a20132d00003a0000200320032f01e00f3b01d802200320032903a0053703c00a41002102200c21050b20034194026a41026a200341d8026a41026a2d00003a0000200341f8016a41086a200341c00a6a41086a290300370300200341f8016a41106a200341c00a6a41106a290300370300200341f8016a41186a200341c00a6a41186a2d00003a0000200320032f01d8023b019402200320032903c00a3703f80102402002450d0041cac4c4002104410f21020240024002400240024020050e0700170102030419000b20032802f801210420032802fc0121020c180b41b0c4c4002104410c21020c170b41a7c4c4002104410921020c160b4194c4c4002104411321020c150b4183c4c4002104411121020c140b200341d0016a41026a20034194026a41026a2d00003a0000200341a0046a41086a200341f8016a41086a290300370300200341a0046a41106a200341f8016a41106a290300370300200341a0046a41186a200341f8016a41186a2d00003a0000200320032f0194023b01d001200320032903f8013703a004200341b8026a41026a2202200341e0106a41026a2d00003a0000200320032f01e0103b01b802200341c00a6a41086a2208200341f0106a41086a290300370300200341c00a6a41106a220c200341f0106a41106a290300370300200341c00a6a41186a220d200341f0106a41186a280200360200200320032903f0103703c00a0240200a41ff01714101460d0020034198026a41026a20022d00003a0000200341a0056a41086a2008290300370300200341a0056a41106a200c290300370300200341a0056a41186a200d2d00003a0000200320032f01b8023b019802200320032903c00a3703a0050c100b200341e00f6a200441067610e30120032802e00f21080240024020032802e80f2004413f7122024b0d00410021020c010b20034198026a41026a200820024105746a220241026a2d00003a0000200341a8056a2002410f6a290000370300200341b0056a200241176a290000370300200341b8056a2002411f6a2d00003a0000200320022f00003b019802200320022900073703a00520022800032104410121020b024020032802e40f450d00200810310b20020d0f410121020c100b200141386a2903002111200141306a2903002110200141c0006a2903002106200341d0016a41186a200141196a290000370300200341d0016a41106a200141116a290000370300200341d0016a41086a200141096a290000370300200320012900013703d001200141246a2802002108200141286a28020021072001412c6a280200210941042105200241046a280000210b20022d00002104200341e00f6a41026a220a200241036a2d00003a0000200341a0056a41086a220c200241106a290000370300200341a0056a41106a220d200241186a290000370300200341a0056a41186a220e200241206a2d00003a0000200320022f00013b01e00f2003200241086a2900003703a00541012102024020044101470d00200341f0106a41026a200a2d00003a0000200341c00a6a41086a200c290300370300200341c00a6a41106a200d290300370300200341c00a6a41186a200e2d00003a0000200320032f01e00f3b01f010200320032903a0053703c00a41002102200b21050b20034190056a41026a200341f0106a41026a2d00003a0000200341d8026a41086a200341c00a6a41086a290300370300200341d8026a41106a200341c00a6a41106a290300370300200341d8026a41186a200341c00a6a41186a2d00003a0000200320032f01f0103b019005200320032903c00a3703d80202402002450d0041cac4c4002104410f2102024002400240024002400240024020050e0700010203040506000b20032802d802210420032802dc0221020c050b41bcc4c4002104410e21020c040b41b0c4c4002104410c21020c030b41a7c4c4002104410921020c020b4194c4c4002104411321020c010b4183c4c4002104411121020b2007450d0e200810310c0e0b20034194026a41026a20034190056a41026a2d000022023a0000200341f8016a41086a2204200341d8026a41086a290300370300200341f8016a41106a220b200341d8026a41106a290300370300200341f8016a41186a220a200341d8026a41186a2d00003a0000200320032f019005220c3b019402200320032903d8023703f801200320023a009a022003200c3b0198022003200536009b02200341a7026a2004290300370000200341af026a200b290300370000200341b7026a200a2d00003a0000200320032903f80137009f02200341c0016a108b02024002400240024020032903c001220f200341c0016a41086a29030022148450450d004200211e420021120c010b200341a0016a201442002006420010b005200341b0016a200f42002006420010b00520034190016a42004200200f420010b005024020032903a80120032903980184420052200341b0016a41086a290300221e20032903a0012003290390017c7c2212201e5472450d004127210241b997c10021040c020b20032903b001211e0b200341c00a6a20034198026a201e20124108105e20032802c00a4101470d0120032802c80a210220032802c40a21040b2007450d0e200810310c0e0b200341d00a6a290300211e20032903c80a2112200341d0026a20143703002003200f3703c802200320063703c002200320063703b802200341a0046a41086a220441c7b0c400ad42808080808003841001220241086a290000370300200320022900003703a00420021031200341e00f6a41086a2004290300370300200320032903a0043703e00f200341a0056a200341e00f6aad4280808080800284100210410240024020032802a005220d0d00410221020c010b20032802a40521132003200341a0056a41086a2802003602f4102003200d3602f010200341c00a6a200341f0106a108c0220032d00b00b22024102460d0920032802ac0b210c20032802a80b210a20032802a40b210b20032802a00b2105200328029c0b210420032802980b210e20032903900b210620032903880b211620032903800b211720032903f80a211820032903f00a211920032903e80a210f20032903e00a211420032903d80a211d20032903d00a211c20032903c80a211b20032903c00a211a200320032800b10b3602a0042003200341b40b6a2800003600a3042013450d00200d10310b200320032800a3043600c30a200320032802a0043602c00a0240024020024102470d0042012106200342013703a003200342af013703980320034287013703900320034201370388032003420137038003200342013703f802200342013703f002200342013703e802200342013703e002200342013703d80241002102200341003602b0034120210c41808001210a4110210b418080042105410421040c010b200341cc036a20032800c30a3600002003200e3602b003200320163703a0032003201737039803200320183703900320032019370388032003200f37038003200320143703f8022003201d3703f0022003201c3703e8022003201b3703e0022003201a3703d802200320032802c00a3600c9030b200341d8036a420037030020034188046a4200370300200341f8036a4200370300200341e8036a4200370300200320023a00c8032003200c3602c4032003200a3602c0032003200b3602bc03200320053602b803200320043602b403200320063703a8032003428094ebdc033703d003200342e80737038004200342e8073703f003200342e8073703e003200342a0808080808010370390042003200341d8026a360298042003200341d8026a36029c04200341c00a6a41186a220520034198026a41186a290300370300200341c00a6a41106a220220034198026a41106a290300370300200341c00a6a41086a220420034198026a41086a29030037030020032003290398023703c00a1099012106105b210b200341d8046a4200370300200341a0046a412c6a418cacc10036020041012122200341a0046a41286a4101360200200341c0046a4200370300200341bc046a4198bfc000360200200341f8046a200429030037030020034180056a200229030037030020034188056a2005290300370300200342003703a8042003428080808080013703d00441002123200341003602b804200320032903c00a3703f00420032003419c046a3602e804200320034198046a3602e4042003200341d8026a3602e0042003200b3602ec04200320063703a004200320093602a805200320073602a405200320083602a005200341c00a6a200341a0046a20102011200341b8026a200341d0016a200341a0056a10cb0120032802c00a4101470d0b200228020022244108762125200341cc0a6a28020021262004280200210220032802c40a212741012123410121220c0c0b200141216a2d00002104200341f0106a41186a200141196a290000370300200341f0106a41106a200141116a290000370300200341f0106a41086a200141096a290000370300200320012900013703f010200141256a280000210b200241046a280000210720022d0000210541022108200341f4016a41026a200241036a2d00003a0000200341c0106a41086a200241106a290000370300200341c0106a41106a200241186a290000370300200341c0106a41186a200241206a2d00003a000020034190056a41026a200141246a2d00003a0000200341d8026a41086a200141316a290000370300200341d8026a41106a200141396a290000370300200341d8026a41186a200141c1006a2d00003a0000200320022f00013b01f4012003200241086a2900003703c0102003200141226a2f00003b0190052003200141296a2900003703d802024020044101460d00200541ff01714101470d0a200341f4016a2104200341c0106a21020c090b200541ff01714102470d094100210820034190056a2104200341d8026a2102200b21070c080b41e9bcc000413320034188166a419cbdc0001038000b41e9bcc000413320034188166a419cbdc0001038000b411441011033000b200d41011033000b201341011033000b1034000b411541011033000b41e9bcc000413320034188166a419cbdc0001038000b200341af056a200241086a290000370000200341b7056a200241106a290000370000200341bf056a200241186a2d00003a0000200320073600a305200320042f00003b01a005200320022900003700a7052003200441026a2d00003a00a205200341c00a6a200341f0106a20084100105920032d00c00a2102024020032d00c80a0d00200341e40a6a280200450d00200341e00a6a28020010310b410121070240200241ff01714101470d00200341c00a6a200341a0056a4280b8c9e5ae044200104241012108024020032802c00a4101470d0020032802c80a210220032802c40a2104410121070c100b200320032903c80a3703d8022003200341d00a6a2903003703e0022003200341d8026a3602a004200341a0046a10430b41002104410121084101210b0c0f0b41d096c100210441e90021020c0c0b200341f00a6a28020022244108762125200341c00a6a412c6a2802002126200341c00a6a41286a2802002102200341e40a6a2802002127202441ff01710d00200341c00a6a41086a200341c0046a290300370300200341a0056a41086a200341cc0a6a280200360200200320032903b8043703c00a200320032902c40a3703a00520034188166a200341a0056a108d024100212341002124410021220b200341f0006a20032903c802200341d0026a29030020032903c0022206420010b00520032903b80220067d10f70120034180016a20034198026a2003290370200341f0006a41086a2903001065200341d00a6a201e20034180016a41086a290300220f7d2012200329038001220654ad7d200f201e7d2006201254ad7d2006201258200f201e58200f201e5122041b22051b22113703002003201220067d200620127d20051b22103703c80a20032006201256200f201e5620041b2204ad22063703c00a41012105024020040d00200320103703a005200320113703a8052003200341a0056a3602f010200341f0106a105f4100210520032903c00a21060b200341c00a6a41086a21040240024020064200520d002005450d01200320043602a005200341a0056a105f0c010b200320043602a005200341a0056a10430b20032802dc04210520032802d8042107200320032802d4042204360298052003200736029405200320043602900520032004200541a0056c6a221336029c0502402005450d00200341f0106a4101722128200341e70f6a2129200341f0106a41106a2108200341f0106a41096a2120200341e00f6a410172210b200341c00a6a41086a210a200341c00a6a41106a212a200341e80a6a212b200341a40b6a2121200341810b6a210c200341e10a6a210d200341c00a6a410172211f200341b80b6a212c034020042d00002107200341a0056a200441016a419f0510ab051a0240024020074103460d00200320073a00c00a201f200341a0056a419f0510ab052105024002400240024020070e03000102000b20032802c80a210920032802cc0a210720032802c40a21052029202a41d80010ab051a200341093a00f0102028200341e00f6a41df0010ab051a20052007200341f0106a1045410121074100210e02402009450d00200510310b410021090c020b200341f4016a41026a2207200541026a2d00003a0000200341c0106a41086a2209200a41086a290000370300200341c0106a41106a222d200a41106a290000370300200341c0106a41186a222e200a41186a2d00003a0000200320052f00003b01f4012003200a2900003703c01020032802c40a212f200341f0106a202b41f80410ab051a200b2005290000370000200b41086a200541086a290000370000200b41106a200541106a290000370000200b41186a200541186a2900003700004101210e200341013a00e00f200341e0106a200341f0106a200341e00f6a108e0220032d00e8102105202020032f01f4013b0000202041026a20072d00003a0000200820032903c010370000200841086a2009290300370000200841106a202d290300370000200841186a202e2d00003a0000200341043a00f810200341093a00f0102003202f3602fc10200320054102463a0099114100210741014100200341f0106a1045410021090c010b202c290300210620032903b00b210f200341c0106a41186a200541186a290000370300200341c0106a41106a200541106a290000370300200341c0106a41086a200541086a290000370300200320052900003703c010200341e00f6a41186a200d41186a290000370300200341e00f6a41106a200d41106a290000370300200341e00f6a41086a200d41086a2900003703002003200d2900003703e00f200341f0106a41186a200c41186a2900003703002008200c41106a290000370300200341f0106a41086a200c41086a2900003703002003200c2900003703f010200341e0106a41086a202141086a280200360200200320212902003703e010200341c0106a200341e00f6a200341f0106a200f2006200341e0106a108f024101210e41012107410121090b024020032d00c00a220541014b0d000240024020050e020001000b200e450d03024020032802c80a450d0020032802c40a10310b20032d00d00a4105490d0320032802f80a450d0320032802f40a10310c030b2007450d02202b10d6010c020b200920032802a80b45720d0120032802a40b10310c010b2003200441a0056a360298050c020b200441a0056a22042013470d000b20032013360298050b20034190056a1078024020032802ac042204450d00200341b0046a280200450d00200410310b02402022450d00200341a0046a411c6a280200210420032802c404210b0240024020032802c00422070d00200421050c010b2007210820042105034020052802880b21052008417f6a22080d000b0340200420042f01064102746a41880b6a28020021042007417f6a22070d000b0b200341c00a6a411c6a20042f0106360200200341d80a6a4100360200200341d40a6a20043602002003200b3602e00a200341003602d00a200342003703c80a200320053602c40a200341003602c00a200341c00a6a1090020b024020230d0041002104024020020d00410021020c020b202710310c010b024020270d00410021040c010b02402025410874202441ff017172450d00202610310b202721040b41002108410121070c0a0b200341e00f6a41026a20034198026a41026a2d00003a0000200341c00a6a41086a200341a0056a41086a290300370300200341c00a6a41106a200341a0056a41106a290300370300200341c00a6a41186a200341a0056a41186a2d00003a0000200320032f0198023b01e00f200320032903a0053703c00a410021020b200341f4016a41026a2208200341e00f6a41026a2d00003a0000200341c0106a41086a220a200341c00a6a41086a290300370300200341c0106a41106a220c200341c00a6a41106a290300370300200341c0106a41186a220d200341c00a6a41186a2d00003a0000200320032f01e00f3b01f401200320032903c00a3703c0102002450d010b41bcc4c4002104410e21020c010b20034190056a41026a220220082d00003a0000200341d8026a41086a2208200a290300370300200341d8026a41106a220a200c290300370300200341d8026a41186a220c200d2d00003a0000200320032f01f4013b019005200320032903c0103703d8022003200341d0016a41026a2d00003a00a205200320032f01d0013b01a005200320053600a305200341a0056a410f6a200341a0046a41086a290300370000200341a0056a41176a200341a0046a41106a290300370000200341a0056a411f6a200341a0046a41186a2d00003a0000200320032903a0043700a705200320043600c30a200320022d00003a00c20a200320032f0190053b01c00a200341c00a6a410f6a2008290300370000200341c00a6a41176a200a290300370000200341c00a6a411f6a200c2d00003a0000200320032903d8023700c70a2003201f3602c810200320073602c4102003200b3602c010200341e00f6a200341a0056a200341c00a6a200f20062012200341c0106a108a020240024020032802e00f4101460d00200341e80f6a280200450d0120032802e40f10310c010b20032802e40f2204450d00200341e80f6a2802002102200341f00f6a280200450d02200341ec0f6a28020010310c020b410021040c010b2007450d00200b10310b41012108410021070c040b410121072008450d00200a10310b2003200f20104200201e20041b221e420010b0052006201e7d10f701200341106a200341d8026a2003290300200341086a2903001065200341d00a6a2011200341106a41086a290300220f7d20122003290310220654ad7d200f20117d2006201254ad7d2006201258200f201158200f20115122041b22081b22103703002003201220067d200620127d20081b221e3703c80a20032006201256200f20115620041b2204ad22063703c00a41012108024020040d002003201e3703a004200320103703a8042003200341a0046a3602e00f200341e00f6a105f4100210820032903c00a21060b200341c00a6a41086a21040240024020064200520d002008450d01200320043602a004200341a0046a105f0c010b200320043602a004200341a0046a10430b4100210b4100210402402007450d00200521040b41012107410121080c030b4100210b4101210702402008450d00200a10310b410121080c020b41012107410121080b4101210b0b024020012d0000417e6a220541024b0d00024002400240024020050e03000102000b200b450d03200141086a280200450d03200141046a28020010310c030b20070d010c020b2008450d01200141286a280200450d01200141246a28020010310c010b2001412c6a280200450d00200141286a28020010310b200020023602042000200436020020034190166a24000b9d0201057f230041106b220324000240024002400240200141046a2204417f4c0d000240024020040d00410121050c010b2004102d2205450d020b20034100360208200320043602042003200536020020012003106f0240024020032802042206200328020822056b2001490d00200328020021040c010b200520016a22042005490d04200641017422072004200720044b1b22074100480d040240024020060d002007102d21040c010b200328020020062007102f21040b2004450d032003200736020420032004360200200721060b200420056a2000200110ab051a2002290200200520016aad4220862004ad84100302402006450d00200410310b200341106a24000f0b1032000b200441011033000b200741011033000b1034000be80501057f024002402001450d00412b418080c4002000280200220641017122011b2107200120056a21080c010b200541016a210820002802002106412d21070b0240024020064104710d00410021020c010b4100210902402003450d002003210a200221010340200920012d000041c00171418001466a2109200141016a2101200a417f6a220a0d000b0b200820036a20096b21080b410121010240024020002802084101460d00200020072002200310f4030d012000280218200420052000411c6a28020028020c1103000f0b02402000410c6a280200220920084b0d00200020072002200310f4030d012000280218200420052000411c6a28020028020c1103000f0b0240024020064108710d0041002101200920086b22092108024002400240410120002d0030220a200a4103461b0e0402010001020b20094101762101200941016a41017621080c010b41002108200921010b200141016a210103402001417f6a2201450d0220002802182000280204200028021c280210110400450d000b41010f0b41012101200041013a003020004130360204200020072002200310f4030d0141002101200920086b220a2103024002400240410120002d0030220920094103461b0e0402010001020b200a4101762101200a41016a41017621030c010b41002103200a21010b200141016a2101024003402001417f6a2201450d0120002802182000280204200028021c280210110400450d000b41010f0b2000280204210a41012101200028021820042005200028021c28020c1103000d01200341016a2109200028021c210320002802182100034002402009417f6a22090d0041000f0b410121012000200a2003280210110400450d000c020b0b2000280204210a41012101200020072002200310f4030d00200028021820042005200028021c28020c1103000d00200841016a2109200028021c210320002802182100034002402009417f6a22090d0041000f0b410121012000200a2003280210110400450d000b0b20010bd50203027f017e037f230041306b22032400412721040240024020004290ce005a0d00200021050c010b412721040340200341096a20046a2206417c6a200020004290ce0080220542f0b17f7e7ca7220741ffff037141e4006e220841017441da9dc3006a2f00003b00002006417e6a2008419c7f6c20076a41ffff037141017441da9dc3006a2f00003b00002004417c6a2104200042ffc1d72f5621062005210020060d000b0b02402005a7220641e3004c0d00200341096a2004417e6a22046a2005a7220741ffff037141e4006e2206419c7f6c20076a41ffff037141017441da9dc3006a2f00003b00000b024002402006410a480d00200341096a2004417e6a22046a200641017441da9dc3006a2f00003b00000c010b200341096a2004417f6a22046a200641306a3a00000b2002200141f0eac4004100200341096a20046a412720046b1095022104200341306a240020040bfc1b03057f027e067f230041c0086b22032400024002400240024002400240024002400240024002404114102d2204450d00200441002900a09b41370000200441106a41002800b09b41360000200441086a41002900a89b4137000020034294808080c0023702a406200320043602a0062000200341a0066a1046200341c0076a41186a220520033502a80642208620033502a006841000220441186a290000370300200341c0076a41106a2206200441106a290000370300200341c0076a41086a2207200441086a290000370300200320042900003703c00720041031200341086a41186a2005290300370300200341086a41106a2006290300370300200341086a41086a2007290300370300200320032903c007370308024020032802a406450d0020032802a00610310b200320013703a006200320023703a806200341086aad42808080808004842208200341a0066aad42808080808002841003200142ff93ebdc035620024200522002501b0d054114102d2204450d01200441002900a09b41370000200441106a41002800b09b41360000200441086a41002900a89b4137000020034294808080c0023702a406200320043602a0062000200341a0066a1046200341c0076a41186a220520033502a80642208620033502a006841000220441186a290000370300200341c0076a41106a2206200441106a290000370300200341c0076a41086a2207200441086a290000370300200320042900003703c00720041031200341086a41186a2005290300370300200341086a41106a2006290300370300200341086a41086a2007290300370300200320032903c007370308024020032802a406450d0020032802a00610310b200341a0066a20081002104120032802a0062204450d03200341a0066a41086a2802004110490d02200441086a290000210220042900002101024020032802a406450d00200410310b20081009420121090c040b411441011033000b411441011033000b41e9bcc0004133200341a0086a419cbdc0001038000b420021090b410e102d2204450d01200441002900cc9b41370000200441066a41002900d29b413700002003428e808080e0013702a406200320043602a0062000200341a0066a1046200341c0076a41186a220520033502a80642208620033502a006841000220441186a290000370300200341c0076a41106a2206200441106a290000370300200341c0076a41086a2207200441086a290000370300200320042900003703c00720041031200341086a41186a2005290300370300200341086a41106a2006290300370300200341086a41086a2007290300370300200320032903c007370308024020032802a406450d0020032802a00610310b2008100902402001200284500d002009a7450d0020032001370308200320023703102003200341086a3602a006200341a0066a105f0b20001098024117102d2204450d0220044100290082e1403700002004410f6a4100290091e140370000200441086a410029008ae14037000020034297808080f00237020c200320043602082000200341086a1046200341c0076a41186a220520033502104220862003350208841000220441186a290000370300200341c0076a41106a2206200441106a290000370300200341c0076a41086a2207200441086a290000370300200320042900003703c0072004103120034180086a41186a200529030037030020034180086a41106a200629030037030020034180086a41086a2007290300370300200320032903c007370380080240200328020c450d00200328020810310b200341a0066a20034180086aad4280808080800484220210021041024020032802a0062204450d0020032802a40621052003200341a8066a2802003602b405200320043602b005200341086a200341b0056a10f40120032d000822064102460d04200341286a3502002101200341246a280200210a200341206a280200210702402005450d00200410310b2002100920060d0020014220862007ad841005200a450d00200710310b200341a0056a200010990220034190066a20033502a80542208620032802a005220bad8422021002104102400240200328029006220a450d0020034198066a2802002107200328029406210c41002104200341003a00c006200721060240024002400240034020072004460d01200341a0066a20046a200a20046a2d00003a00002003200441016a22053a00c0062006417f6a21062005210420054120470d000b20034180086a41186a2204200341a0066a41186a29030037030020034180086a41106a220d200341a0066a41106a29030037030020034180086a41086a220e200341a0066a41086a290300370300200320032903a00637038008200541ff01714120490d03200720056b210f20034180076a41086a200e29030037030020034180076a41106a200d29030037030020034180076a41186a2004290300370300200320032903800822013703e007200320013703800741002104200341003a00c006200a20056a21070340200f2004460d02200341a0066a20046a200720046a2d00003a00002003200441016a22053a00c0062005210420054120470d000b200341c0076a41186a220f200341a0066a41186a290300370300200341c0076a41106a220d200341a0066a41106a290300370300200341c0076a41086a220e200341a0066a41086a290300370300200320032903a0063703c007200541ff01714120490d03200620056b2104200720056a2105200341a0076a41086a200e290300370300200341a0076a41106a200d290300370300200341a0076a41186a200f290300370300200320032903c00722013703e007200320013703a00741002106200341003a00c00603402004450d03200341a0066a20066a20052d00003a00002003200641016a22073a00c0062004417f6a2104200541016a21052007210620074120470d000b200341a0086a41186a2204200341a0066a41186a290300370300200341a0086a41106a2205200341a0066a41106a290300370300200341a0086a41086a2206200341a0066a41086a290300370300200320032903a0063703a008200741ff01714120490d03200341c0076a41086a22072006290300370300200341c0076a41106a22062005290300370300200341c0076a41186a22052004290300370300200341086a41186a20034180076a41186a290300370300200341086a41106a20034180076a41106a290300370300200341086a41086a20034180076a41086a290300370300200320032903a00822013703e007200320013703c0072003200329038007370308200341c0006a200341a0076a41186a290300370300200341386a200341a0076a41106a290300370300200341306a200341a0076a41086a290300370300200320032903a007370328200341e0006a2005290300370300200341d8006a2006290300370300200341d0006a2007290300370300200320032903c007370348200341a0066a200341086a41e00010ab051a0240200c450d00200a10310b200341086a200341a0066a41e00010ab051a20021009410121040c050b200441ff0171450d02200341003a00c0060c020b200441ff0171450d01200341003a00c0060c010b200641ff0171450d00200341003a00c0060b41e9bcc0004133200341a0086a419cbdc0001038000b410021040b200341b0056a200341086a41e00010ab051a200341086a200341b0056a41e00010ab051a024002402004450d00200341a0066a200341086a41e00010ab051a024020032802a405450d00200b10310b200341086a200341a0066a41e00010ab051a200341b8056a4120360200200341e7e485f3063602b0052003200341086a3602b405200341a0086a200341b0056a109a0220033502a80842208620032802a0082204ad841009024020032802a408450d00200410310b200341e2c289ab063602b005200341203602b8052003200341086a41206a3602b405200341a0086a200341b0056a109a0220033502a80842208620032802a0082204ad841009024020032802a408450d00200410310b200341203602b8052003200341c8006a3602b405200341e9dabdf3063602b005200341a0086a200341b0056a109a0220033502a80842208620032802a0082204ad84100920032802a408450d01200410310c010b20032802a405450d00200b10310b4118102d2204450d04200441002900b49b41370000200441106a41002900c49b41370000200441086a41002900bc9b413700002003429880808080033702a406200320043602a0062000200341a0066a1046200341c0076a41186a220520033502a80642208620033502a006841000220441186a290000370300200341c0076a41106a2206200441106a290000370300200341c0076a41086a2207200441086a290000370300200320042900003703c00720041031200341086a41186a2005290300370300200341086a41106a2006290300370300200341086a41086a2007290300370300200320032903c007370308024020032802a406450d0020032802a00610310b200341a0066a200810021041024020032802a0062204450d00200341a0066a41086a2802004110490d06200441086a290000210220042900002101024020032802a406450d00200410310b20012002844200520d010b2000109b02200341086a41086a41013a0000200341116a2000290000370000200341196a200041086a290000370000200341216a200041106a290000370000200341296a200041186a290000370000200341013a000841014100200341086a10450b200341c0086a24000f0b410e41011033000b411741011033000b41e9bcc0004133200341a0086a419cbdc0001038000b411841011033000b41e9bcc0004133200341a0086a419cbdc0001038000bde0803057f047e037f230041b0016b22012400024002400240410e102d2202450d00200241002900a9ba41370000200241066a41002900afba413700002001428e808080e00137026c200120023602682000200141e8006a104620014188016a41186a220320013502704220862001350268841000220241186a29000037030020014188016a41106a2204200241106a29000037030020014188016a41086a2205200241086a290000370300200120022900003703880120021031200141286a41186a2003290300370300200141286a41106a2004290300370300200141286a41086a200529030037030020012001290388013703280240200128026c450d00200128026810310b20014188016a200141286a41201052024020012d00880141014722020d00200141286aad428080808080048410090b200141c8006a41186a2203200141a1016a2900002206370300200141c8006a41106a220420014199016a2900002207370300200141c8006a41086a220520014191016a290000220837030020012001290089012209370348200141e8006a41186a220a2006370300200141e8006a41106a220b2007370300200141e8006a41086a220c200837030020012009370368024020020d00200141086a41186a200a2903002206370300200141086a41106a200b2903002207370300200141086a41086a200c290300220837030020012001290368220937030820032006370300200420073703002005200837030020012009370348410e102d2202450d022002410029009bba41370000200241066a41002900a1ba413700002001428e808080e00137022c20012002360228200141c8006a200141286a104620014188016a41186a220320013502304220862001350228841000220241186a29000037030020014188016a41106a2204200241106a29000037030020014188016a41086a2205200241086a290000370300200120022900003703880120021031200141e8006a41186a2003290300370300200141e8006a41106a2004290300370300200141e8006a41086a200529030037030020012001290388013703680240200128022c450d00200128022810310b200141e8006aad428080808080048410090b410d102d2202450d02200241002900b7ba41370000200241056a41002900bcba413700002001428d808080d00137024c200120023602482000200141c8006a104620014188016a41186a220320013502504220862001350248841000220241186a29000037030020014188016a41106a2204200241106a29000037030020014188016a41086a2205200241086a290000370300200120022900003703880120021031200141e8006a41186a2003290300370300200141e8006a41106a2004290300370300200141e8006a41086a200529030037030020012001290388013703680240200128024c450d00200128024810310b200141e8006aad42808080808004841009200010c102200010c202200141b0016a24000f0b410e41011033000b410e41011033000b410d41011033000bae0401067f230041306b2202240002400240024002404110102d2203450d00200341086a410029009bef4237000020034100290093ef4237000020024290808080800237021420022003360210410d200241106a106f024002400240024020022802142204200228021822056b410d490d002005410d6a2106200228021021030c010b2005410d6a22062005490d01200441017422032006200320064b1b22074100480d010240024020040d002007102d21030c010b200228021020042007102f21030b2003450d042002200736021420022003360210200721040b20022006360218200320056a22054100290086ef42370000200541056a410029008bef4237000020022003200610db0302402004450d00200310310b20022802082203417f4c0d04200228020021060240024020030d00410121070c010b2003102d2207450d0620072006200310ab051a0b02402002280204450d00200610310b200241106a200110af0220034101742206200341206a2204200620044b1b22054100480d000240024020030d002005102d21060c010b200720032005102f21060b20060d01200541011033000b1034000b200620036a22032002290010370000200341186a200241106a41186a290000370000200341106a200241106a41106a290000370000200341086a200241106a41086a290000370000200020043602082000200536020420002006360200200241306a24000f0b411041011033000b200741011033000b1032000b200341011033000bf80a010b7f230041c0006b2202240002400240024002400240024002400240024002404110102d2203450d00200341086a41002900abef42370000200341002900a3ef4237000020024290808080800237022420022003360220410d200241206a106f024002400240024020022802242204200228022822056b410d490d002005410d6a2106200228022021030c010b2005410d6a22062005490d01200441017422032006200320064b1b22074100480d010240024020040d002007102d21030c010b200228022020042007102f21030b2003450d042002200736022420022003360220200721040b20022006360228200320056a22054100290086ef42370000200541056a410029008bef4237000020022003200610db0302402004450d00200310310b20022802082206417f4c0d04200228020021030240024020060d00410121080c010b2006102d2208450d0620082003200610ab051a0b02402002280204450d00200310310b200141086a280200220741046a2204417f4c0d040240024020040d00410121030c010b2004102d2203450d070b20024100360228200220043602242002200336022020012d00002105024020040d004101102d2203450d0820024101360224200220033602200b20024101360228200320053a000020012d0001210902402002280224220520022802282204470d00200441016a22052004490d012004410174220a2005200a20054b1b22054100480d010240024020040d002005102d21030c010b200320042005102f21030b2003450d0920022005360224200220033602200b2002200441016a220a360228200320046a20093a000020012d0002210b024002402005200a460d00200521090c010b200541016a22092005490d012005410174220c2009200c20094b1b22094100480d010240024020050d002009102d21030c010b200320052009102f21030b2003450d0a20022009360224200220033602200b2002200441026a22053602282003200a6a200b3a000020012d0003210a024020092005470d00200941016a220b2009490d012009410174220c200b200c200b4b1b220b4100480d010240024020090d00200b102d21030c010b20032009200b102f21030b2003450d0b2002200b360224200220033602200b2002200441036a360228200320056a200a3a0000200128020421052007200241206a106f0240024020022802242201200228022822036b2007490d00200228022021040c010b200320076a22042003490d01200141017422092004200920044b1b22094100480d010240024020010d002009102d21040c010b200228022020012009102f21040b2004450d0c2002200936022420022004360220200921010b200420036a2005200710ab051a200241206a41186a2205200320076aad4220862004ad841000220341186a290000370300200241206a41106a2207200341106a290000370300200241206a41086a2209200341086a2900003703002002200329000037032020031031200241186a2005290300370300200241106a2007290300370300200241086a20092903003703002002200229032037030002402001450d00200410310b20064101742203200641206a2204200320044b1b22014100480d000240024020060d002001102d21030c010b200820062001102f21030b20030d01200141011033000b1034000b200320066a22062002290300370000200641186a200241186a290300370000200641106a200241106a290300370000200641086a200241086a290300370000200020043602082000200136020420002003360200200241c0006a24000f0b411041011033000b200741011033000b1032000b200641011033000b200441011033000b410141011033000b200541011033000b200941011033000b200b41011033000b200941011033000b9d0201047f230041d0006b2201240002404113102d2202450d00200241002900eea7423700002002410f6a41002800fda742360000200241086a41002900f6a74237000020014293808080b002370224200120023602202000200141206a1046200141306a41186a220020013502284220862001350220841000220241186a290000370300200141306a41106a2203200241106a290000370300200141306a41086a2204200241086a2900003703002001200229000037033020021031200141186a2000290300370300200141106a2003290300370300200141086a20042903003703002001200129033037030002402001280224450d00200128022010310b2001ad42808080808004841009200141d0006a24000f0b411341011033000b9c0301047f230041d0006b220224000240410e102d2203450d00200341002900cc9b41370000200341066a41002900d29b413700002002428e808080e001370224200220033602202000200241206a1046200241306a41186a220020023502284220862002350220841000220341186a290000370300200241306a41106a2204200341106a290000370300200241306a41086a2205200341086a2900003703002002200329000037033020031031200241186a2000290300370300200241106a2004290300370300200241086a20052903003703002002200229033037030002402002280224450d00200228022010310b200241306a2001280200220420012802082203109d022002ad4280808080800484200235023842208620022802302200ad84100302402002280234450d00200010310b02402003450d00200341386c210020042103034002402003290300500d002003411c6a280200450d00200341186a28020010310b200341386a2103200041486a22000d000b0b0240200141046a280200450d00200410310b200241d0006a24000f0b410e41011033000bca1403057f027e047f230041106b22032400200341003602082003420137030020022003106f0240024002400240024002400240024002400240024002400240024002400240024002402002450d002001200241386c6a2104034020012d0028210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d13200241017422072006200720064b1b22074100480d130240024020020d002007102d21060c010b200328020020022007102f21060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a000020012d0029210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d13200241017422072006200720064b1b22074100480d130240024020020d002007102d21060c010b200328020020022007102f21060b2006450d0420032007360204200320063602000b2003200241016a360208200620026a20053a000020012d002a210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d13200241017422072006200720064b1b22074100480d130240024020020d002007102d21060c010b200328020020022007102f21060b2006450d0520032007360204200320063602000b2003200241016a360208200620026a20053a000020012d002b210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d13200241017422072006200720064b1b22074100480d130240024020020d002007102d21060c010b200328020020022007102f21060b2006450d0620032007360204200320063602000b2003200241016a360208200620026a20053a000020012d002c210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d13200241017422072006200720064b1b22074100480d130240024020020d002007102d21060c010b200328020020022007102f21060b2006450d0720032007360204200320063602000b2003200241016a360208200620026a20053a000020012d002d210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d13200241017422072006200720064b1b22074100480d130240024020020d002007102d21060c010b200328020020022007102f21060b2006450d0820032007360204200320063602000b2003200241016a360208200620026a20053a000020012d002e210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d13200241017422072006200720064b1b22074100480d130240024020020d002007102d21060c010b200328020020022007102f21060b2006450d0920032007360204200320063602000b2003200241016a360208200620026a20053a000020012d002f210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d13200241017422072006200720064b1b22074100480d130240024020020d002007102d21060c010b200328020020022007102f21060b2006450d0a20032007360204200320063602000b2003200241016a360208200620026a20053a000020032802042106200328020821020240024020012903004201510d000240024020062002460d00200328020021060c010b200241016a22062002490d15200241017422052006200520064b1b22054100480d150240024020020d002005102d21060c010b200328020020022005102f21060b2006450d0d20032005360204200320063602000b2003200241016a360208200620026a41003a0000200141106a2903002108200129030821090240024020032802042205200328020822076b4110490d00200741106a2102200328020021060c010b200741106a22022007490d15200541017422062002200620024b1b220a4100480d150240024020050d00200a102d21060c010b20032802002005200a102f21060b2006450d0e2003200a36020420032006360200200a21050b200620076a2207200837000820072009370000200320023602082001290318210802400240200520026b4108490d00200241086a21070c010b200241086a22072002490d152005410174220a2007200a20074b1b220a4100480d150240024020050d00200a102d21060c010b20062005200a102f21060b2006450d0f2003200a360204200320063602000b20032007360208200620026a20083700000c010b0240024020062002460d00200328020021060c010b200241016a22062002490d14200241017422052006200520064b1b22054100480d140240024020020d002005102d21060c010b200328020020022005102f21060b2006450d0f20032005360204200320063602000b2003200241016a360208200620026a41013a0000200141106a2903002108200129030821090240024020032802042206200328020822026b4110490d00200328020021060c010b200241106a22052002490d14200641017422072005200720054b1b22054100480d140240024020060d002005102d21060c010b200328020020062005102f21060b2006450d1020032005360204200320063602000b200620026a22062008370008200620093700002003200241106a36020820012802182105200128022022022003106f2002450d002005200241186c6a210b0340200541086a2903002108200529030021090240024020032802042206200328020822076b4110490d00200328020021020c010b200741106a22022007490d152006410174220a2002200a20024b1b220a4100480d150240024020060d00200a102d21020c010b20032802002006200a102f21020b2002450d122003200a36020420032002360200200a21060b200220076a220a2008370008200a20093700002003200741106a220a360208200541106a290300210802402006200a6b41074b0d00200a41086a220c200a490d152006410174220d200c200d200c4b1b220c4100480d150240024020060d00200c102d21020c010b20022006200c102f21020b2002450d132003200c360204200320023602000b2003200741186a3602082002200a6a2008370000200b200541186a2205470d000b0b20012d0030210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d13200241017422072006200720064b1b22074100480d130240024020020d002007102d21060c010b200328020020022007102f21060b2006450d1220032007360204200320063602000b2003200241016a360208200620026a20053a0000200141386a22012004470d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200541011033000b200a41011033000b200a41011033000b200541011033000b200541011033000b200a41011033000b200c41011033000b200741011033000b1034000ba20302047f017e230041e0006b2202240002400240410e102d2203450d00200341002900cc9b41370000200341066a41002900d29b413700002002428e808080e001370224200220033602202001200241206a1046200241386a41186a220120023502284220862002350220841000220341186a290000370300200241386a41106a2204200341106a290000370300200241386a41086a2205200341086a2900003703002002200329000037033820031031200241186a2001290300370300200241106a2004290300370300200241086a20052903003703002002200229033837030002402002280224450d00200228022010310b200241206a2002ad4280808080800484100210410240024020022802202203450d00200228022421012002200241286a28020036023420022003360230200241386a200241306a10820120022802382204450d03200229023c210602402001450d00200310310b20002006370204200020043602000c010b20004100360208200042083702000b200241e0006a24000f0b410e41011033000b41e9bcc0004133200241d8006a419cbdc0001038000bd20902057f027e230041d0056b22032400024002400240024002400240024002404118102d2204450d00200441002900b49b41370000200441106a41002900c49b41370000200441086a41002900bc9b4137000020034298808080800337022c200320043602282000200341286a1046200341386a41186a220520033502304220862003350228841000220441186a290000370300200341386a41106a2206200441106a290000370300200341386a41086a2207200441086a2900003703002003200429000037033820041031200341086a41186a2005290300370300200341086a41106a2006290300370300200341086a41086a2007290300370300200320032903383703080240200328022c450d00200328022810310b2003200137033820032002370340200341086aad42808080808004842208200341386aad42808080808002841003200142ff93ebdc035620024200522002501b0d054118102d2204450d01200441002900b49b41370000200441106a41002900c49b41370000200441086a41002900bc9b4137000020034298808080800337022c200320043602282000200341286a1046200341386a41186a220520033502304220862003350228841000220441186a290000370300200341386a41106a2206200441106a290000370300200341386a41086a2207200441086a2900003703002003200429000037033820041031200341086a41186a2005290300370300200341086a41106a2006290300370300200341086a41086a2007290300370300200320032903383703080240200328022c450d00200328022810310b200341386a20081002104120032802382204450d03200341386a41086a2802004110490d02200441086a2900002102200429000021010240200328023c450d00200410310b20081009420121090c040b411841011033000b411841011033000b41e9bcc0004133200341286a419cbdc0001038000b420021090b02402001200284500d002009a7450d0020032001370338200320023703402003200341386a360208200341086a105f0b4114102d2204450d01200441002900a09b41370000200441106a41002800b09b41360000200441086a41002900a89b4137000020034294808080c00237022c200320043602282000200341286a1046200341386a41186a220520033502304220862003350228841000220441186a290000370300200341386a41106a2206200441106a290000370300200341386a41086a2207200441086a2900003703002003200429000037033820041031200341086a41186a2005290300370300200341086a41106a2006290300370300200341086a41086a2007290300370300200320032903383703080240200328022c450d00200328022810310b200341386a200810021041024020032802382204450d00200341386a41086a2802004110490d03200441086a2900002102200429000021010240200328023c450d00200410310b20012002844200520d010b2000109b02200341386a41086a41013a0000200341c1006a2000290000370000200341c9006a200041086a290000370000200341d1006a200041106a290000370000200341d9006a200041186a290000370000200341013a003841014100200341386a10450b200341d0056a24000f0b411441011033000b41e9bcc0004133200341286a419cbdc0001038000b130020004104360204200041ec9bc1003602000b3400200041da84c40036020420004100360200200041146a4105360200200041106a41a49fc100360200200041086a42083702000b2201017f230041306b220224002002420037030020002002109b01200241306a24000b130020004103360204200041c4a3c1003602000bf50d02057f077e230041e0056b220624000240024002400240024002404114102d2207450d00200741002900a09b41370000200741106a41002800b09b41360000200741086a41002900a89b4137000020064294808080c00237023c200620073602382001200641386a1046200641c8006a41186a220820063502404220862006350238841000220741186a290000370300200641c8006a41106a2209200741106a290000370300200641c8006a41086a220a200741086a2900003703002006200729000037034820071031200641186a41186a2008290300370300200641186a41106a2009290300370300200641186a41086a200a290300370300200620062903483703180240200628023c450d00200628023810310b200641c8006a200641186aad4280808080800484220b1002104102400240200628024822070d004200210c4200210d0c010b200641c8006a41086a2802004110490d02200741086a290000210d2007290000210c200628024c450d00200710310b4114102d2207450d02200741002900a09b41370000200741106a41002800b09b41360000200741086a41002900a89b4137000020064294808080c00237023c200620073602382002200641386a1046200641c8006a41186a220820063502404220862006350238841000220741186a290000370300200641c8006a41106a2209200741106a290000370300200641c8006a41086a220a200741086a2900003703002006200729000037034820071031200641186a41186a2008290300370300200641186a41106a2009290300370300200641186a41086a200a290300370300200620062903483703180240200628023c450d00200628023810310b200641c8006a200b1002104102400240200628024822070d004200210e4200210f0c010b200641c8006a41086a2802004110490d04200741086a290000210f2007290000210e200628024c450d00200710310b0240200342e8077c220b200354220720042007ad7c2210200454200b20035a1b450d0041d1a6c1002107412821010c060b0240200c200b7d2211200c56200d20107d200c200b54ad7d220b200d56200b200d511b4101470d0041ce98c3002107411d21010c060b0240200342ff93ebdc035620044200522004501b0d00200e200f8450450d0041eaadc1002107411f21010c060b200641106a200141022011200b105d024020062802102207450d00200628021421010c060b0240200e20037c220d200e542207200f20047c2007ad7c220c200f54200c200f511b450d0041eb98c3002107412d21010c060b41002107024020012002470d000c060b024020012002412010ad050d000c060b0240201142ff93ebdc0356200b420052200b501b0d0020050d00419598c3002107411b21010c060b20012011200b1097024114102d2207450d04200741002900a09b41370000200741106a41002800b09b41360000200741086a41002900a89b4137000020064294808080c00237023c200620073602382002200641386a1046200641c8006a41186a220820063502404220862006350238841000220741186a290000370300200641c8006a41106a2209200741106a290000370300200641c8006a41086a220a200741086a2900003703002006200729000037034820071031200641186a41186a2008290300370300200641186a41106a2009290300370300200641186a41086a200a290300370300200620062903483703180240200628023c450d00200628023810310b200641086a200641186a4120410141004100103f024020062802084101460d00200210e40120064180016a200c370300200641f8006a200d370300200641c8006a41086a41003a0000200641d1006a2002290000370000200641d9006a200241086a290000370000200641e1006a200241106a290000370000200641e9006a200241186a290000370000200641013a004841014100200641c8006a10450b2002200d200c10970220064200370350200642e8073703482006200641c8006a360218200641186a105f200641b0016a4200370300200641a8016a42e807370300200641a0016a200437030020064198016a2003370300200641c8006a41086a41023a0000200641d1006a2001290000370000200641d9006a200141086a290000370000200641e1006a200141106a290000370000200641e9006a200141186a290000370000200641f1006a2002290000370000200641f9006a200241086a29000037000020064181016a200241106a29000037000020064189016a200241186a290000370000200641013a00484100210741014100200641c8006a10450c050b411441011033000b41e9bcc0004133200641386a419cbdc0001038000b411441011033000b41e9bcc0004133200641386a419cbdc0001038000b411441011033000b2000200136020420002007360200200641e0056a24000b0900200042043702000bc2490b037f017e017f017e037f017e037f047e017f017e037f230041c0066b22012400200141f0006a41086a2202418ba9c400ad42808080808002841001220341086a2900003703002001200329000037037020031031200141e0006a41086a200229030037030020012001290370370360200141a0016a200141e0006a106a0240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00a00122034102460d00200141e0006aad220442808080808002841009200141206a41086a200141a9016a290000370300200141206a41106a2202200141b1016a290000370300200141206a41186a2205200141b9016a290000370300200120012900a1013703200240200341037122034103460d0020030e03010001010b200141c0006a41186a2005290300370300200141c0006a41106a2002290300370300200141c0006a41086a200141206a41086a29030037030020012001290320370340200141f0006a41086a220241e4a8c400ad42808080809002841001220341086a2900003703002001200329000037037020031031200141e0006a41086a200229030037030020012001290370370360200141a0016a200442808080808002842206100210410240024020012802a00122030d00410021070c010b200141a0016a41086a2802004104490d022003280000210720012802a401450d00200310310b4116102d2203450d022003410e6a4100290083a944370000200341086a41002900fda844370000200341002900f5a84437000020034116412c102f2202450d032002200736001620014180016a41186a22052002ad4280808080a003841000220341186a29000037030020014180016a41106a2208200341106a29000037030020014180016a41086a2209200341086a290000370300200120032900003703800120031031200141a0016a41186a2005290300370300200141a0016a41106a2008290300370300200141a0016a41086a200929030037030020012001290380013703a00120021031200141f0006a200141a0016aad220a42808080808004841002104102400240024020012802702203450d00200128027421052001200141f8006a2802003602642001200336026020014180016a200141e0006a1081012001280280012202450d07200129028401210402402005450d00200310310b200120023602800120012004370284012004a721032004422088a72205418002490d014120102d2205450d0820052001290340370000200541186a200141c0006a41186a290300370000200541106a200141c0006a41106a290300370000200541086a200141c0006a41086a29030037000020014281808080103702a401200120053602a001200741016a2207200141a0016a107220051031200141f0006a41086a220841e4a8c400ad42808080809002841001220541086a2900003703002001200529000037037020051031200141e0006a41086a200829030037030020012001290370370360200120073602a0012006200a4280808080c0008410030c020b410021052001410036028801200142013703800141012102410021030b200141a0016a41186a2209200141c0006a41186a290300370300200141a0016a41106a220b200141c0006a41106a290300370300200141a0016a41086a220c200141c0006a41086a290300370300200120012903403703a001024020032005470d0020034101742208200341016a220d2008200d4b1b2208410574220d4100480d150240024020030d00200d102d21020c010b20022003410574200d102f21020b2002450d0820012008360284012001200236028001200821030b200220054105746a220820012903a001370000200841186a2009290300370000200841106a200b290300370000200841086a200c2903003700002001200541016a36028801200720014180016a10720b2003450d00200210310b200141f0006a41086a220241acc7c400ad4280808080b002841001220341086a2900003703002001200329000037037020031031200141a0016a41086a2002290300370300200120012903703703a00120014180016a200141a0016aad22044280808080800284220e100210412001280280012203450d0602400240024020014180016a41086a280200450d0020032d0000220541014b0d0020012802840121074100210220050e020201020b41e9bcc0004133200141b8066a419cbdc0001038000b410121020b02402007450d00200310310b200e10092002450d06200141e0006a41086a220241e8c7c400ad4280808080a003841001220341086a2900003703002001200329000037036020031031200141a0016a41086a2002290300370300200120012903603703a00120014180016a20044280808080800284220a10021041024002402001280280012203450d0020014180016a41086a2802004108490d0920032900002104200128028401450d01200310310c010b420021040b200141e0006a41086a220241fdc5c400ad4280808080a003841001220341086a2900003703002001200329000037036020031031200141f0006a41086a200229030037030020012001290360370370200141a0016a200141f0006aad4280808080800284100210410240024020012802a00122020d00410021030c010b200141a0016a41086a2802004104490d092002280000210320012802a401450d00200210310b200141106a20034180e59af70020034180e59af7004b22021b4180e59af700200320021b6bad220642002006420010b00542092001290310220f42808090bbbad6adf00d7f2001290318200f423f87521b210f200642a8c30180210602400240200341ffe49af7004b0d0042ffffffffffffffffff00428080808080808080807f20042006200f7d220f7d22064200531b20062004427f552203200f427f554720032006427f5547711b22044280ec94a37c20044280ec94a37c551b21040c010b42ffffffffffffffffff00428080808080808080807f20042006200f7c220f7c22064200531b20062004427f552203200f427f554620032006427f5547711b21040b200141e0006a41086a220241e8c7c400ad4280808080a003841001220341086a2900003703002001200329000037036020031031200141a0016a41086a22052002290300370300200120012903603703a0012001200437038001200a20014180016aad221042808080808001841003200141f0006a41086a220341f4c7c200ad42808080809002841001220741086a290000370300200120072900003703702007103120052003290300370300200120012903703703a001200e1009200341eca7c400ad4280808080f002841001220741086a290000370300200120072900003703702007103120052003290300370300200120012903703703a001200e1009200341a0cbc400ad4280808080d003841001220541086a2900003703002001200529000037037020051031200220032903003703002001200129037037036020014180016a200141e0006aad428080808080028422111002104102402001280280012202450d002001280284012109200120014180016a41086a28020022033602442001200236024020034104490d0a2001200241046a36024020012003417c6a220536024420054104490d0a200228000021052001200341786a3602442001200241086a36024020022800042108200141a0016a200141c0006a106d20012802a0012203450d0a20012902a401210441002107024002402001280244220c0d000c010b2001200c417f6a221236024420012001280240220d41016a3602400240200d2d00004101460d000c010b20124104490d002001200c417b6a3602442001200d41056a360240200d280001210b410121070b02402009450d00200210310b20014198016a200b3602002001418c016a20043702002001200736029401200120033602880120012008360284012001200536028001024020052000470d002004422088a721090240024020070d002009ad42287e2204422088a70d0e2004a72202417f4c0d0e0240024020020d004108210b0c010b2002102d220b450d100b4100210502402009450d00200941286c210741002105200b21020340200341086a2903002104200341106a2903002106200341186a290300210f20032903002113200241206a200341206a290300370300200241186a200f370300200241106a2006370300200241086a200437030020022013370300200241286a2102200541016a2105200341286a2103200741586a22070d000b0b200141d0006a2008360200200141c0006a410c6a2005360200200141c0006a41086a20093602002001200b36024420014100360240200141a0016a200141c0006a10a7022001412b6a200141a0016a41086a280200360000200120012903a001370023200141a0016a410c6a200141276a290000370000200141c6a4b9da043600a101200141023a00a001200120012900203700a501200141a0016a10712009450d01200b10310c010b2009ad42287e2204422088a70d0d2004a72202417f4c0d0d0240024020020d004108210c0c010b2002102d220c450d100b0240024020090d00410021050c010b200941286c210741002105200c21020340200341086a2903002104200341106a2903002106200341186a290300210f20032903002113200241206a200341206a290300370300200241186a200f370300200241106a2006370300200241086a200437030020022013370300200241286a2102200541016a2105200341286a2103200741586a22070d000b0b200141d4006a2008360200200141d0006a2005360200200141c0006a410c6a2009360200200141c0006a41086a200c3602002001200b36024420014101360240200141a0016a200141c0006a10a7022001412b6a200141a0016a41086a280200360000200120012903a001370023200141a0016a410c6a200141276a290000370000200141c6a4b9da043600a101200141023a00a001200120012900203700a501200141a0016a10712009450d00200c10310b200128028401210820012802800121050b0240200820056a2000470d004101102d2203450d0f20014281808080103702a401200120033602a001200341013a0000200128028801210220014190016a2802002203200141a0016a106f02402003450d002002200341286c6a210803402002200141a0016a1046200241206a29030021040240024020012802a401220520012802a80122036b4108490d0020012802a00121050c010b200341086a22072003490d17200541017422032007200320074b1b22034100480d170240024020050d002003102d21050c010b20012802a00120052003102f21050b2005450d13200120033602a401200120053602a00120012802a80121030b2001200341086a3602a801200520036a20043700002008200241286a2202470d000b0b20014188016a210320012802a401210241e6c8c400ad4280808080c0028420013502a80142208620012802a0012205ad84100302402002450d00200510310b200141a0016a41086a2003290000370300200141b0016a200341086a280000360200200141003602a401200141043a00a00141014100200141a0016a1045200141f0006a41086a220241a0cbc400ad4280808080d003841001220341086a2900003703002001200329000037037020031031200141e0006a41086a200229030037030020012001290370370360201110090c010b200128028c01450d0020012802880110310b200141f0006a41086a2202418cd9c400ad4280808080d002841001220341086a2900003703002001200329000037037020031031200141e0006a41086a200229030037030020012001290370370360200141a0016a20111002104120012802a0012203450d11024002400240200141a0016a41086a2802002208450d0020032d0000220541034b0d0020012802a4012107410021020240024020050e0404000301040b2008417f6a4108490d0120032900012104410121020c030b2008417f6a4108490d0020032900012104410321020c020b41e9bcc0004133200141b8066a419cbdc0001038000b410221020b02402007450d00200310310b2002417f6a220341024b0d1120030e0310110f100b41e9bcc0004133200141b8066a419cbdc0001038000b411641011033000b412c41011033000b41e9bcc0004133200141b8066a419cbdc0001038000b412041011033000b200d41011033000b418cb1c000412b419cdec40010a401000b41e9bcc0004133200141b8066a419cbdc0001038000b41e9bcc0004133200141b8066a419cbdc0001038000b41e9bcc0004133200141b8066a419cbdc0001038000b1032000b200241081033000b200241081033000b410141011033000b200341011033000b2004422088a7210302402004a722022000470d0020014104360280012001200336028401200141a0016a20014180016a10a7022001412b6a200141a8016a280200360000200120012903a001370023200141ac016a200141276a290000370000200141c6a4b9da043600a101200141023a00a001200120012900203700a501200141a0016a10710b200320026a2000470d012001410036028001200141f0006a41086a2202418cd9c400ad4280808080d002841001220341086a2900003703002001200329000037037020031031200141e0006a41086a200229030037030020012001290370370360200141a0016a20014180016a10a802201120013502a80142208620012802a0012203ad841003024020012802a401450d00200310310b200141023602a401200141043a00a00141014100200141a0016a10450c010b2004422088a7210302402004a722022000470d0020014103360280012001200336028401200141a0016a20014180016a10a7022001412b6a200141a8016a280200360000200120012903a001370023200141ac016a200141276a290000370000200141c6a4b9da043600a101200141023a00a001200120012900203700a501200141a0016a10710b200320026a2000470d002001410236028001200141f0006a41086a2202418cd9c400ad4280808080d002841001220341086a2900003703002001200329000037037020031031200141e0006a41086a200229030037030020012001290370370360200141a0016a20014180016a10a802201120013502a80142208620012802a0012203ad841003024020012802a401450d00200310310b200141013602a401200141043a00a00141014100200141a0016a10450b200141f0006a41086a220241e291c200ad42808080808002841001220341086a2900003703002001200329000037037020031031200141a0016a41086a2002290300370300200120012903703703a00120014180016a200a10021041024002402001280280012203450d00024020014180016a41086a2802004104490d00200328000021120240200128028401450d00200310310b200a1009410121050c020b41e9bcc0004133200141b8066a419cbdc0001038000b410021050b200141f0006a41086a220241a8bac400ad4280808080d002841001220341086a2900003703002001200329000037037020031031200141a0016a41086a2002290300370300200120012903703703a00120014180016a200a100210414102210302402001280280012202450d0002400240024020014180016a41086a280200450d0020022d0000220741014b0d0020012802840121084100210320070e020201020b41e9bcc0004133200141b8066a419cbdc0001038000b410121030b2008450d00200210310b02400240024002400240024002400240024002400240024020034102460d0020034101710d010b4104102d2202450d0120024100360200200141f0006a41086a220741f291c200ad4280808080d002841001220341086a2900003703002001200329000037037020031031200141a0016a41086a2007290300370300200120012903703703a00120014100360288012001420137038001410120014180016a106f2002280200210902400240200128028401220820012802880122076b4104490d0020012802800121030c010b200741046a22032007490d0c200841017422002003200020034b1b22004100480d0c0240024020080d002000102d21030c010b20012802800120082000102f21030b2003450d0320012000360284012001200336028001200021080b2001200741046a220036028801200320076a2009360000200a2000ad4220862003ad84100302402008450d00200310310b200210314104102d2202450d0320024100360200200141f0006a41086a220741db92c200ad4280808080e002841001220341086a2900003703002001200329000037037020031031200141a0016a41086a2007290300370300200120012903703703a00120014100360288012001420137038001410120014180016a106f2002280200210902400240200128028401220820012802880122076b4104490d0020012802800121030c010b200741046a22032007490d0c200841017422002003200020034b1b22004100480d0c0240024020080d002000102d21030c010b20012802800120082000102f21030b2003450d0520012000360284012001200336028001200021080b2001200741046a220036028801200320076a2009360000200a2000ad4220862003ad84100302402008450d00200310310b20021031200141f0006a41086a220341f192c200ad42808080808002841001220241086a2900003703002001200229000037037020021031200141a0016a41086a22072003290300370300200120012903703703a0012001410036028001200a20104280808080c000841003200341a8bac400ad4280808080d002841001220241086a290000370300200120022900003703702002103120072003290300370300200120012903703703a001200141013a008001200a20104280808080108410030b200141f0006a41086a220241f291c200ad4280808080d002841001220341086a2900003703002001200329000037037020031031200141a0016a41086a2002290300370300200120012903703703a001200141c0006a200a100210410240024020012802402203450d00200128024421022001200141c0006a41086a2802003602242001200336022020014180016a200141206a108b012001280280012214450d06200129028401210f2002450d01200310310c010b4200210f410421140b200141f0006a41086a220241db92c200ad4280808080e002841001220341086a2900003703002001200329000037037020031031200141a0016a41086a2002290300370300200120012903703703a001200141c0006a200a100210410240024020012802402203450d00200128024421022001200141c0006a41086a2802003602242001200336022020014180016a200141206a108b012001280280012208450d07200129028401210602402002450d00200310310b200120083602202006422088a7210c0c010b41042108200141043602204100210c420021060b200f422088a72115024020050d002015417f6a220320154f0d07200320154b0d07201420034102746a28020021120b41002015419c7f6a22032003201541016a4b1b221620154b0d07201420164102746a210d2016450d09200cad21042014210b0340200b2802002100024002400240024002402004a7220941014b0d004100210320090e020201020b4100210320092102034020032002410176220520036a22072000200820074102746a280200491b2103200220056b220241014b0d000b0b20002008200341027422026a2802002205460d022003200020054b6a21030c010b410021030b200120033602a00141a793c200412e200141a0016a41d893c2001038000b20042003ad580d09200820026a2202200241046a2003417f7320096a41027410ac051a200642ffffffff0f832009417f6a220cad422086842106200b41046a220b200d460d0a2004427f7c2104200128022021080c000b0b410441041033000b200041011033000b410441041033000b200041011033000b41e9bcc0004133200141b8066a419cbdc0001038000b41e9bcc0004133200141b8066a419cbdc0001038000b418193c200412610bf01000b41cfe9c300411c419cdec40010a401000b41daaec000411d419cdec40010a401000b200f42ffffffff0f8321040240201520166b2203450d0002402016450d002014200d200341027410ac051a2006422088a7210c0b20042003ad4220868421040b20012802202108410021030240024002400240024002400240024002400240024002400240200c41014b0d00200c0e020201020b200c2102034020032002410176220520036a22072012200820074102746a280200491b2103200220056b220241014b0d000b0b02402012200820034102746a2802002202460d002003201220024b6a21030b200c2003490d010b200c2006a7470d02200c41016a2202200c490d0a200c41017422052002200520024b1b220241ffffffff03712002470d0a2002410274220541004e0d010c0a0b41bcaec000411e419cdec40010a401000b02400240200c0d002005102d21080c010b2008200c4102742005102f21080b2008450d01200120083602202002ad21060b200820034102746a220241046a2002200c20036b41027410ac051a2002201236020002402004422088220fa722022004a7470d00200241016a22032002490d08200fa722074101742205200320032005491b220341ffffffff03712003470d08200341027422054100480d080240024020020d002005102d21140c010b201420074102742005102f21140b2014450d022004422088a721022003ad21040b201420024102746a20123602000240200c41016a220d0d0041e893c20041c300419cdec40010a401000b200d200d41017622034d0d022001280220220520034102746a28020021120240200d4101710d00200d2003417f6a22034d0d04200520034102746a28020020126a41017621120b200141f0006a41086a220541f291c200ad4280808080d002841001220341086a2900003703002001200329000037037020031031200141a0016a41086a2005290300370300200120012903703703a00120014100360288012001420137038001200241016a221520014180016a106f0240024020150d002001280288012100200128028401210820012802800121020c010b410020012802880122036b2105200241027441046a210920012802840121082014210703402007280200210b02400240200820056a4104490d0020012802800121020c010b200341046a22022003490d0a200841017422002002200020024b1b22004100480d0a0240024020080d002000102d21020c010b20012802800120082000102f21020b2002450d0720012000360284012001200236028001200021080b200741046a21072001200341046a220036028801200220036a200b3600002005417c6a2105200021032009417c6a22090d000b0b2004a72103200a2000ad4220862002ad84100302402008450d00200210310b02402003450d00201410310b20012802202114200141f0006a41086a220241db92c200ad4280808080e002841001220341086a2900003703002001200329000037037020031031200141a0016a41086a2002290300370300200120012903703703a00120014201370380012001410036028801200d20014180016a106f200c41027441046a2100410020012802880122036b21052006a7210c20012802840121082014210703402007280200210b02400240200820056a4104490d0020012802800121020c010b200341046a22022003490d09200841017422092002200920024b1b22094100480d090240024020080d002009102d21020c010b20012802800120082009102f21020b2002450d0720012009360284012001200236028001200921080b200741046a21072001200341046a220936028801200220036a200b3600002005417c6a2105200921032000417c6a22000d000b200a2009ad4220862002ad84100302402008450d00200210310b0240200c450d00201410310b200141f0006a41086a220341f192c200ad42808080808002841001220241086a2900003703002001200229000037037020021031200141a0016a41086a22052003290300370300200120012903703703a0012001201236028001200a20104280808080c0008410030240201541e500470d002012419a086a105b4b0d00200141f0006a41086a220741fac8c400ad4280808080f002841001220241086a2900003703002001200229000037037020021031200141e0006a41086a2007290300370300200120012903703703604108102d2202450d0720022012360004200241e40036000020112002ad42808080808001841003200210310b200341b9b9c100ad4280808080f0028422041001220241086a290000370300200120022900003703702002103120052003290300370300200120012903703703a001200141086a200141a0016a4110410141004100103f024020012802084101460d001099012106200141f0006a41086a220220041001220341086a2900003703002001200329000037037020031031200141a0016a41086a2002290300370300200120012903703703a0012001200637038001200e2010428080808080018410030b200141f0006a41086a220241b6b0c400ad42808080809002841001220341086a2900003703002001200329000037037020031031200141a0016a41086a2002290300370300200120012903703703a001200e1009200141c0066a24000f0b200541041033000b200541041033000b41e49cc4002003200d104b000b41e49cc4002003200d104b000b200041011033000b200941011033000b410841011033000b1034000bde0d03047f017e027f230041106b2202240020024100360208200242013703000240024002400240024002400240024002400240024002400240024002402001280200220341044b0d000240024002400240024020030e050001020304000b4101102d2203450d05200242818080801037020420022003360200200341013a0000200128020421042001410c6a28020022032002106f02402003450d002004200341286c6a21050340200420021046200441206a29030021060240024020022802042207200228020822036b4108490d00200228020021070c010b200341086a22082003490d15200741017422032008200320084b1b22034100480d150240024020070d002003102d21070c010b200228020020072003102f21070b2007450d092002200336020420022007360200200228020821030b2002200341086a360208200720036a20063700002005200441286a2204470d000b0b200141106a28020021070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d13200441017422032008200320084b1b22034100480d130240024020040d002003102d21040c010b200228020020042003102f21040b2004450d082002200336020420022004360200200228020821030b2002200341046a360208200420036a20073600000c040b4101102d2203450d07200242818080801037020420022003360200200341023a0000200128020421070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d12200441017422052008200520084b1b22084100480d120240024020040d002008102d21040c010b200228020020042008102f21040b2004450d0920022008360204200220043602000b2002200341046a360208200420036a200736000020012802082104200141106a28020022032002106f02402003450d002004200341286c6a21050340200420021046200441206a29030021060240024020022802042207200228020822036b4108490d00200228020021070c010b200341086a22082003490d14200741017422032008200320084b1b22034100480d140240024020070d002003102d21070c010b200228020020072003102f21070b2007450d0c2002200336020420022007360200200228020821030b2002200341086a360208200720036a20063700002005200441286a2204470d000b0b200141146a28020021070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d12200441017422032008200320084b1b22034100480d120240024020040d002003102d21040c010b200228020020042003102f21040b2004450d0b2002200336020420022004360200200228020821030b2002200341046a360208200420036a20073600000c030b4101102d2203450d0a200242818080801037020420022003360200200341033a0000200141086a29030021060240024020022802042207200228020822036b4108490d00200341086a2104200228020021070c010b200341086a22042003490d11200741017422082004200820044b1b22084100480d110240024020070d002008102d21070c010b200228020020072008102f21070b2007450d0c20022008360204200220073602000b20022004360208200720036a20063700000c020b4101102d2203450d0b200242818080801037020420022003360200200341043a0000200128020421070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d10200441017422012008200120084b1b22084100480d100240024020040d002008102d21040c010b200228020020042008102f21040b2004450d0d20022008360204200220043602000b2002200341046a360208200420036a20073600000c010b4101102d2203450d0c200242818080801037020420022003360200200341053a0000200128020421080240024020022802042207200228020822036b4104490d00200341046a2104200228020021070c010b200341046a22042003490d0f200741017422012004200120044b1b22014100480d0f0240024020070d002001102d21070c010b200228020020072001102f21070b2007450d0e20022001360204200220073602000b20022004360208200720036a20083600000b20002002290300370200200041086a200241086a280200360200200241106a24000f0b410141011033000b200341011033000b200341011033000b410141011033000b200841011033000b200341011033000b200341011033000b410141011033000b200841011033000b410141011033000b200841011033000b410141011033000b200141011033000b1034000bd60201037f0240024002400240024002400240024002400240024002400240024020012802000e0400010203000b410121024101102d2201450d05200141003a0000410121030c040b4101102d2202450d05200241013a000020012802042103200241014105102f2202450d062002200336000120012802082104410a210320024105410a102f2201450d07200120043600050c020b410121024101102d2201450d07200141023a0000410121030c020b4101102d2202450d07200241033a000020012802042103200241014105102f2202450d082002200336000120012802082104410a210320024105410a102f2201450d09200120043600050b410921020b2000200236020820002003360204200020013602000f0b410141011033000b410141011033000b410541011033000b410a41011033000b410141011033000b410141011033000b410541011033000b410a41011033000bfb0101077f230041106b220124002001410036020820014201370300200110a90220012802042102200128020021030240024002400240200041046a2802002204200041086a28020022056b20012802082206490d00200028020021040c010b200520066a22072005490d02200441017422052007200520074b1b22054100480d020240024020040d002005102d21040c010b200028020020042005102f21040b2004450d0120002004360200200041046a2005360200200041086a28020021050b200041086a200520066a360200200420056a2003200610ab051a02402002450d00200310310b200141106a24000f0b200541011033000b1034000b3400200041b884c40036020420004100360200200041146a4101360200200041106a4190a8c100360200200041086a42183702000beb05030b7f017e027f23004190026b2202240020002802002103410021000240024002400340200041086a22044128460d01200320006a2105200421002005290300500d000b41d0002106200241086a410041d00010aa051a200241d8006a41186a2207200341186a290300370300200241d8006a41106a2208200341106a290300370300200241d8006a41086a2209200341086a29030037030020022003290300370358200241f8006a41106a220a4200370300200241f8006a41086a220b420037030020024200370378200241f0016a41086a2103200241d0016a41086a210c024003402002290358210d200c2009290300370300200c41086a200941086a290300370300200c41106a200941106a2903003703002002200d3703d00120032002290378370300200341086a2200200b290300370300200341106a2204200a2903003703002002420a3703f00120024190016a200241d0016a200241f0016a10502006417f6a220e41cf004b0d01200241086a200e6a220f20022903b001a741306a3a0000200241d0016a41186a2007290300370300200241d0016a41106a2008290300370300200c2009290300370300200220022903583703d001200320022903783703002000200b2903003703002004200a2903003703002002420a3703f00120024190016a200241d0016a200241f0016a1050200920024190016a41086a290300370300200820024190016a41106a290300370300200720024190016a41186a29030037030020022002290390013703584100210002400340200041086a22044128460d01200241d8006a20006a2105200421002005290300500d000b200e21060c010b0b200e41d1004f0d032001280218200f41d10020066b2001411c6a28020028020c11030021000c020b4190e2c300200e41d000104b000b2001411c6a280200210020012802182104200242043703182002420137020c200241a8e3c30036020820042000200241086a10ac0221000b20024190026a240020000f0b200e41d000107b000bc50801087f230041c0006b22032400200341246a2001360200200341346a200241146a2802002204360200200341033a00382003412c6a2002280210220520044103746a36020020034280808080800437030820032000360220410021062003410036021820034100360210200320053602302003200536022802400240024002400240200228020822070d0020022802002108200228020422092004200420094b1b220a450d0141012104200020082802002008280204200128020c1103000d04200841086a210241012106034002402005280200200341086a200541046a280200110400450d00410121040c060b2006200a4f0d02200241046a210020022802002101200541086a2105200241086a210241012104200641016a2106200328022020012000280200200328022428020c110300450d000c050b0b20022802002108200228020422092002410c6a2802002205200520094b1b220a450d0041012104200020082802002008280204200128020c1103000d03200741106a2105200841086a21024101210603402003200541786a28020036020c2003200541106a2d00003a003820032005417c6a28020036020841002101410021000240024002400240200541086a2802000e0400010203000b2005410c6a2802002104410121000c020b02402005410c6a2802002207200328023422044f0d0041002100200328023020074103746a22072802044108470d0220072802002802002104410121000c020b41cca2c30020072004104b000b4100210020032802282207200328022c460d002003200741086a3602284100210020072802044108470d0020072802002802002104410121000b2003200436021420032000360210024002400240024002400240024020052802000e0404010006040b20032802282200200328022c470d010c050b200541046a2802002200200328023422044f0d01200328023020004103746a22002802044108470d04200028020028020021040c030b2003200041086a36022820002802044108470d03200028020028020021040c020b41cca2c30020002004104b000b200541046a28020021040b410121010b2003200436021c2003200136021802400240200541706a2802004101460d0020032802282204200328022c460d042003200441086a3602280c010b200541746a2802002204200328023422004f0d04200328023020044103746a21040b02402004280200200341086a200441046a280200110400450d00410121040c050b2006200a4f0d01200241046a210020022802002101200541246a2105200241086a210241012104200641016a2106200328022020012000280200200328022428020c110300450d000c040b0b0240200920064d0d00410121042003280220200820064103746a22052802002005280204200328022428020c1103000d030b410021040c020b41f099c400412b41a4a1c30010a401000b41dca2c30020042000104b000b200341c0006a240020040b130020004101360204200041f0aac1003602000bf90301027f20002d000021020240024002400240024002404101102d2203450d00200320023a000020002d00012102200341014102102f2203450d01200320023a000120002d00022102200341024104102f2203450d02200320023a0002200320002d00033a000320002d00042102200341044108102f2203450d03200320023a0004200320002d00053a0005200320002d00063a0006200320002d00073a000720002d00082102200341084110102f2203450d04200320023a0008200320002d00093a0009200320002d000a3a000a200320002d000b3a000b200320002d000c3a000c200320002d000d3a000d200320002d000e3a000e200320002d000f3a000f20002d00102102200341104120102f2203450d05200320023a0010200320002d00113a0011200320002d00123a0012200320002d00133a0013200320002d00143a0014200320002d00153a0015200320002d00163a0016200320002d00173a0017200320002d00183a0018200320002d00193a0019200320002d001a3a001a200320002d001b3a001b200320002d001c3a001c200320002d001d3a001d200320002d001e3a001e200320002d001f3a001f20012902002003ad42808080808004841003200310310f0b410141011033000b410241011033000b410441011033000b410841011033000b411041011033000b412041011033000bf90401057f230041206b2202240020012d000021030240024002400240024002404101102d2204450d00200420033a000020012d00012103200441014102102f2204450d01200420033a000120012d00022103200441024104102f2204450d02200420033a0002200420012d00033a000320012d00042103200441044108102f2204450d03200420033a0004200420012d00053a0005200420012d00063a0006200420012d00073a000720012d00082103200441084110102f2204450d04200420033a0008200420012d00093a0009200420012d000a3a000a200420012d000b3a000b200420012d000c3a000c200420012d000d3a000d200420012d000e3a000e200420012d000f3a000f20012d00102103200441104120102f2204450d05200420033a0010200420012d00113a0011200420012d00123a0012200420012d00133a0013200420012d00143a0014200420012d00153a0015200420012d00163a0016200420012d00173a0017200420012d00183a0018200420012d00193a0019200420012d001a3a001a200420012d001b3a001b200420012d001c3a001c200420012d001d3a001d200420012d001e3a001e200420012d001f3a001f200241186a22032004ad42808080808004841000220141186a290000370300200241106a2205200141106a290000370300200241086a2206200141086a2900003703002002200129000037030020011031200041186a2003290300370000200041106a2005290300370000200041086a20062903003700002000200229030037000020041031200241206a24000f0b410141011033000b410241011033000b410441011033000b410841011033000b411041011033000b412041011033000bf90301027f20002d000021020240024002400240024002404101102d2203450d00200320023a000020002d00012102200341014102102f2203450d01200320023a000120002d00022102200341024104102f2203450d02200320023a0002200320002d00033a000320002d00042102200341044108102f2203450d03200320023a0004200320002d00053a0005200320002d00063a0006200320002d00073a000720002d00082102200341084110102f2203450d04200320023a0008200320002d00093a0009200320002d000a3a000a200320002d000b3a000b200320002d000c3a000c200320002d000d3a000d200320002d000e3a000e200320002d000f3a000f20002d00102102200341104120102f2203450d05200320023a0010200320002d00113a0011200320002d00123a0012200320002d00133a0013200320002d00143a0014200320002d00153a0015200320002d00163a0016200320002d00173a0017200320002d00183a0018200320002d00193a0019200320002d001a3a001a200320002d001b3a001b200320002d001c3a001c200320002d001d3a001d200320002d001e3a001e200320002d001f3a001f20012902002003ad42808080808004841003200310310f0b410141011033000b410241011033000b410441011033000b410841011033000b411041011033000b412041011033000bcc1501047f20002d000021020240024002400240024002400240024002400240024002400240024002400240024002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0001210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0002210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0003210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0004210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0005210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0006210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0007210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0008210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0009210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000a210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000b210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000c210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000d210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000e210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000f210402400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d11200041017422022003200220034b1b22024100480d110240024020000d002002102d21030c010b200128020020002002102f21030b2003450d1020012003360200200141046a2002360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000f0b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200241011033000b1034000bcc1501047f20002d000021020240024002400240024002400240024002400240024002400240024002400240024002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0001210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0002210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0003210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0004210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0005210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0006210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0007210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0008210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0009210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000a210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000b210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000c210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000d210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000e210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000f210402400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d11200041017422022003200220034b1b22024100480d110240024020000d002002102d21030c010b200128020020002002102f21030b2003450d1020012003360200200141046a2002360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000f0b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200241011033000b1034000bb80201097f230041106b220224000240200028020041016a220341004c0d0020002003360200200041046a2104200041086a280200210502400240024003402004280200220641086a210720062f010622084105742104410021090240024003402004450d0120012007412010ad05220a450d02200441606a2104200941016a2109200741206a2107200a417f4a0d000b2009417f6a21080b2005450d022005417f6a2105200620084102746a41880b6a21040c010b0b2006200941e0006c6a220441a4036a2d000022074101410220074101461b200441c5036a2d00001b22044102470d010b20002802102001200041146a2802002802181104002104200028020021030c010b200441014621040b20002003417f6a360200200241106a240020040f0b41aeddc4004118200241086a41d8ddc4001038000bba0d020b7f067e230041c0056b22082400024002400240024002400240200728021841016a220941004c0d00200741186a210a20072009360218200741206a280200210b2007411c6a220c210d024002400340200d280200220e41086a210f200e2f01062210410574210d41002111024002400340200d450d012004200f412010ad052212450d02200d41606a210d201141016a2111200f41206a210f2012417f4a0d000b2011417f6a21100b200b450d02200b417f6a210b200e20104102746a41880b6a210d0c010b0b200e201141e0006c6a220d41c5036a310000200d41e8026a2903002213201350220f1ba7450d004200200d41f8026a290300200f1b21144200200d41f0026a290300200f1b21150c010b200841286a200741286a28020020042007412c6a28020028021c110500200841306a290300211420072802182109200829032821150b20072009417f6a360218200141186a29030021132007280240210d20012903102116024002400240024041004101410220152014842217501b20021b0e03010200010b200d41a8016a210d0c020b200d4188016a210d0c010b200d4198016a210d0b20162013844200510d01200841186a200d290300200d41086a2903002016201310b10520014200200129030822132008290318427f200841186a41086a290300501b7d22162016201356220d1b3703080240200d450d0041c8adc100210d4122210f0c060b200a28020041016a220141004c0d02200720013602182007280220210b024002400340200c280200220e41086a210f200e2f01062210410574210d41002111024002400340200d450d012003200f412010ad052212450d02200d41606a210d201141016a2111200f41206a210f2012417f4a0d000b2011417f6a21100b200b450d02200b417f6a210b200e20104102746a41880b6a210c0c010b0b200e201141e0006c6a220d41c5036a310000200d41e8026a2903002213201350220f1ba7450d004200200d41f8026a290300200f1b21134200200d41f0026a290300200f1b21160c010b200841086a200741286a28020020032007412c6a28020028021c110500200841106a290300211320072802182101200829030821160b200a2001417f6a3602000240201620057d2218201656201320067d2016200554ad7d221620135620162013511b4101470d0041ce98c300210d411d210f0c060b024020174200520d002007280240220d290378200556200d4180016a290300221320065620132006511b450d0041eaadc100210d411f210f0c060b20082003410220182016105d02402008280200220d450d002008280204210f0c060b0240201520057c2217201554220d201420067c200dad7c221320145420132014511b450d0041eb98c300210d412d210f0c060b4100210d024020032004470d000c060b024020032004412010ad050d000c060b200a20032018201610b702200a20042017201310b70220084198056a41086a2211200341086a29000037030020084198056a41106a2212200341106a29000037030020084198056a41186a220e200341186a290000370300200841f8046a41086a220b200441086a290000370300200841f8046a41106a2210200441106a290000370300200841f8046a41186a2201200441186a2900003703002008200329000037039805200820042900003703f80402402007413c6a280200220f200741386a280200470d00200f41016a220d200f490d05200f4101742204200d2004200d4b1b2204ad42a0057e2213422088a70d052013a722034100480d0502400240200f0d002003102d210d0c010b2007280234200f41a0056c2003102f210d0b200d450d042007200d360234200741386a2004360200200728023c210f0b4100210d2007280234200f41a0056c6a220f41003a0000200f20082f00bd053b0001200f4200370008200f4101360004200f200829039805370011200f20082903f804370031200f41036a200841bf056a2d00003a0000200f41106a41003a0000200f41196a2011290300370000200f41216a2012290300370000200f41296a200e290300370000200f41396a200b290300370000200f41c1006a2010290300370000200f41c9006a2001290300370000200f2005370358200f41e0006a2006370300200f41d4006a200841f1046a41036a280000360000200f20082800f104360051200f41e8006a200841386a41b80410ab051a2007200728023c41016a36023c0c050b41aeddc4004118200841386a41d8ddc4001038000b41c098c100411941e097c10010a401000b41aeddc4004118200841386a41d8ddc4001038000b200341081033000b1034000b2000200f3602042000200d360200200841c0056a24000baa3202077f037e230041c0006b22062400024002402002410c6a280200200241106a280200100d2207417f460d00410c102d22080d01410c41041033000b108a03000b20082007360208200842818080801037020002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002404101450d002008410141016a3602004101417e460d00200841014102723602004104102d2209450d01200920083602002008280208210a4103102d220b450d02200b41026a41002d00acef433a0000200b41002f00aaef433b00004106102d220c450d03200c41046a41002f00b09f423b0000200c41002800ac9f423600004120102d2207450d042007200a36021c2007410136021820074286808080e0003702102007200c36020c20074283808080303702042007200b36020020082008280200417f6a220b3602000240200b0d002008280208100e20082008280204417f6a220b360204200b0d00200810310b4103102d220b450d05200b41026a41002d00acef433a0000200b41002f00aaef433b00004103102d220c450d06200c41026a41002d00d2b7443a0000200c41002f00d0b7443b00002007412041c000102f2207450d072007410936023c2007410036023820074283808080303702302007200c36022c20074283808080303702242007200b3602204103102d220b450d08200b41026a41002d00acef433a0000200b41002f00aaef433b0000410f102d220c450d09200c41076a41002900dab744370000200c41002900d3b744370000200741c000418001102f2207450d0a2007410a36025c200741003602582007428f808080f0013702502007200c36024c20074283808080303702442007200b3602404103102d220b450d0b200b41026a41002d00acef433a0000200b41002f00aaef433b0000410f102d220c450d0c200c41076a41002900e9b744370000200c41002900e2b7443700002007410b36027c200741003602782007428f808080f0013702702007200c36026c20074283808080303702642007200b3602604103102d220b450d0d200b41026a41002d00acef433a0000200b41002f00aaef433b00004108102d220c450d0e200c42e5f0d1fbb5ac98b6ec003700002007418001418002102f2207450d0f2007410c36029c012007410036029801200742888080808001370290012007200c36028c012007428380808030370284012007200b360280014103102d220b450d10200b41026a41002d00acef433a0000200b41002f00aaef433b0000410f102d220c450d11200c41076a4100290080b844370000200c41002900f9b7443700002007410d3602bc01200741003602b8012007428f808080f0013702b0012007200c3602ac0120074283808080303702a4012007200b3602a0014103102d220b450d12200b41026a41002d00acef433a0000200b41002f00aaef433b0000410a102d220c450d13200c41086a41002f0090b8443b0000200c4100290088b8443700002007410e3602dc01200741003602d8012007428a808080a0013702d0012007200c3602cc0120074283808080303702c4012007200b3602c0014103102d220b450d14200b41026a41002d00acef433a0000200b41002f00aaef433b0000410a102d220c450d15200c41086a41002f009ab8443b0000200c4100290092b8443700002007410f3602fc01200741003602f8012007428a808080a0013702f0012007200c3602ec0120074283808080303702e4012007200b3602e0014103102d220b450d16200b41026a41002d00acef433a0000200b41002f00aaef433b0000410b102d220c450d17200c41076a41002800a3b844360000200c410029009cb8443700002007418002418004102f2207450d182007411036029c0220074100360298022007428b808080b001370290022007200c36028c022007428380808030370284022007200b360280024103102d220b450d19200b41026a41002d00acef433a0000200b41002f00aaef433b0000410d102d220c450d1a200c41056a41002900acb844370000200c41002900a7b844370000200741113602bc02200741003602b8022007428d808080d0013702b0022007200c3602ac0220074283808080303702a4022007200b3602a0024103102d220b450d1b200b41026a41002d00acef433a0000200b41002f00aaef433b0000410c102d220c450d1c200c41086a41002800bcb844360000200c41002900b4b844370000200741123602dc02200741003602d8022007428c808080c0013702d0022007200c3602cc0220074283808080303702c4022007200b3602c0024103102d220b450d1d200b41026a41002d00acef433a0000200b41002f00aaef433b0000410b102d220c450d1e200c41076a41002800c7b844360000200c41002900c0b844370000200741133602fc02200741003602f8022007428b808080b0013702f0022007200c3602ec0220074283808080303702e4022007200b3602e0024103102d220c450d1f200c41026a41002d00acef433a0000200c41002f00aaef433b00004115102d220b450d20200b410d6a41002900d8b844370000200b41086a41002900d3b844370000200b41002900cbb8443700002007411436029c03200741003602980320074295808080d002370290032007200b36028c032007428380808030370284032007200c360280034103102d220b450d21200b41026a41002d00acef433a0000200b41002f00aaef433b0000410a102d220c450d22200c41086a41002f00e8b8443b0000200c41002900e0b844370000200741153602bc03200741003602b8032007428a808080a0013702b0032007200c3602ac0320074283808080303702a4032007200b3602a0034103102d220b450d23200b41026a41002d00acef433a0000200b41002f00aaef433b00004107102d220c450d24200c41036a41002800edb844360000200c41002800eab844360000200741163602dc03200741003602d80320074287808080f0003702d0032007200c3602cc0320074283808080303702c4032007200b3602c0034103102d220c450d25200c41026a41002d00acef433a0000200c41002f00aaef433b00004113102d220b450d26200b410f6a4100280080b944360000200b41086a41002900f9b844370000200b41002900f1b844370000200741173602fc03200741003602f80320074293808080b0023702f0032007200b3602ec0320074283808080303702e4032007200c3602e0034103102d220c450d27200c41026a41002d00acef433a0000200c41002f00aaef433b00004111102d220b450d28200b41106a41002d0094b9443a0000200b41086a410029008cb944370000200b4100290084b9443700002007418004418008102f220a450d29200a411836029c04200a410036029804200a4291808080900237029004200a200b36028c04200a42838080803037028404200a200c360280044103102d2207450d2a200741026a41002d00acef433a0000200741002f00aaef433b0000410e102d220b450d2b200b41066a410029009bb944370000200b4100290095b944370000200a41193602bc04200a41003602b804200a428e808080e0013702b004200a200b3602ac04200a4283808080303702a404200a20073602a0044103102d2207450d2c200741026a41002d00acef433a0000200741002f00aaef433b00004110102d220b450d2d200b41086a41002900abb944370000200b41002900a3b944370000200a411a3602dc04200a41003602d804200a429080808080023702d004200a200b3602cc04200a4283808080303702c404200a20073602c0044103102d2207450d2e200741026a41002d00acef433a0000200741002f00aaef433b00004110102d220b450d2f200b41086a41002900bbb944370000200b41002900b3b944370000200a411b3602fc04200a41003602f804200a429080808080023702f004200a200b3602ec04200a4283808080303702e404200a20073602e0044103102d220b450d30200b41026a41002d00acef433a0000200b41002f00aaef433b00004111102d2207450d31200741106a41002d00d3b9443a0000200741086a41002900cbb944370000200741002900c3b944370000200a411c36029c05200a410036029805200a4291808080900237029005200a200736028c05200a42838080803037028405200a200b360280054103102d220b450d32200b41026a41002d00acef433a0000200b41002f00aaef433b00004111102d2207450d33200741106a41002d00e4b9443a0000200741086a41002900dcb944370000200741002900d4b944370000200a411d3602bc05200a41003602b805200a429180808090023702b005200a20073602ac05200a4283808080303702a405200a200b3602a0054103102d220b450d34200b41026a41002d00acef433a0000200b41002f00aaef433b00004116102d2207450d352007410e6a41002900f3b944370000200741086a41002900edb944370000200741002900e5b944370000200a411e3602dc05200a41003602d805200a4296808080e0023702d005200a20073602cc05200a4283808080303702c405200a200b3602c0054103102d220b450d36200b41026a41002d00acef433a0000200b41002f00aaef433b00004112102d2207450d37200741106a41002f008bba443b0000200741086a4100290083ba44370000200741002900fbb944370000200a411f3602fc05200a41003602f805200a4292808080a0023702f005200a20073602ec05200a4283808080303702e405200a200b3602e0054103102d2207450d38200741026a41002d00acef433a0000200741002f00aaef433b0000410b102d220b450d39200b41076a4100280094ba44360000200b410029008dba44370000200a412036029c06200a410036029806200a428b808080b00137029006200a200b36028c06200a42838080803037028406200a2007360280064103102d2207450d3a200741026a41002d00acef433a0000200741002f00aaef433b00004110102d220b450d3b200b41086a41002900a0ba44370000200b4100290098ba44370000200a41213602bc06200a41003602b806200a429080808080023702b006200a200b3602ac06200a4283808080303702a406200a20073602a0062006410c6a200441086a280200360200200620033602002006410036021c20062005360218200620083602142006200429020037020420062001280200360210200241146a350200210d2002411c6a350200210e2006410036023820064201370330411a200641306a106f200a41c0066a2105200a2108034020082802002104200841086a2802002207200641306a106f024002402006280234220c2006280238220b6b2007490d002006280230210c0c010b200b20076a2201200b490d43200c41017422032001200320014b1b22014100480d4302400240200c0d002001102d210c0c010b2006280230200c2001102f210c0b200c450d3e200620013602342006200c3602300b2006200b20076a360238200c200b6a2004200710ab051a2008410c6a2802002103200841146a280200220c200641306a106f024002402006280234220b200628023822016b200c490d00200628023021070c010b2001200c6a22072001490d43200b41017422042007200420074b1b22044100480d4302400240200b0d002004102d21070c010b2006280230200b2004102f21070b2007450d3f20062004360234200620073602302004210b0b20062001200c6a2204360238200720016a2003200c10ab051a02400240200841186a2802004101460d0002400240200b2004460d00200b210c0c010b200b41016a220c200b490d45200b4101742201200c2001200c4b1b220c4100480d4502400240200b0d00200c102d21070c010b2007200b200c102f21070b2007450d422006200c360234200620073602300b2006200441016a220b360238200720046a41013a000020062008411c6a2802002204360228200641286a21010c010b02400240200b2004460d00200b210c0c010b200b41016a220c200b490d44200b4101742201200c2001200c4b1b220c4100480d4402400240200b0d00200c102d21070c010b2007200b200c102f21070b2007450d422006200c360234200620073602300b2006200441016a220b360238200720046a41023a000020062008411c6a2802002204360228200641286a21010b0240200c200b6b41034b0d00200b41046a2204200b490d43200c41017422032004200320044b1b22044100480d4302400240200c0d002004102d21070c010b2007200c2004102f21070b2007450d422006200436023420062007360230200128020021040b2006200b41046a3602382007200b6a2004360000200841206a22082005470d000b2006280234210702404122200e422086200d84200635023842208620062802302204ad842006100f220b41036a220841024b0d004100210c0240024020080e03000201000b4102210c0b41012101024020070d000c470b200410310c460b4104102d2208450d422009280200220c28020041016a220141014d0d00200c20013602002008200c36020002402007450d00200410310b2002350204210d2002350200210e20064100360238200642013703304100200641306a106f2006350238210f200628023421042006280230210c410a107a2207450d430240024002400240200b200d422086200e84200f422086200cad842007410a2006101041036a220241034b0d004101210120020e0402000001020b41b7a6c4004128419cdec40010a401000b2006410936022c410121012006200741016a36022820072d0000220241014b0d01410421030240024020020e020100010b200641306a200641286a1036200628023022034104460d02200628023421050b410021010b200710312004450d45200c10310c450b20071031024020040d000c450b200c10310c440b00000b410441041033000b410341011033000b410641011033000b412041041033000b410341011033000b410341011033000b41c00041041033000b410341011033000b410f41011033000b41800141041033000b410341011033000b410f41011033000b410341011033000b410841011033000b41800241041033000b410341011033000b410f41011033000b410341011033000b410a41011033000b410341011033000b410a41011033000b410341011033000b410b41011033000b41800441041033000b410341011033000b410d41011033000b410341011033000b410c41011033000b410341011033000b410b41011033000b410341011033000b411541011033000b410341011033000b410a41011033000b410341011033000b410741011033000b410341011033000b411341011033000b410341011033000b411141011033000b41800841041033000b410341011033000b410e41011033000b410341011033000b411041011033000b410341011033000b411041011033000b410341011033000b411141011033000b410341011033000b411141011033000b410341011033000b411641011033000b410341011033000b411241011033000b410341011033000b410b41011033000b410341011033000b411041011033000b200141011033000b200441011033000b200c41011033000b200c41011033000b200441011033000b1034000b410441041033000b410a41011033000b200b1011200828020022072007280200417f6a3602000240200828020022072802000d002007280208100e200828020022072007280204417f6a360204200828020022072802040d00200710310b200810314102210c0b200641086a2802002108200628021421072006280204210b024002400240024002400240024002400240200628021c22040d002006410c6a290200210d20010d04200341044b0d0320030e050203030301020b2000200436020420004100360200200041106a41003a0000200041086a200641206a29030037020002402008450d00200b10310b20072007280200417f6a220836020020080d072007280208100e20072007280204417f6a22083602042008450d060c070b2000200b3602044100210b200041106a41003a00002000410c6a4100360200200041086a20083602000c040b2000200b360204200041106a20053a00002000410c6a200d3e0200200041086a20083602004100210b0c030b200041a5cfc000360204200041146a200d3e0200200041106a20083602002000410c6a200b360200200041086a41113602000c010b0240200c450d00200041c6cfc000360204200041146a200d3e0200200041106a20083602002000410c6a200b360200200041086a41103602000c010b200041b6cfc000360204200041146a200d3e0200200041106a20083602002000410c6a200b360200200041086a41103602000b4101210b0b2000200b36020020072007280200417f6a220836020020080d012007280208100e20072007280204417f6a220836020420080d010b200710310b4100210803400240200a20086a220741046a280200450d00200728020010310b0240200741106a280200450d002007410c6a28020010310b200841206a220841c006470d000b200a1031200928020022072007280200417f6a3602000240200928020022072802000d002007280208100e200928020022072007280204417f6a360204200928020022072802040d00200710310b20091031200641c0006a24000b8a1409057f017e0c7f047e037f017e037f047e097f230041f00c6b22022400024020002802000d002000417f360200200128020821032001280200210402400240200128020422050d00200421010c010b2005210620042101034020012802880b21012006417f6a22060d000b0340200420042f01064102746a41880b6a28020021042005417f6a22050d000b0b2002411c6a20042f0106360200200241186a4100360200200241146a20043602002002200336022020024100360210200242003703082002200136020420024100360200200241f0016a2002109605024020022903900222074202510d002000410c6a2108200041046a2109200241900a6a41146a210a200241900a6a41206a210b200241f0016a4104722103200241f0016a413d6a210c200241cd026a210d200241b8026a210e200241f0016a41306a210f200241f0016a41286a21100340200241c8006a41086a2204200241f0016a41086a2211290300370300200241c8006a41106a2201200241f0016a41106a2212290300370300200241c8006a41186a2205200241f0016a41186a2213290300370300200220022903f001370348200e2903002114200f290300211520022903b0022116200229039802211720022f01ee02211820022d00ed02211920022d00cc02211a20022903a802211b20022802c002211c20022802c402211d20022802c802211e200241286a41186a200d41186a290000221f370300200241286a41106a200d41106a2900002220370300200241286a41086a200d41086a29000022213703002002200d2900002222370328200241e8006a41186a2223201f370300200241e8006a41106a22242020370300200241e8006a41086a222520213703002002202237036820024188016a41186a2226200529030037030020024188016a41106a2227200129030037030020024188016a41086a22282004290300370300200220022903483703880102400240024002400240200928020022294198bfc000460d002000280208212a0c010b200241900a6a410041e00210aa051a200241f0016a410041a00810aa051a41880b102d2229450d014100212a202941003b010620294100360200202941086a200241900a6a41e00210ab051a202941e8026a200241f0016a41a00810ab051a20004100360208200020293602040b0340202941086a210120292f0106222b410574210441002105024003402004450d0120024188016a2001412010ad052206450d04200441606a2104200541016a2105200141206a21012006417f4a0d000b2005417f6a212b0b0240202a450d00202a417f6a212a2029202b4102746a41880b6a28020021290c010b0b200241c0016a41186a2026290300221f370300200241c0016a41106a20272903002220370300200241c0016a41086a20282903002221370300200220022903880122223703c001200a2022370200200a41086a2021370200200a41106a2020370200200a41186a201f370200200220083602a00a2002202b36029c0a200220093602980a200220293602940a200241003602900a20102014370300201220153703002002201637039002200220173703f8012002201a3a00ac022002201e3602a8022002201d3602a4022002201c3602a0022002201b37038802200220073703f001200c2002290368370000200c41086a2025290300370000200c41106a2024290300370000200c41186a2023290300370000200220183b01ce02200220193a00cd02200241900a6a200241f0016a10cd011a0c020b41880b41081033000b202941e8026a200541e0006c6a2129024020194101710d0020292029290300200720075022041b37030020292029290308201720041b370308202941106a22012001290300201520041b370300200241900a6a41186a22062023290300370300200241900a6a41106a222a2024290300370300200241900a6a41086a222b2025290300370300200220022903683703900a20292d003c21012013202941d5006a22052900003703002012202941cd006a22192900003703002011202941c5006a222329000037030020022029413d6a22242900003703f0012028200241900a6a200241f0016a201a41ff0171410146221a1b220441086a2900003703002027200441106a2900003703002026200441186a2900003703002002200429000037038801202941012001201a1b3a003c2024200229038801370000202320282903003700002019202729030037000020052026290300370000202920162029290320201ba722041b370320202941286a22012014200129030020041b3703002029201b202929031820041b37031802400240201d0d00201c21040c010b201d2101201c2104034020042802ec0321042001417f6a22010d000b0340201c201c2f01064102746a41ec036a280200211c201d417f6a221d0d000b0b201c2f010621012002201e3602a801200220013602a401200241003602a0012002201c36029c01200241003602980120024200370390012002200436028c012002410036028801200241f0016a20024188016a109705024020022802f0014101470d00202941306a211c0340200241900a6a41286a200341286a280200360200200b200341206a2902003703002006200341186a2204290200370300202a200341106a2201290200370300202b200341086a2205290200370300200220032902003703900a200241c0016a41186a2004290000370300200241c0016a41106a2001290000370300200241c0016a41086a2005290000370300200220032900003703c001200241e0016a41086a200b41086a2802003602002002200b2902003703e001200241b0016a201c200241c0016a200241e0016a10cf01024020022802b001450d0020022802b4012204450d0020022802b801450d00200410310b200241f0016a20024188016a10970520022802f0014101460d000b0b20024188016a10ce010c010b202941386a212b202941306a212a202928023821262029280230210402400240202941346a28020022050d00200421010c010b2005210620042101034020012802ec0321012006417f6a22060d000b0340200420042f01064102746a41ec036a28020021042005417f6a22050d000b0b200220263602900220024100360288022002410036028002200242003703f801200220013602f401200241003602f0012002200436028402200220042f010636028c02200241f0016a10ce01202941286a201437030020292016370320202941106a2015370300202920173703082029201b37031820292007370300202a201d360204202a201c360200202b201e3602002029201a3a003c2029413d6a2002290368370000202941c5006a2025290300370000202941cd006a2024290300370000202941d5006a2023290300370000202920183b015e202920193a005d0b200241f0016a200210960520022903900222074202520d000b0b20021090022000200028020041016a360200200241f00c6a24000f0b419eddc4004110200241f0016a41c8ddc4001038000ba50701087f230041d00b6b220424000240024020002802000d002000417f360200200441206a41186a200141186a290000370300200441206a41106a200141106a290000370300200441206a41086a200141086a2900003703002004200129000037032002400240200028020422054198bfc000460d00200041086a28020021060c010b41002106200441f0086a410041e00210aa051a200441d0006a410041a00810aa051a41880b102d2205450d02200541003b010620054100360200200541086a200441f0086a41e00210ab051a200541e8026a200441d0006a41a00810ab051a200041086a4100360200200020053602040b200041046a210702400240034020052f010622084105742109410021014100210a02400240034020092001460d01200441206a200520016a41086a412010ad05220b450d02200141206a2101200a41016a210a200b417f4a0d000b200a417f6a21080b2006450d022006417f6a2106200520084102746a41880b6a28020021050c010b0b2000410c6a210b410121010c010b200441186a200441206a41186a290300370300200441106a200441206a41106a290300370300200441086a200441206a41086a290300370300200420042903203703002000410c6a210b410021062008210a410021010b0240024020010d002004418c096a200441086a29030037020020044194096a200441106a2903003702002004419c096a200441186a2903003702002004200b360280092004200a3602fc08200420073602f808200420053602f408200420063602f0082004200429030037028409200441f0006a2004290340370300200441f8006a200441c0006a41086a29030037030020044184016a4200370200200442003703682004420037035020044198bfc00036028001200441003a008c012004418d016a200429002037000020044195016a200441206a41086a2900003700002004419d016a200441206a41106a290000370000200441a5016a200441206a41186a290000370000200441003a00ad01200441f0086a200441d0006a10cd0121010c010b200441e8006a4200370300200441e4006a4198bfc00036020020044100360270200441003602602004420037035820044198bfc000360254200441003602502005200a41e0006c6a41e8026a2101200441d0006a10ce010b200141106a200337030020012002370308200142013703002000200028020041016a360200200441d00b6a24000f0b419eddc4004110200441d0006a41c8ddc4001038000b41880b41081033000bc50101057f230041306b220124002000410c6a28020021022000280204210302400240200041086a28020022040d00200321000c010b2004210520032100034020002802880b21002005417f6a22050d000b0340200320032f01064102746a41880b6a28020021032004417f6a22040d000b0b200141246a20032f0106360200200141206a41003602002001411c6a20033602002001200236022820014100360218200142003703102001200036020c20014100360208200141086a109002200141306a24000b890401077f230041306b22022400200241003602082002420137030020022002360210200141106a200241106a103e2001200210910120022002360210200141306a200241106a103e20022002360210200141d0006a200241106a103e200128020421032001410c6a28020022012002106f0240024002402001450d00200141246c21040340200241106a200310ba02200228021021050240024020022802042206200228020822016b20022802182207490d00200228020021060c010b200120076a22082001490d04200641017422012008200120084b1b22014100480d040240024020060d002001102d21060c010b200228020020062001102f21060b2006450d032002200136020420022006360200200228020821010b2002200120076a360208200620016a2005200710ab051a02402002280214450d00200510310b200341246a21032004415c6a22040d000b0b20022802042107200241106a41186a2203200235020842208620022802002204ad841000220141186a290000370300200241106a41106a2206200141106a290000370300200241106a41086a2205200141086a2900003703002002200129000037031020011031200041186a2003290300370000200041106a2006290300370000200041086a20052903003700002000200229031037000002402007450d00200410310b200241306a24000f0b200141011033000b1034000bde1601067f230041106b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e050003010204000b20024100360208200242013703004101102d2203450d05200242818080801037020420022003360200200341023a00002002200236020c200141016a2002410c6a103e0c040b20024100360208200242013703004101102d2203450d05200242818080801037020420022003360200200341043a000020012d0001210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d1a200341017422062005200620054b1b22064100480d1a0240024020030d002006102d21050c010b200228020020032006102f21050b2005450d0720022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0002210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d1a200341017422062005200620054b1b22064100480d1a0240024020030d002006102d21050c010b200228020020032006102f21050b2005450d0820022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0003210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d1a200341017422062005200620054b1b22064100480d1a0240024020030d002006102d21050c010b200228020020032006102f21050b2005450d0920022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0004210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d1a200341017422062005200620054b1b22064100480d1a0240024020030d002006102d21050c010b200228020020032006102f21050b2005450d0a20022006360204200220053602000b2002200341016a360208200520036a20043a000020012802082104200141106a28020022012002106f0240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d1a200541017422072006200720064b1b22064100480d1a0240024020050d002006102d21050c010b200228020020052006102f21050b2005450d0b20022006360204200220053602000b2002200320016a360208200520036a2004200110ab051a0c030b20024100360208200242013703004101102d2203450d0a200242818080801037020420022003360200200341053a000020012d0001210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d19200341017422062005200620054b1b22064100480d190240024020030d002006102d21050c010b200228020020032006102f21050b2005450d0c20022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0002210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d19200341017422062005200620054b1b22064100480d190240024020030d002006102d21050c010b200228020020032006102f21050b2005450d0d20022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0003210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d19200341017422062005200620054b1b22064100480d190240024020030d002006102d21050c010b200228020020032006102f21050b2005450d0e20022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0004210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d19200341017422062005200620054b1b22064100480d190240024020030d002006102d21050c010b200228020020032006102f21050b2005450d0f20022006360204200220053602000b2002200341016a360208200520036a20043a000020012802082104200141106a28020022012002106f0240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d19200541017422072006200720064b1b22064100480d190240024020050d002006102d21050c010b200228020020052006102f21050b2005450d1020022006360204200220053602000b2002200320016a360208200520036a2004200110ab051a0c020b20024100360208200242013703004101102d2203450d0f200242818080801037020420022003360200200341063a000020012d0001210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d18200341017422062005200620054b1b22064100480d180240024020030d002006102d21050c010b200228020020032006102f21050b2005450d1120022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0002210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d18200341017422062005200620054b1b22064100480d180240024020030d002006102d21050c010b200228020020032006102f21050b2005450d1220022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0003210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d18200341017422062005200620054b1b22064100480d180240024020030d002006102d21050c010b200228020020032006102f21050b2005450d1320022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0004210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d18200341017422062005200620054b1b22064100480d180240024020030d002006102d21050c010b200228020020032006102f21050b2005450d1420022006360204200220053602000b2002200341016a360208200520036a20043a000020012802082104200141106a28020022012002106f0240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d18200541017422072006200720064b1b22064100480d180240024020050d002006102d21050c010b200228020020052006102f21050b2005450d1520022006360204200220053602000b2002200320016a360208200520036a2004200110ab051a0c010b20024100360208200242013703004101102d2203450d14200242818080801037020420022003360200200341003a0000200141046a28020021042001410c6a28020022012002106f0240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d17200541017422072006200720064b1b22064100480d170240024020050d002006102d21050c010b200228020020052006102f21050b2005450d1620022006360204200220053602000b2002200320016a360208200520036a2004200110ab051a0b200020022201290200370200200041086a200141086a280200360200200241106a24000f0b410141011033000b410141011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b410141011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b410141011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b410141011033000b200641011033000b1034000b9b1705027f017e077f017e147f230041e0016b22022400200241b0016a2001410010a301200241f8006a41086a2203200241c8016a2903003703002002200241c0016a29030037037820022902b401210441022105024020022802b0014101460d00200241bc016a2802002105200241d0006a41086a2003290300370300200220022903783703500b200241a0016a41086a200241d0006a41086a290300370300200220022903503703a00102400240024002400240024020054102460d00200241b0016a41106a210620024184016a2107200241b0016a41086a2103410221080340200720022903a001370200200741086a200241a0016a41086a2209290300370200200220053602800120022004370378200241b0016a200241f8006a10bc0220022802b0014101460d0220022802b4012105200241f8006a41206a200341206a290200370300200241f8006a41186a200341186a290200370300200241f8006a41106a200341106a290200370300200241f8006a41086a220a200341086a2902003703002002200329020037037802402005450d00200241d0006a41206a200241f8006a41206a290300370300200241d0006a41186a200241f8006a41186a290300370300200241d0006a41106a200241f8006a41106a290300370300200241d0006a41086a200241f8006a41086a29030037030020022002290378370350410b210b0c040b200241b0016a20012008417f6a10a301200a200641086a2902003703002002200629020037037820022902b401210441022105024020022802b0014101460d0020022802bc012105200241d0006a41086a200a290300370300200220022903783703500b2009200241d0006a41086a290300370300200220022903503703a001200841016a210820054102470d000b0b410b210b0c020b4100210520022903b801210c20022802b401210b0b200241286a41086a2203200241d0006a41086a290300370300200241286a41106a220a200241d0006a41106a290300370300200241286a41186a2207200241d0006a41186a290300370300200241286a41206a2206200241d0006a41206a2903003703002002200229035037032820050d010b41042107410021094100210d410421030c010b200241206a2006290300370300200241186a2007290300370300200241106a200a290300370300200241086a2003290300370300200220022903283703000240024002400240412c102d2207450d0020072005360200200720022903003702042007410c6a200241086a290300370200200741146a200241106a2903003702002007411c6a200241186a290300370200200741246a200241206a290300370200200241b0016a20012008417f6a10a301200241f8006a41086a2203200241b0016a41186a2903003703002002200241b0016a41106a29030037037820022902b401210441022105024020022802b0014101460d00200241b0016a410c6a2802002105200241d0006a41086a2003290300370300200220022903783703500b200241a0016a41086a200241d0006a41086a290300370300200220022903503703a00120054102460d03200241b0016a41106a210e20024184016a2109200241b0016a41086a2103024002400340200920022903a001370200200941086a200241a0016a41086a220f290300370200200220053602800120022004370378200241b0016a200241f8006a10bc0220022802b0014101460d0120022802b401210a200241f8006a41206a200341206a290200370300200241f8006a41186a200341186a290200370300200241f8006a41106a200341106a290200370300200241f8006a41086a2206200341086a290200370300200220032902003703780240200a450d00200241d0006a41206a200241f8006a41206a290300370300200241d0006a41186a200241f8006a41186a290300370300200241d0006a41106a200241f8006a41106a290300370300200241d0006a41086a200241f8006a41086a290300370300200220022903783703500c030b200241b0016a2001200810a3012006200e41086a2902003703002002200e29020037037820022902b401210441022105024020022802b0014101460d0020022802bc012105200241d0006a41086a2006290300370300200220022903783703500b200f200241d0006a41086a290300370300200220022903503703a001200841016a210820054102470d000c060b0b4100210a20022903b801210c20022802b401210b0b200241286a41086a2210200241d0006a41086a2211290300370300200241286a41106a2212200241d0006a41106a2213290300370300200241286a41186a2214200241d0006a41186a2215290300370300200241286a41206a2216200241d0006a41206a221729030037030020022002290350370328200a450d03200241206a22182016290300370300200241186a22192014290300370300200241106a221a2012290300370300200241086a221b201029030037030020022002290328370300200241b0016a41106a211c200241f8006a410c6a210e200241b0016a41086a2105410121094101210d200721030340200241b0016a41206a220f2018290300370300200241b0016a41186a221d2019290300370300201c201a2903003703002005201b290300370300200220022903003703b0010240200d2009470d00200941016a22032009490d04200941017422062003200620034b1b220dad422c7e2204422088a70d042004a722034100480d040240024020090d002003102d21070c010b20072009412c6c2003102f21070b2007450d03200721030b20032009412c6c6a2206200a360200200620022903b0013702042006410c6a2005290300370200200641146a201c2903003702002006411c6a201d290300370200200641246a200f290300370200200241b0016a2001200810a301200241f8006a41086a2206201c41086a221d2902003703002002201c29020037037820022902b40121044102210a024020022802b0014101460d0020022802bc01210a20112006290300370300200220022903783703500b200941016a2109200241a0016a41086a220f2011290300370300200220022903503703a001200a4102460d05200841016a2108024002400340200e20022903a001370200200e41086a200f2903003702002002200a3602800120022004370378200241b0016a200241f8006a10bc0220022802b0014101460d0120022802b401210a200241f8006a41206a221e200541206a290200370300200241f8006a41186a221f200541186a290200370300200241f8006a41106a2220200541106a2902003703002006200541086a290200370300200220052902003703780240200a450d002017201e2903003703002015201f2903003703002013202029030037030020112006290300370300200220022903783703500c030b200241b0016a2001200810a3012006201d2902003703002002201c29020037037820022902b40121044102210a024020022802b0014101460d0020022802bc01210a20112006290300370300200220022903783703500b200f2011290300370300200220022903503703a001200841016a2108200a4102460d080c000b0b4100210a20022903b801210c20022802b401210b0b2010201129030037030020122013290300370300201420152903003703002016201729030037030020022002290350370328200a450d052018201629030037030020192014290300370300201a2012290300370300201b2010290300370300200220022903283703000c000b0b412c41041033000b200341041033000b1034000b410121094101210d200721030b02400240200b410b470d00200020073602042000410c6a2009360200200041086a200d360200410021030c010b2000200b360204200041086a200c37020002402009450d002009412c6c210803400240200341046a280200450d00200328020010310b0240200341106a280200450d002003410c6a28020010310b2003412c6a2103200841546a22080d000b0b41012103200d450d00200710310b20002003360200200241e0016a24000b9c2605077f017e027f027e0f7f230041d0026b22022400200241a8026a2001410010a301200241c8016a41086a2203200241b4026a2204290200370300200241c8016a41106a2205200241bc026a2206290200370300200241c8016a41186a2207200241c4026a280200360200200220022902ac023703c801410121080240024002400240024002400240024020022802a8024101470d00200241206a41026a200241246a41026a2d00003a0000200241186a41046a200241e8006a41046a2d00003a0000200220022f01243b01202002200228026836021820022902cc01210920022802c80121080c010b200241a8026a41186a2007280200360200200241a8026a41106a2005290300370300200241a8026a41086a2003290300370300200241a8016a41086a22052006290200370300200220022903c80122093703a802200220042902003703a80120022802ac022103200241286a41086a2005290300370300200220022903a8013703280240024020030d00410121040c010b4101210402402009a722052c00002208417f4c0d00410121080c010b0240024002400240024002400240200841ff0171220641b801490d00200841ff017141c001490d01410321080c070b0240200641817f6a20034d0d00410821080c070b200641807f6a210341012104200541016a2106200841817f470d042003450d0120062c0000417f4c0d0441012104410721080c060b410821080240200641ca7e6a220a20034d0d000c060b0240200641c97e6a220641044d0d00410021080c060b024020052d00010d00410721080c060b200541016a210b41002107410021040240034020062004460d01200b20046a2d00002004417f7320066a4103744118717420076a21072006200441016a2204470d000b0b410121040240200a20076a2206200a4f0d00410921080c060b200620034b0d052006200a490d014101210341012108024002400240417f2006200a6b220441144720044114491b41016a0e03020001020b200241143602582002200436023820044114470d04200241c8016a41026a2005200a6a220341026a2d00003a0000200329000721092003280003210820032f00002104200241ac026a200341136a2d00003a0000200220043b01c8012002200328000f3602a802410021030c010b41002108410121030b200241e4006a41026a2204200241c8016a41026a2d00003a000020024188016a41046a2205200241a8026a41046a2d00003a0000200220022f01c8013b0164200220022802a8023602880102402003450d00410121040c060b200241246a41026a20042d00003a0000200241e8006a41046a20052d00003a0000200220022f01643b012420022002280288013602680c040b41a099c40041004100104b000b200a2006107b000b200241a8016a41146a4103360200200241b4016a4104360200200241c8016a41146a4103360200200242033702cc0120024180ecc4003602c801200241043602ac012002200241d8006a3602e8012002200241386a36028802200242043703b802200242013702ac02200241d4ecc4003602a8022002200241a8016a3602d8012002200241a8026a3602b801200220024188026a3602b0012002200241e8016a3602a801200241c8016a4190edc40010b301000b41012108024002400240417f200341144720034114491b41016a0e03020001020b200241143602582002200336023820034114470d06200641026a2d000021032005280004210820062f00002104200241ac026a200541146a2d00003a0000200241c8016a41026a20033a0000200220052800103602a802200220043b01c80120052900082109410021040c010b41002108410121040b200241e4006a41026a2203200241c8016a41026a2d00003a000020024188016a41046a2205200241a8026a41046a2d00003a0000200220022f01c8013b0164200220022802a8023602880102402004450d00410121040c020b200241246a41026a20032d00003a0000200241e8006a41046a20052d00003a0000200220022f01643b012420022002280288013602680b410021040b200241206a41026a2203200241246a41026a2d00003a0000200241186a41046a2205200241e8006a41046a2d00003a0000200220022f01243b0120200220022802683602182004450d010b2000200836020420004101360200200041086a20093702000c050b200241146a41026a20032d00003a00002002410c6a41046a20052d00003a0000200220022f01203b01142002200228021836020c200241a8026a2001410110a301200241c8016a41086a2203200241a8026a410c6a2204290200370300200241c8016a41106a2205200241a8026a41146a2206290200370300200241c8016a41186a2207200241c4026a280200360200200220022902ac023703c801024020022802a8024101470d0020022902cc01210920022802c80121040c040b200241a8026a41186a220b2007280200360200200241a8026a41106a22072005290300370300200241a8026a41086a2003290300370300200241a8016a41086a22052006290200370300200220022903c801220c3703a802200220042902003703a80120022902ac02210d200241286a41086a22062005290300370300200220022903a8013703282002200d37023c2002200c3e0238200241386a41146a2006290300370200200241386a410c6a20022903283702002002410b360258200241a8026a200241386a410010a3012003200b290300370300200220072903003703c80120022902ac02210c41022103024020022802a8024101460d0020042802002103200241a8016a41086a200241c8016a41086a290300370300200220022903c8013703a8010b200241e8016a41086a2204200241a8016a41086a290300370300200220022903a8013703e80102400240024020034102460d0020024194026a20022903e8013702002002419c026a200429030037020020022003360290022002200c37038802200241a8026a20024188026a108003200241c8016a41086a200241b1026a290000370300200241c8016a41106a2203200241b9026a290000370300200241c8016a41186a2204200241c1026a290000370300200220022900a9023703c80120022d00a8024101470d01200241d8006a41086a200241d3016a28000036020020024188016a41086a200241a8016a41086a29030037030020024188016a41106a200241a8016a41106a29030037030020024188016a41186a200241a8016a41186a290300370300200220022900cb01370358200220022903a801370388010b4100210541012103410021060c010b200241e8006a41086a2205200241c8016a41086a2207290300370300200241e8006a41106a2003290300370300200241e8006a41186a2004290300370300200220022903c801220c370388012002200c3703684120102d2203450d0220032002290368370000200341186a200241e8006a41186a290300370000200341106a200241e8006a41106a290300370000200341086a200529030037000041012106200241a8026a200241386a410110a3012007200241a8026a41186a2903003703002002200241a8026a41106a2903003703c80120022902ac02210c41022104024020022802a8024101460d00200241b4026a2802002104200241a8016a41086a200241c8016a41086a290300370300200220022903c8013703a8010b200241fc016a200241a8016a41086a2903003702002002200c3703e801200220022903a8013702f401200220043602f001024020044102470d00410121050c010b20024188026a41186a220e200241e8016a41186a220f28020036020020024188026a41106a2210200241e8016a41106a221129030037030020024188026a41086a200241e8016a41086a290300370300200220022903e80137038802200241a8026a20024188026a108003200241c8016a41086a200241b1026a290000370300200241c8016a41106a2212200241b9026a290000370300200241c8016a41186a2213200241c1026a290000370300200220022900a9023703c801024020022d00a8024101470d00200241d8006a41086a200241d3016a28000036020020024188016a41086a200241a8016a41086a29030037030020024188016a41106a200241a8016a41106a29030037030020024188016a41186a200241a8016a41186a290300370300200220022900cb01370358200220022903a8013703880141012106410121050c010b20024188016a41086a2214200241c8016a41086a220a290300220c370300200241e8006a41186a22152013290300370300200241e8006a41106a22162012290300370300200241e8006a41086a2217200c370300200220022903c801220c370388012002200c370368200241f4016a2118200241a8026a41106a2106200241a8026a410172210b410221194120211a41012104410121050340200241a8026a41186a221b201529030037030020062016290300370300200241a8026a41086a221c2017290300370300200220022903683703a802024020042005470d000240200441016a22052004490d0020192005201920054b1b220541ffffff3f712005470d00200541057422074100480d000240024020040d002007102d21030c010b2003201a2007102f21030b20030d01200741011033000b1034000b2003201a6a220720022903a802370000200741186a201b290300370000200741106a2006290300370000200741086a201c290300370000200241a8026a200241386a200441016a221b10a301200a200641086a290200370300200220062902003703c80120022902ac02210c41022107024020022802a8024101460d0020022802b4022107200241a8016a41086a200a290300370300200220022903c8013703a8010b201820022903a801370200201841086a200241a8016a41086a2903003702002002200c3703e801200220073602f001024020074102460d00200e200f2802003602002010201129030037030020024188026a41086a200241e8016a41086a290300370300200220022903e80137038802200241a8026a20024188026a108003200a200b41086a2900003703002012200b41106a2900003703002013200b41186a2900003703002002200b2900003703c801024020022d00a8024101470d00200241d8006a41086a200241d3016a28000036020020024188016a41086a200241a8016a41086a29030037030020024188016a41106a200241a8016a41106a29030037030020024188016a41186a200241a8016a41186a290300370300200220022900cb01370358200220022903a80137038801200441016a21060c030b2014200a290300220c37030020152013290300370300201620122903003703002017200c370300200220022903c801220c370388012002200c370368201941026a2119201a41206a211a201b21040c010b0b200441016a21060b024020022802582204410b460d00200229025c21092005450d04200310310c040b200241a8026a2001410210a301200241c8016a41086a2201200241a8026a410c6a2204290200370300200241c8016a41106a2207200241a8026a41146a220b290200370300200241c8016a41186a220a200241c4026a280200360200200220022902ac023703c801024020022802a8024101470d00200241e8006a41086a20022902cc01370300200220022802c80136026c20024101360268200241e8006a41047221010c030b200241a8026a41186a200a280200360200200241a8026a41106a2007290300370300200241a8026a41086a200129030037030020024188016a41086a2201200b290200370300200220022903c801220c3703a802200220042902003703880120022902ac02210d200241286a41086a2204200129030037030020022002290388013703282002200d3702ac012002200c3e02a801200241a8016a41146a2004290300370200200241a8016a410c6a2002290328370200200241e8006a200241a8016a108103200241e8006a410472210120022802684101460d02200241c8016a41046a22042002410c6a41046a2d00003a0000200241a8026a41086a2207200141086a280200360200200220022f01143b01a8012002200228020c3602c801200220012902003703a8022002200241166a2d00003a00aa012000410c6a2006360200200041086a200536020020002003360204200041106a20022903a802370200200041186a2007280200360200200041236a20093700002000411f6a20083600002000411c6a20022f01a8013b01002000411e6a20022d00aa013a0000200020022802c80136002b2000412f6a20042d00003a0000200041003602000c040b200241a8016a41146a4103360200200241b4016a4104360200200241c8016a41146a4103360200200242033702cc0120024180ecc4003602c801200241043602ac012002200241d8006a3602e8012002200241386a36028802200242043703b802200242013702ac02200241d4ecc4003602a8022002200241a8016a3602d8012002200241a8026a3602b801200220024188026a3602b0012002200241e8016a3602a801200241c8016a4190edc40010b301000b412041011033000b20004101360200200020012902003702042000410c6a200141086a2802003602002005450d01200310310c010b2000200436020420004101360200200041086a20093702000b200241d0026a24000bdf0e03017f017e097f230041306b220224002002200136020820004188016a200241086a103e20002903002103024002400240024002400240200141046a2802002204200141086a28020022056b4108490d00200128020021040c010b200541086a22062005490d01200441017422052006200520064b1b22054100480d010240024020040d002005102d21040c010b200128020020042005102f21040b2004450d0420012004360200200141046a2005360200200141086a28020021050b200141086a2206200541086a360200200420056a20033700002000290308210302400240200141046a2802002204200628020022056b4108490d00200128020021040c010b200541086a22062005490d01200441017422052006200520064b1b22054100480d010240024020040d002005102d21040c010b200128020020042005102f21040b2004450d0320012004360200200141046a2005360200200141086a28020021050b200141086a2207200541086a360200200420056a200337000020022001360208200041a8016a200241086a103c20022001360208200041bc016a200241086a103e20022001360208200041dc016a200241086a103e20002802702108200041f8006a28020022052001106f02400240200141046a2802002206200728020022046b2005490d00200128020021060c010b200420056a22072004490d01200641017422042007200420074b1b22044100480d010240024020060d002004102d21060c010b200128020020062004102f21060b2006450d0220012006360200200141046a2004360200200141086a28020021040b200141086a200420056a360200200620046a2008200510ab051a20022001360208200041fc016a200241086a103e200220013602082000419c026a200241086a103e200041bc026a2109410021064101210741002105410021040340200920066a2d0000210a0240024020052004460d00200521080c010b200541016a22042005490d02200541017422082004200820044b1b22084100480d020240024020050d002008102d21070c010b200720052008102f21070b02402007450d0020052104200821050c010b200841011033000b200720046a200a3a0000200441016a2104200641016a2206418002470d000b024002400240024002400240200141046a2802002206200141086a28020022056b2004490d00200128020021060c010b200520046a220a2005490d0520064101742205200a2005200a4b1b22054100480d050240024020060d002005102d21060c010b200128020020062005102f21060b2006450d0120012006360200200141046a2005360200200141086a28020021050b200141086a200520046a360200200620056a2007200410ab051a02402008450d00200710310b2002200136022c200220002903103703082002200041186a2903003703102002200041206a2903003703182002200041286a290300370320200241086a2002412c6a103e2002200136022c200220002903303703082002200041386a2903003703102002200041c0006a2903003703182002200041c8006a290300370320200241086a2002412c6a103e2002200136022c200220002903503703082002200041d8006a2903003703102002200041e0006a2903003703182002200041e8006a290300370320200241086a2002412c6a103e200028027c210620004184016a28020022052001106f02402005450d0020062005410c6c6a210b200141046a210903402006280200210a200641086a28020022052001106f0240024020092802002207200141086a220828020022046b2005490d00200128020021070c010b200420056a220c2004490d0720074101742204200c2004200c4b1b22044100480d070240024020070d002004102d21070c010b200128020020072004102f21070b2007450d042001200736020020092004360200200828020021040b2008200420056a360200200720046a200a200510ab051a2006410c6a2206200b470d000b0b0240024020002d00bc044101460d0002400240200141046a280200200141086a2802002205460d00200128020021040c010b200541016a22042005490d07200541017422062004200620044b1b22064100480d070240024020050d002006102d21040c010b200128020020052006102f21040b2004450d0520012004360200200141046a2006360200200141086a28020021050b200141086a200541016a360200200420056a41003a00000c010b02400240200141046a280200200141086a2802002205460d00200128020021040c010b200541016a22042005490d06200541017422062004200620044b1b22064100480d060240024020050d002006102d21040c010b200128020020052006102f21040b2004450d0520012004360200200141046a2006360200200141086a28020021050b200141086a200541016a360200200420056a41013a000020022001360208200041bd046a200241086a103e0b200241306a24000f0b200541011033000b200441011033000b200641011033000b200641011033000b1034000b200441011033000b200541011033000b200541011033000bd6930103067f027e047f230041306b22022400024002400240024002400240024002400240024020002d00002203410d4b0d000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e0e000102030405060708090a0b0c5b000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d5a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a36020041002106200420036a41003a000002402000410c6a2d000022044102460d0002400240200141046a28020020052802002203460d00200128020021060c010b200341016a22062003490d10200341017422072006200720064b1b22074100480d100240024020030d002007102d21060c010b200128020020032007102f21060b2006450d5a20012006360200200141046a2007360200200141086a28020021030b200141086a2207200341016a360200200620036a41013a000041002106024020044101470d0002400240200141046a28020020072802002203460d00200128020021040c010b200341016a22042003490d11200341017422062004200620044b1b22064100480d110240024020030d002006102d21040c010b200128020020032006102f21040b2004450d5a20012004360200200141046a2006360200200141086a28020021030b200141086a200341016a360200200420036a41013a000020002d000d21060b02400240200141046a28020020072802002203460d00200128020021040c010b200341016a22042003490d10200341017422072004200720044b1b22074100480d100240024020030d002007102d21040c010b200128020020032007102f21040b2004450d5820012004360200200141046a2007360200200141086a28020021030b200141086a200341016a360200200420036a20063a00002000410e6a2d000021060b02400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d0f200341017422002004200020044b1b22004100480d0f0240024020030d002000102d21040c010b200128020020032000102f21040b2004450d5620012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a20063a00000c5b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d5420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a000020002d0008220341024b0d5a02400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102d21040c010b200128020020032005102f21040b2004450d5520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041096a20011046200041386a29030021082000290330210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22002003490d10200441017422032000200320004b1b22034100480d100240024020040d002003102d21040c010b200128020020042003102f21040b2004450d5420012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a22012008370008200120093700000c5c0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d5220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041096a200110460c5b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0e200341017422052004200520044b1b22054100480d0e0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d5020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200041096a20011046200041296a20011046200041d8006a29030021082000290350210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d0e200441017422032005200320054b1b22034100480d0e0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d4f20012004360200200141046a2003360200200141086a28020021030b200141086a2205200341106a360200200420036a2203200837000820032009370000200041e8006a29030021082000290360210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22002003490d0e200441017422032000200320004b1b22034100480d0e0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d4e20012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a22012008370008200120093700000c5a0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d4c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d4b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041086a200110462000280204210002400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d0d200441017422032005200320054b1b22034100480d0d0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d4a20012004360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200420036a20003600000c590b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d4820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d4720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041286a20011046200041c8006a20011046200041106a29030021082000290308210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d0c200441017422032005200320054b1b22034100480d0c0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d4620012004360200200141046a2003360200200141086a28020021030b200141086a2205200341106a360200200420036a2203200837000820032009370000200041206a29030021082000290318210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22002003490d0c200441017422032000200320004b1b22034100480d0c0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d4520012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a22012008370008200120093700000c580b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d4320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41043a00002000280204220341024b0d5702400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d4420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000020002802082104200041106a28020022032001106f2003450d592004200341286c6a210a200141046a21060340200420011046200441206a29030021080240024020062802002200200528020022036b4108490d00200128020021000c010b200341086a22072003490d0e200041017422032007200320074b1b22034100480d0e0240024020000d002003102d21000c010b200128020020002003102f21000b2000450d442001200036020020062003360200200528020021030b2005200341086a360200200020036a2008370000200a200441286a2204470d000c5a0b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422002004200020044b1b22004100480d0c0240024020030d002000102d21040c010b200128020020032000102f21040b2004450d4120012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a41013a00000c580b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422002004200020044b1b22004100480d0b0240024020030d002000102d21040c010b200128020020032000102f21040b2004450d3f20012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a41023a00000c570b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a000020002d0004220341024b0d5602400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3e20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041056a200110460c580b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422002004200020044b1b22004100480d0b0240024020030d002000102d21040c010b200128020020032000102f21040b2004450d3c20012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a41013a00000c570b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a000020002802082105200041106a28020022032001106f2003450d562005200341d0006c6a210003402005200110462002200541206a360210200241106a200110ac012002200541306a360210200241106a200110ac0120052802402103200528024822042001106f200541d0006a210502402004450d00200441306c21040340200341106a2001104620022003360210200241106a200110ac01200341306a2103200441506a22040d000b0b20002005470d000c570b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41063a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041106a200110b202200028020421062000410c6a28020022032001106f02400240200141046a2802002200200528020022046b2003490d00200128020021000c010b200420036a22052004490d09200041017422042005200420054b1b22044100480d090240024020000d002004102d21000c010b200128020020002004102f21000b2000450d3620012000360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200020046a2006200310ab051a0c550b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41073a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280204210002400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d08200441017422032005200320054b1b22034100480d080240024020040d002003102d21040c010b200128020020042003102f21040b2004450d3220012004360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200420036a20003600000c540b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41083a000020002d0008220341054b0d5302400240024002400240024020030e06000102030405000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041206a29030021082000290318210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d0c200441017422032005200320054b1b22034100480d0c0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d3320012004360200200141046a2003360200200141086a28020021030b200141086a2205200341106a360200200420036a2203200837000820032009370000200041306a29030021082000290328210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d0c200441017422032005200320054b1b22034100480d0c0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d3220012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a2203200837000820032009370000200028020c2105200041146a28020022032001106f2003450d58200520034106746a210003402005411c6a2001104620022005360210200241106a200110ac0120052802102103200528021822042001106f200541c0006a210502402004450d00200441306c21040340200341106a2001104620022003360210200241106a200110ac01200341306a2103200441506a22040d000b0b20052000470d000c590b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d3020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041096a20011046200041386a29030021082000290330210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22002003490d0b200441017422032000200320004b1b22034100480d0b0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d2f20012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a22012008370008200120093700000c570b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200028020c210002400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d0a200441017422032005200320054b1b22034100480d0a0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d2c20012004360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200420036a20003600000c560b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422002004200020044b1b22004100480d090240024020030d002000102d21040c010b200128020020032000102f21040b2004450d2a20012004360200200141046a2000360200200141086a28020021030b200141086a200341016a360200200420036a41033a00000c550b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a0000200141046a2802002104200528020021030240024020002903104201510d000240024020042003460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2920012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200029031821082002200041206a29030037031820022008370310200241106a21040c010b0240024020042003460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200029031821082002200041206a29030037031820022008370310200241106a21040b02400240200141046a2802002205200141086a28020022036b4110490d00200128020021050c010b200341106a22062003490d08200541017422032006200320064b1b22034100480d080240024020050d002003102d21050c010b200128020020052003102f21050b2005450d2520012005360200200141046a2003360200200141086a28020021030b200141086a2206200341106a360200200520036a220341086a200441086a290000370000200320042900003700002000290328210802400240200141046a2802002204200628020022036b4108490d00200128020021040c010b200341086a22052003490d08200441017422032005200320054b1b22034100480d080240024020040d002003102d21040c010b200128020020042003102f21040b2004450d2420012004360200200141046a2003360200200141086a28020021030b200141086a2205200341086a360200200420036a20083700002000290330210802400240200141046a2802002204200528020022036b4108490d00200128020021040c010b200341086a22002003490d08200441017422032000200320004b1b22034100480d080240024020040d002003102d21040c010b200128020020042003102f21040b2004450d2320012004360200200141046a2003360200200141086a28020021030b200141086a200341086a360200200420036a20083700000c540b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a0000200141046a2802002104200528020021030240024020002903104201510d000240024020042003460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200029031821082002200041206a29030037031820022008370310200241106a21040c010b0240024020042003460d00200128020021040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102d21040c010b200128020020032005102f21040b2004450d2020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200029031821082002200041206a29030037031820022008370310200241106a21040b02400240200141046a2802002205200141086a28020022036b4110490d00200128020021050c010b200341106a22062003490d07200541017422032006200320064b1b22034100480d070240024020050d002003102d21050c010b200128020020052003102f21050b2005450d1e20012005360200200141046a2003360200200141086a28020021030b200141086a2206200341106a360200200520036a220341086a200441086a290000370000200320042900003700002000290328210802400240200141046a2802002204200628020022036b4108490d00200128020021040c010b200341086a22002003490d07200441017422032000200320004b1b22034100480d070240024020040d002003102d21040c010b200128020020042003102f21040b2004450d1d20012004360200200141046a2003360200200141086a28020021030b200141086a200341086a360200200420036a20083700000c530b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1b20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a000020002d0008220341054b0d5202400240024002400240024020030e06000102030405000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041096a20011046200041296a20011046200041d8006a29030021082000290350210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22002003490d0b200441017422032000200320004b1b22034100480d0b0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d1e20012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a22012008370008200120093700000c570b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041096a20011046200041296a200110460c560b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a000020022001360210200041096a200241106a103e0c550b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200028020c210002400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d08200441017422032005200320054b1b22034100480d080240024020040d002003102d21040c010b200128020020042003102f21040b2004450d1720012004360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200420036a20003600000c540b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a0000200041096a2001104620002d0029210002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20003a00000c530b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a0000200041096a20011046200028022c2106200041346a28020022032001106f02400240200141046a2802002200200528020022046b2003490d00200128020021000c010b200420036a22052004490d06200041017422042005200420054b1b22044100480d060240024020000d002004102d21000c010b200128020020002004102f21000b2000450d1120012000360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200020046a2006200310ab051a0c520b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a000020002d0001220341024b0d5102400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102d21040c010b200128020020032005102f21040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000020002d0002210002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20003a00000c530b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041026a200110460c520b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a000020002d0002210002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20003a00000c510b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d04200341017422052004200520044b1b22054100480d040240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410b3a000002400240200141046a28020020052802002203460d00200128020021050c010b200341016a22042003490d04200341017422052004200520044b1b22044100480d040240024020030d002004102d21050c010b200128020020032004102f21050b2005450d0720012005360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200520036a41003a0000200028020421052000410c6a28020022032001106f2003450d502003410c6c210a2005410a6a2100200141046a210503404100210702402000417e6a22062d00004102460d0002400240200528020020042802002203460d00200128020021070c010b200341016a22072003490d062003410174220b2007200b20074b1b220b4100480d060240024020030d00200b102d21070c010b20012802002003200b102f21070b2007450d08200120073602002005200b360200200428020021030b2004200341016a360200200720036a41013a000041002107024020062d00004101470d0002400240200528020020042802002203460d00200128020021060c010b200341016a22062003490d07200341017422072006200720064b1b22074100480d070240024020030d002007102d21060c010b200128020020032007102f21060b2006450d082001200636020020052007360200200428020021030b2004200341016a360200200620036a41013a00002000417f6a2d000021070b02400240200528020020042802002203460d00200128020021060c010b200341016a22062003490d5c2003410174220b2006200b20064b1b220b4100480d5c0240024020030d00200b102d21060c010b20012802002003200b102f21060b2006450d05200120063602002005200b360200200428020021030b2004200341016a360200200620036a20073a000020002d000021070b02400240200528020020042802002203460d00200128020021060c010b200341016a22062003490d5b2003410174220b2006200b20064b1b220b4100480d5b0240024020030d00200b102d21060c010b20012802002003200b102f21060b2006450d03200120063602002005200b360200200428020021030b2004200341016a360200200620036a20073a00002000410c6a2100200a41746a220a0d000c510b0b024002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5a200341017422052004200520044b1b22054100480d5a0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410c3a000020002d0008220341024b0d5002400240024002400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5f200341017422052004200520044b1b22054100480d5f0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041096a20011046200041306a200110bd02200029039005210802400240200141046a2802002204200528020022036b4108490d00200128020021040c010b200341086a22002003490d5f200441017422032000200320004b1b22034100480d5f0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d0420012004360200200141046a2003360200200141086a28020021030b200141086a200341086a360200200420036a20083700000c550b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5e200341017422052004200520044b1b22054100480d5e0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041096a20011046200041306a200110bd020c540b024002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5e200341017422052004200520044b1b22054100480d5e0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041096a200110462002200136020c200220002903303703102002200041386a2903003703182002200041c0006a2903003703202002200041c8006a290300370328200041dc006a210b200241106a2002410c6a103e410021054101210641002103410021040340200b20056a2d0000210a0240024020032004460d00200321070c010b200341016a22042003490d5f200341017422072004200720044b1b22074100480d5f0240024020030d002007102d21060c010b200620032007102f21060b02402006450d0020032104200721030c010b200741011033000b200620046a200a3a0000200441016a2104200541016a2205418002470d000b0240024002400240024002400240024002400240200141046a2802002205200141086a28020022036b2004490d00200128020021050c010b200320046a220a2003490d6620054101742203200a2003200a4b1b22034100480d660240024020050d002003102d21050c010b200128020020052003102f21050b2005450d0120012005360200200141046a2003360200200141086a28020021030b200141086a200320046a360200200520036a2006200410ab051a02402007450d00200610310b200041d0006a2802002105200041d8006a28020022032001106f02402003450d0020052003412c6c6a210c200141086a2107200141046a210b034020022001360210200541186a200241106a103c20052802002103200528020822042001106f02402004450d00200441057421040340200220013602102003200241106a103e200341206a2103200441606a22040d000b0b200528020c210a200528021422032001106f02400240200b2802002206200728020022046b2003490d00200128020021060c010b200420036a220d2004490d6820064101742204200d2004200d4b1b22044100480d680240024020060d002004102d21060c010b200128020020062004102f21060b2006450d0420012006360200200b2004360200200728020021040b2007200420036a360200200620046a200a200310ab051a2005412c6a2205200c470d000b0b024020002d00dc02220341024b0d0002400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d69200341017422052004200520044b1b22054100480d690240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00000c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d68200341017422052004200520044b1b22054100480d680240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a000020022001360210200041dd026a200241106a103e0c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d67200341017422052004200520044b1b22054100480d670240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a000020002d00dd02210602400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d67200341017422052004200520044b1b22054100480d670240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a20063a00000b200029038003210802400240200141046a2802002204200141086a28020022036b4108490d00200128020021040c010b200341086a22052003490d66200441017422032005200320054b1b22034100480d660240024020040d002003102d21040c010b200128020020042003102f21040b2004450d0720012004360200200141046a2003360200200141086a28020021030b200141086a2206200341086a360200200420036a200837000020004188036a280200210720004190036a28020022032001106f02400240200141046a2802002205200628020022046b2003490d00200128020021050c010b200420036a22062004490d66200541017422042006200420064b1b22044100480d660240024020050d002004102d21050c010b200128020020052004102f21050b2005450d0820012005360200200141046a2004360200200141086a28020021040b200141086a200420036a360200200520046a2007200310ab051a2002200136021020004194036a200241106a103e0c5c0b200341011033000b200441011033000b200541011033000b200541011033000b200541011033000b200541011033000b200341011033000b200441011033000b200541011033000b200541011033000b200341011033000b200541011033000b200541011033000b200b41011033000b200b41011033000b1034000b200741011033000b200b41011033000b200441011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200441011033000b200541011033000b200541011033000b200541011033000b200341011033000b200541011033000b200541011033000b200541011033000b200341011033000b200541011033000b200541011033000b200341011033000b200341011033000b200541011033000b200541011033000b200541011033000b200341011033000b200341011033000b200341011033000b200541011033000b200541011033000b200541011033000b200041011033000b200341011033000b200541011033000b200341011033000b200541011033000b200341011033000b200341011033000b200541011033000b200541011033000b200341011033000b200541011033000b200541011033000b200441011033000b200541011033000b200541011033000b200541011033000b200041011033000b200541011033000b200541011033000b200041011033000b200041011033000b200341011033000b200541011033000b200541011033000b200341011033000b200341011033000b200541011033000b200541011033000b200341011033000b200541011033000b200541011033000b200341011033000b200341011033000b200541011033000b200541011033000b200341011033000b200541011033000b200541011033000b200041011033000b200741011033000b200641011033000b200741011033000b200541011033000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0220012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410d3a000020002d0008220341024b0d00024002400240024020030e03000102000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0d200341017422052004200520044b1b22054100480d0d0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041096a20011046200041386a29030021082000290330210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d0d200441017422032005200320054b1b22034100480d0d0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d0720012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a220320083700082003200937000020022001360210200041c0006a200241106a103e2002200041e0006a2903002208370310200241106a21000c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0c200341017422052004200520044b1b22054100480d0c0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041096a20011046200041386a29030021082000290330210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d0c200441017422032005200320054b1b22034100480d0c0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d0820012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a220320083700082003200937000020022001360210200041c0006a200241106a103e2002200041e0006a2903002208370310200241106a21000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0b200341017422052004200520044b1b22054100480d0b0240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200041096a20011046200041386a29030021082000290330210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d0b200441017422032005200320054b1b22034100480d0b0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d0920012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a220320083700082003200937000020022001360210200041c0006a200241106a103e2002200041e0006a2903002208370310200241106a21000b02400240200141046a2802002204200141086a28020022036b4108490d00200128020021040c010b200341086a22052003490d0a200441017422032005200320054b1b22034100480d0a0240024020040d002003102d21040c010b200128020020042003102f21040b2004450d0920012004360200200141046a2003360200200141086a2802002103200029030021080b200141086a200341086a360200200420036a20083700000b200241306a24000f0b200541011033000b200541011033000b200341011033000b200541011033000b200341011033000b200541011033000b200341011033000b200341011033000b1034000be84105067f027ec2017f017e167f23004190066b2202240041002103200241003a00a80420012802042104417f210502400240034020042003460d0120024188046a20036a200128020022062d00003a00002001200420056a3602042001200641016a3602002002200341016a22073a00a8042005417f6a21052007210320074120470d000b200241c8016a41086a20024188046a41086a290300370300200241c8016a41106a20024188046a41106a290300370300200241c8016a41186a20024188046a41186a29030037030020022002290388043703c8010240024002400240024002400240024002400240024002400240200420076b22034108490d00200629000121082001200641096a3602002001200341786a220536020420054108490d0c200629000921092001200641116a3602002001200341706a360204200441706a2007460d0b20062d001121052001200641126a36020020012003416f6a3602042004416f6a2007460d0b20062d0012210a2001200641136a36020020012003416e6a3602042004416e6a2007460d0b20062d0013210b2001200641146a36020020012003416d6a3602042004416d6a2007460d0b20062d0014210c2001200641156a36020020012003416c6a3602042004416c6a2007460d0b20062d0015210d2001200641166a36020020012003416b6a3602042004416b6a2007460d0b20062d0016210e2001200641176a36020020012003416a6a3602042004416a6a2007460d0b20062d0017210f2001200641186a3602002001200341696a360204200441696a2007460d0b20062d001821102001200641196a3602002001200341686a360204200441686a2007460d0b20062d0019211120012006411a6a3602002001200341676a360204200441676a2007460d0b20062d001a211220012006411b6a3602002001200341666a360204200441666a2007460d0b20062d001b211320012006411c6a3602002001200341656a360204200441656a2007460d0b20062d001c211420012006411d6a3602002001200341646a360204200441646a2007460d0b20062d001d211520012006411e6a3602002001200341636a360204200441636a2007460d0b20062d001e211620012006411f6a3602002001200341626a360204200441626a2007460d0b20062d001f21172001200641206a3602002001200341616a360204200441616a2007460d0b20062d002021182001200641216a3602002001200341606a360204200441606a2007460d0b20062d002121192001200641226a36020020012003415f6a3602042004415f6a2007460d0b20062d0022211a2001200641236a36020020012003415e6a3602042004415e6a2007460d0b20062d0023211b2001200641246a36020020012003415d6a3602042004415d6a2007460d0b20062d0024211c2001200641256a36020020012003415c6a221d36020441002107200241003a00a8042003415b6a210303400240201d2007470d000240200741ff0171450d00200241003a00a8040b200041023a00bc040c100b20024188046a20076a200620076a220441256a2d00003a0000200120033602042001200441266a3602002002200741016a22043a00a8042003417f6a21032004210720044120470d000b200241e8016a41086a20024188046a41086a290300370300200241e8016a41106a20024188046a41106a290300370300200241e8016a41186a20024188046a41186a29030037030020022002290388043703e80141002107200241003a00a804200620046a2106034002402003417f470d000240200741ff0171450d00200241003a00a8040b200041023a00bc040c100b20024188046a20076a200620076a220441256a2d00003a0000200120033602042001200441266a3602002002200741016a22043a00a8042003417f6a21032004210720044120470d000b20024188026a41086a20024188046a41086a29030037030020024188026a41106a20024188046a41106a29030037030020024188026a41186a20024188046a41186a29030037030020022002290388043703880220022001102c20022802000d0920012802042002280204221e490d09201e417f4c0d0102400240201e0d004101211f0c010b201e107a221f450d0b2001280204201e490d09201f2001280200201e10ab051a20012802042203201e490d0320012003201e6b36020420012001280200201e6a3602000b201f450d0941002103200241003a00a8042001280204211d417f2107024002400340201d2003460d0120024188046a20036a200128020022062d00003a00002001201d20076a3602042001200641016a3602002002200341016a22043a00a8042007417f6a21072004210320044120470d000b200241a8026a41086a20024188046a41086a290300370300200241a8026a41106a20024188046a41106a290300370300200241a8026a41186a20024188046a41186a29030037030020022002290388043703a80241002103200241003a00a804201d20046b2120201d20076a21070340024020202003470d000240200341ff0171450d00200241003a00a8040b200041023a00bc04201e450d12201f10310c120b20024188046a20036a200620036a220441016a2d00003a0000200120073602042001200441026a3602002002200341016a22043a00a8042007417f6a21072004210320044120470d000b200241c8026a41086a20024188046a41086a290300370300200241c8026a41106a20024188046a41106a290300370300200241c8026a41186a20024188046a41186a29030037030020022002290388043703c80241002103200241003b018804200620046a211d20024188046a410272212003402007417f460d08201d20036a220441016a2d00002106200120073602042001200441026a360200202020036a20063a00002002200341016a22043b0188042007417f6a2107200421032004418002470d000b200441ffff037141ff014d0d0820024186066a280100212120024184066a2f0100212220024183066a2d0000212320024190046a2d0000212420024191046a2f0000212520024193046a2d0000212620024194046a2f0100212720024196046a2d0000212820024197046a2f0000212920024199046a2d0000212a2002419a046a2f0100212b2002419c046a2d0000212c2002419d046a2f0000212d2002419f046a2d0000212e200241a0046a2f0100212f200241a2046a2d00002130200241a3046a2f00002131200241a5046a2d00002132200241a6046a2f0100213320024188046a41206a2d00002134200241a9046a2f00002135200241ab046a2d00002136200241ac046a2f01002137200241ae046a2d00002138200241af046a2f00002139200241b1046a2d0000213a200241b2046a2f0100213b200241b4046a2d0000213c200241b5046a2f0000213d200241b7046a2d0000213e200241b8046a2f0100213f200241ba046a2d00002140200241bb046a2f00002141200241bd046a2d00002142200241be046a2f01002143200241c0046a2d00002144200241c1046a2f00002145200241c3046a2d00002146200241c4046a2f01002147200241c6046a2d00002148200241c7046a2f00002149200241c9046a2d0000214a200241ca046a2f0100214b200241cc046a2d0000214c200241cd046a2f0000214d200241cf046a2d0000214e200241d0046a2f0100214f200241d2046a2d00002150200241d3046a2f00002151200241d5046a2d00002152200241d6046a2f01002153200241d8046a2d00002154200241d9046a2f00002155200241db046a2d00002156200241dc046a2f01002157200241de046a2d00002158200241df046a2f00002159200241e1046a2d0000215a200241e2046a2f0100215b200241e4046a2d0000215c200241e5046a2f0000215d200241e7046a2d0000215e200241e8046a2f0100215f200241ea046a2d00002160200241eb046a2f00002161200241ed046a2d00002162200241ee046a2f01002163200241f0046a2d00002164200241f1046a2f00002165200241f3046a2d00002166200241f4046a2f01002167200241f6046a2d00002168200241f7046a2f00002169200241f9046a2d0000216a200241fa046a2f0100216b200241fc046a2d0000216c200241fd046a2f0000216d200241ff046a2d0000216e20024180056a2f0100216f20024182056a2d0000217020024183056a2f0000217120024185056a2d0000217220024186056a2f0100217320024188056a2d0000217420024189056a2f000021752002418b056a2d000021762002418c056a2f010021772002418e056a2d000021782002418f056a2f0000217920024191056a2d0000217a20024192056a2f0100217b20024194056a2d0000217c20024195056a2f0000217d20024197056a2d0000217e20024198056a2f0100217f2002419a056a2d00002180012002419b056a2f00002181012002419d056a2d00002182012002419e056a2f0100218301200241a0056a2d0000218401200241a1056a2f0000218501200241a3056a2d0000218601200241a4056a2f0100218701200241a6056a2d0000218801200241a7056a2f0000218901200241a9056a2d0000218a01200241aa056a2f0100218b01200241ac056a2d0000218c01200241ad056a2f0000218d01200241af056a2d0000218e01200241b0056a2f0100218f01200241b2056a2d0000219001200241b3056a2f0000219101200241b5056a2d0000219201200241b6056a2f0100219301200241b8056a2d0000219401200241b9056a2f0000219501200241bb056a2d0000219601200241bc056a2f0100219701200241be056a2d0000219801200241bf056a2f0000219901200241c1056a2d0000219a01200241c2056a2f0100219b01200241c4056a2d0000219c01200241c5056a2f0000219d01200241c7056a2d0000219e01200241c8056a2f0100219f01200241ca056a2d000021a001200241cb056a2f000021a101200241cd056a2d000021a201200241ce056a2f010021a301200241d0056a2d000021a401200241d1056a2f000021a501200241d3056a2d000021a601200241d4056a2f010021a701200241d6056a2d000021a801200241d7056a2f000021a901200241d9056a2d000021aa01200241da056a2f010021ab01200241dc056a2d000021ac01200241dd056a2f000021ad01200241df056a2d000021ae01200241e0056a2f010021af01200241e2056a2d000021b001200241e3056a2f000021b101200241e5056a2d000021b201200241e6056a2f010021b301200241e8056a2d000021b401200241e9056a2f000021b501200241eb056a2d000021b601200241ec056a2f010021b701200241ee056a2d000021b801200241ef056a2f000021b901200241f1056a2d000021ba01200241f2056a2f010021bb01200241f4056a2d000021bc01200241f5056a2f000021bd01200241f7056a2d000021be01200241f8056a2f010021bf01200241fa056a2d000021c001200241fb056a2f000021c101200241fd056a2d000021c201200241fe056a2f010021c30120024180066a2d000021c40120024181066a2f000021c50120022d008a0421c60120022f008b0421c70120022d008d0421c80120022f018e0421c90141002103200241003a00a8042001280204211d417f21070340201d2003460d0720024188046a20036a200128020022062d00003a00002001201d20076a3602042001200641016a3602002002200341016a22043a00a8042007417f6a21072004210320044120470d000b200241e8026a41086a20024188046a41086a290300370300200241e8026a41106a20024188046a41106a290300370300200241e8026a41186a20024188046a41186a29030037030020022002290388043703e80241002103200241003a00a804201d20046b2120201d20076a21070340024020202003470d000240200341ff0171450d00200241003a00a8040b200041023a00bc04201e450d12201f10310c120b20024188046a20036a200620036a220441016a2d00003a0000200120073602042001200441026a3602002002200341016a22043a00a8042007417f6a21072004210320044120470d000b20024188036a41086a20024188046a41086a29030037030020024188036a41106a20024188046a41106a29030037030020024188036a41186a20024188046a41186a29030037030020022002290388043703880341002103200241003a00a804200620046a2106034002402007417f470d000240200341ff0171450d00200241003a00a8040b200041023a00bc04201e450d12201f10310c120b20024188046a20036a200620036a220441016a2d00003a0000200120073602042001200441026a3602002002200341016a22043a00a8042007417f6a21072004210320044120470d000b200241a8036a41086a20024188046a41086a2203290300370300200241a8036a41106a20024188046a41106a290300370300200241a8036a41186a20024188046a41186a29030037030020022002290388043703a80320024188046a2001108a0120022802880422200d01200041023a00bc04201e450d10201f10310c100b200341ff0171450d08200241003a00a8040c080b200328020021ca01200228028c0421cb0120012802042207450d03200128020022062d0000210320012007417f6a3602042001200641016a360200200341014b0d03410021040240024020030e020100010b41002103200241003a00a8042007417f6a211d2007417e6a210703400240201d2003470d00200341ff0171450d06200241003a00a8040c060b20024188046a20036a200620036a220441016a2d00003a0000200120073602042001200441026a3602002002200341016a22043a00a8042007417f6a21072004210320044120470d000b200241e8036a41186a20024188046a41186a29030022cc01370300200241c8036a41086a20024188046a41086a290300370300200241c8036a41106a20024188046a41106a290300370300200241c8036a41186a20cc0137030020022002290388043703c803410121040b200241086a41186a2206200241c8036a41186a2203290300370300200241086a41106a221d200241c8036a41106a2201290300370300200241086a41086a22cd01200241c8036a41086a2207290300370300200241a8016a41086a22ce01200241c8016a41086a290300370300200241a8016a41106a22cf01200241c8016a41106a290300370300200241a8016a41186a22d001200241c8016a41186a290300370300200220022903c803370308200220022903c8013703a80120024188016a41186a22d101200241e8016a41186a29030037030020024188016a41106a22d201200241e8016a41106a29030037030020024188016a41086a22d301200241e8016a41086a290300370300200220022903e80137038801200241e8006a41186a22d40120024188026a41186a290300370300200241e8006a41106a22d50120024188026a41106a290300370300200241e8006a41086a22d60120024188026a41086a2903003703002002200229038802370368200241c8006a41186a22d701200241a8026a41186a290300370300200241c8006a41106a22d801200241a8026a41106a290300370300200241c8006a41086a22d901200241a8026a41086a290300370300200220022903a802370348200241286a41186a22da01200241c8026a41186a290300370300200241286a41106a22db01200241c8026a41106a290300370300200241286a41086a22dc01200241c8026a41086a290300370300200220022903c80237032820024188046a41186a22dd01200241e8026a41186a29030037030020024188046a41106a22de01200241e8026a41106a29030037030020024188046a41086a22df01200241e8026a41086a290300370300200220022903e80237038804200241e8036a41186a22e00120024188036a41186a290300370300200241e8036a41106a22e10120024188036a41106a290300370300200241e8036a41086a22e20120024188036a41086a29030037030020022002290388033703e8032003200241a8036a41186a2903003703002001200241a8036a41106a2903003703002007200241a8036a41086a290300370300200220022903a8033703c80320002009370308200020083703002000200229038804370310200041186a20df01290300370300200041206a20de01290300370300200041286a20dd01290300370300200020022903e803370330200041386a20e201290300370300200041c0006a20e101290300370300200041c8006a20e001290300370300200041e8006a2003290300370300200041e0006a2001290300370300200041d8006a2007290300370300200020022903c803370350200020ca0136028401200020cb01360280012000202036027c2000201e3602782000201e3602742000201f360270200041a0016a20d00129030037030020004198016a20cf0129030037030020004190016a20ce01290300370300200020022903a801370388012000201c3a00bb012000201b3a00ba012000201a3a00b901200020193a00b801200020183a00b701200020173a00b601200020163a00b501200020153a00b401200020143a00b301200020133a00b201200020123a00b101200020113a00b001200020103a00af012000200f3a00ae012000200e3a00ad012000200d3a00ac012000200c3a00ab012000200b3a00aa012000200a3a00a901200020053a00a801200041d4016a20d101290300370200200041cc016a20d201290300370200200041c4016a20d30129030037020020002002290388013702bc01200041f4016a20d401290300370200200041ec016a20d501290300370200200041e4016a20d601290300370200200020022903683702dc0120004194026a20d7012903003702002000418c026a20d80129030037020020004184026a20d901290300370200200020022903483702fc01200041b4026a20da01290300370200200041ac026a20db01290300370200200041a4026a20dc012903003702002000200229032837029c02200020043a00bc04200020213602b804200020223b01b604200020233a00b504200020c5013b00b304200020c4013a00b204200020c3013b01b004200020c2013a00af04200020c1013b00ad04200020c0013a00ac04200020bf013b01aa04200020be013a00a904200020bd013b00a704200020bc013a00a604200020bb013b01a404200020ba013a00a304200020b9013b00a104200020b8013a00a004200020b7013b019e04200020b6013a009d04200020b5013b009b04200020b4013a009a04200020b3013b019804200020b2013a009704200020b1013b009504200020b0013a009404200020af013b019204200020ae013a009104200020ad013b008f04200020ac013a008e04200020ab013b018c04200020aa013a008b04200020a9013b008904200020a8013a008804200020a7013b018604200020a6013a008504200020a5013b008304200020a4013a008204200020a3013b018004200020a2013a00ff03200020a1013b00fd03200020a0013a00fc032000209f013b01fa032000209e013a00f9032000209d013b00f7032000209c013a00f6032000209b013b01f4032000209a013a00f30320002099013b00f10320002098013a00f00320002097013b01ee0320002096013a00ed0320002095013b00eb0320002094013a00ea0320002093013b01e80320002092013a00e70320002091013b00e50320002090013a00e4032000208f013b01e2032000208e013a00e1032000208d013b00df032000208c013a00de032000208b013b01dc032000208a013a00db0320002089013b00d90320002088013a00d80320002087013b01d60320002086013a00d50320002085013b00d30320002084013a00d20320002083013b01d00320002082013a00cf0320002081013b00cd0320002080013a00cc032000207f3b01ca032000207e3a00c9032000207d3b00c7032000207c3a00c6032000207b3b01c4032000207a3a00c303200020793b00c103200020783a00c003200020773b01be03200020763a00bd03200020753b00bb03200020743a00ba03200020733b01b803200020723a00b703200020713b00b503200020703a00b4032000206f3b01b2032000206e3a00b1032000206d3b00af032000206c3a00ae032000206b3b01ac032000206a3a00ab03200020693b00a903200020683a00a803200020673b01a603200020663a00a503200020653b00a303200020643a00a203200020633b01a003200020623a009f03200020613b009d03200020603a009c032000205f3b019a032000205e3a0099032000205d3b0097032000205c3a0096032000205b3b0194032000205a3a009303200020593b009103200020583a009003200020573b018e03200020563a008d03200020553b008b03200020543a008a03200020533b018803200020523a008703200020513b008503200020503a0084032000204f3b0182032000204e3a0081032000204d3b00ff022000204c3a00fe022000204b3b01fc022000204a3a00fb02200020493b00f902200020483a00f802200020473b01f602200020463a00f502200020453b00f302200020443a00f202200020433b01f002200020423a00ef02200020413b00ed02200020403a00ec022000203f3b01ea022000203e3a00e9022000203d3b00e7022000203c3a00e6022000203b3b01e4022000203a3a00e302200020393b00e102200020383a00e002200020373b01de02200020363a00dd02200020353b00db02200020343a00da02200020333b01d802200020323a00d702200020313b00d502200020303a00d4022000202f3b01d2022000202e3a00d1022000202d3b00cf022000202c3a00ce022000202b3b01cc022000202a3a00cb02200020293b00c902200020283a00c802200020273b01c602200020263a00c502200020253b00c302200020243a00c202200020c9013b01c002200020c8013a00bf02200020c7013b00bd02200020c6013a00bc02200041d5046a2006290300370000200041cd046a201d290300370000200041c5046a20cd01290300370000200020022903083700bd04200041df046a200241aa036a2d00003a0000200041dd046a20022f00a8033b00000c0e0b200041023a00bc040c0d0b1032000b201e2003107b000b200041023a00bc04024020ca01450d0020ca01410c6c21012020210303400240200341046a280200450d00200328020010310b2003410c6a2103200141746a22010d000b0b024020cb01450d00202010310b201e450d0a201f10310c0a0b0240200341ff0171450d00200241003a00a8040b200041023a00bc04201e450d09201f10310c090b200341ffff0371450d00200241003b0188040b200041023a00bc04201e450d07201f10310c070b200041023a00bc04201e450d06201f10310c060b201f10310b200041023a00bc040c040b201e41011033000b200041023a00bc040c020b200041023a00bc040c010b0240200341ff0171450d00200241003a00a8040b200041023a00bc040b20024190066a24000ba20404037f017e037f047e230041d0006b2202240002400240024002400240024002400240200128020422034108490d002001280200220429000021052001200341786a3602042001200441086a36020020022001102c20022802000d02200128020420022802042206490d022006417f4c0d0402400240024020060d00410121070c010b2006107a2207450d0120012802042006490d0320072001280200200610ab051a200128020422032006490d072001200320066b3602042001200128020020066a3602000b41002104200241003a00482001280204417f6a210303402003417f460d05200241286a20046a200128020022082d00003a0000200120033602042001200841016a3602002002200441016a22083a00482003417f6a21032008210420084120470d000b200241086a41186a200241286a41186a2903002209370300200241086a41106a200241286a41106a290300220a370300200241086a41086a200241286a41086a290300220b37030020022002290328220c370308200041106a20063602002000200636020c2000200736020820002005370300200041146a200c3702002000411c6a200b370200200041246a200a3702002000412c6a20093702000c080b200641011033000b200041003602080c060b200710310b200041003602080c040b200441ff0171450d02200241003a00480c020b1032000b20062003107b000b200041003602082006450d00200710310b200241d0006a24000b891605047f017e067f037e027f230041e0036b2201240002400240024002404112102d2202450d002002410029008db941370000200241106a41002f009db9413b0000200241086a4100290095b94137000020014292808080a0023702f402200120023602f0022000200141f0026a104620014180026a41186a220020013502f80242208620013502f002841000220241186a29000037030020014180026a41106a2203200241106a29000037030020014180026a41086a2204200241086a290000370300200120022900003703800220021031200141086a41186a2000290300370300200141086a41106a2003290300370300200141086a41086a20042903003703002001200129038002370308024020012802f402450d0020012802f00210310b200141f0006a200141086aad428080808080048422051002104120012802702202450d02200128027421042001200141f8006a28020036022c20012002360228200141f0026a200141286a10f10120012d00800322004102460d0120012802f402210620012802f0022103200141a0026a20014181036a41c30010ab051a02402004450d00200210310b200510090c030b411241011033000b41e9bcc0004133200141d8036a419cbdc0001038000b410221000b200141286a200141a0026a41c30010ab051a200141f0006a200141286a41c30010ab051a4100210441002102024020004102460d00200120003a00b801200141b8016a410172200141f0006a41c10010ab052107200141da016a210441002102024002400240024002400240024002400240024020012d00d9014101470d004112102d2202450d012002410029008db941370000200241106a41002f009db9413b0000200241086a4100290095b94137000020014292808080a0023702cc03200120023602c8032004200141c8036a1046200141f0026a41186a220020013502d00342208620013502c803841000220241186a290000370300200141f0026a41106a2208200241106a290000370300200141f0026a41086a2209200241086a290000370300200120022900003703f00220021031200141a0026a41186a22022000290300370300200141a0026a41106a220a2008290300370300200141a0026a41086a220b2009290300370300200120012903f0023703a002024020012802cc03450d0020012802c80310310b20014180026a41086a200b290300220537030020014180026a41106a200a290300220c37030020014180026a41186a2002290300220d370300200120012903a002220e370380022000200d3703002008200c370300200920053703002001200e3703f0024120102d2202450d02200220012903f002370000200241186a200141f0026a41186a290300370000200241106a200141f0026a41106a290300370000200241086a200141f0026a41086a29030037000020012d00b80121000b0240200041ff01714101460d0020012d00d9014101460d0520014180026a41186a2204419fb9c100ad4280808080a003841000220041186a29000037030020014180026a41106a2207200041106a29000037030020014180026a41086a2208200041086a290000370300200120002900003703800220001031200141a0026a41186a2004290300370300200141a0026a41106a2007290300370300200141a0026a41086a200829030037030020012001290380023703a002200141a0026aad428080808080048410090c080b4112102d2200450d022000410029008db941370000200041106a41002f009db9413b0000200041086a4100290095b94137000020014292808080a0023702cc03200120003602c8032007200141c8036a1046200141f0026a41186a220420013502d00342208620013502c803841000220041186a290000370300200141f0026a41106a2207200041106a290000370300200141f0026a41086a2208200041086a290000370300200120002900003703f00220001031200141a0026a41186a22002004290300370300200141a0026a41106a22092007290300370300200141a0026a41086a220a2008290300370300200120012903f0023703a002024020012802cc03450d0020012802c80310310b20014180026a41086a200a290300220537030020014180026a41106a2009290300220c37030020014180026a41186a2000290300220d370300200120012903a002220e370380022004200d3703002007200c370300200820053703002001200e3703f0024120102d2200450d03200020012903f002370000200041186a200141f0026a41186a290300370000200041106a200141f0026a41106a290300370000200041086a200141f0026a41086a290300370000200141c8036a2000ad42808080808004841002104120012802c8032207450d0620012802cc0321082001200141c8036a41086a2802003602ec02200120073602e802200141f0026a200141e8026a10f10120012d00800322094102460d05200141d9016a210420014180026a41086a220a200141f0026a41086a220b290300370300200120012903f00237038002200141a0026a20014181036a220f41c30010ab051a02402008450d00200710310b200b200a29030037030020012001290380023703f002200120093a008003200f200141a0026a41c30010ab051a200141a1036a2004290000370000200141a9036a200441086a290000370000200141b1036a200441106a290000370000200141b9036a200441186a290000370000200141c1036a200441206a2d00003a0000200141203602a402200120003602a002200141f0026a200141a0026a10c302024020012802f402450d0020012802f00210310b20001031410121040c080b411241011033000b412041011033000b411241011033000b412041011033000b20014180026a41186a2207419fb9c100ad4280808080a003841000220041186a29000037030020014180026a41106a2208200041106a29000037030020014180026a41086a2209200041086a290000370300200120002900003703800220001031200141f0026a41186a2007290300370300200141f0026a41106a2008290300370300200141f0026a41086a200929030037030020012001290380023703f002200141203602a4022001200141f0026a3602a0022004200141a0026a10b0020c020b41e9bcc0004133200141d8036a419cbdc0001038000b41f6d7c00041d80010bf01000b41002100410021040b02400240024002400240024020020d00410021070c010b20014180026a2002ad4280808080800484100210412001280280022207450d022001280284022108200120014188026a2802003602cc03200120073602c803200141f0026a200141c8036a10f10120012d0080034102460d0120012802fc02210920012802f802210a20012802f402210b20012802f002210f200141a0026a20014181036a221041c30010ab051a02402008450d00200710310b200120093602fc022001200a3602f8022001200b3602f4022001200f3602f0022010200141a0026a41c30010ab051a200141f0026a41186a200141c0016a290300370300200141f0026a41206a200141c8016a29030037030020014198036a200141b8016a41186a290300370300200141a0036a200141b8016a41206a2d00003a0000200120012903b80137038003200141203602a402200120023602a002200141f0026a200141a0026a10c302024020012802f402450d0020012802f00210310b20021031410121070b200420004572450d020c030b41e9bcc0004133200141d8036a419cbdc0001038000b41f6d7c00041d80010bf01000b200010310b02402002452007720d00200210310b20032104200321020b02402002450d002006450d00200410310b200141e0036a24000bc23407047f017e057f017e077f027e027f230041e0046b2201240002400240024002400240024002400240024002400240024002400240024002404112102d2202450d00200241002900d0b941370000200241106a41002f00e0b9413b0000200241086a41002900d8b94137000020014292808080a0023702ac03200120023602a8032000200141a8036a1046200141e8026a41186a220020013502b00342208620013502a803841000220241186a290000370300200141e8026a41106a2203200241106a290000370300200141e8026a41086a2204200241086a290000370300200120022900003703e80220021031200141186a2000290300370300200141106a2003290300370300200141086a2004290300370300200120012903e802370300024020012802ac03450d0020012802a80310310b20014180016a2001ad42808080808004842205100210412001280280012203450d012001280284012106200120014188016a28020036026420012003360260200141a0046a200141e0006a10890120012802a0042207450d0320012802a404210820012802642202450d0220012002417f6a220436026420012001280260220941016a220a36026020092d0000220041014b0d02410021020240024020000e020100010b41002102200141003a00c8030340024020042002470d0020014100360264200241ff0171450d05200141003a00c8030c050b200141a8036a20026a200920026a220041016a2d00003a00002001200041026a3602602001200241016a22003a00c8032000210220004120470d000b200141e8026a41086a200141a8036a41086a290300220b370300200141a0016a41186a200141a8036a41186a290300370300200141a0016a41106a200141a8036a41106a290300370300200141a0016a41086a200b3703002001200420006b2204360264200120012903a803220b3703e8022001200b3703a00141012102200920006a41016a210a0b200141c0046a41186a200141a0016a41186a290300370300200141c0046a41106a200141a0016a41106a290300370300200141c0046a41086a200141a0016a41086a290300370300200120012903a0013703c0042004450d0220012004417f6a22093602642001200a41016a360260200a2d0000220441014b0d02410021000240024020040e020100010b41002100200141003a00c8030340024020092000470d0020014100360264200041ff0171450d05200141003a00c8030c050b200141a8036a20006a200a20006a220441016a2d00003a00002001200441026a3602602001200041016a22043a00c8032004210020044120470d000b20014188036a41086a200141a8036a41086a290300220b370300200141a0016a41186a200141a8036a41186a290300370300200141a0016a41106a200141a8036a41106a290300370300200141a0016a41086a200b3703002001200920046b360264200120012903a803220b370388032001200b3703a001410121000b200141a8026a41186a2204200141a0016a41186a2209290300370300200141a8026a41106a220a200141a0016a41106a220c290300370300200141a8026a41086a220d200141a0016a41086a220e290300370300200141c8026a41086a220f200141c0046a41086a290300370300200141c8026a41106a2210200141c0046a41106a290300370300200141c8026a41186a2211200141c0046a41186a290300370300200120012903a0013703a802200120012903c0043703c80220014188026a41186a2212201129030037030020014188026a41106a2211201029030037030020014188026a41086a2210200f290300370300200120012903c80237038802200141e8016a41186a220f2004290300370300200141e8016a41106a2204200a290300370300200141e8016a41086a220a200d290300370300200120012903a8023703e801200141a8036a41186a2012290300370300200141a8036a41106a2011290300370300200141a8036a41086a201029030037030020012001290388023703a8032009200f290300370300200c2004290300370300200e200a290300370300200120012903e8013703a0010c040b411241011033000b410221020c030b2008450d00200710310b410221020b20024102460d01200141c0046a41186a200141a8036a41186a290300370300200141c0046a41106a200141a8036a41106a290300370300200141c0046a41086a200141a8036a41086a290300370300200141a0046a41086a200141a0016a41086a290300370300200141a0046a41106a200141a0016a41106a290300370300200141a0046a41186a200141a0016a41186a290300370300200120012903a8033703c004200120012903a0013703a00402402006450d00200310310b200510090b200141c0006a41186a2203200141c0046a41186a290300370300200141c0006a41106a2204200141c0046a41106a290300370300200141c0006a41086a2209200141c0046a41086a290300370300200141206a41086a2206200141a0046a41086a290300370300200141206a41106a220a200141a0046a41106a290300370300200141206a41186a220c200141a0046a41186a290300370300200120012903c004370340200120012903a00437032020014180016a41086a220d200929030037030020014180016a41106a2209200429030037030020014180016a41186a220420032903003703002001200129034037038001200141e0006a41086a22032006290300370300200141e0006a41106a2206200a290300370300200141e0006a41186a220a200c2903003703002001200129032037036020024102460d09200141c2016a220c2001290360370100200141a9016a200d290300370000200141b1016a2009290300370000200141b9016a2004290300370000200141ca016a2003290300370100200141d2016a2006290300370100200141da016a200a290300370100200120023a00a00120012001290380013700a101200120003a00c1014100210a0240200041ff01714101470d004112102d2202450d02200241002900d0b941370000200241106a41002f00e0b9413b0000200241086a41002900d8b94137000020014292808080a00237028c032001200236028803200c20014188036a1046200141a8036a41186a2200200135029003422086200135028803841000220241186a290000370300200141a8036a41106a2203200241106a290000370300200141a8036a41086a2204200241086a290000370300200120022900003703a80320021031200141c0046a41186a22022000290300370300200141c0046a41106a22092003290300370300200141c0046a41086a22062004290300370300200120012903a8033703c0040240200128028c03450d0020012802880310310b200141a0046a41086a20062903002205370300200141a0046a41106a2009290300220b370300200141a0046a41186a20022903002213370300200120012903c00422143703a004200020133703002003200b37030020042005370300200120143703a8034120102d220a450d03200a20012903a803370000200a41186a200141a8036a41186a290300370000200a41106a200141a8036a41106a290300370000200a41086a200141a8036a41086a29030037000020012d00a00121020b024002400240200241ff01714101460d0020012d00c1014101460d01200141a8036a41186a220041e2b9c100ad4280808080a003841000220241186a290000370300200141a8036a41106a2203200241106a290000370300200141a8036a41086a2204200241086a290000370300200120022900003703a80320021031200141c0046a41186a2000290300370300200141c0046a41106a2003290300370300200141c0046a41086a2004290300370300200120012903a8033703c004200141c0046aad428080808080048410090c0a0b4112102d2202450d05200241002900d0b941370000200241106a41002f00e0b9413b0000200241086a41002900d8b94137000020014292808080a00237028c032001200236028803200141a0016a41017220014188036a1046200141a8036a41186a2200200135029003422086200135028803841000220241186a290000370300200141a8036a41106a2203200241106a290000370300200141a8036a41086a2204200241086a290000370300200120022900003703a80320021031200141c0046a41186a22022000290300370300200141c0046a41106a22092003290300370300200141c0046a41086a22062004290300370300200120012903a8033703c0040240200128028c03450d0020012802880310310b200141a0046a41086a20062903002205370300200141a0046a41106a2009290300220b370300200141a0046a41186a20022903002213370300200120012903c00422143703a004200020133703002003200b37030020042005370300200120143703a8034120102d220c450d06200c20012903a803370000200c41186a200141a8036a41186a290300370000200c41106a200141a8036a41106a290300370000200c41086a200141a8036a41086a290300370000200141e8026a200cad428080808080048422051002104120012802e802220f450d0120012802ec0221102001200141e8026a41086a2802003602cc022001200f3602c80220014188036a200141c8026a1089012001280288032200450d08200128028c03211120012802cc022202450d0720014190036a280200210d20012002417f6a22043602cc02200120012802c802220641016a22093602c80220062d0000220241014b0d074100210e0240024020020e020100010b41002102200141003a00c8030340024020042002470d00200141003602cc02200241ff0171450d0a200141003a00c8030c0a0b200141a8036a20026a200620026a220341016a2d00003a00002001200341026a3602c8022001200241016a22033a00c8032003210220034120470d000b200141c0046a41086a200141a8036a41086a290300370300200141c0046a41106a200141a8036a41106a290300370300200141c0046a41186a200141a8036a41186a290300370300200120012903a8033703c0042001200420036b22043602cc024101210e200620036a41016a21090b200141a0046a41186a200141c0046a41186a290300370300200141a0046a41106a200141c0046a41106a290300370300200141a0046a41086a200141c0046a41086a290300370300200120012903c0043703a0042004450d0720012004417f6a22043602cc022001200941016a3602c80220092d0000220241014b0d070240024020020e020100010b41002102200141003a00c8030340024020042002470d00200141003602cc02200241ff0171450d0a200141003a00c8030c0a0b200141a8036a20026a200920026a220341016a2d00003a00002001200341026a3602c8022001200241016a22033a00c8032003210220034120470d000b200141c0046a41086a200141a8036a41086a290300370300200141c0046a41106a200141a8036a41106a2903003703002001200420036b3602cc020b200141a8036a41186a2203200141a0046a41186a290300370300200141a8036a41106a2204200141a0046a41106a290300370300200141a8036a41086a2209200141a0046a41086a290300370300200120012903a0043703a803200e4102460d08200141c1016a2102200141c0046a41186a2003290300370300200141c0046a41106a2004290300370300200141c0046a41086a2009290300370300200120012903a8033703c004200120012f01a0043b01880302402010450d00200f10310b200141b5036a20012903c004370000200141bd036a200141c0046a41086a290300370000200141c5036a200141c0046a41106a290300370000200141cd036a200141c0046a41186a2903003700002001200e3a00b4032001200d3602b003200120113602ac03200120003602a803200120012f0188033b01f603200141d5036a2002290000370000200141dd036a200241086a290000370000200141e5036a200241106a290000370000200141ed036a200241186a290000370000200141f5036a200241206a2d00003a0000200141003602c804200142013703c004200d200141c0046a106f200141b4036a21030240200d450d00200d410574210203402000200141c0046a1046200041206a2100200241606a22020d000b0b2003200141c0046a10ee0120012802c4042102200520013502c80442208620012802c0042200ad84100302402002450d00200010310b024020012802ac03450d0020012802a80310310b200c1031410121090c0a0b200141a8036a41186a220041e2b9c100ad4280808080a003841000220241186a290000370300200141a8036a41106a2203200241106a290000370300200141a8036a41086a2204200241086a290000370300200120022900003703a80320021031200141c0046a41186a2000290300370300200141c0046a41106a2003290300370300200141c0046a41086a2004290300370300200120012903a8033703c004200141203602ac032001200141c0046a3602a803200c200141a8036a10b0020c080b41f6d7c00041d80010bf01000b41e9bcc0004133200141a8026a419cbdc0001038000b411241011033000b412041011033000b411241011033000b412041011033000b2011450d00200010310b41e9bcc0004133200141a8026a419cbdc0001038000b4100210c410021090b02400240024002400240200a0d00410021020c010b200141f8036a200aad4280808080800484220510021041024002400240024020012802f803220f450d0020012802fc0321112001200141f8036a41086a28020036028c042001200f3602880420014190046a20014188046a1089012001280290042202450d022001280294042106200128028c042200450d0120014190046a41086a280200210420012000417f6a220d36028c042001200128028804220e41016a221236028804200e2d0000220041014b0d01410021100240024020000e020100010b41002100200141003a00c80303400240200d2000470d002001410036028c04200041ff0171450d04200141003a00c8030c040b200141a8036a20006a200e20006a220341016a2d00003a00002001200341026a360288042001200041016a22033a00c8032003210020034120470d000b200141e8026a41086a200141a8036a41086a290300220b370300200141c0046a41186a200141a8036a41186a290300370300200141c0046a41106a200141a8036a41106a290300370300200141c0046a41086a200b3703002001200d20036b220d36028c04200120012903a803220b3703e8022001200b3703c00441012110200e20036a41016a21120b200141a0046a41186a200141c0046a41186a290300370300200141a0046a41106a200141c0046a41106a290300370300200141a0046a41086a200141c0046a41086a290300370300200120012903c0043703a004200d450d012001200d417f6a220d36028c042001201241016a3602880420122d0000220341014b0d01410021000240024020030e020100010b41002100200141003a00c80303400240200d2000470d002001410036028c04200041ff0171450d04200141003a00c8030c040b200141a8036a20006a201220006a220341016a2d00003a00002001200341026a360288042001200041016a22033a00c8032003210020034120470d000b20014188036a41086a200141a8036a41086a290300220b370300200141c0046a41186a200141a8036a41186a290300370300200141c0046a41106a200141a8036a41106a290300370300200141c0046a41086a200b3703002001200d20036b36028c04200120012903a803220b370388032001200b3703c004410121000b200141a8026a41186a2203200141c0046a41186a290300370300200141a8026a41106a220d200141c0046a41106a290300370300200141a8026a41086a220e200141c0046a41086a290300370300200141c8026a41086a2212200141a0046a41086a290300370300200141c8026a41106a2215200141a0046a41106a290300370300200141c8026a41186a2216200141a0046a41186a290300370300200120012903c0043703a802200120012903a0043703c80220014188026a41186a201629030037030020014188026a41106a201529030037030020014188026a41086a2012290300370300200120012903c80237038802200141e8016a41186a22122003290300370300200141e8016a41106a2203200d290300370300200141e8016a41086a220d200e290300370300200120012903a8023703e801200141a8036a41186a2012290300370300200141a8036a41106a2003290300370300200141a8036a41086a200d290300370300200120012903e8013703a8030c030b41f6d7c00041d80010bf01000b2006450d00200210310b410221100b20104102460d01200141c0046a41186a2203200141a8036a41186a290300370300200141c0046a41106a220d200141a8036a41106a290300370300200141c0046a41086a220e200141a8036a41086a290300370300200120012903a8033703c004200120012f01a0043b01880302402011450d00200f10310b200141d5036a20003a0000200141d6036a20012903c004370100200141de036a200e290300370100200141e6036a200d290300370100200141ee036a2003290300370100200141bc036a200141a0016a41086a290300370200200141c4036a200141a0016a41106a290300370200200141cc036a200141a0016a41186a290300370200200141d4036a200141a0016a41206a2d00003a0000200120043602b003200120063602ac03200120023602a803200120012f0188033b01f603200120012903a0013702b403200141003602c804200142013703c0042004200141c0046a106f200141b4036a210302402004450d002004410574210003402002200141c0046a1046200241206a2102200041606a22000d000b0b2003200141c0046a10ee0120012802c4042102200520013502c80442208620012802c0042200ad84100302402002450d00200010310b024020012802ac03450d0020012802a80310310b200a1031410121020b2009200c4572450d010c020b41e9bcc0004133200141a8026a419cbdc0001038000b200c10310b0240200a452002720d00200a10310b2007450d002008450d00200710310b200141e0046a24000b920201077f230041106b22022400200241003602082002420137030020002802002103200028020822042002106f024002400240024020022802042205200228020822066b2004490d00200228020021050c010b200620046a22072006490d02200541017422082007200820074b1b22074100480d020240024020050d002007102d21050c010b200228020020052007102f21050b2005450d0120022007360204200220053602000b2002200620046a360208200520066a2003200410ab051a2000410c6a2002109101200041106a200210ee01200228020421002001290200200235020842208620022802002204ad84100302402000450d00200410310b200241106a24000f0b200741011033000b1034000b930b0b047f017e047f017e017f017e017f017e037f027e037f230041d0006b22012400200141106a41086a22024197d6c000ad4280808080e003841001220341086a2900003703002001200329000037031020031031200141086a2204200229030037030020012001290310370300200141106a2001109e01200129031821052001280214210320012802102106200028020821072000280204210820002802002109200241c4bac100ad4280808080e002841001220041086a29000037030020012000290000370310200010312004200229030037030020012001290310370300200141306a2001ad4280808080800284220a100210410240024002400240024002400240024020012802302200450d00200128023421022001200141306a41086a28020036024420012000360240200141106a200141c0006a1089012001280210220b450d022001290214210c2002450d01200010310c010b4101210b4200210c0b2006410020031b210d2005420020031b210e2003410420031b210f02402007450d00200c422088a72203450d002009200741246c6a21102003410574211120092104034020042802202106200441086a2900002105200441106a290000211220042900002113200141106a41186a200441186a290000370300200141106a41106a2012370300200141106a41086a200537030020012013370310200441246a21042011210241002100200b2103024002400340200141106a2003460d0120002003200141106a412010ad0522074100476a21002007450d01200341206a2103200241606a22020d000c020b0b200d20066a2202200d490d000240200041016a2207200e422088a722034d0d000240200ea7220d20036b20072003200720034b1b221420036b22074f0d00200320076a22152003490d0a200d41017422162015201620154b1b221541ffffffff03712015470d0a201541027422164100480d0a02400240200d0d002016102d210f0c010b200f200d4102742016102f210f0b200f450d062015ad210e0b200f20034102746a210d0240024020074102490d00200d410020142003417f736a220741027410aa051a200f200320146a20036b4102746a417c6a210d200720036a21030c010b2007450d010b200d4100360200200341016a21030b200320004d0d05200f20004102746a2200200028020020066a360200200e42ffffffff0f832003ad42208684210e2002210d0b20042010470d000b0b02402008450d00200910310b0240200ca7450d00200b10310b200141106a41086a22004197d6c000ad4280808080e003841001220341086a2900003703002001200329000037031020031031200141086a20002903003703002001200129031037030002400240200f0d00200a10090c010b20014100360218200142013703104104102d2203450d042003200d36000020014284808080c00037021420012003360210200e422088a72203200141106a106f0240024020030d002001280218210620012802142104200128021021000c010b2003410274210d4100200128021822036b210220012802142104200f210703402007280200210b02400240200420026a4104490d00200128021021000c010b200341046a22002003490d09200441017422062000200620004b1b22064100480d090240024020040d002006102d21000c010b200128021020042006102f21000b2000450d082001200636021420012000360210200621040b200741046a21072001200341046a2206360218200020036a200b3600002002417c6a210220062103200d417c6a220d0d000b0b200a2006ad4220862000ad84100302402004450d00200010310b200f450d00200ea7450d00200f10310b200141d0006a24000f0b41e9bcc0004133200141c8006a419cbdc0001038000b201641041033000b41f49cc40020002003104b000b410441011033000b200641011033000b1034000b8597021d057f027e037f017e037f017e027f017e037f017e027f017e037f0c7e017f027e027f017e027f027e027f027e067f047e017f027e017f037e1e7f23002202210320024180136b41607122022400200241e0066a41086a220441f4d5c000ad4280808080b004841001220541086a290000370300200220052900003703e00620051031200241c0076a41086a22062004290300370300200220022903e0063703c007200241c00b6a200241c0076aad220742808080808002842208100210410240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022802c00b22050d00410021090c010b200241c00b6a41086a2802004104490d012005280000210920022802c40b450d00200510310b2001417f6a210a200441c6d6c000ad42808080808002841001220541086a290000370300200220052900003703e0062005103120062004290300370300200220022903e0063703c007200241c00b6a2008100210410240024020022802c00b2204450d00200241c80b6a280200450d0320042d0000220541044f0d03024020022802c40b450d00200410310b200541034b0d16024020050e0401001702010b200241e0066a41086a220541c6d6c000ad42808080808002841001220441086a290000370300200220042900003703e00620041031200241c0076a41086a2005290300370300200220022903e0063703c007200810090c010b200a20096b2204200a4b0d1520044105490d150b200241c00b6a41086a220541fcdbc200ad4280808080a002841001220441086a290000370300200220042900003703c00b20041031200241e0066a41086a2005290300370300200220022903c00b3703e006200241c0076a200241e0066aad4280808080800284100210410240024020022802c0072204450d0020022802c40721052002200241c0076a41086a2802003602e40a200220043602e00a200241c00b6a200241e00a6a10890120022802c00b220b450d0420022902c40b210c2005450d01200410310c010b4101210b4200210c0b4100210d02400240200c422088a7220441057422010d004108210e4100210f0c010b2001410575220fad42d0007e2210422088a70d1b2010a722054100480d1b2005102d220e450d040b200ca7211102402004450d00200141606a2112200241c00b6a41206a2104200e2106200b21050340200541086a290000210c200541106a290000211020052900002113200241e0066a41186a2209200541186a290000370300200241e0066a41106a22142010370300200241e0066a41086a2215200c370300200220133703e006200241c0076a200241e0066a10c602200241c00b6a41186a2009290300370300200241c00b6a41106a2014290300370300200241c00b6a41086a2015290300370300200420022903c007370300200441086a200241c0076a41086a290300370300200441106a200241c0076a41106a290300370300200441186a200241c0076a41186a290300370300200441206a200241c0076a41206a290300370300200441286a200241c0076a41286a290300370300200220022903e0063703c00b2006200241c00b6a41d00010ab0541d0006a2106200541206a2105200141606a22010d000b201241057641016a210d0b02402011450d00200b10310b200241e0066a41086a22044197d6c000ad4280808080e003841001220541086a290000370300200220052900003703e00620051031200241c0076a41086a22012004290300370300200220022903e0063703c007200241c00b6a200241c0076a109e01420021100240024020022802c40b22160d004100210941042116420021170c010b2008100920022802c00b210920022903c80b21170b109901210c200441b9b9c100ad4280808080f0028422131001220541086a290000370300200220052900003703e0062005103120012004290300370300200220022903e0063703c007200241c00b6a200810021041024020022802c00b2204450d00200241c00b6a41086a2802004108490d052004290000211020022802c40b450d00200410310b200241e0066a41086a221820131001220441086a290000370300200220042900003703e00620041031200241c0076a41086a22192018290300370300200220022903e0063703c0072002200c3703c00b2008200241c00b6aad221a428080808080018410034100211b4100211c200c20107d220c500d0c201841c4bac100ad4280808080e002841001220441086a290000370300200220042900003703e0062004103120192018290300370300200220022903e0063703c007200241e0066a2008100210410240024020022802e0062204450d0020022802e40621052002200241e8066a2802003602e40a200220043602e00a200241c00b6a200241e00a6a10890120022802c00b221d450d0720022902c40b211e2005450d01200410310c010b4200211e4101211d0b109901211f200241e0066a41086a2204418a9bc100ad4280808080e002841001220541086a290000370300200220052900003703e00620051031200241c0076a41086a22012004290300370300200220022903e0063703c007200241c00b6a200742808080808002842220100210410240024020022802c00b22050d0042002110420021130c010b200241c00b6a41086a2802004110490d07200541086a29000021132005290000211020022802c40b450d00200510310b200441f1d6c000ad4280808080e002841001220541086a290000370300200220052900003703e0062005103120012004290300370300200220022903e0063703c007200241c00b6a2008100210410240024020022802c00b22040d00410021140c010b200241c80b6a2802004104490d082004280000211420022802c40b450d00200410310b4200212120024188056a42808090bbbad6adf00d20107d222242002013201042808090bbbad6adf00d56ad7c7d428094ebdc03420010b105200241f8046a200229038805221020024188056a41086a29030022134280ec94a37c427f10b005200241e8046a20102013200c428086ebc7f500200c428086ebc7f500541b421f8042ffffffff0f83428094ebdc037e429880b5e50380220c420010b00542012113200c20022903f80420227c7e2223428094ebdc0380212420022903e8042125200241e8046a41086a29030021260240201f42f898dcf98b527c428086ebc7f5008042017c220ca7417f200c428080808010541b220541027622044520042005467222150d00410021010340200141026a21042005200141046a411e71762206450d0a2004210120062005470d000c0a0b0b42e300420120051b21274200211f0c090b41e9bcc0004133200241a00b6a419cbdc0001038000b41e9bcc0004133200241a00b6a419cbdc0001038000b41e9bcc0004133200241a00b6a419cbdc0001038000b200541081033000b41e9bcc0004133200241a00b6a419cbdc0001038000b41e9bcc0004133200241a00b6a419cbdc0001038000b41e9bcc0004133200241a00b6a419cbdc0001038000b41e9bcc0004133200241a00b6a419cbdc0001038000b20052004411e7176410047210142e300210c0240024020040d00420121134200211f420021100c010b03402001410174220120014101722201200120016c200541002004417e6a2201200120044b1b2204411f71764b1b210120040d000b4200211f0240200141024f0d0042012113420021100c010b42e300210c2001210442002110420121134200211f0340200241c8046a200c4201200441017122011b2010420020011b2013201f10b005200241d8046a200c2010200c201010b005200441034b2106200241d8046a41086a2903002110200241c8046a41086a290300211f20022903d804210c20022903c804211320044101762201210420060d000b0b20104200200141014622041b2121200c420120041b212720150d004100210102400340200141026a21042005200141046a411e71762206450d012004210120062005470d000b0b20052004411e7176410047210142e400210c4201212220040d0142002128420021100c020b200541004721014200212842e400210c42012122420021100c010b03402001410174220120014101722201200120016c200541002004417e6a2201200120044b1b2204411f71764b1b210120040d000b420021280240200141024f0d00420021100c010b42e400210c4200211042012122420021280340200241a8046a200c4201200141017122041b2010420020041b2022202810b005200241b8046a200c2010200c201010b005200141034b2104200241b8046a41086a2903002110200241a8046a41086a290300212820022903b804210c20022903a804212220014101762205210120040d000b200521010b4200212920024198046a200c4201200141014622041b2010420020041b2022202810b0054108212a024002400240200229039804221020024198046a41086a2903002222844200510d0020024188046a2013201f2025202320244280ec94a37c7e7c4280cab5ee01562024a76aad7c220c2026200c202554ad7c222810b005200241f8036a20022903880420024188046a41086a2903002027202110b005200241e8036a20022903f803200241f8036a41086a2903002010202210b105200241d8036a200c20022903e80322107d222b2028200241e8036a41086a2903007d200c201054ad7d222c428094ebdc03420010b105200241c8036a20022903d803220c200241d8036a41086a29030022104280ec94a37c427f10b005200241b8036a200c20102014ad2213420010b005202b20022903c8037c20137e2210428094ebdc0380210c0240201e422088a722040d004100212d4100212e4200212f0c030b20162017422088a74102746a2130201d20044105746a2131200241a8036a20022903b80322132010200c4280ec94a37c7e7c4280cab5ee0156200ca76aad7c220c200241b8036a41086a290300200c201354ad7c428094ebdc03420010b10520024198036a20022903a8032232200241a8036a41086a29030022334280ec94a37c427f10b00520094101200941014b1b2234418094ebdc036e22044101200441014b1b2135200241e00a6aad42808080808004842136200c2002290398037c2137200241c00b6a41086a2138200241c0076a41086a21394100212d4100212e4108212a420021294200212f2016213a201d213b0340203a2030460d0302400240203a2802002204450d0020024188036a203220332034200420342004491b20356ead428094ebdc037e203420356ead8042ffffffff0f83220c420010b005200c20377e2213428094ebdc0380210c200229038803211020024188036a41086a290300211f024002400240024002400240024002400240024002404112102d2204450d002004410029008db941370000200441106a41002f009db9413b0000200441086a4100290095b94137000020024292808080a0023702c40b200220043602c00b203b200241c00b6a1046200241d0056a41186a220520023502c80b42208620023502c00b841000220441186a290000370300200241d0056a41106a2201200441106a290000370300200241d0056a41086a2206200441086a290000370300200220042900003703d00520041031200241e00a6a41186a2005290300370300200241e00a6a41106a2001290300370300200241e00a6a41086a2006290300370300200220022903d0053703e00a024020022802c40b450d0020022802c00b10310b200241c00b6a20361002104102400240024002400240024020022802c00b22050d00410021040c010b20022802c40b2101200220022802c80b3602c407200220053602c00720024180036a200241c0076a102c2002280280030d0320022802c4072206200228028403223c490d03203c417f4c0d1a02400240203c0d004101210441010d010c050b203c107a2204450d02200420022802c0072209203c10ab05211420022006203c6b3602c40720022009203c6a3602c0072014450d040b200241f8026a200241c0076a102c20022802f8020d0220022802fc02213d2001450d00200510310b200241e8026a20102013200c4280ec94a37c7e7c4280cab5ee0156200ca76aad7c220c201f200c201054ad7c2210428094ebdc03420010b105200241d8026a20022903e8022213200241e8026a41086a290300221f4280ec94a37c427f10b0052002203d410020041b22053602c00b200241e4003602c40b200241c8026a2013201f200241c00b6a200541e4004b4102746a2802004180ade2046cad2222420010b005200241c8026a41086a29030020022903c80222132022200c20022903d8027c7e221f201f428094ebdc0380221f4280ec94a37c7e7c4280cab5ee0156201fa76aad7c223e201354ad7c213f02402004450d00203c450d00200410310b200c203e7d22402010203f7d200c203e54ad7d22418450450d0342002125410821144100210141002112420021224200210c420021130c090b203c41011033000b203c450d00200410310b41e9bcc0004133200241a00b6a419cbdc0001038000b200241c00b6a203b10c6024108211442002125200241b8026a20022903c00b220c4201200c420156200241c00b6a41086a290300220c420052200c501b22041b2228200c420020041b2210428094ebdc03420010b10520022802e00b2142200241b8026a41086a290300214320022903b8022144024020022802e80b22040d004100210141002112420021220c050b200241a8026a2028201020444201204442015620434200522043501b22051b22232043420020051b222610b10520024188026a20402041428094ebdc03420010b10520024198026a20402041428094ebdc03420010b20520022903a802220c42ffffffff0f56200241a8026a41086a29030022134200522013501b0d02200ca7450d012042200441306c6a2145200c42ffffffff0f83212720024188026a41086a290300214620022903880221472002290398022148420021254108211441012106410021094100210141002112420021220340200241f8016a2028204220016a2204290300220c2028200c542010200441086a290300220c542010200c511b22051b2010200c20051b2023202610b10520022903f801220c428080808010544100200241f8016a41086a290300501b450d102006417f6a2105200241d0016a20472046200c42ffffffff0f83428094ebdc037e20278042ffffffff0f83220c420010b005200241e0016a200441106a220420022903d001221f200c20487e220c200c428094ebdc0380220c4280ec94a37c7e7c4280cab5ee0156200ca76aad7c2213200241d0016a41086a2903002013201f54ad7c222410c70220022903e001210c20022903e801211f200241c0076a41106a200241e0016a41106a29030022213703002002201f3703c8072002200c3703c00702400240200ca74101470d00427f202220217c2025201f7c221f2025542215ad7c220c2015200c202254200c2022511b22151b2122427f201f20151b21250c010b200c4201520d00200220393602e006200241e0066a10430b200241b00a6a41186a2215200441186a290000370300200241b00a6a41106a220b200441106a290000370300200241b00a6a41086a2211200441086a290000370300200220042900003703b00a0240024020052012470d0020092006200920064b1b2212ad42307e220c422088a70d22200ca722054100480d220240024020010d002005102d21140c010b201420012005102f21140b2014450d010b201420016a2205202437030820052013370300200541106a20022903b00a370300200541186a2011290300370300200541206a200b290300370300200541286a2015290300370300200941026a2109200141306a2101200641016a2106200441206a2045460d050c010b0b200541081033000b411241011033000b200241c0016a20282042290300220c2028200c542010204241086a290300220c542010200c511b22041b2010200c20041b2023202610b10520022903c001428080808010544100200241c0016a41086a290300501b450d0d4180aec00041194184adc00010a401000b200241113602c40720024199aec0003602c00741a2acc00041e000200241c0076a41acaec0001038000b2006417f6a21010b200241b0016a2028201020444201204442015620434200522043501b22041b221f2043420020041b222410b10520022903b001220c428080808010544100200241b0016a41086a290300501b450d01200241a0016a202820022903d00b221320282013542010200241c00b6a41186a29030022135420102013511b22041b2010201320041b201f202410b10520022903a0012210428080808010544100200241a0016a41086a290300501b450d02200ca7450d0320024190016a20402041428094ebdc03420010b10520024180016a200229039001221320024190016a41086a290300221f4280ec94a37c427f10b005200241f0006a2013201f201042ffffffff0f83428094ebdc037e200c42ffffffff0f838042ffffffff0f83220c420010b00520022903702210200c20402002290380017c7e220c200c428094ebdc0380220c4280ec94a37c7e7c4280cab5ee0156200ca76aad7c220c201054ad2110200241f0006a41086a2903002113024020022802e40b450d00204210310b201320107c21130b200241d8006a203b200c203e7c22102013203f7c2010200c54ad7c221f10c7022002290358210c20022903602113200241c00b6a41106a2205200241d8006a41106a2903002228370300200220133703c80b2002200c3703c00b0240200ca74101470d00427f202220287c202520137c22132025542204ad7c220c2004200c202254200c2022511b22041b2122427f201320041b21250c050b200c4201510d030c040b200241113602c40720024199aec0003602c00741a2acc00041e000200241c0076a41acaec0001038000b200241113602c40720024199aec0003602c00741a2acc00041e000200241c0076a41acaec0001038000b4180aec00041194184adc00010a401000b200220383602c007200241c0076a10430b200241c00b6a41186a2206203b41186a2900003703002005203b41106a2900003703002038203b41086a2900003703002002203b2900003703c00b0240202d202e470d00202d41016a2204202d490d15202d41017422092004200920044b1b222e41ffffff1f71202e470d15202e41067422044100480d1502400240202d0d002004102d212a0c010b202a202d4106742004102f212a0b202a450d020b427f202f20227c202920257c22132029542204ad7c220c2004200c202f54200c202f511b22041b212f427f201320041b2129202a202d4106746a2204201f3703082004201037030020042014360210200441186a2001360200200441146a2012360200200420022903c00b37021c200441246a20382903003702002004412c6a2005290300370200200441346a2006290300370200202d41016a212d0b203a41046a213a203b41206a223b2031470d010c040b0b200441081033000b41d0a6c200411941e4a5c20010a401000b200241113602c40720024199aec0003602c00741a2acc00041e000200241c0076a41acaec0001038000b02402017a7450d00201610310b200241e00b6a202f370300200241d80b6a2029370300200241d40b6a202d360200200241c00b6a41106a202e360200200241cc0b6a202a360200200241083a00c00b200241c00b6a41086a220641003a000042002110200241f00b6a4200202c202f7d202b202954ad7d220c202b20297d221f202b56200c202c56200c202c511b22041b2213370300200241e80b6a4200201f20041b221f3703004101211c41014100200241c00b6a10452002202f3703c80b200220293703c00b2002200241c00b6a3602c007200241c0076a1043200241e0066a41086a2204418a9bc100ad4280808080e0028422221001220541086a290000370300200220052900003703e00620051031200241c0076a41086a22012004290300370300200220022903e0063703c007200241c00b6a2020100210410240024020022802c00b22050d004200210c0c010b20062802004110490d02200541086a290000210c2005290000211020022802c40b450d00200510310b200420221001220541086a290000370300200220052900003703e0062005103120012004290300370300200220022903e0063703c0072002427f200c20137c2010201f7c22282010542204ad7c222220042022200c542022200c511b22041b3703c80b2002427f202820041b3703c00b2020201a428080808080028410032002200c427f85201320041b3703c80b20022010427f85201f20041b3703c00b2002200241c00b6a3602c007200241c0076a105f201ea7450d00201d10310b201841e2d5c000ad4280808080a00284220c1001220441086a290000370300200220042900003703e0062004103120192018290300370300200220022903e0063703c007200241c00b6a2008100210410240024020022802c00b2204450d00200241c80b6a2802004104490d012004280000211b20022802c40b450d00200410310b200241e0066a41086a2205200c1001220441086a290000370300200220042900003703e00620041031200241c0076a41086a2005290300370300200220022903e0063703c0072002201b41016a22453602c00b2008201a4280808080c00084100302404117102d2204450d002004410f6a41002900e9ba41370000200441086a41002900e2ba41370000200441002900daba41370000024020044117412e102f2205450d002005201b360017200241d0056a41186a22012005ad4280808080b003841000220441186a290000370300200241d0056a41106a2206200441106a290000370300200241d0056a41086a2209200441086a290000370300200220042900003703d00520041031200241e00a6a41186a2001290300370300200241e00a6a41106a2006290300370300200241e00a6a41086a2009290300370300200220022903d0053703e00a20051031200241e00a6aad428080808080048422261009200241e0066a41086a220441f4d5c000ad4280808080b00484220c1001220541086a290000370300200220052900003703e00620051031200241c0076a41086a22012004290300370300200220022903e0063703c007200241c00b6a2008100210410240024020022802c00b2205450d00200241c00b6a41086a28020041034d0d0120022802c40b450d00200510310b2004200c1001220541086a290000370300200220052900003703e0062005103120012004290300370300200220022903e0063703c0072002200a3602c00b2008201a4280808080c0008410030240024002400240024002400240024002400240204541c11f490d00200241e0066a41086a22054187d7c000ad4280808080a002841001220441086a290000370300200220042900003703e00620041031200241c0076a41086a2005290300370300200220022903e0063703c007200241c00b6a2008100210410240024020022802c00b223b0d00410021150c010b20022802c40b212d2002200241c00b6a41086a2802003602e4062002203b3602e006200241d0006a200241e0066a102c20022802500d1b20022802e40622094178712204417f4c0d1220022802542112024002402009410376220b0d00410421150c010b2004102d2215450d0b0b02402012450d004100211441002106410021010340200241003602e00a02400240024020094104490d0020022009417c6a22093602e406200220022802e006220441046a3602e00620042800002111200241003602e00a20094104490d00200141016a210520022009417c6a22093602e4062002200441086a3602e006200428000421042001200b470d0220142005201420054b1b220b41ffffffff0171200b470d21200b410374224241004e0d010c210b200b450d1f201510310c1f0b0240024020010d002042102d21150c010b201520062042102f21150b2015450d0c0b201520066a22012011360200200141046a2004360200201441026a2114200641086a21062005210120122005470d000b0b2015450d1b2012ad422086200bad84210c202d450d00203b10310b2015410420151b21120240200c420020151b220c4220882210a72204200ca7470d00200441016a22052004490d1c2010a722064101742201200520052001491b220541ffffffff01712005470d1c200541037422014100480d1c0240024020040d002001102d21120c010b201220064103742001102f21120b2012450d08200c422088a721042005ad210c0b201220044103746a2205200a36020420052045360200200c42ffffffff0f83210c0240200441016a22092004490d00201b41c1606a2101200441ffffffff017141016a2106410021052012210402400340200428020020014f0d01200441086a21042006200541016a2205470d000b0b20092005490d07200920056b2211450d0002402005450d002012201220054103746a201141037410ac051a0b20122802042142200241e0066a41086a220b41d5bfc400ad4280808080b00284221f1001220441086a290000370300200220042900003703e00620041031200241c0076a41086a2245200b290300370300200220022903e0063703c007200241c00b6a200241c0076a109d014101210520022902c40b21130240024020022802c00b22044101460d00200441014621050c010b2013422088a7223b20422042203b4b1b22152013a72201490d000240201520014d0d00200241f0056aad428080808080048421100340411a102d2204450d09200441186a41002f00f2c7423b0000200441106a41002900eac742370000200441086a41002900e2c742370000200441002900dac7423700002004411a4134102f2205450d082005200136001a200241d0056a41186a22062005ad4280808080e003841000220441186a290000370300200241d0056a41106a2209200441106a290000370300200241d0056a41086a2214200441086a290000370300200220042900003703d00520041031200241f0056a41186a2006290300370300200241f0056a41106a2009290300370300200241f0056a41086a2014290300370300200220022903d0053703f0052005103120101009200141016a2204210120152004470d000b0b2042203b4921052013428080808070832015ad8421130b200c2011ad42208684210c200b201f1001220441086a290000370300200220042900003703e006200410312045200b290300370300200220022903e0063703c007024020050d002007428080808080028410090c010b4108102d2204450d04200420133e0000200420134220883e0004200742808080808002842004ad42808080808001841003200410310b200241e0066a41086a22054187d7c000ad4280808080a002841001220441086a290000370300200220042900003703e00620041031200241c0076a41086a2005290300370300200220022903e0063703c007024020120d00200810090c010b200241003602c80b200242013703c00b200c422088a72204200241c00b6a106f0240024020040d0020022802c80b210420022802c40b210120022802c00b21050c010b201220044103746a2145410020022802c80b22146b210620022802c40b2101410021040340201420046a2109201220046a2215280200210b02400240200120066a4104490d0020022802c00b21050c010b200941046a22052009490d1e200141017422112005201120054b1b22114100480d1e0240024020010d002011102d21050c010b20022802c00b20012011102f21050b2005450d05200220113602c40b200220053602c00b201121010b2002200941046a22113602c80b200520146a20046a200b360000201541046a280200210b0240200120066a417c6a41034b0d00201141046a22422011490d1e200141017422112042201120424b1b22114100480d1e0240024020010d002011102d21050c010b200520012011102f21050b2005450d04200220113602c40b200220053602c00b201121010b2002200941086a3602c80b200520146a20046a41046a200b360000200641786a2106200441086a2104201541086a2045470d000b201420046a21040b200ca7210620082004ad4220862005ad84100302402001450d00200510310b2006450d00201210310b41002114200241003602a0052002420437039805200241d0056a41186a2205419fb9c100ad4280808080a003841000220441186a290000370300200241d0056a41106a2201200441106a290000370300200241d0056a41086a2206200441086a290000370300200220042900003703d00520041031200241c00b6a41186a22042005290300370300200241c00b6a41106a2001290300370300200241c00b6a41086a2006290300370300200220022903d0053703c00b200241a8056a200241c00b6a41201052200241ec066a200241a8056a41086a290300370200200241f4066a200241a8056a41106a290300370200200241fc066a200241a8056a41186a29030037020020024184076a200241a8056a41206a2d00003a0000200220022903a8053702e406200220024198056a3602e006200241c00b6a200241e0066a41047210f0010240024002400240024002400240024002400240024002400240024002400240024020022802e00b220b0d00410121344100212e0c010b200220022f01c00b22053b01b00a200220022d00c20b22013a00b20a200220022900d30b3703c007200220042900003700c50720022802e40b211120022800c30b210620022800c70b210920022800cb0b211420022800cf0b2115200220053b01b80b200220013a00ba0b200220022900d30b3703a80b200220042900003700ad0b200241a4066a41026a220520022d00b20a3a0000200220022f01b00a3b01a406200220022903c00737039006200220022900c50737009506200220153600ff05200220143600fb05200220093600f705200220063600f305200220022d00c20b3a00f205200220022f01c00b3b01f005200241f0056a41186a2004290000370000200220022900d30b370083064120102d2204450d0f200420022f01a4063b0000200441026a20052d00003a0000200420022903900637001320042009360007200420063600032004201536000f2004201436000b200441186a200229009506370000200220022f01f0053b01bc06200220022d00f2053a00be0620022900f305210c20022900fb0521102002200241f0056a41136a224241056a2900003700ad06200220422900003703a80620022802e0062105200220103700db052002200c3700d305200220022d00be063a00d205200220022f01bc063b01d005200241d0056a41186a221220022900ad06370000200220022903a8063700e305024020052802082201200541046a280200470d00200141016a22452001490d2b2001410174223b2045203b20454b1b2245ad422c7e220c422088a70d2b200ca7223b4100480d2b0240024020010d00203b102d21010c010b20052802002001412c6c203b102f21010b2001450d0f20052001360200200541046a2045360200200528020821010b200241d0056a41086a290300210c200241d0056a41106a29030021102012290300211320022903d005211f20052802002001412c6c6a2201428180808010370224200120043602202001201f370200200141186a2013370200200141106a2010370200200141086a200c3702002005200528020841016a360208200241a0076a41026a200241a4066a41026a2d00003a0000200220022f01a4063b01a00720022002290095063700e50a20022002290390063703e00a02402011450d00200b10310b4120102d2234450d0d203420022f01a0073b00002034201536000f2034201436000b2034200936000720342006360003203420022903e00a370013203441186a20022900e50a370000203441026a200241a0076a41026a2d00003a0000200241c0076a41206a200241e0066a41206a290300370300200241c0076a41186a200241e0066a41186a290300370300200241c0076a41106a200241e0066a41106a290300370300200241c0076a41086a200241e0066a41086a290300370300200220022903e0063703c007200241c00b6a200241c0076a410472223810f001024020022802e00b223c0d00410121144101212e0c010b200241d0056a41136a212d200241c00b6a41136a21064102214541202112410121144101212e0340200220022f01c00b22053b01a007200220022d00c20b22013a00a207200220062900003703e00a2002200641056a22042900003700e50a20022802e40b213a20022800c30b210920022800c70b211520022800cb0b210b20022800cf0b2111200220053b01b80b200220013a00ba0b200220062900003703a80b200220042900003700ad0b200241a4066a41026a223b20022d00a2073a0000200220022f01a0073b01a406200220022903e00a37039006200220022900e50a3700950620422006290000370000204241056a22052004290000370000200220113600ff052002200b3600fb05200220153600f705200220093600f305200220022d00c20b3a00f205200220022f01c00b3b01f0054120102d2204450d0d200420022f01a4063b0000200441026a203b2d00003a0000200420022903900637001320042015360007200420093600032004201136000f2004200b36000b200441186a200229009506370000200220022f01f0053b01bc06200220022d00f2053a00be0620022900f305210c20022900fb052110200220052900003700ad06200220422900003703a80620022802c0072105200220103700db052002200c3700d305200220022d00be063a00d205200220022f01bc063b01d005202d41056a20022900ad06370000202d20022903a806370000024020052802082201200541046a2239280200470d00200141016a222a2001490d2c20014101742235202a2035202a4b1b2235ad422c7e220c422088a70d2c200ca7222a4100480d2c0240024020010d00202a102d21010c010b20052802002001412c6c202a102f21010b2001450d0d2005200136020020392035360200200528020821010b200241d0056a41086a290300210c200241d0056a41106a2903002110200241d0056a41186a290300211320022903d005211f20052802002001412c6c6a2201428180808010370224200120043602202001201f370200200141186a2013370200200141106a2010370200200141086a200c3702002005200528020841016a360208200220022f01a4063b01a00a2002203b2d00003a00a20a20022002290095063700b50a20022002290390063703b00a0240203a450d00203c10310b200220022f01a00a3b01e00a200220022d00a20a3a00e20a200220022903b00a3703c00b200220022900b50a3700c50b02402014202e470d00201441016a22042014490d2c20452004204520044b1b222e41ffffff3f71202e470d2c202e41057422044100480d2c0240024020140d002004102d21340c010b203420122004102f21340b2034450d030b203420126a220420022f01e00a3b000020022d00e20a21052004410f6a20113600002004410b6a200b360000200441076a2015360000200441036a2009360000200441026a20053a0000200441136a20022903c00b370000200441186a20022900c50b370000200241c00b6a203810f001204541026a2145201241206a2112201441016a211420022802e00b223c0d000b0b200241d0056a41186a220541e2b9c100ad4280808080a003841000220441186a290000370300200241d0056a41106a2201200441106a290000370300200241d0056a41086a2206200441086a290000370300200220042900003703d00520041031200241c00b6a41186a2005290300370300200241c00b6a41106a2001290300370300200241c00b6a41086a2006290300370300200220022903d0053703c00b200241c0076a200241c00b6a41201052200241c0076a41206a2d0000210420022903c007210c20022903c807211020022903d00721132002200241c0076a41186a290300221f3703d80b200220133703d00b200220103703c80b2002200c3703c00b200241e0066a41176a2205201f370000200241e0066a41106a220120022900d10b370300200241e0066a41086a220620022900c90b370300200220022900c10b3703e0060240200ca741ff01714101470d00200241e00a6a41176a2005290000370000200241e00a6a41106a2001290300370300200241e00a6a41086a2006290300370300200220022903e0063703e00a200220043a00ff0a4112102d2204450d0a200441002900d0b941370000200441106a41002f00e0b9413b0000200441086a41002900d8b94137000020024292808080a0023702e406200220043602e006200241e00a6a200241e0066a1046200241c00b6a41186a220520023502e80642208620023502e006841000220441186a290000370300200241c00b6a41106a2201200441106a290000370300200241c00b6a41086a2206200441086a290000370300200220042900003703c00b20041031200241d0056a41186a2005290300370300200241d0056a41106a2001290300370300200241d0056a41086a2006290300370300200220022903c00b3703d005024020022802e406450d0020022802e00610310b200241a80b6a200241d0056aad221042808080808004841002104120022802a80b2215450d0920022802ac0b21112002200241a80b6a41086a2802003602940b200220153602900b200241f0056a200241900b6a10890120022802f0052212450d2820022802f405214202400240024020022802940b2204450d00200241f0056a41086a350200210c20022004417f6a22013602940b200220022802900b220941016a22063602900b20092d0000220441014b0d004100210b0240024020040e020100010b410021040340024020012004470d00200241003602940b0c030b2002200920046a41026a3602900b200441016a2205210420054120470d000b2002200120056b22013602940b4101210b200920056a41016a21060b024020010d00200241023a00e0060c010b20022001417f6a22013602940b2002200641016a3602900b024020062d0000220441014b0d00024020040e020300030b41002104200241003a00e00b0340024020012004470d00200241003602940b0240200441ff0171450d00200241003a00e00b0b200241023a00e0060c030b200241c00b6a20046a200620046a220541016a2d00003a00002002200541026a3602900b2002200441016a22053a00e00b2005210420054120470d000b200241a0076a41176a2204200241c00b6a41176a290000370000200241a0076a41106a2206200241c00b6a41106a2903003703002002200120056b3602940b200241013a00e006200220022903c00b3700e1062002200241c80b6a2903003700e906200220062903003700f106200220042900003700f80620022d00df0b21490c030b200241023a00e0060b2042450d2a201210310c2a0b200241003a00e0060b200b4102460d2820022d00ff06210920022d00fe06214520022d00fd06213b20022d00fc06212d20022d00fb06213a20022d00fa06213c20022d00f906213920022d00f806212a20022d00f706213820022d00f606213520022d00f506213020022d00f406213d20022d00f306213120022d00f206211820022d00f106210a20022d00f006211b20022d00ef06211920022d00ee06211d20022d00ed06214a20022d00ec06214b20022d00eb06214c20022d00ea06214d20022d00e906214e20022d00e806214f20022d00e706215020022d00e606215120022d00e506215220022d00e406215320022d00e306215420022d00e206215520022d00e106215620022d00e006210602402011450d00201510310b200241b00a6a41086a2257200241e00a6a41086a2258290300370300200241b00a6a41106a2259200241e00a6a41106a225a290300370300200241b00a6a41186a225b200241e00a6a41186a225c290300370300200220022903e00a3703b00a2012450d00200c4220862042ad84210c201042808080808004842113200241e0066a410172215d200241c00b6a41017221110340200241c00b6a41186a2201205b290300370300200241c00b6a41106a22152059290300370300200241c00b6a41086a220b2057290300370300200220022903b00a3703c00b024020022802a0052205200228029c05470d00200541016a22042005490d2c200541017422422004204220044b1b2242ad422c7e2210422088a70d2c2010a7225e4100480d2c0240024020050d00205e102d21040c010b2002280298052005412c6c205e102f21040b2004450d0a2002204236029c0520022004360298050b2002280298052005412c6c6a2204200c37022420042012360220200420022903c00b370200200441086a200b290300370200200441106a2015290300370200200441186a20012903003702002002200541016a3602a005200220063a00c00b200220563a00c10b200220553a00c20b200220543a00c30b200220533a00c40b200220523a00c50b200220513a00c60b200220503a00c70b2002204f3a00c80b2002204e3a00c90b2002204d3a00ca0b2002204c3a00cb0b2002204b3a00cc0b2002204a3a00cd0b2002201d3a00ce0b200220193a00cf0b2002201b3a00d00b2002200a3a00d10b200220183a00d20b200220313a00d30b2002203d3a00d40b200220303a00d50b200220353a00d60b200220383a00d70b2002202a3a00d80b200220393a00d90b2002203c3a00da0b2002203a3a00db0b2002202d3a00dc0b2002203b3a00dd0b200220453a00de0b200220093a00df0b200241e0066a41176a2204201141176a290000370000200241e0066a41106a2205201141106a290000370300200241e0066a41086a2209201141086a290000370300200220112900003703e006200641ff01714101470d01200241e00a6a41176a2004290000370000205a200529030037030020582009290300370300200220022903e0063703e00a200220493a00ff0a4112102d2204450d08200441002900d0b941370000200441106a41002f00e0b9413b0000200441086a41002900d8b94137000020024292808080a0023702e406200220043602e006200241e00a6a200241e0066a1046200120023502e80642208620023502e006841000220441186a2900003703002015200441106a290000370300200b200441086a290000370300200220042900003703c00b20041031200241d0056a41186a2001290300370300200241d0056a41106a2015290300370300200241d0056a41086a200b290300370300200220022903c00b3703d005024020022802e406450d0020022802e00610310b200241a80b6a20131002104120022802a80b2242450d0720022802ac0b215e200220022802b00b3602940b200220423602900b200241f0056a200241900b6a10890120022802f0052212450d2820022802f405215f02400240024020022802940b2204450d0020023502f805210c20022004417f6a22013602940b200220022802900b220941016a22063602900b20092d0000220441014b0d00410021450240024020040e020100010b410021040340024020012004470d00200241003602940b0c030b2002200920046a41026a3602900b200441016a2205210420054120470d000b2002200120056b22013602940b41012145200920056a41016a21060b024020010d00200241023a00e0060c010b20022001417f6a22013602940b2002200641016a3602900b024020062d0000220441014b0d00024020040e020300030b41002104200241003a00e00b0340024020012004470d00200241003602940b0240200441ff0171450d00200241003a00e00b0b200241023a00e0060c030b200241c00b6a20046a200620046a220541016a2d00003a00002002200541026a3602900b2002200441016a22053a00e00b2005210420054120470d000b200241a0076a41176a2204200241c00b6a41176a290000370000200241a0076a41106a22062015290300370300200241a0076a41086a200b2903002210370300200220022903c00b221f3703a0072002200120056b3602940b20022d00df0b2149205d201f370000205d41086a2010370000205d41106a2006290300370000205d41176a2004290000370000200241013a00e0060c030b200241023a00e0060b205f450d2a201210310c2a0b200241003a00e0060b20454102460d2820022d00ff06210920022d00fe06214520022d00fd06213b20022d00fc06212d20022d00fb06213a20022d00fa06213c20022d00f906213920022d00f806212a20022d00f706213820022d00f606213520022d00f506213020022d00f406213d20022d00f306213120022d00f206211820022d00f106210a20022d00f006211b20022d00ef06211920022d00ee06211d20022d00ed06214a20022d00ec06214b20022d00eb06214c20022d00ea06214d20022d00e906214e20022d00e806214f20022d00e706215020022d00e606215120022d00e506215220022d00e406215320022d00e306215420022d00e206215520022d00e106215620022d00e0062106200c422086210c205fad21100240205e450d00204210310b200c201084210c205720582903003703002059205a290300370300205b205c290300370300200220022903e00a3703b00a20120d000b0b200241e0066a41086a220441afd5c000ad4280808080e002841001220541086a290000370300200220052900003703e00620051031200241c0076a41086a22012004290300370300200220022903e0063703c007200241c00b6a2008100210410240024020022802c00b22050d00410021300c010b200241c00b6a41086a2802004104490d052005280000213020022802c40b450d00200510310b200441c5d5c000ad4280808080d003841001220541086a290000370300200220052900003703e0062005103120012004290300370300200220022903e0063703c007200241c00b6a20081002104102400240024020022802c00b22050d00410421040c010b200241c80b6a2802004104490d0520052800002104024020022802c40b450d00200510310b4101215d20044102490d010b2004215d0b200228029c05215e200228029805215920022802a0052155200242003702940b20024198bfc0003602900b205520146a2258ad42e0007e220c422088a70d1f200ca7225b417f4c0d1f4108214502400240205b0d0041082156410821570c010b205b102d2256450d03205621570b410021424100215a024020144105742204450d002004410575225aad42d8007e220c422088a70d2a200ca722054100480d2a2005102d2245450d020b0240024002400240024002402014450d00203420046a213d200441606a410576215f20024190076a213b200241c00b6a4102722150200241d0056a41136a2118200241f0056a41136a214f200241c00b6a41286a210a2045211441002112203421150340200220152f00003b01b80b2002201541026a2d00003a00ba0b2015280007212d2015280003213a201528000b213c2002201541186a22042900003700ad0b200220152900133703a80b201528000f2139201541086a290000210c201541106a290000211020152900002113200241e00a6a41186a222a2004290000370300200241e00a6a41106a22382010370300200241e00a6a41086a2235200c370300200220133703e00a0240024002400240024020022802900b22094198bfc000460d0020022802940b210b0c010b200241c0076a410041e00210aa051a200a4100360200200241c00b6a41206a22044200370300200241c00b6a41186a22054200370300200241c00b6a41106a22014200370300200241c00b6a41086a22064200370300200242003703c00b419403102d2209450d014100210b200941003b010620094100360200200941086a200241c0076a41e00210ab051a20094190036a200a28020036020020094188036a200429030037020020094180036a2005290300370200200941f8026a2001290300370200200941f0026a2006290300370200200920022903c00b3702e802200241003602940b200220093602900b0b201541206a211502400340200941086a2105200941066a214220092f010622114105742104410021010240024003402004450d01200241e00a6a2005412010ad052206450d02200441606a2104200141016a2101200541206a21052006417f4a0d000b2001417f6a21110b200b450d02200b417f6a210b200920114102746a4194036a28020021090c010b0b200920014102746a41e8026a20123602000c030b200241a0076a41186a202a290300220c370300200241a0076a41106a20382903002210370300200241a0076a41086a20352903002213370300200220022903e00a221f3703a007200220022802980b41016a3602980b202a200c37030020382010370300203520133703002002201f3703e00a024002400240024020422f01002205410b490d00200241c0076a410041e00210aa051a200a4100360200200241c00b6a41206a22044200370300200241c00b6a41186a22054200370300200241c00b6a41106a22014200370300200241c00b6a41086a22064200370300200242003703c00b419403102d2231450d03203141003b010620314100360200203141086a200241c0076a41e00210ab05210b20314190036a200a28020036020020314188036a200429030037020020314180036a2005290300370200203141f8026a2001290300370200203141f0026a2006290300370200203120022903c00b3702e802200241f0056a41086a2251200941d0016a290000370300200241f0056a41106a2252200941d8016a290000370300200241f0056a41186a2253200941e0016a290000370300200220092900c8013703f005200928028003211b200b200941e8016a20092f010641796a220441057410ab052101203141e8026a20094184036a200441027410ab052106200941063b0106203120043b0106200220022f01f0053b01bc06200220022d00f2053a00be062002204f2900003703a8062002204f41056a22542900003700ad0620022800f305211920022800f705211d20022800fb05214a20022800ff05214b20114107490d01203141066a214220012011417a6a220b4105746a2001201141796a22054105746a2201200441ffff037120056b41057410ac051a200141186a202a290300370000200141106a2038290300370000200141086a2035290300370000200120022903e00a3700002006200b4102746a2101200620054102746a21040c020b200941086a2204201141016a22014105746a200420114105746a2204200520116b41057410ac051a200441186a202a290300370000200441106a2038290300370000200441086a2035290300370000200420022903e00a370000200941e8026a220420014102746a200420114102746a220420092f010620116b41027410ac051a20042012360200200920092f010641016a3b01060c050b200941086a2204201141016a22054105746a200420114105746a220420422f010020116b41057410ac051a200441186a202a290300370000200441106a2038290300370000200441086a2035290300370000200420022903e00a370000200941e8026a220120114102746a2104200120054102746a2101201121050b2001200420422f010020056b41027410ac051a20042012360200204220422f010041016a3b0100200241d0056a41026a20022d00be0622043a0000200241a4066a41026a223820043a0000200220022900ad063700b50a200220022903a8063703b00a200220022f01bc0622043b01d005200220022900b50a37009506200220022903b00a37039006200220043b01a4062009280200220b450d0220092f010421420340200241e00a6a41026a223520382d00003a0000200220022f01a4063b01e00a20022002290390063703c00720022002290095063700c507204241ffff0371210902400240024002400240200b2f01062204410b490d002050410041be0310aa051a41c403102d2206450d0320064100360200200641046a200241c00b6a41c00310ab051a2053200b41e0016a2900003703002052200b41d8016a2900003703002051200b41d0016a2900003703002002200b41c8016a2900003703f005200b4180036a280200214c200641086a200b41e8016a200b2f0106220541796a220441057410ab05214d200641e8026a200b4184036a200441027410ab05214e20064194036a200b41b0036a2005417a6a221141027410ab05212a200b41063b0106200620043b010602402011450d0041002104202a210503402005280200220120043b010420012006360200200541046a21052011200441016a2204470d000b0b200220022d00f20522043a00be06200220022f01f00522053b01bc062002204f2900003703a806200220542900003700ad0620022900f305210c20022900fb052110201820022903a806370000201841056a221120022900ad06370000200220043a00d205200220053b01d005200220103700db052002200c3700d305204241ffff037122054107490d01204d2009417a6a22014105746a204d200941796a22044105746a220520062f010620046b41057410ac051a200541186a20022900c5073700002005204b36000f2005204a36000b2005201d36000720052019360003200541026a20352d00003a0000200520022f01e00a3b0000200520022903c007370013204e200141027422056a204e20044102746a224220062f0106223520046b41027410ac051a2042201b3602002006203541016a22423b010620094102742235202a6a416c6a202a20056a2205204241ffff037120016b41027410ac051a20052031360200200120062f010622094b0d02200620356a41fc026a2105034020052802002201200441016a22043b010420012006360200200541046a210520042009490d000c030b0b200b41086a2205200941016a22014105746a200520094105746a2205200420096b41057410ac051a200541186a20022900c5073700002005204b36000f2005204a36000b2005201d36000720052019360003200541026a20352d00003a0000200520022f01e00a3b0000200520022903c007370013200b41e8026a2204200141027422056a2004200941027422066a2204200b2f0106221120096b41027410ac051a2004201b360200200b201141016a22043b01062006200b4194036a22116a41086a201120056a2205200441ffff037120016b41027410ac051a200520313602002009200b2f010622064f0d08200b2001417f6a22044102746a4198036a2105034020052802002201200441016a22043b01042001200b360200200541046a210520042006490d000c090b0b200b41086a2204200941016a22014105746a200420094105746a2204200b2f010620096b41057410ac051a200441186a20022900c5073700002004204b36000f2004204a36000b2004201d36000720042019360003200441026a20352d00003a0000200420022f01e00a3b0000200420022903c007370013200b41e8026a22422001410274222a6a2042200941027422046a2242200b2f0106223520096b41027410ac051a2042201b360200200b203541016a22423b01062004200b4194036a22356a41086a2035202a6a222a204241ffff037120016b41027410ac051a202a20313602002005200b2f010622014f0d00200b20046a4198036a2104034020042802002205200941016a22093b01042005200b360200200441046a210420012009470d000b0b203820022d00d2053a0000200220022f01d0053b01a4062002201829000037039006200220112900003700950620022800d305211920022800d705211d20022800db05214a20022800df05214b200b28020022040d0120062131204c211b0c050b41c40341041033000b200b2f010421422004210b204c211b200621310c000b0b41940341041033000b41940341041033000b2050410041be0310aa051a41c403102d2204450d0320044100360200200441046a200241c00b6a41c00310ab051a200420022802900b220536029403200220043602900b200220022802940b41016a3602940b200541003b010420052004360200200420042f010622014105746a220541086a20022f01a4063b00002005410a6a20382d00003a0000200541176a204b360000200541136a204a3600002005410f6a201d3600002005410b6a20193600002005411b6a200229039006370000200541206a20022900950637000020044194036a200141016a22054102746a2031360200200420014102746a41e8026a201b360200200420053b0106203120053b0104203120043602000b203b20022f01b80b3b0100203b41026a20022d00ba0b3a0000200241e0066a41086a4200370300200241e0066a41106a4200370300200241e0066a41186a4200370300200241e0066a41206a4200370300200241e0066a41286a4200370300200242003703e006201441086a4200370300201441106a4200370300201441186a4200370300201441206a4200370300201441286a4200370300201442003703002014412f6a200241e0066a412f6a2800003600002014203936003f2014203c36003b2014202d3600372014203a360033201441c8006a20022900ad0b370000201420022903a80b370043201441003a0050201241016a2112201441d8006a21142015203d470d000b205f41016a21420b0240202e450d00203410310b02402042205d490d000240024020582055412c6c2204412c6d2205490d002058211b0c010b205841017422012005200120054b1b221bad42e0007e220c422088a70d30200ca722054100480d300240024020580d002005102d21560c010b2056205b2005102f21560b2056450d03205621570b205920046a210a024020550d00410021352059212e0c240b2059210420562134410021350340200241a0076a41186a2205200441186a290200370300200241a0076a41106a2201200441106a290200370300200241a0076a41086a2206200441086a290200370300200220042902003703a0072004412c6a212e2004280220222a450d24200441286a2802002111200441246a2802002138200241c0076a41186a223d2005290300370300200241c0076a41106a22312001290300370300200241c0076a41086a22182006290300370300200220022903a0073703c007200241c0006a200241c0076a10c8022011ad42c8007e220c422088a70d26200ca72204417f4c0d26200229034021220240024020040d004108213b0c010b2004102d223b450d050b0240024020110d0041002111410021120c010b202a20114105746a213941002112202a21140340201441086a290000210c201441106a290000211020142900002113200241c00b6a41186a222d201441186a290000370300200241c00b6a41106a223a2010370300200241c00b6a41086a223c200c370300200220133703c00b201441206a2114200241900b6a210420022802940b2115024003402004280200220941086a210520092f0106220b4105742104410021010240024003402004450d01200241c00b6a2005412010ad052206450d02200441606a2104200141016a2101200541206a21052006417f4a0d000b2001417f6a210b0b2015450d022015417f6a21152009200b4102746a4194036a21040c010b0b2042200920014102746a41e8026a220528020022044d0d082045200441d8006c6a2204427f2004290320220c20227c22102010200c542201200441286a220429030022132001ad7c221f2013542010200c5a1b22011b3703202004427f201f20011b370300200241d0056a41186a2201202d290300370300200241d0056a41106a2206203a290300370300200241d0056a41086a2209203c290300370300200220022903c00b3703d005200528020021050240024020122011460d00201221040c010b201141016a22042011490d34201141017422152004201520044b1b2215ad42c8007e220c422088a70d34200ca722044100480d340240024020110d002004102d213b0c010b203b201141c8006c2004102f213b0b203b450d0a20112104201521110b203b200441c8006c6a2204420037030020042005360220200441186a4200370300200441106a4200370300200441086a4200370300200420022903d0053702242004412c6a2009290300370200200441346a20062903003702002004413c6a2001290300370200201241016a21120b20142039470d000b0b02402038450d00202a10310b200241f0056a41186a2204203d290300370300200241f0056a41106a22052031290300370300200241f0056a41086a22012018290300370300200220022903c0073703f005203442003703082034202237030020344200370310203441186a4200370300203441286a42003703002034420137032020342012360238203420113602342034203b360230203420022903f00537023c203441c4006a2001290300370200203441cc006a2005290300370200203441d4006a2004290300370200203541016a2135203441e0006a2134202e2104202e200a470d000c250b0b0240205a450d00204510310b02402058450d00205610310b20022802900b20022802940b20022802980b10c90202402055450d002055412c6c2105205941206a210403400240200441046a280200450d00200428020010310b2004412c6a2104200541546a22050d000b0b205e450d26205910310c260b41c40341041033000b200541081033000b200441081033000b41e49cc40020042042104b000b200441081033000b200441011033000b200541081033000b205b41081033000b41e9bcc0004133200241a00b6a419cbdc0001038000b41e9bcc0004133200241a00b6a419cbdc0001038000b4199d7c00041dd0010bf01000b411241011033000b205e41041033000b4199d7c00041dd0010bf01000b411241011033000b202a41041033000b412041011033000b412041011033000b203b41041033000b412041011033000b201141011033000b201141011033000b410841011033000b413441011033000b411a41011033000b41cfe9c300411c419cdec40010a401000b200141041033000b204241041033000b200441041033000b41e9bcc0004133200241a00b6a419cbdc0001038000b412e41011033000b411741011033000b41e9bcc0004133200241a00b6a419cbdc0001038000b41e9bcc0004133200241a00b6a419cbdc0001038000b202e200a460d000340202e41206a2802002205450d01202e412c6a21040240202e41246a280200450d00200510310b2004212e200a2004470d000b0b0240205e450d00205910310b2030ad42307e220c422088a70d00200ca72204417f4c0d0002400240024020040d004108213c0c010b2004102d223c450d010b2030412c6c2204417f4c0d0102400240024020040d004104213d0c010b2004102d223d450d010b4100213402402042203020422030491b22310d0020302160410021180c040b204541a87f6a2138204241d8006c212a2057203541e0006c6a212d20302139410021184100212e034002402042450d00202a21052045210403400240200441d0006a2d00000d0002400240200441206a2903002210200441286a29030022138450450d004200210c427f2110427f21130c010b427f210c200241306a427f427f2010201310b105200241306a41086a2903002113200229033021100b2004201037030020042013370308200441106a200c370300200441186a200c3703000b200441d8006a2104200541a87f6a22050d000b0b2057210602402035450d0002400340024020062802382204450d00200441c8006c2101200628023041206a210403402042200428020022054d0d0302402045200541d8006c6a22052d00500d002005290320220c200541286a290300221084500d00200241c00b6a2006290310200641186a2903002006290300200641086a290300200c201010ca0220052005290300220c427f200c427f20022903c80b20022802c00b41014622091b22137c22102010200c542214200541086a2215290300220c427f200241c00b6a41106a29030020091b221f7c2014ad7c2210200c542010200c511b22091b2013201f845022141b3703002015200c427f201020091b20141b3703000b200441c8006a2104200141b87f6a22010d000b0b200641e0006a2206202d460d020c000b0b41f49cc40020052042104b000b202e41016a212e202a2104203821010340024020040d00203921600c060b200441a87f6a2104200141a8016a2106200141d8006a2205210120062d00000d000b02402004450d00200541d8006a2101200541086a2903002113200541186a290300210c200541106a2903002110200529030021244100210603400240200141d0006a2d00000d00200141086a290300211f200141106a2903002122200141186a290300212820012903002125200220053602f005200220013602a0070240024002402010202285200c20288584500d002010200c8450450d01410121050c020b417f20242025852013201f858442005220242025542013201f542013201f511b1b21050c010b0240202220288450450d0041ff0121050c010b200241e0066a2024201310cb02200241c0076a2022202810cb02200241c00b6a41086a2205200241e0066a41086a2209280200360200200220022903e0063703c00b200241b00a6a200241c00b6a200241c0076a10cc02024020022802c407450d0020022802c00710310b200241e0066a2025201f10cb02200241c0076a2010200c10cb0220052009280200360200200220022903e0063703c00b200241e00a6a200241c00b6a200241c0076a10cc02024020022802c407450d0020022802c00710310b200241b00a6a200241e00a6a10cd022105024020022802e40a450d0020022802e00a10310b20022802b40a450d0020022802b00a10310b201f2013200541ff017141014622051b21132025202420051b21242028200c20051b210c2022201020051b2110200241a0076a200241f0056a20051b28020021050b200141d8006a21012004200641d8006a2206470d000b20050d00203921600c050b200541013a005002402035450d002005410c6a2112200541306a213b205721010340200141e0006a213a024020012802382206450d0020012802302104200641c8006c210603400240024020122004460d00200441246a203b412010ad050d010b200141186a2209290300211f200541086a2214290300210c200129031021132005290300211020052903102122200441186a200541186a2215290300370300200441106a20223703002004200c4200200c201f7d2010201354ad7d2222201020137d22282010562022200c562022200c511b220b1b2013201f845022111b3703082004201042002028200b1b20111b3703002014290300210c201529030021102005290300211320012005290310370320200141286a2010370300200120133703102009200c3703000b200441c8006a2104200641b87f6a22060d000b0b203a2101203a202d470d000b0b200220052f00303b01a00a2002200541326a2d00003a00a20a200220052900433703b00a2002200541c8006a2900003700b50a200541286a290300210c2005413f6a28000021012005413b6a2800002106200541376a2800002109200541336a28000021142005290320211002400240024020182039460d00203921600c010b203941016a22042039490d0f203941017422052004200520044b1b2260ad42307e2213422088a70d0f2013a722044100480d0f0240024020390d002004102d213c0c010b203c203941306c2004102f213c0b203c450d0120392118206021390b20022d00a20a210520022f01a00a2115203c201841306c6a2204200136000f2004200636000b2004200936000720042014360003200420153b0100200441026a20053a000020042010370320200441286a200c370300200420022903b00a370013200441186a20022900b50a370000201841016a2118202e20314f0d050c010b0b200441081033000b200441041033000b200441081033000b1032000b02402035450d002057203541e0006c6a2131201841306c2139200241c0076a41186a212e200241c0076a41106a212a200241c0076a41086a2138410021342057210b0340202e200b41d4006a290000370300202a200b41cc006a2900003703002038200b41c4006a2900003703002002200b29003c3703c0070240200b2802382204450d00200b2802302211200441c8006c6a213a410021124104214241002115024002400240024003402011221441246a2101201441c8006a21114100210620392105203c2104024003402005450d01024020012004460d0020042001412010ad052109200641016a2106200541506a2105200441306a210420090d010b0b024002400240200b290320220c2014290310221085200b41286a22052903002213201441186a2201290300221f8584500d00200241e00a6a200b290310200b41186a29030010cb02200241e0066a2010201f10cb02200241c00b6a41086a2204200241e00a6a41086a2206280200360200200220022903e00a3703c00b200241a0076a200241c00b6a200241e0066a10cc02024020022802e406450d0020022802e00610310b200241e00a6a2014290300201441086a29030010cb02200241e0066a200c201310cb0220042006280200360200200220022903e00a3703c00b200241b00a6a200241c00b6a200241e0066a10cc02024020022802e406450d0020022802e00610310b200241a0076a200241b00a6a10cd022104024020022802b40a450d0020022802b00a10310b024020022802a407450d0020022802a00710310b0240200441ff01710d00418094ebdc0321040c030b410021042014290310200b290320852001290300200529030085844200520d020c010b418094ebdc032104200b290310201429030085200b41186a290300201441086a2903008584500d010b200241c00b6a428094ebdc0342002014290300201441086a290300200b290310200b41186a29030010ca02418094ebdc03210420022802c00b4101460d0020022903c80b221042ff93ebdc0356200241c00b6a41106a290300220c420052200c501b0d002010a721040b200220043602c00b2002418094ebdc033602c40b200241c00b6a2004418094ebdc034b4102746a2802002105200220142f00243b01e00a2002201441266a2d00003a00e20a2002201441376a2900003703c00b20022014413c6a2900003700c50b201441336a28000021012014412f6a28000021062014412b6a2800002109201441276a28000021140240024020152012460d00201521040c010b201241016a22042012490d122012410174223b2004203b20044b1b223bad42247e220c422088a70d12200ca722044100480d120240024020120d002004102d21420c010b2042201241246c2004102f21420b2042450d0320122104203b21120b20022d00e20a213b20022f01e00a212d2042200441246c6a2204200136000f2004200636000b20042009360007200420143600032004202d3b0100200441026a203b3a0000200420022903c00b370013200441186a20022900c50b37000020042005360220201541016a21150b2011203a470d000b02402015450d0002400240201541246c22010d00410021050c010b204241206a2104410021050340200428020020056a2105200441246a21042001415c6a22010d000b0b02404100418094ebdc0320056b22042004418094ebdc034b1b221420156e2204418094ebdc032004418094ebdc03491b2209450d00204241206a210441002105034020152005460d042002417f2004280200220120096a220620062001491b22013602c00b2002418094ebdc033602c40b2004200241c00b6a2001418094ebdc034b4102746a280200360200200441246a21042015200541016a2205470d000b0b02402014200920156c6b2209450d004100210403402015200420157022054d0d062002417f2042200541246c6a2205280220220141016a220620062001491b22013602c00b2002418094ebdc033602c40b2005200241c00b6a2001418094ebdc034b4102746a280200360220200441016a22042009490d000b0b200241c00b6a41186a2205202e290300370300200241c00b6a41106a2201202a290300370300200241c00b6a41086a22062038290300370300200220022903c0073703c00b024020342030470d00203041016a22042030490d11203041017422092004200920044b1b2204ad422c7e220c422088a70d11200ca722094100480d110240024020300d002009102d213d0c010b203d2030412c6c2009102f213d0b203d450d0420302134200421300b203d2034412c6c6a220420022903c00b3702002006290300210c2001290300211020052903002113200420153602282004201236022420042042360220200441186a2013370200200441106a2010370200200441086a200c370200203441016a21340c050b2012450d04204210310c040b200441041033000b41e49cc40020052015104b000b200941041033000b41e49cc40020052015104b000b200b41e0006a220b2031470d000b0b0240205a450d00204510310b02402035450d00203541e0006c2105205741306a210403400240200441046a280200450d00200428020010310b200441e0006a2104200541a07f6a22050d000b0b0240201b450d00205610310b20022802900b20022802940b20022802980b10c902203c450d00410021390240024002400240201841306c22040d004101215f410021610c010b200441306e226141057422054100480d0b2005102d225f450d010b0240203c203c20046a460d00201841306c210141002139205f2104203c2105034020042005290000370000200441186a200541186a290000370000200441106a200541106a290000370000200441086a200541086a290000370000203941016a2139200441206a2104200541306a2105200141506a22010d000b0b200242003702a40a20024198bfc0003602a00a024002402039450d00205f20394105746a2138200241c00b6a4102722162200241d0056a41136a2135200241f0056a41136a215c4198bfc0002104205f210b0340200b41086a290000210c200b41106a2900002110200b2900002113200241e0066a41186a2242200b41186a290000370300200241e0066a41106a22452010370300200241e0066a41086a223b200c370300200220133703e00602400240024002400240024002400240024020044198bfc000460d0020022802a40a2114200421090c010b200241c0076a410041e00210aa051a200241c00b6a410041900410aa051a41f806102d2209450d0141002114200941003b010620094100360200200941086a200241c0076a41e00210ab051a200941e8026a200241c00b6a41900410ab051a200241003602a40a200220093602a00a0b200b41206a210b02400340200941086a2105200941066a211120092f01062215410574210441002101024003402004450d01200241e0066a2005412010ad052206450d03200441606a2104200141016a2101200541206a21052006417f4a0d000b2001417f6a21150b02402014450d002014417f6a2114200920154102746a41f8066a28020021090c010b0b200241a0076a41186a22042042290300370300200241a0076a41106a2045290300220c370300200241a0076a41086a203b2903002210370300200220022903e00622133703a007200220022802a80a41016a3602a80a200241e00a6a41106a220a200c370300200241e00a6a41086a221b2010370300200241e00a6a41186a22192004290300370300200220133703e00a20112f01002205410b490d04200241c0076a410041e00210aa051a200241c00b6a410041900410aa051a41f806102d2204450d02200441003b010620044100360200200441086a200241c0076a41e00210ab052101200441e8026a200241c00b6a41900410ab052106200241f0056a41086a2263200941d0016a290000370300200241f0056a41106a2264200941d8016a290000370300200241f0056a41186a2265200941e0016a290000370300200241c00b6a41086a221220094190056a290300370300200241c00b6a41106a222d20094198056a290300370300200241c00b6a41186a223a200941a0056a290300370300200241c00b6a41206a222e200941a8056a290300370300200241c00b6a41286a222a200941b0056a290300370300200220092900c8013703f00520022009290388053703c00b2001200941e8016a20092f010641796a220541057410ab0521012006200941b8056a200541306c10ab052106200941063b0106200420053b0106200220022f01f0053b01bc06200220022d00f2053a00be062002205c2900003703a8062002205c41056a22662900003700ad0620022800f305214b20022800f705214c20022800fb05214d20022800ff05214e200241c0076a41286a224f202a290300370300200241c0076a41206a2250202e290300370300200241c0076a41186a2251203a290300370300200241c0076a41106a2252202d290300370300200241c0076a41086a22532012290300370300200220022903c00b3703c0070240024020154107490d00201541057420016a41c07e6a2001201541796a22144105746a2201200541ffff037120146b41057410ac051a200141186a2019290300370000200141106a200a290300370000200141086a201b290300370000200120022903e00a370000201541306c20066a220541e07d6a200541b07d6a2205200441066a22112f010020146b41306c10ac051a200541186a4200370300200542003703102005420037030820054200370300200541286a4100360200200542083703200c010b200941086a20154105746a220541206a200520112f010020156b41057410ac051a200541186a2019290300370000200541106a200a290300370000200541086a201b290300370000200520022903e00a370000200941e8026a201541306c6a220541306a200520112f010020156b41306c10ac051a200541186a4200370300200542003703102005420037030820054200370300200541286a4100360200200542083703200b201120112f010041016a3b0100200241a80b6a41026a220520022d00be063a0000203b20532903003703002045205229030037030020422051290300370300200241e0066a41206a221d2050290300370300200241e0066a41286a224a204f290300370300200220022f01bc063b01a80b200220022903a8063703d005200220022900ad063700d505200220022903c0073703e006200241b00a6a41286a2254204a290300370300200241b00a6a41206a2255201d290300370300200241b00a6a41186a22562042290300370300200241b00a6a41106a22572045290300370300200241b00a6a41086a2259203b290300370300200241a4066a41026a225b20052d00003a0000200220022903e0063703b00a200220022903d00537039006200220022900d50537009506200220022f01a80b3b01a4060240200928020022140d00200241a00a6a2105200421010c070b20092f010421314100215d200421580340200241b80b6a41026a225a205b2d00003a0000200220022f01a4063b01b80b20022002290390063703a80b20022002290095063700ad0b204a2054290300370300201d20552903003703002042205629030037030020452057290300370300203b2059290300370300200220022903b00a3703e006203141ffff0371211502400240024020142f01062204410b490d002062410041a20710aa051a41a807102d2206450d0720064100360200200641046a200241c00b6a41a40710ab051a2065201441e0016a2900003703002064201441d8016a2900003703002063201441d0016a290000370300200220142900c8013703f005202a201441b0056a290300370300202e201441a8056a290300370300203a201441a0056a290300370300202d20144198056a290300370300201220144190056a29030037030020022014290388053703c00b200641086a201441e8016a20142f0106220541796a220441057410ab05215e200641e8026a201441b8056a200441306c10ab052149200641f8066a20144194076a2005417a6a221141027410ab052118201441063b0106200620043b010602402011450d00410021042018210503402005280200220120043b010420012006360200200541046a21052011200441016a2204470d000b0b204f202a2903003703002050202e2903003703002051203a2903003703002052202d29030037030020532012290300370300200220022903c00b3703c007200220022f01f0053b01bc06200220022d00f2053a00be0620022900f305210c20022900fb052110200220662900003700ad062002205c2900003703a806203520022903a806370000203541056a221120022900ad06370000200220022d00be063a00d205200220022f01bc063b01d005200220103700db052002200c3700d305202a204f290300370300202e2050290300370300203a2051290300370300202d205229030037030020122053290300370300200220022903c0073703c00b203141ffff037122054107490d01205e2015417a6a22014105746a205e201541796a22044105746a220520062f010620046b41057410ac051a200541186a20022900ad0b3700002005204e36000f2005204d36000b2005204c3600072005204b360003200541026a205a2d00003a0000200520022f01b80b3b0000200520022903a80b370013201541306c20496a220541e07d6a200541b07d6a220520062f0106223120046b41306c10ac051a200541286a204a290300370300200541206a201d290300370300200541186a2042290300370300200541106a2045290300370300200541086a203b290300370300200520022903e0063703002006203141016a22053b01062015410274223120186a416c6a201820014102746a2215200541ffff037120016b41027410ac051a20152058360200200120062f010622154b0d02200620316a41e0066a2105034020052802002201200441016a22043b010420012006360200200541046a210520042015490d000c030b0b201441086a2205201541016a22014105746a200520154105746a2205200420156b220641057410ac051a2005204e36000f2005204d36000b2005204c3600072005204b360003200541026a205a2d00003a0000200520022f01b80b3b0000200520022903a80b370013200541186a20022900ad0b3700002014201541306c6a22054198036a200541e8026a2211200641306c10ac051a20054190036a204a29030037030020054188036a201d29030037030020054180036a2042290300370300200541f8026a2045290300370300200541f0026a203b290300370300201120022903e0063703002014200441016a22043b01062015410274201441f8066a22056a41086a200520014102746a2205200441ffff037120016b41027410ac051a200520583602000240201520142f010622044f0d00205820013b010420582014360200200120044f0d002004417f6a210620142001417f6a22044102746a4180076a2105034020052802002201200441026a3b010420012014360200200541046a21052006200441016a2204470d000b0b41001a200241a00a6a1a0c0a0b201441086a2204201541016a22014105746a200420154105746a220420142f0106223120156b221841057410ac051a2004204e36000f2004204d36000b2004204c3600072004204b360003200441026a205a2d00003a0000200420022f01b80b3b0000200420022903a80b370013200441186a20022900ad0b370000201441e8026a201541306c6a220441306a2004201841306c10ac051a200441286a204a290300370300200441206a201d290300370300200441186a2042290300370300200441106a2045290300370300200441086a203b290300370300200420022903e0063703002014203141016a22043b010620154102742218201441f8066a22316a41086a203120014102746a2231200441ffff037120016b41027410ac051a20312058360200200520142f010622014f0d00201420186a41fc066a2104034020042802002205201541016a22153b010420052014360200200441046a210420012015470d000b0b205d41016a2115200241a00b6a41026a220420022d00d2053a0000201b2012290300370300200a202d2903003703002019203a290300370300200241e00a6a41206a2205202e290300370300200241e00a6a41286a2201202a290300370300200220022f01d0053b01a00b200220022903c00b3703e00a200220352900003703900b200220112900003700950b20022800d305214b20022800d705214c20022800db05214d20022800df05214e2054200129030037030020552005290300370300205620192903003703002057200a2903003703002059201b290300370300205b20042d00003a0000200220022903e00a3703b00a200220022903900b37039006200220022900950b37009506200220022f01a00b3b01a4060240201428020022040d0020141a200241a00a6a22051a200621010c080b20142f01042131200241a00a6a1a20141a20042114200621582015215d0c000b0b2009200141306c6a22044180036a4200370300200441f8026a4200370300200441f0026a4200370300200441e8026a420037030020044190036a410036020020044188036a220128020021052004418c036a2802002104200142083703002005450d042004450d04200510310c040b41f80641081033000b41f80641081033000b41a80741081033000b200920154105746a220441286a200441086a2201200520156b41057410ac051a200441206a2019290300370000200441186a200a290300370000200441106a201b290300370000200120022903e00a3700002009201541306c6a22044198036a200441e8026a220520092f010620156b41306c10ac051a20044190036a410036020020044188036a420837030020044180036a4200370300200441f8026a4200370300200441f0026a420037030020054200370300200920092f010641016a3b01060b201221090c010b2062410041a20710aa051a41a807102d2204450d0320044100360200200441046a200241c00b6a41a40710ab051a2004200528020022063602f806200520043602002005200528020441016a360204200641003b010420062004360200200420042f010622064105746a220541086a20022f01a4063b00002005410a6a205b2d00003a0000200541176a204e360000200541136a204d3600002005410f6a204c3600002005410b6a204b3600002005411b6a200229039006370000200541206a2002290095063700002004200641306c6a220541e8026a20022903b00a370300200541f0026a2059290300370300200541f8026a205729030037030020054180036a205629030037030020054188036a205529030037030020054190036a2054290300370300200441f8066a200641016a22054102746a2001360200200420053b010620012004360200200120053b01040b200b2038460d0120022802a00a2104200921120c000b0b02402034412c6c2204450d00203d20046a212e200241106a41086a2145203d211103400240201128022841246c2204450d002011280220221220046a2142201141136a213b0340200241206a201110c802200241106a2002290320220c428094ebdc038022104200201222093502202213420010b00520452903002002290310221f2013200c20104280ec94a37c7e7c7e220c200c428094ebdc0380220c4280ec94a37c7e7c4280cab5ee0156200ca76aad7c220c201f54ad7c2110200941246a2112200241a00a6a210420022802a40a21150240024003402004280200221441086a210520142f0106220b4105742104410021010240024003402004450d0120092005412010ad052206450d02200441606a2104200141016a2101200541206a21052006417f4a0d000b2001417f6a210b0b2015450d022015417f6a21152014200b4102746a41f8066a21040c010b0b201441e8026a200141306c6a2104024020092011460d0020092011412010ad05450d002004427f20042903102213200c7c221f201f2013542205200441186a2201290300221320107c2005ad7c221f201354201f2013511b22051b3703102001427f201f20051b370300200220112f00003b01b80b2002201141026a2d00003a00ba0b2011280007210920112800032114201128000b21152002203b41056a2900003700ad0b2002203b2900003703a80b200441286a2101200441206a2106201128000f210b024020042802282205200441246a280200470d00200541016a22042005490d132005410174222d2004202d20044b1b222dad42307e2213422088a70d132013a7223a4100480d130240024020050d00203a102d21040c010b2006280200200541306c203a102f21040b2004450d0320062004360200200641046a202d360200200128020021050b2006280200200541306c6a220420022f01b80b3b01002004200b36000f2004201536000b2004200936000720042014360003200420022903a80b3700132004200c370320200441026a20022d00ba0b3a0000200441186a20022900ad0b370000200441286a20103703002001200128020041016a3602000c010b2004427f20042903002213200c7c221f201f2013542205200441086a2201290300221320107c2005ad7c221f201354201f2013511b22051b3703002001427f201f20051b3703002004427f20042903102213200c7c220c200c2013542205200441186a2201290300220c20107c2005ad7c2210200c542010200c511b22051b3703102001427f201020051b3703000b20122042460d020c010b0b203a41081033000b2011412c6a2211202e470d000b0b20022802a80a211220022802a40a210620022802a00a2105200241e0066a41086a220141c4bac100ad4280808080e002841001220441086a290000370300200220042900003703e00620041031200241c0076a41086a2001290300370300200220022903e0063703c007200241e0066a20081002104102400240024002400240024020022802e0062204450d0020022802e4062109200220012802003602e40a200220043602e00a200241c00b6a200241e00a6a10890120022802c00b2211450d0220022902c40b210c2009450d01200410310c010b4200210c410121110b02402011450d00200c422088a72204450d0020044105742109201121010340410f102d2204450d03200441002900fcb941370000200441076a4100290083ba413700002002428f808080f0013702c40b200220043602c00b2001200241c00b6a1046200241d0056a41186a221420023502c80b42208620023502c00b841000220441186a290000370300200241d0056a41106a2215200441106a290000370300200241d0056a41086a220b200441086a290000370300200220042900003703d00520041031200241e00a6a41186a2014290300370300200241e00a6a41106a2015290300370300200241e00a6a41086a200b290300370300200220022903d0053703e00a024020022802c40b450d0020022802c00b10310b200141206a210120261009200941606a22090d000b0b0240200ca7450d00201110310b0240024020060d00200521040c010b2006210120052104034020042802f80621042001417f6a22010d000b0340200520052f01064102746a41f8066a28020021052006417f6a22060d000b0b200241dc076a20052f0106360200200241c0076a41186a4100360200200241d4076a2005360200200220123602e007200241003602d007200242003703c807200220043602c407200241003602c007200241c00b6a200241c0076a10ce020240200241800c6a222d28020022120d00427f2128427f211f0c070b200241c00b6a41106a2106427f2128200241f80b6a2145200241c00b6a41286a213b427f211f0340200241b00a6a41086a200241c00b6a41086a2215290300220c370300200241b00a6a41106a20062903002210370300200241b00a6a41186a200241c00b6a41186a22092903002224370300200220022903c00b22253703b00a20452903002113203b290300212120022903f00b212220022903e00b212320022802840c214220022802880c2104200241e0066a41186a2024370300200241e0066a41106a2010370300200241e0066a41086a200c370300200220253703e00641002101410021114108210b0240200441306c2214450d00201441306d2211ad42307e220c422088a70d11200ca722054100480d112005102d220b450d040b02402004450d0041002101200b2104201221050340200541206a290300210c200541286a29030021102009200541186a2903003703002006200541106a2903003703002015200541086a290300370300200220052903003703c00b200420103703082004200c370300200441106a20022903c00b370300200441186a2015290300370300200441206a2006290300370300200441286a2009290300370300200441306a2104200141016a2101200541306a2105201441506a22140d000b0b02402042450d00201210310b20092021370300200220233703d00b200220013602e80b200220113602e40b2002200b3602e00b200220223703c00b200220133703c80b410f102d2204450d04200441002900fcb941370000200441076a4100290083ba413700002002428f808080f0013702a407200220043602a007200241e0066a200241a0076a1046200241d0056a41186a220520023502a80742208620023502a007841000220441186a290000370300200241d0056a41106a2201200441106a290000370300200241d0056a41086a2209200441086a290000370300200220042900003703d00520041031200241e00a6a41186a2005290300370300200241e00a6a41106a2001290300370300200241e00a6a41086a2009290300370300200220022903d0053703e00a024020022802a407450d0020022802a00710310b200241003602a807200242013703a0072002200241c00b6a3602f005200241f0056a200241a0076a10ac01200220063602f005200241f0056a200241a0076a10ac0120022802e00b210420022802e80b2205200241a0076a106f02402005450d00200541306c21050340200441106a200241a0076a1046200220043602f005200441306a2104200241f0056a200241a0076a10ac01200541506a22050d000b0b20282022562104201f2013512105201f201356210120022802a4072109202620023502a80742208620022802a0072214ad84100302402009450d00201410310b2004200120051b2104024020022802e40b450d0020022802e00b10310b2013201f20041b211f2022202820041b2128200241c00b6a200241c0076a10ce0220022802800c2212450d070c000b0b41e9bcc0004133200241a00b6a419cbdc0001038000b410f41011033000b200541081033000b410f41011033000b41a80741081033000b200541011033000b200241c00b6a200241c0076a10ce020240202d2802002204450d000340024020022802840c450d00200410310b200241c00b6a200241c0076a10ce0220022802800c22040d000b0b024020022802c40722044198bfc000460d0020042802002101200410312001450d0020012802002105200110312005450d00024020052802002204450d000340200510312004210520042802002201210420010d000b0b200510310b200241e0066a41086a220441b5d6c000ad42808080809002841001220541086a290000370300200220052900003703e00620051031200241c0076a41086a22012004290300370300200220022903e0063703c0072002201f3703c80b200220283703c00b2008201a42808080808002841003200441c4bac100ad4280808080e002841001220541086a290000370300200220052900003703e0062005103120012004290300370300200220022903e0063703c007200241003602c80b200242013703c00b2039200241c00b6a106f02402039450d0020394105742105205f210403402004200241c00b6a1046200441206a2104200541606a22050d000b0b20022802c40b2104200820023502c80b42208620022802c00b2202ad84100302402004450d00200210310b2039ad210c02402034450d002034412c6c2104203d41206a210203400240200241046a280200450d00200228020010310b2002412c6a2102200441546a22040d000b0b200c422086210c2061ad211002402030450d00203d10310b200c201084210c2060450d01203c10310c010b200241e0066a41086a220541b5d6c000ad42808080809002841001220441086a290000370300200220042900003703e00620041031200241c0076a41086a2005290300370300200220022903e0063703c007200241c00b6a200810021041024020022802c00b2204450d00200241c00b6a41086a2802004110490d0420022802c40b450d00200410310b4100215f0b0240201c2017a745720d00201610310b205f0d010240200d450d00200d41d0006c2104200e41c0006a210203400240200241046a280200450d00200228020010310b200241d0006a2102200441b07f6a22040d000b0b200f450d00200e10310b20004100360200200324000f0b2000200c3702042000205f3602000240200d450d00200d41d0006c2104200e41c0006a210203400240200241046a280200450d00200228020010310b200241d0006a2102200441b07f6a22040d000b0b0240200f450d00200e10310b200324000f0b41e9bcc0004133200241a00b6a419cbdc0001038000b41e9bcc0004133200241a00b6a419cbdc0001038000b41e9bcc0004133200241a00b6a419cbdc0001038000b41e9bcc0004133200241a00b6a419cbdc0001038000b1034000b8c0601057f230041a0016b2202240002400240410f102d2203450d0041002104200341002900fcb941370000200341076a4100290083ba413700002002428f808080f00137021c200220033602182001200241186a1046200241e8006a41186a220120023502204220862002350218841000220341186a290000370300200241e8006a41106a2205200341106a290000370300200241e8006a41086a2206200341086a2900003703002002200329000037036820031031200241386a41186a2001290300370300200241386a41106a2005290300370300200241386a41086a2006290300370300200220022903683703380240200228021c450d00200228021810310b200241d8006a200241386aad428080808080048410021041024020022802582203450d00200228025c21012002200241d8006a41086a28020036029c012002200336029801200241e8006a20024198016a10cf022002280288012204450d02200241186a41186a200241e8006a41186a290300370300200241186a41106a200241e8006a41106a290300370300200241186a41086a200241e8006a41086a290300370300200241086a41086a20024194016a280200360200200220022903683703182002200229028c013703082001450d00200310310b200241e8006a41086a2203200241186a41086a290300370300200241e8006a41106a2201200241186a41106a290300370300200241e8006a41186a2205200241186a41186a290300370300200241d8006a41086a2206200241086a41086a2802003602002002200229031837036820022002290308370358024002402004450d002000200229036837030020002004360220200041246a2002290358370200200041186a2005290300370300200041106a2001290300370300200041086a20032903003703002000412c6a20062802003602000c010b2000420037030020004208370320200041186a4200370300200041106a4200370300200041086a4200370300200041286a41003602000b200241a0016a24000f0b410f41011033000b41e9bcc0004133200241186a419cbdc0001038000bda0402057f017e230041e0006b220424000240410d102d2205450d00200541002900b7ba41370000200541056a41002900bcba413700002004428d808080d00137024c200420053602482001200441c8006a1046200441186a220620043502504220862004350248841000220541186a290000370300200441106a2207200541106a290000370300200441086a2208200541086a2900003703002004200529000037030020051031200441286a41186a2006290300370300200441286a41106a2007290300370300200441286a41086a2008290300370300200420042903003703280240200428024c450d00200428024810310b2004200441286aad42808080808004841002104102400240024020042802002205450d00024002400240200441086a280200450d0020052d0000220741014b0d00200428020421084100210620070e020201020b41e9bcc0004133200441c8006a419cbdc0001038000b410121060b02402008450d00200510310b20060d010b2004200120022003104220043502004201852102200441106a2903002103200441086a29030021090c010b2004200110d002024020042d00004101460d00420021020c010b200441c0006a200441196a290000370300200441286a41106a200441116a290000370300200441286a41086a200441096a29000037030020042004290001370328200441c8006a200441286a20022003104220043502484201852102200441c8006a41106a2903002103200441c8006a41086a29030021090b2000200937030820002002370300200041106a2003370300200441e0006a24000f0b410d41011033000b9e1004057f027e037f087e23004180046b22022400200241e0016a200110d0020240024020022d00e0014101470d00200241a8026a41186a200241f9016a290000370300200241a8026a41106a200241f1016a290000370300200241a8026a41086a200241e9016a290000370300200220022900e1013703a8020240024002400240024002400240024002400240410e102d2201450d00410021032001410029009bba41370000200141066a41002900a1ba413700002002428e808080e0013702cc02200220013602c802200241a8026a200241c8026a1046200241d8026a41186a220420023502d00242208620023502c802841000220141186a290000370300200241d8026a41106a2205200141106a290000370300200241d8026a41086a2206200141086a290000370300200220012900003703d8022001103120024188026a41186a200429030037030020024188026a41106a200529030037030020024188026a41086a2006290300370300200220022903d80237038802024020022802cc02450d0020022802c80210310b200241a8026a20024188026aad4280808080800484100210410240024020022802a80222010d000c010b20022802ac0221042002200241a8026a41086a2802003602cc02200220013602c802200241d8026a200241c8026a10d1022002280298032203450d0220024180036a2903002107200241d8026a41086a2903002108200241cc036a2802002109200241c8036a280200210a200241bc036a2802002106200241b8036a280200210b20022903f802210c20022903d802210d200228029c0321052004450d00200110310b2003450d0a200241d8026a41086a2204418bbac100ad42808080808002841001220141086a290000370300200220012900003703d80220011031200241e0016a41086a2004290300370300200220022903d8023703e001200241d8026a200241e0016aad4280808080800284220e100210410240024020022802d80222010d004200210f420121100c010b20042802004110490d03200141086a290000210f20012900002110024020022802dc02450d00200110310b200f42002010420156200f420052200f501b22011b210f2010420120011b21100b200241d0016a2010200f42808090bbbad6adf00d420010b105200241c0016a2010200f20022903d001221142012011420156200241d0016a41086a29030022114200522011501b22011b22122011420020011b221310b105200241c0016a41086a29030050450d0320022903c0012111200241b0016a2010200d2010200d54200f200854200f2008511b22011b200f200820011b2012201310b105200241b0016a41086a29030050450d0420114200510d05200241a0016a20022903b001420042808090bbbad6adf00d420010b00520024190016a20022903a001200241a0016a41086a2903002011420010b10520024180016a200229039001220f42004280cab5ee01420010b005200241f0006a20022903800120024180016a41086a29030042808090bbbad6adf00d420010b205200241d8026a41086a2204418690c200ad42808080808002841001220141086a290000370300200220012900003703d80220011031200241e0016a41086a2004290300370300200220022903d8023703e001200241d8026a200e10021041200241f0006a41086a290300210820022903702111200f4280a8d6b90780210e0240024020022802d80222010d004200210f420121100c010b20042802004110490d07200141086a290000210f20012900002110024020022802dc02450d00200110310b200f42002010420156200f420052200f501b22011b210f2010420120011b21100b200241e0006a2010200f42808090bbbad6adf00d420010b105200241d0006a2010200f2002290360220d4201200d420156200241e0006a41086a290300220d420052200d501b22011b2212200d420020011b221310b105200241d0006a41086a29030050450d072002290350210d200241c0006a2010200c2010200c54200f200754200f2007511b22011b200f200720011b2012201310b105200241c0006a41086a29030050450d08200d4200510d09200241306a2002290340420042808090bbbad6adf00d420010b005200241206a2002290330200241306a41086a290300200d420010b105200241106a2002290320220f42004280cab5ee01420010b00520022002290310200241106a41086a29030042808090bbbad6adf00d420010b205200e2011428080c89d9deb96f8065620084200522008501bad7c2110200f4280a8d6b90780210f2002290300428080c89d9deb96f80656200241086a29030022084200522008501b210102402009450d00200a10310b2010200f7c210f2001ad211002402005450d00200310310b200f20107c210f420021102006450d0b200b10310c0b0b410e41011033000b41e9bcc0004133200241f8036a419cbdc0001038000b41e9bcc0004133200241f8036a419cbdc0001038000b200241113602dc0220024199aec0003602d80241a2acc00041e000200241d8026a41acaec0001038000b200241113602dc0220024199aec0003602d80241a2acc00041e000200241d8026a41acaec0001038000b4180aec00041194184adc00010a401000b41e9bcc0004133200241f8036a419cbdc0001038000b200241113602dc0220024199aec0003602d80241a2acc00041e000200241d8026a41acaec0001038000b200241113602dc0220024199aec0003602d80241a2acc00041e000200241d8026a41acaec0001038000b4180aec00041194184adc00010a401000b4200210f420021100b2000200f3703002000201037030820024180046a24000b8b0303017f017e027f02402001450d00034020002802940321002001417f6a22010d000b0b02402002450d00410021034100210103402002417f6a210202400240200120002f01064f0d00200141016a21010c010b02400240200028020022010d002003ad210441002105410021010c010b20003301044220862003ad842104410121050b200010312004a72103024002402004422088a7220620012f01064f0d00200121000c010b034002400240200128020022000d002003ad2104410021000c010b200541016a210520013301044220862003ad8421040b200110312004a72103200021012004422088a7220620002f01064f0d000b0b200641027420006a4198036a280200210002402005417f6a2201450d00034020002802940321002001417f6a22010d000b0b410021010b20020d000b0b024020004198bfc000460d0020002802002101200010312001450d0020012802002100200110312000450d00024020002802002201450d000340200010312001210020012802002203210120030d000b0b200010310b0bb42e07017f017e017f027e017f027e187f23004180036b2207240002400240024002402001200284500d002003200484500d004201210820074198016a200320012003200156200420025620042002511b22091b220a2004200220091b220b20054201200542015620064200522006501b220c1b220520064200200c1b220610b10520074188016a200729039801220d20074198016a41086a290300220e2005200610b0052002200420091b21022001200320091b2104200a20072903880185200b20074188016a41086a290300858450450d01200d210a200e210b420021060c020b20004100360200200041106a4200370300200041086a42003703000c020b200741f8006a200420022005200610b105200741e8006a20072903782201200741f8006a41086a29030022032005200610b0054200200620042007290368852002200741e8006a41086a29030085845022091b21064201200520091b21082003200220091b21022001200420091b21040b200741386a200b42002004420010b005200741c8006a20024200200a420010b005200741d8006a200a42002004420010b005024002400240024002400240024002400240024002400240024002400240024002400240024002400240200b420052200242005271200729034042005272200729035042005272200741d8006a41086a2903002201200729033820072903487c7c2203200154724101470d004110102d2209450d032009200a3e020c2009200a4220883e02082009200b3e02042009200b4220883e020020074284808080c00037029c02200720093602980220074198026a10df04200741a8016a41086a20072802a00236020020072007290398023703a8014110102d2209450d02200920043e020c200920044220883e0208200920023e0204200920024220883e020020074284808080c00037029c02200720093602980220074198026a10df04200741b8016a41086a20072802a00236020020072007290398023703b8014110102d2209450d0120092008a7220f36020c200920084220883e0208200920063e0204200920064220883e020020074284808080c00037029c02200720093602980220074198026a10df0420072802a0022110200728029c0221112007280298022112200741f0026a41086a200741b8016a41086a280200360200200720072903b8013703f00220074198026a41086a200741a8016a41086a280200360200200720072903a80137039802200741c8016a20074198026a200741f0026a10cc02024020072802f402450d0020072802f00210310b200741c8016a10df0420104101460d0420072802cc01211320072802c80121142010450d0e2012280200450d0e024020072802d0012215450d002014280200450d0f201520104d0d0f200720103602d401201520106b221641016a22174101201741014b1b221841ffffffff03712018470d0620184102742209417f4c0d0602400240024020090d00410421190c010b2009107a2219450d010b201041ffffffff03712010470d072010410274221a417f4c0d07024002400240201a0d004104211b0c010b201a107a221b450d010b410221094101210f2012280200220c67221c211d0240200c41ffffffff034b0d0041022109201c210c4101210f034020094101200c4101711b200f6c210f200c41034b211e200920096c2109200c410176221d210c201e0d000b0b200720153602f802200720133602f402200720143602f00202404104102d220c450d00200c20094101201d4101461b200f6c220f360200200742818080801037029c022007200c36029802200741d8016a200741f0026a20074198026a10cc02200c1031024002400240201a0d00410421090c010b201a102d2209450d010b20092012201041027410ab052109200720103602f802200720103602f402200720093602f00202404104102d2209450d002009200f360200200742818080801037029c022007200936029802200741e8016a200741f0026a20074198026a10cc0220091031024002400240024020072802d40120176a220920072802e001220c4d0d00024002402009200c6b22090d004104210f410021090c010b200941ffffffff03712009470d032009410274221e4100480d03201e102d220f450d02200f4100200941027410aa051a0b20072802d801211d2009211e0240200c450d002009200c6a221e2009490d0320094101742214201e2014201e4b1b221e41ffffffff0371201e470d03201e41027422144100480d030240024020090d002014102d210f0c010b200f20094102742014102f210f0b200f450d040b200f20094102746a201d200c41027410ab051a2009200c6a2109024020072802dc01450d00201d10310b200720093602e0012007201e3602dc012007200f3602d8010b200741e8016a10df0402400240024002400240024002400240024002400240034020072016221f3602f401024020072802e001220920072802d401220c201f6a220f417f736a221e2009490d0041e49cc400201e2009104b000b0240024002400240024002400240024002400240024002400240024002400240024020092009200f6b220f4d0d0020072802f00122092009200c6b220c4d0d0120072802e801200c4102746a35020022024200510d02201f201f4100476b211620072802d8012209201e4102746a35020021012009200f4102746a3502002104200741003602f80120072004200142208684200280220137038002200741003602880220072004200120027e7d42ffffffff0f83370390022007200741f4016a3602ac022007200741d8016a3602a8022007200741d4016a3602a4022007200741e8016a3602a002200720074188026a36029c022007200741f8016a3602980220074198026a10e1041a034020072802880241016a41004c0d04024020072903900242ffffffff0f560d0020074198026a10e1040d010b0b2007290380022102200720072802d40120072802f40122096a3602f402200720093602f0022007200741d8016a3602fc02200741023a00f802200741b0026a200741f0026a10e30420072802f001220941ffffffff03712009470d2b2009410274220c417f4c0d2b20072802e801210f02400240200c0d004104211e0c010b200c102d221e450d050b201e200f200c10ab05210c200720093602e802200720093602e4022007200c3602e0024108102d2209450d0520092002a72220360204200920024220883e020020074282808080203702f402200720093602f002200741c0026a200741e0026a200741f0026a10cc022009103120072802b802222120072802c8022222202120224b1b22144101201441014b1b220c41ffffffff0371200c470d2b200c410274220f417f4c0d2b20072802b402212320072802b002212402400240200f0d00410421250c010b200f107a2225450d070b2014450d092022417f6a221720224b211520072802c00221262021417f6a221a20214b0d07200c417f6a21092025200f6a417c6a211d4100210f4200210203404100211e02402021201a200f6b22134d0d004100211e2013201a4b0d00202420134102746a280200211e0b201ead21044100211e024020150d0020222017200f6b22134d0d00201320174b0d00202620134102746a280200211e0b024002402004201ead22037d22012004560d00200120027d220a2001560d00200a42ffffffff0f832104420021020c010b20044280808080108420027d20037d2104420121020b200c20094d0d0c201d20043e0200201d417c6a211d2009417f6a2109200f41016a220f2014490d000c090b0b41e49cc400200f2009104b000b41e49cc400200c2009104b000b41809ec400411941849dc40010a401000b41aeddc4004118200741f0026a41b89ec4001038000b200c41041033000b410841041033000b200f41041033000b200c417f6a21092025200f6a417c6a211e4100211d4200210203404100210f024020150d004100210f20222017201d6b22134d0d004100210f201320174b0d00202620134102746a280200210f0b024002404200200fad22017d22044200520d00200420027d22032004560d00200342ffffffff0f832104420021020c010b428080808010200220017c7d2104420121020b200c20094d0d04201e20043e0200201e417c6a211e2009417f6a2109201d41016a221d2014490d000b0b41012113200250450d010b410021130b02402023450d00202410310b20072802d401221e20072802f401220f6a2215201e490d05200f20154f0d01200f417f7321090340200c200c200f6a20096a221d4d0d03200920072802e00122146a220f20094f0d0420072802d801200f4102746a2025201d4102746a2802003602002009417f6a210920072802f401210f201e417f6a221e0d000c050b0b41f49cc4002009200c104b000b201e450d020c030b41e49cc40020222021202220214b1b22074101200741014b1b200f6a20096a200c104b000b41f49cc400200f2014104b000b200c200c2015417f7322096a200f6a220f4d0d0220072802e001220c20096a2209200c4f0d0320072802d80120094102746a2025200f4102746a28020036020020072802f401210f0b2018200f417f736a220920184f0d03201920094102746a202036020002402013450d00201820072802f401417f736a220920184f0d05201920094102746a22092009280200417f6a36020020072802f401210920072802d401210c200741023a00f8022007200c20096a3602f402200720093602f0022007200741d8016a3602fc02200741d0026a200741f0026a10e30420072802f001220941ffffffff03712009470d1b2009410274220c417f4c0d1b20072802e801210f02400240200c0d004104211e0c010b200c102d221e450d070b201e200f200c10ab05210c200720093602f802200720093602f4022007200c3602f002200741e0026a200741f0026a200741d0026a10e004024020072802d401220920072802f40122146a220c2009490d00024002402014200c4f0d00200c417f73210920072802e002211320072802e802210f2014211e0340200f200f201e6a20096a221e4d0d0b200920072802e00122156a221d20094f0d0c20072802d801201d4102746a2013201e4102746a280200360200200941016a210920072802f401211e2014200c417f6a220c490d000c020b0b20090d0120072802e802210f2014211e0b201e2014417f7322096a220c200f6a221e200c4f0d0a20072802e001220c20096a2209200c4f0d0b20072802d80120094102746a20072802e002201e4102746a2802003602000b024020072802e402450d0020072802e00210310b20072802d402450d0020072802d00210310b20251031024020072802c402450d0020072802c00210310b201f0d000b0240201c450d004101210920072802d401220c4101460d1f4100200c6b2114201c411f7121134100201c6b411f7121152010410274201b6a417c6a210c417f210903400240200920072802e001221e6a220f2009490d0041e49cc400200f201e104b000b201e200f417f6a221d4d0d0b201020096a221e20104f0d0c200c20072802d801221e201d4102746a280200201574201e200f4102746a28020020137672360200200c417c6a210c20142009417f6a2209460d1f0c000b0b20072802e001211020072802dc01210f20072802d801211e201b1031410021090c1f0b41e49cc400200f200c104b000b41f49cc4002009200c104b000b41f49cc40020092018104b000b41e49cc40020092018104b000b200c41041033000b41e49cc400201e200f104b000b41f49cc400201d2015104b000b41e49cc400201e200f104b000b41f49cc4002009200c104b000b41e49cc400200f417f6a201e104b000b41f49cc400201e2010104b000b201e41041033000b1034000b201441041033000b410441041033000b201a41041033000b410441041033000b201a41041033000b200941041033000b41e49cc40041004100104b000b200741286a200729035820032008200610b10520004100360200200041106a200741286a41086a290300370300200041086a20072903283703000c140b411041041033000b411041041033000b411041041033000b20074198026a41086a200741c8016a41086a280200221d360200200720072903c80137039802201d4101201d41014b1b221e41ffffffff0371201e470d00201e4102742209417f4c0d000240024020090d004104211a0c010b2009107a221a450d020b201d450d03201d417f6a2114201a201e201d6b22134102746a210c200f4101200f41014b1bad21024200210441002109200728029802210f0340201e201320096a22154d0d03200c2004422086200f35020084220420028022013e020020142009460d04200c41046a210c200f41046a210f2004200120027e7d2104201d200941016a22094b0d000b41e49cc4002009201d104b000b1032000b200941041033000b41f49cc4002015201e104b000b2007201e3602f8022007201e3602f4022007201a3602f002200728029c02450d0720072802980210310c070b20072802d40121090b20072802e001220c200c20096b220f4d0d012010201020096b22094d0d02201b20094102746a20072802d801200f4102746a280200201c411f7176360200410121092010210f201b211e0b024020072802ec01450d0020072802e80110310b2009450d0320072802dc01450d0320072802d80110310c030b41e49cc400200f200c104b000b41f49cc40020092010104b000b4100211902402013450d00201410310b0b4104102d2209450d01200941003602004104102d220c450d02200c41003602004101211d0240024020190d002009211941012118200c211e4101210f410121100c010b20091031200c10310b2007201836028002200720183602fc01200720193602f801200720103602a0022007200f36029c022007201e3602980220074198026a10df04420021020240024020072802a00222094105744180014d0d00421d21040c010b4100211d024020090d00420021040c010b200728029802220c200941027422096a417c6a220f280200211e0240200c200f470d00201ead21040c010b200c41786a210f201ead2104200741206a211e4120210c420021020340200741186a200f20096a3502004200200c41e0007110ae05201e29030020027c2007290318220220047c2204200254ad7c2102200c41206a210c2009417c6a22094104470d000b0b0240200728029c02450d0020072802980210310b201d0d030240200420084201882006423f8684562002200642018822045620022004511b450d0020074188026a41086a200741f8016a41086a280200360200200720072903f801370388024110102d2209450d0520094280808080103702082009420037020020074284808080c00037029c02200720093602980220074198026a10df04200741f0026a41086a20072802a00236020020072007290398023703f002200741f8016a20074188026a200741f0026a10e00420072802f402450d0020072802f00210310b200741f0026a41086a200741f8016a41086a280200360200200720072903f8013703f0020b200741f0026a10df0420074198026a41086a2209200741f0026a41086a280200360200200720072903f0023703980220074198026a10df044200210202400240200928020022094105744180014d0d00421d21044101211d0c010b4100211d024020090d00420021040c010b200728029802220c200941027422096a417c6a220f280200211e0240200c200f470d00201ead21040c010b200c41786a210f201ead2104200741106a211e4120210c420021020340200741086a200f20096a3502004200200c41e0007110ae05201e29030020027c2007290308220220047c2204200254ad7c2102200c41206a210c2009417c6a22094104470d000b0b0240200728029c02450d0020072802980210310b02400240201d0d00200041106a2002370300200041086a2004370300410021090c010b200041989fc400360204200041086a4119360200410121090b200020093602002011450d04201210310c040b410441041033000b410441041033000b200720043e029c02200741999ec4003602980241d89ec400412f20074198026a41889fc4001038000b411041041033000b20074180036a24000b7701027f230041106b2203240002404110102d22040d00411041041033000b200420013e020c200420014220883e0208200420023e0204200420024220883e020020034284808080c00037020420032004360200200310df04200041086a200328020836020020002003290300370200200341106a24000bbf04030d7f017e017f02400240200241086a2802002203200141086a28020022046a22054101200541014b1b220641ffffffff03712006470d0020064102742205417f4c0d0002400240024020050d00410421070c010b2005107a2207450d010b2004450d022001280200210802400240024020030d0020082004417f6a22054102746a210320072006417f6a22024102746a21090340200420054d0d0302402003280200450d00200620024d0d03200941003602000b2003417c6a21032009417c6a21092002417f6a21022005417f6a2205417f470d000c060b0b200641027420076a417c6a210a200341027420022802006a417c6a210b4100210c2006210d03402004200c417f736a220520044f0d020240200820054102746a220e280200220f450d0042002110417f2105200a2102200b2109024003402006200d20056a22114d0d0120022009350200200fad7e20107c20023502007c22103e0200201042208821100240200320056a0d002006200c20036a417f736a220220064f0d05200720024102746a20103e02000c030b2002417c6a21022009417c6a2109200e280200210f20032005417f6a22056a22112003490d000b41e49cc40020112003104b000b41e49cc40020112006104b000b200a417c6a210a200d417f6a210d200c41016a220c2004460d050c000b0b41f49cc40020022006104b000b41e49cc40020052004104b000b200541041033000b1032000b2000200636020820002006360204200020073602000240200141046a280200450d00200128020010310b0b9e0301087f200028020822024102742103410021042000280200220521000240024003402003450d012004417f6a21042003417c6a210320002802002106200041046a21002006450d000b410121072004417f73200641004741016a4101716a21080c010b41002107410020046b21080b200128020822094102742103410021042001280200220121000240024003402003450d012004417f6a21042003417c6a210320002802002106200041046a21002006450d000b410021032004417f73200641004741016a4101716a21000c010b410020046b2100410121030b024020070d00410020034101736b0f0b4101210402400240024020030d0020022008490d0120092000490d02417f200220086b2203200920006b22064720032006491b22040d0020062003200320064b1b2107200120004102746a2103200520084102746a2100417f210103400240200141016a22012007490d0041000f0b2003280200210420002802002106200341046a2103200041046a2100417f200620044720062004491b2204450d000b0b20040f0b20082002107b000b20002009107b000bd308030d7f017e017f230041a0016b2202240002400240024020012802202203450d0020012003417f6a36022020012802082104200128020c2205200128020422062f01064f0d01200241186a2207200620054105746a220341206a290000370300200241106a2208200341186a290000370300200241086a2209200341106a2900003703002002200341086a290000370300200241206a41286a220a2006200541306c6a22034190036a290300370300200241206a41206a220b20034188036a290300370300200241206a41186a220c20034180036a290300370300200241206a41106a220d200341f8026a290300370300200241206a41086a220e200341f0026a290300370300200341e8026a290300210f2001200541016a36020c20012004360208200120063602042002200f370320200241d0006a41186a2007290300370300200241d0006a41106a2008290300370300200241d0006a41086a200929030037030020022002290300370350200241d0006a41286a200e290300370300200241d0006a41306a200d29030037030020024188016a200c29030037030020024190016a200b29030037030020024198016a200a290300370300200220022903203703702000200241d0006a41d00010ab051a0c020b200041003602400c010b2001280200210702400240200628020022030d002004ad210f410021030c010b200741016a210720063301044220862004ad84210f0b20061031200fa7210502400240200f422088a7220420032f01064f0d00200321060c010b034002400240200328020022060d002005ad210f410021060c010b200741016a210720033301044220862005ad84210f0b20031031200fa7210520062103200f422088a7220420062f01064f0d000b0b200241186a2208200620044105746a220341206a290000370300200241106a2209200341186a290000370300200241086a220a200341106a2900003703002002200341086a290000370300200241206a41286a220b2006200441306c6a22034190036a290300370300200241206a41206a220c20034188036a290300370300200241206a41186a220d20034180036a290300370300200241206a41106a220e200341f8026a290300370300200241206a41086a2210200341f0026a2903003703002002200341e8026a290300370320200441027420066a41fc066a280200210302402007417f6a2206450d00034020032802f80621032006417f6a22060d000b0b2001410036020c200120053602082001200336020420014100360200200241d0006a41186a2008290300370300200241d0006a41106a2009290300370300200241d0006a41086a200a290300370300200241d0006a41286a2010290300370300200241d0006a41306a200e29030037030020024188016a200d29030037030020024190016a200c29030037030020024198016a200b29030037030020022002290300370350200220022903203703702000200241d0006a41d00010ab051a0b200241a0016a24000b940705017f047e087f057e017f23004180026b22022400200241c0006a200110af01024002402002290340a7450d00200041003602200c010b200241c0006a41106a290300210320022903482104200241286a200110af0102402002290328a7450d00200041003602200c010b200241286a41106a290300210520022903302106200241206a2001102c0240024002400240024020022802200d00200128020441306e220741306c2208417f4c0d02200228022421090240024020080d004108210a0c010b2008102d220a450d040b02402009450d004100210b0340200241003a00f801200b220c41016a210b2001280204417f6a21084100210d024002400240024003402008417f460d01200241d8016a200d6a2001280200220e2d00003a0000200120083602042001200e41016a3602002002200d41016a220e3a00f8012008417f6a2108200e210d200e4120470d000b200241b8016a41186a2208200241d8016a41186a290300370300200241b8016a41106a220d200241d8016a41106a290300370300200241b8016a41086a220e200241d8016a41086a290300370300200220022903d8013703b801200241086a200110af012002290308a70d01200241086a41106a290300210f20022903102110200241f8006a41086a200e2903002211370300200241f8006a41106a200d2903002212370300200241f8006a41186a20082903002213370300200241d8006a41086a220d2011370300200241d8006a41106a220e2012370300200241d8006a41186a22142013370300200220022903b8012211370378200220113703582007200c470d030240200c4101742208200b2008200b4b1b2207ad42307e2211422088a70d002011a7220841004e0d030b1034000b200d41ff0171450d00200241003a00f8010b200241f8006a41086a20024198016a41086a2903003703002007450d04200a10310c040b02400240200c0d002008102d210a0c010b200a200c41306c2008102f210a0b200a450d070b200a200c41306c6a2208200f3703082008201037030020082002290358370310200841186a200d290300370300200841206a200e290300370300200841286a2014290300370300200b2009470d000b0b200a0d010b200041003602200c040b20002004370300200020073602242000200a3602202000200637031020002003370308200041286a2009360200200041186a20053703000c030b1032000b200841081033000b200841081033000b20024180026a24000bc50301047f230041f0006b220224000240410e102d2203450d00200341002900a9ba41370000200341066a41002900afba413700002002428e808080e001370254200220033602502001200241d0006a1046200241086a41186a220120023502584220862002350250841000220341186a290000370300200241086a41106a2204200341106a290000370300200241086a41086a2205200341086a2900003703002002200329000037030820031031200241306a41186a2001290300370300200241306a41106a2004290300370300200241306a41086a20052903003703002002200229030837033002402002280254450d00200228025010310b200241086a200241306a41201052200241d0006a41086a200241086a41096a290000370300200241d0006a41106a200241086a41116a290000370300200241d0006a41186a200241086a41196a290000370300200220022900093703500240024020022d00084101460d00200041003a00000c010b200041013a000020002002290350370001200041096a200241d8006a290300370000200041116a200241e0006a290300370000200041196a200241e8006a2903003700000b200241f0006a24000f0b410e41011033000bcf0a06047f067e057f047e017f027e230041e0016b2202240041002103200241003a00c8012001280204417f6a210402400240024003402004417f460d01200241a8016a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c8012004417f6a21042005210320054120470d000b20024188016a41186a200241a8016a41186a29030037030020024188016a41106a200241a8016a41106a29030037030020024188016a41086a200241a8016a41086a290300370300200220022903a80137038801200241f0006a200110af012002290370a7450d01200041003602400c020b0240200341ff0171450d00200241003a00c8010b200041003602400c010b200241f0006a41106a290300210620022903782107200241d8006a200110af0102402002290358a7450d00200041003602400c010b200241d8006a41106a290300210820022903602109200241c0006a200110af0102402002290340a7450d00200041003602400c010b200241d0006a290300210a2002290348210b200241386a2001102c0240024002400240024002400240024020022802380d00200128020422044160712203417f4c0d02200228023c210c024002402004410576220d0d004108210e0c010b2003102d220e450d040b0240200c450d00200241206a41106a210f4100211041002105410021030340200241206a200110af01024002402002290320a70d00200f290300211120022903282112200241106a200110ae012002290310a70d00200229031821132002200110ae012002290300a7450d010b200d450d03200e10310c030b200341016a21042002290308211402402003200d470d0020102004201020044b1b220d41ffffff3f71200d470d08200d41057422154100480d080240024020030d002015102d210e0c010b200e20052015102f210e0b200e450d070b200e20056a2203201137030820032012370300200341186a2014370300200341106a2013370300201041026a2110200541206a210520042103200c2004470d000b0b200e0d010b200041003602400c070b200128020422044110490d052001280200220341086a2900002111200329000021122001200341106a3602002001200441706a360204200241a8016a200110840120022802a8012204450d0520022802ac012103200128020422054110490d04200241a8016a41086a35020021132001280200221041086a2900002114201029000021162001201041106a3602002001200541706a360204200241d0016a200110840120022802d0012201450d04200241a8016a41086a220520024188016a41086a290300370300200241a8016a41106a221020024188016a41106a290300370300200241a8016a41186a220f20024188016a41186a29030037030020022002290388013703a80120022902d4012117200041d8006a2014370300200041d0006a2016370300200041386a201137030020002012370330200041286a200a3703002000200b370320200041186a2008370300200020093703102000200637030820002007370300200041f8006a200c360200200041f4006a200d360200200041f0006a200e360200200041e4006a2017370200200041e0006a2001360200200041c8006a20133703002000200336024420002004360240200041fc006a20022903a80137020020004184016a20052903003702002000418c016a201029030037020020004194016a200f2903003702000c060b1032000b200341081033000b201541081033000b1034000b2000410036024002402003450d00200410310b200d450d01200e10310c010b20004100360240200d450d00200e10310b200241e0016a24000ba20302047f017e230041e0006b2202240002400240410a102d2203450d00200341086a41002f00a1f3423b000020034100290099f3423700002002428a808080a001370224200220033602202001200241206a1046200241386a41186a220120023502284220862002350220841000220341186a290000370300200241386a41106a2204200341106a290000370300200241386a41086a2205200341086a2900003703002002200329000037033820031031200241186a2001290300370300200241106a2004290300370300200241086a20052903003703002002200229033837030002402002280224450d00200228022010310b200241206a2002ad4280808080800484100210410240024020022802202203450d00200228022421012002200241286a28020036023420022003360230200241386a200241306a10820120022802382204450d03200229023c210602402001450d00200310310b20002006370204200020043602000c010b20004100360208200042083702000b200241e0006a24000f0b410a41011033000b41e9bcc0004133200241d8006a419cbdc0001038000b9c0301047f230041d0006b220224000240410a102d2203450d00200341086a41002f00a1f3423b000020034100290099f3423700002002428a808080a001370224200220033602202000200241206a1046200241306a41186a220020023502284220862002350220841000220341186a290000370300200241306a41106a2204200341106a290000370300200241306a41086a2205200341086a2900003703002002200329000037033020031031200241186a2000290300370300200241106a2004290300370300200241086a20052903003703002002200229033037030002402002280224450d00200228022010310b200241306a2001280200220420012802082203109d022002ad4280808080800484200235023842208620022802302200ad84100302402002280234450d00200010310b02402003450d00200341386c210020042103034002402003290300500d002003411c6a280200450d00200341186a28020010310b200341386a2103200041486a22000d000b0b0240200141046a280200450d00200410310b200241d0006a24000f0b410a41011033000b130020004111360204200041a4bbc1003602000b3400200041bf85c40036020420004100360200200041146a4116360200200041106a4198e8c100360200200041086a42073702000b6b01027f230041106b22022400200241003602082002420137030002404104102d22030d00410441011033000b2003410036000020024284808080c0003702042002200336020041002002106f200041086a200228020836020020002002290300370200200241106a24000b8c0201037f230041c0006b22022400200241186a4200370300200241106a22034200370300200241086a4200370300200241286a22044100360200200242003703002002420837032020024100360238200242013703302002200236023c2002413c6a200241306a10ac012002200336023c2002413c6a200241306a10ac012002280220210320042802002204200241306a106f02402004450d00200441306c21040340200341106a200241306a10462002200336023c200341306a21032002413c6a200241306a10ac01200441506a22040d000b0b20002002290330370200200041086a200241306a41086a28020036020002402002280224450d00200228022010310b200241c0006a24000b5d01017f230041206b22022400200242003703082002420137030020024100360218200242013703104100200241106a106f2002410c6a200241106a109101200041086a200228021836020020002002290310370200200241206a24000b3001017f02404104102d22020d00410441011033000b20004284808080c00037020420002002360200200241043600000b130020004103360204200041d08cc2003602000b3101017f02404104102d22020d00410441011033000b20004284808080c00037020420002002360200200241c01f3600000b3401017f02404108102d22020d00410841011033000b200042888080808001370204200020023602002002428090e4c0043700000b3001017f02404104102d22020d00410441011033000b20004284808080c00037020420002002360200200241053600000bbd1a05017f0a7e037f047e077f23004180046b22032400200341b0026a200110d00202400240024002400240024002400240024020032d00b0024101470d0020034188016a200341c9026a29000037030020034180016a200341c1026a290000370300200341f0006a41086a200341b9026a290000370300200320032900b102370370200341b0026a200341f0006a105320032802f002450d0120034190016a200341b0026a41a00110ab051a4200210402400240200329039001220520034190016a41086a29030022068450450d0042002107420021080c010b42002109200341e0006a20052006428094ebdc03420010b105200341d0006a2003290360220a200341e0006a41086a290300220b4280ec94a37c427f10b005200341c0006a200a200b2002ad220c420010b005200341a8016a290300210d20032903a001210a200341b0026a41086a220e418bbac100ad428080808080028422071001220f41086a2900003703002003200f2900003703b002200f1031200341d0036a41086a2210200e290300370300200320032903b0023703d003200341b0026a200341d0036aad22114280808080800284221210021041200520032903507c200c7e2208428094ebdc0380210b2003290340210c200341c0006a41086a29030021130240024020032802b002220f0d00420021140c010b200e2802004110490d04200f41086a2900002114200f290000210920032802b402450d00200f10310b200e20071001220f41086a2900003703002003200f2900003703b002200f10312010200e290300370300200320032903b0023703d003200320142006200d7d2005200a54ad7d220d20062013200c2008200b4280ec94a37c7e7c4280cab5ee0156200ba76aad7c220b200c54ad7c220c2005200b542006200c542006200c511b220e1b22082005200b200e1b22072005200a7d2205562008200d562008200d511b220e1b220a7d200920052007200e1b220554ad7d3703b8022003200920057d3703b0022012200341b0026aad220b4280808080800284100320034190016a41086a220e200e290300200a7d2003290390012206200554ad7d3703002003200620057d370390010240200720057d22062008200a7d2007200554ad7d220984500d004100211520032802800220034188026a2216280200220e41004120200e676b10e601201628020021172016410036020002402017450d00200b4280808080800284211220114280808080800284210c410021154100210f02400340024002400240200f20174f0d002003280280022218200f4105746a210e0240024020062009844200520d00200f41016a211042002106420021090c010b20034190016a41086a22102010290300200e41086a2219290300220520092006200e290300220b56200920055620092005511b22101b220a7d200329039001220d200b200620101b220554ad7d37030020034190016a41186a22102010290300200a7d20032903a001220b200554ad7d3703002003200d20057d370390012003200b20057d3703a001200e200e290300220b20057d37030020192019290300200a7d200b200554ad7d370300200341b0026a41086a2210418bbac100ad4280808080800284220d1001221a41086a2900003703002003201a2900003703b002201a1031200341d0036a41086a221b2010290300370300200320032903b0023703d003200341b0026a200c100210410240024020032802b002221a0d004200210b420021140c010b20032802b8024110490d0d201a41086a2900002114201a290000210b20032802b402450d00201a10310b2009200a7d2006200554ad7d2109200620057d21062010200d1001221a41086a2900003703002003201a2900003703b002201a1031201b2010290300370300200320032903b0023703d00320032014200a7d200b200554ad7d3703b8022003200b20057d3703b002200c20121003200f41016a2110200e290300201929030084500d030b02402015450d00200f20156b220f20174f0d022018200f4105746a220f200e290300370300200f41186a200e41186a290300370300200f41106a200e41106a290300370300200f41086a200e41086a2903003703000b2010210f20102017490d030c040b41bcafc000200f2017104b000b41ccafc000200f2017104b000b201541016a21152010210f20102017490d000b0b201720104d0d002015450d0020032802800220104105746a220e20154105746b200e201720106b41057410ac051a0b2016201720156b3602000b200341f0006a20034190016a420010544114102d220e450d05200e41002900a09b41370000200e41106a41002800b09b41360000200e41086a41002900a89b4137000020034294808080c0023702f4032003200e3602f0032001200341f0036a1046200341b0026a41186a220f20033502f80342208620033502f003841000220e41186a290000370300200341b0026a41106a2210200e41106a290000370300200341b0026a41086a2217200e41086a2900003703002003200e2900003703b002200e1031200341d0036a41186a200f290300370300200341d0036a41106a2010290300370300200341d0036a41086a2017290300370300200320032903b0023703d003024020032802f403450d0020032802f00310310b200341b0026a20114280808080800484220d100210410240024020032802b002220e0d0042002105420021060c010b200341b0026a41086a2802004110490d07200e41086a2900002106200e290000210520032802b402450d00200e10310b20012005200720052005200756200620085620062008511b220e1b22097d200620082006200e1b220b7d2005200954ad7d109702200720097d220c2008200b7d2007200954ad7d220a84500d004118102d220e450d07200e41002900b49b41370000200e41106a41002900c49b41370000200e41086a41002900bc9b413700002003429880808080033702f4032003200e3602f0032001200341f0036a1046200341b0026a41186a220f20033502f80342208620033502f003841000220e41186a290000370300200341b0026a41106a2210200e41106a290000370300200341b0026a41086a2217200e41086a2900003703002003200e2900003703b002200e1031200341d0036a41186a200f290300370300200341d0036a41106a2010290300370300200341d0036a41086a2017290300370300200320032903b0023703d003024020032802f403450d0020032802f00310310b200341b0026a200d100210410240024020032802b002220e0d0042002105420021060c010b200341b0026a41086a2802004110490d09200e41086a2900002106200e290000210520032802b402450d00200e10310b20012005200c20052005200c562006200a562006200a511b220e1b220c7d2006200a2006200e1b220a7d2005200c54ad7d109f02200a200b7c200c20097c2207200c54ad7c21080b0240024020032903b001220520034190016a41286a220e29030022068450450d00420021050c010b42002109200341306a20052006428094ebdc03420010b105200341206a2003290330220a200341306a41086a290300220b4280ec94a37c427f10b005200341106a200a200b2002ad220c420010b005200e20062006200341106a41086a2903002003290310220b200520032903207c200c7e220a200a428094ebdc0380220a4280ec94a37c7e7c4280cab5ee0156200aa76aad7c220a200b54ad7c220b2005200a542006200b542006200b511b220f1b220b7d20052005200a200f1b220654ad7d3703002003200520067d3703b001200341b0026a41086a220e418690c200ad428080808080028422051001220f41086a2900003703002003200f2900003703b002200f1031200341d0036a41086a2210200e290300370300200320032903b0023703d003200341b0026a200341d0036aad4280808080800284220a100210410240024020032802b002220f0d004200210c0c010b200e2802004110490d0a200f41086a290000210c200f290000210920032802b402450d00200f10310b200e20051001220f41086a2900003703002003200f2900003703b002200f10312010200e290300370300200320032903b0023703d0032003200c200b7d2009200654ad7d3703b8022003200920067d3703b002200a200341b0026aad42808080808002841003200341f0006a20034190016a42011054200320012006200b10df02200341086a2903002105200329030021040b200042003703202000200437031020002007370300200041286a4200370300200041186a200537030020002008370308024020034184026a280200450d0020032802800210310b0240200341d4016a280200450d00200341d0016a28020010310b0240200341f4016a280200450d00200341f0016a28020010310b20034180046a24000f0b41f099c400412b41b4b1c40010a401000b41f099c400412b41b4b1c40010a401000b41e9bcc0004133200341f0036a419cbdc0001038000b41e9bcc0004133200341f0036a419cbdc0001038000b411441011033000b41e9bcc0004133200341f0036a419cbdc0001038000b411841011033000b41e9bcc0004133200341f0036a419cbdc0001038000b41e9bcc0004133200341f0036a419cbdc0001038000bfb0602057f057e230041d0006b2204240002400240024002404110102d2205450d0020054100290089f342370000200541086a4100290091f342370000200442908080808002370224200420053602202001200441206a1046200441306a41186a220620043502284220862004350220841000220541186a290000370300200441306a41106a2207200541106a290000370300200441306a41086a2208200541086a2900003703002004200529000037033020051031200441186a2006290300370300200441106a2007290300370300200441086a20082903003703002004200429033037030002402004280224450d00200428022010310b200441306a2004ad428080808080048422091002104102400240200428023022050d004200210a4200210b0c010b200441306a41086a2802004110490d02200541086a290000210b2005290000210a2004280234450d00200510310b2001200a2002200a200a200256200b200356200b2003511b22051b220c7d200b2003200b20051b220d7d200a200c54ad7d104702402002200c7d220b2003200d7d2002200c54ad7d220a84500d004114102d2205450d0320054100290086f442370000200541106a4100280096f442360000200541086a410029008ef44237000020044294808080c002370224200420053602202001200441206a1046200441306a41186a220620043502284220862004350220841000220541186a290000370300200441306a41106a2207200541106a290000370300200441306a41086a2208200541086a2900003703002004200529000037033020051031200441186a2006290300370300200441106a2007290300370300200441086a20082903003703002004200429033037030002402004280224450d00200428022010310b200441306a20091002104102400240200428023022050d0042002102420021030c010b200441306a41086a2802004110490d05200541086a2900002103200529000021022004280234450d00200510310b20012002200b20022002200b562003200a562003200a511b22051b220b7d2003200a200320051b220a7d2002200b54ad7d10e503200a200d7c200b200c7c2202200b54ad7c21030b2000200237030020002003370308200441d0006a24000f0b411041011033000b41e9bcc0004133200441206a419cbdc0001038000b411441011033000b41e9bcc0004133200441206a419cbdc0001038000bec0a03037f027e047f230041106b220224002002410036020820024201370300200041fc006a200210462002200036020c2002410c6a200210ac012002200041106a36020c2002410c6a200210ac012002200041206a36020c2002410c6a200210ac0120002802702103200041f8006a28020022042002106f02402004450d00200320044105746a210403402002200336020c2002410c6a200210ac01200341106a200210b001200341186a200210b001200341206a22032004470d000b0b200041386a29030021052000290330210602400240024002400240024002400240024020022802042204200228020822036b4110490d00200228020021040c010b200341106a22072003490d07200441017422032007200320074b1b22034100480d070240024020040d002003102d21040c010b200228020020042003102f21040b2004450d012002200336020420022004360200200228020821030b200420036a22042005370008200420063700002002200341106a360208200041c0006a2802002108200041c8006a28020022032002106f02402003450d002008200341186c6a21090340200841086a2903002105200829030021060240024020022802042207200228020822046b4110490d00200228020021030c010b200441106a22032004490d09200741017422042003200420034b1b220a4100480d090240024020070d00200a102d21030c010b20022802002007200a102f21030b2003450d042002200a3602042002200336020020022802082104200a21070b200320046a220a2005370008200a20063700002002200441106a2204360208200841106a29030021050240200720046b41074b0d00200441086a220a2004490d0920074101742204200a2004200a4b1b22044100480d090240024020070d002004102d21030c010b200320072004102f21030b2003450d052002200436020420022003360200200228020821040b2002200441086a360208200320046a20053700002009200841186a2208470d000b0b200041d8006a2903002105200029035021060240024020022802042204200228020822036b4110490d00200228020021040c010b200341106a22072003490d07200441017422032007200320074b1b22034100480d070240024020040d002003102d21040c010b200228020020042003102f21040b2004450d042002200336020420022004360200200228020821030b200420036a22042005370008200420063700002002200341106a360208200041e0006a2802002108200041e8006a28020022032002106f02402003450d002008200341186c6a21090340200841086a2903002105200829030021060240024020022802042207200228020822046b4110490d00200228020021030c010b200441106a22032004490d09200741017422042003200420034b1b220a4100480d090240024020070d00200a102d21030c010b20022802002007200a102f21030b2003450d072002200a3602042002200336020020022802082104200a21070b200320046a220a2005370008200a20063700002002200441106a2204360208200841106a29030021050240200720046b41074b0d00200441086a220a2004490d0920074101742204200a2004200a4b1b22044100480d090240024020070d002004102d21030c010b200320072004102f21030b2003450d082002200436020420022003360200200228020821040b2002200441086a360208200320046a20053700002009200841186a2208470d000b0b200228020421032001290200200235020842208620022802002204ad84100302402003450d00200410310b200241106a24000f0b200341011033000b200a41011033000b200441011033000b200341011033000b200a41011033000b200441011033000b1034000bd4c00209017f047e047f017e067f067e017f067e197f23004180126b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e12000102030405060708090a0b111213141516000b200341b40a6a4101360200200342013702a40a200341d494c4003602a00a2003410236028c05200341cc94c40036028805200320034188056a3602b00a200341a00a6a41dc94c40010b301000b200141386a2903002104200141306a2903002105200141c0006a2903002106200141286a290300210720012d00012108200341e0106a41026a200141076a2d00003a0000200341c8046a41086a2001411c6a290200370300200341c8046a41106a200141246a2d00003a00002003200141056a2f00003b01e0102003200141146a2902003703c80441042109200141046a2d0000210a200141086a280200210b2001410c6a290200210c200241046a280000210d20022d0000210e200341c8026a41026a220f200241036a2d00003a0000200341a00a6a41086a2210200241186a290000370300200341a00a6a41106a2211200241206a2d00003a0000200320022f00013b01c8022003200241106a2900003703a00a41012112200241086a29000021130240200e4101470d00200341b8116a41026a200f2d00003a000020034188056a41086a201029030037030020034188056a41106a20112d00003a0000200320032f01c8023b01b811200320032903a00a3703880541002112200d21090b200341a8036a41026a200341b8116a41026a2d00003a0000200341e8036a41086a20034188056a41086a290300370300200341e8036a41106a20034188056a41106a2d00003a0000200320032f01b8113b01a80320032003290388053703e80302402012450d0041cac4c400210e410f2112024020090e0700500c0d0e0f56000b2013422088a721122013a7210e0c550b200341df026a200341e8036a41086a290300370000200341e7026a200341e8036a41106a2d00003a0000200320032f01a8033b01c802200320133700cf02200320093600cb02200320032903e8033700d7022003200341aa036a2d00003a00ca02410e102d2202450d15200241002900a9ba41370000200241066a41002900afba413700002003428e808080e0013702a40a200320023602a00a200341c8026a200341a00a6a1046200341f80f6a41186a221220033502a80a42208620033502a00a841000220241186a290000370300200341f80f6a41106a220e200241106a290000370300200341f80f6a41086a2209200241086a290000370300200320022900003703f80f2002103120034188026a41186a201229030037030020034188026a41106a200e29030037030020034188026a41086a2009290300370300200320032903f80f37038802024020032802a40a450d0020032802a00a10310b200341306a20034188026a4120410141004100103f024020032802304101470d0041ce90c200210e411e21120c550b200341f80f6a41026a2202200341e0106a41026a2d00003a0000200341a00a6a41086a2212200341c8046a41086a290300370300200341a00a6a41106a220e200341c8046a41106a2d00003a0000200320032f01e0103b01f80f200320032903c8043703a00a0240200a41ff01714101460d00200341d80f6a41026a20022d00003a000020034188056a41086a201229030037030020034188056a41106a200e2d00003a0000200320032f01f80f3b01d80f200320032903a00a370388050c4b0b200341a8036a200b41067610e30120032802a80321120240024020032802b003200b413f7122024b0d00410021020c010b200341d80f6a41026a201220024105746a220241026a2d00003a000020034190056a200241176a29000037030020034198056a2002411f6a2d00003a0000200320022f00003b01d80f2003200229000f370388052002290007210c2002280003210b410121020b024020032802ac03450d00201210310b20020d4a410121020c4b0b200141186a2903002104200141106a2903002105200141206a290300210c200141086a290300210641042109200241046a280000210b20022d00002112200341c8026a41026a220d200241036a2d00003a0000200341a00a6a41086a220f200241186a290000370300200341a00a6a41106a2210200241206a2d00003a0000200320022f00013b01c8022003200241106a2900003703a00a4101210e200241086a2900002113024020124101470d00200341e8036a41026a200d2d00003a000020034188056a41086a200f29030037030020034188056a41106a20102d00003a0000200320032f01c8023b01e803200320032903a00a370388054100210e200b21090b4117211220034188026a41176a20034188056a41086a290300370000200341a7026a20034188056a41106a2d00003a0000200320032f01e8033b0188022003200936008b022003200329038805370097022003200341e8036a41026a2d00003a008a022003201337008f020240200e450d0041cac4c400210e410f2112024020090e07004f0b0c0d0e55000b2013422088a721122013a7210e0c540b200341b8116a41186a20034188026a41186a290300370300200341b8116a41106a20034188026a41106a290300370300200341b8116a41086a20034188026a41086a29030037030020032003290388023703b811200341a00a6a200341b8116a10d0024101210241f1bac100210e024020032d00a00a4101470d00200341ca046a20032d00a30a3a000020034188056a41086a200341b40a6a29020037030020034195056a200341b90a6a290000370000200320032f00a10a3b01c8042003200341ac0a6a29020037038805200341a00a6a41086a28020021124100210220032802a40a210e0b200341a8036a41026a2209200341c8046a41026a2d00003a0000200341c8026a41086a20034188056a41086a290300370300200341c8026a41106a20034188056a41106a290300370300200320032f01c8043b01a80320032003290388053703c80220020d53200341fb036a200341c8026a41086a2202290300370000200341e8036a41186a200341d5026a290000370000200320032f01a8033b01e803200320123600ef032003200e3600eb03200320032903c8023700f303200320092d00003a00ea03200341a00a6a200341e8036a105320032802e00a2212450d4820034180116a41086a220e200341f00a6a29030037030020034180116a41106a2209200341f80a6a2903003703002003200341e80a6a29030037038011200341d80a6a2903002114200341c80a6a2903002115200341a00a6a41186a2903002116200341ac0a6a3502002117200341800b6a2802002111200341840b6a280200210b200341880b6a2903002118200341900b6a280200210a200341940b6a280200210d200341980b6a280200211920032903d00a211a20032903c00a211320032903b00a211b20032902a40a210720032802e40a210f20032802a00a2108200341c8026a41206a200341bc0b6a2802002210360200200341c8026a41186a200341b40b6a290200221c370300200341c8026a41106a200341ac0b6a290200221d3703002002200341a40b6a290200221e370300200341c8046a41086a200e290300370300200341c8046a41106a200929030037030020034188056a41086a201e37030020034188056a41106a201d37030020034188056a41186a201c37030020034188056a41206a201036020020032003290380113703c80420032003419c0b6a29020037038805200c4224200c4224541b211c109901211d02400240200650450d00200341386a200341b8116a105c2003290338220c20074220862008ad84221e7d221f200c56200341386a41086a2903002206201742208620074220888422077d200c201e54ad7d220c200656200c2006511b0d01200341d80a6a2014370300200341c80a6a220e2015370300200341a00a6a41186a22092016370300200341e40a6a200f360200200341e00a6a2012360200200341e80a6a20032903c804370300200341980b6a2019360200200341940b6a200d360200200341880b6a2018370300200341840b6a200b360200200341800b6a2011360200200341f00a6a200341c8046a41086a290300370300200341f80a6a200341c8046a41106a2903003703002003201a3703d00a200320133703c00a2003201b3703b00a2003201e3703a00a2003200a3602900b200320073703a80a200341a40b6a20034188056a41086a290300370200200341ac0b6a20034188056a41106a290300370200200341b40b6a20034188056a41186a290300370200200341bc0b6a20034188056a41206a280200360200200320032903880537029c0b200341b8116a200341e8036a2005201f201f200556200c200456200c2004511b22021b22132004200c20021b220c201c200341a00a6a10e20220034180116a41086a2212418bbac100ad428080808080028422051001220241086a290000370300200320022900003703801120021031200341a8036a41086a201229030037030020032003290380113703a803200341a00a6a200341a8036aad42808080808002842206100210410240024020032802a00a22020d0042002104420021070c010b200341a00a6a41086a2802004110490d18200241086a29000021072002290000210420032802a40a450d00200210310b20034180116a41086a221220051001220241086a290000370300200320022900003703801120021031200341a8036a41086a201229030037030020032003290380113703a8032003200420137c22053703a00a20032007200c7c2005200454ad7c3703a80a2006200341a00a6aad42808080808002841003200341a00a6a41206a200c37030020092013370300200341d00a6a201c370300200e201d370300200341a00a6a41106a4200370300200341a00a6a41086a41043a0000200341083a00a00a41014100200341a00a6a10450c480b200341c8006a200341b8116a10e3022003290348220c20137d221e200c56200341c8006a41086a290300220620157d200c201354ad7d220c200656200c2006511b0d00200341d80a6a2014370300200341a00a6a41186a2016370300200341e40a6a200f360200200341e00a6a2012360200200341e80a6a20032903c804370300200341980b6a2019360200200341940b6a2202200d360200200341880b6a2018370300200341840b6a200b360200200341800b6a2011360200200341f00a6a200341c8046a41086a290300370300200341f80a6a200341c8046a41106a2903003703002003201a3703d00a2003201b3703b00a2003200a3602900b200320074220862008ad843703a00a200320174220862007422088843703a80a200341a40b6a20034188056a41086a290300370200200341ac0b6a20034188056a41106a290300370200200341b40b6a20034188056a41186a290300370200200341bc0b6a200341a8056a28020036020020032005201e201e200556200c200456200c2004511b22121b220520137c22063703c00a200341c80a6a2004200c20121b221320157c2006200554ad7c370300200320032903880537029c0b200341e8036a200341a00a6a4201105402402002280200450d0020032802900b10310b024020032802e40a450d0020032802e00a10310b024020032802840b450d0020032802800b10310b20034180116a41086a2202418690c200ad428080808080028422041001221241086a290000370300200320122900003703801120121031200341a8036a41086a220e200229030037030020032003290380113703a803200341a00a6a200341a8036aad42808080808002842206100210410240024020032802a00a22120d004200210c420021070c010b200341a00a6a41086a2802004110490d18201241086a29000021072012290000210c20032802a40a450d00201210310b200220041001221241086a290000370300200320122900003703801120121031200e200229030037030020032003290380113703a8032003200c20057c22043703a00a2003200720137c2004200c54ad7c3703a80a2006200341a00a6aad42808080808002841003200341c00a6a2013370300200341b80a6a2005370300200341d00a6a201c370300200341c80a6a201d370300200341b00a6a4201370300200341a00a6a41086a41043a0000200341083a00a00a41014100200341a00a6a10450c470b0240200d450d00200a10310b0240200f450d00201210310b200b450d46201110310c460b200141106a2903002115200141086a290300211c200141186a290300211d41042109200241046a280000210b20022d0000210e200341c8026a41026a220d200241036a2d00003a0000200341a00a6a41086a220f200241186a290000370300200341a00a6a41106a2210200241206a2d00003a0000200320022f00013b01c8022003200241106a2900003703a00a41012112200241086a29000021130240200e4101470d00200341e8036a41026a200d2d00003a000020034188056a41086a200f29030037030020034188056a41106a20102d00003a0000200320032f01c8023b01e803200320032903a00a3703880541002112200b21090b200341ff016a20034188056a41086a29030037000020034187026a20034188056a41106a2d00003a0000200320032f01e8033b01e801200320093600eb0120032003290388053700f7012003200341e8036a41026a2d00003a00ea01200320133700ef0102402012450d0041cac4c400210e410f2112024020090e07004e0a0b0c0d54000b2013422088a721122013a7210e0c530b200341b8116a41186a200341e8016a41186a290300370300200341b8116a41106a200341e8016a41106a290300370300200341b8116a41086a200341e8016a41086a290300370300200320032903e8013703b811200341a00a6a200341b8116a105320032802e00a2220450d4420034180116a41086a2202200341a00a6a41d0006a29030037030020034180116a41106a2212200341a00a6a41d8006a2903003703002003200341a00a6a41c8006a29030037038011200341a00a6a41386a2903002117200341a00a6a41286a2903002114200341a00a6a41186a220e290300210c200341a00a6a410c6a3502002116200341a00a6a41e0006a2802002121200341a00a6a41e4006a2802002122200341a00a6a41e8006a2903002118200341900b6a2802002123200341a00a6a41f4006a2802002124200341a00a6a41f8006a280200210d20032903d00a211a20032903c00a211b20032903b00a211320032902a40a211f20032802e40a212520032802a00a2126200341c8026a41206a200341a00a6a419c016a2802002209360200200341c8026a41186a200341a00a6a4194016a2902002204370300200341c8026a41106a200341a00a6a418c016a2902002205370300200341c8026a41086a200341a00a6a4184016a2902002206370300200341a8036a41086a220b2002290300370300200341a8036a41106a22022012290300370300200341e8036a41086a22122006370300200341e8036a41106a220f2005370300200341e8036a41186a22102004370300200341e8036a41206a2211200936020020032003290380113703a8032003200341a00a6a41fc006a2902003703e803109901211e200341c8046a41086a200b290300370300200341c8046a41106a2002290300370300200341a00a6a41086a2012290300370300200341a00a6a41106a200f290300370300200e2010290300370300200341a00a6a41206a22272011280200360200200320032903a8033703c804200320032903e8033703a00a10990121050240200d0d004100210d0c3f0b41002112202321024100210e0340024002400240200241186a22092903002005580d0020120d01410021120c020b4200200c200241086a2903007d20132002290300220654ad7d2204201320067d22062013562004200c562004200c511b22091b210c4200200620091b2113201241016a21120c010b200e20126b220b200d4f0d18200341c8026a41186a220f200220124105746b220b41186a2210290300370300200341c8026a41106a2211200b41106a220a290300370300200341c8026a41086a2208200b41086a22192903003703002003200b2903003703c802200241086a22282903002104200241106a2229290300210620092903002107200b200229030037030020102007370300200a2006370300201920043703002009200f2903003703002029201129030037030020282008290300370300200220032903c8023703000b200241206a2102200d200e41016a220e460d3e0c000b0b200141186a2903002115200141106a290300211c200141086a290300211d41042109200241046a280000210b20022d0000210e200341c8026a41026a220d200241036a2d00003a0000200341a00a6a41086a220f200241186a290000370300200341a00a6a41106a2210200241206a2d00003a0000200320022f00013b01c8022003200241106a2900003703a00a41012112200241086a29000021130240200e4101470d00200341e8036a41026a200d2d00003a000020034188056a41086a200f29030037030020034188056a41106a20102d00003a0000200320032f01c8023b01e803200320032903a00a3703880541002112200b21090b2003419f026a20034188056a41086a290300370000200341a7026a20034188056a41106a2d00003a0000200320032f01e8033b0188022003200936008b022003200329038805370097022003200341e8036a41026a2d00003a008a022003201337008f0202402012450d0041cac4c400210e410f2112024020090e07004d090a0b0c53000b2013422088a721122013a7210e0c520b200341b8116a41186a20034188026a41186a290300370300200341b8116a41106a20034188026a41106a290300370300200341b8116a41086a20034188026a41086a29030037030020032003290388023703b811200341a00a6a200341b8116a105320032802e00a2220450d4620034180116a41086a2202200341a00a6a41d0006a29030037030020034180116a41106a2212200341a00a6a41d8006a2903003703002003200341a00a6a41c8006a29030037038011200341a00a6a41386a290300211e200341a00a6a41286a2903002117200341a00a6a41186a2903002113200341a00a6a410c6a3502002114200341a00a6a41e0006a2802002121200341a00a6a41e4006a2802002122200341a00a6a41e8006a2903002116200341900b6a2802002123200341a00a6a41f4006a2802002124200341a00a6a41f8006a280200210d20032903d00a211820032903c00a211a20032903b00a210c20032902a40a211b20032802e40a212520032802a00a2126200341c8026a41206a200341a00a6a419c016a280200220e360200200341c8026a41186a200341a00a6a4194016a2902002204370300200341c8026a41106a200341a00a6a418c016a2902002205370300200341c8026a41086a200341a00a6a4184016a2902002206370300200341c8046a41086a2002290300370300200341c8046a41106a2012290300370300200341e8036a41086a2006370300200341e8036a41106a2005370300200341e8036a41186a2004370300200341e8036a41206a2227200e36020020032003290380113703c80420032003419c0b6a2902003703e80310990121050240200d0d004100210d0c3c0b41002112202321024100210e0340024002400240200241186a22092903002005580d0020120d01410021120c020b42002013200241086a2903007d200c2002290300220654ad7d2204200c20067d2206200c56200420135620042013511b22091b21134200200620091b210c201241016a21120c010b200e20126b220b200d4f0d18200341c8026a41186a220f200220124105746b220b41186a2210290300370300200341c8026a41106a2211200b41106a220a290300370300200341c8026a41086a2208200b41086a22192903003703002003200b2903003703c802200241086a22282903002104200241106a2229290300210620092903002107200b200229030037030020102007370300200a2006370300201920043703002009200f2903003703002029201129030037030020282008290300370300200220032903c8023703000b200241206a2102200d200e41016a220e460d3b0c000b0b41042109200241046a280000210b20022d0000210e200341c8026a41026a220d200241036a2d00003a0000200341a00a6a41086a220f200241186a290000370300200341a00a6a41106a2210200241206a2d00003a0000200320022f00013b01c8022003200241106a2900003703a00a41012112200241086a29000021130240200e4101470d00200341e8036a41026a200d2d00003a000020034188056a41086a200f29030037030020034188056a41106a20102d00003a0000200320032f01c8023b01e803200320032903a00a3703880541002112200b21090b200341ff016a20034188056a41086a29030037000020034187026a20034188056a41106a2d00003a0000200320032f01e8033b01e801200320093600eb0120032003290388053700f7012003200341e8036a41026a2d00003a00ea01200320133700ef0102402012450d0041cac4c400210e410f2112024020090e07004c08090a0b52000b2013422088a721122013a7210e0c510b200341b8116a41186a200341e8016a41186a290300370300200341b8116a41106a200341e8016a41106a290300370300200341b8116a41086a200341e8016a41086a290300370300200320032903e8013703b811200341a00a6a200341b8116a105320032802e00a2220450d4220034180116a41086a2202200341f00a6a222129030037030020034180116a41106a2212200341f80a6a22222903003703002003200341e80a6a222429030037038011200341d80a6a22252903002115200341c80a6a2226290300211c200341a00a6a41186a2903002113200341ac0a6a2227350200211d200341800b6a222a280200212b200341840b6a222c280200212d200341880b6a222e290300211e200341900b6a2802002123200341940b6a222f2802002130200341980b6a2231280200210d20032903d00a211720032903c00a211420032903b00a210c20032902a40a211620032802e40a213220032802a00a2133200341c8026a41206a200341bc0b6a2234280200220e360200200341c8026a41186a200341b40b6a22352902002204370300200341c8026a41106a200341ac0b6a22362902002205370300200341c8026a41086a200341a40b6a22372902002206370300200341c8046a41086a2002290300370300200341c8046a41106a201229030037030020034188056a41086a200637030020034188056a41106a200537030020034188056a41186a200437030020034188056a41206a2238200e36020020032003290380113703c80420032003419c0b6a2902003703880510990121050240200d0d004100210d0c390b41002112202321024100210e0340024002400240200241186a22092903002005580d0020120d01410021120c020b42002013200241086a2903007d200c2002290300220654ad7d2204200c20067d2206200c56200420135620042013511b22091b21134200200620091b210c201241016a21120c010b200e20126b220b200d4f0d18200341c8026a41186a220f200220124105746b220b41186a2210290300370300200341c8026a41106a2211200b41106a220a290300370300200341c8026a41086a2208200b41086a22192903003703002003200b2903003703c802200241086a22282903002104200241106a2229290300210620092903002107200b200229030037030020102007370300200a2006370300201920043703002009200f2903003703002029201129030037030020282008290300370300200220032903c8023703000b200241206a2102200d200e41016a220e460d380c000b0b200141086a290300211341042109200241046a280000210b20022d0000210e200341c8026a41026a220d200241036a2d00003a0000200341a00a6a41086a220f200241186a290000370300200341a00a6a41106a2210200241206a2d00003a0000200320022f00013b01c8022003200241106a2900003703a00a41012112200241086a290000210c0240200e4101470d00200341e8036a41026a200d2d00003a000020034188056a41086a200f29030037030020034188056a41106a20102d00003a0000200320032f01c8023b01e803200320032903a00a3703880541002112200b21090b200341ff016a20034188056a41086a29030037000020034187026a20034188056a41106a2d00003a0000200320032f01e8033b01e801200320093600eb0120032003290388053700f7012003200341e8036a41026a2d00003a00ea012003200c3700ef0102402012450d0041cac4c400210e410f2112024020090e07004b0708090a51000b200c422088a72112200ca7210e0c500b200341b8116a41186a200341e8016a41186a290300370300200341b8116a41106a200341e8016a41106a290300370300200341b8116a41086a200341e8016a41086a290300370300200320032903e8013703b811200341a00a6a200341b8116a105320032802e00a2212450d4120034180116a41086a220b200341a00a6a41d0006a29030037030020034180116a41106a220d200341a00a6a41d8006a2903003703002003200341a00a6a41c8006a29030037038011200341900b6a2802002109200341a00a6a41e0006a290300210c200341a00a6a41e8006a2903002104200341a00a6a41f4006a280200210e200341a00a6a41f8006a280200210f200341a00a6a410c6a3502002105200341a00a6a41186a2903002106200341a00a6a41286a2903002107200341a00a6a41386a290300211520032802a00a211020032902a40a211c20032903b00a211d20032903c00a211e20032903d00a211720032802e40a2102200341c8026a41206a200341a00a6a419c016a2802002211360200200341c8026a41186a200341a00a6a4194016a2902002214370300200341c8026a41106a200341a00a6a418c016a2902002216370300200341c8026a41086a200341a00a6a4184016a2902002218370300200341c8046a41086a220a200b290300370300200341c8046a41106a220b200d290300370300200341e8036a41086a220d2018370300200341e8036a41106a22082016370300200341e8036a41186a22192014370300200341e8036a41206a2228201136020020032003290380113703c8042003200341a00a6a41fc006a2902003703e80320034188056a41386a201537030020034188056a41286a200737030020034188056a41186a200637030020034188056a410c6a20053e0200200341cc056a2002360200200341c8056a2012360200200320173703b8052003201e3703a8052003201d370398052003201c37028c05200320103602880520034188056a41d8006a200b29030037030020034188056a41d0006a200a29030037030020034188056a41c8006a20032903c80437030020034188056a41f8006a200f36020020034188056a41f4006a200e36020020034188056a41e8006a200437030020034188056a41e0006a200c370300200320093602f80520034188056a419c016a202828020036020020034188056a4194016a201929030037020020034188056a418c016a200829030037020020034188056a4184016a200d290300370200200320032903e803370284060240109901221c20135a0d000240200328028006220d450d0020034188056a41fc006a212320032802f80521024100210e4100210903400240024002400240200241186a220b2903002013520d00200341c0016a20022903002205200241086a29030022062013200241106a29030022047d428090fbd3098010e402200341c0016a41086a290300210720032903c001210c200341b0016a20052006201c20047d428090fbd3098010e40220034190016a200c20032903b00122047d2215420120154201562007200341b0016a41086a2903007d200c200454ad7d220c420052200c501b22121b200c420020121b4203420010b005200341a0016a202310e30220032903a001220c20032903900122077d2215200c56200341a0016a41086a290300220420034190016a41086a290300221d7d200c200754ad7d220c200456200c2004511b0d0020034188016a20232015200c10e502200328028801450d010b200e0d014100210e0c020b20034188056a41186a221242002012290300220c20067d2003290398052204200554ad7d2206200420057d22052004562006200c562006200c511b22121b37030020034200200520121b37039805200341f8006a20232007201d10df022003290378210c2003200341f8006a41086a2903003703a80a2003200c3703a00a200e41016a210e2003200341a00a6a3602e803200341e8036a10e6020c010b2009200e6b2212200d4f0d1a200341a00a6a41186a220f2002200e4105746b221241186a2210290300370300200341a00a6a41106a2211201241106a220a290300370300200341a00a6a41086a2208201241086a2219290300370300200320122903003703a00a200241086a2228290300210c200241106a22292903002104200b29030021052012200229030037030020102005370300200a20043703002019200c370300200b200f2903003703002029201129030037030020282008290300370300200220032903a00a3703000b200241206a2102200d200941016a2209470d000b200e450d00200328028006200d200e6b2202490d0020032002360280060b200341a00a6a20034188056a41a00110ab051a410e102d2202450d182002410029009bba41370000200241066a41002900a1ba413700002003428e808080e0013702ec03200320023602e803200341b8116a200341e8036a1046200341f80f6a41186a221220033502f00342208620033502e803841000220241186a290000370300200341f80f6a41106a220e200241106a290000370300200341f80f6a41086a2209200241086a290000370300200320022900003703f80f2002103120034188026a41186a201229030037030020034188026a41106a200e29030037030020034188026a41086a2009290300370300200320032903f80f37038802024020032802ec03450d0020032802e80310310b200341203602ec03200320034188026a3602e803200341a00a6a200341e8036a10e0020240200341940b6a280200450d0020032802900b10310b0240200341e40a6a280200450d00200341e00a6a28020010310b200341840b6a280200450d43200341800b6a28020010310c430b0240200e450d002009103120032802cc0521020b02402002450d0020032802c80510310b418e91c200210e413a211220032802ec05450d4f20032802e80510310c4f0b200141106a28020021192001410c6a280200210f200141086a280200210b41042109200141046a280200210d200241046a280000211020022d0000210e200341c8026a41026a2211200241036a2d00003a0000200341a00a6a41086a220a200241186a290000370300200341a00a6a41106a2208200241206a2d00003a0000200320022f00013b01c8022003200241106a2900003703a00a41012112200241086a29000021130240200e4101470d00200341e8036a41026a20112d00003a000020034188056a41086a200a29030037030020034188056a41106a20082d00003a0000200320032f01c8023b01e803200320032903a00a3703880541002112201021090b20034180116a41026a200341e8036a41026a2d00003a0000200341b8116a41086a20034188056a41086a290300370300200341b8116a41106a20034188056a41106a2d00003a0000200320032f01e8033b01801120032003290388053703b81102402012450d0041cac4c400210e410f211202400240024002400240024020090e070001020304053a000b2013422088a721122013a7210e0c390b41bcc4c400210e410e21120c380b41b0c4c400210e410c21120c370b41a7c4c400210e410921120c360b4194c4c400210e411321120c350b4183c4c400210e411121120c340b200341bf036a200341b8116a41086a2202290300370000411f2112200341a8036a411f6a200341b8116a41106a220e2d00003a0000200320032f0180113b01a803200320133700af03200320093600ab03200320032903b8113700b703200320034182116a2d00003a00aa03200341a00a6a200341a8036a1053024020032802e00a22090d004188bbc100210e411c21120c340b20034180116a41086a2210200341a00a6a41d0006a29030037030020034180116a41106a2211200341a00a6a41d8006a290300370300200341c8026a41206a220a200341a00a6a419c016a280200360200200341c8026a41186a2208200341a00a6a4194016a290200370300200341c8026a41106a2228200341a00a6a418c016a290200370300200341c8026a41086a2229200341a00a6a4184016a2902003703002003200341a00a6a41c8006a2903003703801120032003419c0b6a2902003703c802200341900b6a2903002113200341a00a6a41e0006a290300210c200341a00a6a41e8006a2903002104200341a00a6a41f8006a2802002123200341a00a6a410c6a3502002105200341a00a6a41186a2903002106200341a00a6a41286a2903002107200341a00a6a41386a290300211520032802a00a212020032902a40a211c20032903b00a211d20032903c00a211e20032903d00a211720032802e40a212120022010290300370300200e2011290300370300200341e8036a41086a22102029290300370300200341e8036a41106a22112028290300370300200341e8036a41186a22282008290300370300200341e8036a41206a2208200a28020036020020032003290380113703b811200320032903c8023703e80320034188056a41386a201537030020034188056a41286a200737030020034188056a41186a200637030020034188056a410c6a20053e0200200341cc056a2021360200200341c8056a200936020020034188056a41d8006a200e29030037030020034188056a41d0006a200229030037030020034188056a41c8006a20032903b811370300200320173703b8052003201e3703a8052003201d370398052003201c37028c05200320203602880520034188056a41f8006a202336020020034188056a41e8006a200437030020034188056a41e0006a200c370300200320133703f80520034188056a419c016a200828020036020020034188056a4194016a202829030037020020034188056a418c016a201129030037020020034188056a4184016a2010290300370200200320032903e8033702840641a8d4c000210e200f411f4b0d26200341d8016a412e200d200f10e7024136211241c7d4c000210e20032802d8014101460d26200341d0016a41c000200d200f10e70220032802d0014101460d2602400240200f4104490d004119211241fdd4c000210e200d4196d5c000460d28200d28000041e8e8d18307460d28200f4105490d01200d41aad5c000460d2841aad5c000200d410510ad052102200d41a7d5c000460d282002450d280c260b41012109200f417e6a220241014b0d2820020e022600260b200d41a7d5c000470d244119211241fdd4c000210e0c260b2001410c6a280200210b200141086a280200211941042109200141046a2802002108200241046a280000210d20022d0000210e200341c8026a41026a220f200241036a2d00003a0000200341a00a6a41086a2210200241186a290000370300200341a00a6a41106a2211200241206a2d00003a0000200320022f00013b01c8022003200241106a2900003703a00a41012112200241086a29000021130240200e4101470d00200341e8036a41026a200f2d00003a000020034188056a41086a201029030037030020034188056a41106a20112d00003a0000200320032f01c8023b01e803200320032903a00a3703880541002112200d21090b200341ff016a20034188056a41086a29030037000020034187026a20034188056a41106a2d00003a0000200320032f01e8033b01e801200320093600eb0120032003290388053700f7012003200341e8036a41026a2d00003a00ea01200320133700ef0102402012450d0041cac4c400210e410f211202400240024002400240024020090e0700010203040529000b2013422088a721122013a7210e0c280b41bcc4c400210e410e21120c270b41b0c4c400210e410c21120c260b41a7c4c400210e410921120c250b4194c4c400210e411321120c240b4183c4c400210e411121120c230b200341a8026a41186a200341e8016a41186a290200370300200341a8026a41106a200341e8016a41106a290200370300200341a8026a41086a200341e8016a41086a290200370300200320032902e8013703a802200341a00a6a200341a8026a1053024020032802e00a22120d00411c21124188bbc100210e0c230b20034180116a41086a220e200341a00a6a41d0006a29030037030020034180116a41106a2209200341a00a6a41d8006a2903003703002003200341a00a6a41c8006a29030037038011200341900b6a280200210d200341a00a6a41e0006a2903002113200341a00a6a41e8006a290300210c200341a00a6a41f4006a2802002102200341a00a6a41f8006a280200210f200341a00a6a410c6a3502002104200341a00a6a41186a2903002105200341a00a6a41286a2903002106200341a00a6a41386a290300210720032802a00a211020032902a40a211520032903b00a211c20032903c00a211d20032903d00a211e20032802e40a2111200341c8026a41206a200341a00a6a419c016a280200220a360200200341c8026a41186a200341a00a6a4194016a2902002217370300200341c8026a41106a200341a00a6a418c016a2902002214370300200341c8026a41086a200341a00a6a4184016a2902002216370300200341b8116a41086a2228200e290300370300200341b8116a41106a220e2009290300370300200341e8036a41086a22092016370300200341e8036a41106a22292014370300200341e8036a41186a22232017370300200341e8036a41206a2220200a36020020032003290380113703b8112003200341a00a6a41fc006a2902003703e80320034188056a41386a200737030020034188056a41286a200637030020034188056a41186a200537030020034188056a410c6a20043e0200200341cc056a2011360200200341c8056a20123602002003201e3703b8052003201d3703a8052003201c370398052003201537028c05200320103602880520034188056a41d8006a200e29030037030020034188056a41d0006a202829030037030020034188056a41c8006a20032903b81137030020034188056a41f8006a200f36020020034188056a41f4006a200236020020034188056a41e8006a200c37030020034188056a41e0006a20133703002003200d3602f80520034188056a419c016a202028020036020020034188056a4194016a202329030037020020034188056a418c016a202929030037020020034188056a4184016a2009290300370200200320032903e80337028406200b0d2041c891c200210e411a2112410121090c210b41042109200241046a280000210b20022d0000210e200341c8026a41026a220d200241036a2d00003a0000200341a00a6a41086a220f200241186a290000370300200341a00a6a41106a2210200241206a2d00003a0000200320022f00013b01c8022003200241106a2900003703a00a41012112200241086a29000021130240200e4101470d00200341e8036a41026a200d2d00003a000020034188056a41086a200f29030037030020034188056a41106a20102d00003a0000200320032f01c8023b01e803200320032903a00a3703880541002112200b21090b2003419f026a20034188056a41086a290300370000200341a7026a20034188056a41106a2d00003a0000200320032f01e8033b0188022003200936008b022003200329038805370097022003200341e8036a41026a2d00003a008a022003201337008f0202402012450d0041cac4c400210e410f2112024020090e070048040506074e000b2013422088a721122013a7210e0c4d0b200341b8116a41186a20034188026a41186a290300370300200341b8116a41106a20034188026a41106a290300370300200341b8116a41086a20034188026a41086a29030037030020032003290388023703b811200341a00a6a200341b8116a105320032802e00a2202450d3e20034180116a41086a2212200341a00a6a41d0006a29030037030020034180116a41106a220e200341a00a6a41d8006a290300370300200341c8026a41206a2209200341a00a6a419c016a280200360200200341c8026a41186a220b200341a00a6a4194016a290200370300200341c8026a41106a220d200341a00a6a418c016a290200370300200341c8026a41086a220f200341a00a6a4184016a2902003703002003200341a00a6a41c8006a290300370380112003200341a00a6a41fc006a2902003703c802200341900b6a2903002113200341a00a6a41e0006a290300210c200341a00a6a41e8006a2903002104200341a00a6a41f8006a2802002110200341a00a6a410c6a3502002105200341a00a6a41186a2903002106200341a00a6a41286a2903002107200341a00a6a41386a290300211520032802a00a211120032902a40a211c20032903b00a211d20032903c00a211e20032903d00a211720032802e40a210a200341c8046a41086a22082012290300370300200341c8046a41106a2212200e290300370300200341e8036a41086a220e200f290300370300200341e8036a41106a220f200d290300370300200341e8036a41186a220d200b290300370300200341e8036a41206a220b200928020036020020032003290380113703c804200320032903c8023703e80320034188056a41386a201537030020034188056a41286a200737030020034188056a41186a200637030020034188056a410c6a20053e0200200341cc056a200a360200200341c8056a200236020020034188056a41d8006a201229030037030020034188056a41d0006a200829030037030020034188056a41c8006a20032903c804370300200320173703b8052003201e3703a8052003201d370398052003201c37028c05200320113602880520034188056a41f8006a201036020020034188056a41e8006a200437030020034188056a41e0006a200c370300200320133703f80520034188056a419c016a200b28020036020020034188056a4194016a200d29030037020020034188056a418c016a200f29030037020020034188056a4184016a200e290300370200200320032903e8033702840620034188056a41fc006a220210c102200210c2020240200341fc056a280200450d0020032802f80510310b024020032802cc05450d0020032802c80510310b20032802ec05450d3f20032802e80510310c3f0b4104210920012d00012111200241046a280000210b20022d0000210e200341c8026a41026a220d200241036a2d00003a0000200341a00a6a41086a220f200241186a290000370300200341a00a6a41106a2210200241206a2d00003a0000200320022f00013b01c8022003200241106a2900003703a00a41012112200241086a29000021130240200e4101470d00200341e8036a41026a200d2d00003a000020034188056a41086a200f29030037030020034188056a41106a20102d00003a0000200320032f01c8023b01e803200320032903a00a3703880541002112200b21090b200341ff016a20034188056a41086a29030037000020034187026a20034188056a41106a2d00003a0000200320032f01e8033b01e801200320093600eb0120032003290388053700f7012003200341e8036a41026a2d00003a00ea01200320133700ef0102402012450d0041cac4c400210e410f2112024020090e070047030405064d000b2013422088a721122013a7210e0c4c0b200341b8116a41186a200341e8016a41186a290200370300200341b8116a41106a200341e8016a41106a290200370300200341b8116a41086a200341e8016a41086a290200370300200320032902e8013703b811200341a00a6a200341b8116a105320032802e00a2202450d3d20034180116a41086a2212200341a00a6a41d0006a29030037030020034180116a41106a220e200341a00a6a41d8006a290300370300200341c8026a41206a2209200341a00a6a419c016a280200360200200341c8026a41186a220b200341a00a6a4194016a290200370300200341c8026a41106a220d200341a00a6a418c016a290200370300200341c8026a41086a220f200341a00a6a4184016a2902003703002003200341a00a6a41c8006a290300370380112003200341a00a6a41fc006a2902003703c802200341900b6a2903002113200341a00a6a41e0006a290300210c200341a00a6a41e8006a2903002104200341a00a6a41f8006a2802002110200341a00a6a410c6a3502002105200341a00a6a41186a2903002106200341a00a6a41286a2903002107200341a00a6a41386a290300211520032802a00a210a20032902a40a211c20032903b00a211d20032903c00a211e20032903d00a211720032802e40a2108200341c8046a41086a22192012290300370300200341c8046a41106a2212200e290300370300200341e8036a41086a220e200f290300370300200341e8036a41106a220f200d290300370300200341e8036a41186a220d200b290300370300200341e8036a41206a220b200928020036020020032003290380113703c804200320032903c8023703e80320034188056a41386a201537030020034188056a41286a200737030020034188056a41186a200637030020034188056a410c6a20053e0200200341cc056a2008360200200341c8056a200236020020034188056a41d8006a201229030037030020034188056a41d0006a201929030037030020034188056a41c8006a20032903c804370300200320173703b8052003201e3703a8052003201d370398052003201c37028c052003200a3602880520034188056a41f8006a201036020020034188056a41e8006a200437030020034188056a41e0006a200c370300200320133703f80520034188056a419c016a200b28020036020020034188056a4194016a200d29030037020020034188056a418c016a200f29030037020020034188056a4184016a200e290300370200200320032903e80337028406410d102d2202450d14200241002900b7ba41370000200241056a41002900bcba413700002003428d808080d0013702a40a200320023602a00a20034188056a41fc006a200341a00a6a1046200341f80f6a41186a221220033502a80a42208620033502a00a841000220241186a290000370300200341f80f6a41106a220e200241106a290000370300200341f80f6a41086a2209200241086a290000370300200320022900003703f80f2002103120034188026a41186a201229030037030020034188026a41106a200e29030037030020034188026a41086a2009290300370300200320032903f80f37038802024020032802a40a450d0020032802a00a10310b4101102d2202450d15200220113a000020034188026aad42808080808004842002ad42808080801084100320021031024020032802fc05450d0020032802f80510310b024020032802cc05450d0020032802c80510310b20032802ec05450d3e20032802e80510310c3e0b200341b80f6a41026a200141076a2d00003a000020034198106a41086a2001411c6a29020037030020034198106a41106a200141246a2d00003a00002003200141056a2f00003b01b80f2003200141146a2902003703981041042109200141046a2d0000210a200141086a280200210b2001410c6a290200210c200241046a280000210d20022d0000210e200341c8026a41026a220f200241036a2d00003a0000200341a00a6a41086a2210200241186a290000370300200341a00a6a41106a2211200241206a2d00003a0000200320022f00013b01c8022003200241106a2900003703a00a41012112200241086a29000021130240200e4101470d00200341e8036a41026a200f2d00003a000020034188056a41086a201029030037030020034188056a41106a20112d00003a0000200320032f01c8023b01e803200320032903a00a3703880541002112200d21090b20034180116a41026a200341e8036a41026a2d00003a0000200341b8116a41086a20034188056a41086a290300370300200341b8116a41106a20034188056a41106a2d00003a0000200320032f01e8033b01801120032003290388053703b8112012450d0441cac4c400210e410f2112024020090e070045010203044b000b2013422088a721122013a7210e0c4a0b41b0c4c400210e410c21120c490b41a7c4c400210e410921120c480b4194c4c400210e411321120c470b4183c4c400210e411121120c460b41172112200341b8106a41176a200341b8116a41086a290300370000200341d7106a200341b8116a41106a2d00003a0000200320032f0180113b01b810200320133700bf10200320093600bb10200320032903b8113700c710200320034180116a41026a2d00003a00ba10200341a00a6a200341b8106a10d0024101210241f1bac100210e024020032d00a00a4101470d00200341c8046a41026a20032d00a30a3a000020034188056a41086a200341b40a6a29020037030020034195056a200341b90a6a290000370000200320032f00a10a3b01c8042003200341ac0a6a29020037038805200341a00a6a41086a28020021124100210220032802a40a210e0b200341a8036a41026a200341c8046a41026a2d00003a0000200341c8026a41086a20034188056a41086a290300370300200341c8026a41106a20034188056a41106a290300370300200320032f01c8043b01a80320032003290388053703c80220020d45200341f3106a200341c8026a41086a290300370000200341f8106a200341d5026a290000370000200320032f01a8033b01e010200320123600e7102003200e3600e310200320032903c8023700eb102003200341a8036a41026a2d00003a00e210200341f80f6a41026a2202200341b80f6a41026a2d00003a0000200320032f01b80f3b01f80f200341a00a6a41086a221220034198106a41086a290300370300200341a00a6a41106a220e20034198106a41106a2d00003a000020032003290398103703a00a0240200a41ff01714101460d00200341d80f6a41026a20022d00003a000020034188056a41086a201229030037030020034188056a41106a200e2d00003a0000200320032f01f80f3b01d80f200320032903a00a370388050c170b200341e8036a200b41067610e30120032802e80321120240024020032802f003200b413f7122024b0d00410021020c010b200341d80f6a41026a201220024105746a220241026a2d00003a000020034190056a200241176a29000037030020034198056a2002411f6a2d00003a0000200320022f00003b01d80f2003200229000f370388052002290007210c2002280003210b410121020b024020032802ec03450d00201210310b20020d16410121020c170b41012109024020022d0000450d004183c4c400210e411121124101210f4101210b0c460b200141046a280200211220034180116a41086a220e41afd5c000ad4280808080e002841001220241086a290000370300200320022900003703801120021031200341a8036a41086a200e29030037030020032003290380113703a803200320123602a00a200341a8036aad4280808080800284200341a00a6aad4280808080c0008410034100210e0c380b20022d00000d1220034180116a41086a221241c6d6c000ad42808080808002841001220241086a290000370300200320022900003703801120021031200341a8036a41086a201229030037030020032003290380113703a803410121094101102d2202450d0e200241023a0000200341a8036aad42808080808002842002ad428080808010841003200210310c1d0b20022d00000d1120034180116a41086a221241c6d6c000ad42808080808002841001220241086a290000370300200320022900003703801120021031200341a8036a41086a201229030037030020032003290380113703a803410121094101102d2202450d0e200241023a0000200341a8036aad42808080808002842002ad428080808010841003200210310c1c0b200141086a280200210e200141046a280200210d024020022d0000450d00411121124100210b410121090240200e0d004101210f0c130b200d10314101210f0c120b2001410c6a280200210220034180116a41086a2209419690c200ad4280808080d002841001221241086a290000370300200320122900003703801120121031200341a8036a41086a200929030037030020032003290380113703a803200341003602a80a200342013703a00a2002200341a00a6a106f02402002450d0020024105742112200d210203402002200341a00a6a1046200241206a2102201241606a22120d000b0b20032802a40a2102200341a8036aad428080808080028420033502a80a42208620032802a00a2212ad84100302402002450d00201210310b41012109200e450d0f200d10310c0f0b200341b80a6a200141196a29000037030041112112200341b00a6a200141116a290000370300200341a00a6a41086a200141096a290000370300200320012900013703a00a4183c4c400210e20022d00000d40200342f3e885db96cddbb3203703b81120034188056a200341a00a6a109e02200328028c05210e2003200328028805220220032802900541386c6a3602940520032002360290052003200e36028c0520032002360288052003200341b8116a36029805200341e8036a20034188056a108e0120034188056a41086a220e200341e8036a41086a2209280200360200200320032903e80337038805200341a00a6a20034188056a109c02200342f3e885db96cddbb3203703c80220034188056a200341a00a6a10d202200328028c05210b2003200328028805220220032802900541386c6a3602940520032002360290052003200b36028c0520032002360288052003200341c8026a36029805200341e8036a20034188056a108e01200e2009280200360200200320032903e80337038805200341a00a6a20034188056a10d302200341a00a6a1098024100210e0c400b20022d00000d0e20034180116a41086a221241c6d6c000ad42808080808002841001220241086a290000370300200320022900003703801120021031200341a8036a41086a201229030037030020032003290380113703a803410121094101102d2202450d0c200241033a0000200341a8036aad42808080808002842002ad428080808010841003200210310c190b410e41011033000b41e9bcc0004133200341f8116a419cbdc0001038000b41e9bcc0004133200341f8116a419cbdc0001038000b41f8b0c400200b200d104b000b41f8b0c400200b200d104b000b41f8b0c400200b200d104b000b41f8b0c4002012200d104b000b410e41011033000b410d41011033000b410141011033000b410141011033000b410141011033000b410141011033000b4100210b4101210f4100210e0c320b41112112410121094101210f4101210b0b4183c4c400210e0c300b200341e8036a41026a200341d80f6a41026a2d00003a0000200341a00a6a41086a20034188056a41086a290300370300200341a00a6a41106a20034188056a41106a2d00003a0000200320032f01d80f3b01e80320032003290388053703a00a410021020b200341ff016a200341a00a6a41086a29030037000020034187026a200341a00a6a41106a2d00003a0000200320032f01e8033b01e8012003200c3700ef012003200b3600eb01200320032903a00a3700f7012003200341ea036a2d00003a00ea0120020d2720034180116a41186a200341e8016a41186a29020037030020034180116a41106a200341e8016a41106a29020037030020034180116a41086a200341e8016a41086a290200370300200320032902e8013703801102400240024002400240410e102d2202450d002002410029009bba41370000200241066a41002900a1ba413700002003428e808080e0013702a40a200320023602a00a20034180116a200341a00a6a1046200341f80f6a41186a221220033502a80a42208620033502a00a841000220241186a290000370300200341f80f6a41106a220e200241106a290000370300200341f80f6a41086a2209200241086a290000370300200320022900003703f80f2002103120034188026a41186a201229030037030020034188026a41106a200e29030037030020034188026a41086a2009290300370300200320032903f80f37038802024020032802a40a450d0020032802a00a10310b200341e0016a20034188026a4120410141004100103f20032802e0014101460d2a20034180116a200341e0106a412010ad05450d25200341b8106a20034180116a10e802410e102d2202450d012002410029009bba41370000200241066a41002900a1ba413700002003428e808080e0013702a40a200320023602a00a200341e0106a200341a00a6a1046200341f80f6a41186a221220033502a80a42208620033502a00a841000220241186a290000370300200341f80f6a41106a220e200241106a290000370300200341f80f6a41086a2209200241086a290000370300200320022900003703f80f2002103120034188026a41186a201229030037030020034188026a41106a200e29030037030020034188026a41086a2009290300370300200320032903f80f37038802024020032802a40a450d0020032802a00a10310b200341f80f6a20034188026aad428080808080048422131002104120032802f80f2212450d0320032802fc0f210e2003200341f80f6a41086a2802003602dc0f200320123602d80f200341a00a6a200341d80f6a10d10220032802e00a2202450d02200341b8116a41386a200341a00a6a41386a290300370300200341b8116a41306a200341a00a6a41306a290300370300200341b8116a41286a200341a00a6a41286a290300370300200341b8116a41206a200341a00a6a41206a290300370300200341b8116a41186a200341a00a6a41186a290300370300200341b8116a41106a200341a00a6a41106a290300370300200341b8116a41086a200341a00a6a41086a290300370300200320032903a00a3703b81120034188056a200341e40a6a41dc0010ab051a0240200e450d00201210310b201310090c040b410e41011033000b410e41011033000b41e9bcc0004133200341f8116a419cbdc0001038000b410021020b200341c8046a41386a2212200341b8116a41386a290300370300200341c8046a41306a220e200341b8116a41306a290300370300200341c8046a41286a2209200341b8116a41286a290300370300200341c8046a41206a220b200341b8116a41206a290300370300200341c8046a41186a220d200341b8116a41186a290300370300200341c8046a41106a220f200341b8116a41106a290300370300200341c8046a41086a2210200341b8116a41086a290300370300200320032903b8113703c804200341e8036a20034188056a41dc0010ab051a20034188056a41086a2211201029030037030020034188056a41106a2210200f29030037030020034188056a41186a220f200d29030037030020034188056a41206a220d200b29030037030020034188056a41286a220b200929030037030020034188056a41306a2209200e29030037030020034188056a41386a220e2012290300370300200320032903c80437038805200341a00a6a200341e8036a41dc0010ab051a2002450d20200341a8036a41386a2212200e290300370300200341a8036a41306a220e2009290300370300200341a8036a41286a2209200b290300370300200341a8036a41206a220b200d290300370300200341a8036a41186a220d200f290300370300200341a8036a41106a220f2010290300370300200341a8036a41086a2210201129030037030020032003290388053703a803200341c8026a200341a00a6a41dc0010ab051a200341a00a6a41386a2012290300370300200341a00a6a41306a200e290300370300200341a00a6a41286a2009290300370300200341a00a6a41206a200b290300370300200341a00a6a41186a200d290300370300200341a00a6a41106a200f290300370300200341a00a6a41086a2010290300370300200341e00a6a2002360200200320032903a8033703a00a200341e40a6a200341c8026a41dc0010ab051a0240410e102d2202450d002002410029009bba41370000200241066a41002900a1ba413700002003428e808080e00137028c05200320023602880520034180116a20034188056a1046200341f80f6a41186a2212200335029005422086200335028805841000220241186a290000370300200341f80f6a41106a220e200241106a290000370300200341f80f6a41086a2209200241086a290000370300200320022900003703f80f2002103120034188026a41186a201229030037030020034188026a41106a200e29030037030020034188026a41086a2009290300370300200320032903f80f370388020240200328028c05450d0020032802880510310b2003412036028c05200320034188026a36028805200341a00a6a20034188056a10e0020240200341940b6a280200450d0020032802900b10310b024020032802e40a450d0020032802e00a10310b200341840b6a280200450d21200341800b6a28020010310c210b410e41011033000b200341003a00b811200341103602d80220032008200b41246c6a3602d402200320083602d002200320193602cc02200320083602c8022003200341b8116a3602dc02200341a00a6a200341c8026a10e9020240024002400240024002400240024002400240024002400240024020032d00a00a4101460d0020032802d402210e20032802d0022102024003400240200e2002470d00200221090c020b20022d00002112200241246a2209210220124102470d000b0b200320093602d0024100210f41012112024020032802cc020d00410021020c020b20032802c8021031410021020c010b4120102d2212450d01201220032900a10a370000201241186a200341b90a6a290000370000201241106a200341b10a6a290000370000201241086a200341a90a6a290000370000200341e8036a41106a200341c8026a41106a290300370300200341e8036a41086a200341c8026a41086a290300370300200320032903c8023703e803200341a00a6a200341e8036a10e9020240024020032d00a00a0d00410121024101210f0c010b200341a00a6a410172210e4102210d4120210b410121024101210f0340200341f80f6a41186a2210200e41186a290000370300200341f80f6a41106a2211200e41106a290000370300200341f80f6a41086a220a200e41086a2900003703002003200e2900003703f80f02402002200f470d00200241016a22092002490d29200d2009200d20094b1b220f41ffffff3f71200f470d29200f41057422094100480d290240024020020d002009102d21120c010b2012200b2009102f21120b2012450d090b2012200b6a220920032903f80f370000200941186a2010290300370000200941106a2011290300370000200941086a200a290300370000200d41026a210d200b41206a210b200241016a2102200341a00a6a200341e8036a10e90220032d00a00a0d000b0b20032802f403210b20032802f003210e024003400240200b200e470d00200e210d0c020b200e2d00002109200e41246a220d210e20094102470d000b0b2003200d3602f00320032802ec03450d0020032802e80310310b024020032d00b811450d00200f450d0c201210310c0c0b2012450d0b20034188056a41fc006a220910c1024112102d220e450d01200e41002900d0b941370000200e41106a41002f00e0b9413b0000200e41086a41002900d8b94137000020034292808080a0023702a40a2003200e3602a00a2009200341a00a6a1046200341f80f6a41186a220b20033502a80a42208620033502a00a841000220e41186a290000370300200341f80f6a41106a220d200e41106a290000370300200341f80f6a41086a2210200e41086a2900003703002003200e2900003703f80f200e103120034188026a41186a200b29030037030020034188026a41106a200d29030037030020034188026a41086a2010290300370300200320032903f80f37038802024020032802a40a450d0020032802a00a10310b20034180116a20034188026aad42808080808004842213100210410240200328028011220b450d002003280284112108200320034188116a2802003602e4102003200b3602e010200341a8036a200341e0106a10890120032802a8032211450d0820032802ac03210d20032802e410220e450d072003200e417f6a22103602e410200320032802e010220a41016a22193602e010200a2d0000220941014b0d074100210e0240024020090e020100010b4100210e200341003a00c00a034002402010200e470d00200341003602e410200e41ff0171450d0a200341003a00c00a0c0a0b200341a00a6a200e6a200a200e6a220941016a2d00003a00002003200941026a3602e0102003200e41016a22093a00c00a2009210e20094120470d000b200341e8036a41086a200341a00a6a41086a290300370300200341e8036a41106a200341a00a6a41106a290300370300200341e8036a41186a200341a00a6a41186a290300370300200320032903a00a3703e8032003201020096b22103602e4104101210e200a20096a41016a21190b200341f80f6a41186a200341e8036a41186a290300370300200341f80f6a41106a200341e8036a41106a290300370300200341f80f6a41086a200341e8036a41086a290300370300200320032903e8033703f80f2010450d0720032010417f6a220a3602e4102003201941016a3602e01020192d0000221041014b0d07410021090240024020100e020100010b41002109200341003a00c00a03400240200a2009470d00200341003602e410200941ff0171450d0a200341003a00c00a0c0a0b200341a00a6a20096a201920096a221041016a2d00003a00002003201041026a3602e0102003200941016a22103a00c00a2010210920104120470d000b200341e8036a41086a200341a00a6a41086a290300370300200341e8036a41106a200341a00a6a41106a290300370300200341e8036a41186a200341a00a6a41186a290300370300200320032903a00a3703e8032003200a20106b3602e410410121090b200341b8116a41186a2210200341e8036a41186a220a290300370300200341b8116a41106a2219200341e8036a41106a2228290300370300200341b8116a41086a2229200341e8036a41086a2223290300370300200341c8026a41086a2220200341f80f6a41086a290300370300200341c8026a41106a2221200341f80f6a41106a290300370300200341c8026a41186a2222200341f80f6a41186a290300370300200320032903e8033703b811200320032903f80f3703c802200341c8046a41186a22242022290300370300200341c8046a41106a22222021290300370300200341c8046a41086a22212020290300370300200320032903c8023703c804200341b8106a41186a22202010290300370300200341b8106a41106a22102019290300370300200341b8106a41086a22192029290300370300200320032903b8113703b810200341a00a6a41186a2024290300370300200341a00a6a41106a2022290300370300200341a00a6a41086a2021290300370300200320032903c8043703a00a200a20202903003703002028201029030037030020232019290300370300200320032903b8103703e8030c090b200320093602dc10200341e8036a41186a220d41e2b9c100ad4280808080a00384220c1000220e41186a290000370300200341e8036a41106a2210200e41106a290000370300200341e8036a41086a2211200e41086a2900003703002003200e2900003703e803200e1031200341c8046a41186a220a200d290300370300200341c8046a41106a22082010290300370300200341c8046a41086a22192011290300370300200320032903e8033703c804200341a8036a200341c8046aad428080808080048410021041024002400240024002400240024020032802a803220b450d00200341a8036a41086a280200210d20032802ac0321104100210e200341003a00c00a024002400340200d200e460d01200341a00a6a200e6a200b200e6a2d00003a00002003200e41016a22093a00c00a2009210e20094120470d000b200341e8036a41186a220e200341a00a6a41186a290300370300200341e8036a41106a220d200341a00a6a41106a290300370300200341e8036a41086a2211200341a00a6a41086a290300370300200320032903a00a3703e803200941ff01714120490d01200341b8116a41086a2011290300370300200341b8116a41106a200d290300370300200341b8116a41186a200e290300370300200320032903e8033703b81102402010450d00200b10310b200341e0106a41186a200341b8116a41186a2209290300220c370300200341e0106a41106a200341b8116a41106a220b2903002204370300200341e0106a41086a200341b8116a41086a220d2903002205370300200320032903b81122063703e01020034180116a41186a200c37030020034180116a41106a200437030020034180116a41086a200537030020032006370380114112102d220e450d0b200e41002900d0b941370000200e41106a41002f00e0b9413b0000200e41086a41002900d8b94137000020034292808080a0023702a40a2003200e3602a00a20034180116a200341a00a6a1046200920033502a80a42208620033502a00a841000220e41186a290000370300200b200e41106a290000370300200d200e41086a2900003703002003200e2900003703b811200e1031200341a8036a41186a2009290300370300200341a8036a41106a200b290300370300200341a8036a41086a200d290300370300200320032903b8113703a803024020032802a40a450d0020032802a00a10310b200341a0116a200341a8036aad4280808080800484220c1002104120032802a0112219450d0d20032802a41121282003200341a0116a41086a2802003602b411200320193602b011200341e8016a200341b0116a10890120032802e8012210450d0620032802ec01210d20032802b411220e450d05200341e8016a41086a280200210b2003200e417f6a220a3602b411200320032802b011220841016a22293602b01120082d0000220e41014b0d0541002111200e0e020403040b200e41ff0171450d00200341003a00c00a0b41e9bcc0004133200341f8116a419cbdc0001038000b200d200c1000220e41186a2900003703002010200e41106a2900003703002011200e41086a2900003703002003200e2900003703e803200e1031200a200d2903003703002008201029030037030020192011290300370300200320032903e8033703c804200341203602a40a2003200341c8046a3602a00a2009200341a00a6a10b002410021090c050b4100210e200341003a00c00a03400240200a200e470d00200341003602b411200e41ff0171450d03200341003a00c00a0c030b200341a00a6a200e6a2008200e6a220941016a2d00003a00002003200941026a3602b0112003200e41016a22093a00c00a2009210e20094120470d000b200341d80f6a41086a200341a00a6a41086a2903002204370300200341e8036a41186a200341a00a6a41186a290300370300200341e8036a41106a200341a00a6a41106a290300370300200341e8036a41086a20043703002003200a20096b220a3602b411200320032903a00a22043703d80f200320043703e80341012111200820096a41016a21290b200341b80f6a41186a200341e8036a41186a290300370300200341b80f6a41106a200341e8036a41106a290300370300200341b80f6a41086a200341e8036a41086a290300370300200320032903e8033703b80f200a450d002003200a417f6a220a3602b4112003202941016a3602b01120292d0000220e41014b0d0041002109024002400240200e0e020100010b4100210e200341003a00c00a0340200a200e460d02200341a00a6a200e6a2029200e6a220941016a2d00003a00002003200941026a3602b0112003200e41016a22093a00c00a2009210e20094120470d000b20034198106a41086a200341a00a6a41086a2903002204370300200341e8036a41186a200341a00a6a41186a290300370300200341e8036a41106a200341a00a6a41106a290300370300200341e8036a41086a20043703002003200a20096b3602b411200320032903a00a220437039810200320043703e803410121090b200341b8116a41186a220e200341e8036a41186a220a290300370300200341b8116a41106a2208200341e8036a41106a2229290300370300200341b8116a41086a2223200341e8036a41086a2220290300370300200341c8026a41086a2221200341b80f6a41086a290300370300200341c8026a41106a2222200341b80f6a41106a290300370300200341c8026a41186a2224200341b80f6a41186a290300370300200320032903e8033703b811200320032903b80f3703c802200341c8046a41186a22252024290300370300200341c8046a41106a22242022290300370300200341c8046a41086a22222021290300370300200320032903c8023703c804200341b8106a41186a2221200e290300370300200341b8106a41106a220e2008290300370300200341b8106a41086a22082023290300370300200320032903b8113703b810200341a00a6a41186a2025290300370300200341a00a6a41106a2024290300370300200341a00a6a41086a2022290300370300200320032903c8043703a00a200a20212903003703002029200e29030037030020202008290300370300200320032903b8103703e8030c030b200341003602b411200e41ff0171450d00200341003a00c00a0b200d450d00201010310b410221110b20114102460d04200341c8026a41186a2229200341a00a6a41186a290300370300200341c8026a41106a2223200341a00a6a41106a290300370300200341c8026a41086a2220200341a00a6a41086a290300370300200341b8116a41086a2221200341e8036a41086a220a290300370300200341b8116a41106a2222200341e8036a41106a220e290300370300200341b8116a41186a2224200341e8036a41186a2208290300370300200320032903a00a3703c802200320032903e8033703b81102402028450d00201910310b200a2020290300370300200e202329030037030020082029290300370300200341c8046a41086a22192021290300370300200341c8046a41106a22282022290300370300200341c8046a41186a22292024290300370300200320032903c8023703e803200320032903b8113703c804200341a90a6a200a290300370000200341b10a6a200e290300370000200341b90a6a2008290300370000200341c20a6a220a20032903c804370100200341ca0a6a2019290300370100200341d20a6a2028290300370100200341da0a6a2029290300370100200320113a00a00a200320032903e8033700a10a200320093a00c10a200e200a4100200941ff01714101461b3602002003200b3602f0032003200d3602ec03200320103602e8032003200341dc106a3602f403200341003602d002200342013703c802200b200341c8026a106f200341f4036a21110240200b450d00200b41057421092010210e0340200e200341c8026a1046200e41206a210e200941606a22090d000b0b2011200341c8026a10ef0120032802cc02210e200c20033502d00242208620032802c8022209ad8410030240200e450d00200910310b0240200d450d00201010310b20032802dc102109200341e8036a41186a220b41e2b9c100ad4280808080a003841000220e41186a290000370300200341e8036a41106a220d200e41106a290000370300200341e8036a41086a2210200e41086a2900003703002003200e2900003703e803200e1031200341c8046a41186a200b290300370300200341c8046a41106a200d290300370300200341c8046a41086a2010290300370300200320032903e8033703c804200341203602a40a2003200341c8046a3602a00a2009200341a00a6a10b002200341a8036a41086a20034180116a41086a290300370300200341a8036a41106a20034180116a41106a290300370300200341a8036a41186a20034180116a41186a29030037030020032003290380113703a803410121090b4100210e0c090b412041011033000b411241011033000b411241011033000b41e9bcc0004133200341f8116a419cbdc0001038000b41ced8c00041920110bf01000b200941011033000b200d450d00201110310b4102210e0b200e4102460d01200341c8026a41186a2210200341a00a6a41186a290300370300200341c8026a41106a220a200341a00a6a41106a290300370300200341c8026a41086a2219200341a00a6a41086a290300370300200341b8116a41086a2228200341e8036a41086a2229290300370300200341b8116a41106a2223200341e8036a41106a2220290300370300200341b8116a41186a2221200341e8036a41186a2222290300370300200320032903a00a3703c802200320032903e8033703b81102402008450d00200b10310b202920192903003703002020200a29030037030020222010290300370300200341a8036a41086a2028290300370300200341a8036a41106a2023290300370300200341a8036a41186a2021290300370300200320032903c8023703e803200320032903b8113703a803200d450d00201110310b200341ad0a6a20032903e803370000200341b50a6a200341e8036a41086a290300370000200341bd0a6a200341e8036a41106a290300370000200341c50a6a200341e8036a41186a290300370000200341cd0a6a20093a0000200341ce0a6a20032903a803370100200341d60a6a200341a8036a41086a290300370100200341de0a6a200341a8036a41106a290300370100200341e60a6a200341a8036a41186a2903003701002003200e3a00ac0a200320023602a80a2003200f3602a40a200320123602a00a200341003602d002200342013703c8022002200341c8026a106f200341ac0a6a210e02402002450d002002410574210203402012200341c8026a1046201241206a2112200241606a22020d000b0b200e200341c8026a10ee0120032802cc022102201320033502d00242208620032802c8022212ad84100302402002450d00201210310b024020032802a40a450d0020032802a00a10310b024020032802fc05450d0020032802f80510310b024020032802cc05450d0020032802c80510310b024020032802ec05450d0020032802e80510310b4100210f410121090c090b41e9bcc0004133200341f8116a419cbdc0001038000b41bcc4c400210e410e21124100210920032802fc0521020b02402002450d0020032802f80510310b024020032802cc05450d0020032802c80510310b024020032802ec05450d0020032802e80510310b20090d004100210f410121094101210b0c2c0b4100210f410121092019450d10200810314101210b0c2b0b4119211241fdd4c000210e41a7d5c000200d410310ad05450d01200f200d6a417d6a220241a4d5c000460d014100210941a4d5c0002002410310ad05450d010b4119211241fdd4c000210e200f200d6a2210417e6a220241a2d5c000460d0020022f000041e3dc01460d00200241a0d5c000460d0002400240200920022f0000220241e9de0146720d002010417d6a2202419dd5c000460d02419dd5c0002002410310ad05450d022002419ad5c000470d010c020b200241e9de014722020d02410041fdd4c00020021b210e0c010b419ad5c0002002410310ad050d010b024020032802fc05450d0020032802f80510310b024020032802cc05450d0020032802c80510310b20032802ec05450d0c20032802e80510310c0c0b20034184066a221210c2024112102d2202450d022002410029008db941370000200241106a41002f009db9413b0000200241086a4100290095b94137000020034292808080a0023702a40a200320023602a00a2012200341a00a6a1046200341f80f6a41186a220e20033502a80a42208620033502a00a841000220241186a290000370300200341f80f6a41106a2209200241106a290000370300200341f80f6a41086a2210200241086a290000370300200320022900003703f80f20021031200341e8016a41186a200e290300370300200341e8016a41106a2009290300370300200341e8016a41086a2010290300370300200320032903f80f3703e801024020032802a40a450d0020032802a00a10310b200341e8036a200341e8016aad428080808080048410021041024020032802e803220e450d0020032802ec0321092003200341f0036a2802003602cc022003200e3602c802200341a00a6a200341c8026a10f10120032d00b00a4102460d0420032802a80a211020032802a40a211120032802a00a210202402009450d00200e10310b2010410020021b210e0240024020020d00200e0d010c020b02402011450d002002410120021b10310b200e450d010b200341083a00a00a200341a00a6a41086a41033a000041014100200341a00a6a10450b200341ec106a201941e400201941e400491b360200200341e8106a200f3602002003200b3602e4102003200d3602e01002400240200d0d00201210c1020c010b4112102d2202450d052002410029008db941370000200241106a41002f009db9413b0000200241086a4100290095b94137000020034292808080a0023702a40a200320023602a00a2012200341a00a6a1046200341f80f6a41186a220e20033502a80a42208620033502a00a841000220241186a290000370300200341f80f6a41106a2209200241106a290000370300200341f80f6a41086a220b200241086a290000370300200320022900003703f80f2002103120034188026a41186a200e29030037030020034188026a41106a200929030037030020034188026a41086a200b290300370300200320032903f80f37038802024020032802a40a450d0020032802a00a10310b20034180116a20034188026aad4280808080800484221310021041024002402003280280112202450d002003280284112109200320034180116a41086a2802003602bc11200320023602b811200341a00a6a200341b8116a10f10120032d00b00a22124102460d08200341e8036a41086a200341b90a6a290000370300200341e8036a41106a220b200341c10a6a290000370300200341e8036a41186a220d200341c90a6a290000370300200341c8026a41086a200341da0a6a290100370300200341c8026a41106a220f200341e20a6a290100370300200341c8026a41186a2210200341ea0a6a290100370300200320032900b10a3703e8032003200341d20a6a2901003703c802200341d10a6a2d0000210e20032802a40a211120032802a00a210a02402009450d00200210310b200341b8116a41086a200341e8036a41086a290300370300200341b8116a41106a200b290300370300200341b8116a41186a200d290300370300200341c8046a41086a200341c8026a41086a290300370300200341c8046a41106a200f290300370300200341c8046a41186a2010290300370300200320032903e8033703b811200320032903c8023703c8042011450d01200a10310c010b200320123602a80220034198106a41186a2209419fb9c100ad4280808080a00384220c1000220241186a29000037030020034198106a41106a220b200241106a29000037030020034198106a41086a220d200241086a290000370300200320022900003703981020021031200341d80f6a41186a220f2009290300370300200341d80f6a41106a2210200b290300370300200341d80f6a41086a2211200d29030037030020032003290398103703d80f200341c8026a200341d80f6aad428080808080048410021041024002400240024020032802c802220e450d00200341c8026a41086a280200210920032802cc02210b41002102200341003a00c00a02400240034020092002460d01200341a00a6a20026a200e20026a2d00003a00002003200241016a22123a00c00a2012210220124120470d000b20034198106a41186a2202200341a00a6a41186a29030037030020034198106a41106a2209200341a00a6a41106a29030037030020034198106a41086a220d200341a00a6a41086a290300370300200320032903a00a37039810201241ff01714120490d01200341f80f6a41086a200d290300370300200341f80f6a41106a2009290300370300200341f80f6a41186a200229030037030020032003290398103703f80f0240200b450d00200e10310b200341b8116a41186a200341f80f6a41186a2212290300220c370300200341b8116a41106a200341f80f6a41106a220e2903002204370300200341b8116a41086a200341f80f6a41086a22092903002205370300200320032903f80f22063703b811200341c8026a41186a200c370300200341c8026a41106a2004370300200341c8026a41086a2005370300200320063703c8024112102d2202450d0e2002410029008db941370000200241106a41002f009db9413b0000200241086a4100290095b94137000020034292808080a0023702a40a200320023602a00a200341c8026a200341a00a6a1046201220033502a80a42208620033502a00a841000220241186a290000370300200e200241106a2900003703002009200241086a290000370300200320022900003703f80f20021031200341b80f6a41186a2012290300370300200341b80f6a41106a200e290300370300200341b80f6a41086a2009290300370300200320032903f80f3703b80f024020032802a40a450d0020032802a00a10310b200341b8106a200341b80f6aad4280808080800484220c1002104120032802b8102202450d1020032802bc1021122003200341b8106a41086a2802003602cc04200320023602c804200341a00a6a200341c8046a10f10120032d00b00a220e4102460d0f20034180116a41086a200341a00a6a41086a290300370300200320032903a00a37038011200341e8036a200341b10a6a41c30010ab051a02402012450d00200210310b200341c8046a41086a221220034180116a41086a220229030037030020032003290380113703c804200341a00a6a200341e8036a41c30010ab051a20022012290300370300200320032903c804370380112003200e3a00e803200341e8036a410172200341a00a6a41c10010ab051a20032d0089042112200341a00a6a41086a20022903002204370300200341b40a6a2003418a046a410020124101461b360200200320032903801122053703a00a2003200341a8026a3602b00a200341003602d004200342013703c8042004a72202200341c8046a106f20032802cc04220e20032802d00422126b2002490d0320032802c804210e0c040b200241ff0171450d00200341003a00c00a0b41e9bcc0004133200341f8116a419cbdc0001038000b2009200c1000220241186a290000370300200b200241106a290000370300200d200241086a290000370300200320022900003703981020021031200f20092903003703002010200b2903003703002011200d29030037030020032003290398103703d80f200341203602a40a2003200341d80f6a3602a00a2012200341a00a6a10b0024100210e0c020b201220026a22092012490d17200e41017422122009201220094b1b22124100480d1702400240200e0d002012102d210e0c010b20032802c804200e2012102f210e0b200e450d0d200320123602cc042003200e3602c80420032802d00421120b2003201220026a3602d004200e20126a2005a72212200210ab051a200341ac0a6a200341c8046a109101200341b00a6a200341c8046a10ef0120032802cc042102200c20033502d00442208620032802c804220ead84100302402002450d00200e10310b024020032802a40a450d00201210310b20032802a802211220034198106a41186a220e419fb9c100ad4280808080a003841000220241186a29000037030020034198106a41106a2209200241106a29000037030020034198106a41086a220b200241086a290000370300200320022900003703981020021031200341d80f6a41186a200e290300370300200341d80f6a41106a2009290300370300200341d80f6a41086a200b29030037030020032003290398103703d80f200341203602a40a2003200341d80f6a3602a00a2012200341a00a6a10b002200341c8046a41086a200341c8026a41086a290300370300200341c8046a41106a200341c8026a41106a290300370300200341c8046a41186a200341c8026a41186a290300370300200320032903c8023703c8044101210e0b410021120b200341ad0a6a200341b8116a41086a290300370000200341b50a6a200341b8116a41106a290300370000200341bd0a6a200341b8116a41186a290300370000200341c50a6a200e3a0000200341c60a6a20032903c804370100200341ce0a6a200341c8046a41086a290300370100200341d60a6a200341c8046a41106a290300370100200341de0a6a200341c8046a41186a290300370100200320123a00a40a200320032903b8113700a50a2003200341e0106a3602a00a200341003602f003200342013703e80320032802e0102109200341e0106a41086a2802002202200341e8036a106f0240024020032802ec03220e20032802f00322126b2002490d0020032802e803210e0c010b201220026a220b2012490d15200e4101742212200b2012200b4b1b22124100480d1502400240200e0d002012102d210e0c010b20032802e803200e2012102f210e0b200e450d0c200320123602ec032003200e3602e80320032802f00321120b2003201220026a3602f003200e20126a2009200210ab051a200341ec106a200341e8036a109101200341a00a6a410472200341e8036a10ee0120032802ec032102201320033502f00342208620032802e8032212ad8410032002450d00201210310b024020032802e0102202450d0020032802e410450d00200210310b024020032802fc05450d0020032802f80510310b024020032802cc05450d0020032802c80510310b024020032802ec05450d0020032802e80510310b410021090b4101210f0b4101210b4100210e0c250b411241011033000b41e9bcc0004133200341f8116a419cbdc0001038000b411241011033000b41e9bcc0004133200341f8116a419cbdc0001038000b411241011033000b41e9bcc0004133200341f8116a419cbdc0001038000b41ced8c00041920110bf01000b201241011033000b201241011033000b4101210f41002109200b450d00200d10310b4101210b0c1a0b2012450d00200d200d20126b2202200d2002491b210d0b200341a8036a41106a2202200341c8046a41106a290300370300200341a8036a41086a2212200341c8046a41086a290300370300200341e8036a41086a220e20034188056a41086a2209290300370300200341e8036a41106a220b20034188056a41106a220f290300370300200341e8036a41186a221020034188056a41186a2211290300370300200341e8036a41206a220a2038280200360200200320032903c8043703a80320032003290388053703e803202520153703002026201c370300200341a00a6a41186a20133703002027201d3e0200200341e40a6a2032360200200341e00a6a20203602002031200d360200202f2030360200202e201e370300202c202d360200202a202b360200200320173703d00a200320143703c00a2003200c3703b00a200320163702a40a200320333602a00a202420032903a8033703002021201229030037030020222002290300370300200320233602900b2034200a280200360200203520102903003702002036200b2903003702002037200e290300370200200320032903e80337029c0b2011200341b8116a41186a290300370300200f200341b8116a41106a2903003703002009200341b8116a41086a290300370300200320032903b811370388050240410e102d2202450d002002410029009bba41370000200241066a41002900a1ba413700002003428e808080e0013702cc02200320023602c80220034188056a200341c8026a1046200341f80f6a41186a221220033502d00242208620033502c802841000220241186a290000370300200341f80f6a41106a220e200241106a290000370300200341f80f6a41086a2209200241086a290000370300200320022900003703f80f2002103120034188026a41186a201229030037030020034188026a41106a200e29030037030020034188026a41086a2009290300370300200320032903f80f37038802024020032802cc02450d0020032802c80210310b2003412036028c05200320034188026a36028805200341a00a6a20034188056a10e002024020032802940b450d0020032802900b10310b024020032802e40a450d0020032802e00a10310b20032802840b450d0b20032802800b10310c0b0b410e41011033000b2012450d00200d200d20126b2202200d2002491b210d0b20034188056a41386a201e37030020034188056a41286a201737030020034188056a41186a201337030020034188056a410c6a20143e0200200341cc056a2025360200200341c8056a2212202036020020034188056a41c8006a220220032903c80437030020034188056a41f8006a200d36020020034188056a41f4006a202436020020034188056a41e8006a201637030020034188056a41e4006a202236020020034188056a41e0006a202136020020034188056a41d0006a200341c8046a41086a29030037030020034188056a41d8006a200341c8046a41106a290300370300200320183703b8052003201a3703a8052003200c370398052003201b37028c052003202636028805200320233602f80520034188056a419c016a202728020036020020034188056a4194016a200341e8036a41186a29030037020020034188056a418c016a200341e8036a41106a29030037020020034188056a4184016a200341e8036a41086a290300370200200320032903e803370284061099012113024002400240024002402002280200220b450d0020122802002102410021124100210e0340024002400240200241106a22092903002013580d0020120d01410021120c020b201241016a21120c010b200e20126b220d200b4f0d03200341a00a6a41106a220f2002201241686c6a220d41106a2210290300370300200341a00a6a41086a2211200d41086a220a2903003703002003200d2903003703a00a2009290300210c200241086a22082903002104200d2002290300370300200a20043703002010200c3703002009200f29030037030020082011290300370300200220032903a00a3703000b200241186a2102200b200e41016a220e470d000b2012450d0020032802d005200b20126b2202490d00200320023602d0050b024020032802f005220b0d00410021020c040b20032802e8052102410021124100210e0340024002400240200241106a22092903002013580d0020120d01410021120c020b201241016a21120c010b200e20126b220d200b4f0d03200341a00a6a41106a220f2002201241686c6a220d41106a2210290300370300200341a00a6a41086a2211200d41086a220a2903003703002003200d2903003703a00a2009290300210c200241086a22082903002104200d2002290300370300200a20043703002010200c3703002009200f29030037030020082011290300370300200220032903a00a3703000b200241186a2102200b200e41016a220e460d030c000b0b41f8b0c400200d200b104b000b41f8b0c400200d200b104b000b024020120d0020032802f00521020c010b20032802f0052202200b20126b2212490d00200320123602f005201221020b0240024002400240024002400240024002400240200220032802d00522126a411f4b0d00201d50450d042003290388052205200329039805220c7d2204201c2004201c5420034190056a2903002206200341a0056a2903007d2005200c54ad7d220420155420042015511b22021b220c2004201520021b220484500d0520032005200c7d370388052003200620047d2005200c54ad7d37039005201220032802cc05470d03201241016a22022012490d0c2012410174220e2002200e20024b1b220ead42187e2205422088a70d0c2005a722094100480d0c20120d012009102d21020c020b024020032802fc05450d0020032802f80510310b024020032802cc05450d0020032802c80510310b4122211241ec90c200210e20032802ec05450d1e20032802e80510310c1e0b20032802c805201241186c2009102f21020b2002450d032003200e3602cc05200320023602c80520032802d00521120b20032802c805201241186c6a220220043703082002200c37030020022013428090e4c0047c370310200320032802d00541016a3602d005200341b8116a20034188056a4200105420034180116a41086a2202418bbac100ad428080808080028422061001221241086a290000370300200320122900003703801120121031200341a8036a41086a220e200229030037030020032003290380113703a803200341a00a6a200341a8036aad42808080808002842207100210410240024020032802a00a22120d0042002105420021150c010b200341a00a6a41086a2802004110490d04201241086a29000021152012290000210520032802a40a450d00201210310b200220061001221241086a290000370300200320122900003703801120121031200e200229030037030020032003290380113703a8032003201520047d2005200c54ad7d3703a80a20032005200c7d3703a00a2007200341a00a6aad42808080808002841003200341c00a6a2004370300200341a00a6a41186a200c370300200341c80a6a2013370300200341b00a6a4200370300200341a00a6a41086a41053a0000200341083a00a00a41014100200341a00a6a10450c010b20032903a8052206201c2006201c54200341b0056a220e290300220420155420042015511b22121b220c2004201520121b220584500d00200e200420057d2006200c54ad7d37030020032006200c7d3703a8050240200220032802ec05470d00200241016a22122002490d082002410174220e2012200e20124b1b2212ad42187e2204422088a70d082004a7220e4100480d080240024020020d00200e102d21020c010b20032802e805200241186c200e102f21020b2002450d04200320123602ec05200320023602e80520032802f00521020b20032802e805200241186c6a220220053703082002200c37030020022013428090e4c0047c370310200320032802f00541016a3602f005200341b8116a20034188056a201d105420034180116a41086a2202418690c200ad428080808080028422061001221241086a290000370300200320122900003703801120121031200341a8036a41086a220e200229030037030020032003290380113703a803200341a00a6a200341a8036aad42808080808002842207100210410240024020032802a00a22120d0042002104420021150c010b200341a00a6a41086a2802004110490d05201241086a29000021152012290000210420032802a40a450d00201210310b200220061001221241086a290000370300200320122900003703801120121031200e200229030037030020032003290380113703a8032003201520057d2004200c54ad7d3703a80a20032004200c7d3703a00a2007200341a00a6aad42808080808002841003200341c00a6a2005370300200341a00a6a41186a200c370300200341c80a6a2013370300200341b00a6a4201370300200341a00a6a41086a41053a0000200341083a00a00a41014100200341a00a6a10450b024020032802fc05450d0020032802f80510310b024020032802cc05450d0020032802c80510310b20032802ec05450d0c20032802e80510310c0c0b200941081033000b41e9bcc0004133200341f8116a419cbdc0001038000b200e41081033000b41e9bcc0004133200341f8116a419cbdc0001038000b2012450d00200d200d20126b2202200d2002491b210d0b20034188056a41386a201737030020034188056a41286a201437030020034188056a410c6a20163e0200200341cc056a2025360200200341c8056a202036020020034188056a41c8006a20032903c80437030020034188056a41f8006a2212200d36020020034188056a41f4006a220e202436020020034188056a41e8006a201837030020034188056a41e4006a202236020020034188056a41e0006a2021360200200320133703980520034188056a41186a2202200c37030020034188056a41d0006a200341c8046a41086a29030037030020034188056a41d8006a200341c8046a41106a2903003703002003201a3703b8052003201b3703a8052003201f37028c052003202636028805200320233602f80520034188056a419c016a202728020036020020034188056a4194016a200341a00a6a41186a29030037020020034188056a418c016a200341a00a6a41106a29030037020020034188056a4184016a200341a00a6a41086a290300370200200320032903a00a37028406200341e8006a200329038805220420137d2205201c2005201c5420034188056a41086a290300200c7d2004201354ad7d220c201554200c2015511b22091b2213200c201520091b220c201d4203201d4203561b2204422420044224541b220410e402200341d8006a20034188056a41fc006a2003290368200341e8006a41086a29030010ea02200329035821052003200341d8006a41086a2903003703a80a200320053703a00a2003200341a00a6a3602c802200341c8026a1048200229030021052003200329039805220620137c22073703980520022005200c7c2007200654ad7c37030020122802002202200e280200470d02200241016a22122002490d002002410174220e2012200e20124b1b221241ffffff3f712012470d002012410574220e41004e0d010b1034000b0240024020020d00200e102d21020c010b20032802f8052002410574200e102f21020b2002450d01200320123602fc05200320023602f80520032802800621020b20032802f80520024105746a2202200c370308200220133703002002201e2004428090fbd3097e7c3703182002201e370310200320032802800641016a36028006200341a00a6a20034188056a41a00110ab051a410e102d2202450d012002410029009bba41370000200241066a41002900a1ba413700002003428e808080e0013702cc02200320023602c802200341b8116a200341c8026a1046200341f80f6a41186a221220033502d00242208620033502c802841000220241186a290000370300200341f80f6a41106a220e200241106a290000370300200341f80f6a41086a2209200241086a290000370300200320022900003703f80f2002103120034188026a41186a201229030037030020034188026a41106a200e29030037030020034188026a41086a2009290300370300200320032903f80f37038802024020032802cc02450d0020032802c80210310b200341203602cc02200320034188026a3602c802200341a00a6a200341c8026a10e0020240200341940b6a280200450d0020032802900b10310b0240200341e40a6a280200450d00200341e00a6a28020010310b0240200341840b6a280200450d00200341800b6a28020010310b200341c00a6a200c370300200341b80a6a2013370300200341d00a6a2004370300200341c80a6a201e370300200341b00a6a4200370300200341083a00a00a200341a00a6a41086a41043a00004100210e4101210941014100200341a00a6a10450c040b200e41081033000b410e41011033000b4188bbc100210e411c21120c0d0b4100210e410121090b4101210f4101210b0c0c0b411c21124188bbc100210e0c0a0b200341a8036a41026a200341d80f6a41026a2d00003a0000200341a00a6a41086a20034188056a41086a290300370300200341a00a6a41106a20034188056a41106a2d00003a0000200320032f01d80f3b01a80320032003290388053703a00a410021020b20034180116a41026a2212200341a8036a41026a2d00003a0000200341b8116a41086a220e200341a00a6a41086a290300370300200341b8116a41106a2209200341a00a6a41106a2d00003a0000200320032f01a8033b018011200320032903a00a3703b81120020d02200341ff036a200e29030037000020034187046a20092d00003a0000200320032f0180113b01e8032003200c3700ef032003200b3600eb03200320032903b8113700f703200320122d00003a00ea03410e102d2202450d032002410029009bba41370000200241066a41002900a1ba413700002003428e808080e0013702a40a200320023602a00a200341e8036a200341a00a6a1046200341f80f6a41186a221220033502a80a42208620033502a00a841000220241186a290000370300200341f80f6a41106a220e200241106a290000370300200341f80f6a41086a2209200241086a290000370300200320022900003703f80f2002103120034188026a41186a201229030037030020034188026a41106a200e29030037030020034188026a41086a2009290300370300200320032903f80f37038802024020032802a40a450d0020032802a00a10310b200341286a20034188026a4120410141004100103f20032802284101470d010b41ab90c200210e412321120c070b200341c8026a200341e8036a10e802410d102d2202450d02200241002900b7ba41370000200241056a41002900bcba413700002003428d808080d0013702a40a200320023602a00a200341c8026a200341a00a6a1046200341f80f6a41186a221220033502a80a42208620033502a00a841000220241186a290000370300200341f80f6a41106a220e200241106a290000370300200341f80f6a41086a2209200241086a290000370300200320022900003703f80f2002103120034188026a41186a201229030037030020034188026a41106a200e29030037030020034188026a41086a2009290300370300200320032903f80f37038802024020032802a40a450d0020032802a00a10310b4101102d2202450d03200220083a000020034188026aad42808080808004842002ad42808080801084100320021031200341e8016a41186a2202200341c8026a41186a290300370300200341e8016a41106a2212200341c8026a41106a290300370300200341e8016a41086a220e200341c8026a41086a290300370300200320032903c8023703e8012006422420064224541b21064200211c10990121150240024020074200520d00200341086a200341c8026a105c200341086a41086a290300210c20032903082113200341f80a6a4200370300200341d80a6a4200370300200341d00a6a4200370300200341c80a6a4200370300200341c00a6a4200370300200341a00a6a41186a4200370300200341a00a6a41106a4200370300200341a00a6a41086a4200370300200341980b6a4100360200200341880b6a4100360200200341800b6a4208370300200341e80a6a4100360200200341e00a6a4208370300200341a40b6a200e290300370200200341ac0b6a2012290300370200200341b40b6a2002290300370200200342003703f00a200342003703a00a200342083703900b200320032903e80137029c0b200341c8026a200341e8036a201320052013200554200c200454200c2004511b22021b2213200c200420021b220c2006200341a00a6a10e20220034180116a41086a2212418bbac100ad428080808080028422051001220241086a290000370300200320022900003703801120021031200341a8036a41086a201229030037030020032003290380113703a803200341a00a6a200341a8036aad42808080808002842204100210410240024020032802a00a22020d00420021070c010b200341a00a6a41086a2802004110490d07200241086a29000021072002290000211c20032802a40a450d00200210310b20034180116a41086a221220051001220241086a290000370300200320022900003703801120021031200341a8036a41086a201229030037030020032003290380113703a8032003201c20137c22053703a00a20032007200c7c2005201c54ad7c3703a80a4200210520034188056a2102200341a00a6a21120c010b200341186a200341c8026a10e302200341186a41086a290300211320032903182107200341f80a6a4200370300200341d80a6a4200370300200341d00a6a4200370300200341c80a6a22094200370300200341a00a6a41186a4200370300200341a00a6a41106a4200370300200341a00a6a41086a4200370300200341980b6a4100360200200341880b6a4100360200200341800b6a4208370300200341e80a6a4100360200200341e00a6a4208370300200341a40b6a200e290300370200200341ac0b6a2012290300370200200341b40b6a2002290300370200200342003703f00a200342003703c00a200342003703a00a200342083703900b200320032903e80137029c0b2009201320042007200554201320045420132004511b22021b220c37030020032007200520021b22133703c00a200341e8036a200341a00a6a420110540240200341940b6a280200450d0020032802900b10310b024020032802e40a450d0020032802e00a10310b024020032802840b450d0020032802800b10310b20034180116a41086a2202418690c200ad428080808080028422071001221241086a290000370300200320122900003703801120121031200341a8036a41086a220e200229030037030020032003290380113703a803200341a00a6a200341a8036aad42808080808002842204100210410240024020032802a00a22120d00420021054200211c0c010b200341a00a6a41086a2802004110490d07201241086a290000211c2012290000210520032802a40a450d00201210310b200220071001221241086a290000370300200320122900003703801120121031200e200229030037030020032003290380113703a8032003200520137c22073703a00a2003201c200c7c2007200554ad7c3703a80a42012105200341a00a6a2102200341a00a6a21120b20042012ad42808080808002841003200241206a200c370000200241186a2013370000200241306a2006370000200241286a2015370000200241106a2005370000200241086a41043a0000200241083a00004100210e41014100200210450c060b41bcc4c400210e410e21120c050b410e41011033000b410d41011033000b410141011033000b41e9bcc0004133200341f8116a419cbdc0001038000b41e9bcc0004133200341f8116a419cbdc0001038000b410121094101210f4101210b0b0240024020012d0000220d417f6a2202410f4b0d0002400240024020020e1004040304030300010303040303030204040b2009450d03200141086a280200450d03200141046a28020010310c030b200f450d02200141086a280200450d02200141046a28020010310c020b200b450d01200141086a280200450d01200141046a28020010310c010b200d41796a220241084b0d0002400240024020020e09000103030303030302000b200141086a280200450d02200141046a28020010310c020b200141086a280200450d01200141046a28020010310c010b200141086a280200450d00200141046a28020010310b200020123602042000200e36020020034180126a24000ba00403017f027e027f230041c0006b2206240002400240024020044203540d0020052005290310220720027c2208370310200541186a2209200929030020037c2008200754ad7c370300200641186a20022003200410e402200641086a20002006290318200641186a41086a29030010ea02200629030821072006200641086a41086a290300370330200620073703282006200641286a36023c2006413c6a104810990121070240200541f8006a2802002200200541f4006a280200470d00200041016a22092000490d032000410174220a2009200a20094b1b220941ffffff3f712009470d032009410574220a4100480d030240024020000d00200a102d21000c010b20052802702000410574200a102f21000b2000450d0220052000360270200541f4006a2009360200200528027821000b200528027020004105746a2200200337030820002002370300200020072004428090fbd3097e7c370318200020073703102005200528027841016a3602780b2005427f2005290300220420027c220220022004542200200541086a2209290300220220037c2000ad7c220320025420032002511b22001b3703002009427f200320001b37030020012005420010540240200541f4006a280200450d00200528027010310b0240200541c4006a280200450d00200541c0006a28020010310b0240200541e4006a280200450d00200541e0006a28020010310b200641c0006a24000f0b200a41081033000b1034000b820302047f027e230041d0006b22022400024002404110102d2203450d0020034100290089f342370000200341086a4100290091f342370000200242908080808002370224200220033602202001200241206a1046200241306a41186a220120023502284220862002350220841000220341186a290000370300200241306a41106a2204200341106a290000370300200241306a41086a2205200341086a2900003703002002200329000037033020031031200241186a2001290300370300200241106a2004290300370300200241086a20052903003703002002200229033037030002402002280224450d00200228022010310b200241306a2002ad42808080808004841002104102400240200228023022030d0042002106420021070c010b200241306a41086a2802004110490d02200341086a2900002107200329000021062002280234450d00200310310b2000200737030820002006370300200241d0006a24000f0b411041011033000b41e9bcc0004133200241206a419cbdc0001038000b950e040f7f037e047f027e230041c0026b22042400200441a0026a41106a22054200370300200441a0026a41186a22064200370300200442003703a802200442c3003703a002200441c0016a41106a22074200370300200441c0016a41186a22084200370300200442003703c801200420033703c0012004200441a0026a200441c0016a10c1032005420037030020064200370300200442003703a802200442c2003703a0022007420037030020084200370300200442003703c801200420033703c001200441206a200441a0026a200441c0016a10c10320044180026a41186a2209200441186a220a29030037030020044180026a41106a220b200441106a220c29030037030020044180026a41086a220d200441086a220e29030037030020042004290300370380022006200441206a41186a220f2903003703002005200441206a41106a2210290300370300200441a0026a41086a2211200441206a41086a2212290300370300200420042903203703a002200441c0016a20044180026a200441a0026a10c20320042903c801211320042903d001211420042903d801211520042903c001210320044180016a41186a2216200a29030037030020044180016a41106a2217200c29030037030020044180016a41086a2218200e2903003703002004200429030037038001200441a0016a41186a2219200a290300370300200441a0016a41106a220a200c290300370300200441a0016a41086a220c200e290300370300200420042903003703a00120092016290300370300200b2017290300370300200d20182903003703002004200429038001370380022006200f2903003703002005201029030037030020112012290300370300200420042903203703a002200441c0016a20044180026a200441a0026a10c2032019200441f8016a290300221a370300200a200441f0016a290300221b370300200441c0006a41086a220e200441e8016a290300370300200441c0006a41106a2216201b370300200441c0006a41186a2217201a370300200420042903e001370340200441e0006a41106a4200370300200441e0006a41186a42003703002004420037036820042001427f2002501b3703602005420037030020064200370300200442003703a802200442e8073703a00202400240024002402003427f7c22012003560d002015210220132103201421130c010b02402013427f7c22032013560d0020152102201421130c010b024020142003201356ad7d22132014560d00201521020c010b20152013201456ad7d22022015560d010b200420023703d801200420133703d001200420033703c801200420013703c00120044180016a200441a0026a200441c0016a10c3032005420037030020064200370300200442003703a802200442e8073703a0022008201729030037030020072016290300370300200441c0016a41086a200e290300370300200420042903403703c001200441a0016a200441a0026a200441c0016a10c30320092019290300370300200b200a290300370300200d200c290300370300200420042903a001370380022006200f2903003703002005201029030037030020112012290300370300200420042903203703a002200441c0016a20044180026a200441a0026a10c203200429038801220320042903c8017c2214200354210620042903d001211520042903d80121012004290398012103200429039001211302400240200429038001220220042903c0017c221a2002540d00201421020c010b201442017c220220145420066a21060b201320157c221420135421050240024020060d00201421150c010b20142006ad7c221520145420056a21050b200320017c221320035421060240024020050d00201321030c010b20132005ad7c220320135420066a21060b20060d01200420033703d801200420153703d001200420023703c8012004201a3703c001200441a0016a200441e0006a200441c0016a10c30320044180026a41186a200441a0016a41186a29030037030020044180026a41106a200441a0016a41106a29030037030020044180026a41086a200441a0016a41086a290300370300200420042903a00137038002200441a0026a41106a4200370300200441a0026a41186a4200370300200442003703a802200442d09ef8003703a002200441c0016a20044180026a200441a0026a10c20320044180016a41086a200441c0016a41086a29030037030020044180016a41106a2208200441c0016a41106a29030037030020044180016a41186a200441c0016a41186a290300370300200420042903c001370380014100210502400340200541086a22064118460d01200820056a2107200621052007290300500d000b41e9a6c2004125419cdec40010a401000b2004290380012103200020042903880137030820002003370300200441c0026a24000f0b4189e3c300411d419cdec40010a401000b4189e3c300411d419cdec40010a401000bb00c05057f057e017f037e047f23004180016b220424000240024002400240024002400240410c102d2205450d00200541086a41002800abf342360000200541002900a3f3423700002004428c808080c001370254200420053602502001200441d0006a1046200441e0006a41186a220620043502584220862004350250841000220541186a290000370300200441e0006a41106a2207200541106a290000370300200441e0006a41086a2208200541086a2900003703002004200529000037036020051031200441306a41186a2006290300370300200441306a41106a2007290300370300200441306a41086a20082903003703002004200429036037033002402004280254450d00200428025010310b200441e0006a200441306aad4280808080800484220910021041024020042802602205450d00200441e0006a41086a28020022064110490d0220064170714110460d022006417c714120460d02200541086a290000210a2005290000210b200541186a290000210c2005290010210d2005280020210602402004280264450d00200510310b4110102d2205450d0320054100290089f342370000200541086a4100290091f342370000200442908080808002370254200420053602502001200441d0006a1046200441e0006a41186a220720043502584220862004350250841000220541186a290000370300200441e0006a41106a2208200541106a290000370300200441e0006a41086a220e200541086a2900003703002004200529000037036020051031200441306a41186a2007290300370300200441306a41106a2008290300370300200441306a41086a200e2903003703002004200429036037033002402004280254450d00200428025010310b200441e0006a2009100210414200210f02400240200428026022050d0042002110420021090c010b200441e0006a41086a2802004110490d05200541086a2900002109200529000021102004280264450d00200510310b200441106a200c42004100105b220520066b2206200620054b1bad2211420010b005200441206a20114200200d420010b005200442004200200d420010b0054200210d02402004290308200429031884420052200441286a2903002211200429030020042903107c7c220c201154720d00200a200c200b2004290320220f56200a200c56200a200c511b22051b200c7d200b200f20051b220c200f54ad7d210d200c200f7d210f0b200f20102010200f562009200d562009200d511b22051b200256200d200920051b220d200356200d2003511b450d0041e0f3c2002105412621010c070b200441e0006a200110d202200428026822050d04410021052004280264450d05200428026010310c050b410c41011033000b41e9bcc0004133200441d0006a419cbdc0001038000b411041011033000b41e9bcc0004133200441d0006a419cbdc0001038000b109901210f20042802602212200541386c6a211320042802642114201221050240024002400340200541386a2107200541106a290300210d2005411c6a280200210e200541186a28020021082005290308210920052d00302115024002400240024020052903002210427f7c220c4201560d00200ca70e020105010b410021052009200258200d200358200d2003511b0d02200ead4220862008ad84200f560d010c020b0240200541206a2802002205450d002008200541186c6a2106200821050340200541186a21010240200541106a290300200f580d00200541086a290300200d7c2005290300220d20097c2209200d54ad7c210d0b2001210520062001470d000b0b410021052009200258200d200358200d2003511b0d010b201541027141017621050b02402010500d00200e450d00200810310b024020050d002007210520072013470d010c030b0b20072013460d0203402007290300220d4202510d030240200d500d002007411c6a280200450d00200741186a28020010310b200741386a22072013470d000c030b0b20072013460d0003402007290300220d4202510d010240200d500d002007411c6a280200450d00200741186a28020010310b200741386a22072013470d000b0b410021052014450d01201210310c010b41aff3c20021052014450d00201210310b413121010b200020013602042000200536020020044180016a24000bf00204027f017e027f057e230041306b22012400200141186a41086a220241f7f2c200ad4280808080a0028422031001220441086a2900003703002001200429000037031820041031200141086a41086a2205200229030037030020012001290318370308200141186a200141086aad4280808080800284220610021041024002400240200128021822040d0042002107420021080c010b20022802004110490d01200441086a290000210820042900002107200128021c450d00200410310b2000280200220441086a29030021092004290300210a200220031001220441086a2900003703002001200429000037031820041031200520022903003703002001200129031837030820014200200820097d2007200a54ad7d22032007200a7d220a200756200320085620032008511b22021b37032020014200200a20021b3703182006200141186aad42808080808002841003200141306a24000f0b41e9bcc0004133200141286a419cbdc0001038000bf30201067f410021040240024020024103712205450d00410420056b2205450d0020032005200520034b1b210441002105200141ff01712106034020042005460d01200220056a2107200541016a210520072d000022072006470d000b410121032007200141ff01714641016a41017120056a417f6a21050c010b200141ff017121060240024020034108490d002004200341786a22084b0d00200641818284086c210502400340200220046a220741046a2802002005732209417f73200941fffdfb776a7120072802002005732207417f73200741fffdfb776a7172418081828478710d01200441086a220420084d0d000b0b200420034b0d010b200220046a2109200320046b210241002103410021050240034020022005460d01200920056a2107200541016a210520072d000022072006470d000b410121032007200141ff01714641016a41017120056a417f6a21050b200520046a21050c010b20042003107b000b20002005360204200020033602000b990201047f230041d0006b220224000240410e102d2203450d00200341002900a9ba41370000200341066a41002900afba413700002002428e808080e001370224200220033602202000200241206a1046200241306a41186a220020023502284220862002350220841000220341186a290000370300200241306a41106a2204200341106a290000370300200241306a41086a2205200341086a2900003703002002200329000037033020031031200241186a2000290300370300200241106a2004290300370300200241086a20052903003703002002200229033037030002402002280224450d00200228022010310b20024120360234200220023602302001200241306a10b002200241d0006a24000f0b410e41011033000bb309010a7f230041b0016b2202240041002103024020012802102204450d0020012802082205200128020c460d00200128021421062001200541246a360208200241c4006a41026a2207200541036a2d00003a0000200241286a41086a2208200541106a290000370300200241286a41106a2209200541186a290000370300200241286a41186a220a200541206a280000360200200220052f00013b01442002200541086a29000037032820052d0000220b4102460d00200541046a280000210520012004417f6a360210200241086a41026a20072d00003a000020024190016a41086a200829030037030020024190016a41106a200929030037030020024190016a41186a200a280200360200200220022f01443b01082002200229032837039001024002400240200b4101460d002002418c016a41026a200241086a41026a2d00003a0000200241f0006a41086a20024190016a41086a290300370300200241f0006a41106a20024190016a41106a290300370300200241f0006a41186a20024190016a41186a2d00003a0000200220022f01083b018c0120022002290390013703700c010b200241c8006a200541067610e301200228024821040240024020022802502005413f7122014b0d00410021010c010b2002418c016a41026a200420014105746a220141026a2d00003a0000200241f8006a2001410f6a29000037030020024180016a200141176a29000037030020024188016a2001411f6a2d00003a0000200220012f00003b018c012002200129000737037020012800032105410121010b0240200228024c450d00200410310b20010d00410121010c010b200241ec006a41026a2002418c016a41026a2d00003a000020024190016a41086a200241f0006a41086a29030037030020024190016a41106a200241f0006a41106a29030037030020024190016a41186a200241f0006a41186a2d00003a0000200220022f018c013b016c2002200229037037039001410021010b200241e8006a41026a2204200241ec006a41026a2d00003a0000200241c8006a41086a220720024190016a41086a290300370300200241c8006a41106a220820024190016a41106a290300370300200241c8006a41186a220920024190016a41186a2d00003a0000200220022f016c3b016820022002290390013703480240024020010d002002418c016a41026a20042d00003a0000200241f0006a41086a2007290300370300200241f0006a41106a2008290300370300200241f0006a41186a20092d00003a0000200220022f01683b018c0120022002290348370370410121010c010b200641013a0000410021010b200241246a41026a22042002418c016a41026a2d00003a0000200241086a41086a2207200241f0006a41086a290300370300200241086a41106a2208200241f0006a41106a290300370300200241086a41186a2209200241f0006a41186a2d00003a0000200220022f018c013b0124200220022903703703082001450d00200020022f01243b0001200041046a2005360000200041086a2002290308370000200041036a20042d00003a0000200041106a2007290300370000200041186a2008290300370000200041206a20092d00003a0000410121030b200020033a0000200241b0016a24000be00602057f047e230041d0006b2204240002400240024002404110102d2205450d0020054100290089f342370000200541086a4100290091f342370000200442908080808002370224200420053602202001200441206a1046200441306a41186a220620043502284220862004350220841000220541186a290000370300200441306a41106a2207200541106a290000370300200441306a41086a2208200541086a2900003703002004200529000037033020051031200441186a2006290300370300200441106a2007290300370300200441086a20082903003703002004200429033037030002402004280224450d00200428022010310b200441306a2004ad428080808080048422091002104102400240200428023022050d004200210a4200210b0c010b200441306a41086a2802004110490d02200541086a290000210b2005290000210a2004280234450d00200510310b4110102d2205450d0220054100290089f342370000200541086a4100290091f342370000200442908080808002370224200420053602202001200441206a1046200441306a41186a220620043502284220862004350220841000220541186a290000370300200441306a41106a2207200541106a290000370300200441306a41086a2208200541086a2900003703002004200529000037033020051031200441186a2006290300370300200441106a2007290300370300200441086a20082903003703002004200429033037030002402004280224450d00200428022010310b200441306a20091002104102400240200428023022050d00420021094200210c0c010b200441306a41086a2802004110490d04200541086a290000210c200529000021092004280234450d00200510310b2001200a20027c2202200b20037c2002200a54ad7c220a1047200441c0006a200c200a7d2009200254ad7d200a200c7d2002200954ad7d22032009200256200c200a56200c200a511b22051b3703002004200920027d200220097d220220051b37033820042005ad37033002402005450d002004200441386a360200200410e60242002102420021030b2000200237030020002003370308200441d0006a24000f0b411041011033000b41e9bcc0004133200441206a419cbdc0001038000b411041011033000b41e9bcc0004133200441206a419cbdc0001038000b02000b130020004101360204200041ac94c2003602000b1300200041023602042000418096c2003602000b3101017f02404104102d22020d00410441011033000b20004284808080c00037020420002002360200200241e8073600000b3101017f02404104102d22020d00410441011033000b20004284808080c00037020420002002360200200241e5003600000b8a0401037f230041106b220224000240024002400240024020002802000e0400010203000b20022001280218418e99c20041122001411c6a28020028020c1103003a000820022001360200200241003a0009200241003602042002200041086a36020c20022002410c6a41a099c20010f10221000c030b2002200128021841b099c20041152001411c6a28020028020c1103003a000820022001360200200241003a0009200241003602042002200041086a36020c20022002410c6a41a099c20010f10221000c020b2002200128021841c599c20041102001411c6a28020028020c1103003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a41d899c20010f10221000c010b2002200128021841e899c20041032001411c6a28020028020c1103003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a41ec99c20010f10221000b20002d00082101024020002802042203450d00200141ff0171210441012101024020040d00024020034101470d0020002d0009450d00200028020022042d00004104710d00410121012004280218419fcac30041012004411c6a28020028020c1103000d010b200028020022012802184180e1c40041012001411c6a28020028020c11030021010b200020013a00080b200241106a2400200141ff01714100470bf30202047f057e230041d0006b2203240041012104024020002d00080d00200028020421050240200028020022062d00004104710d0041012104200628021841b1c8c30041b8cac30020051b4102410120051b2006411c6a28020028020c1103000d0120012000280200200228020c11040021040c010b024020050d0041012104200628021841efc8c30041022006411c6a28020028020c1103000d01200028020021060b41012104200341013a00172003200341176a3602102006290208210720062902102108200341346a41b8c8c30036020020032006290218370308200629022021092006290228210a200320062d00303a00482006290200210b2003200a3703402003200937033820032008370328200320073703202003200b3703182003200341086a3602302001200341186a200228020c1104000d00200328023041d0c8c3004102200328023428020c11030021040b200020043a00082000200028020441016a360204200341d0006a240020000b9e6604177f017e077f017e230041f0026b2204240041002105200441003602e002200420023602dc02200420013602d8020240024002400240024002400240200241034b0d0041012106200441013a00c002200441dc016a4101360200200442013702cc012004419cdfc3003602c801200441233602b4022004200441b0026a3602d8012004200441c0026a3602b00220044180016a200441c8016a10eb032004280280012107200428028401210820042802880121094105210a4100210b0c010b200441043602e002024020012800004180c2cdeb06460d004101210a410121060c010b024002402002417c714104460d00200241074b0d014108200210b601000b41012106200441013a00c002200441dc016a4101360200200442013702cc012004419cdfc3003602c801200441233602b4022004200441b0026a3602d8012004200441c0026a3602b00220044180016a200441c8016a10eb032004280280012107200428028401210820042802880121094105210a410021054100210b0c010b200441083602e002410121060240200128000422074101460d004102210a0c010b200441c8016a200441d8026a10f40402400240024020042802c8014101470d00410421084100210c410021090c010b200441c8016a410572210d41042108412c210a410021054100210c410021094100210b02400340200441c0026a41026a2201200d41026a2d00003a00002004200d2f00003b01c00220042802f801210e20042802f401210f20042802f001211020042802ec01211120042802e801211220042802e401211320042802e001211420042802dc01211520042802d801211620042802d401211720042802d0012118024020042d00cc012206417e6a41ff0171410b4b0d0041002119024002400240024002400240024002400240024002400240024020060e100c0c000102030405060708090a0b0c0c0c0b410121190c0b0b410221190c0a0b410321190c090b410421190c080b410521190c070b410621190c060b410721190c050b410821190c040b410921190c030b410a21190c020b410b21190c010b410c21190b0240200b41ff0171221a20194d0d004113210a0c030b41002119024002400240024002400240024002400240024002400240024020060e100c0c000102030405060708090a0b0c0c0c0b410121190c0b0b410221190c0a0b410321190c090b410421190c080b410521190c070b410621190c060b410721190c050b410821190c040b410921190c030b410a21190c020b410b21190c010b410c21190b0240201a2019470d004114210a0c030b4100210b02400240024002400240024002400240024002400240024020060e100c0c000102030405060708090a0b0c0c0c0b4101210b0c0b0b4102210b0c0a0b4103210b0c090b4104210b0c080b4105210b0c070b4106210b0c060b4107210b0c050b4108210b0c040b4109210b0c030b410a210b0c020b410b210b0c010b410c210b0b20044180016a41026a221920012d00003a0000200420042f01c0023b01800102400240200c2009470d00200c41016a2201200c490d0720052001200520014b1b2209ad42307e221b422088a70d07201ba722014100480d0702400240200c0d002001102d21080c010b2008200a41546a2001102f21080b2008450d010b2008200a6a220141546a20063a00002001200e3602002001417c6a200f360200200141786a2010360200200141746a2011360200200141706a20123602002001416c6a2013360200200141686a2014360200200141646a2015360200200141606a20163602002001415c6a2017360200200141586a2018360200200141556a220120042f0180013b0000200141026a20192d00003a0000200541026a2105200a41306a210a200c41016a210c200441c8016a200441d8026a10f40420042802c8014101460d030c010b0b200141041033000b024002402006410e4b0d00024002400240024002400240024002400240024002400240024020060e0f0001020304050607080e090e0a0b0c000b2017450d0d201810310c0d0b02402017450d00201810310b2014450d0c201510310c0c0b02402016450d00201641047421062018210103400240200141046a280200450d00200128020010310b200141106a2101200641706a22060d000b0b2017450d0b201810310c0b0b02402016450d00201641286c21062018210103400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141286a2101200641586a22060d000b0b2017450d0a201810310c0a0b2017450d09201810310c090b2017450d08201810310c080b2017450d07201810310c070b02402016450d00201820164104746a2114201821160340024020162802082206450d0020162802002101200641047421060340024020012d00004109470d000240200141046a220d280200220528020441ffffffff0371450d0020052802001031200d28020021050b200510310b200141106a2101200641706a22060d000b0b201641106a21010240201641046a280200450d00201628020010310b2001211620012014470d000b0b2017450d06201810310c060b02402016450d00201641146c21062018210103400240200141046a280200450d00200128020010310b200141146a21012006416c6a22060d000b0b2017450d05201810310c050b02402016450d0020182016411c6c6a2114201821160340024020162802042201450d0002402016410c6a2802002206450d00200641047421060340024020012d00004109470d000240200141046a220d280200220528020441ffffffff0371450d0020052802001031200d28020021050b200510310b200141106a2101200641706a22060d000b0b201641086a280200450d00201628020410310b2016411c6a21010240201641146a280200450d00201628021010310b2001211620012014470d000b0b2017450d04201810310c040b02402016450d002018201641186c6a21142018211603400240201641046a280200450d00201628020010310b0240201641146a2802002206450d00201628020c2101200641047421060340024020012d00004109470d000240200141046a220d280200220528020441ffffffff0371450d0020052802001031200d28020021050b200510310b200141106a2101200641706a22060d000b0b201641186a21010240201641106a280200450d00201628020c10310b2001211620012014470d000b0b2017450d03201810310c030b02402016450d0020182016411c6c6a2114201821160340024020162802042201450d0002402016410c6a2802002206450d00200641047421060340024020012d00004109470d000240200141046a220d280200220528020441ffffffff0371450d0020052802001031200d28020021050b200510310b200141106a2101200641706a22060d000b0b201641086a280200450d00201628020410310b2016411c6a21010240201641146a280200450d00201628021010310b2001211620012014470d000b0b2017450d02201810310c020b02402018450d002017450d00201810310b02402014450d0002402012450d002012410c6c2106201421010340024020012802002205450d00200141046a280200450d00200510310b2001410c6a2101200641746a22060d000b0b2013450d00201410310b2010450d010240200e450d002010200e4104746a21172010211803402018220d41106a21180240200d2802042201450d000240200d410c6a2802002206450d002006410c6c21060340024020012802002205450d00200141046a280200450d00200510310b2001410c6a2101200641746a22060d000b0b200d41086a280200450d00200d28020410310b20182017470d000b0b200f450d01201010310c010b02402017450d00201810310b02402014450d002013450d00201410310b2010450d00201110310b0c010b024020042d00cc010d002008200c41306c6a21062008210102400340024020062001470d004100210d0c020b20012d0000210a200141306a220b2101200a410c470d000b200b415c6a280200210d0b2008200c41306c6a210b20082101024003404100210a0240200b2001470d00410021010c020b20012d00002106200141306a2205210120064104470d000b200441f8006a200541546a10f302200428027c21010b0240200d2001470d004101210741e100210b41f3da012105410021060c030b0240200c450d00200c41306c210a200821010340200110fb02200141306a2101200a41506a220a0d000b0b41012106411a210a024020090d000c030b200810310c020b20042802cc01220a4110762105200a410876210b200441c8016a41106a280200210d200441d4016a2802002118200441c8016a41086a28020021070b0240200c450d00200c41306c2106200821010340200110fb02200141306a2101200641506a22060d000b0b4101210602402009450d00200810310b200d2109201821080b02402006450d00200821060c040b20042802e0022002470d022005411074200b41ff017141087472200a41ff017172211c2008200c41306c6a210a200821010240024002400240024002400240024002400240024002400340200a2001460d0120012d00002102200141306a2206210120024102470d000b200441f0006a200641546a10f3024104211d02402004280274221e0d004100211e0c020b201e41047422014100480d0c200428027021022001102d221d450d0a201e41047421064100210e201d21010340200241086a280200220a417f4c0d042002410c6a2d000021052002280200210d02400240200a0d004101210b0c010b200a102d220b450d060b200b200d200a10ab05210b2001410d6a2002410d6a2d00003a00002001410c6a20053a0000200141086a200a360200200141046a200a3602002001200b360200200141106a2101200e41016a210e200241106a2102200641706a22060d000b201d0d020b4100211e4104211d0b4100210e0b2008200c41306c6a210a2008210102400340410021064104210d0240200a2001470d0041042102410021010c020b20012d00002102200141306a220b210120024103470d000b200441e8006a200b41546a10f30241042102410021012004280268220a450d00200428026c2101200a21020b024020010d0041012112410021144100210a41002115410421164100210b4100211a410421104100210241002105410021174100211f410121190c090b200141286c21182002411c6a21014104210d4100210641002114410121124100210a41002115410421164100210b4100211a410421104100210241002105410021174100211f410121190340024002400240024002402001417c6a2d00000e0400010203000b200128020021130240024020052002460d00200521110c010b200241016a22112002490d0f2002410174220f2011200f20114b1b220f41ffffffff0371200f470d0f200f41027422114100480d0f0240024020020d002011102d210d0c010b200d20024102742011102f210d0b200d450d0820022111200f21020b200d20114102746a2013360200200541016a21050c030b200441c8016a41086a2213200141086a280200360200200420012902003703c8010240200a2015470d00200a41016a2215200a490d0e200a41017422112015201120154b1b2215ad420c7e221b422088a70d0e201ba722114100480d0e02400240200a0d002011102d21160c010b2016200a410c6c2011102f21160b2016450d080b2016200a410c6c6a221120042903c801370200201141086a2013280200360200200a41016a210a0c020b200441c8016a41086a2213200141086a280200360200200420012902003703c8010240200b201a470d00200b41016a2211200b490d0d200b410174220f2011200f20114b1b221aad420c7e221b422088a70d0d201ba722114100480d0d02400240200b0d002011102d21100c010b2010200b410c6c2011102f21100b2010450d080b2010200b410c6c6a221120042903c801370200201141086a2013280200360200200b41016a210b0c010b2001417e6a22132d000021112001417d6a220f2d00002120024020062014470d00200641016a22142006490d0c200641017422212014202120144b1b221420146a22222014490d0c20224100480d0c0240024020060d002022102d21120c010b201220212022102f21120b2012450d080b201220064101746a222220114101713a0001202220203a000020132d00002113200f2d000021110240201f2017470d00201741016a220f2017490d0c20174101742220200f2020200f4b1b221f201f6a220f201f490d0c200f4100480d0c0240024020170d00200f102d21190c010b20192020200f102f21190b2019450d090b200641016a2106201920174101746a220f20134101713a0001200f20113a0000201741016a21170b200141286a2101201841586a2218450d090c000b0b1032000b200a41011033000b201141041033000b201141041033000b201141041033000b202241011033000b200f41011033000b200141041033000b2008200c41306c6a2113200821010240024002400240024002400240024002400240024002400240024002400340024020132001470d00200221180c020b20012d00002118200141306a2211210120184104470d000b200441e0006a201141546a10f3020240200428026422180d00200221180c010b20042802602101201841027421130340200128020021110240024020052002460d00200221182005210f0c010b200241016a22182002490d112002410174220f2018200f20184b1b221841ffffffff03712018470d112018410274220f4100480d110240024020020d00200f102d210d0c010b200d2002410274200f102f210d0b200d450d032002210f201821020b200141046a2101200d200f4102746a2011360200200541016a21052013417c6a22130d000b0b2008200c41306c6a21132008210102400240034020132001460d0120012d00002102200141306a2211210120024105470d000b200441d8006a201141546a10f302200428025c410c6c220f450d0020042802582101200a4101742113200a410c6c21020340200141086a2111024002400240200141046a2802004101470d002004201128020022203602b0022001280200222220204b0d010b20044100360280010c010b200441023602dc01200442023702cc01200441a0e4c4003602c801200441053602e402200441053602dc02200420223602c0022004200441d8026a3602d8012004200441c0026a3602e0022004200441b0026a3602d80220044180016a200441c8016a10eb03200428028001450d0020044180016a21010c0f0b2001290200211b200441c8016a41086a222020112802003602002004201b3703c8010240200a2015470d00200a41016a2215200a490d1220132015201320154b1b2215ad420c7e221b422088a70d12201ba722114100480d1202400240200a0d002011102d21160c010b201620022011102f21160b2016450d030b2001410c6a2101201620026a221120042903c801370200201141086a2020280200360200201341026a21132002410c6a2102200a41016a210a200f41746a220f0d000b0b2008200c41306c6a21132008210102400240034020132001460d0120012d00002102200141306a2211210120024106470d000b200441d0006a201141546a10f30220042802542202450d00200428025021012002410c6c2111200b4101742113200b410c6c21020340200441c8016a200110f504024020042802c801450d00200441c8016a21010c100b2001290200211b200441c8016a41086a220f200141086a2802003602002004201b3703c8010240200b201a470d00200b41016a221a200b490d132013201a2013201a4b1b221aad420c7e221b422088a70d13201ba722204100480d1302400240200b0d002020102d21100c010b201020022020102f21100b2010450d030b2001410c6a2101201020026a222020042903c801370200202041086a200f280200360200201341026a21132002410c6a2102200b41016a210b201141746a22110d000b0b2008200c41306c6a21132008210102400240034020132001460d0120012d00002102200141306a2211210120024107470d000b200441c8006a201141546a10f302200428024c2202450d002004280248220120024104746a212220064101742102200441c8016a41047221200340200441c8016a20012019201710f60402400240024020042d00c8014101460d00200420042d00c90122133a00b002024020132001410c6a2d00002211470d0020044100360280010c030b200441023602dc01200442023702cc01200441b4e5c4003602c801200441243602e402200441243602dc02200420113a00c0022004200441d8026a3602d8012004200441b0026a3602e0022004200441c0026a3602d80220044180016a200441c8016a10eb030c010b20044180016a41086a202041086a28020036020020042020290200370380010b0240200428028001450d0020044180016a21010c120b2001410c6a2d000021130b2001410d6a2d00002111024020062014470d00200641016a22142006490d1420022014200220144b1b221420146a220f2014490d14200f4100480d140240024020060d00200f102d21120c010b20122002200f102f21120b2012450d030b201220026a220f20133a0000200f41016a20114101713a0000200241026a2102200641016a2106200141106a22012022470d000b0b200441b8016a2005360200200441b4016a2018360200200441ac016a200e360200200441a8016a201e360200200441a0016a20063602002004419c016a201436020020044194016a200a36020020044190016a20153602002004200d3602b0012004201d3602a40120042012360298012004201636028c012004200b360288012004201a3602840120042010360280012008200c41306c6a210a20082101024003400240200a2001470d004100210b0c020b20012d00002102200141306a2206210120024104470d000b200441c0006a200641546a10f3022004280244210b0b2004200b3602bc012008200c41306c6a210a20082101024003400240200a2001470d00410021010c020b20012d00002102200141306a220621012002410c470d000b2006415c6a28020021010b200420013602c001200b2001470d0b024002400240200b450d002008200c41306c6a210a200821010340200a2001460d0320012d00002102200141306a2206210120024104470d000b2008200c41306c6a210b200821010340200b2001460d0220012d00002102200141306a220a21012002410c470d000b200441386a200641546a10f302200428023c2201450d002004280238220d20014102746a2116200a415c6a2118200a41546a211720044181026a2111410021050340200420053602c4012018280200210120172802002102200442013702cc0120044180b4c4003602c801200441053602c402200441013602dc012004200441c0026a3602d8012004200441c4016a3602c002200441d8026a200441c8016a10eb0320042802d802210a20042902dc02211b200120054d0d110240201ba7450d00200a10310b2004200d28020022013602b002024002400240024020042802ac0120014b0d00200441013602dc01200442023702cc01200441c0e8c4003602c801200441053602c4022004200441c0026a3602d8012004200441b0026a3602c002200441d8026a200441c8016a10eb0320042902dc02221b422088a7210120042802d8022106201ba721020c010b0240024002402002200541186c6a2202280214220e450d0020042802a40120014104746a220a2d000d2114200a2802002115200228020c210120022802002110200a28020822132106024020022802082212450d002012410374210b201321022010210a034002402002200a2802006a220620024f0d0002404120102d22060d00412041011033000b200641186a41002900a0eb44370000200641106a4100290098eb44370000200641086a4100290090eb4437000020064100290088eb443700000c040b200a41086a210a20062102200b41786a220b0d000b0b02404108102d2202450d0020022014ad42ff0183422886370200200441c0026a41026a220a200441d8026a41026a2d00003a0000200420042f00d8023b01c002200420143a0080022004418080013602fc0120044281808080103702f401200420023602f001200442808080808080103703e801200442013703e001200420063602dc01200420123602d801200420103602d401200420133602d001200420153602cc01200420044180016a3602c801201120042f01c0023b0000201141026a200a2d00003a0000200e410474210a41002102034020042002360288022004200136028c0220044190026a200441c8016a200110f7040240200428029002450d00200441b0026a41086a20044190026a41086a28020036020020042004290390023703b002200441033602d402200442033702c40220044198aac4003602c002200441253602ec02200441053602e402200441263602dc022004200441d8026a3602d0022004200441b0026a3602e802200420044188026a3602e00220042004418c026a3602d802200441a0026a200441c0026a10eb03024020042802b402450d0020042802b00210310b20042802a0022206450d0020042902a402211b024020042802e401450d0020042802e00110310b201b4220882123024020042802f401450d0020042802f00110310b2023a72101201ba721020c070b200141106a2101200241016a2102200a41706a220a0d000b024020042802f8010d00024020042802e401450d0020042802e00110310b20042802f401450d0720042802f00110310c070b41b0aac4004130419cdec40010a401000b410841041033000b4120102d2206450d01200641186a4100290090aa44370000200641106a4100290088aa44370000200641086a4100290080aa44370000200641002900f8a9443700000b41202102412021010c010b412041011033000b2006450d010b200420063602c00220042001ad4220862002ad843702c4022004200441c0026a3602a002200441023602dc01200442023702cc0120044188b4c4003602c801200441273602e402200441053602dc022004200441d8026a3602d8012004200441a0026a3602e0022004200441c4016a3602d802200441b0026a200441c8016a10eb03024020042802c402450d0020042802c00210310b20042802b002220a450d0020042902b402211b0c120b200541016a2105200d41046a220d2016470d000b0b2008200c41306c6a210a20082101024002400340200a2001460d0120012d00002102200141306a2206210120024109470d000b2004200641546a28020022013602a002024020042802b80120014b0d00200441dc016a4101360200200442023702cc012004419ce8c4003602c801200441053602c4022004200441c0026a3602d8012004200441a0026a3602c002200441d8026a200441c8016a10eb030c0b0b200420042802b00120014102746a28020022013602b002024020042802ac0120014b0d00200441dc016a4101360200200442023702cc01200441c0e8c4003602c801200441053602c4022004200441c0026a3602d8012004200441b0026a3602c002200441d8026a200441c8016a10eb030c0b0b20042802a40120014104746a220131000d4220862001350208844280808080c000510d00412d102d220a450d01200a41256a41002900bdb444370000200a41206a41002900b8b444370000200a41186a41002900b0b444370000200a41106a41002900a8b444370000200a41086a41002900a0b444370000200a4100290098b44437000042ad808080d005211b0c110b2008200c41306c6a210a200821010340200a2001460d0920012d00002102200141306a2206210120024108470d000b200441306a200641546a221710f30202400240024020042802342218450d00201841ffffffff01712018470d17201841037422024100480d17200428023021012002102d220d0d01200241041033000b4104210d41002118410021010c010b2001201841146c6a21062018410274417c6a210b200d210203402001280200210a200241046a200141086a2802003602002002200a360200200241086a2102200141146a22012006470d000b200b41027641016a21010b200d2001200441c8016a410041202001676b10f9040240200d20014103746a2206200d460d004101210a200d2101200d2102034002400240200a450d00200620016b410376200a4d0d032001200a4103746a21010c010b20062001460d020b200420023602b0020240200241046a280200220a200141046a280200470d002002280200220b20012802002205460d0e200b2005200a10ad05450d0e0b200141086a21014100210a200241086a22022006470d000b0b200441286a201710f302200428022c2201450d07200141146c2102200428022841106a210102400340024002400240024002402001417c6a2802000e0400030201000b20042001280200220a3602a002024020042802b801200a4b0d00200441dc016a4101360200200442023702cc012004419ce8c4003602c801200441053602c4022004200441c0026a3602d8012004200441a0026a3602c002200441d8026a200441c8016a10eb030c130b200420042802b001200a4102746a280200220a3602b00220042802ac01200a4b0d03200441013602dc01200442023702cc01200441c0e8c4003602c801200441053602c4022004200441c0026a3602d8012004200441b0026a3602c002200441d8026a200441c8016a10eb030c120b20042001280200220a3602a002024020042802a001200a4b0d00200441dc016a4101360200200442023702cc01200441e0e8c4003602c801200441053602c4022004200441c0026a3602d8012004200441a0026a3602c002200441d8026a200441c8016a10eb030c120b200428029801200a4101746a2d0001450d02200441dc016a4101360200200442023702cc0120044180e9c4003602c801200441053602c4022004200441c0026a3602d8012004200441a0026a3602c002200441d8026a200441c8016a10eb030c110b20042001280200220a3602b002200428028801200a4b0d01200441013602dc01200442023702cc01200441cce7c4003602c801200441053602c4022004200441c0026a3602d8012004200441b0026a3602c002200441d8026a200441c8016a10eb0320042802d802220a0d110c010b20042001280200220a3602b002200428029401200a4d0d020b200141146a21012002416c6a22020d000c090b0b200441dc016a4101360200200442023702cc01200441fce7c4003602c801200441053602c4022004200441c0026a3602d8012004200441b0026a3602c002200441d8026a200441c8016a10eb030c0c0b412d41011033000b41b6b3c40041c80010bf01000b4198b3c400411e10bf01000b200f41011033000b202041041033000b201141041033000b200f41041033000b2018450d00200d10310b2008200c41306c6a210a2008210102400340200a2001460d0120012d00002102200141306a2206210120024103470d000b200441206a200641546a10f30220042802242201450d0020042802202106200141286c210b41002101034002400240024002400240200620016a220241186a2d00000e0400030201000b20042002411c6a28020022023602b00220042802ac0120024b0d03200441dc016a4101360200200442023702cc01200441c0e8c4003602c801200441053602c4022004200441c0026a3602d8012004200441b0026a3602c002200441d8026a200441c8016a10eb030c060b2002411a6a2d0000450d022002410c6a2802002101200241146a2802002102200441c8016a41146a4101360200200420023602c402200420013602c002200441023602b402200442013702cc01200441d0b4c4003602c8012004200441c0026a3602b0022004200441b0026a3602d801200441d8026a200441c8016a10eb030c050b200441c8016a2002411c6a10f50420042802c801220a450d0120042902cc01211b0c0b0b200241206a2802004101470d002002411c6a280200210a2004200241246a28020022023602a002200a20024d0d00200441023602dc01200442023702cc01200441a0e4c4003602c801200441053602e402200441053602dc022004200a3602b0022004200441d8026a3602d8012004200441b0026a3602e0022004200441a0026a3602d802200441c0026a200441c8016a10eb0320042802c002220a0d090b200b200141286a2201470d000b0b02400240024002400240200428029401220141014b0d00200428028801220141014b0d012008200c41306c6a210a200821010240024002400240024002400340200a2001460d0120012d00002102200141306a220621012002410d470d000b200441186a200641546a10f30220042802182201200428021c411c6c6a2106034020012006460d012004200128020022023602b002024020042802880120024b0d00200441013602dc01200442023702cc01200441cce7c4003602c801200441053602c4022004200441c0026a3602d8012004200441b0026a3602c002200441d8026a200441c8016a10eb0320042802d802220a450d0020042902dc02211b0c140b200141046a2201280200450d02200441c8016a200120042802980120042802a00110f60420042d00c8014101460d03200141186a210120042d00c901450d000b4120102d220a450d08200a41186a4100290080b544370000200a41106a41002900f8b444370000200a41086a41002900f0b444370000200a41002900e8b44437000042a08080808004211b0c120b2008200c41306c6a210a2008210102400340200a2001460d0120012d00002102200141306a220621012002410a470d000b200441106a200641546a10f30220042802142201450d002004280210220b2001411c6c6a21050340200b450d012004200b28020022013602b00220042802940120014d0d04200b280204450d05200441c8016a200b41046a20042802980120042802a00110f60420042d00c8014101460d0620042d00c9010d0d200441086a200b10a50402400240200428020c2201450d00200428020821022001410274210a20042802b801210603402004200228020022013602a0020240200620014b0d00200441dc016a4101360200200442023702cc012004419ce8c4003602c801200441053602c4022004200441c0026a3602d8012004200441a0026a3602c002200441d8026a200441c8016a10eb030c100b200420042802b00120014102746a28020022013602b00220042802ac0120014d0d02200241046a2102200a417c6a220a0d000b0b200b411c6a220b2005460d020c010b0b200441013602dc01200442023702cc01200441c0e8c4003602c801200441053602c4022004200441c0026a3602d8012004200441b0026a3602c002200441d8026a200441c8016a10eb030c0b0b0240200428028401450d0020042802800110310b0240200428029001450d00200428028c0110310b0240200428029c01450d0020042802980110310b024020042802ac012202450d0020042802a40121012002410474210203400240200141046a280200450d00200128020010310b200141106a2101200241706a22020d000b0b024020042802a801450d0020042802a40110310b024020042802b401450d0020042802b00110310b201f450d14201910310c140b4129102d220a450d07200a41286a41002d00b0b5443a0000200a41206a41002900a8b544370000200a41186a41002900a0b544370000200a41106a4100290098b544370000200a41086a4100290090b544370000200a4100290088b54437000042a98080809005211b0c100b200441d0016a290300211b20042802cc01210a0c0f0b200441dc016a4101360200200442023702cc01200441fce7c4003602c801200441053602c4022004200441c0026a3602d8012004200441b0026a3602c002200441d8026a200441c8016a10eb030c070b412a102d220a450d05200a41286a41002f00d9b5443b0000200a41206a41002900d1b544370000200a41186a41002900c9b544370000200a41106a41002900c1b544370000200a41086a41002900b9b544370000200a41002900b1b54437000042aa808080a005211b0c0d0b200441d0016a290300211b20042802cc01210a0c0c0b200441dc016a4101360200200442013702cc01200441d8b4c4003602c801200441053602c402200420013602b0022004200441c0026a3602d8012004200441b0026a3602c002200441d8026a200441c8016a10eb030c040b200441dc016a4101360200200442013702cc01200441e0b4c4003602c801200441053602c402200420013602b0022004200441c0026a3602d8012004200441b0026a3602c002200441d8026a200441c8016a10eb030c030b412041011033000b412941011033000b412a41011033000b20042802d802210a20042902dc02211b0c060b02404120102d220a450d00200a41186a4100290080b544370000200a41106a41002900f8b444370000200a41086a41002900f0b444370000200a41002900e8b44437000042a08080808004211b0c060b412041011033000b200441dc016a4101360200200442013702cc01200441c8b4c4003602c801200441283602c4022004200441c0026a3602d8012004200441b0026a3602c002200441d8026a200441c8016a10eb030b20042802d802210a0b20042902dc02211b2018450d02200d10310c020b200441dc016a4102360200200441e4026a4105360200200442023702cc0120044188b3c4003602c801200441053602dc022004200441d8026a3602d8012004200441c0016a3602e0022004200441bc016a3602d802200441c0026a200441c8016a10eb0320042802c002210a0b20042902c402211b0b0240200428028401450d0020042802800110310b0240200428029001450d00200428028c0110310b0240200428029c01450d0020042802980110310b024020042802ac012202450d0020042802a40121012002410474210203400240200141046a280200450d00200128020010310b200141106a2101200241706a22020d000b0b024020042802a801450d0020042802a40110310b024020042802b401450d0020042802b00110310b201f450d0120191031200a0d040c020b2001290204211b2001280200210a0240201f450d00201910310b0240201a450d00201010310b02402015450d00201610310b02402014450d00201210310b0240200e450d00200e4104742102201d210103400240200141046a280200450d00200128020010310b200141106a2101200241706a22020d000b0b0240201e450d00201d10310b2018450d00200d10310b200a0d020b2000201c36020420004100360200200041186a2003360200200041146a200c360200200041106a20093602002000410c6a2008360200200041086a20073602000c040b1034000b0240201ba7450d00200a10310b2000418aabc40036020420004101360200200041086a41133602000240200c450d00200c41306c2102200821010340200110fb02200141306a2101200241506a22020d000b0b2009450d02200810310c020b200441003a00c002200441dc016a4101360200200442013702cc012004419cdfc3003602c801200441233602b4022004200441b0026a3602d8012004200441c0026a3602b00220044180016a200441c8016a10eb03200428028001210720042802840121060240200c450d00200c41306c2102200821010340200110fb02200141306a2101200241506a22020d000b0b4105210a2009450d00200810310b02402006450d00200a41ff01714105470d00200710310b200041f4aac40036020420004101360200200041086a41163602000b200441f0026a24000b160020002001280208360204200020012802003602000bd21301177f23004190026b22022400024002400240024002400240200028020022034198bfc000460d00200028020421040c010b41002104200241b8016a410041d80010aa051a2002411f6a220542003700002002420037011a41ec00102d2203450d0120034100360200200320022902183702042003410b6a2005290000370000200341136a200241b7016a41d90010ab051a20004100360204200020033602000b200141ff0171210602400340200341066a210720032f01062108410c21094100210502400240034020082005460d01200320056a210a200941086a2109200541016a210502404100417f4101200a41086a2d0000220a20064b1b200a2006461b41016a0e03000301000b0b2005417f6a21080b2004450d022004417f6a2104200320084102746a41ec006a28020021030c010b0b200320096a42013702000c030b2000200028020841016a360208024002400240024020072f01002205410b490d00200241276a41016a410041d80010aa051a200241003a001941ec00102d220b450d03200b4100360200200b410036000f200b4200370007200b20022f01183b0005200b41136a200241276a41d90010ab051a2003410e6a2d0000210c2003280248210d2003280244210e200b41086a2003410f6a20032f010641796a220510ab052109200b41146a200341cc006a200541037410ab052106200341063b0106200b20053b010620084107490d0120092008417a6a220a6a2009200841796a22086a2209200541ffff037120086b10ac051a200920013a00002006200a4103746a200620084103746a2205200b41066a22072f010020086b41037410ac051a2005410136020020072f010021050c020b200341086a2209200841016a22066a200920086a2209200520086b220a10ac051a200920013a0000200341146a220920064103746a200920084103746a2209200a41037410ac051a200941013602002003200541016a3b01060c050b200341086a2205200841016a22096a200520086a220620072f0100220520086b220a10ac051a200620013a0000200341146a220620094103746a200620084103746a2209200a41037410ac051a200941013602000b2007200541016a3b01002003280200220a450d02200341046a2105200241276a41016a210f200241a8016a2101200241a0016a211020024198016a211120024190016a211220024180016a41086a2113034020052f0100210602400240024002400240200a2f01062205410b490d00200f410041d80010aa051a200241003a0019200220022f01183b0108200241b7016a200241276a41d90010ab051a20014200370300201042003703002011420037030020124200370300201342003703002002420037038001419c01102d2209450d03200941003602002009410036000f20094200370007200920022f01083b0005200941136a200241b7016a41d90010ab051a20094194016a20012903003702002009418c016a201029030037020020094184016a2011290300370200200941fc006a2012290300370200200941f4006a2013290300370200200920022903800137026c200a41c8006a2802002114200a41c4006a2802002115200a410e6a2d00002116200941086a200a410f6a200a2f0106220341796a220510ab052117200941146a200a41cc006a200541037410ab052118200941ec006a200a4188016a2003417a6a220441027410ab052107200a41063b0106200920053b010602402004450d00410021052007210303402003280200220820053b010420082009360200200341046a21032004200541016a2205470d000b0b20064107490d0120172006417a6a22036a2017200641796a22056a220820092f010620056b10ac051a2008200c3a0000201820034103746a201820054103746a220820092f010620056b41037410ac051a2008200e3602002008200d360204200920092f010641016a22083b01062006410274220c20076a416c6a200720034102746a2204200841ffff0371220620036b41027410ac051a2004200b36020020062003490d022009200c6a41d4006a2103034020032802002208200541016a22053b010420082009360200200341046a210320052006490d000c030b0b200a41086a2209200641016a22036a200920066a2209200520066b220810ac051a2009200c3a0000200a41146a220920034103746a200920064103746a2209200841037410ac051a2009200e3602002009200d360204200a200541016a22053b01062006410274200a41ec006a22096a41086a200920034102746a2209200541ffff0371220820036b41027410ac051a2009200b360200200620084f0d08200a2003417f6a22054102746a41f0006a2103034020032802002209200541016a22053b01042009200a360200200341046a210320052008490d000c090b0b200a41086a2203200641016a22056a200320066a2203200a2f0106220820066b220410ac051a2003200c3a0000200a41146a220320054103746a200320064103746a2203200441037410ac051a2003200e3602002003200d360204200a200841016a22033b010620064102742207200a41ec006a22086a41086a200820054102746a2204200341ffff0371220820056b41027410ac051a2004200b360200200620084f0d00200a20076a41f0006a2105034020052802002203200641016a22063b01042003200a360200200541046a210520082006470d000b0b200a28020022030d012009210b2014210d2015210e2016210c0c050b419c0141041033000b200a41046a21052003210a2016210c2015210e2014210d2009210b0c000b0b41ec0041041033000b41ec0041041033000b200241b7016a41016a410041d80010aa051a2002411f6a220542003700002002420037011a200220022902183703082002200529000037000f200241276a200241b7016a41d90010ab051a200241a8016a22034200370300200241a0016a2209420037030020024180016a41186a2208420037030020024190016a2206420037030020024180016a41086a220a42003703002002420037038001419c01102d2205450d0120054100360200200520022903083702042005410b6a200229000f370000200541136a200241276a41d90010ab051a20054194016a20032903003702002005418c016a200929030037020020054184016a2008290300370200200541fc006a2006290300370200200541f4006a200a290300370200200520022903800137026c20052000280200220336026c200020053602002000200028020441016a360204200341003b010420032005360200200520052f010622034103746a220941186a200d360200200941146a200e360200200520036a41086a200c3a0000200541ec006a200341016a22034102746a200b360200200520033b0106200b20033b0104200b20053602000b20024190026a24000f0b419c0141041033000b842701377f2001410c6a28020021022001280208210341002104024002400240200141106a28020022050d00410021064100210741002108410021094100210a4100210b4100210c4100210d4100210e410021050c010b410021044100210e4100210d4100210c4100210b4100210a4100210941002108410021074100210f4100211002400340200121112010210620032005417f6a220541306c6a220128002c2112200128002821132001280024211420012800202115200128001c2116200128001821172001280014211820012800102119200128000c211a2001280008211b2001280004211c41012110024002400240024002400240024020012d0000221d417e6a221e410e4d0d004101211f0c010b4101211f4101212041012121410121224101212341012124201c21010240024002400240024002400240024002400240024002400240024002400240024002400240201e0e0f00010203040506180717080917171a000b0240200f0d002006211020112101201c210f201b2125201a21260c180b02402026450d0020264104742110200f210103400240200141046a280200450d00200128020010310b200141106a2101201041706a22100d000b0b41002124410121102025450d11200f10310c110b024020070d002006211020112101201c2107201b2127201a21280c170b02402028450d00202841286c21102007210103400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141286a2101201041586a22100d000b0b41002123410121102027450d0f200710310c0f0b2029450d0d2008450d0d200810310c0d0b202a450d0b2009450d0b200910310c0b0b202b450d09200a450d09200a10310c090b0240200b0d002006211020112101201c210b201b212c201a212d0c130b0240202d450d00200b202d4104746a2122200b21210340024020212802082210450d0020212802002101201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f28020010312020280200211f0b201f10310b200141106a2101201041706a22100d000b0b202141106a21010240202141046a280200450d00202128020010310b2001212120012022470d000b0b4101211f41002110202c450d07200b10310c070b0240200c0d002006211020112101201c210c201b212e201a212f0c120b0240202f450d00202f41146c2110200c210103400240200141046a280200450d00200128020010310b200141146a21012010416c6a22100d000b0b4100211f41012110202e450d05200c10310c050b0240200d0d002006211020112101201c210d201b2130201a21310c110b02402031450d00200d2031411c6c6a2122200d21210340024020212802042201450d0002402021410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f28020010312020280200211f0b201f10310b200141106a2101201041706a22100d000b0b202141086a280200450d00202128020410310b2021411c6a21010240202141146a280200450d00202128021010310b2001212120012022470d000b0b41002120410121102030450d03200d10310c030b0240200e0d002006211020112101201c210e201b2132201a21330c100b02402033450d00200e203341186c6a2122200e212103400240202141046a280200450d00202128020010310b0240202141146a2802002210450d00202128020c2101201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f28020010312020280200211f0b201f10310b200141106a2101201041706a22100d000b0b202141186a21010240202141106a280200450d00202128020c10310b2001212120012022470d000b0b41002121410121102032450d01200e10310c010b024020040d002006211020112101201a2134201b2135201c21040c0f0b02402034450d0020042034411c6c6a2122200421210340024020212802042201450d0002402021410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f28020010312020280200211f0b201f10310b200141106a2101201041706a22100d000b0b202141086a280200450d00202128020410310b2021411c6a21010240202141146a280200450d00202128021010310b2001212120012022470d000b0b410021224101211002402035450d00200410310b201c2104201b2135201a21344101211f41012120410121210c0c0b201a2133201b2132201c210e4101211f410121200c0a0b201a2131201b2130201c210d4101211f0c080b201a212f201b212e201c210c0c060b201a212d201b212c201c210b0c050b2006211020112101201c210a201b212b201a21360c090b2006211020112101201c2109201b212a201a21370c080b2006211020112101201c2108201b2129201a21380c070b201a2128201b2127201c21074101211f410121204101212141012122410121240c050b201a2126201b2125201c210f4101211f410121204101212141012122410121230c040b410121200b410121210b410121220b41012123410121240b024002400240201e410b4b0d000240024002400240024002400240024002400240201e0e0c000102030405060a070a0809000b2024450d0b0240201a450d00201a4104742110201c210103400240200141046a280200450d00200128020010310b200141106a2101201041706a22100d000b0b201b450d0b0c0a0b2023450d0a0240201a450d00201a41286c2110201c210103400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141286a2101201041586a22100d000b0b201b0d090c0a0b41000d09201b0d080c090b41000d08201b0d070c080b41000d07201b0d060c070b2010450d060240201a450d00201c201a4104746a211e201c21210340024020212802082210450d0020212802002101201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f28020010312020280200211f0b201f10310b200141106a2101201041706a22100d000b0b202141106a21010240202141046a280200450d00202128020010310b200121212001201e470d000b0b201b0d050c060b201f450d050240201a450d00201a41146c2110201c210103400240200141046a280200450d00200128020010310b200141146a21012010416c6a22100d000b0b201b0d040c050b2020450d040240201a450d00201c201a411c6c6a211e201c21210340024020212802042201450d0002402021410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f28020010312020280200211f0b201f10310b200141106a2101201041706a22100d000b0b202141086a280200450d00202128020410310b2021411c6a21010240202141146a280200450d00202128021010310b200121212001201e470d000b0b201b0d030c040b2021450d030240201a450d00201c201a41186c6a211e201c212103400240202141046a280200450d00202128020010310b0240202141146a2802002210450d00202128020c2101201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f28020010312020280200211f0b201f10310b200141106a2101201041706a22100d000b0b202141186a21010240202141106a280200450d00202128020c10310b200121212001201e470d000b0b201b0d020c030b2022450d020240201a450d00201c201a411c6c6a211e201c21210340024020212802042201450d0002402021410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f28020010312020280200211f0b201f10310b200141106a2101201041706a22100d000b0b202141086a280200450d00202128020410310b2021411c6a21010240202141146a280200450d00202128021010310b200121212001201e470d000b0b201b0d010c020b0240201d410e4b0d00200621102011210102400240024002400240024002400240024002400240201d0e0f0001020304040405060e070e08090a000b201b0d0b0c0c0b0240201b450d00201c10310b2018450d0b201910310c0b0b0240201a450d00201a4104742110201c210103400240200141046a280200450d00200128020010310b200141106a2101201041706a22100d000b0b201b0d090c0a0b201a450d00201a41286c2110201c210103400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141286a2101201041586a22100d000b0b201b0d070c080b0240201a450d00201c201a4104746a211e201c21210340024020212802082210450d0020212802002101201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f28020010312020280200211f0b201f10310b200141106a2101201041706a22100d000b0b202141106a21010240202141046a280200450d00202128020010310b200121212001201e470d000b0b201b0d060c070b0240201a450d00201a41146c2110201c210103400240200141046a280200450d00200128020010310b200141146a21012010416c6a22100d000b0b201b0d050c060b0240201a450d00201c201a411c6c6a211e201c21210340024020212802042201450d0002402021410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f28020010312020280200211f0b201f10310b200141106a2101201041706a22100d000b0b202141086a280200450d00202128020410310b2021411c6a21010240202141146a280200450d00202128021010310b200121212001201e470d000b0b201b0d040c050b0240201a450d00201c201a41186c6a211e201c212103400240202141046a280200450d00202128020010310b0240202141146a2802002210450d00202128020c2101201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f28020010312020280200211f0b201f10310b200141106a2101201041706a22100d000b0b202141186a21010240202141106a280200450d00202128020c10310b200121212001201e470d000b0b201b0d030c040b0240201a450d00201c201a411c6c6a211e201c21210340024020212802042201450d0002402021410c6a2802002210450d00201041047421100340024020012d00004109470d000240200141046a2220280200221f28020441ffffffff0371450d00201f28020010312020280200211f0b201f10310b200141106a2101201041706a22100d000b0b202141086a280200450d00202128020410310b2021411c6a21010240202141146a280200450d00202128021010310b200121212001201e470d000b0b201b0d020c030b0240201c450d00201b450d00201c10310b02402018450d0002402016450d002016410c6c211020182101034002402001280200221f450d00200141046a280200450d00201f10310b2001410c6a2101201041746a22100d000b0b2017450d00201810310b2014450d0202402012450d00201420124104746a211c2014212103402021222041106a2121024020202802042201450d0002402020410c6a2802002210450d002010410c6c2110034002402001280200221f450d00200141046a280200450d00201f10310b2001410c6a2101201041746a22100d000b0b202041086a280200450d00202028020410310b2021201c470d000b0b2013450d02201410310c020b0240201b450d00201c10310b02402018450d002017450d00201810310b2014450d01201510310c010b201c10310b20062110201121010b20050d000b4100210520012111201021060b200f0d010b4104210f41002125410021260b20002003360280012000200636025420002026360208200020253602042000200f36020020004188016a200536020020004184016a2002360200200041fc006a2034410020041b360200200041f8006a2035410020041b36020020002004410420041b360274200041f0006a20334100200e1b360200200041ec006a20324100200e1b3602002000200e4104200e1b360268200041e4006a20314100200d1b360200200041e0006a20304100200d1b3602002000200d4104200d1b36025c200041d8006a2011360200200041d0006a202f4100200c1b360200200041cc006a202e4100200c1b3602002000200c4104200c1b360248200041c4006a202d4100200b1b360200200041c0006a202c4100200b1b3602002000200b4104200b1b36023c200041386a20364100200a1b360200200041346a202b4100200a1b3602002000200a4104200a1b3602302000412c6a2037410020091b360200200041286a202a410020091b36020020002009410420091b360224200041206a2038410020081b3602002000411c6a2029410020081b36020020002008410420081b360218200041146a2028410020071b360200200041106a2027410020071b36020020002007410420071b36020c0bbc05010e7f230041106b2202240002400240024020012802004101470d00200141106a2d000021032001410c6a2802002104200141086a280200210520012f0112210620012d0011210720012802042108200241086a200010f30202400240200228020c2209450d0020022802082101200941047441706a410476210a0240200741ff0171220b4104460d004100210c200341ff0171210d0340200c2109024020012d000c200d470d0020012802082004470d0002402001280200220c2008460d002004450d002004210e2008210f0340200c2d0000200f2d0000470d02200c41016a210c200f41016a210f200e417f6a220e0d000b0b20012d000d220c200b470d00200c4104470d040b200141106a2101200941016a210c2009200a470d000c020b0b4100210c200341ff0171210d0340200c2109024020012d000c200d470d0020012802082004470d0002402001280200220c2008460d002004450d002004210e2008210f0340200c2d0000200f2d0000470d02200c41016a210c200f41016a210f200e417f6a220e0d000b0b20012d000d4104460d030b200141106a2101200941016a210c2009200a470d000b0b0240024020002802082201200041046a280200470d00200141016a22092001490d012001410174220c2009200c20094b1b220941ffffffff00712009470d012009410474220c4100480d010240024020010d00200c102d21010c010b20002802002001410474200c102f21010b2001450d0420002001360200200041046a2009360200200028020821010b200028020020014104746a220120063b010e200120073a000d200120033a000c2001200436020820012005360204200120083602002000200028020841016a3602082002200010f3022002280204417f6a21090c040b1034000b2005450d02200810310c020b200128020421090c010b200c41041033000b200241106a240020090bf722032d7f017e017f230041306b22022400200241043602002001280204210320012802002104410121050240024002400240024002400240024002400240024002400240024002400240200128020822060d0041002107410121080c010b4130102d2207450d012007200636000c200720033600082007200436000420022007360200200741023a000041002108410121070b200141106a2802002109200128020c210a02400240200141146a280200220b0d002007210c0c010b2007410174220d200741016a220c200d200c4b1b220c41306c210e0240024020070d00200e102d210d0c010b2002280200200741306c200e102f210d0b200d450d022002200d360200200d200741306c6a220d41033a0000200d20022f002d3b0001200d200b36000c200d2009360008200d200a360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021050b2001411c6a280200210f200128021821104100211102400240200141206a28020022120d00200c210e410021130c010b024002402007200c460d00200c210e0c010b41000d0e41000d0e200c410174220d200c41016a220e200d200e4b1b220ead42307ea722144100480d0e02400240200c0d002014102d210d0c010b2002280200200c41306c2014102f210d0b200d450d042002200d3602000b2002280200200741306c6a220d41043a0000200d20022f002d3b0001200d201236000c200d200f360008200d2010360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a29020037020041012113200741016a21070b200141286a280200211420012802242115024002402001412c6a28020022120d00200e210c0c010b024002402007200e460d00200e210c0c010b41000d0e41000d0e200e410174220d200e41016a220c200d200c4b1b220cad42307ea722114100480d0e02400240200e0d002011102d210d0c010b2002280200200e41306c2011102f210d0b200d450d052002200d3602000b2002280200200741306c6a220d41053a0000200d20022f002d3b0001200d201236000c200d2014360008200d2015360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a29020037020041012111200741016a21070b200141346a28020021162001280230211702400240200141386a280200220e0d00410021180c010b02402007200c470d0041000d0e41000d0e200c410174220d200c41016a2212200d20124b1b2212ad42307ea722194100480d0e02400240200c0d002019102d210d0c010b2002280200200c41306c2019102f210d0b200d450d062002200d3602002012210c0b2002280200200741306c6a220d41063a0000200d20022f002d3b0001200d200e36000c200d2016360008200d2017360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a29020037020041012118200741016a21070b200141c0006a280200211a200128023c211b4101211902400240200141c4006a280200221c0d00200c210e4101211d0c010b024002402007200c460d00200c210e0c010b41000d0e41000d0e200c410174220d200c41016a220e200d200e4b1b220ead42307ea722124100480d0e02400240200c0d002012102d210d0c010b2002280200200c41306c2012102f210d0b200d450d072002200d3602000b2002280200200741306c6a220d41073a0000200d20022f002d3b0001200d201c36000c200d201a360008200d201b360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a21074100211d0b200141cc006a280200211e2001280248211f02400240200141d0006a28020022200d00200e21120c010b024002402007200e460d00200e21120c010b41000d0e41000d0e200e410174220d200e41016a220c200d200c4b1b2212ad42307ea7220c4100480d0e02400240200e0d00200c102d210d0c010b2002280200200e41306c200c102f210d0b200d450d082002200d3602000b2002280200200741306c6a220d41083a0000200d20022f002d3b0001200d202036000c200d201e360008200d201f360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a200241046a41086a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021190b410121210240024020012802544101460d002012210c0c010b200141d8006a280200210e0240024020072012460d002012210c0c010b41000d0e41000d0e2012410174220d201241016a220c200d200c4b1b220cad42307ea722224100480d0e0240024020120d002022102d210d0c010b2002280200201241306c2022102f210d0b200d450d092002200d3602000b2002280200200741306c6a220d41093a0000200d20022f002d3b0001200d200e360204200d2002290204370208200d41036a2002412f6a2d00003a0000200d41106a2002410c6a290200370200200d41186a200241046a41106a290200370200200d41206a200241046a41186a290200370200200d41286a200241046a41206a290200370200200741016a21070b200141e0006a2802002123200128025c212402400240200141e4006a28020022250d00200c210e0c010b024002402007200c460d00200c210e0c010b41000d0e41000d0e200c410174220d200c41016a220e200d200e4b1b220ead42307ea722124100480d0e02400240200c0d002012102d210d0c010b2002280200200c41306c2012102f210d0b200d450d0a2002200d3602000b2002280200200741306c6a220d410a3a0000200d20022f002d3b0001200d202536000c200d2023360008200d2024360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021210b200141ec006a2802002126200128026821274101212202400240200141f0006a28020022280d00200e2112410121290c010b024002402007200e460d00200e21120c010b41000d0e41000d0e200e410174220d200e41016a220c200d200c4b1b2212ad42307ea7220c4100480d0e02400240200e0d00200c102d210d0c010b2002280200200e41306c200c102f210d0b200d450d0b2002200d3602000b2002280200200741306c6a220d410c3a0000200d20022f002d3b0001200d202836000c200d2026360008200d2027360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021290b200141f8006a280200212a2001280274212b02400240200141fc006a280200222c0d002012210c0c010b0240024020072012460d002012210c0c010b41000d0e41000d0e2012410174220d201241016a220c200d200c4b1b220cad42307ea7220e4100480d0e0240024020120d00200e102d210d0c010b2002280200201241306c200e102f210d0b200d450d0c2002200d3602000b2002280200200741306c6a220d410d3a0000200d20022f002d3b0001200d202c36000c200d202a360008200d202b360004200d2002290204370210200d41036a2002412f6a2d00003a0000200d41186a2002410c6a290200370200200d41206a200241146a290200370200200d41286a200241046a41186a290200370200200741016a2107410021220b20014184016a2802002112200128028001210d02400240200c20076b20014188016a28020041306c222d41306d220e490d00200228020021010c010b2007200e6a22012007490d0d200c410174222e2001202e20014b1b222ead42307e222f422088a70d0d202fa722304100480d0d02400240200c0d002030102d21010c010b2002280200200c41306c2030102f21010b2001450d0c20022001360200202e210c0b2001200741306c6a200d202d10ab051a2007200e6a210702402012450d00200d10310b2000200136020820004280c2cdeb16370200200041106a20073602002000410c6a200c3602002022450d0d0240202c450d00202b202c411c6c6a210e202b21000340024020002802042201450d0002402000410c6a2802002207450d00200741047421070340024020012d00004109470d000240200141046a220c280200220d28020441ffffffff0371450d00200d2802001031200c280200210d0b200d10310b200141106a2101200741706a22070d000b0b200041086a280200450d00200028020410310b2000411c6a21010240200041146a280200450d00200028021010310b200121002001200e470d000b0b202a450d0d202b10310c0d0b413041041033000b200e41041033000b201441041033000b201141041033000b201941041033000b201241041033000b200c41041033000b202241041033000b201241041033000b200c41041033000b200e41041033000b203041041033000b1034000b02402029450d0002402028450d002027202841186c6a210e2027210003400240200041046a280200450d00200028020010310b0240200041146a2802002207450d00200028020c2101200741047421070340024020012d00004109470d000240200141046a220c280200220d28020441ffffffff0371450d00200d2802001031200c280200210d0b200d10310b200141106a2101200741706a22070d000b0b200041186a21010240200041106a280200450d00200028020c10310b200121002001200e470d000b0b2026450d00202710310b02402021450d0002402025450d0020242025411c6c6a210e202421000340024020002802042201450d0002402000410c6a2802002207450d00200741047421070340024020012d00004109470d000240200141046a220c280200220d28020441ffffffff0371450d00200d2802001031200c280200210d0b200d10310b200141106a2101200741706a22070d000b0b200041086a280200450d00200028020410310b2000411c6a21010240200041146a280200450d00200028021010310b200121002001200e470d000b0b2023450d00202410310b02402019450d0002402020450d00202041146c2107201f210103400240200141046a280200450d00200128020010310b200141146a21012007416c6a22070d000b0b201e450d00201f10310b0240201d450d000240201c450d00201b201c4104746a210e201b21000340024020002802082207450d0020002802002101200741047421070340024020012d00004109470d000240200141046a220c280200220d28020441ffffffff0371450d00200d2802001031200c280200210d0b200d10310b200141106a2101200741706a22070d000b0b200041106a21010240200041046a280200450d00200028020010310b200121002001200e470d000b0b201a450d00201b10310b02402016410047201841017371450d00201710310b02402014410047201141017371450d00201510310b0240200f410047201341017371450d00201010310b02402005450d000240200b450d00200b41286c2107200a210103400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141286a2101200741586a22070d000b0b2009450d00200a10310b02402008450d0002402006450d00200641047421072004210103400240200141046a280200450d00200128020010310b200141106a2101200741706a22070d000b0b2003450d00200410310b200241306a24000bef0203037f017e027f410121020240024002400240200041086a2802002203417f6a220420034f0d00200420034b0d00200028020020044104746a220329020421052003200141016aad3702042005a721012005422088a721030240200041086a28020022024101460d002002450d0220002802002002417e6a4104746a22022802042001470d002002200228020820036a36020841000f0b410021022003450d000240200041146a2802002204200041106a280200470d00200441016a22062004490d04200441017422072006200720064b1b220641ffffffff01712006470d04200641037422074100480d040240024020040d002007102d21040c010b200028020c20044103742007102f21040b2004450d032000200436020c200041106a2006360200200028021421040b200028020c20044103746a22042003360204200420013602002000200028021441016a3602140b20020f0b419ff0c300413f10bf01000b200741041033000b1034000b931302147f027e23004180026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d002000200110c1042003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200b200b417f6a220d2000200b4103746a280200220e2000200d4103746a280200220f4922101b2211200b41016a2212200d200b20101b200020124103746a280200220b200f200e20101b220d49220f1b200b200d200f1b200020114103746a2802004922131b210b200c200c417f6a220d2000200c4103746a28020022112000200d4103746a280200221249220e1b2214200c4101722206200d200c200e1b200020064103746a280200220c20122011200e1b220d4922111b200c200d20111b200020144103746a2802004922141b210c200a200a417f6a22122000200a4103746a2802002206200020124103746a280200221549220d1b2216200a41016a22172012200a200d1b200020174103746a280200220a20152006200d1b22064922121b200a200620121b200020164103746a2802004922061b210a41024101200d1b200d20121b20066a200e6a20116a20146a20106a200f6a20136a210d0b200d2000200c4103746a280200220e2000200a4103746a280200220f4922106a2000200b4103746a280200220d200f200e20101b221149220f6a210e200d2011200f1b2000200c200a20101b220d4103746a280200490d01200b200a200c20101b200f1b210d0c020b2000200110c2040c0f0b200e41016a220e410c490d0002402001410176220b450d00200020014103746a41786a210a2000210c0340200c2902002118200c200a290200370200200a2018370200200c41086a210c200a41786a210a200b417f6a220b0d000b0b2001200d417f736a210d4101210a0c010b200e45210a0b0240200a452009724101710d002000200110c3040d0d0b2002450d02200d20014f0d01024020022802002000200d4103746a220a2802004f0d0020002108200121070c040b200029020021182000200a290200370200200a2018370200200041786a210f200041086a211120002902002218a721104100210c2001210b03400240200c200b417f6a220d4f0d002011200c4103746a210a0340200a28020020104b0d01200a41086a210a200d200c41016a220c470d000b200d210c0b200f200b4103746a210a02400340200c200b417f6a220b4f0d01200a280200210d200a41786a220e210a200d20104b0d000b2011200c4103746a220a2902002119200a200e41086a220d290200370200200d2019370200200c41016a210c0c010b0b2000201837020002402001200c41016a220a490d002000200a4103746a21002001200a6b220141154f0d010c0c0b0b200a2001107b000b41c4b1c400200d2001104b000b2007450d010b200d20074f0d012008290200211820082008200d4103746a220a290200370200200a2018370200200841086a210e20082902002219a72111410021142007417f6a2210450d02200e210a0340200a28020020114f0d03200a41086a210a2010201441016a2214470d000b201021140c020b41f8b0c40041004100104b000b4188b1c400200d2007104b000b200820074103746a210c2010210b02400340200c210d200b220a20144d22060d01200a417f6a210b200d41786a220c28020020114f0d000b0b0240200a2014490d002010200a490d0241800121054100210b410021014100210c4100210f4180012109200e20144103746a2215211003400240200d20106b220a4187104b22130d00200a410376220a41807f6a200a2001200b49200f200c49220e7222001b210a02402000450d002009200a200e1b2109200a2005200e1b21050c010b200a200a41017622096b21050b0240200f200c470d00024020090d002004220c210f0c010b4100210a2004220f210c2010210e0340200c200a3a0000200c200e28020020114f6a210c200e41086a210e2009200a41016a220a470d000b0b02402001200b470d00024020050d0020044180016a220b21010c010b200d41786a210a4100210e20044180016a2201210b0340200b200e3a0000200b200a2802002011496a210b200a41786a210a2005200e41016a220e470d000b0b0240200b20016b220a200c200f6b220e200e200a4b1b2212450d002010200f2d00004103746a220a2902002118200a200d20012d0000417f734103746a290200370200024020124101460d004100210a0340200d2001200a6a220e2d0000417f734103746a2010200f200a6a41016a22002d00004103746a290200370200201020002d00004103746a200d200e41016a2d0000417f734103746a290200370200200a41026a210e200a41016a2200210a200e2012490d000b200120006a2101200f20006a210f0b200d20012d0000417f734103746a2018370200200141016a2101200f41016a210f0b200d20054103746b200d2001200b461b210d201020094103746a2010200f200c461b211020130d000b02400240200f200c4f0d00200d210a03402010200c417f6a220c2d00004103746a220b2902002118200b200a41786a220a290200370200200a2018370200200f200c490d000c020b0b2010210a2001200b4f0d000340200a2902002118200a200d200b417f6a220b2d0000417f734103746a220c290200370200200c2018370200200a41086a210a2001200b490d000b0b200820193702002007200a20156b41037620146a22014d0d032008200820014103746a220a290200370200200a2019370200200720016b220c450d04200c20012001200c4b1b210b2007410376210d200a41086a2100024002402001200c417f6a220c490d002000200c200a200310f902200821000c010b200820012002200310f902200a2102200c21010b200b200d4f2105200141154f0d010c050b0b2014200a107b000b200a201010b601000b4188b1c40020012007104b000b4198b1c400411c41b4b1c40010a401000b20014102490d00200041786a21104100210e4101210b0340200b410374210c200b417f6a210a200b41016a210b02402000200c6a220d2802002000200a4103746a220f2802004f0d00200d2902002118200d200f2902003702000240200a450d00200e210c2010210a200d41706a2802002018a7220d4d0d00024002400340200a41086a200a290200370200200c4101460d01200c417f6a210c200a41786a220a280200200d4b0d000c020b0b4100210c0b2000200c4103746a210f0b200f20183702000b200e41016a210e201041086a2110200b2001470d000b0b20044180026a24000be00402097f017e230041306b22022400200241106a2203200141246a290200370300200241086a22042001411c6a29020037030020022001290214370300200241186a41106a2205200141106a280200360200200241186a41086a2206200141086a290200370300200220012902003703182000200241186a10f60221070240024002400240200041206a28020022082000411c6a280200470d00200841016a22092008490d032008410174220a2009200a20094b1b220941ffffffff03712009470d032009410274220a4100480d030240024020080d00200a102d21080c010b20002802182008410274200a102f21080b2008450d01200020083602182000411c6a2009360200200028022021080b200028021820084102746a20073602002000200028022041016a3602202005200329030037030020062004290300370300200220022903003703180240200041f0006a22032802002208200041ec006a280200470d00200841016a22042008490d03200841017422052004200520044b1b2204ad42187e220b422088a70d03200ba722054100480d030240024020080d002005102d21080c010b2000280268200841186c2005102f21080b2008450d0220002008360268200041ec006a2004360200200041f0006a28020021080b2000280268200841186c6a22082002290318370200200841106a200241186a41106a290300370200200841086a200241186a41086a29030037020020032003280200220841016a360200024020012d002c450d0020004101360254200041d8006a20083602000b200241306a24000f0b200a41041033000b200541041033000b1034000bb20c01067f0240024020002d00002201410e4b0d00024002400240024002400240024002400240024002400240024020010e0f0001020304050607080e090e0a0b0c000b200041086a280200450d0d200041046a28020010310f0b0240200041086a280200450d00200041046a28020010310b200041146a280200450d0c200041106a28020010310f0b02402000410c6a2802002202450d00200041046a28020021012002410474210203400240200141046a280200450d00200128020010310b200141106a2101200241706a22020d000b0b200041086a280200450d0b200028020410310f0b02402000410c6a2802002202450d00200041046a2802002101200241286c210203400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141286a2101200241586a22020d000b0b200041086a280200450d0a200028020410310f0b200041086a280200450d09200041046a28020010310f0b200041086a280200450d08200041046a28020010310f0b200041086a280200450d07200041046a28020010310f0b02402000410c6a2802002201450d00200041046a280200220320014104746a21040340024020032802082202450d0020032802002101200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d0020062802001031200528020021060b200610310b200141106a2101200241706a22020d000b0b200341106a21010240200341046a280200450d00200328020010310b2001210320012004470d000b0b200041086a280200450d06200028020410310f0b02402000410c6a2802002202450d00200041046a2802002101200241146c210203400240200141046a280200450d00200128020010310b200141146a21012002416c6a22020d000b0b200041086a280200450d05200028020410310f0b02402000410c6a2802002201450d00200041046a28020022032001411c6c6a21040340024020032802042201450d0002402003410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d0020062802001031200528020021060b200610310b200141106a2101200241706a22020d000b0b200341086a280200450d00200328020410310b2003411c6a21010240200341146a280200450d00200328021010310b2001210320012004470d000b0b200041086a280200450d04200028020410310f0b02402000410c6a2802002201450d00200041046a2802002203200141186c6a210403400240200341046a280200450d00200328020010310b0240200341146a2802002202450d00200328020c2101200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d0020062802001031200528020021060b200610310b200141106a2101200241706a22020d000b0b200341186a21010240200341106a280200450d00200328020c10310b2001210320012004470d000b0b200041086a280200450d03200028020410310f0b200041046a2201108005200041086a280200450d02200128020010310f0b0240200041046a2802002201450d00200041086a280200450d00200110310b0240200041146a2802002201450d0002402000411c6a2802002202450d002002410c6c21020340024020012802002206450d00200141046a280200450d00200610310b2001410c6a2101200241746a22020d000b0b200041186a280200450d00200028021410310b200041246a2802002203450d0102402000412c6a2802002201450d00200320014104746a210403402003220541106a2103024020052802042201450d0002402005410c6a2802002202450d002002410c6c21020340024020012802002206450d00200141046a280200450d00200610310b2001410c6a2101200241746a22020d000b0b200541086a280200450d00200528020410310b20032004470d000b0b200041286a280200450d01200028022410310c010b0240200041086a280200450d00200041046a28020010310b0240200041146a2802002201450d00200041186a280200450d00200110310b200041246a280200450d00200041206a28020010310f0b0bbd7905077f017e2a7f037e0a7f23002203210420034180096b41607122032400024002400240024002400240024002400240024002404110102d2205450d00200541063a00004120102d2206450d01200641063a001020064100360204200620032f00f0053b00012006412d3a0000200641036a200341f2056a2d00003a0000024020052d00004109470d0002402005280204220728020441ffffffff0371450d0020072802001031200528020421070b200710310b20051031200141106a28020041306c2105200128020841546a210702400340024020050d004110102d2207450d0520074180023b010c200742828080802037020420072006360200200720032f01d0033b010e0240200128021022052001410c6a280200470d00200541016a22082005490d0e200541017422092008200920084b1b2208ad42307e220a422088a70d0e200aa722094100480d0e0240024020050d002009102d21050c010b2001280208200541306c2009102f21050b2005450d07200120053602082001410c6a2008360200200128021021050b2001280208200541306c6a220520032f00e0043b0001200541073a0000200542818080801037000820052007360004200520032902f005370210200541036a200341e2046a2d00003a0000200541186a200341f8056a290200370200200541206a20034180066a290200370200200541286a200341f0056a41186a2902003702002001200128021041016a220b3602104100210c0c020b200541506a21052007412c6a2108200741306a2209210720082d00004107470d000b200320032f01d0033b01f0050240200941086a22072802002205200941046a280200470d00200541016a22082005490d0c2005410174220d2008200d20084b1b220841ffffffff00712008470d0c2008410474220d4100480d0c0240024020050d00200d102d21050c010b20092802002005410474200d102f21050b2005450d0620092005360200200941046a2008360200200941086a28020021050b200928020020054104746a22054180023b010c200542828080802037020420052006360200200520032f01f0053b010e2007200728020041016a360200200341c8006a200910f302200328024c417f6a210c2001280210210b0b200b41306c21052001280208220e41546a210702400340410021082005450d01200541506a21052007412c6a2109200741306a2206210720092d00004103470d000b200641086a2802002205450d00200541286c2107200628020041186a2105410021080340200820052d0000456a2108200541286a2105200741586a22070d000b0b200b41306c2105200e41546a210702400340410021092005450d01200541506a21052007412c6a2106200741306a220d210720062d00004103470d000b200d41086a2802002205450d00200541286c2107200d28020041186a2105410021090340200920052d0000456a2109200541286a2105200741586a22070d000b0b200b41306c2105200e415c6a2107024003404100210f024020050d00410021050c020b200541506a2105200741246a2106200741306a220d210720062d00004104470d000b200d28020021050b200341003602e0040240200520096a220b0d0041042110410021110c080b02402008450d00200342003703f005410021050c060b200341f0056a4100200110b50420032802f405210520032802f0054101470d05200341f8056a290300210a024020032802e0042207450d0020032802e404450d00200710310b2003200a3702e404200320053602e00441002111410421104100210f0c060b411041081033000b412041081033000b411041041033000b200941041033000b200d41041033000b02400240024002404104102d2210450d0020102005360200200b4102490d02024020084102490d00200342003703f0054100210d0c020b200341f0056a4101200110b50420032802f405210d20032802f0054101470d01200341f8056a290300210a024020032802e004450d0020032802e404450d0020032802e00410310b2003200a3702e4042003200d3602e0040c020b410441041033000b410221064104210741012109410121110340200941016a210502400240024020092011470d0020062005200620054b1b221141ffffffff03712011470d0a2011410274220e4100480d0a20102007200e102f2210450d010b201020076a200d36020002402005200b4f0d000240200820054d0d00200342003703f0054100210d0c030b200341f0056a2005200110b50420032802f405210d20032802f0054101470d0220032903f805210a024020032802e004450d0020032802e404450d0020032802e00410310b200941016a210f2003200a3702e4042003200d3602e0040c050b200941016a210f0c040b200e41041033000b200641026a2106200741046a2107200521090c000b0b4101210f410121110b20032802e00421050b2005450d0020032902e404210a02402011450d00201010310b2000200536020420004101360200200041086a200a3702000c010b024020012802102205450d0020012802082212200541306c6a2113200341e0046a41146a2114200341e0076a211520034194066a2116200341a4066a2117200341b4066a2118200341c4066a2119200341d4066a211a200341e4066a211b200341f4066a211c20034184076a211d20034194076a211e200341a4076a211f200341b4076a2120200341c4076a2121200341d4076a212202400240024002400340024020122d0000410c470d00201228020c2205450d0020122802042206200541186c6a212303400240200641146a220e2802002205450d002006410c6a212441002109024002400340200920054f0d014101210502402024280200200941047422256a22072d0000410b470d002003200741046a22073602c00220072802002207200f4f0d03201020074102746a2802002208450d002003200c3602d407200341133a00d007200341d7003a00c007200320083602b4072003412d3a00b0072003200c3602a407200341123a00a00720032007360294072003410b3a009007200341063a008007200341003a00f00620034184083b01e006200341373a00d006200320023602c4062003412d3a00c0062003200c3602b406200341123a00b0062003200c3602a406200341133a00a006200341d6003a00900620032008360284062003412d3a0080062003200c3602f405200341123a00f005200e280200222620094d0d09200e2009360200200628020c2105200320153602f804200320243602f0042003200520256a220b41106a220d3602e8042003200941016a22273602e0042003202620276b22283602e40420032005202741047422296a222a3602ec042003200341f0056a3602f404200d21050240200b2d0000220841ac01460d004100210502400340200b20056a21070240200841ff01714109470d000240200741046a280200220828020441ffffffff0371450d00200828020010310b200810310b2005450d012003200741206a3602e804200541106a2105200741106a2d0000220841ac01470d000b200b20056a41106a21050c010b200741106a21050b02402005202a460d0003402003200541106a22073602e80420052d0000220841ac01460d01024020084109470d000240200541046a280200220528020441ffffffff0371450d00200528020010310b200510310b20072105200d2007470d000b0b02400240024002402028450d000240202720062802142205470d00200341f0056a21052015210b0c030b2025200541047422056b2108200628020c20056a2107200341f0056a21052015210d0340024002402005200d470d00410021050c010b2003200541106a3602f4040b200341d0036a200510b30420032d00d00341ac01460d04200720032903d003370300200741086a200341d0036a41086a2903003703002006200628021441016a3602142008450d02200741106a2107200841706a210820032802f804210d20032802f40421050c000b0b2024201410b6040c020b20032802f804210b20032802f40421050b0240200b20056b2207450d000240024020032802f004220d41046a222a280200222520266b20074104762208490d00200d28020021070c010b202620086a22072026490d12202541017422262007202620074b1b222641ffffffff00712026470d122026410474222b4100480d120240024020250d00202b102d21070c010b200d2802002025410474202b102f21070b2007450d0d200d2007360200202a20263602000b2007202720086a22254104746a200720296a202841047410ac051a200320253602e0042025200d2802082207460d00200920086a410474200741047422076b2108200d28020020076a21070340024002402005200b470d00410021050c010b2003200541106a3602f4040b200341d0036a200510b30420032d00d00341ac01460d02200720032903d003370300200741086a200341d0036a41086a290300370300200d200d28020841016a3602082008450d01200741106a2107200841706a210820032802f804210b20032802f40421050c000b0b200341003602d803200342083703d003200341d0036a201410b60420032802d003222820032802d8032207410474220b6a210d20032802d40321292028210502402007450d000240024020032802f004222541046a222a280200220520032802e404222720032802e00422076a22266b200b4104752208490d00202528020021050c010b202620086a222b2026490d1220054101742226202b2026202b4b1b222641ffffffff00712026470d122026410474222b4100480d120240024020050d00202b102d21050c010b20252802002005410474202b102f21050b2005450d0e20252005360200202a20263602000b2005200720086a220841047422266a200520074104746a202741047410ac051a200320083602e00420282105200820252802082207460d002025280200220520266a212a200520074104746a21082028210703400240200b0d00200d21050c020b200341d0036a41026a2205200741036a2d00003a0000200320072f00013b01d003024020072d0000222741ac01470d00200741106a21050c020b200741046a2802002126200741086a290300210a200820273a0000200841086a200a370300200841046a202636020020032f01d0032127200841036a20052d00003a0000200841016a20273b00002025202528020841016a360208200b41706a210b200741106a22052107200841106a2208202a470d000b0b02402005200d460d0003400240024020052d000022074109460d00200741ac01470d010c030b0240200541046a280200220728020441ffffffff0371450d00200728020010310b200710310b200541106a2205200d470d000b0b2029450d00202810310b024020032802e804220520032802ec04220d460d0003402003200541106a22073602e80420052d0000220841ac01460d01024020084109470d000240200541046a280200220528020441ffffffff0371450d00200528020010310b200510310b20072105200d2007470d000b0b024020032802e4042205450d00024020032802e004220d20032802f004220b41086a22082802002207460d00200b280200220b20074104746a200b200d4104746a200541047410ac051a0b2008200520076a3602000b024020032d00f0054109470d00024020032802f405220528020441ffffffff0371450d002005280200103120032802f40521050b200510310b024020032d0080064109470d000240200341f0056a41146a280200220528020441ffffffff0371450d002005280200103120032802840621050b200510310b024020032d0090064109470d0002402016280200220528020441ffffffff0371450d002005280200103120032802940621050b200510310b024020032d00a0064109470d0002402017280200220528020441ffffffff0371450d002005280200103120032802a40621050b200510310b024020032d00b0064109470d0002402018280200220528020441ffffffff0371450d002005280200103120032802b40621050b200510310b024020032d00c0064109470d0002402019280200220528020441ffffffff0371450d002005280200103120032802c40621050b200510310b024020032d00d0064109470d000240201a280200220528020441ffffffff0371450d002005280200103120032802d40621050b200510310b024020032d00e0064109470d000240201b280200220528020441ffffffff0371450d002005280200103120032802e40621050b200510310b024020032d00f0064109470d000240201c280200220528020441ffffffff0371450d002005280200103120032802f40621050b200510310b024020032d0080074109470d000240201d280200220528020441ffffffff0371450d002005280200103120032802840721050b200510310b024020032d0090074109470d000240201e280200220528020441ffffffff0371450d002005280200103120032802940721050b200510310b024020032d00a0074109470d000240201f280200220528020441ffffffff0371450d002005280200103120032802a40721050b200510310b024020032d00b0074109470d0002402020280200220528020441ffffffff0371450d002005280200103120032802b40721050b200510310b024020032d00c0074109470d0002402021280200220528020441ffffffff0371450d002005280200103120032802c40721050b200510310b024020032d00d0074109470d0002402022280200220528020441ffffffff0371450d002005280200103120032802d40721050b200510310b410f21050b200520096a2209200e2802002205490d000c030b0b41cce3c30020092005104b000b2003410136028406200342013702f405200341dce3c3003602f005200341293602d4032003200341d0036a360280062003200341c0026a3602d003200341e0046a200341f0056a10eb0320032802e00422050d040b200641186a22062023470d000b0b201241306a22122013470d000c050b0b20032902e404210a2000200536020420004101360200200041086a200a3702002011450d04201010310c040b41cfe9c300411c419cdec40010a401000b202b41081033000b202b41081033000b200341d0006a41106a200141106a280200221d360200200341d0006a41086a200141086a290200220a37030020032001290200370350201d41306c2105200aa7221e41546a210702400340024020050d00410021050c020b200541506a21052007412c6a2108200741306a2209210720082d00004108470d000b200341c0006a200910f30220032802402105200328024421070b2007410020051b210e201d41306c2107201e41546a21082005410420051b210502400340024020070d00410021090c020b200741506a21072008412c6a2109200841306a2206210820092d0000410a470d000b200341386a200610f30220032802382109200328023c21070b2007410020091b2124201d41306c2107201e41546a21082009410420091b210902400340024020070d004100210b0c020b200741506a21072008412c6a2106200841306a220d210820062d00004109470d000b200d28020021084101210b0b2003420037026c20034198bfc000360268200341003602782003410036027420092024411c6c6a21262005200e41146c6a2107200341e0046a410272221841266a211f201841206a2120201841186a2121201841106a2122201841086a2123200341e0046a41286a21124104212b41002115410021284100211a410021190240024002400240410041ff01710e03000102000b410021060c020b410221060c010b410121060b03400240024002400240024002400240024002400240024002400240024002400240024020060e03000201010b024002400240201a41ff01710e03010200010b0240024020032802782206450d0020172006460d002003200641046a3602780c010b034020262009460d12200341206a200910a5040240200328022022060d002009411c6a21090c130b2009411c6a21092003280224210d200320063602782006200d4102746a2117200d450d000b2003200641046a3602782006450d110b200b212920082114200628020021080c050b0240034020072005460d012005410c6a2106200541146a220d210520062802000d000b200d2105200b212920082114200d417c6a28020021080c050b0240024020032802782206450d0020172006460d002003200641046a3602780c010b0240034020262009460d01200341186a200910a5040240200328021822060d002009411c6a21090c020b2009411c6a2109200328021c210d200320063602782006200d4102746a2117200d450d000b2003200641046a36027820060d010b4102211a0c100b4102211a200b212920082114200628020021080c040b034020072005460d0f2005410c6a2106200541146a220d210520062802000d000b200d2105200b212920082114200d417c6a28020021080c030b024002400240201a41ff01710e03010200010b024002402003280278220d450d002017200d460d002003200d41046a3602780c010b03400240024020262009460d00200341306a200910a504200328023022060d010b2003200d3602780c060b2009411c6a21092006210d2003280234220e450d000b2003200641046a3602782006450d042006200e4102746a21172006210d0b200b212920082114200d28020021080c040b0240034020072005460d012005410c6a2106200541146a220d210520062802000d000b200d2105200b212920082114200d417c6a28020021080c040b0240024020032802782206450d0020172006460d002003200641046a3602780c010b034020262009460d04200341286a200910a50420032802282206450d042009411c6a2109200328022c210d20032006360278200d450d000b2003200641046a3602782006450d032006200d4102746a21170b4102211a200b212920082114200628020021080c030b034020052007460d022005410c6a2106200541146a220d210520062802000d000b200d2105200b212920082114200d417c6a28020021080c020b4100212941002114200b0d010b2003280260220d41306c21052003280258220b41546a210720032802682127200328026c21262003280270212c02400340410021082005450d01200541506a21052007412c6a2109200741306a2206210720092d00004103470d000b200641086a2802002205450d00200541286c2107200628020041186a2105410021080340200820052d0000456a2108200541286a2105200741586a22070d000b0b200d41306c2105200b415c6a210702400340024020050d00410021050c020b200541506a2105200741246a2109200741306a2206210720092d00004104470d000b200628020021050b200341f0056a41106a220f200341d0006a41106a280200360200200341f0056a41086a200341d0006a41086a290300370300200320032903503703f005200341b0016a200341f0056a10f50202402028450d00202b20284102746a2129200520086a2124200341f0056a41e0016a2114200341f0056a41d0016a2116200341f0056a41c0016a2117200341f0056a41b0016a2118200341f0056a41a0016a2119200341f0056a4190016a211a200341f0056a4180016a211b200341f0056a41f0006a211c200341f0056a41e0006a211d200341f0056a41d0006a211e200341f0056a41c0006a211f200341f0056a41306a2120200341f0056a41206a2121200341e7046a2122200341a4066a2123200341b4066a2112200341c4066a2101200341d4066a2113200341e4066a212d200341f4066a212e20034184076a212f20034194076a2130200341a4076a2131200341b4076a2132200341c4076a2133200341d4076a2134202b212803402028220541046a212820052802002106202721072026210e034020072f0106222a410274210b41002109417f210841002105024003400240200b2005470d00202a21080c020b200720056a210d200841016a2108200941206a2109200541046a21050240417f200d41086a280200220d200647200d20064b1b41016a0e03020001020b0b200720096a220e412c6a2802002107200e41306a28020021052003200c3602d407200341133a00d007200341d7003a00c007200320053602b4072003412d3a00b0072003200c3602a407200341123a00a00720032007360294072003410b3a009007200341063a008007200341003a00f00620034184083b01e006200341373a00d006200320023602c4062003412d3a00c0062003200c3602b406200341123a00b0062003200c3602a406200341133a00a006200341d6003a00900620032005360284062003412d3a0080062003200c3602f405200341123a00f005200e411c6a222a280200220d41106a220541ffffffff00712005470d0520054104742207417f4c0d050240024002400240024020070d00410821060c010b2007102d2206450d01202a280200210d0b0240200d0d00410021080c030b41002109410021070340024020072005470d00200541016a22082005490d192005410174220b2008200b20084b1b220841ffffffff00712008470d192008410474220b4100480d190240024020050d00200b102d21060c010b20062005410474200b102f21060b2006450d03200821050b200620096a2208410f3a0000200841046a2007360200200841016a20032f01d0033b0000200841036a200341d0036a41026a2d00003a0000200941106a2109200741016a22082107200d2008460d030c000b0b200741081033000b200b41081033000b02400240024002400240024002400240200520086b410e4d0d00200521090c010b2008410f6a22072008490d1b200541017422092007200920074b1b220941ffffffff00712009470d1b200941047422074100480d1b0240024020050d002007102d21060c010b200620054104742007102f21060b2006450d010b200341e0046a200341f0056a10b804200620084104746a220520032903e004370300200541086a200341e0046a41086a2207290300370300200341e0046a200f10b804200541186a2007290300370300200520032903e004370310200341e0046a202110b804200541286a2007290300370300200541206a20032903e004370300200341e0046a202010b804200541386a2007290300370300200541306a20032903e004370300200341e0046a201f10b804200541c8006a2007290300370300200541c0006a20032903e004370300200341e0046a201e10b804200541d8006a2007290300370300200541d0006a20032903e004370300200341e0046a201d10b804200541e8006a2007290300370300200541e0006a20032903e004370300200341e0046a201c10b804200541f8006a2007290300370300200541f0006a20032903e004370300200341e0046a201b10b80420054188016a200729030037030020054180016a20032903e004370300200341e0046a201a10b80420054198016a200729030037030020054190016a20032903e004370300200341e0046a201910b804200541a8016a2007290300370300200541a0016a20032903e004370300200341e0046a201810b804200541b8016a2007290300370300200541b0016a20032903e004370300200341e0046a201710b804200541c8016a2007290300370300200541c0016a20032903e004370300200341e0046a201610b804200541d8016a2007290300370300200541d0016a20032903e004370300200341e0046a201410b804200541e8016a2007290300370300200541e0016a20032903e004370300024002402008410f6a22052009460d002009210d200521090c010b200941016a22052009490d1b200941017422072005200720054b1b220d41ffffffff0071200d470d1b200d41047422054100480d1b0240024020090d002005102d21060c010b200620094104742005102f21060b2006450d020b200620094104746a220541063a0000200520032900e004370001200541086a2022290000370000200341e0046a200341b0016a418c0110ab051a4110102d2207450d02200741063a0000200341d0036a200341e0046a418c0110ab051a202a2802002205417f4c0d0b0240024020050d004101210b41014101200510ab051a2005ad2135410021050c010b200e41146a28020021092005102d220b450d04200b2009200510ab0521092005102d220b450d05200b2009200510ab051a200910312005ad21350b200341e0046a200341d0036a418c0110ab051a200e41216a3100002136200341d0036a200341e0046a418c0110ab051a200341e0046a200341d0036a418c0110ab051a200341c0026a200341e0046a418c0110ab051a4110102d2209450d05200841106a2108202541807e712125200a428080808080804083220a2035842036422886844280808080800c842136200941063a000020091031200341d0036a200341c0026a418c0110ab051a200341e0046a200341d0036a418c0110ab051a024020072d00004109470d0002402007280204220928020441ffffffff0371450d0020092802001031200728020421090b200910310b20071031200341c0026a200341e0046a418c0110ab051a200341e0046a200341c0026a418c0110ab051a200320253602fc03200320083602f8032003200d3602f403200320063602f003200341003602ec03200342043702e403200320363702dc03200320053602d8032003200b3602d403200341013602d003200341e0046a200341d0036a10fa02200341b0016a200341e0046a418c0110ab051a200e41286a2024360200200e41246a4101360200024020032d00f0054109470d00024020032802f405220528020441ffffffff0371450d002005280200103120032802f40521050b200510310b024020032d0080064109470d000240200341f0056a41146a280200220528020441ffffffff0371450d002005280200103120032802840621050b200510310b024020032d0090064109470d000240200341f0056a41246a280200220528020441ffffffff0371450d002005280200103120032802940621050b200510310b024020032d00a0064109470d0002402023280200220528020441ffffffff0371450d002005280200103120032802a40621050b200510310b024020032d00b0064109470d0002402012280200220528020441ffffffff0371450d002005280200103120032802b40621050b200510310b024020032d00c0064109470d0002402001280200220528020441ffffffff0371450d002005280200103120032802c40621050b200510310b024020032d00d0064109470d0002402013280200220528020441ffffffff0371450d002005280200103120032802d40621050b200510310b024020032d00e0064109470d000240202d280200220528020441ffffffff0371450d002005280200103120032802e40621050b200510310b024020032d00f0064109470d000240202e280200220528020441ffffffff0371450d002005280200103120032802f40621050b200510310b024020032d0080074109470d000240202f280200220528020441ffffffff0371450d002005280200103120032802840721050b200510310b024020032d0090074109470d0002402030280200220528020441ffffffff0371450d002005280200103120032802940721050b200510310b024020032d00a0074109470d0002402031280200220528020441ffffffff0371450d002005280200103120032802a40721050b200510310b024020032d00b0074109470d0002402032280200220528020441ffffffff0371450d002005280200103120032802b40721050b200510310b024020032d00c0074109470d0002402033280200220528020441ffffffff0371450d002005280200103120032802c40721050b200510310b024020032d00d0074109470d0002402034280200220528020441ffffffff0371450d002005280200103120032802d40721050b200510310b200a4280808080808c0184210a202441016a212420282029470d080c090b200741081033000b200541081033000b411041081033000b200541011033000b200541011033000b411041081033000b0240200e450d00200e417f6a210e200720084102746a4194036a28020021070c010b0b0b41fce7c30041800110bf01000b02402015450d00202b10310b200341f0056a200341b0016a418c0110ab051a200341e0046a200341f0056a10f7020240200341e0046a41106a2802002205450d0020032802e8042215200541306c6a21290340024020152d000041786a220541024b0d0002400240024020050e03000102000b201528020c2205450d0220152802042208200541146c6a212403400240200828020c0d002008280210210e202721062026210c0340200641286a2109200641086a210720062f010622254102742105417f210d02400340024020050d002025210d0c020b2007280200210b200d41016a210d200941206a21092005417c6a2105200741046a21070240417f200b200e47200b200e4b1b41016a0e03020001020b0b02402009417c6a280200450d00200820092802003602100c030b41fce8c300413510bf01000b200c450d01200c417f6a210c2006200d4102746a4194036a28020021060c000b0b200841146a22082024470d000c030b0b2015280204210b202721092026210e0340200941286a2108200941086a210720092f0106220c4102742105417f210602400340024020050d00200c21060c020b2007280200210d200641016a2106200841206a21082005417c6a2105200741046a21070240417f200d200b47200d200b4b1b41016a0e03020001020b0b02402008417c6a280200450d00201520082802003602040c040b41fce8c300413510bf01000b200e450d02200e417f6a210e200920064102746a4194036a28020021090c000b0b201528020c2205450d002015280204222a2005411c6c6a210f03400240202a2802182205450d00202a280210220c20054102746a21280340200c222441046a210c2024280200210b202721092026210e0340200941286a2108200941086a210720092f010622254102742105417f2106024002400340024020050d00202521060c020b2007280200210d200641016a2106200841206a21082005417c6a2105200741046a21070240417f200d200b47200d200b4b1b41016a0e03020001020b0b02402008417c6a280200450d00202420082802003602000c020b41fce8c300413510bf01000b200e450d00200e417f6a210e200920064102746a4194036a28020021090c010b0b200c2028470d000b0b202a411c6a222a200f470d000b0b201541306a22152029470d000b0b200341ec046a290200210a20032802e004210520032902e404213620272026202c10b904200041106a200a370200200041086a203637020020002005360204200041003602002011450d0f20101031200424000f0b2003200836027c02402008200f490d002003410136028406200342023702f405200341ece7c3003602f005200341053602d4032003200341d0036a360280062003200341fc006a3602d003200341e0046a200341f0056a10eb0320032902e404220a422088a7210820032802e0042125200aa7211c0c0a0b201020084102746a2802002206450d050240024020282015460d0020152116202821150c010b201541016a220d2015490d102015410174220b200d200b200d4b1b221641ffffffff03712016470d102016410274220d4100480d100240024020150d00200d102d212b0c010b202b2015410274200d102f212b0b202b450d020b202b20154102746a2008360200200341f0056a200328027c220e200341d0006a10ba0420032802f805211c20032802f4052125024020032802f005221b4101470d0020032802fc052108201621150c0a0b20252802082208417f4c0d0020252d000c210b02400240024020080d004101210d0c010b202528020021242008102d220d450d01200d2024200810ab051a0b2003200b3a008c01200320083602880120032008360284012003200d3602800120252d000d21082003200636029c012003200328027c360298012003410036029001200320083a008d01024002400240200328026822064198bfc000460d00200328026c212a0c010b201f42003701002020420037010020214200370100202242003701002023420037010020184200370100200341f0056a410041e00210aa051a419403102d2206450d014100212a20064100360200200620032903e0043702042006410c6a200341e0046a41086a290300370200200641146a200341e0046a41106a2903003702002006411c6a200341e0046a41186a290300370200200641246a200341e0046a41206a2903003702002006412c6a2012290300370200200641346a200341f0056a41e00210ab051a2003410036026c200320063602680b202841016a2128034020062f010622154102742127410021084114210b417f210d02400340024020272008470d002015210d0c020b200620086a2124200d41016a210d200b41206a210b200841046a21080240417f202441086a2802002224200e472024200e4b1b41016a0e03020001020b0b2006200b6a2208280204210d2008280200210b2008200329038001370200200841186a200329039801370200200828021021062008200329039001370210200820032903880137020820064102460d08200d450d08200b10310c080b0240202a450d00202a417f6a212a2006200d4102746a4194036a28020021060c010b0b2003200328027041016a360270200329039801210a20032903900121362003290388012135200329038001213720062f0106220b410b490d04201f42003701002020420037010020214200370100202242003701002023420037010020184200370100200341f0056a410041e00210aa051a0240419403102d2208450d0020084100360200200820032903e0043702042008410c6a200341e0046a41086a222e290300370200200841146a200341e0046a41106a222f2903003702002008411c6a200341e0046a41186a2230290300370200200841246a200341e0046a41206a22382903003702002008412c6a2012290300370200200841346a200341f0056a41e00210ab052124200341f0056a41086a222a200641fc016a290200370300200341f0056a41106a221520064184026a290200370300200341f0056a41186a22012006418c026a290200370300200320062902f4013703f00520062802202134200841086a200641246a20062f010641796a220b41027410ab052127202420064194026a200b41057410ab052124200641063b01062008200b3b010620302001290300370300202f2015290300370300202e202a290300370300200320032903f0053703e00402400240200d4107490d002027200d417a6a222d4102746a2027200d41796a22134102746a220d200b41ffff037120136b41027410ac051a200d200e3602002024202d4105746a202420134105746a220d200841066a220b2f010020136b41057410ac051a200d41186a200a370200200d2036370210200d2035370208200d2037370200200b2f010021240c010b200641086a220b200d41016a22274102746a200b200d4102746a2213200641066a220b2f01002224200d6b222d41027410ac051a2013200e360200200641346a220e20274105746a200e200d4105746a220d202d41057410ac051a200d41186a200a370200200d2036370210200d2035370208200d20373702000b200b202441016a3b0100200341d0036a41186a22312030290300220a370300200341d0036a41106a2232202f2903002236370300200341d0036a41086a2233202e2903002235370300200341b0016a41186a222c200a370300200341b0016a41106a22392036370300200341b0016a41086a223a2035370300200320032903e004220a3703d0032003200a3703b0010240200628020022240d002008210d0c070b20062f010421132008213b0340200341c0026a41186a223c202c290300370300200341c0026a41106a223d2039290300370300200341c0026a41086a223e203a290300370300200320032903b0013703c002201341ffff0371210e0240024002400240024020242f01062208410b490d00201f420037010020204200370100202142003701002022420037010020234200370100201842003701002033202e2903003703002032202f29030037030020312030290300370300200341d0036a41206a22082038290300370300200341d0036a41286a22062012290300370300200320032903e0043703d003200341f0056a410041900310aa051a41c403102d220d450d03200d4100360200200d20032903d003370204200d410c6a2033290300370200200d41146a2032290300370200200d411c6a2031290300370200200d41246a2008290300370200200d412c6a2006290300370200200d41346a200341f0056a41900310ab052106202441206a280200213f20012024418c026a290200370300201520244184026a290200370300202a202441fc016a2902003703002003202441f4016a2902003703f005200d41086a202441246a20242f0106220b41796a220841027410ab052140200620244194026a200841057410ab052141200d4194036a202441b0036a200b417a6a222741027410ab05212d202441063b0106200d20083b010602402027450d0041002108202d210603402006280200220b20083b0104200b200d360200200641046a21062027200841016a2208470d000b0b20302001290300220a370300202f20152903002236370300202e202a2903002235370300200320032903f00522373703e0042001200a37030020152036370300202a2035370300200320373703f005201341ffff037122064107490d012040200e417a6a220b41027422276a2040200e41796a22084102746a2206200d2f010620086b41027410ac051a200620343602002041200b4105746a204120084105746a2206200d2f010620086b41057410ac051a200641186a203c290300370200200641106a203d290300370200200641086a203e290300370200200620032903c002370200200d200d2f010641016a22063b0106200e4102742213202d6a416c6a202d20276a2227200641ffff0371220e200b6b41027410ac051a2027203b360200200e200b490d02200d20136a41fc026a210603402006280200220b200841016a22083b0104200b200d360200200641046a21062008200e490d000c030b0b202441086a2206200e41016a220d410274220b6a2006200e41027422276a22062008200e6b222a41027410ac051a20062034360200202441346a2206200d4105746a2006200e4105746a2206202a41057410ac051a200641186a203c290300370200200641106a203d290300370200200641086a203e290300370200200620032903c0023702002024200841016a22083b0106202720244194036a22066a41086a2006200b6a2206200841ffff0371220b200d6b41027410ac051a2006203b360200200e200b4f0d0c2024200d417f6a22084102746a4198036a210603402006280200220d200841016a22083b0104200d2024360200200641046a21062008200b490d000c0d0b0b202441086a2208200e41016a2227410274220b6a2008200e41027422136a220820242f0106222d200e6b224041027410ac051a20082034360200202441346a220820274105746a2008200e4105746a2208204041057410ac051a200841186a203c290300370200200841106a203d290300370200200841086a203e290300370200200820032903c0023702002024202d41016a22083b0106201320244194036a222d6a41086a202d200b6a222d200841ffff0371220b20276b41027410ac051a202d203b3602002006200b4f0d00202420136a4198036a2108034020082802002206200e41016a220e3b010420062024360200200841046a2108200b200e470d000b0b202c200129030037030020392015290300370300203a202a290300370300200320032903f0053703b001202428020022080d01203f21340c090b41c40341041033000b20242f0104211320082124203f2134200d213b0c000b0b41940341041033000b41940341041033000b200841011033000b1032000b200d41041033000b200641086a2208200d41016a22244102746a2008200d4102746a2208200b200d6b222741027410ac051a2008200e360200200641346a220820244105746a2008200d4105746a2208202741057410ac051a200841186a200a3702002008203637021020082035370208200820373702002006200b41016a3b01060c010b201f420037010020204200370100202142003701002022420037010020234200370100201842003701002033202e2903003703002032202f29030037030020312030290300370300200341d0036a41206a22062038290300370300200341d0036a41286a220b2012290300370300200320032903e0043703d003200341f0056a410041900310aa051a41c403102d2208450d0220084100360200200820032903d0033702042008410c6a2033290300370200200841146a20322903003702002008411c6a2031290300370200200841246a20062903003702002008412c6a200b290300370200200841346a200341f0056a41900310ab05210e20082003280268220636029403200320083602682003200328026c41016a36026c20062008360200200641003b0104200e20082f0106220b4105746a220620032903b001370200200641186a202c290300370200200641106a2039290300370200200641086a203a2903003702002008200b4102746a41086a203436020020084194036a200b41016a22064102746a200d360200200820063b0106200d20063b0104200d20083602000b0240201b450d00201c450d00202510310b201621150b2029210b20142108201941ff01710e03010205010b41c40341041033000b410021060c040b410221060c030b2003280268200328026c200328027010b90402402015450d00202b10310b0240201d450d00201d41306c2107201e21050340200510bb04200541306a2105200741506a22070d000b0b0240200341dc006a280200450d00201e10310b2000202536020420004101360200200041086a2008ad422086201cad843702002011450d0420101031200424000f0b410221190b410121060c000b0b024020012802102205450d0020012802082103200541306c21050340200310bb04200341306a2103200541506a22050d000b0b2001410c6a280200450d00200128020810310b200424000f0b1034000bc0870204117f017e0b7f017e230041e0006b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e100100021817161514130d0b0c0a080706010b200141186a2802002104200141146a2802002105200141106a28020021062001410c6a2802002107200141086a2802002108200141046a28020021090240200241046a280200200241086a280200220a460d002002280200210b0c1e0b200a41016a220c200a490d1a200a410174220d200c200d200c4b1b220c4100480d1a02400240200a0d00200c102d210b0c010b2002280200200a200c102f210b0b200b450d042002200b360200200241046a200c360200200241086a280200210a0c1d0b2001410c6a280200210c200141086a2802002104200141046a280200210b20012d0001210502400240200241046a280200200241086a280200220a460d002002280200210d0c010b200a41016a220d200a490d1a200a4101742206200d2006200d4b1b22064100480d1a02400240200a0d002006102d210d0c010b2002280200200a2006102f210d0b200d450d032002200d360200200241046a2006360200200241086a280200210a0b200241086a2206200a41016a360200200d200a6a20053a000002400240200241046a280200220d2006280200220a6b200c490d002002280200210d0c010b200a200c6a2205200a490d1a200d410174220a2005200a20054b1b220a4100480d1a02400240200d0d00200a102d210d0c010b2002280200200d200a102f210d0b200d450d022002200d360200200241046a200a360200200241086a280200210a0b200241086a200a200c6a360200200d200a6a200b200c10ab051a4100210d41012107024020040d004101210b0c280b200b10314101210b0c270b2001410c6a2802002106200141086a280200210e200141046a280200210f024002400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d1a200a410174220d200c200d200c4b1b220d4100480d1a02400240200a0d00200d102d210c0c010b2002280200200a200d102f210c0b200c450d012002200c360200200241046a200d360200200241086a280200210a0b200241086a200a41016a360200200c200a6a41013a0000200f20064104746a21104100210d4100210c41002105410121042006210a024003400240200c2005470d00200d200c41016a220b200d200b4b1b22054100480d1c02400240200d0d002005102d21040c010b2004200c2005102f21040b2004450d020b2004200c6a200a41807f72200a41ff0071200a410776220b1b3a0000200d41026a210d200c41016a210c200b210a200b0d000b024020060d00200f21080c190b200f210a0340200a41106a2108200a2d000d22114105460d19200a2d000c210d200a2802082109200a2802042112200a28020021130240024002400240024002402005200c470d00200c41016a220a200c490d21200c410174220b200a200b200a4b1b22054100480d2102400240200c0d002005102d21040c010b2004200c2005102f21040b2004450d010b2004200c6a200d3a0000200c41016a210a200c410174220c41046a2107200c41026a210d2009210c0340200721060240200a2005470d00200a41016a220b200a490d22200d200b200d200b4b1b22054100480d2202400240200a0d002005102d21040c010b2004200a2005102f21040b2004450d030b2004200a6a200c41807f72200c41ff0071200c410776220b1b3a0000200641026a2107200d41026a210d200a41016a210a200b210c200b0d000b0240024020090d00200a210c0c010b4100210d0340200a200d6a210c41fc00210b02400240024002402013200d6a2d00000e050200010305020b41fe00210b0c020b41fd00210b0c010b41ff00210b0b0240200c2005470d00200c41016a2205200c490d2320062005200620054b1b22054100480d2302400240200c0d002005102d21040c010b2004200c2005102f21040b2004450d050b2004200a6a200d6a200b3a0000200641026a21062009200d41016a220d470d000b200a200d6a210c0b20120d030c040b200541011033000b200541011033000b200541011033000b201310310b4100210a02400240024020114104460d0002402005200c470d00200c41016a220a200c490d1f200c410174220d200a200d200a4b1b22054100480d1f02400240200c0d002005102d21040c010b2004200c2005102f21040b2004450d020b2004200c6a41013a0000200c41016a210c201141077141ff0073210a0b2005200c470d01200c41016a220d200c490d1d200c410174220b200d200b200d4b1b22054100480d1d02400240200c0d002005102d21040c010b2004200c2005102f21040b20040d01200541011033000b200541011033000b2004200c6a200a3a0000200c41016a210c2008210a20082010470d000c1a0b0b200541011033000b200d41011033000b200a41011033000b200641011033000b200c41011033000b200141286a2802002104200141246a2802002111200141206a28020021092001411c6a2802002106200141186a2802002113200141146a28020021082001410c6a2902002114200141086a280200210d200141046a280200210b024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d22200a4101742205200c2005200c4b1b22054100480d2202400240200a0d002005102d210c0c010b2002280200200a2005102f210c0b200c450d012002200c360200200241046a2005360200200241086a280200210a0b200241086a200a41016a36020041002105200c200a6a41003a0000200341dc006a41003602002003420137025420032002360250200320143e02402003200d36023c2003200b3602382003200341386a200341d0006a10ef04024020032d0000220a411f460d0020032f000120032d000341107472210c200341086a2903002114200328020421044100210d0c1e0b2014422088a7210c0340024002402003280258200328025c220a460d002003280254210d0c010b200a41016a220d200a490d23200a410174220b200d200b200d4b1b220b4100480d2302400240200a0d00200b102d210d0c010b2003280254200a200b102f210d0b200d450d032003200b3602582003200d360254200328025c210a0b2003200a41016a36025c200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b4101211002402008450d00200320063602402003201336023c200320083602382003200341386a200341d0006a10ef04024020032d0000220a411f460d0020032f000120032d000341107472210c200341086a2903002114200328020421044100210d410121050c1f0b410021100b200920044104746a21062004210c0340024002402003280258200328025c220a460d002003280254210d0c010b200a41016a220d200a490d23200a410174220b200d200b200d4b1b220b4100480d2302400240200a0d00200b102d210d0c010b2003280254200a200b102f210d0b200d450d042003200b3602582003200d360254200328025c210a0b2003200a41016a36025c200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b024020040d002009210b0c1d0b200441047441706a21072009210d0340200d41106a210b200d410c6a2802002102200d41086a280200210a200d280204210c024002400240024002400240024002400240200d2802000e09000102030405060726000b024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d2b200d41017422052004200520044b1b22054100480d2b02400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d0d2003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a41003a00000340024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d2c200d41017422052004200520044b1b22054100480d2c02400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d0f2003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a200c41807f72200c41ff0071200c410776220d1b3a0000200d210c200d0d000b0340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2c200c4101742204200d2004200d4b1b22044100480d2c02400240200c0d002004102d210d0c010b2003280254200c2004102f210d0b200d450d10200320043602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200a41807f72200a41ff0071200a410776220c1b3a0000200c210a200c0d000c080b0b024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d2a200d41017422052004200520044b1b22054100480d2a02400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d0f2003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a41013a00000340024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d2b200d41017422052004200520044b1b22054100480d2b02400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d112003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a200c41807f72200c41ff0071200c410776220d1b3a0000200d210c200d0d000b0340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2b200c4101742204200d2004200d4b1b22044100480d2b02400240200c0d002004102d210d0c010b2003280254200c2004102f210d0b200d450d12200320043602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200a41807f72200a41ff0071200a410776220c1b3a0000200c210a200c0d000c070b0b024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d29200d41017422052004200520044b1b22054100480d2902400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d112003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a41023a00000340024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d2a200d41017422052004200520044b1b22054100480d2a02400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d132003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a200c41807f72200c41ff0071200c410776220d1b3a0000200d210c200d0d000b0340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d2a200c4101742204200d2004200d4b1b22044100480d2a02400240200c0d002004102d210d0c010b2003280254200c2004102f210d0b200d450d14200320043602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200a41807f72200a41ff0071200a410776220c1b3a0000200c210a200c0d000c060b0b024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d28200d41017422052004200520044b1b22054100480d2802400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d132003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a41033a00000340024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d29200d41017422052004200520044b1b22054100480d2902400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d152003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a200c41807f72200c41ff0071200c410776220d1b3a0000200d210c200d0d000b0340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d29200c4101742204200d2004200d4b1b22044100480d2902400240200c0d002004102d210d0c010b2003280254200c2004102f210d0b200d450d16200320043602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200a41807f72200a41ff0071200a410776220c1b3a0000200c210a200c0d000b20032002200341d0006a10e90420032d0000220a411f460d0420032f000120032d000341107472210c0c210b024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d27200d41017422052004200520044b1b22054100480d2702400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d152003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a41043a00000340024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d28200d41017422052004200520044b1b22054100480d2802400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d172003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a200c41807f72200c41ff0071200c410776220d1b3a0000200d210c200d0d000b0340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d28200c4101742204200d2004200d4b1b22044100480d2802400240200c0d002004102d210d0c010b2003280254200c2004102f210d0b200d450d18200320043602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200a41807f72200a41ff0071200a410776220c1b3a0000200c210a200c0d000b20032002200341d0006a10e90420032d0000220a411f460d0320032f000120032d000341107472210c0c200b024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d26200d41017422052004200520044b1b22054100480d2602400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d172003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a41053a00000340024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d27200d41017422052004200520044b1b22054100480d2702400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d192003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a200c41807f72200c41ff0071200c410776220d1b3a0000200d210c200d0d000b0340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d27200c4101742204200d2004200d4b1b22044100480d2702400240200c0d002004102d210d0c010b2003280254200c2004102f210d0b200d450d1a200320043602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200a41807f72200a41ff0071200a410776220c1b3a0000200c210a200c0d000b20032002200341d0006a10e90420032d0000220a411f460d0220032f000120032d000341107472210c0c1f0b024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d25200d41017422052004200520044b1b22054100480d2502400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d192003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a41063a00000340024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d26200d41017422052004200520044b1b22054100480d2602400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d1b2003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a200c41807f72200c41ff0071200c410776220d1b3a0000200d210c200d0d000b0340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d26200c4101742204200d2004200d4b1b22044100480d2602400240200c0d002004102d210d0c010b2003280254200c2004102f210d0b200d450d1c200320043602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200a41807f72200a41ff0071200a410776220c1b3a0000200c210a200c0d000c020b0b024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d24200d41017422052004200520044b1b22054100480d2402400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d1b2003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a41073a00000340024002402003280258200328025c220d460d00200328025421040c010b200d41016a2204200d490d25200d41017422052004200520044b1b22054100480d2502400240200d0d002005102d21040c010b2003280254200d2005102f21040b2004450d1d2003200536025820032004360254200328025c210d0b2003200d41016a36025c2004200d6a200c41807f72200c41ff0071200c410776220d1b3a0000200d210c200d0d000b0340024002402003280258200328025c220c460d002003280254210d0c010b200c41016a220d200c490d25200c4101742204200d2004200d4b1b22044100480d2502400240200c0d002004102d210d0c010b2003280254200c2004102f210d0b200d450d1e200320043602582003200d360254200328025c210c0b2003200c41016a36025c200d200c6a200a41807f72200a41ff0071200a410776220c1b3a0000200c210a200c0d000b0b200741706a2107200b210d200b2006470d000b2006210b0c1c0b200541011033000b200b41011033000b200b41011033000b200541011033000b200541011033000b200441011033000b200541011033000b200541011033000b200441011033000b200541011033000b200541011033000b200441011033000b200541011033000b200541011033000b200441011033000b200541011033000b200541011033000b200441011033000b200541011033000b200541011033000b200441011033000b200541011033000b200541011033000b200441011033000b200541011033000b200541011033000b200441011033000b2003290308211420032802042104024003402007450d01200741706a2107200b280200210d200b41106a210b200d4108470d000b0b02402011450d00200910310b20104521054101210d0c010b024003402006200b460d01200b280200210a200b41106a210b200a4108470d000b0b02402011450d00200910310b20032802582109200328025421022003280250220441086a210b200441046a2105200328025c2207210c024002400340024002402005280200200b280200220a460d002004280200210d0c010b200a41016a220d200a490d08200a4101742206200d2006200d4b1b22064100480d0802400240200a0d002006102d210d0c010b2004280200200a2006102f210d0b200d450d022004200d36020020052006360200200b280200210a0b200b200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200441046a280200220c200441086a280200220a6b2007490d002004280200210c0c010b200a20076a220d200a490d07200c410174220a200d200a200d4b1b220a4100480d0702400240200c0d00200a102d210c0c010b2004280200200c200a102f210c0b200c450d022004200c360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200c200a6a2002200710ab051a02402009450d00200210310b41002112410121072008450d032010450d032013450d03200810310c030b200641011033000b200a41011033000b02402003280258450d00200328025410310b02402008452005720d002013450d00200810310b0240200d201145720d00200910310b200a411f470d1741002112410121070b4101210d4101210b410121044101210641012105410121104101210241012108410121094101210c41012113410121110c3b0b2001412c6a280200210e200141286a2802002115200141246a2802002111200141206a28020021162001411c6a2802002117200141186a2802002118200141146a28020021102001410c6a2902002114200141086a2802002119200141046a28020021120240024002400240024002400240024002400240024002400240024002400240024002400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d13200a410174220d200c200d200c4b1b220d4100480d1302400240200a0d00200d102d210c0c010b2002280200200a200d102f210c0b200c450d012002200c360200200241046a200d360200200241086a280200210a0b4101210b200241086a200a41016a36020041002104200c200a6a41003a000002404104102d220f450d00200f41eec2b5ab063600000240024002400240024020120d00410021134100211a0c010b410121064100210a4100210c2014a72204210d034002400240200a200c460d00200a21070c010b200a41016a220c200a490d19200a410174220b200c200b200c4b1b22074100480d1902400240200a0d002007102d21060c010b2006200a2007102f21060b02402006450d00200a210c2007210a0c010b200741011033000b2006200c6a200d41807f72200d41ff0071200d410776220b1b3a0000200c41016a210c200b210d200b0d000b02402007200c6b20044f0d00200c20046a220a200c490d182007410174220d200a200d200a4b1b220a4100480d180240024020070d00200a102d21060c010b20062007200a102f21060b2006450d16200a21070b2006200c6a2012200410ab051a02402019450d00201210310b4101102d220b450d03200b41003a00004101210a4101210d200c20046a2208210c034002400240200a200d460d00200a21040c010b200a41016a220d200a490d19200a4101742204200d2004200d4b1b22044100480d1902400240200a0d002004102d210b0c010b200b200a2004102f210b0b200b450d04200a210d2004210a0b200b200d6a200c41807f72200c41ff0071200c41077622051b3a0000200d41016a210d2005210c20050d000b02402004200d6b20084f0d00200d20086a220a200d490d182004410174220c200a200c200a4b1b220a4100480d180240024020040d00200a102d210b0c010b200b2004200a102f210b0b200b450d02200a21040b200b200d6a2006200810ab051a200d20086a21134101211a2007450d00200610310b0240024002400240024020100d004101211b0c010b4100211b20034100360240200342013703382003410c6a2017360200200341086a201836020020032010360204200320144220883e0200200341d0006a2003200341386a10fb04024020032d00502209411f460d0020032f005120032d0053411074722108200341d0006a41086a290300211420032802542116200328023c0d130c140b0240024020042013460d002004210a0c010b200441016a220a2004490d1b2004410174220c200a200c200a4b1b220a4100480d1b0240024020040d00200a102d210b0c010b200b2004200a102f210b0b200b450d04200421130b200b20136a41013a0000201341016a210c20032802402206210d034002400240200a200c460d00200a21040c010b200a41016a220c200a490d1c200a4101742204200c2004200c4b1b22044100480d1c02400240200a0d002004102d210b0c010b200b200a2004102f210b0b200b450d04200a210c2004210a0b200b200c6a200d41807f72200d41ff0071200d41077622051b3a0000200c41016a210c2005210d20050d000b2003280238210a02402004200c6b20064f0d00200c20066a220d200c490d1b20044101742205200d2005200d4b1b220d4100480d1b0240024020040d00200d102d210b0c010b200b2004200d102f210b0b200b450d02200d21040b200b200c6a200a200610ab051a0240200328023c450d00200a10310b200c20066a21134100211b0b024020110d00410021050c0d0b2003410036024020034201370338410121064100210d4100210a2016210c024003400240200a200d470d00200d41016a2205200d490d1c200d41017422072005200720054b1b22054100480d1c02400240200d0d002005102d21060c010b2006200d2005102f21060b2006450d022003200536023c200320063602382005210d0b2003200a41016a22073602402006200a6a200c41807f72200c41ff0071200c41077622051b3a00002007210a2005210c20050d000b2011200e4104746a2108024020160d00201121050c0c0b20112105200e450d0b200841706a211c4100210a2011211d0340201d210502400340200541046a28020022090d01200a41016a210a2008200541106a2205470d000c0f0b0b200541106a211d200a41016a211e2016417f6a2116200541086a29020021142005280200211f200328023c210d2003280240210c02400240034002400240200c200d460d00200328023821060c010b200d41016a2206200d490d1f200d41017422072006200720064b1b22074100480d1f02400240200d0d002007102d21060c010b2003280238200d2007102f21060b2006450d022003200736023c200320063602382007210d0b2003200c41016a22073602402006200c6a200a41807f72200a41ff0071200a41077622061b3a00002007210c2006210a20060d000b20032014370308200320093602042003201f360200200341d0006a2003200341386a10fb0420032d00502209411f460d010c0c0b200741011033000b2016450d0b201e210a201c2005470d000c0b0b0b200541011033000b200d41011033000b200441011033000b200a41011033000b200a41011033000b200441011033000b410141011033000b410441011033000b200d41011033000b20032d0053211d20032f0051211f20032802542116200329035821140240200841706a2005460d00200541106a210503402005220a41106a21050240200a2802042206450d00200a28020821070240200a410c6a280200220a450d00200a410c6c210c2006210a03400240200a280200220d450d00200a41046a280200450d00200d10310b200a410c6a210a200c41746a220c0d000b0b2007450d00200610310b20052008470d000b0b201d411074210a02402015450d00201110310b201f200a72210841012105200328023c450d0a200328023810310c0a0b200541106a21050b20052008460d0003402005220a41106a21050240200a2802042206450d00200a28020821070240200a410c6a280200220a450d00200a410c6c210c2006210a03400240200a280200220d450d00200a41046a280200450d00200d10310b200a410c6a210a200c41746a220c0d000b0b2007450d00200610310b20052008470d000b0b02402015450d00201110310b0240024020042013460d002004210a0c010b200441016a220a2004490d0e2004410174220c200a200c200a4b1b220a4100480d0e0240024020040d00200a102d210b0c010b200b2004200a102f210b0b200b450d02200421130b200b20136a41023a0000201341016a210c20032802402206210d034002400240200a200c460d00200a21040c010b200a41016a220c200a490d0f200a4101742204200c2004200c4b1b22044100480d0f02400240200a0d002004102d210b0c010b200b200a2004102f210b0b200b450d04200a210c2004210a0b200b200c6a200d41807f72200d41ff0071200d41077622051b3a0000200c41016a210c2005210d20050d000b2003280238210a02402004200c6b20064f0d00200c20066a220d200c490d0e20044101742205200d2005200d4b1b220d4100480d0e0240024020040d00200d102d210b0c010b200b2004200d102f210b0b200b450d04200d21040b200b200c6a200a200610ab051a0240200328023c450d00200a10310b200c20066a2113410121050b201a201245720d032019450d03201210310c030b200a41011033000b200441011033000b200d41011033000b02402010450d00201b4101730d0002402017450d002017410c6c210c2010210a03400240200a280200220d450d00200a41046a280200450d00200d10310b200a410c6a210a200c41746a220c0d000b0b2018450d00201010310b2005201145720d030240200e450d002011200e4104746a21072011210603402006220541106a210602402005280204220a450d0002402005410c6a280200220c450d00200c410c6c210c03400240200a280200220d450d00200a41046a280200450d00200d10310b200a410c6a210a200c41746a220c0d000b0b200541086a280200450d00200528020410310b20062007470d000b0b2015450d03201110310c030b200328023810310b410021050b0240201a201245720d002019450d00201210310b02402010450d00201b4101730d0002402017450d002017410c6c210c2010210a03400240200a280200220d450d00200a41046a280200450d00200d10310b200a410c6a210a200c41746a220c0d000b0b2018450d00201010310b02402005201145720d000240200e450d002011200e4104746a21072011210603402006220541106a210602402005280204220a450d0002402005410c6a280200220c450d00200c410c6c210c03400240200a280200220d450d00200a41046a280200450d00200d10310b200a410c6a210a200c41746a220c0d000b0b200541086a280200450d00200528020410310b20062007470d000b0b2015450d00201110310b2009411f460d002008410874200972210a02402004450d00200b10310b2000200a360200200041086a2014370200200041046a2016360200200f10310c010b200341146a2013360200200341106a20043602002003200b36020c20034284808080c0003702042003200f360200200341d0006a2003200210fc04200320032900513703382003200341d0006a41086a29000037003f20032d0050220a411f460d012000200a3a000020002003290338370001200041086a200329003f3700000b410021084101210d4101210c4101210b410121044101210541012106410121074101211341012102410121090c210b41002111410121074101210d4101210b410121044101210641012105410121104101210241012108410121094101210c410121130c3a0b200a41011033000b2001410c6a2802002105200141086a2802002107200141046a28020021060240024002400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d03200a410174220d200c200d200c4b1b220d4100480d0302400240200a0d00200d102d210c0c010b2002280200200a200d102f210c0b200c450d012002200c360200200241046a200d360200200241086a280200210a0b200241086a200a41016a360200200c200a6a410b3a0000200341c4006a41003602002003420137023c2003200236023820062005411c6c6a21114100210a4100210c2005210d0240034002400240200a200c460d00200328023c210a0c010b200a41016a220b200a490d05200a4101742204200b2004200b4b1b220b4100480d0502400240200a0d00200b102d210a0c010b200328023c200a200b102f210a0b200a450d022003200b3602402003200a36023c0b2003200c41016a360244200a200c6a200d41807f72200d41ff0071200d410776220d1b3a00000240200d450d002003280240210a2003280244210c200d210d0c010b0b2003201136025c2003200636025820032007360254200320063602502005450d02034020032006220a411c6a2206360258200a2802102207450d03200a410c6a2802002102200a41086a2802002108200a2802042105200a41146a2902002114200a280200210c024002400240024003400240024020032802402003280244220a460d00200328023c210d0c010b200a41016a220d200a490d0a200a410174220b200d200b200d4b1b220b4100480d0a02400240200a0d00200b102d210d0c010b200328023c200a200b102f210d0b200d450d022003200b3602402003200d36023c2003280244210a0b2003200a41016a360244200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b024002400240024020050d00410121130c010b200320023602302003200836022c200320053602282003200341286a200341386a10e60420032d0000220a411f470d01410021130b2014a721092014422088a72204210c03400240024020032802402003280244220a460d00200328023c210d0c010b200a41016a220d200a490d0c200a410174220b200d200b200d4b1b220b4100480d0c02400240200a0d00200b102d210d0c010b200328023c200a200b102f210d0b200d450d052003200b3602402003200d36023c2003280244210a0b2003200a41016a360244200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b024002402003280240220c2003280244220a6b2004490d00200328023c210c0c010b200a20046a220d200a490d0b200c410174220a200d200a200d4b1b220a4100480d0b02400240200c0d00200a102d210c0c010b200328023c200c200a102f210c0b200c450d052003200a3602402003200c36023c2003280244210a0b2003200a20046a360244200c200a6a2007200410ab051a02402009450d00200710310b2005450d0520130d010c050b20032d0003411074210c20032f0001210d200329030821202003280204210b02402014a7450d00200710310b200d200c72210c200341d0006a10fd0402402003280240450d00200328023c10310b2000200c3b00012000200a3a0000200041036a200c4110763a0000200041086a2020370000200041046a200b360000410021024101210d4101210c4101210b41012104410121054101210641012107410121130c260b02402002450d002002410474210c2005210a03400240200a2d00004109470d000240200a41046a220b280200220d28020441ffffffff0371450d00200d2802001031200b280200210d0b200d10310b200a41106a210a200c41706a220c0d000b0b2008450d03200510310c030b200b41011033000b200b41011033000b200a41011033000b20062011470d000c030b0b200b41011033000b200d41011033000b200341d0006a10fd0420032802402108200328023c21022003280238220441086a210b200441046a210520032802442207210c024002400340024002402005280200200b280200220a460d002004280200210d0c010b200a41016a220d200a490d04200a4101742206200d2006200d4b1b22064100480d0402400240200a0d002006102d210d0c010b2004280200200a2006102f210d0b200d450d022004200d36020020052006360200200b280200210a0b200b200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200441046a280200220c200441086a280200220a6b2007490d002004280200210c0c010b200a20076a220d200a490d03200c410174220a200d200a200d4b1b220a4100480d0302400240200c0d00200a102d210c0c010b2004280200200c200a102f210c0b200c450d022004200c360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200c200a6a2002200710ab051a02402008450d00200210310b41002113410121074101210d4101210b410121044101210641012105410121104101210241012108410121094101210c410121110c3a0b200641011033000b200a41011033000b1034000b2001410c6a2802002106200141086a2802002107200141046a280200210b0240024002400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d13200a410174220d200c200d200c4b1b220d4100480d1302400240200a0d00200d102d210c0c010b2002280200200a200d102f210c0b200c450d012002200c360200200241046a200d360200200241086a280200210a0b200241086a200a41016a360200200c200a6a410a3a0000200341246a41003602002003420137021c20032002360218200b200641186c6a210f4100210a4100210c2006210d0240034002400240200a200c460d00200328021c210a0c010b200a41016a2204200a490d15200a41017422052004200520044b1b22044100480d1502400240200a0d002004102d210a0c010b200328021c200a2004102f210a0b200a450d02200320043602202003200a36021c0b2003200c41016a360224200a200c6a200d41807f72200d41ff0071200d410776220d1b3a00000240200d450d002003280220210a2003280224210c200d210d0c010b0b2003200f3602342003200b3602302003200736022c2003200b3602282006450d0220034101722102200341026a2107024003402003200b41186a2213360230200b2802002208450d04200b41146a2802002111200b41106a2802002110200b28020c2109200b280208210d200b28020421124100210c200341003602442003420137023c2008200d4103746a21062003200341186a3602384100210a02400240024002400240024002400240034002400240200c200a460d00200328023c210c0c010b200c41016a220a200c490d1f200c410174220b200a200b200a4b1b220a4100480d1f02400240200c0d00200a102d210c0c010b200328023c200c200a102f210c0b200c450d022003200a3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a200d41807f72200d41ff0071200d410776220d1b3a00000240200d450d002003280240210c2003280244210a200d210d0c010b0b0240024020062008470d00200821040c010b2008210a0340200a41086a2104200a2902002214422088a7220a41ff01714104460d01200a41187441187521052014a7210c03400240024020032802402003280244220a460d00200328023c210d0c010b200a41016a220d200a490d21200a410174220b200d200b200d4b1b220b4100480d2102400240200a0d00200b102d210d0c010b200328023c200a200b102f210d0b200d450d052003200b3602402003200d36023c2003280244210a0b2003200a41016a360244200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b0240024020032802402003280244220a460d00200328023c210c0c010b200a41016a220c200a490d20200a410174220d200c200d200c4b1b220d4100480d2002400240200a0d00200d102d210c0c010b200328023c200a200d102f210c0b200c450d052003200d3602402003200c36023c2003280244210a0b2003200a41016a360244200c200a6a2005417f73220a413f7141c00072200a2005417f4a1b3a00002004210a20042006470d000b200621040b0240034020062004460d0120042d0004210a200441086a2104200a4104470d000b0b02402012450d00200810310b20092011410474220c6a210d2009210a2011450d04200c41706a210b2009210a0340200a2d0000210c2007200a41036a2d00003a00002003200a41016a2f00003b01000240200c41ac01470d00200a41106a210a0c060b200341cc006a41026a20072d000022043a0000200320032f010022053b014c200a41046a2802002106200a41086a2903002114200220053b0000200241026a20043a00002003200c3a00002003201437030820032006360204200341d0006a2003200341386a10ee0420032d00502204411f46220c450d04200b41706a210b200a41106a220a200d470d000c060b0b200a41011033000b200b41011033000b200d41011033000b20032d0053210520032f0051210620032802542108200329035821140240200b450d00200a41106a210a034002400240200a2d0000220b4109460d00200b41ac01470d010c030b0240200a41046a280200220b28020441ffffffff0371450d00200b28020010310b200b10310b200a41106a220a200d470d000b0b02402010450d00200910310b02402003280240450d00200328023c10310b200c0d022006200541107472210a200341286a10fe0402402003280220450d00200328021c10310b2000200a3b0001200020043a0000200041036a200a4110763a0000200041086a2014370000200041046a2008360000410021134101210d4101210c4101210b410121044101210541012106410121070c230b200a200d460d00034002400240200a2d0000220c4109460d00200c41ac01470d010c030b0240200a41046a280200220c28020441ffffffff0371450d00200c28020010310b200c10310b200a41106a220a200d470d000b0b02402010450d00200910310b20032802402111200328023c21092003280238210d20032802442208210c034002400240200d41086a2205280200200d410c6a2204280200220a460d00200d280204210b0c010b200a41016a220b200a490d19200a4101742206200b2006200b4b1b22064100480d1902400240200a0d002006102d210b0c010b200d280204200a2006102f210b0b200b450d03200d200b360204200520063602002004280200210a0b2004200a41016a360200200b200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b024002402005280200220c2004280200220a6b2008490d00200d280204210c0c010b200a20086a220b200a490d18200c410174220a200b200a200b4b1b220a4100480d1802400240200c0d00200a102d210c0c010b200d280204200c200a102f210c0b200c450d04200d200c3602042005200a3602002004280200210a0b2004200a20086a360200200c200a6a2009200810ab051a2011450d00200910310b2013210b2013200f470d010c050b0b200641011033000b200a41011033000b200441011033000b200d41011033000b200341286a10fe0420032802202108200328021c21022003280218220441086a210b200441046a210520032802242207210c024002400340024002402005280200200b280200220a460d002004280200210d0c010b200a41016a220d200a490d14200a4101742206200d2006200d4b1b22064100480d1402400240200a0d002006102d210d0c010b2004280200200a2006102f210d0b200d450d022004200d36020020052006360200200b280200210a0b200b200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200441046a280200220c200441086a280200220a6b2007490d002004280200210c0c010b200a20076a220d200a490d13200c410174220a200d200a200d4b1b220a4100480d1302400240200c0d00200a102d210c0c010b2004280200200c200a102f210c0b200c450d022004200c360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200c200a6a2002200710ab051a02402008450d00200210310b4100210c410121074101210d4101210b410121044101210641012105410121104101210241012108410121090c280b200641011033000b200a41011033000b2001410c6a2802002105200141086a2802002106200141046a28020021080240024002400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d12200a410174220d200c200d200c4b1b220d4100480d1202400240200a0d00200d102d210c0c010b2002280200200a200d102f210c0b200c450d012002200c360200200241046a200d360200200241086a280200210a0b200241086a200a41016a360200200c200a6a41093a0000200341c4006a41003602002003420137023c2003200236023820082005411c6c6a21124100210a4100210c2005210d0240034002400240200a200c460d00200328023c210a0c010b200a41016a220b200a490d14200a4101742204200b2004200b4b1b220b4100480d1402400240200a0d00200b102d210a0c010b200328023c200a200b102f210a0b200a450d022003200b3602402003200a36023c0b2003200c41016a360244200a200c6a200d41807f72200d41ff0071200d410776220d1b3a00000240200d450d002003280240210a2003280244210c200d210d0c010b0b2003201236025c2003200836025820032006360254200320083602502005450d02034020032008220a411c6a2208360258200a2802102206450d03200a410c6a2802002102200a41086a2802002109200a2802042107200a41146a2902002114200a280200210c024002400240024003400240024020032802402003280244220a460d00200328023c210d0c010b200a41016a220d200a490d19200a410174220b200d200b200d4b1b220b4100480d1902400240200a0d00200b102d210d0c010b200328023c200a200b102f210d0b200d450d022003200b3602402003200d36023c2003280244210a0b2003200a41016a360244200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b024002400240024020070d00410121110c010b200320023602302003200936022c200320073602282003200341286a200341386a10e60420032d0000220a411f470d01410021110b20062014422088a7220c4102746a21052014a7211303400240024020032802402003280244220a460d00200328023c210d0c010b200a41016a220d200a490d1b200a410174220b200d200b200d4b1b220b4100480d1b02400240200a0d00200b102d210d0c010b200328023c200a200b102f210d0b200d450d052003200b3602402003200d36023c2003280244210a0b2003200a41016a360244200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b024020052006460d002006210403402004280200210c03400240024020032802402003280244220a460d00200328023c210d0c010b200a41016a220d200a490d1d200a410174220b200d200b200d4b1b220b4100480d1d02400240200a0d00200b102d210d0c010b200328023c200a200b102f210d0b200d450d082003200b3602402003200d36023c2003280244210a0b2003200a41016a360244200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b200441046a22042005470d000b0b02402013450d00200610310b2007450d0520110d010c050b20032d0003411074210c20032f0001210d200329030821202003280204210b02402014a7450d00200610310b200d200c72210c200341d0006a10ff0402402003280240450d00200328023c10310b2000200c3b00012000200a3a0000200041036a200c4110763a0000200041086a2020370000200041046a200b360000410021074101210d4101210c4101210b4101210441012105410121060c210b02402002450d002002410474210c2007210a03400240200a2d00004109470d000240200a41046a220b280200220d28020441ffffffff0371450d00200d2802001031200b280200210d0b200d10310b200a41106a210a200c41706a220c0d000b0b2009450d03200710310c030b200b41011033000b200b41011033000b200b41011033000b20082012470d000c030b0b200b41011033000b200d41011033000b200341d0006a10ff0420032802402108200328023c21022003280238220441086a210b200441046a210520032802442207210c024002400340024002402005280200200b280200220a460d002004280200210d0c010b200a41016a220d200a490d13200a4101742206200d2006200d4b1b22064100480d1302400240200a0d002006102d210d0c010b2004280200200a2006102f210d0b200d450d022004200d36020020052006360200200b280200210a0b200b200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200441046a280200220c200441086a280200220a6b2007490d002004280200210c0c010b200a20076a220d200a490d12200c410174220a200d200a200d4b1b220a4100480d1202400240200c0d00200a102d210c0c010b2004280200200c200a102f210c0b200c450d022004200c360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200c200a6a2002200710ab051a02402008450d00200210310b41002109410121074101210d4101210b4101210441012106410121054101211041012102410121080c260b200641011033000b200a41011033000b200141046a280200210a024002400240024002400240200241046a280200200241086a280200220c460d002002280200210d0c010b200c41016a220d200c490d13200c410174220b200d200b200d4b1b220b4100480d1302400240200c0d00200b102d210d0c010b2002280200200c200b102f210d0b200d450d012002200d360200200241046a200b360200200241086a280200210c0b200241086a200c41016a360200200d200c6a410c3a0000410121064100210b4100210c03400240200c200b470d00200b410174220d200b41016a2204200d20044b1b220d4100480d1402400240200b0d00200d102d21060c010b2006200b200d102f21060b2006450d03200d210b0b2006200c6a200a41807f72200a41ff0071200a410776220d1b3a0000200c41016a210c200d210a200d0d000b200c417f6a2109200241086a2105200241046a2107200c210d03400240024020072802002005280200220a460d00200228020021040c010b200a41016a2204200a490d14200a41017422082004200820044b1b22084100480d1402400240200a0d002008102d21040c010b2002280200200a2008102f21040b2004450d0420022004360200200720083602002005280200210a0b2005200a41016a3602002004200a6a200d41807f72200d41ff0071200d410776220a1b3a0000200a210d200a0d000b02400240200241046a280200220d200241086a280200220a6b20094d0d002002280200210d0c010b200a200c6a2204200a490d13200d410174220a2004200a20044b1b220a4100480d1302400240200d0d00200a102d210d0c010b2002280200200d200a102f210d0b200d450d042002200d360200200241046a200a360200200241086a280200210a0b200241086a200a200c6a360200200d200a6a2006200c10ab051a41012107200b450d05200610310c050b200b41011033000b200d41011033000b200841011033000b200a41011033000b200141046a280200210a02400240200241046a280200200241086a280200220c460d002002280200210d0c010b200c41016a220d200c490d0e200c410174220b200d200b200d4b1b220b4100480d0e02400240200c0d00200b102d210d0c010b2002280200200c200b102f210d0b200d450d022002200d360200200241046a200b360200200241086a280200210c0b200241086a200c41016a360200200d200c6a41083a0000410121064100210b4100210c03400240200c200b470d00200b410174220d200b41016a2204200d20044b1b220d4100480d0f02400240200b0d00200d102d21060c010b2006200b200d102f21060b2006450d04200d210b0b2006200c6a200a41807f72200a41ff0071200a410776220d1b3a0000200c41016a210c200d210a200d0d000b200c417f6a2109200241086a2105200241046a2107200c210d03400240024020072802002005280200220a460d00200228020021040c010b200a41016a2204200a490d0f200a41017422082004200820044b1b22084100480d0f02400240200a0d002008102d21040c010b2002280200200a2008102f21040b2004450d0520022004360200200720083602002005280200210a0b2005200a41016a3602002004200a6a200d41807f72200d41ff0071200d410776220a1b3a0000200a210d200a0d000b02400240200241046a280200220d200241086a280200220a6b20094d0d002002280200210d0c010b200a200c6a2204200a490d0e200d410174220a2004200a20044b1b220a4100480d0e02400240200d0d00200a102d210d0c010b2002280200200d200a102f210d0b200d450d052002200d360200200241046a200a360200200241086a280200210a0b200241086a200a200c6a360200200d200a6a2006200c10ab051a41012107200b450d00200610310b4101210d4101210b0c1a0b200b41011033000b200d41011033000b200841011033000b200a41011033000b2001410c6a2802002109200141086a2802002113200141046a280200210802400240024002400240024002400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d0e200a410174220d200c200d200c4b1b220d4100480d0e02400240200a0d00200d102d210c0c010b2002280200200a200d102f210c0b200c450d012002200c360200200241046a200d360200200241086a280200210a0b200241086a200a41016a360200200c200a6a41073a0000200341dc006a410036020020034201370254200320023602502008200941146c6a2107410121044100210d4100210a2009210c03400240200a200d470d00200d41016a220b200d490d0f200d4101742205200b2005200b4b1b220b4100480d0f02400240200d0d00200b102d21040c010b2004200d200b102f21040b2004450d032003200b36025820032004360254200b210d0b2003200a41016a220536025c2004200a6a200c41807f72200c41ff0071200c410776220b1b3a00002005210a200b210c200b0d000b200821062009450d042008210a0340200a41146a2106200a28020c22054104460d05200a41106a280200210c200a29020021142003200a280208360240200320143703382003200341386a200341d0006a10ef0420032d0000220a411f470d04024002402003280258220d200328025c220b460d00200328025421040c010b200b41016a220a200b490d0f200b410174220d200a200d200a4b1b220d4100480d0f02400240200b0d00200d102d21040c010b2003280254200b200d102f21040b2004450d042003200d360258200320043602540b2003200b41016a220a36025c2004200b6a20053a0000024003400240200a200d470d00200d41016a220b200d490d11200d4101742205200b2005200b4b1b220b4100480d1102400240200d0d00200b102d21040c010b2004200d200b102f21040b2004450d02200b210d0b2004200a6a200c41807f72200c41ff0071200c410776220b1b3a0000200a41016a210a200b210c200b0d000b2003200d3602582003200a36025c200320043602542006210a20062007470d010c070b0b200b41011033000b200d41011033000b200b41011033000b200d41011033000b20032d0003210c20032f0001210d200329030821142003280204210b024020062007460d0003402006410c6a2802004104460d010240200641046a280200450d00200628020010310b200641146a22062007470d000b0b200c411074210c02402013450d00200810310b200d200c72210c02402003280258450d00200328025410310b2000200c3b00012000200a3a0000200041036a200c4110763a0000200041086a2014370000200041046a200b360000410021064101210d4101210c4101210b41012104410121050c110b20062007460d0003402006410c6a2802004104460d010240200641046a280200450d00200628020010310b200641146a22062007470d000b0b02402013450d00200810310b20032802582108200328025421022003280250220441086a210b200441046a2105200328025c2207210c024002400340024002402005280200200b280200220a460d002004280200210d0c010b200a41016a220d200a490d0b200a4101742206200d2006200d4b1b22064100480d0b02400240200a0d002006102d210d0c010b2004280200200a2006102f210d0b200d450d022004200d36020020052006360200200b280200210a0b200b200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200441046a280200220c200441086a280200220a6b2007490d002004280200210c0c010b200a20076a220d200a490d0a200c410174220a200d200a200d4b1b220a4100480d0a02400240200c0d00200a102d210c0c010b2004280200200c200a102f210c0b200c450d022004200c360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200c200a6a2002200710ab051a02402008450d00200210310b41002108410121074101210d4101210b41012104410121064101210541012110410121020c1d0b200641011033000b200a41011033000b2001410c6a2802002109200141086a2802002113200141046a2802002108024002400240024002400240024002400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d0e200a410174220d200c200d200c4b1b220d4100480d0e02400240200a0d00200d102d210c0c010b2002280200200a200d102f210c0b200c450d012002200c360200200241046a200d360200200241086a280200210a0b200241086a200a41016a360200200c200a6a41063a0000200341dc006a41003602002003420137025420032002360250200820094104746a21054100210a4100210c2009210d034002400240200a200c460d002003280254210a0c010b200a41016a220b200a490d0f200a4101742204200b2004200b4b1b220b4100480d0f02400240200a0d00200b102d210a0c010b2003280254200a200b102f210a0b200a450d032003200b3602582003200a3602540b2003200c41016a36025c200a200c6a200d41807f72200d41ff0071200d410776220d1b3a00000240200d450d002003280258210a200328025c210c200d210d0c010b0b200821042009450d054100210d0340200341086a220a2008200d6a220c41086a2802003602002003200c2902003703000240200c410d6a2d000022044102470d00200c41106a21040c070b200341186a41086a200a280200220a360200200320032903002214370318200c410c6a2d00002106200341286a41086a2207200a36020020032014370328024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d0f200a4101742202200b2002200b4b1b22024100480d0f02400240200a0d002002102d210b0c010b2003280254200a2002102f210b0b200b450d04200320023602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a41fdf9ff77200641037441187141107376413f7141c000723a0000024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d0f200a4101742206200b2006200b4b1b22064100480d0f02400240200a0d002006102d210b0c010b2003280254200a2006102f210b0b200b450d05200320063602582003200b360254200328025c210a0b2003200a41016a36025c200b200a6a20044100473a0000200341386a41086a2007280200360200200320032903283703382003200341386a200341d0006a10e60420032d00002206411f470d05200d41106a210d200c41106a2005470d000c070b0b200d41011033000b200b41011033000b200241011033000b200641011033000b20032d0003211120032f0001211220032802042110200329030821140240200941047441706a200d460d00200c41106a210403402004410d6a2d00004102460d01200428020421022004280200210702402004280208220a450d00200a410474210c2007210a03400240200a2d00004109470d000240200a41046a220b280200220d28020441ffffffff0371450d00200d2802001031200b280200210d0b200d10310b200a41106a210a200c41706a220c0d000b0b200441106a210402402002450d00200710310b20042005470d000b0b2011411074210a02402013450d00200810310b2012200a72210a02402003280258450d00200328025410310b2000200a3b0001200020063a0000200041036a200a4110763a0000200041086a2014370000200041046a2010360000410021054101210d4101210c4101210b410121040c0f0b20042005460d0003402004410d6a2d00004102460d01200428020421072004280200210602402004280208220a450d00200a410474210c2006210a03400240200a2d00004109470d000240200a41046a220b280200220d28020441ffffffff0371450d00200d2802001031200b280200210d0b200d10310b200a41106a210a200c41706a220c0d000b0b200441106a210402402007450d00200610310b20042005470d000b0b02402013450d00200810310b20032802582108200328025421022003280250220441086a210b200441046a2105200328025c2207210c024002400340024002402005280200200b280200220a460d002004280200210d0c010b200a41016a220d200a490d0a200a4101742206200d2006200d4b1b22064100480d0a02400240200a0d002006102d210d0c010b2004280200200a2006102f210d0b200d450d022004200d36020020052006360200200b280200210a0b200b200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200441046a280200220c200441086a280200220a6b2007490d002004280200210c0c010b200a20076a220d200a490d09200c410174220a200d200a200d4b1b220a4100480d0902400240200c0d00200a102d210c0c010b2004280200200c200a102f210c0b200c450d022004200c360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200c200a6a2002200710ab051a02402008450d00200210310b41002102410121074101210d4101210b410121044101210641012105410121100c1b0b200641011033000b200a41011033000b2001410c6a2802002107200141086a2802002108200141046a280200210602400240024002400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d09200a410174220d200c200d200c4b1b220d4100480d0902400240200a0d00200d102d210c0c010b2002280200200a200d102f210c0b200c450d012002200c360200200241046a200d360200200241086a280200210a0b200241086a200a41016a360200200c200a6a41053a0000200341d0006a410c6a4100360200200342013702542003200236025020062007410c6c6a2102410121044100210d4100210a2007210c03400240200a200d470d00200d41016a220b200d490d0a200d4101742205200b2005200b4b1b220b4100480d0a02400240200d0d00200b102d21040c010b2004200d200b102f21040b2004450d032003200b36025820032004360254200b210d0b2003200a41016a220536025c2004200a6a200c41807f72200c41ff0071200c410776220b1b3a00002005210a200b210c200b0d000b2006210a2007450d022007410c6c210b4100210c034002402006200c6a220a41046a280200220d4102470d00200a410c6a210a0c040b2003200a280200200d200a41086a280200200341d0006a10f204024020032d00002204411f460d0020032f000120032d00034110747221052003290308211420032802042107200a410c6a210d200b200c6b41746a210a02400340200a450d01200a41746a210a200d280204210c200d410c6a210d200c4102470d000b0b02402008450d00200610310b02402003280258450d00200328025410310b200020053b0001200020043a0000200041036a20054110763a0000200041086a2014370000200041046a2007360000410021044101210d4101210c4101210b0c100b200b200c410c6a220c470d000b2002210a0c020b200d41011033000b200b41011033000b200a410020076b410c6c6a210c024003402006200c460d01200c410c6a210c200a280204210d200a410c6a210a200d4102470d000b0b02402008450d00200610310b20032802582108200328025421022003280250220441086a210b200441046a2105200328025c2207210c024002400340024002402005280200200b280200220a460d002004280200210d0c010b200a41016a220d200a490d09200a4101742206200d2006200d4b1b22064100480d0902400240200a0d002006102d210d0c010b2004280200200a2006102f210d0b200d450d022004200d36020020052006360200200b280200210a0b200b200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200441046a280200220c200441086a280200220a6b2007490d002004280200210c0c010b200a20076a220d200a490d08200c410174220a200d200a200d4b1b220a4100480d0802400240200c0d00200a102d210c0c010b2004280200200c200a102f210c0b200c450d022004200c360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200c200a6a2002200710ab051a02402008450d00200210310b41002110410121074101210d4101210b4101210441012106410121050c190b200641011033000b200a41011033000b2001410c6a2802002109200141086a2802002113200141046a2802002106024002400240024002400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d09200a410174220d200c200d200c4b1b220d4100480d0902400240200a0d00200d102d210c0c010b2002280200200a200d102f210c0b200c450d012002200c360200200241046a200d360200200241086a280200210a0b200241086a200a41016a360200200c200a6a41043a0000200341d0006a410c6a4100360200200342013702542003200236025020062009410c6c6a2111410121044100210d4100210a2009210c03400240200a200d470d00200d41016a220b200d490d0a200d4101742205200b2005200b4b1b220b4100480d0a02400240200d0d00200b102d21040c010b2004200d200b102f21040b2004450d032003200b36025820032004360254200b210d0b2003200a41016a220536025c2004200a6a200c41807f72200c41ff0071200c410776220b1b3a00002005210a200b210c200b0d000b2006210a2009450d032009410c6c21084100210d034002402006200d6a220c41046a28020022044102470d00200c410c6a210a0c050b200c2802002105200c41086a2802002107024002402003280258200328025c220a460d002003280254210b0c010b200a41016a220b200a490d0a200a4101742202200b2002200b4b1b22024100480d0a02400240200a0d002002102d210b0c010b2003280254200a2002102f210b0b200b450d04200320023602582003200b3602540b2003200a41016a36025c200b200a6a41f0003a00002003200520042007200341d0006a10f204024020032d0000220b411f460d0020032f000120032d00034110747221042003290308211420032802042105200c410c6a210c2008200d6b41746a210a02400340200a450d01200a41746a210a200c280204210d200c410c6a210c200d4102470d000b0b02402013450d00200610310b02402003280258450d00200328025410310b200020043b00012000200b3a0000200041036a20044110763a0000200041086a2014370000200041046a20053600004100210b4101210d4101210c0c0f0b2008200d410c6a220d470d000b2011210a0c030b200d41011033000b200b41011033000b200241011033000b200a410020096b410c6c6a210c024003402006200c460d01200c410c6a210c200a280204210d200a410c6a210a200d4102470d000b0b02402013450d00200610310b20032802582108200328025421022003280250220441086a210b200441046a2105200328025c2207210c024002400340024002402005280200200b280200220a460d002004280200210d0c010b200a41016a220d200a490d08200a4101742206200d2006200d4b1b22064100480d0802400240200a0d002006102d210d0c010b2004280200200a2006102f210d0b200d450d022004200d36020020052006360200200b280200210a0b200b200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200441046a280200220c200441086a280200220a6b2007490d002004280200210c0c010b200a20076a220d200a490d07200c410174220a200d200a200d4b1b220a4100480d0702400240200c0d00200a102d210c0c010b2004280200200c200a102f210c0b200c450d022004200c360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200c200a6a2002200710ab051a02402008450d00200210310b41002105410121074101210d4101210b41012104410121060c170b200641011033000b200a41011033000b2001410c6a2802002106200141086a2802002109200141046a280200210802400240024002400240024002400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d0a200a410174220d200c200d200c4b1b220d4100480d0a02400240200a0d00200d102d210c0c010b2002280200200a200d102f210c0b200c450d012002200c360200200241046a200d360200200241086a280200210a0b200241086a200a41016a360200200c200a6a41033a0000200820064102746a21074100210d4100210a41002105410121042006210c03400240200a2005470d00200d200a41016a220b200d200b4b1b22054100480d0b02400240200d0d002005102d21040c010b2004200a2005102f21040b2004450d030b2004200a6a200c41807f72200c41ff0071200c410776220b1b3a0000200d41026a210d200a41016a210a200b210c200b0d000b02402006450d00200821060340200a410174210d2006280200210c03400240200a2005470d00200a41016a220b200a490d0d200d200b200d200b4b1b22054100480d0d02400240200a0d002005102d21040c010b2004200a2005102f21040b2004450d060b2004200a6a200c41807f72200c41ff0071200c410776220b1b3a0000200d41026a210d200a41016a210a200b210c200b0d000b200641046a22062007470d000b0b02402009450d00200810310b200241086a2106200241046a2107200a210d03400240024020072802002006280200220c460d002002280200210b0c010b200c41016a220b200c490d0b200c4101742208200b2008200b4b1b22084100480d0b02400240200c0d002008102d210b0c010b2002280200200c2008102f210b0b200b450d052002200b360200200720083602002006280200210c0b2006200c41016a360200200b200c6a200d41807f72200d41ff0071200d410776220c1b3a0000200c210d200c0d000b02400240200241046a280200220d200241086a280200220c6b200a490d002002280200210d0c010b200c200a6a220b200c490d0a200d410174220c200b200c200b4b1b220c4100480d0a02400240200d0d00200c102d210d0c010b2002280200200d200c102f210d0b200d450d052002200d360200200241046a200c360200200241086a280200210c0b200241086a200c200a6a360200200d200c6a2004200a10ab051a41002106410121072005450d05200410310c050b200d41011033000b200541011033000b200541011033000b200841011033000b200c41011033000b4101210d4101210b410121040c130b2001410c6a2802002106200141086a2802002111200141046a28020021130240024002400240024002400240024002400240024002400240024002400240200241046a280200200241086a280200220a460d002002280200210c0c010b200a41016a220c200a490d11200a410174220d200c200d200c4b1b220d4100480d1102400240200a0d00200d102d210c0c010b2002280200200a200d102f210c0b200c450d012002200c360200200241046a200d360200200241086a280200210a0b200241086a200a41016a360200200c200a6a41023a0000200341dc006a410036020020034201370254200320023602502013200641286c6a21054100210a4100210c2006210d034002400240200a200c460d002003280254210a0c010b200a41016a220b200a490d12200a4101742204200b2004200b4b1b220b4100480d1202400240200a0d00200b102d210a0c010b2003280254200a200b102f210a0b200a450d032003200b3602582003200a3602540b2003200c41016a36025c200a200c6a200d41807f72200d41ff0071200d410776220d1b3a00000240200d450d002003280258210a200328025c210c200d210d0c010b0b2013210b2006450d0c2013210b0340200341086a220d200b220a41086a2802003602002003200a290200370300200a41286a210b200a2d001822074104460d0d200a411b6a2d00002108200a41196a2f00002109200a41206a2900002120200a411c6a280000210c200a41146a2802002102200a41106a2802002104200a28020c2106200341286a41086a200d280200220a360200200320032903002214370328200341386a41086a200a360200200320143703382003200341386a200341d0006a10ef04024020032d0000220a411f460d0020032f000120032d000341107472210720032903082114200328020421022004450d0d200610310c0d0b200320023602402003200436023c200320063602382003200341386a200341d0006a10ef04024020032d0000220a411f460d0020032f000120032d000341107472210720032802042102200329030821140c0d0b0240024002400240024020070e0400010203000b024002402003280258200328025c220a460d002003280254210d0c010b200a41016a220d200a490d16200a4101742204200d2004200d4b1b22044100480d1602400240200a0d002004102d210d0c010b2003280254200a2004102f210d0b200d450d08200320043602582003200d360254200328025c210a0b2003200a41016a36025c200d200a6a41003a00000340024002402003280258200328025c220a460d002003280254210d0c010b200a41016a220d200a490d17200a4101742204200d2004200d4b1b22044100480d1702400240200a0d002004102d210d0c010b2003280254200a2004102f210d0b200d450d0a200320043602582003200d360254200328025c210a0b2003200a41016a36025c200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000c040b0b024002402003280258200328025c220a460d002003280254210d0c010b200a41016a220d200a490d15200a4101742204200d2004200d4b1b22044100480d1502400240200a0d002004102d210d0c010b2003280254200a2004102f210d0b200d450d09200320043602582003200d360254200328025c210a0b2003200a41016a36025c200d200a6a41013a0000024002402003280258200328025c220a460d002003280254210d0c010b200a41016a220d200a490d15200a4101742204200d2004200d4b1b22044100480d1502400240200a0d002004102d210d0c010b2003280254200a2004102f210d0b200d450d0a200320043602582003200d360254200328025c210a0b2003200a41016a36025c200d200a6a41f0003a00002003200c2020a72020422088a7200341d0006a10f20420032d0000220a411f460d0220032f000120032d00034110747221070c0e0b024002402003280258200328025c220a460d002003280254210d0c010b200a41016a220d200a490d14200a4101742204200d2004200d4b1b22044100480d1402400240200a0d002004102d210d0c010b2003280254200a2004102f210d0b200d450d0a200320043602582003200d360254200328025c210a0b2003200a41016a36025c200d200a6a41023a00002003200c2020a72020422088a7200341d0006a10f20420032d0000220a411f460d0120032f000120032d00034110747221070c0d0b024002402003280258200328025c220a460d002003280254210c0c010b200a41016a220c200a490d13200a410174220d200c200d200c4b1b220d4100480d1302400240200a0d00200d102d210c0c010b2003280254200a200d102f210c0b200c450d0a2003200d3602582003200c360254200328025c210a0b2003200a41016a36025c200c200a6a41033a0000024002402003280258200328025c220a460d002003280254210c0c010b200a41016a220c200a490d13200a410174220d200c200d200c4b1b220d4100480d1302400240200a0d00200d102d210c0c010b2003280254200a200d102f210c0b200c450d0b2003200d3602582003200c360254200328025c210a0b2003200a41016a36025c200c200a6a2009200841107472220d417f73220a413f7141c00072200a200d411874411875417f4a1b3a0000024002402003280258200328025c220a460d002003280254210c0c010b200a41016a220c200a490d13200a4101742204200c2004200c4b1b22044100480d1302400240200a0d002004102d210c0c010b2003280254200a2004102f210c0b200c450d0c200320043602582003200c360254200328025c210a0b2003200a41016a36025c200c200a6a200d4180fe03714100473a00000b200b2005470d000c0e0b0b200d41011033000b200b41011033000b200441011033000b200441011033000b200441011033000b200441011033000b200441011033000b200d41011033000b200d41011033000b200441011033000b20032903082114200328020421020b0240200b2005460d000340200b41186a2d00004104460d01200b41106a280200210c200b410c6a280200210d0240200b41046a280200450d00200b28020010310b0240200c450d00200d10310b200b41286a220b2005470d000b0b02402011450d00201310310b02402003280258450d00200328025410310b200020073b00012000200a3a0000200041036a20074110763a0000200041086a2014370000200041046a20023600004100210c4101210d0c080b200b2005460d000340200b41186a2d00004104460d01200b41106a280200210a200b410c6a280200210c0240200b41046a280200450d00200b28020010310b0240200a450d00200c10310b200b41286a220b2005470d000b0b02402011450d00201310310b20032802582108200328025421022003280250220441086a210b200441046a2105200328025c2207210c024002400340024002402005280200200b280200220a460d002004280200210d0c010b200a41016a220d200a490d06200a4101742206200d2006200d4b1b22064100480d0602400240200a0d002006102d210d0c010b2004280200200a2006102f210d0b200d450d022004200d36020020052006360200200b280200210a0b200b200a41016a360200200d200a6a200c41807f72200c41ff0071200c410776220a1b3a0000200a210c200a0d000b02400240200441046a280200220c200441086a280200220a6b2007490d002004280200210c0c010b200a20076a220d200a490d05200c410174220a200d200a200d4b1b220a4100480d0502400240200c0d00200a102d210c0c010b2004280200200c200a102f210c0b200c450d022004200c360200200441046a200a360200200441086a280200210a0b200441086a200a20076a360200200c200a6a2002200710ab051a02402008450d00200210310b41002104410121074101210d4101210b0c130b200641011033000b200a41011033000b20082010460d0003402008410d6a2d00004105460d010240200841046a280200450d00200828020010310b200841106a22082010470d000b0b0240200e450d00200f10310b200241086a2106200241046a2107200c210d0240024003400240024020072802002006280200220a460d002002280200210b0c010b200a41016a220b200a490d04200a4101742208200b2008200b4b1b22084100480d0402400240200a0d002008102d210b0c010b2002280200200a2008102f210b0b200b450d022002200b360200200720083602002006280200210a0b2006200a41016a360200200b200a6a200d41807f72200d41ff0071200d410776220a1b3a0000200a210d200a0d000b02400240200241046a280200220d200241086a280200220a6b200c490d002002280200210d0c010b200a200c6a220b200a490d03200d410174220a200b200a200b4b1b220a4100480d0302400240200d0d00200a102d210d0c010b2002280200200d200a102f210d0b200d450d022002200d360200200241046a200a360200200241086a280200210a0b200241086a200a200c6a360200200d200a6a2004200c10ab051a4100210b410121072005450d03200410310c030b200841011033000b200a41011033000b1034000b4101210d0c0c0b2000200c3b00012000200a3a0000200041036a200c4110763a0000200041086a2014370000200041046a2004360000410021094101210d4101210c4101210b410121044101210541012106410121074101211341012102410121080c090b4101210c200241086a200a41016a3602004100210d200b200a6a41003a0000200341146a2004360200200341106a20053602002003200636020c200320073602082003200836020420032009360200200341d0006a2003200210fc04200320032900513703382003200341d0006a41086a29000037003f20032d0050220a411f460d092000200a3a000020002003290338370001200041086a200329003f3700000b4101210b0b410121040b410121050b410121060b410121070b410121130b410121020b41012108410121090b20012d0000220a410f4b0d18200a0e100a0b0c0d0e0f101112181318141516170a0b4101210d410021074101210b0b410121040b410121060b410121050b410121100b410121020b410121080b410121090b4101210c0b41012113410121110c0f0b200141086a280200450d10200141046a28020010310c100b200d450d0f0240200141086a280200450d00200141046a28020010310b200141146a280200450d0f200141106a28020010310c0f0b02402001410c6a280200220c450d00200141046a280200210a200c410474210c03400240200a41046a280200450d00200a28020010310b200a41106a210a200c41706a220c0d000b0b200141086a280200450d0e200128020410310c0e0b200c450d0d02402001410c6a280200220c450d00200141046a280200210a200c41286c210c03400240200a41046a280200450d00200a28020010310b0240200a41106a280200450d00200a410c6a28020010310b200a41286a210a200c41586a220c0d000b0b200141086a280200450d0d200128020410310c0d0b200141086a280200450d0c200141046a28020010310c0c0b200b450d0b200141086a280200450d0b200141046a28020010310c0b0b2004450d0a200141086a280200450d0a200141046a28020010310c0a0b2005450d0902402001410c6a280200220a450d00200141046a2802002204200a4104746a2105034002402004280208220c450d002004280200210a200c410474210c03400240200a2d00004109470d000240200a41046a220b280200220d28020441ffffffff0371450d00200d2802001031200b280200210d0b200d10310b200a41106a210a200c41706a220c0d000b0b200441106a210a0240200441046a280200450d00200428020010310b200a2104200a2005470d000b0b200141086a280200450d09200128020410310c090b2006450d0802402001410c6a280200220c450d00200141046a280200210a200c41146c210c03400240200a41046a280200450d00200a28020010310b200a41146a210a200c416c6a220c0d000b0b200141086a280200450d08200128020410310c080b2007450d0702402001410c6a280200220a450d00200141046a2802002204200a411c6c6a2105034002402004280204220a450d0002402004410c6a280200220c450d00200c410474210c03400240200a2d00004109470d000240200a41046a220b280200220d28020441ffffffff0371450d00200d2802001031200b280200210d0b200d10310b200a41106a210a200c41706a220c0d000b0b200441086a280200450d00200428020410310b2004411c6a210a0240200441146a280200450d00200428021010310b200a2104200a2005470d000b0b200141086a280200450d07200128020410310c070b2013450d0602402001410c6a280200220a450d00200141046a2802002204200a41186c6a210503400240200441046a280200450d00200428020010310b0240200441146a280200220c450d00200428020c210a200c410474210c03400240200a2d00004109470d000240200a41046a220b280200220d28020441ffffffff0371450d00200d2802001031200b280200210d0b200d10310b200a41106a210a200c41706a220c0d000b0b200441186a210a0240200441106a280200450d00200428020c10310b200a2104200a2005470d000b0b200141086a280200450d06200128020410310c060b2002450d05200141046a220a108005200141086a280200450d05200a28020010310c050b2008450d040240200141046a280200220a450d00200141086a280200450d00200a10310b0240200141146a280200220a450d0002402001411c6a280200220c450d00200c410c6c210c03400240200a280200220d450d00200a41046a280200450d00200d10310b200a410c6a210a200c41746a220c0d000b0b200141186a280200450d00200128021410310b200141246a2802002204450d0402402001412c6a280200220a450d002004200a4104746a210503402004220b41106a21040240200b280204220a450d000240200b410c6a280200220c450d00200c410c6c210c03400240200a280200220d450d00200a41046a280200450d00200d10310b200a410c6a210a200c41746a220c0d000b0b200b41086a280200450d00200b28020410310b20042005470d000b0b200141286a280200450d04200128022410310c040b2009450d030240200141086a280200450d00200141046a28020010310b0240200141146a280200220a450d00200141186a280200450d00200a10310b200141246a280200450d03200141206a28020010310c030b200110fb020c020b410121120b2000411f3a0000024020012d0000220a410f4b0d0002400240024002400240024002400240024002400240024002400240200a0e100001020304050607080e090e0a0b0c0d000b200d450d0e200141086a280200450d0e200141046a28020010310c0e0b2007450d0d0240200141086a280200450d00200141046a28020010310b200141146a280200450d0d200141106a28020010310c0d0b200b450d0c02402001410c6a280200220c450d00200141046a280200210a200c410474210c03400240200a41046a280200450d00200a28020010310b200a41106a210a200c41706a220c0d000b0b200141086a280200450d0c200128020410310c0c0b2004450d0b02402001410c6a280200220c450d00200141046a280200210a200c41286c210c03400240200a41046a280200450d00200a28020010310b0240200a41106a280200450d00200a410c6a28020010310b200a41286a210a200c41586a220c0d000b0b200141086a280200450d0b200128020410310c0b0b2006450d0a200141086a280200450d0a200141046a28020010310c0a0b2005450d09200141086a280200450d09200141046a28020010310c090b2010450d08200141086a280200450d08200141046a28020010310c080b2002450d0702402001410c6a280200220a450d00200141046a2802002204200a4104746a2105034002402004280208220c450d002004280200210a200c410474210c03400240200a2d00004109470d000240200a41046a220b280200220d28020441ffffffff0371450d00200d2802001031200b280200210d0b200d10310b200a41106a210a200c41706a220c0d000b0b200441106a210a0240200441046a280200450d00200428020010310b200a2104200a2005470d000b0b200141086a280200450d07200128020410310c070b2008450d0602402001410c6a280200220c450d00200141046a280200210a200c41146c210c03400240200a41046a280200450d00200a28020010310b200a41146a210a200c416c6a220c0d000b0b200141086a280200450d06200128020410310c060b2009450d0502402001410c6a280200220a450d00200141046a2802002204200a411c6c6a2105034002402004280204220a450d0002402004410c6a280200220c450d00200c410474210c03400240200a2d00004109470d000240200a41046a220b280200220d28020441ffffffff0371450d00200d2802001031200b280200210d0b200d10310b200a41106a210a200c41706a220c0d000b0b200441086a280200450d00200428020410310b2004411c6a210a0240200441146a280200450d00200428021010310b200a2104200a2005470d000b0b200141086a280200450d05200128020410310c050b200c450d0402402001410c6a280200220a450d00200141046a2802002204200a41186c6a210503400240200441046a280200450d00200428020010310b0240200441146a280200220c450d00200428020c210a200c410474210c03400240200a2d00004109470d000240200a41046a220b280200220d28020441ffffffff0371450d00200d2802001031200b280200210d0b200d10310b200a41106a210a200c41706a220c0d000b0b200441186a210a0240200441106a280200450d00200428020c10310b200a2104200a2005470d000b0b200141086a280200450d04200128020410310c040b2013450d03200141046a220a108005200141086a280200450d03200a28020010310c030b2011450d020240200141046a280200220a450d00200141086a280200450d00200a10310b0240200141146a280200220a450d0002402001411c6a280200220c450d00200c410c6c210c03400240200a280200220d450d00200a41046a280200450d00200d10310b200a410c6a210a200c41746a220c0d000b0b200141186a280200450d00200128021410310b200141246a2802002204450d0202402001412c6a280200220a450d002004200a4104746a210503402004220b41106a21040240200b280204220a450d000240200b410c6a280200220c450d00200c410c6c210c03400240200a280200220d450d00200a41046a280200450d00200d10310b200a410c6a210a200c41746a220c0d000b0b200b41086a280200450d00200b28020410310b20042005470d000b0b200141286a280200450d02200128022410310c020b2012450d010240200141086a280200450d00200141046a28020010310b0240200141146a280200220a450d00200141186a280200450d00200a10310b200141246a280200450d01200141206a28020010310c010b200110fb020b200341e0006a24000bd80d060a7f017e057f017e017f017e230041306b2203240002400240024002402001280210220441016a22052004490d00200128020022062107024020064108490d00200641016a41037641076c21070b024002400240200520074101764d0d00024002402005200741016a2207200520074b1b22050d0041bccac3002108410021094104210a4100210b0c010b0240024020054108490d000240200541ffffffff01712005470d00200541037441076e21050c020b41f09dc200411c419cdec40010a401000b200541016a21050b417f2005417f6a6776220b41086a2205200b41056a2207490d02200b41016a220cad42187e220d422088a70d022005417c712205200da76a220e2005490d02200e102d2208450d03200b200c41037641076c200b4108491b2109200841ff01200710aa0520056a210a0b2001280204220541046a210c200620056a41016a210f2005280200417f734180818284787121102001280208210e2002280200221141086a211202400340024020100d000340200c200f4f0d03200e41e0006a210e200c2802002106200c41046a2205210c2006418081828478712206418081828478460d000b20064180818284787321102005210c0b2003201229030022132011290300220d7c37032820032013200d852213200d4218898520134210868520134225897c370320200e20106841037641186c6a22142802002014280208200341206a10ff022003290328200329032085220da72106410021050340200541046a22052006200b7122076a2106200820076a280000418081828478712202450d000b2010417f6a21050240200820026841037620076a200b7122066a2c00004100480d002008280200418081828478716841037621060b20052010712110200820066a200da741197622053a00002006417c6a200b7120086a41046a20053a0000200a200641186c6a220641106a201441106a290200370200200641086a201441086a290200370200200620142902003702000c000b0b200120043602102001200a360208200041003602002001200920046b36020c2001280204210520012008360204200128020021062001200b3602002006450d060240200641086a200641056a490d00200641016aad42187e422088a71a0b200510310c060b200641016a21074100210541002106024003400240024020054101710d00200620074f0d0320062105200641016a21060c010b200641036a220520064922080d022005200749220b450d022007200641046a20081b2007200b1b21060b200141046a28020020056a220520052802002205410776417f73418182840871200541fffefdfb07726a360200410121050c000b0b200141046a2802002106200128020041016a220541044f0d03200641046a2006200510ac051a0c040b41f09dc200411c419cdec40010a401000b200e41041033000b41f09dc200411c419cdec40010a401000b200620056a20062800003600000b417f2106024002402001280200220541016a22112005490d002002280200210f200141046a210a4100210403402004220e41016a21040240200e200a2802006a2d0000418001470d0002400340200141086a221428020021062003200f41086a2903002213200f290300220d7c37032820032013200d852213200d4218898520134210868520134225897c3703202006200e41186c6a220c280200200c280208200341206a10ff02200a280200210b20012802002108410021062003290328200329032085220da7221021050340200641046a2206200520087122076a2105200b20076a280000418081828478712202450d000b0240200b20026841037620076a20087122066a2c00004100480d00200b280200418081828478716841037621060b2006200820107122056b200e20056b732008714104490d01200b20066a22052d000021072005200da741197622023a00002006417c6a200871200b6a41046a20023a00000240200741ff01460d002014280200200641186c6a2206290200210d2006200c290200370200200641106a220529020021132005200c41106a2207290200370200200641086a220629020021152006200c41086a2205290200370200200c200d37020020072013370200200520153702000c010b0b200a2802002205200e6a41ff013a000020052001280200200e417c6a716a41046a41ff013a00002014280200200641186c6a2206200c290200370200200641086a200c41086a290200370200200641106a200c41106a2902003702000c010b200b200e6a200da741197622063a00002008200e417c6a71200b6a41046a20063a00000b20042011470d000b200128020022064108490d010b200641016a41037641076c21060b200041003602002001200620012802106b36020c0b200341306a24000bab0302017f037e230041306b22032400200341206a20022903002001ad220485420042adfed5e4d485fda8d800420010b0052002200442adfed5e4d485fda8d8007e20032903207c200341206a41086a2903007c220537030002400240024002400240200141084b0d00200141014b0d0120010d02420021040c030b0240200141104b0d00200341106a2000290000200585420042adfed5e4d485fda8d800420010b005200341186a29030020032903107c200120006a41786a2900008521040c040b200120006a41786a2900002106200521040340200029000020048542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e2005852105200041086a2100200442cf829ebbefefde82147c2104200141786a220141084b0d000b200520068521040c030b0240200141034b0d00200120006a417e6a33000042108620003300008420058521040c030b200120006a417c6a35000042208620003500008420058521040c020b200031000021040b200420058521040b20032004420042adfed5e4d485fda8d800420010b0052002200341086a29030020032903007c370300200341306a24000baf0c02077f017e230041f0006b22022400024002400240200128020422030d00200041013a0000200041046a41013602000c010b0240024002400240024002400240200128020022042c00002201417f4a0d00024002400240200141ff0171220541b801490d00200141ff017141c001490d01200041013a0000200041046a41033602000c0a0b2003200541817f6a490d03200541807f6a210341012105200441016a2106200141817f470d082003450d0120062c00004100480d08200041013a0000200041046a41073602000c090b2003200541ca7e6a2207490d064100210102400240200541c97e6a220541044b0d0020042d00010d01410721010b200041013a0000200041046a20013602000c090b200441016a210841002106410021010240034020052001460d01200820016a2d00002001417f7320056a4103744118717420066a21062005200141016a2201470d000b0b0240200720066a220120074f22050d00200041013a0000200041046a41093602000c090b20032001490d052005450d034101210341012105024002400240417f200120076b220141204720014120491b41016a0e03020001020b200241203602302002200136023420014120470d06200241386a41026a200420076a220141026a2d00003a0000200241e0006a200141176a290000370300200241e8006a2001411f6a2d00003a0000200220012f00003b01382002200129000f3703582001290007210920012800032105410021030c010b41002105410121030b200241146a41026a2201200241386a41026a2d00003a0000200241086a2204200241d8006a41086a290300370300200241106a2206200241d8006a41106a2d00003a0000200220022f01383b01142002200229035837030002402003450d00200041013a0000200041086a2009370200200041046a20053602000c090b200020022f01143b0001200041003a0000200041086a2009370000200041046a2005360000200041106a2002290300370000200041036a20012d00003a0000200041186a2004290300370000200041206a20062d00003a00000c080b41a099c40041004100104b000b200041013a0000200041046a41013602000c060b200041013a0000200041046a41083602000c050b20072001107b000b200241186a41146a4103360200200241246a4104360200200241386a41146a41033602002002420337023c20024180ecc4003602382002410436021c2002200241306a3602502002200241346a360254200242043703682002420137025c200241d4ecc4003602582002200241186a3602482002200241d8006a3602282002200241d4006a3602202002200241d0006a360218200241386a4190edc40010b301000b200041013a0000200041046a41083602000c020b200041013a0000200041046a41083602000c010b41012101024002400240417f200341204720034120491b41016a0e03020001020b200241203602302002200336023420034120470d03200241386a41026a200641026a2d00003a0000200241e0006a200441186a290000370300200241e8006a200441206a2d00003a0000200220062f00003b0138200220042900103703582004290008210920042800042101410021050c010b41002101410121050b200241146a41026a2203200241386a41026a2d00003a0000200241086a2204200241d8006a41086a290300370300200241106a2206200241d8006a41106a2d00003a0000200220022f01383b01142002200229035837030002402005450d00200041013a0000200041086a2009370200200041046a20013602000c010b200020022f01143b0001200041003a0000200041086a2009370000200041046a2001360000200041106a2002290300370000200041036a20032d00003a0000200041186a2004290300370000200041206a20062d00003a00000b200241f0006a24000f0b200241186a41146a4103360200200241246a4104360200200241386a41146a41033602002002420337023c20024180ecc4003602382002410436021c2002200241306a3602502002200241346a360254200242043703682002420137025c200241d4ecc4003602582002200241186a3602482002200241d8006a3602282002200241d4006a3602202002200241d0006a360218200241386a4190edc40010b301000b900603057f017e027f230041306b2202240002400240200128020422030d0020004281808080103702000c010b024002400240024002400240024002400240200128020022042c00002201417f4a0d00200141ff0171220541b801490d01200141ff017141c001490d0220004281808080303702000c090b4101102d2203450d04200320013a0000200041086a42818080801037020020002003360204200041003602000c080b2003200541817f6a490d02200541807f6a210341012105200441016a21040240024002400240200141817f460d00200241206a2106200241146a21012003450d012003102d22050d01200341011033000b2003450d0420042c0000417f4a0d022003102d2205450d01200241206a2106200241146a21010b20022003360228200220033602242002200536022020052004200310ab051a200141086a2203200641086a280200360200200120062902003702002002410c6a20032802002203360200200241003602002002200129020022073702042000410c6a200336020020002007370204200041003602000c090b200341011033000b20004281808080f0003702000c070b2003200541ca7e6a2208490d054100210102400240200541c97e6a220541044b0d0020042d00010d01410721010b20004101360200200020013602040c070b200441016a210941002106410021010240034020052001460d01200920016a2d00002001417f7320056a4103744118717420066a21062005200141016a2201470d000b0b0240200820066a220120084f22050d002000428180808090013702000c070b0240024020032001490d0020050d0120082001107b000b2000428180808080013702000c070b200120086b2201417f4c0d030240024020010d00410121030c010b2001102d2203450d052003200420086a200110ab051a0b20002003360204200041003602002000410c6a2001360200200041086a20013602000c060b41a099c40041004100104b000b2000428180808080013702000c040b410141011033000b1032000b200141011033000b2000428180808080013702000b200241306a24000b190020002802002200280200200041046a28020020011083030bca0f020d7f017e230041206b220324004101210402400240200228021841222002411c6a2802002802101104000d000240024020010d00410021050c010b200020016a21062000210741002105410021080240034020072109200741016a210a02400240024020072c0000220b417f4a0d0002400240200a2006470d004100210c200621070c010b20072d0001413f71210c200741026a220a21070b200b411f7121040240200b41ff0171220b41df014b0d00200c200441067472210b0c020b0240024020072006470d004100210d2006210e0c010b20072d0000413f71210d200741016a220a210e0b200d200c41067472210c0240200b41f0014f0d00200c2004410c7472210b0c020b02400240200e2006470d004100210b200a21070c010b200e41016a2107200e2d0000413f71210b0b200c4106742004411274418080f0007172200b72220b418080c400470d020c040b200b41ff0171210b0b200a21070b4102210a024002400240024002400240200b41776a220c411e4d0d00200b41dc00470d010c020b41f400210e02400240200c0e1f05010202000202020202020202020202020202020202020202030202020203050b41f200210e0c040b41ee00210e0c030b02400240200b10f9030d00024002400240024002400240024002400240200b41808004490d00200b41808008490d01200b4190fc476a4190fc0b490d09200b41e28b746a41e28d2c490d09200b419fa8746a419f18490d09200b41dee2746a410e490d09200b41feffff0071419ef00a460d09200b41a9b2756a4129490d09200b41cb91756a410a4d0d090c0e0b200b4180fe0371410876210f4180afc300210c410021040340200c41026a210d2004200c2d0001220a6a210e0240200c2d0000220c200f460d00200c200f4b0d08200e2104200d210c200d41d2afc300470d010c080b200e2004490d02200e41a5024b0d03200441d2afc3006a210c02400340200a450d01200a417f6a210a200c2d00002104200c41016a210c2004200b41ff0171470d000c0b0b0b200e2104200d210c200d41d2afc300470d000c070b0b200b4180fe0371410876210f41b1b4c300210c410021040340200c41026a210d2004200c2d0001220a6a210e0240200c2d0000220c200f460d00200c200f4b0d06200e2104200d210c200d41f7b4c300470d010c060b200e2004490d03200e41a6014b0d04200441f7b4c3006a210c02400340200a450d01200a417f6a210a200c2d00002104200c41016a210c2004200b41ff0171470d000c0a0b0b200e2104200d210c200d41f7b4c300470d000c050b0b2004200e107b000b200e41a50210b601000b2004200e107b000b200e41a60110b601000b200b41ffff0371210e419db6c300210a4101210c02400340200a41016a210d02400240200a2d00002204411874411875220f4100480d00200d210a0c010b200d41b5b9c300460d02200f41ff0071410874200a2d0001722104200a41026a210a0b200e20046b220e4100480d03200c410173210c200a41b5b9c300470d000c030b0b41f099c400412b41a4a1c30010a401000b200b41ffff0371210e41f7b1c300210a4101210c0340200a41016a210d02400240200a2d00002204411874411875220f4100480d00200d210a0c010b200d41b1b4c300460d04200f41ff0071410874200a2d0001722104200a41026a210a0b200e20046b220e4100480d01200c410173210c200a41b1b4c300470d000b0b200c4101710d050b200b41017267410276410773ad4280808080d0008421104103210a0c020b41f099c400412b41a4a1c30010a401000b0b200b210e0b2003200136020420032000360200200320053602082003200836020c0240024020082005490d0002402005450d0020052001460d00200520014f0d01200020056a2c000041bf7f4c0d010b02402008450d0020082001460d00200820014f0d01200020086a2c000041bf7f4c0d010b2002280218200020056a200820056b200228021c28020c110300450d01410121040c060b20032003410c6a3602182003200341086a36021420032003360210200341106a108804000b0340200a210c4101210441dc0021054101210a024002400240024002400240200c0e0402010500020b02400240024002402010422088a741ff01710e06050302010006050b201042ffffffff8f60834280808080308421104103210a41f50021050c070b201042ffffffff8f60834280808080208421104103210a41fb0021050c060b200e2010a7220c410274411c7176410f71220a413072200a41d7006a200a410a491b21050240200c450d002010427f7c42ffffffff0f832010428080808070838421100c050b201042ffffffff8f60834280808080108421100c040b201042ffffffff8f608321104103210a41fd0021050c040b4100210a200e21050c030b4101210a0240200b418001490d004102210a200b418010490d0041034104200b41808004491b210a0b200a20086a21050c040b201042ffffffff8f60834280808080c0008421100b4103210a0b20022802182005200228021c2802101104000d050c000b0b200820096b20076a210820062007470d000b0b2005450d0020052001460d00200520014f0d02200020056a2c000041bf7f4c0d020b410121042002280218200020056a200120056b200228021c28020c1103000d0020022802184122200228021c28021011040021040b200341206a240020040f0b200020012005200110f603000b0600200010250b0600200010260b2801017f0240200210252203450d002003200020022001200120024b1b10ab051a200010260b20030b1c01017f0240200010252201450d0020014100200010aa051a0b20010b02000bcd2c08067f087e097f037e017f017e017f097e230041a0066b22022400200241c0016a4200370300200241c8016a4200370300200241d0016a4200370300200242003703b801200220012903183703b001200220012903103703a801200220012903083703a00120022001290300370398014100210102400240024002400240024002400240024002400340200141086a220341c800460d0120024198016a20016a2104200321012004290300500d000b200241d8046a41106a22014200370300200241d8046a41186a22034200370300200241d8046a41206a22044200370300200241d8046a41286a22054200370300200241d8046a41306a22064200370300200241d8046a41386a22074200370300200242003703e004200242013703d804024020024198016a200241d8046a41c00010ad05450d0020024190046a41106a420037030020024190046a41186a420037030020024190046a41206a420037030020024190046a41286a420037030020024190046a41306a420037030020024190046a41386a420037030020024200370398042002420137039004200142003703002003420037030020044200370300200542003703002006420037030020074200370300200242003703e00420024280023703d804200241d8046a41086a21054100210102400340200141086a220341c000460d01200520016a2104200321012004290300500d000b41c8e2c3004126419cdec40010a401000b200241d8016a41206a2002290390042208370300200241d8016a41386a20022903a8042209370300200241d8016a41306a20022903a004220a370300200241d8016a41286a200229039804220b370300200241d8016a41186a4200370300200241d8016a41106a4200370300200241d8016a41086a4200370300200242003703d80120024198026a41386a2201200937030020024198026a41306a200a37030020024198026a41286a200b37030020024198026a41206a200837030020024198026a41186a420037030020024198026a41106a420037030020024198026a41086a42003703002002420037039802200241d8026a41386a20024198016a41386a290300370300200241d8026a41306a20024198016a41306a290300370300200241d8026a41286a20024198016a41286a290300370300200241d8026a41206a20024198016a41206a290300370300200241d8026a41186a20024198016a41186a290300370300200241d8026a41106a20024198016a41106a290300370300200241d8026a41086a20024198016a41086a29030037030020022002290398013703d80241c0042103024002400340200341406a220341c000460d0120012903002108200141786a21012008500d000c020b0b41c000210320022903980221080b2003200879a76b210420024190036a210141c0042103024002400340200341406a220341c000460d0120012903002108200141786a21012008500d000c020b0b41c000210320022903d80221080b2003200879a76b2201450d0242002108420021094200210a4200210b4200210c4200210d4200210e4200210f20042001490d080240200141c100490d0020024198036a41086a20024198026a41106a29030037030020024198036a41106a20024198026a41186a29030037030020024198036a41186a20024198026a41206a29030037030020024198036a41206a20024198026a41286a29030037030020024198036a41286a20024198026a41306a29030037030020024198036a41306a20024198026a41386a290300370300200220022903a00237039803200229039802210a200241d0036a41386a2203200241d8026a41386a290300370300200241d0036a41306a2205200241d8026a41306a290300370300200241d0036a41286a2206200241d8026a41286a290300370300200241d0036a41206a2207200241d8026a41206a290300370300200241d0036a41186a2210200241d8026a41186a290300370300200241d0036a41106a2211200241d8026a41106a290300370300200241d0036a41086a2212200241d8026a41086a290300370300200220022903d8023703d0032001417f6a2213410676211402400240024002400240201341ff034b0d002004417f6a410676221520146b2104201441016a2116200241d0036a20144103746a2217290300210820024190046a41386a200329030037030020024190046a41306a200529030037030020024190046a41286a200629030037030020024190046a41206a200729030037030020024190046a41186a201029030037030020024190046a41106a201129030037030020024190046a41086a2012290300370300200220022903d00337039004200241d8046a41106a4200370300200241d8046a41186a4200370300200241d8046a41206a4200370300200241d8046a41286a4200370300200241d8046a41306a4200370300200241d8046a41386a4200370300200242003703e004200220087922093703d8042009a72107200241d8046a41086a21064100210102400340200141086a220341c000460d01200620016a2105200321012005290300500d000b41c8e2c300412641a0e2c30010a401000b200241d8056a4200370300200241d0056a4200370300200241c8056a4200370300200241c0056a4200370300200241b8056a4200370300200241b0056a4200370300200241a0056a41086a4200370300200242003703a0052007410676220641037421012007413f712205ad210820024190046a21030340200241a0056a20016a2003290300200886370300200341086a2103200141086a220141c000470d000b02402005450d0020064103742101420020097d423f832108200241a0056a41086a210620024190046a21030340200620016a2205200529030020032903002008887c370300200341086a2103200141086a22014138470d000b0b200241d0036a41386a200241a0056a41386a290300370300200241d0036a41306a200241a0056a41306a290300370300200241d0036a41286a200241a0056a41286a290300370300200241d0036a41206a200241a0056a41206a290300370300200241d0036a41186a200241a0056a41186a290300370300200241d0036a41106a200241a0056a41106a290300370300200241d0036a41086a200241a0056a41086a290300370300200220022903a0053703d0032002200a3703e005200241e0056a41106a20024198036a41086a290300370300200241e0056a41186a20024198036a41106a290300370300200241e0056a41206a20024198036a41186a290300370300200241e0056a41286a20024198036a41206a290300370300200241e0056a41306a20024198036a41286a290300370300200241e0056a41386a20024198036a41306a29030037030020022002290398033703e805200241d8046a41106a4200370300200241d8046a41186a4200370300200241d8046a41206a4200370300200241d8046a41286a4200370300200241d8046a41306a4200370300200241d8046a41386a4200370300200242003703e004200241c00020076b2207ad220b3703d804200a2009423f83862109200241d8046a41086a21064100210102400340200141086a220341c000460d01200620016a2105200321012005290300500d000b41c8e2c300412641a0e2c30010a401000b200241d8056a4200370300200241d0056a4200370300200241c8056a4200370300200241c0056a4200370300200241b8056a4200370300200241b0056a4200370300200241a0056a41086a4200370300200242003703a0052007413f712105200741067621060240200741ff034b0d00200641037421012005ad2108200241a0056a210303402003200241e0056a20016a290300200888370300200341086a2103200141086a220141c000470d000b0b02402005450d00200641016a41074b0d00200641037421034200200b7d423f832108200241e0056a41086a2105200241a0056a2101034020012001290300200520036a2903002008867c370300200141086a2101200341086a22034138470d000b0b200220022903d8053703d004200220022903d0053703c804200220022903c8053703c004200220022903c0053703b804200220022903b8053703b004200220022903b0053703a804200220022903a8053703a004200220022903a00537039804200220093703900420024198066a420037030020024190066a420037030020024188066a420037030020024180066a4200370300200241f8056a4200370300200241e0056a41106a4200370300200241e0056a41086a4200370300200242003703e0052014417f6a220141074b0d01201441026a211820024190046a201520146b4103746a221241086a21112017290300220f200f792208423f83221986221a42ffffffff0f83210e201a422088210b200241d0036a20014103746a290300211b41c0002008a76b221c413f71ad211d200241d8046a41106a211e200229038804211f200229038004212020022903f803212120022903f003212220022903e803212320022903e003212420022903d803212520022903d0032126201341800449211703402004220720166a220141084b0d03427f2109024020024190046a20014103746a22152903002208200f5a0d00200720146a220341084b0d05200b500d0b20024190046a20034103746a2903002209201986220a42ffffffff0f83210c200a422088210a42002009201d88201c413f4b1b200820198684220d200d200b802209200b7e7d2108024003400240200942ffffffff0f560d002009200e7e2008422086200a84580d020b2009427f7c21092008200b7c2208428080808010540d000b0b200d422086200a842009201a7e7d220d200d200b80220a200b7e7d2108024003400240200a42ffffffff0f560d00200a200e7e2008422086200c84580d020b200a427f7c210a2008200b7c220842ffffffff0f580d000b0b2001417e6a220141084b0d0c200d422086200c84200a201a7e7d2019882108200a20094220867c210920024190046a20014103746a290300210c034020024188016a20094200201b420010b005200c2002290388015a200820024188016a41086a290300220a5a2008200a511b0d012009427f7c21092008200f7c220a2008542101200a21082001450d000b0b200241f8006a202642002009420010b005200241e8006a202542002009420010b005200241d8006a202442002009420010b005200241c8006a202342002009420010b005200241386a202242002009420010b005200241286a202142002009420010b005200241186a202042002009420010b005200241086a201f42002009420010b0052002200229037822273703d80420022002290368220a200241f8006a41086a2903007c22083703e00420022002290358220c200241e8006a41086a2903002008200a54ad7c7c220a3703e80420022002290348220d200241d8006a41086a290300200a200c54ad7c7c220a3703f00420022002290338220c200241c8006a41086a290300200a200d54ad7c7c220a3703f80420022002290328220d200241386a41086a290300200a200c54ad7c7c220a3703800520022002290318220c200241286a41086a290300200a200d54ad7c7c220a3703880520022002290308220d200241186a41086a290300200a200c54ad7c7c220a370390052002200241086a41086a290300200a200d54ad7c370398052007410a4f0d0c2017450d0d0240201841c800200741037422106b4103762213201320184b1b2206450d0020024190046a20106a22012001290300220a20277d220c370300200c200a562105024020064101460d0041022103201e210420112101034020012001290300220a20082005ad4201837c220c7d220d370300200c200854200d200a56722105200320064f0d01200341016a2103200141086a210120042903002108200441086a21040c000b0b2005450d0041002104024020162013201320164b1b2206450d00200241d0036a2103201221014100210503402001200129030022082003290300220a2004ad42ff01837c220c7c220d370300200c200a54200d200854722104200141086a2101200341086a2103200541016a22052006490d000b0b2009427f7c2109201520152903002004ad7c3703000b200741074b0d05200720074100476b2104200241e0056a20106a2009370300201241786a2112201141786a211120070d000b200229039806210f200229039006210e200229038806210d200229038006210c20022903f805210b20022903f005210a20022903e805210920022903e00521080c0e0b41a0e2c30020144108104b000b41a0e2c30020014108104b000b41a0e2c30020014109104b000b41a0e2c30020034109104b000b41a0e2c30020074108104b000b200241d8046a41386a20024198026a41386a290300370300200241d8046a41306a20024198026a41306a290300370300200241d8046a41286a20024198026a41286a290300370300200241d8046a41206a20024198026a41206a290300370300200241d8046a41186a20024198026a41186a290300370300200241d8046a41106a20024198026a41106a290300370300200241d8046a41086a20024198026a41086a29030037030020022002290398023703d804024020022903d80222082008792209423f83220e86220f4220882208500d00200f42ffffffff0f83210c200241d8046a41c0006a2101024041c0002009a76b2203413f4b0d002003413f71ad2127420021090340200141786a2201290300220b2027882009200e8684221b201b200880220920087e7d210a200b200e86220b42ffffffff0f83210d200b422088210b024003400240200942ffffffff0f560d002009200c7e200a422086200b84580d020b2009427f7c2109200a20087c220a428080808010540d000b0b201b422086200b842009200f7e7d221b201b200880220a20087e7d210b024003400240200a42ffffffff0f560d00200a200c7e200b422086200d84580d020b200a427f7c210a200b20087c220b428080808010540d000b0b2001200a20094220867c370300201b422086200d84200a200f7e7d200e8821092001200241d8046a470d000c0a0b0b4200210903402009200e86221b201b200880220920087e7d210a200141786a2201290300200e86220b42ffffffff0f83210d200b422088210b024003400240200942ffffffff0f560d002009200c7e200a422086200b84580d020b2009427f7c2109200a20087c220a428080808010540d000b0b200b201b422086842009200f7e7d221b201b200880220a20087e7d210b024003400240200a42ffffffff0f560d00200a200c7e200b422086200d84580d020b200a427f7c210a200b20087c220b428080808010540d000b0b2001200a20094220867c370300201b422086200d84200a200f7e7d200e8821092001200241d8046a460d090c000b0b4190e1c300411941a0e2c30010a401000b2000427f370300200041186a427f370300200041106a427f370300200041086a427f3703000c080b41ac9ec200412741d49ec20010a401000b41b8e2c300411041a0e2c30010a401000b41f0e2c300411941a0e2c30010a401000b41a0e2c30020014109104b000b20074109107b000b2018410910b601000b200229039005210f200229038805210e200229038005210d20022903f804210c20022903f004210b20022903e804210a20022903e004210920022903d80421080b200d200c84200e84200f8450450d012000200b3703182000200a37031020002009370308200020083703000b200241a0066a24000f0b41e49ec2004137200241d8046a419c9fc2001038000b130041b29fc20041fc00419cdec40010a401000b931a03067f027e027f230041306b22032400200141003a0018200141106a2802002104200141146a2802002105024002400240024002400240024002400240024002400240410d20004184016a280200410d6a20021b2206450d000240024020052004460d00200128020c21040c010b200541016a22042005490d09200541017422072004200720044b1b22074100480d090240024020050d002007102d21040c010b200128020c20052007102f21040b2004450d032001200436020c200141106a2007360200200141146a28020021050b200420056a41003a0000200141146a2205200528020041016a2204360200024020012802082205200141046a280200470d00200541016a22072005490d09200541017422082007200820074b1b220741ffffffff00712007470d09200741047422084100480d090240024020050d002008102d21050c010b200128020020054104742008102f21050b2005450d0420012005360200200141046a2007360200200128020821050b200128020020054104746a2205428080808010370204200520043602002005410c6a20063602002001200128020841016a3602080c010b0240024020052004460d00200128020c21040c010b200541016a22042005490d08200541017422062004200620044b1b22064100480d080240024020050d002006102d21040c010b200128020c20052006102f21040b2004450d042001200436020c200141106a2006360200200141146a28020021050b200420056a41c0013a0000200141146a2205200528020041016a3602002001108c03200141013a00180b200141186a2106200141003a001820032001410c6a2207360208200341086a20004188016a4120108d03024020012d00180d002001108c030b200641003a000020032007360208200341086a200041dc016a4120108d03024020062d00000d002001108c030b200641003a000020032007360208200341086a200041a8016a4114108d03024020062d00000d002001108c030b200641003a000020032007360208200341086a200041fc016a4120108d03024020062d00000d002001108c030b200641003a000020032007360208200341086a200041bc016a4120108d03024020062d00000d002001108c030b200641003a000020032007360208200341086a2000419c026a4120108d03024020062d00000d002001108c030b200641003a000020032007360208200341086a200041bc026a418002108d03024020062d00000d002001108c030b200641003a0000200041e8006a210541c0022104024002400340200441406a220441c000460d0120052903002109200541786a21052009500d000b2000290350210a0c010b41c00021042000290350220a21090b2003200a423886200a42288642808080808080c0ff008384200a421886428080808080e03f83200a4208864280808080f01f838484200a42088842808080f80f83200a421888428080fc078384200a4228884280fe0383200a4238888484843703202003200041e8006a290300220a423886200a42288642808080808080c0ff008384200a421886428080808080e03f83200a4208864280808080f01f838484200a42088842808080f80f83200a421888428080fc078384200a4228884280fe0383200a4238888484843703082003200041e0006a290300220a423886200a42288642808080808080c0ff008384200a421886428080808080e03f83200a4208864280808080f01f838484200a42088842808080f80f83200a421888428080fc078384200a4228884280fe0383200a4238888484843703102003200041d8006a290300220a423886200a42288642808080808080c0ff008384200a421886428080808080e03f83200a4208864280808080f01f838484200a42088842808080f80f83200a421888428080fc078384200a4228884280fe0383200a4238888484843703182003200736022c41202004200979a76b41076a220441037622086b210520044187024b0d092003412c6a200341086a20056a2008108d03024020062d00000d002001108c030b200641003a0000200320002903082209423886200942288642808080808080c0ff0083842009421886428080808080e03f8320094208864280808080f01f838484200942088842808080f80f832009421888428080fc07838420094228884280fe038320094238888484843703082003200736022c200979a722044103762105200441c8004f0d032003412c6a200341086a20056a410820056b108d03024020062d00000d002001108c030b200641003a0000200041c8006a210541c0022104024002400340200441406a220441c000460d0120052903002109200541786a21052009500d000b2000290330210a0c010b41c00021042000290330220a21090b2003200a423886200a42288642808080808080c0ff008384200a421886428080808080e03f83200a4208864280808080f01f838484200a42088842808080f80f83200a421888428080fc078384200a4228884280fe0383200a4238888484843703202003200041c8006a290300220a423886200a42288642808080808080c0ff008384200a421886428080808080e03f83200a4208864280808080f01f838484200a42088842808080f80f83200a421888428080fc078384200a4228884280fe0383200a4238888484843703082003200041c0006a290300220a423886200a42288642808080808080c0ff008384200a421886428080808080e03f83200a4208864280808080f01f838484200a42088842808080f80f83200a421888428080fc078384200a4228884280fe0383200a4238888484843703102003200041386a290300220a423886200a42288642808080808080c0ff008384200a421886428080808080e03f83200a4208864280808080f01f838484200a42088842808080f80f83200a421888428080fc078384200a4228884280fe0383200a4238888484843703182003200736022c41202004200979a76b41076a220441037622086b210520044187024b0d082003412c6a200341086a20056a2008108d03024020062d00000d002001108c030b200641003a0000200041286a210541c0022104024002400340200441406a220441c000460d0120052903002109200541786a21052009500d000b2000290310210a0c010b41c00021042000290310220a21090b2003200a423886200a42288642808080808080c0ff008384200a421886428080808080e03f83200a4208864280808080f01f838484200a42088842808080f80f83200a421888428080fc078384200a4228884280fe0383200a4238888484843703202003200041286a290300220a423886200a42288642808080808080c0ff008384200a421886428080808080e03f83200a4208864280808080f01f838484200a42088842808080f80f83200a421888428080fc078384200a4228884280fe0383200a4238888484843703082003200041206a290300220a423886200a42288642808080808080c0ff008384200a421886428080808080e03f83200a4208864280808080f01f838484200a42088842808080f80f83200a421888428080fc078384200a4228884280fe0383200a4238888484843703102003200041186a290300220a423886200a42288642808080808080c0ff008384200a421886428080808080e03f83200a4208864280808080f01f838484200a42088842808080f80f83200a421888428080fc078384200a4228884280fe0383200a4238888484843703182003200736022c41202004200979a76b41076a220441037622086b210520044187024b0d072003412c6a200341086a20056a2008108d03024020062d00000d002001108c030b200641003a0000200320002903002209423886200942288642808080808080c0ff0083842009421886428080808080e03f8320094208864280808080f01f838484200942088842808080f80f832009421888428080fc07838420094228884280fe038320094238888484843703082003200736022c200979a722044103762105200441c8004f0d042003412c6a200341086a20056a410820056b108d03024020062d00000d002001108c030b200641003a000020032007360208200341086a2000280270200041f8006a280200108d03024020062d00000d002001108c030b024020020d0020004184016a2802002205450d00200028027c22042005410c6c6a210b200141146a2107200141106a21080340200428020021020240024020082802002206200728020022056b200441086a2802002200490d00200128020c21060c010b200520006a220c2005490d0920064101742205200c2005200c4b1b22054100480d090240024020060d002005102d21060c010b200128020c20062005102f21060b2006450d082001200636020c20082005360200200728020021050b2007200520006a360200200620056a2002200010ab051a2001108c032004410c6a2204200b470d000b0b200341306a24000f0b200741011033000b200841041033000b200641011033000b20054108107b000b20054108107b000b200541011033000b1034000b20054120107b000b20054120107b000b20054120107b000b9d0501077f230041106b2201240002400240024002400240024002400240200041086a2802002202450d0020002802002002417f6a4104746a2202200228020441016a220336020441002104024020022802084101470d002003200228020c22024b0d0220032002470d00200041086a22022802002204450d0320022004417f6a2204360200200028020020044104746a22042802084102460d0302400240200041146a2802002202200428020022046b220341374b0d0020022004417f6a22044d0d06200028020c20046a200341406a3a00000c010b200120034118742003410874418080fc07717220034108764180fe03712003411876727236020c0240024020022004490d0002400240200041106a280200220520026b410420036741037622066b2203490d00200028020c21050c010b200220036a22072002490d0a200541017422022007200220074b1b22024100480d0a0240024020050d002002102d21050c010b200028020c20052002102f21050b2005450d092000200536020c200041106a2002360200200041146a28020021020b200041146a2207200220036a360200200520026a2001410c6a20066a200310ab051a2007280200220220044f0d0120042002107b000b419b9ac400412f41cc9ac40010a401000b200220046b2205200341ff01712202490d08200520026b22032003200028020c20046a6a200210de04200041146a28020022032004417f6a22024d0d09200028020c20026a417b20066b3a00000b2000108c03410121040b200020043a00180b200141106a24000f0b41b099c400412d41e099c40010a401000b41f099c400412b41b4b1c40010a401000b41f49cc40020042002104b000b200241011033000b1034000b41c29cc400412141b4b1c40010a401000b41f49cc40020022003104b000be00d01097f230041106b220324000240024002400240024002400240024002400240024002400240024002400240024002402002450d00200120026a2104200241384f0d042000280200210520012c00002106024020024101470d002006417f4a0d040b200541046a28020020052802082207460d01200528020021080c020b024002402000280200220041046a28020020002802082205460d00200028020021020c010b200541016a22022005490d11200541017422012002200120024b1b22014100480d110240024020050d002001102d21020c010b200028020020052001102f21020b2002450d0620002002360200200041046a2001360200200028020821050b200220056a4180013a00002000200028020841016a3602080c040b200741016a22082007490d0f200741017422092008200920084b1b22094100480d0f0240024020070d002009102d21080c010b200528020020072009102f21080b2008450d0520052008360200200541046a2009360200200528020821070b200820076a200241807f733a00002005200528020841016a360208024002402000280200220541046a28020020052802082207460d00200528020021080c010b200741016a22082007490d0f200741017422092008200920084b1b22094100480d0f0240024020070d002009102d21080c010b200528020020072009102f21080b2008450d0620052008360200200541046a2009360200200528020821070b200820076a20063a00002005200528020841016a3602080240024002402000280200220741046a2802002200200741086a28020022066b2002417f6a22054f0d00200620056a22052006490d11200041017422062005200620054b1b22054100480d110240024020000d002005102d21000c010b200728020020002005102f21000b2000450d0920072000360200200741046a2005360200200741086a28020021060c010b20024101460d01200728020021000b2002417f6a2102200020066a2100200141016a220121050340200020052d00003a0000200041016a2100200541016a21052002417f6a22020d000b2004200620016b6a21060b200741086a20063602000c020b02400240200541046a28020020052802082200460d00200528020021020c010b200041016a22022000490d0e200041017422012002200120024b1b22014100480d0e0240024020000d002001102d21020c010b200528020020002001102f21020b2002450d0720052002360200200541046a2001360200200528020821000b200220006a20063a00002005200528020841016a3602080c010b024002402000280200220541046a28020020052802082206460d00200528020021070c010b200641016a22072006490d0d200641017422082007200820074b1b22084100480d0d0240024020060d002008102d21070c010b200528020020062008102f21070b2007450d0720052007360200200541046a2008360200200528020821060b200720066a41003a00002005200528020841016a3602082000280200220641086a2802002105200320024118742002410874418080fc07717220024108764180fe03712002411876727236020c02400240200641046a280200220920056b410420026741037622086b2207490d00200628020021092005210a0c010b200520076a220a2005490d0d2009410174220b200a200b200a4b1b220a4100480d0d0240024020090d00200a102d21090c010b20062802002009200a102f21090b2009450d0820062009360200200641046a200a360200200641086a280200210a0b200641086a200a20076a3602002009200a6a2003410c6a20086a200710ab051a2000280200220928020822062005490d08200620056b220a200741ff01712206490d09200a20066b22072007200928020020056a6a200610de042000280200220628020822072005417f6a22054d0d0a200628020020056a41bb7f20086b3a0000024002402000280200220641046a2802002200200641086a28020022076b2002490d00200628020021000c010b200720026a22052007490d0d200041017422072005200720054b1b22054100480d0d0240024020000d002005102d21000c010b200628020020002005102f21000b2000450d0c20062000360200200641046a2005360200200641086a28020021070b200020076a2100200121050340200020052d00003a0000200041016a2100200541016a21052002417f6a22020d000b200641086a2004200720016b6a3602000b200341106a24000f0b200141011033000b200941011033000b200941011033000b200541011033000b200141011033000b200841011033000b200a41011033000b20052006107b000b41c29cc400412141b4b1c40010a401000b41f49cc40020052007104b000b200541011033000b1034000bf70201067f230041d0036b22022400024002400240418002102d2203450d00418008102d2204450d0120024188026a2205428008370300200241003a0090022002200436028402200242103702fc01200220033602f8012001200241f8016a4100108b032002280280020d022002418c026a2802002103200528020021042002280284022101024020022802fc01450d0020022802f80110310b200241186a22054200370300200241106a22064200370300200241086a2207420037030020024200370300200241206a410041cc0110aa051a200241013b01f00120024188013602ec01200241206a20012003108f03200241f8016a200241206a41d80110ab051a200241f8016a2002412010900302402004450d00200110310b20002002290300370000200041186a2005290300370000200041106a2006290300370000200041086a2007290300370000200241d0036a24000f0b41800241041033000b41800841011033000b41b79bc400410e41c89bc40010a401000ba00301077f0240024020002d00d1010d0020002802c80121030c010b41002103200041003a00d1012000109a04200041003602c8010b20002802cc0120036b210441002105200221060240024002400240024002400340200220056b2107200120056a21080240200620044f0d00200341c9014f0d0241c80120036b22042006490d0320072006490d0402402006450d00200020036a2107200621040340200720072d000020082d0000733a0000200741016a2107200841016a21082004417f6a22040d000b0b2000200620036a3602c8010f0b200341c9014f0d0441c80120036b22092004490d0520072004490d0602402004450d00200020036a2103200421070340200320032d000020082d0000733a0000200341016a2103200841016a21082007417f6a22070d000b0b2000109a04200620046b2106200420056a210520002802cc01210441002103200520024d0d000b20052002107b000b200341c801107b000b2006200410b601000b41badcc400412841e4dcc40010a401000b200341c801107b000b2004200910b601000b41badcc400412841e4dcc40010a401000beb0301087f230041e0016b22032400200341086a200041d80110ab051a0240024002400240024002400240024002400240024020032d00d901450d00200341086a210420032802d00121050c010b200341013a00d90120032802d001220041c9014f0d01200041c801460d0220032802d4012106200341086a20006a220020002d000020032d00d801733a00002006417f6a220041c9014f0d03200041c801460d04200341086a20006a220020002d0000418001733a0000200341086a109a0441002105200341003602d001200341086a21040b20032802d40120056b2100410021062002210702400340200220066b2108200120066a21090240200720004f0d00200541c9014f0d0741c80120056b22002007490d08200820074f0d022007200810b601000b200541c9014f0d0841c80120056b220a2000490d0920082000490d0a2009200341086a20056a200010ab051a2004109a04200720006b2107200020066a21064100210520032802d4012100200620024d0d000b20062002107b000b2009200341086a20056a200710ab051a200341e0016a24000f0b200041c801107b000b4101410010b601000b200041c801107b000b4101410010b601000b200541c801107b000b2007200010b601000b200541c801107b000b2000200a10b601000b2000200810b601000b910401067f230041f0036b22022400200241086a2203200141c5046a290000370300200241106a2204200141cd046a290000370300200241186a2205200141d5046a2900003703002002200141bd046a2900003703000240024002400240024020012d00bc044101460d00418002102d2203450d02418008102d2204450d03200241a8026a2205428008370300200241003a00b002200220043602a4022002421037029c022002200336029802200120024198026a4100108b0320022802a0020d04200241ac026a28020021032005280200210420022802a40221010240200228029c02450d0020022802980210310b200241206a41186a22054200370300200241206a41106a22064200370300200241206a41086a2207420037030020024200370320200241c0006a410041cc0110aa051a200241013b019002200241880136028c02200241c0006a20012003108f0320024198026a200241c0006a41d80110ab051a20024198026a200241206a412010900302402004450d00200110310b20002002290320370000200041186a2005290300370000200041106a2006290300370000200041086a20072903003700000c010b20002002290300370000200041186a2005290300370000200041106a2004290300370000200041086a20032903003700000b200241f0036a24000f0b41800241041033000b41800841011033000b41b79bc400410e41c89bc40010a401000bf70201067f230041d0036b22022400024002400240418002102d2203450d00418008102d2204450d0120024188026a2205428008370300200241003a0090022002200436028402200242103702fc01200220033602f8012001200241f8016a4101108b032002280280020d022002418c026a2802002103200528020021042002280284022101024020022802fc01450d0020022802f80110310b200241186a22054200370300200241106a22064200370300200241086a2207420037030020024200370300200241206a410041cc0110aa051a200241013b01f00120024188013602ec01200241206a20012003108f03200241f8016a200241206a41d80110ab051a200241f8016a2002412010900302402004450d00200110310b20002002290300370000200041186a2005290300370000200041106a2006290300370000200041086a2007290300370000200241d0036a24000f0b41800241041033000b41800841011033000b41b79bc400410e41c89bc40010a401000bc60201037f230041106b2202240002400240200028020022002903004201510d002002200128021841b1e3c30041042001411c6a28020028020c11030022003a000820022001360200200241003a0009200241003602040c010b2002200128021841b5e3c30041042001411c6a28020028020c1103003a000820022001360200200241003a0009200241003602042002200041086a36020c20022002410c6a419ca1c20010f102210120022d0008210020022802042203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d00410121002004280218419fcac30041012004411c6a28020028020c1103000d010b200128020022002802184180e1c40041012000411c6a28020028020c11030021000b200120003a00080b200241106a2400200041ff01714100470bd01102077f027e230041106b22022400200241003602082002420137030041042002106f0240024002400240024002400240024002400240024002400240024002400240024020022802042203200228020822046b4104490d00200441046a2105200228020021030c010b200441046a22052004490d0f200341017422062005200620054b1b22064100480d0f0240024020030d002006102d21030c010b200228020020032006102f21030b2003450d0120022006360204200220033602000b20022005360208200320046a41eede91ab06360000410d2002106f0240024020022802042203200228020822066b410d490d002006410d6a2104200228020021050c010b2006410d6a22042006490d0f200341017422052004200520044b1b22074100480d0f0240024020030d002007102d21050c010b200228020020032007102f21050b2005450d022002200736020420022005360200200721030b20022004360208200520066a220641002900a9f243370000200641056a41002900aef2433700000240200320046b41034b0d00200441046a22062004490d0f200341017422072006200720064b1b22064100480d0f0240024020030d002006102d21050c010b200520032006102f21050b2005450d0320022006360204200220053602000b2002200441046a360208200520046a41033600000240024020022802042205200228020822046b4104490d00200228020021050c010b200441046a22032004490d0f200541017422062003200620034b1b22034100480d0f0240024020050d002003102d21050c010b200228020020052003102f21050b2005450d0420022003360204200220053602000b2002200441046a360208200520046a41d3003600000240024020022802042205200228020822046b4104490d00200228020021050c010b200441046a22032004490d0f200541017422062003200620034b1b22034100480d0f0240024020050d002003102d21050c010b200228020020052003102f21050b2005450d0520022003360204200220053602000b2002200441046a360208200520046a41d300360000410b2002106f41b8f2c3002104034020042d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102d21030c010b200228020020052007102f21030b2003450d0720022007360204200220033602000b2002200541016a360208200320056a20063a0000200441016a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102d21030c010b200228020020052007102f21030b2003450d0820022007360204200220033602000b2002200541016a360208200320056a20063a0000200441026a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102d21030c010b200228020020052007102f21030b2003450d0920022007360204200220033602000b2002200541016a360208200320056a20063a0000200441036a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102d21030c010b200228020020052007102f21030b2003450d0a20022007360204200220033602000b2002200541016a360208200320056a20063a0000200441046a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102d21030c010b200228020020052007102f21030b2003450d0b20022007360204200220033602000b2002200541016a360208200320056a20063a0000200441056a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102d21030c010b200228020020052007102f21030b2003450d0c20022007360204200220033602000b2002200541016a360208200320056a20063a0000200441066a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102d21030c010b200228020020052007102f21030b2003450d0d20022007360204200220033602000b2002200541016a360208200320056a20063a0000200441076a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102d21030c010b200228020020052007102f21030b2003450d0e20022007360204200220033602000b2002200541016a360208200320056a20063a0000200441086a28020021060240024020022802042203200228020822056b4104490d00200228020021030c010b200541046a22072005490d10200341017422082007200820074b1b22074100480d100240024020030d002007102d21030c010b200228020020032007102f21030b2003450d0f20022007360204200220033602000b2002200541046a360208200320056a20063600002004410c6a220441bcf3c300470d000b200235020821092002350200210a200241106a2400200a2009422086840f0b200641011033000b200741011033000b200641011033000b200341011033000b200341011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b200741011033000b1034000bec1705037f017e047f037e017f230041d0156b22022400024002402001450d00200220003602080c010b200241013602080b2002200136020c200241c00f6a200241086a102a0240024020022802c40f450d00200241106a200241c00f6a41fc0010ab051a20024190016a200241106a41fc0010ab051a20024190016a10960302402002280290012201450d00200241c00f6a2001417f6a109703200241c00f6a200241a0016a412010ad050d000240024020024188026a28020022030d004100210341042104410021010c010b024002402003ad420c7e2205422088a70d002005a722014100480d0020022802800221002001102d22040d01200141041033000b1034000b20034190066c210620034104742107200421010340200220003602a008200241c00f6a200241a0086a10ab01200141086a200241c00f6a41086a280200360200200120022903c00f3702002001410c6a210120004190066a2100200641f0796a22060d000b200741706a41047641016a21010b200220013602a808200220033602a408200220043602a008200241c00f6a200241a0086a1098030240200241e0016a2201200241c00f6a412010ad05450d0041e5a0c400ad4280808080e0018410072001ad42808080808004841012200241c00f6aad428080808080048410120b02402001200241c00f6a412010ad050d0020024184026a28020021082002280280022107200228028802210620024190026a20024190016a41f00010ab051a200720064190066c6a2100200228029002210920072101024002402006450d00200241a0086a41f0006a210441d1c3c400ad4280808080d00184210a2007210102400340200241d80e6a200141e80010ab051a200141e8006a290300210520024180036a200141f0006a41a00510ab051a20054203510d01200241a0086a200241d80e6a41e80010ab051a2002200537038809200420024180036a41a00510ab051a2002200241a0086a3602b00e200241c00f6a200241b00e6a10ab0120022802c80f2106024020022802c40f450d0020022802c00f10310b200241c00f6a200241a0086a41900610ab051a200241003602c00e200241b00e6a200241c00f6a2006200241c00e6a10990320022d00b00e4101460d03024020022d00bc0e22064102460d0020023100be0e210520023100bd0e210b20023502b80e210c20022802b40e2103200a100702402006450d00200b10130b200510132003450d00200c4220862003ad8410070b20014190066a22012000470d000b200021010c010b20014190066a21010b20012000460d04200241d8106a2106200241c00f6a41f0006a2103034020024180036a200141e80010ab051a200141e8006a2903002105200241c00f6a200141f0006a41a00510ab051a20054203510d05200241d80e6a20024180036a41e80010ab051a200241a0086a200241c00f6a41a00510ab051a200241c00f6a200241d80e6a41e80010ab051a200220053703a8102003200241a0086a41a00510ab051a2006103020014190066a22012000470d000c050b0b200220022f00b10e20022d00b30e41107472109a0320022802002002280204419cdec40010a401000b41faf0c3004124419cdec40010a401000b41def0c300411c419cdec40010a401000b2002418c036a4102360200200241b4086a4102360200200242023702a408200241c8a2c2003602a0082002410236028403200241c0a2c200360280032002410036029401200241f0eac40036029001200220024180036a3602b008200220024190016a36028803200241a0086a41d8a2c20010b301000b02402008450d00200710310b109b03200910a602200241c00f6a109c03200220024190026a410c6a28020022073602d00e20022802940221032002200241c00f6a410c6a28020022013602d40e024020072001470d0002402007450d0020022802c40f21044100210641b6d2c300ad4280808080c0028421050340024002400240024002400240024002400240200320066a22012d00002208200420066a22002d0000470d000240024002400240024020080e050001020304000b20032004460d0c200141016a200041016a412010ad050d040c070b024020032004460d00200141016a280000200041016a280000470d040b200141106a2802002208200041106a280200470d03200141086a2802002209200041086a280200220d460d092009200d200810ad050d030c090b024020032004460d00200141016a280000200041016a280000470d030b200141106a2802002208200041106a280200470d02200141086a2802002209200041086a280200220d460d072009200d200810ad050d020c070b024020032004460d00200141016a280000200041016a280000470d020b200141106a2802002208200041106a280200470d01200141086a2802002209200041086a280200220d460d052009200d200810ad050d010c050b2001410c6a28020022082000410c6a280200470d00200141046a2802002209200041046a280200220d460d012009200d200810ad05450d010b20051007200241a0086a200110ba0220023502a80842208620022802a0082208ad841012024020022802a408450d00200810310b200241a0086a200010ba0220023502a80842208620022802a0082208ad841012024020022802a408450d00200810310b20012d000020002d00002208470d0620080e050105040300010b2001410c6a28020022082000410c6a280200470d05200141046a2802002201200041046a2802002200460d0620012000200810ad05450d060c050b20032004460d050b200141016a200041016a412010ad050d030c040b024020032004460d00200141016a280000200041016a280000470d030b200141106a2802002208200041106a280200470d02200141086a2802002201200041086a2802002200460d0320012000200810ad050d020c030b024020032004460d00200141016a280000200041016a280000470d020b200141106a2802002208200041106a280200470d01200141086a2802002201200041086a2802002200460d0220012000200810ad050d010c020b024020032004460d00200141016a280000200041016a280000470d010b200141106a2802002208200041106a280200470d00200141086a2802002201200041086a2802002200460d0120012000200810ad05450d010b41a8f1c3004127419cdec40010a401000b200641246a21062007417f6a22070d000b0b024020024190026a41306a2201200241c00f6a41306a2200412010ad05450d0041e5a0c400ad4280808080e0018410072001ad428080808080048410122000ad428080808080048410120b024020012000412010ad05450d0041cff1c3004128419cdec40010a401000b024020022802cc0f2200450d0020022802c40f2101200041246c210003400240024020012d0000220641034b0d0002400240024020060e0404000102040b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012000415c6a22000d000b0b0240200241c80f6a280200450d0020022802c40f10310b0240200228029c022200450d002002280294022101200041246c210003400240024020012d0000220641034b0d0002400240024020060e0404000102040b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012000415c6a22000d000b0b024020024198026a280200450d0020022802940210310b200241d0156a240042010f0b20024180036a41146a410336020020024180036a410c6a4104360200200241d80e6a41146a4103360200200242033702dc0e20024180ecc4003602d80e20024104360284032002200241d00e6a3602c00e2002200241d40e6a3602b00e200242043703b008200242013702a408200241a0f1c3003602a008200220024180036a3602e80e2002200241a0086a360290032002200241b00e6a360288032002200241c00e6a36028003200241d80e6a41dc94c40010b301000b9023030c7f037e037f230041b0016b2201240002400240024002400240024002400240024002400240024002400240024002402000410c6a28020041246c22020d004104210341002104410021050c010b200028020421064104210341002104410021050340024020062d00004101470d00200641106a2802002207417f4c0d03200641016a28000021080240024020070d00410121090c010b200641086a280200210a2007102d2209450d052009200a200710ab051a0b200141e0006a41086a220b20014188016a41086a2902003703002001200129028801370360024020042005470d00200441016a220a2004490d0e2004410174220c200a200c200a4b1b2205ad42247e220d422088a70d0e200da7220a4100480d0e0240024020040d00200a102d21030c010b2003200441246c200a102f21030b2003450d060b2003200441246c6a220a2007360210200a200736020c200a2009360208200a2008360001200a41013a0000200a2001290360370214200a411c6a200b290300370200200441016a21040b200641246a21062002415c6a22020d000b0b20014100360260418ea7c200ad4280808080800284200141e0006aad220e4280808080c00084220f100320014188016a41086a220641afa7c200ad4280808080d001841001220a41086a2900003703002001200a29000037038801200a1031200141086a2207200629030037030020012001290388013703002001200028020022103602602001ad4280808080800284220d200f1003200641d1a7c200ad4280808080d001841001220a41086a2900003703002001200a29000037038801200a103120072006290300370300200120012903880137030020014100360290012001420137038801200420014188016a106f0240024020040d00200128029001210a200128028c01210820012802880121020c010b2003200441246c6a2111200128028c0121082001280290012106200321070340200141e0006a200710ba022001280260210b02400240200820066b20012802682209490d00200620096a210a20012802880121020c010b200620096a220a2006490d0d20084101742202200a2002200a4b1b220c4100480d0d0240024020080d00200c102d21020c010b2001280288012008200c102f21020b2002450d062001200c36028c012001200236028801200c21080b200741246a21072001200a36029001200220066a200b200910ab051a02402001280264450d00200b10310b200a210620112007470d000b0b200041106a2107200d200aad4220862002ad84100302402008450d00200210310b20014188016a41086a220a419ea7c200ad42808080809002841001220641086a290000370300200120062900003703880120061031200141086a200a290300370300200120012903880137030020012001360260200141103602642007200141e0006a10ae024110102d2206450d04200641086a41002900e6a742370000200641002900dea742370000200641104120102f220a450d05200a2010417f6a360010200141306a41186a2202200aad4280808080c002841000220641186a290000370300200141306a41106a2209200641106a290000370300200141306a41086a2208200641086a2900003703002001200629000037033020061031200141106a41186a22112002290300370300200141106a41106a22102009290300370300200141106a41086a2212200829030037030020012001290330370310200a1031200141203602642001200141106a3602602007200141e0006a10ae0220014188016a41086a220641bca7c200ad4280808080d002841001220a41086a2900003703002001200a29000037038801200a1031200141086a220b200629030037030020012001290388013703002001411036026420012001360260200041d0006a200141e0006a10ae0220064181a8c200ad4280808080d001841001220a41086a2900003703002001200a29000037038801200a1031200b20062903003703002001200129038801370300200d1009200641c2c6c400ad42808080809002841001220a41086a2900003703002001200a29000037038801200a1031200b20062903003703002001200129038801370300200d10094112102d220a450d064100210c200a41106a41002f009ea8423b0000200a41086a4100290096a842370000200a410029008ea8423700002002200aad4280808080a002841000220741186a2900003703002009200741106a2900003703002008200741086a290000370300200120072900003703302007103120112002290300370300201020092903003703002012200829030037030020012001290330370310200a1031200141106aad4280808080800484101b200028020021092006419ea7c200ad42808080809002841001220a41086a2900003703002001200a29000037038801200a1031200b20062903003703002001200129038801370300200141d0006a200d100210410240024002400240024020012802502207450d00200141d8006a280200210220012802542108200141003a008001410021060340200141003a003020022006460d02200141e0006a20066a200720066a2d00003a00002001200641016a220a3a008001200a2106200a4120470d000b200141306a41186a2206200141e0006a41186a290300370300200141306a41106a2202200141e0006a41106a290300370300200141306a41086a220b200141e0006a41086a29030037030020012001290360370330200a41ff01714120490d02200141106a41086a200b290300370300200141106a41106a2002290300370300200141106a41186a20062903003703002001200129033037031002402008450d00200710310b20014188016a41186a200141106a41186a29030037030020014188016a41106a200141106a41106a29030037030020014188016a41086a200141106a41086a29030037030020012001290310370388014101210c0b200141e0006a41186a220620014188016a41186a290300370300200141e0006a41106a220a20014188016a41106a290300370300200141e0006a41086a220720014188016a41086a2903003703002001200129038801370360200c0d02200141306a41186a4200370300200141306a41106a4200370300200141306a41086a4200370300200142003703300c030b200641ff0171450d00200141003a0080010b41e9bcc0004133200141a8016a419cbdc0001038000b200141306a41186a2006290300370300200141306a41106a200a290300370300200141306a41086a2007290300370300200120012903603703300b20014188016a41086a220a41e6a7c100ad4280808080f004841001220641086a290000370300200120062900003703880120061031200141e0006a41086a200a2903003703002001200129038801370360200141106a200e4280808080800284220f1002104102400240024020012802102206450d002001280214210a2001200141106a41086a2802003602042001200636020020014188016a20011089012001280288012207450d0a200129028c01210e0240200a450d00200610310b200e422088a7220641d100490d01200141e0006a41186a220a200141306a41186a290300370300200141e0006a41106a2202200141306a41106a290300370300200141e0006a41086a2208200141306a41086a290300370300200120012903303703602009417f6a41d10070220b20064f0d0b2007200b4105746a22062001290360370000200641186a200a290300370000200641106a2002290300370000200641086a20082903003700000c020b4200210e41012107410021060b200141e0006a41186a220a200141306a41186a290300370300200141e0006a41106a2202200141306a41106a290300370300200141e0006a41086a2208200141306a41086a2903003703002001200129033037036002402006200ea7470d002006200e422088a7470d002006410174220b200641016a220c200b200c4b1b220b410574220c4100480d0c0240024020060d00200c102d21070c010b20072006410574200c102f21070b2007450d0b200e42808080807083200bad84210e0b2007200e422088a74105746a22062001290360370000200641186a200a290300370000200641106a2002290300370000200641086a2008290300370000200e4280808080107c210e0b20014188016a41086a220a41e6a7c100ad4280808080f004841001220641086a290000370300200120062900003703880120061031200141e0006a41086a200a29030037030020012001290388013703600240024020070d00200f10090c010b20014100360290012001420137038801200e422088a7220620014188016a106f02402006450d002006410574210a200721060340200120014188016a3602102006200141106a103e200641206a2106200a41606a220a0d000b0b200128028c012106200f200135029001422086200128028801220aad84100302402006450d00200a10310b200ea7450d00200710310b1069024020094105490d0020014188016a41086a220a4185c8c200ad42808080809002841001220641086a290000370300200120062900003703880120061031200141086a200a290300370300200120012903880137030020014188016a200d10021041024002402001280288012206450d00200128028c0121072001200a28020036023420012006360230200141e0006a200141306a10860120012802602208450d0e2001290264210e2007450d01200610310c010b410421084200210e0b02400240200e422088a7220b41c4006c22060d004100210a0c010b2009417b6a2102200820066a21074100210a2008210602400340024020062d00004101460d00200641046a28020020024f0d020b200a41016a210a2007200641c4006a2206470d000b0b200a200b4b0d0e0b200e42ffffffff0f83210e0240200b200a6b2206450d000240200a450d0020082008200a41c4006c6a200641c4006c10ac051a0b2006ad422086200e84210e0b20014188016a41086a220a4185c8c200ad42808080809002841001220641086a290000370300200120062900003703880120061031200141086a200a2903003703002001200129038801370300200141e0006a2008200e422088a710cd03200d20013502684220862001280260220aad841003200ea7210602402001280264450d00200a10310b2006450d00200810310b20014188016a41086a220a41eca7c400ad4280808080f002841001220641086a290000370300200120062900003703880120061031200141086a200a2903003703002001200129038801370300200141003a0030200d200141306aad42808080801084100320014188016a1066200141306a41186a220720014188016a41186a2202290300370300200141306a41106a220820014188016a41106a220b290300370300200141306a41086a220c200a29030037030020012001290388013703304124102d2206450d0d2006200129033037000020064114360220200641186a2007290300370000200641106a2008290300370000200641086a200c290300370000200142818080801037026420012006360260200141e0006a10c402200141e0006a41186a2002290300370300200141e0006a41106a200b290300370300200141e0006a41086a200a2903003703002001200129038801370360200141e0006a10d203200910dc0302402004450d00200441246c210a2003210603400240024020062d0000220741034b0d0002400240024020070e0404000102040b2006410c6a280200450d03200641086a28020010310c030b2006410c6a280200450d02200641086a28020010310c020b2006410c6a280200450d01200641086a28020010310c010b200641086a280200450d00200641046a28020010310b200641246a2106200a415c6a220a0d000b0b02402005450d00200310310b200141b0016a24000f0b1032000b200741011033000b200a41041033000b200c41011033000b411041011033000b412041011033000b411241011033000b41e9bcc0004133200141a8016a419cbdc0001038000b41f49cc400200b2006104b000b200c41011033000b1034000b41e9bcc0004133200141a8016a419cbdc0001038000b41cfe9c300411c419cdec40010a401000b412441041033000bda0601087f230041c0016b22022400024002404110102d2203450d0041002104200341086a41002900e6a742370000200341002900dea742370000200341104120102f2205450d0120052001360010200241f8006a41186a22062005ad4280808080c002841000220341186a290000370300200241f8006a41106a2207200341106a290000370300200241f8006a41086a2201200341086a2900003703002002200329000037037820031031200241086a41186a2006290300370300200241086a41106a2007290300370300200241086a41086a20012903003703002002200229037837030820051031200241286a200241086aad4280808080800484100210410240024002400240024020022802282201450d00200241306a2802002104200228022c210841002103200241003a00b801034020042003460d0220024198016a20036a200120036a2d00003a00002002200341016a22053a00b8012005210320054120470d000b200241f8006a41186a220320024198016a41186a290300370300200241f8006a41106a220420024198016a41106a290300370300200241f8006a41086a220920024198016a41086a2903003703002002200229039801370378200541ff01714120490d02200241386a41086a2009290300370300200241386a41106a2004290300370300200241386a41186a20032903003703002002200229037837033802402008450d00200110310b200241f8006a41186a200241386a41186a290300370300200241f8006a41106a200241386a41106a290300370300200241f8006a41086a200241386a41086a29030037030020022002290338370378410121040b20024198016a41186a200629030037030020024198016a41106a200729030037030020024198016a41086a2203200241f8006a41086a290300370300200220022903783703980120040d0220004200370000200041186a4200370000200041106a4200370000200041086a42003700000c030b200341ff0171450d00200241003a00b8010b41e9bcc000413320024198016a419cbdc0001038000b2000200229039801370000200041186a20024198016a41186a290300370000200041106a20024198016a41106a290300370000200041086a20032903003700000b200241c0016a24000f0b411041011033000b412041011033000b8804010b7f230041206b220224002001280200210320012802082104200241003602082002420137030020042002106f024002400240024020040d002002280208210520022802042106200228020021070c010b20032004410c6c6a21082003210903402009280200210a200941086a280200220b2002106f02400240200228020422062002280208220c6b200b490d00200228020021070c010b200c200b6a2207200c490d04200641017422052007200520074b1b22054100480d040240024020060d002005102d21070c010b200228020020062005102f21070b2007450d032002200536020420022007360200200521060b2002200c200b6a22053602082007200c6a200a200b10ab051a2009410c6a22092008470d000b0b200241186a22092005ad4220862007ad84101f220b41186a290000370300200241106a220c200b41106a290000370300200241086a220a200b41086a2900003703002002200b290000370300200b1031200041186a2009290300370000200041106a200c290300370000200041086a200a2903003700002000200229030037000002402006450d00200710310b02402004450d002004410c6c21092003210b03400240200b41046a280200450d00200b28020010310b200b410c6a210b200941746a22090d000b0b0240200141046a280200450d00200310310b200241206a24000f0b200541011033000b1034000bed1f04097f067e017f017e230041d0126b22042400200441a80b6a200141900610ab051a200441d8056a200441a80b6a10ac0341012105024002400240024002400240024020042d00d8054101470d00200020042f00d9053b0001200041013a0000200041036a20042d00db053a000020032802002106410021010c010b200441106a200441d8056a41086a41c80510ab051a024002400240024002400240024002400240024002400240024020032802002206450d00200341086a280200210720032802042108200441a80b6a418ea7c200ad4280808080800284100210410240024020042802a80b22010d00410021090c010b200441b00b6a2802004104490d022001280000210920042802ac0b450d00200110310b4114102d2201450d0241002105200141106a41002800bec644360000200141086a41002900b6c644370000200141002900aec644370000200141144128102f220a450d03200a2009360014200441d8056a41186a2209200aad42808080808003841000220141186a290000370300200441d8056a41106a220b200141106a290000370300200441d8056a41086a220c200141086a290000370300200420012900003703d8052001103120044190126a41186a200929030037030020044190126a41106a200b29030037030020044190126a41086a200c290300370300200420042903d80537039012200a1031200441203602ac0b200420044190126a3602a80b20062007200441a80b6a1094022008450d00200610310b200441086a200441106a41d0006a10ad032004280208210820042d000c2109200441a80b6a200441106a41c80510ab051a0240024020042903c80b220d4202520d004100210820042802f80b4109460d010c100b200441e8116a41186a200441a80b6a41186a290300370300200441e8116a41106a200441a80b6a41106a290300370300200441e8116a41086a200441a80b6a41086a290300370300200420042903a80b3703e811200441e80b6a290300210e200441e00b6a290300210f200441f00b6a280200210720042903d00b2110200441d8056a41086a220a41afa7c200ad4280808080d001841001220141086a290000370300200420012900003703d8052001103120044190126a41086a200a290300370300200420042903d80537039012200441d8056a20044190126aad22114280808080800284221210021041024020042802d8052201450d00200a28020041034d0d0520042802dc05450d00200110310b0240200d4201520d0020104200510d060b4113102d2201450d064100210a200141002900eea7423700002001410f6a41002800fda742360000200141086a41002900f6a74237000020044293808080b0023702cc11200420013602c811200441e8116a200441c8116a1046200441d8056a41186a220b20043502d01142208620043502c811841000220141186a290000370300200441d8056a41106a220c200141106a290000370300200441d8056a41086a2213200141086a290000370300200420012900003703d8052001103120044190126a41186a200b29030037030020044190126a41106a200c29030037030020044190126a41086a2013290300370300200420042903d80537039012024020042802cc11450d0020042802c81110310b200441d8056a20114280808080800484220d10021041024020042802d8052201450d00200441e0056a2802004104490d082001280000210a20042802dc05450d00200110310b0240200a2007470d004113102d2201450d0920094101712109200741016a210a200141002900eea7423700002001410f6a41002800fda742360000200141086a41002900f6a74237000020044293808080b0023702cc11200420013602c811200441e8116a200441c8116a1046200441d8056a41186a220720043502d01142208620043502c811841000220141186a290000370300200441d8056a41106a220b200141106a290000370300200441d8056a41086a220c200141086a290000370300200420012900003703d8052001103120044190126a41186a200729030037030020044190126a41106a200b29030037030020044190126a41086a200c290300370300200420042903d80537039012024020042802cc11450d0020042802c81110310b2004200a3602d805200d200441d8056aad22144280808080c0008422101003200441d8056a2009200210af03024020042903d805220da741ff01714101460d00200441d8056a41086a220a4197c6c400ad4280808080f002841001220141086a290000370300200420012900003703d8052001103120044190126a41086a2207200a290300370300200420042903d805370390122004200d4220883e02d80520114280808080800284220d20101003200a41fdc5c400ad4280808080a003841001220141086a290000370300200420012900003703d805200110312007200a290300370300200420042903d80537039012200441d8056a2012100210414100210141002107024020042802d805220b450d00200a2802004104490d0c200b280000210720042802dc05450d00200b10310b4106210a417f2007418094ebdc034180afd0e50220091b220b2008200b2008491b6a220c200c2007491b2207200b4b0d0d200441d8056a41086a220a41fdc5c400ad4280808080a003841001220141086a290000370300200420012900003703d8052001103120044190126a41086a200a290300370300200420042903d80537039012200420073602d805200d20144280808080c0008410030c0c0b200d420888a7220141ff01714104460d0b200d421088a7210a0c0c0b41034102200a20074b1b210a410021010c0b0b200441d8056a200441fc0b6a10b003024020042d00d8054101460d0020044184066a280200210220044180066a280200210b200441fc056a2802002107200441f4056a280200210c200441f0056a28020021090240200441f8056a2802002201450d002001410c6c210a2009210103400240200141046a280200450d00200128020010310b2001410c6a2101200a41746a220a0d000b0b0240200c450d00200910310b02402002450d002002410c6c210a2007210103400240200141046a280200450d00200128020010310b2001410c6a2101200a41746a220a0d000b0b200b450d0f200710310c0f0b20042f01da05210a024020042d00d9052202417e6a220141024b0d0020010e030f000f0f0b200a41087420027221010c0b0b41e9bcc0004133200441c8116a419cbdc0001038000b411441011033000b412841011033000b41e9bcc0004133200441c8116a419cbdc0001038000b41a0a5c400411941bca5c40010a401000b411341011033000b41e9bcc0004133200441c8116a419cbdc0001038000b411341011033000b41e9bcc0004133200441c8116a419cbdc0001038000b200441d8056a200f200e200441e8116a20082009200210630240024020042d00d8054101460d0020044184066a280200210220044180066a2802002109200441fc056a2802002107200441f4056a280200210b200441f0056a28020021080240200441f8056a2802002201450d002001410c6c210a2008210103400240200141046a280200450d00200128020010310b2001410c6a2101200a41746a220a0d000b0b0240200b450d00200810310b02402002450d002002410c6c210a2007210103400240200141046a280200450d00200128020010310b2001410c6a2101200a41746a220a0d000b0b2009450d01200710310c010b20042f01da05210a20042d00d9052201417e6a220241024b0d0120020e03000100000b200441d8056a200441a80b6a41d0006a10f201024020042d00d8054101460d0020044184066a280200210220044180066a2802002109200441fc056a2802002107200441f4056a280200210b200441f0056a28020021080240200441f8056a2802002201450d002001410c6c210a2008210103400240200141046a280200450d00200128020010310b2001410c6a2101200a41746a220a0d000b0b0240200b450d00200810310b02402002450d002002410c6c210a2007210103400240200141046a280200450d00200128020010310b2001410c6a2101200a41746a220a0d000b0b2009450d04200710310c040b20042f01da05210a20042d00d9052201417e6a220241024b0d0020020e03030003030b200a410874200141ff01717221010b200441f80b6a10d601200441c0116a41026a200441c4116a41026a2d00003a0000200420042f01c4113b01c011200041036a20014110763a0000200020013b0001200041013a000020054521010b20010d032006450d03200341046a2802000d020c030b200441b0126a41186a200441e8116a41186a290300370300200441b0126a41106a200441e8116a41106a290300370300200441b0126a41086a200441e8116a41086a290300370300200420042903e8113703b012410121080b200441c8116a41186a2201200441b0126a41186a220a290300370300200441c8116a41106a2209200441b0126a41106a2202290300370300200441c8116a41086a220b200441b0126a41086a2207290300370300200420042903b0123703c811200441d8056a200441f80b6a41f80410ab051a200a2001290300370300200220092903003703002007200b290300370300200420042903c8113703b0124102210102402008450d0020044190126a41186a200a29030037030020044190126a41106a200229030037030020044190126a41086a2007290300370300200420042903b01237039012410121010b200441f1116a20044190126a41086a290300370000200441f9116a20044190126a41106a29030037000020044181126a20044190126a41186a290300370000200420013a00e81120042004290390123700e911200441b0126a200441d8056a200441e8116a108e02200441d8056a41026a200441bb126a2d00003a0000200420042f00b9123b01d80520042903b012210d024020042d00b81222014102460d00200441e8116a41026a200441d8056a41026a2d00003a0000200420042f01d8053b01e8110b200441bc116a41026a220a200441e8116a41026a2d00003a0000200420042f01e8113b01bc11024020014102460d00200441d8056a41026a200a2d00003a0000200420042f01bc113b01d8050b200441b40b6a20013a0000200441b50b6a20042f01d8053b0000200441b70b6a200441d8056a41026a2d00003a00002004200d3702ac0b200441003a00a80b4101210a41014100200441a80b6a1045200441a80b6a418ea7c200ad428080808080028410021041024020042802a80b2202450d00200441b00b6a2802004104490d032002280000210a024020042802ac0b450d00200210310b200a41016a210a0b2004200a3602a80b418ea7c200ad4280808080800284200441a80b6aad4280808080c0008410032000410c6a20013a0000200041046a200d3702002000410d6a20042f01bc113b00002000410f6a200441be116a2d00003a0000200041003a00002006450d012005450d01200341046a280200450d010b200610310b200441d0126a24000f0b41e9bcc0004133200441c8116a419cbdc0001038000ba60201037f412e210241a3a1c40021030240024002402001417e6a22044102200441ff01714102491b41ff01710e03020001020b4130210241f3a0c40021030c010b20014180feff07714108762104024020014101710d00411f210241d1a1c40021030240024002400240024002400240200441ff01710e080006010203040508000b4120210241d7a3c40021030c070b4127210241f7a2c40021030c060b4117210241e0a2c40021030c050b41c1a2c40021030c040b41262102419ba2c40021030c030b412b210241f0a1c40021030c020b41392102419ea3c40021030c010b411f210241f7a3c400210302400240200441ff01710e03000102000b41c100210241d7a4c40021030c010b41c10021024196a4c40021030b20002002360204200020033602000bfd0101057f230041206b22002400200041106a418ea7c200ad4280808080800284100210410240024020002802102201450d000240200041186a2802004104490d002001280000210202402000280214450d00200110310b418ea7c200ad42808080808002841009410121030c020b41e9bcc00041332000419cbdc0001038000b410021030b200041106a41086a220441e8c5c400ad4280808080d002841001220141086a2900003703002000200129000037031020011031200041086a20042903003703002000200029031037030020002002410020031b3602102000ad4280808080800284200041106aad4280808080c000841003200041206a24000bc01906037f017e057f037e027f017e230041e0016b22012400200141b0016a41086a220241e8c5c400ad4280808080d002841001220341086a290000370300200120032900003703b00120031031200141c0006a41086a22032002290300370300200120012903b001370340200141c0006aad428080808080028422041009200241fdc5c400ad4280808080a003841001220541086a290000370300200120052900003703b0012005103120032002290300370300200120012903b0013703402004100920024197c6c400ad4280808080f002841001220541086a290000370300200120052900003703b0012005103120032002290300370300200120012903b00137034020041009200241afa7c200ad4280808080d001841001220541086a290000370300200120052900003703b0012005103120032002290300370300200120012903b001370340200141b0016a2004100210410240024002400240024002400240024020012802b0012203450d0020022802004104490d0220032800002106024020012802b401450d00200310310b200410090c010b410021060b200141b0016a41086a2203419ea7c200ad42808080809002841001220241086a290000370300200120022900003703b00120021031200141c0006a41086a2003290300370300200120012903b001370340200141206a2004100210410240024020012802202205450d00200141206a41086a28020021072001280224210841002102200141003a00d00102400240034020072002460d01200141b0016a20026a200520026a2d00003a00002001200241016a22033a00d0012003210220034120470d000b200141f0006a41186a2202200141b0016a41186a290300370300200141f0006a41106a2207200141b0016a41106a290300370300200141f0006a41086a2209200141b0016a41086a290300370300200120012903b001370370200341ff01714120490d01200141d0006a41086a2009290300370300200141d0006a41106a2007290300370300200141d0006a41186a20022903003703002001200129037037035002402008450d00200510310b200141b0016a41186a2202200141d0006a41186a290300370300200141b0016a41106a2203200141d0006a41106a290300370300200141b0016a41086a2205200141d0006a41086a290300370300200120012903503703b0012004100920014190016a41186a2002290300220a37030020014190016a41106a2003290300220b37030020014190016a41086a2005290300220c370300200141086a200c370300200141106a200b370300200141186a200a370300200120012903b001220a370390012001200a37030020014190016a21080c030b200241ff0171450d00200141003a00d0010b41e9bcc0004133200141d8016a419cbdc0001038000b200141086a4200370300200141106a4200370300200141186a420037030020014190016a41186a200141b0016a41186a29030037030020014190016a41106a200141b0016a41106a29030037030020014190016a41086a200329030037030020014200370300200120012903b0013703900120014190016a21080b200141b0016a41086a220341d1a7c200ad4280808080d001841001220241086a290000370300200120022900003703b00120021031200141c0006a41086a2003290300370300200120012903b00137034020014190016a200410021041024002402001280290012202450d002001280294012103200120014190016a41086a28020036027420012002360270200141b0016a200141f0006a106b20012802b0012209450d0320012902b401210a02402003450d00200210310b200410090c010b410421094200210a0b200141b0016a41086a220341bca7c200ad4280808080d002841001220241086a290000370300200120022900003703b00120021031200141c0006a41086a2003290300370300200120012903b001370340200141206a2004100210410240024020012802202205450d00200141206a41086a28020021072001280224210d41002102200141003a00d00102400240034020072002460d01200141b0016a20026a200520026a2d00003a00002001200241016a22033a00d0012003210220034120470d000b200141f0006a41186a2202200141b0016a41186a290300370300200141f0006a41106a2207200141b0016a41106a290300370300200141f0006a41086a220e200141b0016a41086a290300370300200120012903b001370370200341ff01714120490d01200141d0006a41086a200e290300370300200141d0006a41106a2007290300370300200141d0006a41186a2002290300370300200120012903703703500240200d450d00200510310b200141b0016a41186a2202200141d0006a41186a290300370300200141b0016a41106a2203200141d0006a41106a290300370300200141b0016a41086a2205200141d0006a41086a290300370300200120012903503703b00120041009200841186a20022903002204370000200841106a2003290300220b370000200841086a2005290300220c370000200820012903b001220f370000200141206a41086a200c370300200141206a41106a200b370300200141206a41186a20043703002001200f3703200c030b200241ff0171450d00200141003a00d0010b41e9bcc0004133200141d8016a419cbdc0001038000b200820012903b001370000200141206a41086a4200370300200141206a41106a4200370300200141206a41186a4200370300200841186a200141b0016a41186a290300370000200841106a200141b0016a41106a290300370000200841086a2003290300370000200142003703200b0240200641fb01490d00200641857e6a2205450d004110102d2202450d03200241086a41002900e6a742370000200241002900dea742370000200241104120102f2203450d0420032005360010200141f0006a41186a22052003ad4280808080c002841000220241186a290000370300200141f0006a41106a2207200241106a290000370300200141f0006a41086a2208200241086a290000370300200120022900003703702002103120014190016a41186a200529030037030020014190016a41106a200729030037030020014190016a41086a200829030037030020012001290370370390012003103120014190016aad428080808080048410090b200141f0006a41186a22031019220241186a290000370300200141f0006a41106a2205200241106a290000370300200141f0006a41086a2207200241086a2900003703002001200229000037037020021031200141d0006a41086a2007290300370300200141d0006a41106a2005290300370300200141d0006a41186a200329030037030020012001290370220437039001200120043703502003200141186a2903003703002005200141106a2903003703002007200141086a29030037030020012001290300370370200141b0016a200141f0006a10cb03024020012d00b0014101470d0020014190016a41186a200141b0016a41196a290000220437030020014190016a41106a200141b0016a41116a290000220b37030020014190016a41086a200141b0016a41096a290000220c370300200120012900b101220f37039001200141b0016a41086a200c370300200141b0016a41106a200b370300200141b0016a41186a20043703002001200f3703b00102400240200a4220882204a72202200aa7460d00200a210b0c010b200241016a22032002490d072004a74101742205200320032005491bad220b42247e2204422088a70d072004a722034100480d070240024020020d002003102d21090c010b2009200241246c2003102f21090b2009450d06200a4220882204a721020b2009200241246c6a220241003a0000200220012903b001370001200241096a200141b8016a290300370000200241116a200141c0016a290300370000200241196a200141c8016a290300370000200220012f00703b0021200241236a200141f2006a2d00003a00002004422086200b42ffffffff0f83844280808080107c210a0b200020012903003700102000200636020020002001290350370030200041286a200141186a290300370000200041206a200141106a290300370000200041186a200141086a290300370000200041386a200141d0006a41086a290300370000200041c0006a200141d0006a41106a290300370000200041c8006a200141d0006a41186a290300370000200041086a200a37020020002009360204200041e8006a200141206a41186a290300370000200041e0006a200141206a41106a290300370000200041d8006a200141206a41086a29030037000020002001290320370050200141e0016a24000f0b41e9bcc0004133200141d8016a419cbdc0001038000b41e9bcc0004133200141d8016a419cbdc0001038000b411041011033000b412041011033000b200341041033000b1034000ba20301027f23004180026b22022400024002402001450d00200220003602000c010b200241013602000b20022001360204200241f8006a2002102b0240200228027c450d00200241086a200241f8006a41f00010ab051a200241086a1096030240200241086a410c6a2802002200450d00200228020c2101200041246c210003400240024020012d0000220341034b0d0002400240024020030e0404000102040b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012000415c6a22000d000b0b0240200241106a280200450d00200228020c10310b20024180026a240042010f0b200241f4016a41023602002002411c6a41023602002002420237020c200241c8a2c200360208200241023602ec01200241e4a3c2003602e801200241003602fc01200241f0eac4003602f8012002200241e8016a3602182002200241f8016a3602f001200241086a41d8a2c20010b301000be82c020b7f017e230041d0006b220224002002410036022820024201370320024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002404104102d2203450d0020024284808080c00037022420022003360220200341edcad18b0636000002400240200228022420022802282203460d00200228022021040c010b200341016a22042003490d1d200341017422052004200520044b1b22054100480d1d0240024020030d002005102d21040c010b200228022020032005102f21040b2004450d0220022005360224200220043602200b2002200341016a360228200420036a41083a00004114200241206a106f41c8f3c300210603402006280204210720062802082203200241206a106f0240024020022802242205200228022822046b2003490d00200228022021050c010b200420036a22082004490d1e200541017422042008200420084b1b22044100480d1e0240024020050d002004102d21050c010b200228022020052004102f21050b2005450d042002200436022420022005360220200228022821040b2002200420036a360228200520046a2007200310ab051a200228022421042002280228210302400240200628020c4102470d000240024020042003460d00200228022021040c010b200341016a22042003490d20200341017422052004200520044b1b22054100480d200240024020030d002005102d21040c010b200228022020032005102f21040b2004450d072002200536022420022004360220200228022821030b2002200341016a360228200420036a41003a00000c010b0240024020042003460d00200228022021040c010b200341016a22042003490d1f200341017422052004200520044b1b22054100480d1f0240024020030d002005102d21040c010b200228022020032005102f21040b2004450d072002200536022420022004360220200228022821030b2002200341016a360228200420036a41013a00000240200628020c4101460d00200241306a20062802101102002002280234210720022802382203200241206a106f0240024020022802242205200228022822046b2003490d00200228022021050c010b200420036a22082004490d20200541017422042008200420084b1b22044100480d200240024020050d002004102d21050c010b200228022020052004102f21050b2005450d092002200436022420022005360220200228022821040b2002200420036a360228200520046a2007200310ab051a200228024021050240200228023c4101460d0020052002280244200241206a109f030c020b200520022802482203200241206a109f0302402003450d00200341d8006c21074100210403400240200520046a220341346a280200450d002003413c6a280200450d00200341386a28020010310b0240200341c4006a280200450d00200341cc006a280200450d00200341c8006a28020010310b2007200441d8006a2204470d000b0b2002280244450d01200510310c010b2006280214210720062802182203200241206a106f0240024020022802242205200228022822046b2003490d00200228022021050c010b200420036a22082004490d1f200541017422042008200420084b1b22044100480d1f0240024020050d002004102d21050c010b200228022020052004102f21050b2005450d092002200436022420022005360220200228022821040b2002200420036a360228200520046a2007200310ab051a200628022021030240200628021c4101460d002003200641246a280200200241206a109f030c010b20032006280228200241206a109f030b200228022421042002280228210302400240200628022c4102470d000240024020042003460d00200228022021040c010b200341016a22042003490d20200341017422052004200520044b1b22054100480d200240024020030d002005102d21040c010b200228022020032005102f21040b2004450d0b2002200536022420022004360220200228022821030b2002200341016a360228200420036a41003a00000c010b0240024020042003460d00200228022021040c010b200341016a22042003490d1f200341017422052004200520044b1b22054100480d1f0240024020030d002005102d21040c010b200228022020032005102f21040b2004450d0b2002200536022420022004360220200228022821030b2002200341016a360228200420036a41013a00000240200628022c4101460d00200241186a200628023011020020022802182104200228021c2203200241206a106f2003450d012003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a106f0240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d2120074101742205200a2005200a4b1b22054100480d210240024020070d002005102d21070c010b200228022020072005102f21070b2007450d0e2002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410ab051a200341706a200241206a10a0032003200241206a10a1032003412c6a2103200841546a22080d000c020b0b2006280230210420062802382203200241206a106f2003450d002003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a106f0240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d2020074101742205200a2005200a4b1b22054100480d200240024020070d002005102d21070c010b200228022020072005102f21070b2007450d0e2002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410ab051a200341706a200241206a10a0032003200241206a10a1032003412c6a2103200841546a22080d000b0b200228022421042002280228210302400240200628023c4102470d000240024020042003460d00200228022021040c010b200341016a22042003490d20200341017422052004200520044b1b22054100480d200240024020030d002005102d21040c010b200228022020032005102f21040b2004450d0f2002200536022420022004360220200228022821030b2002200341016a360228200420036a41003a00000c010b0240024020042003460d00200228022021040c010b200341016a22042003490d1f200341017422052004200520044b1b22054100480d1f0240024020030d002005102d21040c010b200228022020032005102f21040b2004450d0f2002200536022420022004360220200228022821030b2002200341016a360228200420036a41013a00000240200628023c4101460d00200241106a20062802401102002002280210210420022802142203200241206a106f2003450d012003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a106f0240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d2120074101742205200a2005200a4b1b22054100480d210240024020070d002005102d21070c010b200228022020072005102f21070b2007450d122002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410ab051a200341706a200241206a10a1032003200241206a10a1032003412c6a2103200841546a22080d000c020b0b2006280240210420062802482203200241206a106f2003450d002003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a106f0240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d2020074101742205200a2005200a4b1b22054100480d200240024020070d002005102d21070c010b200228022020072005102f21070b2007450d122002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410ab051a200341706a200241206a10a1032003200241206a10a1032003412c6a2103200841546a22080d000b0b02400240200628024c4101460d00200241086a20062802501102002002280208210b200228020c2203200241206a106f2003450d01200341386c210c410021070340200b20076a220341046a2802002109200341086a2802002204200241206a106f0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2120084101742205200a2005200a4b1b22054100480d210240024020080d002005102d21080c010b200228022020082005102f21080b2008450d142002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410ab051a200341106a2802002109200341146a2802002204200241206a106f0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2120084101742205200a2005200a4b1b22054100480d210240024020080d002005102d21080c010b200228022020082005102f21080b2008450d152002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410ab051a02400240200341186a2802004101460d00200241306a2003411c6a280200200341206a28020028020c1101002002280230210920022802382204200241206a106f0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2320084101742205200a2005200a4b1b22054100480d230240024020080d002005102d21080c010b200228022020082005102f21080b2008450d182002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410ab051a2002280234450d01200910310c010b2003411c6a2802002109200341246a2802002204200241206a106f0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2220084101742205200a2005200a4b1b22054100480d220240024020080d002005102d21080c010b200228022020082005102f21080b2008450d182002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410ab051a0b200341286a200241206a10a103200c200741386a2207470d000c020b0b2006280250210b20062802582203200241206a106f2003450d00200341386c210c410021070340200b20076a220341046a2802002109200341086a2802002204200241206a106f0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2020084101742205200a2005200a4b1b22054100480d200240024020080d002005102d21080c010b200228022020082005102f21080b2008450d172002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410ab051a200341106a2802002109200341146a2802002204200241206a106f0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2020084101742205200a2005200a4b1b22054100480d200240024020080d002005102d21080c010b200228022020082005102f21080b2008450d182002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410ab051a02400240200341186a2802004101460d00200241306a2003411c6a280200200341206a28020028020c1101002002280230210920022802382204200241206a106f0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2220084101742205200a2005200a4b1b22054100480d220240024020080d002005102d21080c010b200228022020082005102f21080b2008450d1b2002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410ab051a2002280234450d01200910310c010b2003411c6a2802002109200341246a2802002204200241206a106f0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2120084101742205200a2005200a4b1b22054100480d210240024020080d002005102d21080c010b200228022020082005102f21080b2008450d1b2002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410ab051a0b200341286a200241206a10a103200c200741386a2207470d000b0b02400240200628025c4101460d00200220062802601102002002280200210420022802042203200241206a106f2003450d012003411c6c21082004410c6a21030340200341786a28020021092003417c6a2802002204200241206a106f0240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d2120074101742205200a2005200a4b1b22054100480d210240024020070d002005102d21070c010b200228022020072005102f21070b2007450d1c2002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410ab051a2003200241206a10a1032003411c6a2103200841646a22080d000c020b0b2006280260210420062802682203200241206a106f2003450d002003411c6c21082004410c6a21030340200341786a28020021092003417c6a2802002204200241206a106f0240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d2020074101742205200a2005200a4b1b22054100480d200240024020070d002005102d21070c010b200228022020072005102f21070b2007450d1c2002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410ab051a2003200241206a10a1032003411c6a2103200841646a22080d000b0b200641ec006a220641b884c400470d000b2002280228220341046a2204417f4c0d1920022802242108200228022021070240024020040d00410121050c010b2004102d2205450d1b0b2002410036023820022004360234200220053602302003200241306a106f0240024020022802342205200228023822046b2003490d00200228023021050c010b200420036a22092004490d1d200541017422062009200620094b1b22094100480d1d0240024020050d002009102d21050c010b200228023020052009102f21050b2005450d1c20022009360234200220053602300b200520046a2007200310ab051a200420036aad4220862005ad84210d02402008450d00200710310b200241d0006a2400200d0f0b410441011033000b200541011033000b200441011033000b200541011033000b200541011033000b200441011033000b200441011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b200541011033000b1032000b200441011033000b200941011033000b1034000b961d010a7f230041106b2203240020012002106f024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402001450d00200141d8006c2104410021050340200020056a220641046a2802002107200641086a28020022082002106f02400240200241046a2209280200220a200241086a2201280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d18200a410174220b200c200b200c4b1b220b4100480d1802400240200a0d00200b102d210a0c010b2002280200200a200b102f210a0b200a450d032002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810ab051a200641d4006a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1820084101742207200b2007200b4b1b22074100480d180240024020080d002007102d210b0c010b200228020020082007102f210b0b200b450d042002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a000002402006410c6a2d0000220841024b0d0002400240024020080e03000102000b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1b2008410174220a200b200a200b4b1b220a4100480d1b0240024020080d00200a102d210b0c010b20022802002008200a102f210b0b200b450d082002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41003a0000200641146a2802002107200641186a28020022082002106f024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d1b200a410174220b200c200b200c4b1b220b4100480d1b02400240200a0d00200b102d210a0c010b2002280200200a200b102f210a0b200a450d092002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810ab051a0c020b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1a2008410174220a200b200a200b4b1b220a4100480d1a0240024020080d00200a102d210b0c010b20022802002008200a102f210b0b200b450d092002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41013a00002006410d6a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1a20084101742207200b2007200b4b1b22074100480d1a0240024020080d002007102d210b0c010b200228020020082007102f210b0b200b450d0a2002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a0000200641146a2802002107200641186a28020022082002106f024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d1a200a410174220b200c200b200c4b1b220b4100480d1a02400240200a0d00200b102d210a0c010b2002280200200a200b102f210a0b200a450d0b2002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810ab051a200641206a2802002107200641246a28020022082002106f024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d1a200a410174220b200c200b200c4b1b220b4100480d1a02400240200a0d00200b102d210a0c010b2002280200200a200b102f210a0b200a450d0c2002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810ab051a2006410e6a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1a20084101742207200b2007200b4b1b22074100480d1a0240024020080d002007102d210b0c010b200228020020082007102f210b0b200b450d0d2002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a00000c010b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d192008410174220a200b200a200b4b1b220a4100480d190240024020080d00200a102d210b0c010b20022802002008200a102f210b0b200b450d0d2002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41023a00002006410d6a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1920084101742207200b2007200b4b1b22074100480d190240024020080d002007102d210b0c010b200228020020082007102f210b0b200b450d0e2002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a0000200641146a2802002107200641186a28020022082002106f024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d19200a410174220b200c200b200c4b1b220b4100480d1902400240200a0d00200b102d210a0c010b2002280200200a200b102f210a0b200a450d0f2002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810ab051a200641206a2802002107200641246a28020022082002106f024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d19200a410174220b200c200b200c4b1b220b4100480d1902400240200a0d00200b102d210a0c010b2002280200200a200b102f210a0b200a450d102002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810ab051a2006412c6a2802002107200641306a28020022082002106f024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d19200a410174220b200c200b200c4b1b220b4100480d1902400240200a0d00200b102d210a0c010b2002280200200a200b102f210a0b200a450d112002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810ab051a2006410e6a2d0000220841044b0d000240024002400240024020080e050001020304000b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1d2008410174220a200b200a200b4b1b220a4100480d1d0240024020080d00200a102d210b0c010b20022802002008200a102f210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41003a00000c040b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1c2008410174220a200b200a200b4b1b220a4100480d1c0240024020080d00200a102d210b0c010b20022802002008200a102f210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41013a00000c030b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1b2008410174220a200b200a200b4b1b220a4100480d1b0240024020080d00200a102d210b0c010b20022802002008200a102f210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41023a00000c020b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1a2008410174220a200b200a200b4b1b220a4100480d1a0240024020080d00200a102d210b0c010b20022802002008200a102f210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41033a00000c010b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d192008410174220a200b200a200b4b1b220a4100480d190240024020080d00200a102d210b0c010b20022802002008200a102f210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41043a00000b02400240200641346a2802004101460d002003200641386a2802002006413c6a28020028020c11010020032802002107200328020822082002106f024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d1a200a410174220b200c200b200c4b1b220b4100480d1a02400240200a0d00200b102d210a0c010b2002280200200a200b102f210a0b200a450d182002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810ab051a2003280204450d01200710310c010b200641386a2802002107200641c0006a28020022082002106f024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d19200a410174220b200c200b200c4b1b220b4100480d1902400240200a0d00200b102d210a0c010b2002280200200a200b102f210a0b200a450d182002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810ab051a0b200641c4006a200210a1032004200541d8006a2205470d000b0b200341106a24000f0b200b41011033000b200741011033000b200a41011033000b200b41011033000b200a41011033000b200741011033000b200b41011033000b200b41011033000b200741011033000b200a41011033000b200741011033000b200b41011033000b200b41011033000b200b41011033000b200a41011033000b200a41011033000b200a41011033000b200a41011033000b200a41011033000b200b41011033000b200b41011033000b1034000bfe0601087f20002802042102024002400240024002400240024020002802004101460d00200041086a28020022002001106f2000450d01200041186c2103200241146a2100200141086a2102200141046a21040340200041706a2802002105200041746a28020022062001106f0240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d08200741017422082009200820094b1b22084100480d080240024020070d002008102d21070c010b200128020020072008102f21070b2007450d042001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610ab051a2000417c6a2802002105200028020022062001106f0240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d08200741017422082009200820094b1b22084100480d080240024020070d002008102d21070c010b200128020020072008102f21070b2007450d052001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610ab051a200041186a2100200341686a22030d000c020b0b2000410c6a28020022002001106f2000450d00200041186c2103200241146a2100200141086a2102200141046a21040340200041706a2802002105200041746a28020022062001106f0240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d07200741017422082009200820094b1b22084100480d070240024020070d002008102d21070c010b200128020020072008102f21070b2007450d052001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610ab051a2000417c6a2802002105200028020022062001106f0240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d07200741017422082009200820094b1b22084100480d070240024020070d002008102d21070c010b200128020020072008102f21070b2007450d062001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610ab051a200041186a2100200341686a22030d000b0b0f0b200841011033000b200841011033000b200841011033000b200841011033000b1034000b800401087f200028020421020240024002400240024020002802004101460d00200041086a28020022002001106f20004103742200450d01200220006a2103200141086a2104034020022802002105200241046a28020022002001106f02400240200141046a22062802002207200428020022086b2000490d00200128020021070c010b200820006a22092008490d06200741017422082009200820094b1b22084100480d060240024020070d002008102d21070c010b200128020020072008102f21070b2007450d042001200736020020062008360200200428020021080b2004200820006a360200200720086a2005200010ab051a200241086a22022003470d000c020b0b2000410c6a28020022002001106f20004103742200450d00200220006a2103200141086a2104034020022802002105200241046a28020022002001106f02400240200141046a22062802002207200428020022086b2000490d00200128020021070c010b200820006a22092008490d05200741017422082009200820094b1b22084100480d050240024020070d002008102d21070c010b200128020020072008102f21070b2007450d042001200736020020062008360200200428020021080b2004200820006a360200200720086a2005200010ab051a200241086a22022003470d000b0b0f0b200841011033000b200841011033000b1034000bbe0e02037f027e230041f0126b22022400024002402001450d00200220003602080c010b200241013602080b2002200136020c200241d00c6a200241086a102e0240024002400240024002400240024002400240024020022903b80d4203510d00200241206a200241d00c6a41900610ab051a200241b0066a200241206a41900610ab051a2002200241b0066a3602d00c200241c00c6a200241d00c6a10ab0120022802c80c2101200241d00c6a200241b0066a41900610ab051a200241e8126a20022802c80c360200200220022903c00c3703e012200241106a200241d00c6a2001200241e0126a1099034101410220022d001041014622001b2203102d2201450d01200241003602d80c200220033602d40c200220013602d00c0240024020000d00200241013602d80c200141003a000020022802d40c210020022802d80c210102402002411c6a2d000022034102470d000240024020002001460d0020022802d00c21000c010b200141016a22002001490d0e200141017422032000200320004b1b22034100480d0e0240024020010d002003102d21000c010b20022802d00c20012003102f21000b2000450d06200220033602d40c200220003602d00c20022802d80c21010b2002200141016a3602d80c200020016a41003a00000c020b0240024020002001460d0020022802d00c21000c010b200141016a22002001490d0d200141017422042000200420004b1b22044100480d0d0240024020010d002004102d21000c010b20022802d00c20012004102f21000b2000450d06200220043602d40c200220003602d00c20022802d80c21010b2002200141016a3602d80c200020016a41013a000041002104024020034101470d000240024020022802d40c20022802d80c2201460d0020022802d00c21000c010b200141016a22002001490d0e200141017422032000200320004b1b22034100480d0e0240024020010d002003102d21000c010b20022802d00c20012003102f21000b2000450d08200220033602d40c200220003602d00c20022802d80c21010b2002200141016a3602d80c200020016a41013a000020022d001d21040b0240024020022802d40c20022802d80c2201460d0020022802d00c21000c010b200141016a22002001490d0d200141017422032000200320004b1b22034100480d0d0240024020010d002003102d21000c010b20022802d00c20012003102f21000b2000450d08200220033602d40c200220003602d00c20022802d80c21010b2002200141016a3602d80c200020016a20043a00002002411e6a2d000021030240024020022802d40c20022802d80c2201460d0020022802d00c21000c010b200141016a22002001490d0d200141017422042000200420004b1b22044100480d0d0240024020010d002004102d21000c010b20022802d00c20012004102f21000b2000450d09200220043602d40c200220003602d00c20022802d80c21010b2002200141016a3602d80c200020016a20033a00000c010b200241013602d80c200141013a000020022d0011417e6a22014102200141ff01714102491b41ff0171220141024b0d0002400240024020010e03000102000b0240024020022802d40c20022802d80c2201460d0020022802d00c21000c010b200141016a22002001490d0e200141017422032000200320004b1b22034100480d0e0240024020010d002003102d21000c010b20022802d00c20012003102f21000b2000450d0b200220033602d40c200220003602d00c20022802d80c21010b2002200141016a3602d80c200020016a41003a00000c020b0240024020022802d40c20022802d80c2201460d0020022802d00c21000c010b200141016a22002001490d0d200141017422032000200320004b1b22034100480d0d0240024020010d002003102d21000c010b20022802d00c20012003102f21000b2000450d0b200220033602d40c200220003602d00c20022802d80c21010b2002200141016a3602d80c200020016a41013a00000c010b0240024020022802d40c20022802d80c2201460d0020022802d00c21000c010b200141016a22002001490d0c200141017422032000200320004b1b22034100480d0c0240024020010d002003102d21000c010b20022802d00c20012003102f21000b2000450d0b200220033602d40c200220003602d00c20022802d80c21010b2002200141016a3602d80c200020016a41023a0000200241106a410172200241d00c6a10770b20023502d80c210520023502d00c2106200241f0126a240020062005422086840f0b2002412c6a4102360200200241c4066a4102360200200242023702b406200241c8a2c2003602b00620024102360224200241fca3c20036022020024100360214200241f0eac4003602102002200241206a3602c0062002200241106a360228200241b0066a41d8a2c20010b301000b200341011033000b200341011033000b200441011033000b200341011033000b200341011033000b200441011033000b200341011033000b200341011033000b200341011033000b1034000b8e0d06047f017e017f017e067f017e230041c0016b22022400109b03105b10a60220024188016a41086a220341e8c5c400ad4280808080d002841001220441086a290000370300200220042900003703880120041031200241f8006a41086a20032903003703002002200229038801370378200241086a200241f8006aad42808080808002841002104102400240024020022802082204450d0002400240024002400240200241086a41086a2802004104490d00200428000021050240200228020c450d00200410310b2005450d052005ad420c7e2206422088a70d072006a722044100480d072004102d2207450d0420024198016aad42808080808004842108200721034100210903404114102d2204450d02200441106a41002800bec644360000200441086a41002900b6c644370000200441002900aec644370000200441144128102f220a450d03200a2009360014200241086a41186a220b200aad42808080808003841000220441186a290000370300200241086a41106a220c200441106a290000370300200241086a41086a220d200441086a290000370300200220042900003703082004103120024198016a41186a200b29030037030020024198016a41106a200c29030037030020024198016a41086a200d2903003703002002200229030837039801200a1031200241086a200810021041024002402002280208220b450d00200228020c210c2002200228021036028c012002200b36028801200220024188016a102c02400240024020022802000d00200228028c01220d20022802042204490d002004417f4c0d090240024020040d004101210a0c010b2004107a220a450d02200a200228028801220e200410ab051a2002200d20046b36028c012002200e20046a360288010b200a0d020b41e9bcc0004133200241b8016a419cbdc0001038000b200441011033000b2004ad2206422086210f0240200c450d00200b10310b200f2006842106200810090c010b420021064101210a0b2003200a360200200341046a20063702002003410c6a21032005200941016a2209470d000c070b0b41e9bcc0004133200241b8016a419cbdc0001038000b411441011033000b412841011033000b1032000b200441041033000b41042107410021050b200220053602102002200536020c2002200736020820024198016a200241086a109803200241086a41186a20024198016a41186a290300370300200241086a41106a220320024198016a41106a290300370300200241086a41086a20024198016a41086a290300370300200220022903980137030820024188016a41086a220a41bca7c200ad4280808080d002841001220441086a290000370300200220042900003703880120041031200241f8006a41086a200a29030037030020022002290388013703782002411036028c012002200241f8006a36028801200241086a20024188016a10ae02200241086a109c0320024100360290012002420137038801200220024188016a36029801200320024198016a103e200241086a20024188016a109101200220024188016a36029801200241386a20024198016a103e200220024188016a36029801200241d8006a20024198016a103e200228020c210a200241146a280200220420024188016a106f024002402004450d00200441246c210c034020024198016a200a10ba02200228029801210b02400240200228028c01220920022802900122046b20022802a0012203490d0020022802880121090c010b200420036a220d2004490d0420094101742204200d2004200d4b1b22044100480d040240024020090d002004102d21090c010b20022802880120092004102f21090b2009450d032002200436028c01200220093602880120022802900121040b2002200420036a36029001200920046a200b200310ab051a0240200228029c01450d00200b10310b200a41246a210a200c415c6a220c0d000b0b20023502900142208621062002350288012108024020022802142203450d00200228020c2104200341246c210303400240024020042d0000220a41034b0d00024002400240200a0e0404000102040b2004410c6a280200450d03200441086a28020010310c030b2004410c6a280200450d02200441086a28020010310c020b2004410c6a280200450d01200441086a28020010310c010b200441086a280200450d00200441046a28020010310b200441246a21042003415c6a22030d000b0b200620088421060240200241106a280200450d00200228020c10310b200241c0016a240020060f0b200441011033000b1034000b962605017f037e0e7f027e027f230041a0076b22022400024002402001450d00200220003602080c010b200241013602080b2002200136020c2002200241086a102c024020022802000d00200228020421012002200241086a36028805200241003a008007200242003702f40520024198bfc0003602f0052002200136022420024100360220200220024180076a36022c200220024188056a360228200241206a200241f0056a10a50320022802f005210120022902f4052103024020022d008007450d0020012003a72003422088a710a6030c010b2001450d002002200337021420022001360210200241206a200241106a10a7030240024002400240024002400240024002400240024020022802204101460d00200241206a41086a22012903002103200141b5b2c000ad4280808080d001841001220041086a2900003703002002200029000037032020001031200241f0056a41086a2001290300370300200220022903203703f005200241206a200241f0056aad4280808080800284220410021041024002400240200228022022000d00420021050c010b20012802004108490d01200029000021052002280224450d00200010310b0240419006102d2206450d002006200241f0056a41e80010ab052207420237036820074106360298012007200229038805370370200741f8006a20024188056a41086a29030037030020074180016a20024198056a29030037030020074188016a200241a0056a29030037030020074190016a200241a8056a29030037030020072003200542dc0b7c220520032005561b3703a001200741a8016a200241206a41e80410ab051a200241106a21012002280214210803402001280200220941086a210020092f0106220a41037421014100210b0240024003402001450d014194a1c2002000410810ad05220c450d02200141786a2101200b41016a210b200041086a2100200c417f4a0d000b200b417f6a210a0b024020080d00410121070c080b2008417f6a21082009200a4102746a41e4016a21010c010b0b20022009200b410c6c6a220141e8006a2802003602f4052002200141e0006a2802003602f005200241206a200241f0056a10850102402002280220220d0d00410121070c060b2002280224210e200241206a41086a2201280200220a450d0320014185c8c200ad42808080809002841001220041086a2900003703002002200029000037032020001031200241f0056a41086a2001290300370300200220022903203703f00520024188056a2004100210410240024002402002280288052201450d00200228028c052100200220024190056a280200360284072002200136028007200241206a20024180076a10860120022802202208450d02200229022421032000450d01200110310c010b41042108420021030b2003a7210f2008210020082101024002400240024002402003422088a72210450d002008201041c4006c6a21004100210b024003402008200b6a22012d0000210c200241206a200141016a41c30010ab051a200c4102460d01200241f0056a41186a200241206a41186a290000370300200241f0056a41106a200241206a41106a290000370300200241f0056a41086a200241206a41086a290000370300200220022900203703f005200c4101460d03200b41c4006a210b200141c4006a2000470d000b200021010c010b200141c4006a21010b0240034020002001460d0120012d0000210b200141c4006a2101200b4102470d000b0b41012109410021110240200f0d00410021120c020b20081031410021120c010b20024188056a41086a220c200241f0056a41086a29030037030020024188056a41106a2211200241f0056a41106a29030037030020024188056a41186a2213200241f0056a41186a290300370300200220022903f00522033703e00620022003370388054120102d2209450d022009200229038805370000200941186a2013290300370000200941106a2011290300370000200941086a200c29030037000041012111024002400240201041c4006c41bc7f6a200b470d00410121120c010b200141c4006a2d0000210b200241206a200141c5006a41c30010ab051a20014188016a210c0240200b4102470d0041012112200c21010c020b41012111410121120340200c210102400340200241f0056a41186a220c200241206a41186a290000370300200241f0056a41106a2210200241206a41106a290000370300200241f0056a41086a2213200241206a41086a290000370300200220022900203703f005200b41ff01714101460d0120002001460d0320012d0000210b200241206a200141016a41c30010ab051a200141c4006a2101200b4102460d040c000b0b20024188056a41086a2013290300220337030020024188056a41106a2010290300220537030020024188056a41186a200c2903002214370300200220022903f005221537038805200241e0066a41186a220c2014370300200241e0066a41106a22102005370300200241e0066a41086a22132003370300200220153703e006024020122011470d00201141016a220b2011490d1420114101742216200b2016200b4b1b221241ffffff3f712012470d142012410574220b4100480d140240024020110d00200b102d21090c010b20092011410574200b102f21090b2009450d050b200920114105746a220b20022903e006370000200b41186a200c290300370000200b41106a2010290300370000200b41086a2013290300370000201141016a211120002001460d0120012d0000210b200241206a200141016a41c30010ab051a200141c4006a210c200b4102470d000b200141c4006a21010c010b200021010b0240034020002001460d0120012d0000210b200141c4006a2101200b4102470d000b0b200f450d00200810310b200d200a41f0006c6a210f200241f0056a41106a2116200241f0056a41086a21104200210341042117200d210c02400340200c2802042101200c2802002100200241206a200c41086a41e80010ab051a200c41f0006a210c024020010d00200c200f460d0a0340200c2802042208450d0b200c41086a280200210a0240200c410c6a2802002201450d00200141246c21002008210103400240024020012d0000220b41034b0d00024002400240200b0e0404000102040b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012000415c6a22000d000b0b200c41f0006a210c0240200a450d00200810310b200c200f470d000c0b0b0b20024188056a200241206a41e80010ab051a200220013602f405200220003602f005201020024188056a41e80010ab051a105b210120024180076a200241f0056a10b902024002400240024020022802f005417f6a220020014f0d00200241206a2000109703200241206a2016412010ad050d0020022802f005221341002001417b6a2200200020014b1b490d002011410574210b20024180076a20096b210a41002101024003400240200b2001470d00410021080c020b41012108200a2001460d01200920016a2100200141206a2101200020024180076a412010ad050d000b0b200241206a2013109703200241206a20024180076a412010ad05210120080d0020010d010b024020022802fc052200450d0020022802f4052101200041246c210003400240024020012d0000220b41034b0d00024002400240200b0e0404000102040b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012000415c6a22000d000b0b20022802f805450d0120022802f40510310c010b20024180076a200241f0056a10b902200241206a200241f0056a41f00010ab051a0240024020034220882205a722012003a7460d00200121000c010b200141016a22082001490d142005a72200410174220a20082008200a491bad220342f0007e2205422088a70d142005a722084100480d140240024020010d002008102d21170c010b2017200141f0006c2008102f21170b2017450d020b2017200041f0006c6a200241206a41f00010ab051a200241206a41186a220820024180076a41186a290300370300200241206a41106a220a20024180076a41106a290300370300200241206a41086a221320024180076a41086a2903003703002002200229038007370320024020122011470d00201141016a22012011490d14201141017422122001201220014b1b221241ffffff3f712012470d14201241057422014100480d140240024020110d002001102d21090c010b2009200b2001102f21090b2009450d040b200342ffffffff0f83200041016aad4220868421032009200b6a22012002290320370000200141186a2008290300370000200141106a200a290300370000200141086a2013290300370000201141016a21110b200c200f470d010c0a0b0b200841041033000b200141011033000b200b41011033000b412041011033000b41e9bcc0004133200241e0066a419cbdc0001038000b41900641081033000b41e9bcc0004133200241e0066a419cbdc0001038000b200220022902243703f00541f9b2c0004128200241f0056a41c4b2c0001038000b41012107200e450d01200d10310c010b0240200e450d00200d10310b02402012450d00200910310b0240200342ffffffff0f560d00410121072003a7450d01201710310c010b024020170d00410121070c010b200741900641a00c102f2206450d0120064190066a200241f0056a41e80010ab051a200642023703f806200620033703b007200620173602ac07200641073602a80720062002290388053703800720064188076a20024190056a29030037030020064190076a20024198056a29030037030020064198076a200241a0056a290300370300200641a0076a200241a8056a290300370300200641b8076a200241206a41e80410ab051a410221070b200241106a210120022802142108024003402001280200220941086a210020092f0106220a41037421014100210b0240024003402001450d0141aea0c2002000410810ad05220c450d02200141786a2101200b41016a210b200041086a2100200c417f4a0d000b200b417f6a210a0b2008450d022008417f6a21082009200a4102746a41e4016a21010c010b0b200941e0006a200b410c6c6a22012802084104490d0020012802002800002109200241206a41086a220041f291c200ad4280808080d002841001220141086a2900003703002002200129000037032020011031200241f0056a41086a2000290300370300200220022903203703f00520024188056a200410021041024002402002280288052201450d00200228028c052100200220024188056a41086a280200360284072002200136028007200241206a20024180076a108b012002280220220b450d04200229022421032000450d01200110310c010b4104210b420021030b4100210002402003422088a72201417f6a220c20014b0d00200c20014f0d00200b200c4102746a2201450d00200128020020094721000b02402003a7450d00200b10310b20000d030b200721100c030b41a00c41081033000b41e9bcc0004133200241e0066a419cbdc0001038000b200620074190066c220120074101742200200741016a2210200020104b1b4190066c2200102f2206450d01200620016a200241f0056a41e80010ab05220142023703682001200229038805370370200141f8006a20024190056a29030037030020014180016a20024198056a29030037030020014188016a200241a0056a29030037030020014190016a200241a8056a2903003703002001419c016a20093602002001410a36029801200141a8016a200241206a41e80410ab051a0b20022802102002280214200228021810a603200241003602f805200242013703f0052010200241f0056a106f20104190066c210720022802f405210820022802f80521012006210b03402002200b36028805200241206a20024188056a10ab012002280220210a02400240200820016b20022802282209490d00200120096a210020022802f005210c0c010b200120096a22002001490d042008410174220c2000200c20004b1b220f4100480d040240024020080d00200f102d210c0c010b20022802f0052008200f102f210c0b200c450d032002200f3602f4052002200c3602f005200f21080b200220003602f805200c20016a200a200910ab051a02402002280224450d00200a10310b200b4190066a210b20002101200741f0796a22070d000b20104190066c210b20064198016a21012000ad422086200cad84210303402001103020014190066a2101200b41f0796a220b0d000b20061031200241a0076a240020030f0b200041081033000b200f41011033000b1034000b200241fc056a4102360200200241346a410236020020024202370224200241c8a2c200360220200241023602f40520024194a4c2003602f0052002410036028c05200241f0eac400360288052002200241f0056a360230200220024188056a3602f805200241206a41d8a2c20010b301000bd50505067f017e047f017e027f23004180026b22022400024002400240024002402000280200220320002802044f0d00200028020c2104200141086a2105200241a0016a4102722106024003402000200341016a360200200241186a2000280208280200220710830120022d00184101460d0120022900192108200241086a2007102c20022802080d012007280204200228020c2203490d012003417f4c0d0302400240024020030d00410121090c010b2003107a2209450d0820072802042003490d0120092007280200200310ab051a2007280204220a2003490d062007200a20036b3602042007200728020020036a3602000b20022008370310024002402001280200220b4198bfc000460d002001280204210c0c010b2006410041da0010aa051a200241186a410041840110aa051a41e401102d220b450d074100210c200b4100360200200b41046a200241a0016a41dc0010ab051a200b41e0006a200241186a41840110ab051a200141003602042001200b3602000b2003ad220d422086200d84210d024002400340200b41086a2107200b2f0106220e41037421034100210a024003402003450d01200241106a2007410810ad05220f450d03200341786a2103200a41016a210a200741086a2107200f417f4a0d000b200a417f6a210e0b0240200c450d00200c417f6a210c200b200e4102746a41e4016a280200210b0c010b0b2002200837022c200220053602282002200e360224200220013602202002200b36021c200241003602182002200d3702a401200220093602a001200241186a200241a0016a10a9030c010b200b200a410c6c6a220341e4006a2207280200210a2007200d370200200341e0006a22072802002103200720093602002003450d00200a450d00200310310b200028020022032000280204490d010c030b0b200910310b200441013a00000b20024180026a24000f0b1032000b2003200a107b000b41e40141041033000b200341011033000bd90303027f017e027f02402001450d00034020002802e40121002001417f6a22010d000b0b02402002450d004100210341002101034002400240200120002f01064f0d0020002001410c6c6a220441e4006a2902002105200441e0006a2802002104200141016a21010c010b02400240200028020022010d002003ad210541002106410021010c010b20003301044220862003ad842105410121060b200010312005a72103024002402005422088a7220720012f01064f0d00200121040c010b034002400240200128020022040d002003ad2105410021040c010b200641016a210620013301044220862003ad8421050b200110312005a72103200421012005422088a7220720042f01064f0d000b0b200741027420046a41e8016a280200210020042007410c6c6a220141e4006a2902002105200141e0006a280200210402402006417f6a2201450d00034020002802e40121002001417f6a22010d000b0b410021010b2004450d012002417f6a210202402005a7450d00200410310b20020d000b0b024020004198bfc000460d0020002802002101200010312001450d0020012802002104200110312004450d00024020042802002201450d000340200410312001210420012802002200210120000d000b0b200410310b0bf00101067f2001280204210202400240024003402001280200220341086a210420032f01062205410374210141002106024003402001450d0141d3c6c4002004410810ad052207450d03200141786a2101200641016a2106200441086a21042007417f4a0d000b2006417f6a21050b02402002450d002002417f6a2102200320054102746a41e4016a21010c010b0b200041dbc6c400360204200041086a41283602000c010b200341e0006a2006410c6c6a220128020841074b0d0120004183c7c400360204200041086a41293602000b200041013602000f0b200041086a2001280200290000370300200041003602000b9e2c08077f017e027f017e087f027e017f027e230041b0026b22022400024002402001450d00200220003602080c010b200241013602080b2002200136020c200241306a200241086a102a024002400240024020022802342203450d00200241a8016a2802002104200241a4016a2802002105200241a0016a2802002106200241306a410c6a2802002107200228023821082002200241086a102c20022802000d02200228020421012002200241086a360220200241003a00c001200242003702d40120024198bfc0003602d00120022001360234200241003602302002200241c0016a36023c2002200241206a360238200241306a200241d0016a10a50320022802d001210120022902d401210920022d00c001450d0120012009a72009422088a710a6030c020b2002412c6a4102360200200241e4016a4102360200200242023702d401200241c8a2c2003602d00120024102360224200241b0a4c200360220200241003602c401200241f0eac4003602c0012002200241206a3602e0012002200241c0016a360228200241d0016a41d8a2c20010b301000b20010d010b200241d0016a410c6a4102360200200241c4006a410236020020024202370234200241c8a2c200360230200241023602d401200241b0a4c2003602d00120024100360224200241f0eac4003602202002200241d0016a3602402002200241206a3602d801200241306a41d8a2c20010b301000b2002200937021420022001360210200241013b012c2002420037022420024198bfc000360220200241206a41086a210a0240024002402004450d00200620044190066c6a210b200241d0016aad4280808080800284210c200241d0016a410272210d2006210e024002400240024002400240024002400340200e41e8006a2903004202520d0902400240200e28029801410647220f0d00200e2903a0012109200241106a21012002280214211002400240024002400240024002400240024002400240024002400240024002400240024003402001280200221141086a210020112f010622124103742101410021130240024003402001450d01419ba9c4002000410810ad052214450d02200141786a2101201341016a2113200041086a21002014417f4a0d000b2013417f6a21120b2010450d022010417f6a2110201120124102746a41e4016a21010c010b0b201141e0006a2013410c6c6a220128020841074b0d0141bfc7c4002112201542808080807083422984a721100c020b41a3a9c4002112201542808080807083421c84a721100c010b200942b8178020012802002900002215510d014131211041b893c00021120b0240024020022d002d450d0041e3a0c2002101413121000c010b20022802202002280224200228022810a6032002420037022420024198bfc000360220200242e2c289abb68edbb7f4003703c00141002101200241d0016a410272410041da0010aa051a200241306a410041840110aa051a41e401102d2214450d0220144100360200201441046a200241d0016a41dc0010ab051a201441e0006a200241306a41840110ab051a200241003602242002201436022020142f0106220e4103742111417f2100024002400340024020112001470d00200e21000c020b200241c0016a201420016a41086a410810ad052213450d02200141086a2101200041016a21002013417f4a0d000b0b200242e2c289abb68edbb7f4003702442002200a3602402002200036023c20022014360234200241003602302002200241206a360238201041046a2200417f4c0d04024002402000450d002000102d2201450d07200220003602bc01200220013602d001200241003602b8012010413f4b0d01200120104102743a0000410121130c1b0b200241003602bc01200241003602b80141012100200241013602d0014101102d2201450d07200141033a0000200241013602bc01200220013602d001200241013602b801410521130c150b201041808001490d182010418080808004490d170c120b41b6a0c2002101412d21000b200220003602342002200136023041acbdc0004122200241306a41d0bdc0001038000b200f0d0e200e2903a0012116200241306a200241106a10a7030240024020022802304101470d0020023502382109200228023421174101210f0c010b20022903382109200241306a41086a220041b5b2c000ad4280808080d001841001220141086a2900003703002002200129000037033020011031200241d0016a41086a2000290300370300200220022903303703d001200241306a200c1002104102400240200228023022010d00420021180c010b20022802384108490d06200129000021182002280234450d00200110310b02402016200942b0ea017c560d004100210f2016201842dc0b7c2209540d010c100b20194280808080708342258421094101210f41d4b2c00021170b024020022d002d450d0041e3a0c2002101413121000c080b0240200f450d0020022802202002280224200228022810a6032002420037022420024198bfc000360220200242f4d2b59bc7ae98b8303703c0010c060b20022802202111200242f4d2b59bc7ae98b8303703c00120114198bfc000460d05200228022421100c060b41e40141041033000b1032000b200041011033000b410141011033000b41e9bcc0004133200241c0016a419cbdc0001038000b200d410041da0010aa051a200241306a410041840110aa051a41e401102d2211450d024100211020114100360200201141046a200241d0016a41dc0010ab051a201141e0006a200241306a41840110ab051a20024100360224200220113602200b02400340201141086a210020112f01062212410374210141002113024003402001450d01200241c0016a2000410810ad052214450d03200141786a2101201341016a2113200041086a21002014417f4a0d000b2013417f6a21120b02402010450d002010417f6a2110201120124102746a41e4016a28020021110c010b0b200242f4d2b59bc7ae98b8303702442002200a3602402002201236023c20022011360234200241003602302002200241206a360238200241003602d801200242013703d0014101102d21010240200f0d002001450d04200141003a000020024281808080103702d401200220013602d001200141014109102f2201450d05200120093700012002428980808090013702d401200220013602d0010c080b2001450d05200141013a000020024281808080103702d401200220013602d0012009a72201200241d0016a106f0240024020022802d401221320022802d80122006b2001490d0020022802d00121130c010b200020016a22142000490d16201341017422112014201120144b1b22144100480d160240024020130d002014102d21130c010b20022802d00120132014102f21130b2013450d07200220143602d401200220133602d0010b2002200020016a3602d801201320006a2017200110ab051a0c070b41b6a0c2002101412d21000b200220003602342002200136023041acbdc0004122200241306a41d0bdc0001038000b41e40141041033000b410141011033000b410941011033000b410141011033000b201441011033000b200241c0016a41086a200241d0016a41086a280200360200200220022903d0013703c001200241306a200241c0016a10a9032002200f3a002d200241003a002c20092119200f450d00200241d0016a41086a200241206a41086a290300370300200220022903203703d0010c0c0b200e4190066a220e200b470d010c0a0b0b200141033a0000200241013602b8012000417f6a41034b0d01200041017422134105201341054b1b22134100480d0a0b200120002013102f2201450d01200220133602bc01200220013602d001201321000b20012010360001410521130c030b201341011033000b02400240200041034b0d00200041017422134104201341044b1b22134100480d08200120002013102f2201450d01200220133602bc01200220013602d001201321000b20012010410274410272360000410421130c020b201341011033000b0240200041014b0d0020012000200041017422134102201341024b1b2213102f2201450d02200220133602bc01200220013602d001201321000b41022113200120104102744101723b00000b200220133602b8010240200020136b20104f0d00201320106a22142013490d05200041017422112014201120144b1b22144100480d05200120002014102f2201450d02200220143602bc01200220013602d0010b2002201320106a3602b801200120136a2012201010ab051a200220022802d0013602c001200220022802bc013602c401200220022802b8013602c801200241306a200241c0016a10a90320024180023b012c200241d0016a41086a200241206a41086a290300370300200220022903203703d0010c030b201341011033000b201441011033000b200241d0016a41086a200a290300370300200220022903203703d0010b20022802102002280214200228021810a60302402007450d00200741246c21002003210103400240024020012d0000221341034b0d0002400240024020130e0404000102040b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012000415c6a22000d000b0b02402008450d00200310310b02402004450d0020044190066c210020064198016a210103402001103020014190066a2101200041f0796a22000d000b0b02402005450d00200610310b200241003602382002420137033020022d00dc01210002404101102d2201450d002002410136023420022002280238221341016a36023820022001360230200120136a20003a000020022d00dd012113024002400240200228023420022802382201460d00200228023021000c010b200141016a22002001490d03200141017422142000201420004b1b22144100480d030240024020010d002014102d21000c010b200228023020012014102f21000b2000450d012002201436023420022000360230200228023821010b2002200141016a360238200020016a20133a000020022802d801200241306a106f20022802d00122132100024020022802d4012214450d002014210120132100034020002802e40121002001417f6a22010d000b0b0240024002400240024002400240024002400240024020022802d80122120d00410021010c010b200241d0016a210b41002114034002400240201420002f01064f0d0020002014410c6c6a41e0006a2111200020144103746a41086a2101201441016a21140c010b02400240200028020022010d00201642808080807083200bad84211641002113410021010c010b2000330104422086200bad842116410121130b201621152016210902402016422088a7220020012f0106490d0003402009221542ffffffff0f832109201341016a211320012f01042200200128020022012f01064f0d000b0b20012000410c6c6a2114200120004103746a2110200041027420016a41e8016a28020021002015a7210b02402013417f6a2201450d00034020002802e40121002001417f6a22010d000b0b201441e0006a2111201041086a2101410021140b20012d0000210e02400240200228023420022802382213460d00200228023021100c010b201341016a22102013490d0e2013410174220f2010200f20104b1b220f4100480d0e0240024020130d00200f102d21100c010b20022802302013200f102f21100b2010450d032002200f36023420022010360230200228023821130b2002201341016a360238201020136a200e3a000020012d0001210e02400240200228023420022802382213460d00200228023021100c010b201341016a22102013490d0e2013410174220f2010200f20104b1b220f4100480d0e0240024020130d00200f102d21100c010b20022802302013200f102f21100b2010450d042002200f36023420022010360230200228023821130b2002201341016a360238201020136a200e3a000020012d0002210e02400240200228023420022802382213460d00200228023021100c010b201341016a22102013490d0e2013410174220f2010200f20104b1b220f4100480d0e0240024020130d00200f102d21100c010b20022802302013200f102f21100b2010450d052002200f36023420022010360230200228023821130b2002201341016a360238201020136a200e3a000020012d0003210e02400240200228023420022802382213460d00200228023021100c010b201341016a22102013490d0e2013410174220f2010200f20104b1b220f4100480d0e0240024020130d00200f102d21100c010b20022802302013200f102f21100b2010450d062002200f36023420022010360230200228023821130b2002201341016a360238201020136a200e3a000020012d0004210e02400240200228023420022802382213460d00200228023021100c010b201341016a22102013490d0e2013410174220f2010200f20104b1b220f4100480d0e0240024020130d00200f102d21100c010b20022802302013200f102f21100b2010450d072002200f36023420022010360230200228023821130b2002201341016a360238201020136a200e3a000020012d0005210e02400240200228023420022802382213460d00200228023021100c010b201341016a22102013490d0e2013410174220f2010200f20104b1b220f4100480d0e0240024020130d00200f102d21100c010b20022802302013200f102f21100b2010450d082002200f36023420022010360230200228023821130b2002201341016a360238201020136a200e3a000020012d0006210e02400240200228023420022802382213460d00200228023021100c010b201341016a22102013490d0e2013410174220f2010200f20104b1b220f4100480d0e0240024020130d00200f102d21100c010b20022802302013200f102f21100b2010450d092002200f36023420022010360230200228023821130b2002201341016a360238201020136a200e3a000020012d0007211002400240200228023420022802382201460d00200228023021130c010b200141016a22132001490d0e2001410174220e2013200e20134b1b220e4100480d0e0240024020010d00200e102d21130c010b20022802302001200e102f21130b2013450d0a2002200e36023420022013360230200228023821010b2002200141016a360238201320016a20103a00002011280200211020112802082201200241306a106f0240024020022802342211200228023822136b2001490d00200228023021110c010b201320016a220e2013490d0e20114101742213200e2013200e4b1b22134100480d0e0240024020110d002013102d21110c010b200228023020112013102f21110b2011450d0b2002201336023420022011360230200228023821130b2002201320016a360238201120136a2010200110ab051a2012417f6a22120d000b20022802d801210120022802d401211420022802d00121130b200235023021092002350238211520132014200110a603200241b0026a240020092015422086840f0b200f41011033000b200f41011033000b200f41011033000b200f41011033000b200f41011033000b200f41011033000b200f41011033000b200e41011033000b201341011033000b201441011033000b410141011033000b1034000be71207027f017e057f027e017f017e0a7f230041b0036b2202240020002802102203200328020041016a36020020002902142104200028020c2103200028020821052000280200210620002802042100200241f0016a41086a2207200141086a280200360200200220012902003703f001024002400240024020002f01062201410b490d00200241d0026a410272410041da0010aa051a200241386a410041840110aa051a0240024041e401102d2208450d0020084100360200200841046a200241d0026a41dc0010ab051a200841e0006a200241386a41840110ab052107200241386a41086a2209200041b0016a280200360200200220002902a8013703382000413c6a330000210a2000413e6a310000210b20002d003f210c2000350038210d200841086a200041c0006a20002f010641796a220141037410ab05210e2007200041b4016a2001410c6c10ab052107200041063b0106200820013b0106200241d0026a41086a2009280200360200200220022903383703d002200d200a200b4210868442208684210a0240024020034107490d002003410374200e6a41506a200e200341796a22094103746a220e200141ffff037120096b41037410ac051a200e20043700002003410c6c20076a220341b87f6a200341ac7f6a2203200841066a22012f010020096b410c6c10ac051a200341086a200241f0016a41086a280200360200200320022903f0013702000c010b200041086a20034103746a220741086a2007200041066a22012f010020036b41037410ac051a20072004370000200041e0006a2003410c6c6a2207410c6a200720012f010020036b410c6c10ac051a200741086a200241f0016a41086a280200360200200720022903f0013702000b200120012f010041016a3b0100200241286a41086a220f200241d0026a41086a22102802002203360200200241086a221120033602002002200c3a0017200220022903d00222043703282002200a3e02102002200a4230883c00162002200a4220883d011420022004370300200229031021042000280200220c450d0320002f01042112200241d0026a410272211303402002200641016a22063602202002200c360224200f201128020036020020022002290300370328201241ffff03712109024002400240200c2f01062200410b490d002013410041da0010aa051a200241f0016a200241d0026a41dc0010ab051a200241386a410041b40110aa051a419402102d2207450d0520074100360200200741046a200241f0016a41dc0010ab051a200741e0006a200241386a41b40110ab052103200c41386a290000210a200241386a41086a2214200c41b0016a2802003602002002200c41a8016a290200370338200741086a200c41c0006a200c2f0106220141796a220041037410ab0521152003200c41b4016a2000410c6c10ab052116200741e4016a200c4180026a2001417a6a220e41027410ab052117200c41063b0106200720003b01060240200e450d00410021002017210303402003280200220120003b010420012007360200200341046a2103200e200041016a2200470d000b0b20102014280200220036020020022002290338220b3703d002201420003602002002200b370338201241ffff037122034107490d0120152009417a6a22034103746a2015200941796a22004103746a220120072f010620006b41037410ac051a200120043700002009410c6c20166a220141b87f6a200141ac7f6a220120072f0106220e20006b410c6c10ac051a200141086a200f280200360200200120022903283702002007200e41016a22013b01062009410274221220176a416c6a201720034102746a220e200141ffff0371220920036b41027410ac051a200e200836020020092003490d02200720126a41cc016a2103034020032802002201200041016a22003b010420012007360200200341046a210320002009490d000c030b0b200c41086a2201200941016a22034103746a200120094103746a2201200020096b220741037410ac051a20012004370000200c2009410c6c6a220141ec006a200141e0006a220e2007410c6c10ac051a200141e8006a200241286a41086a280200360200200e2002290328370200200c200041016a22003b01062009410274200c41e4016a22016a41086a200120034102746a2201200041ffff0371220720036b41027410ac051a20012008360200201241ffff037120074f0d07200c2003417f6a22004102746a41e8016a2103034020032802002201200041016a22003b01042001200c360200200341046a210320002007490d000c080b0b200c41086a2200200941016a220e4103746a200020094103746a2200200c2f0106220120096b221241037410ac051a20002004370000200c41e0006a2009410c6c6a2200410c6a20002012410c6c10ac051a200041086a200f28020036020020002002290328370200200c200141016a22003b010620094102742217200c41e4016a22016a41086a2001200e4102746a2212200041ffff03712201200e6b41027410ac051a20122008360200200320014f0d00200c20176a41e8016a2100034020002802002203200941016a22093b01042003200c360200200041046a210020012009470d000b0b200241106a41086a2014280200220036020020112000360200200220022903382204370310200220043703000240200c28020022000d0020072108200a21040c050b200c2f010421122000210c200a2104200721080c000b0b41e40141041033000b41940241041033000b200020034103746a220941106a200941086a2209200120036b41037410ac051a2009200437000020002003410c6c6a220141ec006a200141e0006a220920002f010620036b410c6c10ac051a200141e8006a2007280200360200200920022903f001370200200020002f010641016a3b01060c010b200241d0026a410272410041da0010aa051a200241f0016a200241d0026a41dc0010ab051a200241386a410041b40110aa051a419402102d2200450d0120004100360200200041046a200241f0016a41dc0010ab051a200041e0006a200241386a41b40110ab0521012000200528020022033602e401200520003602002005200528020441016a360204200341003b010420032000360200200120002f01062203410c6c6a22012002290300370200200020034103746a41086a2004370000200141086a200241086a280200360200200041e4016a200341016a22034102746a2008360200200020033b0106200820033b0104200820003602000b200241b0036a24000f0b41940241041033000b5602017f027e230041306b2202240020024101410010be0120024100360228200242013703202002200241206a36022c20022002412c6a103e2002350228210320023502202104200241306a240020042003422086840b9a3f05077f017e037f047e057f230041901c6b22022400024002402001450d00200220003602100c010b200241013602100b20022001360214200241c0126a200241106a102e024002400240024002400240024002400240024002400240024002400240024002400240024020022903a8134203510d00200241d0006a200241c0126a41900610ab051a200241e0066a200241d0006a41900610ab051a2002200241e0066a3602f00c200241c0126a200241f00c6a10ab0120022802c8122103024020022802c412450d0020022802c01210310b200241c0126a200241e0066a41900610ab051a200241f00c6a200241c0126a10ac0341012100024020022d00f00c4101470d00200220022d00f30c3a001b200220022f00f10c3b0019200241013a00180c120b200241c0126a200241f00c6a41086a41c80510ab051a200241086a20024190136a220410ad030240024020022903e0124202520d00200241186a41206a22014200370300200241186a41186a22004280808080c000370300200241013a0040200242043703282002427f37032020024200370318200241f00c6a41206a22034200370300200241f00c6a41186a22054280808080c000370300200241013a00980d200242043703800d2002427f3703f80c200242003703f00c200241b0196a200241186a200241f00c6a10ae03200241186a41286a2206200241b0196a41286a2903003703002001200241b0196a41206a2903003703002000200241b0196a41186a290300370300200241186a41106a2207200241b0196a41106a290300370300200241186a41086a2208200241b0196a41086a290300370300200220022903b0193703182003420037030020054280808080c000370300200241013a00980d200242043703800d2002427f3703f80c200242003703f00c200241e0196a200241186a200241f00c6a10ae032006200241e0196a41286a2903003703002001200241e0196a41206a2903003703002000200241e0196a41186a2903003703002007200241e0196a41106a2903003703002008200241e0196a41086a290300370300200220022903e0193703182003420037030020054280808080c000370300200241013a00980d200242043703800d2002427f3703f80c200242003703f00c200241901a6a200241186a200241f00c6a10ae032006200241901a6a41286a2903003703002001200241901a6a41206a2903003703002000200241901a6a41186a2903003703002007200241901a6a41106a2903003703002008200241901a6a41086a290300370300200220022903901a3703182003420037030020054280808080c000370300200241013a00980d200242043703800d2002427f3703f80c200242003703f00c200241c81a6a200241186a200241f00c6a10ae032006200241c81a6a41286a2903003703002001200241c81a6a41206a2903003703002000200241c81a6a41186a2903003703002007200241c81a6a41106a2903003703002008200241c81a6a41086a290300370300200220022903c81a3703182003420037030020054280808080c000370300200241013a00980d200242043703800d2002427f3703f80c200242003703f00c200241f81a6a200241186a200241f00c6a10ae032006200241f81a6a41286a2903003703002001200241f81a6a41206a2903003703002000200241f81a6a41186a2903003703002007200241f81a6a41106a2903003703002008200241f81a6a41086a290300370300200220022903f81a3703182003420037030020054280808080c000370300200241013a00980d200242043703800d2002427f3703f80c200242003703f00c200241a81b6a200241186a200241f00c6a10ae032006200241a81b6a41286a2903003703002001200241a81b6a41206a2903003703002000200241a81b6a41186a2903003703002007200241a81b6a41106a2903003703002008200241a81b6a41086a290300370300200220022903a81b3703182003420037030020054280808080c000370300200241013a00980d200242043703800d2002427f3703f80c200242003703f00c200241d81b6a200241186a200241f00c6a10ae032002418c196a2200200241d81b6a41086a290300370200200220022903d81b37028419200241ec1b6a2802002107200241d81b6a41186a2802002101200241d81b6a41206a2802002108200241fc1b6a280200210320022802e81b210520022802f41b210620022903801c2109200241d0186a41086a200029020037030020022002290284193703d0182002280290134109460d01200241003a00f30c418102210020024181023b00f10c200241013a00f00c0c110b20022d000c210a20022802082107200241186a41206a22014200370300200241186a41186a22004280808080c000370300200241013a004020024204370328427f21092002427f37032020024200370318200241f00c6a41206a22054200370300200241f00c6a41186a22064280808080c000370300200241013a00980d200242043703800d2002427f3703f80c200242003703f00c200241d0186a200241186a200241f00c6a10ae03200241186a41286a2208200241d0186a41286a2903003703002001200241d0186a41206a2903003703002000200241d0186a41186a290300370300200241186a41106a220b200241d0186a41106a290300370300200241186a41086a220c200241d0186a41086a290300370300200220022903d0183703182005420037030020064280808080c000370300200241013a00980d200242043703800d2002427f3703f80c200242003703f00c20024180196a200241186a200241f00c6a10ae03200820024180196a41286a290300370300200120024180196a41206a290300370300200020024180196a41186a290300370300200b20024180196a41106a290300370300200c20024180196a41086a2903003703002002200229038019370318200241a81b6a41086a220041afa7c200ad4280808080d001841001220141086a290000370300200220012900003703a81b20011031200241f81a6a41086a2000290300370300200220022903a81b3703f81a200241f00c6a200241f81a6aad4280808080800284220d100210410240024020022802f00c22010d00410021000c010b200241f80c6a2802004104490d032001280000210020022802f40c450d00200110310b2000ad210e024020022903e0124201520d0020022903e81222094200510d04200e200241f0126a290300220f200f200e541b221020097c2010200f7d2009827d21090b200241f00c6a41206a4200370300200241f00c6a41186a4280808080c0003703002002419c0d6a200241db1b6a280000360000200241013a00980d200242043703800d200242003703f00c200220022800d81b3600990d200242002009200e7d220e200e2009561b3703f80c200241b0196a200241186a200241f00c6a10ae03200241d81b6a41286a200241b0196a41286a290300370300200241d81b6a41206a200241b0196a41206a290300370300200241d81b6a41186a200241b0196a41186a290300370300200241d81b6a41106a200241b0196a41106a290300370300200241d81b6a41086a200241b0196a41086a290300370300200220022903b0193703d81b20022802881321004113102d2201450d04200141002900eea7423700002001410f6a41002800fda742360000200141086a41002900f6a74237000020024293808080b0023702fc1a200220013602f81a200241c0126a200241f81a6a1046200241186a41186a220520023502801b42208620023502f81a841000220141186a290000370300200241186a41106a2206200141106a290000370300200241186a41086a2208200141086a2900003703002002200129000037031820011031200241a81b6a41186a2005290300370300200241a81b6a41106a2006290300370300200241a81b6a41086a2008290300370300200220022903183703a81b024020022802fc1a450d0020022802f81a10310b200241186a200241a81b6aad4280808080800484100210410240024020022802182201450d00200241206a2802004104490d07200128000021080240200228021c450d00200110310b200820004d0d01200220022800c81a3602c01a2002200241cb1a6a2800003600c31a200241003a001b20024180063b0019200241013a001820022802e81b21030240200241f01b6a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b0240200241ec1b6a280200450d00200310310b20022802f41b21030240200241fc1b6a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b200241f81b6a280200450d13200310310c130b410021080b410c102d2205450d064104102d2201450d072002420437021c20022001360218200241c0126a200241186a104602400240200228021c2206200228022022016b4104490d002002280218210b0c010b200141046a220b2001490d1420064101742201200b2001200b4b1b22014100480d140240024020060d002001102d210b0c010b200228021820062001102f210b0b200b450d092002200136021c2002200b360218200228022021010b410421062002200141046a360220200b20016a2000360000200241a81b6a41086a200228022022013602002002200229031822093703a81b200541086a200136020020052009370200410021010240200820004f0d00410c102d2206450d0a4104102d2201450d0b2002420437021c20022001360218200241c0126a200241186a104602400240200228021c2208200228022022016b4104490d00200228021821080c010b200141046a220b2001490d1520084101742201200b2001200b4b1b22014100480d150240024020080d002001102d21080c010b200228021820082001102f21080b2008450d0d2002200136021c20022008360218200228022021010b2002200141046a360220200820016a2000417f6a360000200241a81b6a41086a200228022022013602002002200229031822093703a81b200641086a200136020020062009370200410121010b200241f00c6a41206a428180808010370300200241f00c6a41186a2001360200200241840d6a2001360200200220022800c81a3602c01a2002200241cb1a6a2800003600c31a2002419c0d6a20022800c31a360000200241013a00980d2002200536028c0d200220063602800d2002427f3703f80c20022007ad22093703f00c200220022802c01a3600990d200241e0196a200241d81b6a200241f00c6a10ae03200241d81b6a41286a200241e0196a41286a290300370300200241d81b6a41206a200241e0196a41206a290300370300200241d81b6a41186a200241e0196a41186a290300370300200241d81b6a41106a200241e0196a41106a290300370300200241d81b6a41086a200241e0196a41086a290300370300200220022903e0193703d81b200241186a200a4101712200200310af0320022d00180d0e200241a81b6a41086a220541fdc5c400ad4280808080a003841001220141086a290000370300200220012900003703a81b20011031200241f81a6a41086a2005290300370300200220022903a81b3703f81a200241186a200d1002104102400240200228021822010d00410021050c010b200241186a41086a2802004104490d0d20012800002105200228021c450d00200110310b41800c2101417f2005418094ebdc034180afd0e50220001b2206200720062007491b6a220820082005491b20064d0d0d0c0f0b200241f00c6a20024194136a10b003024020022d00f00c4101470d0020022f00f10c20022d00f30c4110747221000c100b200241f81a6a41286a2200200241f00c6a41306a290300370300200241f81a6a41206a220b200241f00c6a41286a220c290300370300200241f81a6a41186a220a200241f00c6a41206a2211290300370300200241f81a6a41106a2212200241f00c6a41186a2213290300370300200241f81a6a41086a2214200241f00c6a41106a2215290300370300200220022903f80c3703f81a200241d81b6a41086a200241d0186a41086a290300370300200241fc1b6a2003360200200241d81b6a41206a2008360200200241d81b6a41186a2001360200200241ec1b6a2007360200200220022903d0183703d81b200220093703801c200220063602f41b200220053602e81b200c20002903003703002011200b2903003703002013200a29030037030020152012290300370300200241f00c6a41086a2014290300370300200220022903f81a3703f00c200241a81b6a200241d81b6a200241f00c6a10ae03200241186a41086a20022903a81b370300200241186a41106a200241a81b6a41086a290300370300200241186a41186a200241a81b6a41106a290300370300200241186a41206a200241a81b6a41186a290300370300200241186a41286a200241a81b6a41206a290300370300200241186a41306a200241a81b6a41286a290300370300200241003a00180c100b200241dc006a4102360200200241f4066a4102360200200242023702e406200241c8a2c2003602e00620024102360254200241c8a4c200360250200241003602f40c200241f0eac4003602f00c2002200241d0006a3602f0062002200241f00c6a360258200241e0066a41d8a2c20010b301000b41e9bcc0004133200241881c6a419cbdc0001038000b41a0a5c400411941bca5c40010a401000b411341011033000b41e9bcc0004133200241881c6a419cbdc0001038000b410c41041033000b410441011033000b200141011033000b410c41041033000b410441011033000b200141011033000b41e9bcc0004133200241881c6a419cbdc0001038000b200241f00c6a41206a22054200370300200241f00c6a41186a22064280808080c000370300200220022800c81a3602c01a2002200241cb1a6a2800003600c31a2002419c0d6a20022800c31a360000200242043703800d2002427f3703f80c2002427f200920001b3703f00c200220022802c01a3600990d200241013a00980d200241901a6a200241d81b6a200241f00c6a10ae03200241a81b6a41286a2208200241901a6a41286a290300370300200241a81b6a41206a220b200241901a6a41206a290300370300200241a81b6a41186a2201200241901a6a41186a290300370300200241a81b6a41106a220c200241901a6a41106a290300370300200241a81b6a41086a220a200241901a6a41086a290300370300200220022903901a3703a81b200241f00c6a20022903f81220024180136a290300200241c0126a2007200020031063024020022d00f00c4101470d00200220022d00f30c3a001b200220022f00f10c3b0019200241013a001820022802b81b2103024020012802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b0240200241bc1b6a280200450d00200310310b20022802c41b21030240200241cc1b6a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b200241c81b6a280200450d04200310310c040b200241d81b6a41286a200241f00c6a41306a2200290300370300200241d81b6a41206a200241f00c6a41286a290300370300200241d81b6a41186a2005290300370300200241d81b6a41106a2006290300370300200241d81b6a41086a200241f00c6a41106a290300370300200220022903f80c3703d81b200241c81a6a200241a81b6a200241d81b6a10ae032008200241c81a6a41286a290300370300200b200241c81a6a41206a2903003703002001200241c81a6a41186a290300370300200c200241c81a6a41106a290300370300200a200241c81a6a41086a290300370300200220022903c81a3703a81b200241f00c6a200410f201024020022d00f00c4101470d00200220022d00f30c3a001b200220022f00f10c3b0019200241013a001820022802b81b21030240200241c01b6a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b0240200241bc1b6a280200450d00200310310b20022802c41b21030240200241cc1b6a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b200241c81b6a280200450d04200310310c040b200241d81b6a41286a2000290300370300200241d81b6a41206a200241f00c6a41286a290300370300200241d81b6a41186a200241f00c6a41206a290300370300200241d81b6a41106a200241f00c6a41186a290300370300200241d81b6a41086a200241f00c6a41106a290300370300200220022903f80c3703d81b200241f81a6a200241a81b6a200241d81b6a10ae03200241186a41086a20022903f81a370300200241186a41106a200241f81a6a41086a290300370300200241186a41186a200241f81a6a41106a290300370300200241186a41206a200241f81a6a41186a290300370300200241186a41286a200241f81a6a41206a290300370300200241186a41306a200241f81a6a41286a290300370300200241003a00180c030b20022f001920022d001b4110747221010b200220022800c81a3602c01a2002200241cb1a6a2800003600c31a200241013a0018200220013b0019200220014110763a001b20022802e81b21030240200241f01b6a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b0240200241ec1b6a280200450d00200310310b20022802f41b21030240200241fc1b6a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b200241f81b6a280200450d01200310310c010b200241013a0018200220003b0019200220004110763a001b02402001450d002001410c6c21002005210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b02402007450d00200510310b02402003450d002003410c6c21002006210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b2008450d00200610310b200410d60120022d001821000b0240024002400240024002404101102d2201450d00200242013702c412200220013602c01202400240200041ff01714101460d00200241013602c812200141003a0000200241206a2903002109024020022802c4122200417f6a41074b0d00200041017422034109200341094b1b22034100480d09200120002003102f2201450d04200220033602c412200220013602c0120b200241093602c81220012009370001200241306a2802002100200241386a2802002201200241c0126a106f02402001450d0020002001410c6c6a2108034020002802002106200041086a2802002201200241c0126a106f0240024020022802c412220520022802c81222036b2001490d0020022802c01221050c010b200320016a22072003490d0b200541017422042007200420074b1b22074100480d0b0240024020050d002007102d21050c010b20022802c01220052007102f21050b2005450d07200220073602c412200220053602c0120b2002200320016a3602c812200520036a2006200110ab051a2000410c6a22002008470d000b0b2002413c6a2802002100200241c4006a2802002201200241c0126a106f0240024020010d0020022802c412210620022802c81221080c010b20002001410c6c6a2104034020002802002107200041086a2802002201200241c0126a106f0240024020022802c412220620022802c81222036b2001490d0020022802c01221050c010b200320016a22052003490d0b200641017422082005200820054b1b22084100480d0b0240024020060d002008102d21050c010b20022802c01220062008102f21050b2005450d08200220083602c412200220053602c012200821060b2002200320016a22083602c812200520036a2007200110ab051a2000410c6a22002004470d000b0b200241286a290300210902400240200620086b4108490d0020022802c01221010c010b200841086a22012008490d09200641017422002001200020014b1b22004100480d090240024020060d002000102d21010c010b20022802c01220062000102f21010b2001450d07200220003602c412200220013602c0120b2002200841086a3602c812200120086a2009370000200241c8006a2d00002105024020022802c41220022802c8122200470d00200041016a22032000490d09200041017422062003200620034b1b22034100480d090240024020000d002003102d21010c010b200120002003102f21010b2001450d08200220033602c412200220013602c0120b2002200041016a22033602c812200120006a20053a00000c010b200241013602c812200141013a0000200241186a410172200241c0126a107720022802c812210320022802c01221010b2003ad4220862001ad842109024020022d00180d000240200241386a2802002200450d00200241306a28020021012000410c6c210003400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b0240200241346a280200450d00200228023010310b0240200241c4006a2802002200450d002002413c6a28020021012000410c6c210003400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b200241c0006a280200450d00200228023c10310b200241901c6a240020090f0b410141011033000b200341011033000b200741011033000b200841011033000b200041011033000b200341011033000b1034000bd61f05017f037e077f017e037f230041e01d6b22022400420221030240024002400240024002400240024002400240024002400240200129036822044202520d00200241086a20014198016a41f80410ab051a0c010b200241ce056a200141246a41c20010ab051a20024190066a41086a20014188016a29030037030020024190066a41106a20014190016a290300370300200220014180016a29030037039006200141f8006a2903002103200129037021052001280204210620012d00002107200241c01d6a41026a2208200141036a2d00003a0000200241c8066a41086a2209200141106a290200370300200241c8066a41106a220a200141186a290200370300200241c8066a41186a220b200141206a280200360200200220012f00013b01c01d200220012902083703c80602400240024020074101460d00200241a01d6a41026a20082d00003a000020024190126a41086a200929030037030020024190126a41106a200a29030037030020024190126a41186a200b2d00003a0000200220022f01c01d3b01a01d200220022903c806370390120c010b20024190176a200641067610e3012002280290172107024002402002280298172006413f7122064b0d00410021080c010b200241a01d6a41026a200720064105746a220641026a2d00003a000020024198126a2006410f6a290000370300200241a0126a200641176a290000370300200241a8126a2006411f6a2d00003a0000200220062f00003b01a01d200220062900073703901220062800032106410121080b0240200228029417450d00200710310b20080d00410121070c010b20024190176a41026a200241a01d6a41026a2d00003a0000200241c8066a41086a20024190126a41086a290300370300200241c8066a41106a20024190126a41106a290300370300200241c8066a41186a20024190126a41186a2d00003a0000200220022f01a01d3b01901720022002290390123703c806410021070b200241801d6a41026a220820024190176a41026a2d00003a0000200241900d6a41086a2209200241c8066a41086a290300370300200241900d6a41106a220a200241c8066a41106a290300370300200241900d6a41186a220b200241c8066a41186a2d00003a0000200220022f0190173b01801d200220022903c8063703900d02402007450d00200041013b0001200041013a0000200041036a41003a000020014198016a10d6010c0c0b200241b7066a2009290300370000200241bf066a200a290300370000200241c7066a200b2d00003a0000200220022f01801d3b01a806200220063600ab06200220022903900d3700af06200220082d00003a00aa0620024190176a20014198016a41f80410ab051a200241881c6a41106a20024190066a41106a290300370300200241881c6a41086a20024190066a41086a29030037030020022002290390063703881c41002107200241c01d6a4100109703200241801d6a41086a200241cb1d6a290000370300200241801d6a41106a200241d31d6a290000370300200241951d6a200241c01d6a41186a290000370000200220022900c31d3703801d20022f01c01d210b20022d00c21d210c200241c01d6a41086a220641afa7c200ad4280808080d001841001220141086a290000370300200220012900003703c01d20011031200241a01d6a41086a2006290300370300200220022903c01d3703a01d200241c01d6a200241a01d6aad42808080808002841002104141002101024020022802c01d2206450d00200241c81d6a2802004104490d022006280000210120022802c41d450d00200610310b024020044201520d0020054200510d03417f21072001ad220d20032003200d541b220d200d20037d2005827d220d42ffffffff0f560d00200da721070b4110102d2201450d03200141086a41002900e6a742370000200141002900dea742370000200141104120102f2206450d0420062007360010200241c01d6a41186a22082006ad4280808080c002841000220141186a290000370300200241c01d6a41106a2209200141106a290000370300200241c01d6a41086a220a200141086a290000370300200220012900003703c01d20011031200241a01d6a41186a2008290300370300200241a01d6a41106a220e2009290300370300200241a01d6a41086a200a290300370300200220022903c01d3703a01d20061031410121012002200241a01d6a4120410141004100103f0240024020022802004101460d000c010b200241c01d6a2007109703200241e01c6a41086a200241cb1d6a290000370300200241e01c6a41106a200241d31d6a290000370300200241e01c6a41156a2008290000370000200241a01d6a41086a200241801d6a41086a290300370300200e200241801d6a41106a290300370300200241a01d6a41156a200241801d6a41156a290000370000200220022900c31d3703e01c200220022903801d3703a01d20022f01c01d20022d00c21d411074722106410021010b200241c01c6a41156a2207200241a01d6a41156a290000370000200241c01c6a41106a2208200241a01d6a41106a290300370300200241c01c6a41086a2209200241a01d6a41086a290300370300200241a01c6a41086a220a200241e01c6a41086a290300370300200241a01c6a41106a220e200241e01c6a41106a290300370300200241a01c6a41156a220f200241e01c6a41156a290000370000200220022903a01d3703c01c200220022903e01c3703a01c02402001450d0020024190176a10d601200041036a41003a0000200041800a3b0001200041013a00000c0c0b200241d80c6a41156a22012007290000370000200241d80c6a41106a22072008290300370300200241d80c6a41086a22082009290300370300200241b80c6a41086a2209200a290300370300200241b80c6a41106a220a200e290300370300200241b80c6a41156a220e200f290000370000200220022903c01c3703d80c200220022903a01c3703b80c200241f80c6a41106a220f200241881c6a41106a290300370300200241f80c6a41086a2210200241881c6a41086a290300370300200220022903881c3703f80c20024190126a41046a20024190176a41f80410ab051a200241900d6a20024190126a41fc0410ab051a200241c8066a200241900d6a41046a41f80410ab051a200241f60b6a200b200c41107472220b4110763a0000200241f40b6a220c200b3b0100200241d00b6a2003370300200241c80b6a2005370300200241d80b6a220b20022903f80c370300200241e00b6a2010290300370300200241e80b6a2210200f290300370300200241f70b6a20022903d80c370000200241ff0b6a2008290300370000200241870c6a20072903003700002002418c0c6a2001290000370000200220043703c00b200241d3003602f00b200241960c6a20064110763a0000200241940c6a220720063b0100200241970c6a20022903b80c3700002002419f0c6a2009290300370000200241a70c6a200a290300370000200241ac0c6a200e2900003700004104102d2201450d0520024204370294122002200136029012200241c8066a20024190126a10ad010240024020022903c00b4201510d00024002402002280294122002280298122201460d0020022802901221060c010b200141016a22062001490d0c200141017422082006200820064b1b22084100480d0c0240024020010d002008102d21060c010b20022802901220012008102f21060b2006450d092002200836029412200220063602901220022802981221010b2002200141016a36029812200620016a41003a00000c010b20022903d00b20022903c80b2203420c882204420120044201561b80210402400240200228029412220620022802981222016b4102490d0020022802901221060c010b200141026a22082001490d0b200641017422012008200120084b1b22014100480d0b0240024020060d002001102d21060c010b20022802901220062001102f21060b2006450d092002200136029412200220063602901220022802981221010b2002200141026a36029812200620016a2004a741047420037aa7417f6a22014101200141014b1b2201410f2001410f491b723b00000b201020024190126a1091012002200b3602900d200241900d6a20024190126a10ac0120022802f00b210802400240200228029412220620022802981222016b4104490d0020022802901221060c010b200141046a22092001490d0a200641017422012009200120094b1b22014100480d0a0240024020060d002001102d21060c010b20022802901220062001102f21060b2006450d092002200136029412200220063602901220022802981221010b2002200141046a36029812200620016a2008360000200220024190126a3602900d200c200241900d6a103e200220024190126a3602900d2007200241900d6a103e200228029012210120022802941221070240024020022802981222064180024b0d00200241ce056a20012006200241a8066a10ef0321060c010b200241c01d6a41186a22082006ad4220862001ad841000220641186a290000370300200241c01d6a41106a2209200641106a290000370300200241c01d6a41086a220a200641086a290000370300200220062900003703c01d20061031200241a01d6a41186a2008290300370300200241a01d6a41106a2009290300370300200241a01d6a41086a200a290300370300200220022903c01d3703a01d200241ce056a200241a01d6a4120200241a8066a10ef0321060b02402007450d00200110310b2006450d0a200241a8056a41086a200241a8066a41086a290300370300200241a8056a41106a200241a8066a41106a290300370300200241a8056a41186a200241a8066a41186a29030037030020024180056a41086a200241d00b6a29030037030020024180056a41106a200241d80b6a29030037030020024180056a41186a200241e00b6a290300370300200241a0056a200241e80b6a290300370300200220022903a8063703a8052002200241c80b6a2903003703800520022903c00b2103200241086a200241c8066a41f80410ab051a0b200041086a20022903a805370300200041286a2003370300200041306a200229038005370300200041206a200241a8056a41186a290300370300200041186a200241a8056a41106a290300370300200041106a200241a8056a41086a290300370300200041386a20024180056a41086a290300370300200041c0006a20024180056a41106a290300370300200041c8006a20024180056a41186a290300370300200041d0006a20024180056a41206a290300370300200041d8006a200241086a41f80410ab051a200041003a0000200241e01d6a24000f0b41e9bcc0004133200241e01c6a419cbdc0001038000b41a0a5c400411941bca5c40010a401000b411041011033000b412041011033000b410441011033000b200841011033000b200141011033000b200141011033000b1034000b20004180083b0001200041013a0000200041036a41003a0000200241c8066a10d6010b200241e01d6a24000bea0301037f230041206b22022400410021034190ce0021040240024002400240024002400240024002400240024002400240024020012802000e130d000d010d0204040d0d0d0d05060d07080d090d0b417f2104200141086a280200417f6a220141064b0d0a4101210320010e070c0a0b090b0b0b0c0b200141086a280200417f6a220141034b0d0941c0843d21044100210320010e040b010b0b0b0b200141086a280200417f6a220141024b0d0841c0843d21044100210320010e030a000a0a0b41d086032104410121030c090b410121034190ce0021040c080b41f093092104410021030c070b200141086a2d0000417f6a220141104b0d0441a0c21e2104410021030240024020010e110808060006060101080801060303060303080b4180b5182104410021030c070b41b0e32d2104410021030c060b2001280204417f6a220141024b0d03410021044101210320010e03050305050b41002104410121030c040b410021034190ce002104200141086a280200417f6a4103490d03200241146a410136020020024201370204200241d494c4003602002002410236021c200241cc94c4003602182002200241186a360210200241dc94c40010b301000b41c09a0c21040c020b410021030b4190ce0021040b200020033a000420002004360200200241206a24000bd40505017f027e077f017e017f230041206b220324002002290300210420012903002105200141106a2106200228021021070240024002400240024002400240200141146a2802002208200141186a28020022096b200241186a280200220a490d00200628020021080c010b2009200a6a220b2009490d032008410174220c200b200c200b4b1b220bad420c7e220d422088a70d03200da7220c4100480d030240024020080d00200c102d21080c010b20062802002008410c6c200c102f21080b2008450d0120012008360210200141146a200b3602000b20082009410c6c6a2007200a410c6c10ab051a200141186a2009200a6a36020020024100360218200341086a200641086a280200360200200320062902003703002001411c6a2106200228021c210b02400240200141206a2802002208200141246a28020022096b200241246a280200220a490d00200628020021080c010b2009200a6a220c2009490d032008410174220e200c200e200c4b1b220cad420c7e220d422088a70d03200da7220e4100480d030240024020080d00200e102d21080c010b20062802002008410c6c200e102f21080b2008450d022001200836021c200141206a200c3602000b427f200520047c220420042005541b210520082009410c6c6a200b200a410c6c10ab051a200141246a2009200a6a36020020024100360224200341106a41086a200641086a28020036020020032006290200370310200229030822042001290308220d200d2004561b210420012d0028450d034101210120022d0028450d030c040b200c41041033000b200e41041033000b1034000b410021010b20002005370300200020032903003702102000200329031037021c200020013a002820002004370308200041186a200341086a280200360200200041246a200341106a41086a2802003602000240200241146a280200450d00200710310b0240200241206a280200450d00200b10310b200341206a24000bc00202047f017e230041306b22032400200341186a41086a22044197c6c400ad4280808080f002841001220541086a2900003703002003200529000037031820051031200341086a41086a200429030037030020032003290318370308200341186a200341086aad428080808080028410021041024002400240200328021822060d00410021050c010b20042802004104490d0120062800002105200328021c450d00200610310b02400240417f200520026a220420042005491b22054280808080f28ba80942808080c0f588fe0620011b22072007428094ebdc038022074280ec94a37c7e7c4280cab5ee01562007a76a4b0d00200041046a2005360200410021050c010b200041800c3b0001200041036a41003a0000410121050b200020053a0000200341306a24000f0b41e9bcc0004133200341286a419cbdc0001038000bcd0d04057f017e077f017e230041c0006b2202240020012802202103200241286a41086a220441fcdbc200ad4280808080a002841001220541086a2900003703002002200529000037032820051031200241086a200429030037030020022002290328370300200241106a2002ad428080808080028410021041024002400240024002400240024002400240024002400240024020022802102204450d00200228021421062002200241106a41086a28020036022420022004360220200241286a200241206a10890120022802282205450d02200229022c21072006450d01200410310c010b42002107410121050b0240024020032007422088a74f0d002003200520034105746a10b303210402402007a7450d00200510310b2004450d0120004180063b0001200041013a0000200041036a41003a00000c0c0b2007a7450d00200510310b0240024002400240024010b5032208200128021c470d00200241086a220441edd1c200ad4280808080d001841001220541086a2900003703002002200529000037030020051031200241286a41086a200429030037030020022002290300370328200241106a200241286aad4280808080800284100210410240024020022802102205450d00200228021421042002200241106a41086a280200360224200220053602202002200241206a10800120022802002209450d08200229020421072004450d01200510310c010b2001280220210341012109420021070b20032007422088a74f0d03200920034105746a220a450d032002410036023020024201370328200128020021054104102d2203450d0720024284808080c00037022c2002200336022820032005360000200128020421062001410c6a2802002203200241286a106f200228022c2204200228023022056b2003490d01200228022821040c020b20004180063b0001200041013a0000200041036a41003a00000c0e0b200520036a220b2005490d0a2004410174220c200b200c200b4b1b220b4100480d0a0240024020040d00200b102d21040c010b20022802282004200b102f21040b2004450d062002200b36022c200220043602280b2002200520036a360230200420056a2006200310ab051a200141106a2802002105200141186a2802002203200241286a106f0240024020030d00200228022c21062002280230210d0c010b20052003410c6c6a210e03402005280200210c200541086a2802002203200241286a106f02400240200228022c2206200228023022046b2003490d002002280228210b0c010b200420036a220b2004490d0c2006410174220d200b200d200b4b1b220d4100480d0c0240024020060d00200d102d210b0c010b20022802282006200d102f210b0b200b450d092002200d36022c2002200b360228200d21060b2002200420036a220d360230200b20046a200c200310ab051a2005410c6a2205200e470d000b0b200128021c2104024002402006200d6b4104490d00200d41046a2105200228022821030c010b200d41046a2205200d490d0a200641017422032005200320054b1b220b4100480d0a0240024020060d00200b102d21030c010b20022802282006200b102f21030b2003450d082002200b36022c20022003360228200b21060b200220053602302003200d6a20043600002001280220210b02400240200620056b41034d0d00200621040c010b200541046a22042005490d0a2006410174220c2004200c20044b1b22044100480d0a0240024020060d002004102d21030c010b200320062004102f21030b2003450d092002200436022c200220033602280b200320056a200b360000200141246a200541046aad4220862003ad84200a101a210502402004450d00200310310b20054101460d010b20004180083b0001200041013a0000200041036a41003a00002007a7450d0b200910310c0b0b410c102d2203450d084104102d2205450d0920024284808080c00037022c2002200536022820052008360000200a200241286a1046200241086a2002280230220536020020022002290328220f370300200341086a20053602002003200f370200200041306a41013a0000200041286a428180808010370200200041246a2003360200200041206a4100360200200041186a4204370300200041106a42e400370300200041086a427f370300200041316a2002280028360000200041346a2002412b6a280000360000200041003a00002007a7450d0a200910310c0a0b41e9bcc0004133200241386a419cbdc0001038000b41e9bcc0004133200241386a419cbdc0001038000b410441011033000b200b41011033000b200d41011033000b200b41011033000b200441011033000b1034000b410c41041033000b410441011033000b200241c0006a24000be93809027f017e027f017e027f017e047f017e177f230041b0076b22022400024002400240024002400240024002400240024020014104490d0020002800002101410041002802fced442200410120001b3602fced440240200041014b0d000240024020000e020001000b410041f4c1c4003602f4ed44410041f3c1c4003602f0ed44410041023602fced440c010b034041002802fced444101460d000b0b10144101470d06200241c8006a41086a220341dcd1c200ad42808080809002841001220041086a290000370300200220002900003703482000103120024198016a41086a20032903003703002002200229034837039801200241c8006a20024198016aad428080808080028422041002104141002105410021060240024020022802482200450d0020032802004104490d0120002800002106200228024c450d00200010310b20024198016a41004191d2c200ad4280808080c00384101510410240024020022802980122000d00410121030c010b200229029c012207422088a72203450d0420002d0000220541014b0d042003417f6a2103410021080240024020050e020100010b410121080b20034104490d042000280001210502400240024020080d0020052001460d0141002103200520014f0d02410121030c020b4101210320052006490d010b410021030b200021050b200620014f0d022003450d0202404101102d2200450d00200041003a00000240200041014105102f2200450d0020002001360001200220053602482002200737024c20024198016a200241c8006a109a01200228029c01210341004191d2c200ad4280808080c0038420023502a0014220862002280298012208ad842000ad4280808080d000841016210602402003450d00200810310b02402005450d002007a7450d00200510310b2000103120064101470d0920022001360200200241c8006a41086a220141edd1c200ad4280808080d001841001220041086a290000370300200220002900003703482000103120024198016a41086a20012903003703002002200229034837039801200241086a20041002104102400240024020022802082200450d00200228020c21012002200241086a41086a28020036028c012002200036028801200241c8006a20024188016a10800120022802482209450d02200229024c210a2001450d01200010310c010b4200210a410121090b20024198016a41e9dabdf30610b2032002280298012106200228029c0121080240024002400240024020022802a00122010d004100210b4101210c4100210d0c010b20014105742200410575220b41ffffff3f71200b470d1120004100480d112000102d220c450d01200620006a210e20014105742105410021000340200620006a22012900002107200141086a2900002104200141106a290000210f200c20006a220341186a200141186a290000370000200341106a200f370000200341086a2004370000200320073700002005200041206a2200470d000b200e20066b41606a41057641016a210d0b02402008450d00200610310b200d4115490d0b4101450d02200d41017622104105742200417f4c0d022000102d2211450d01200c41606a2112200c41a07f6a211341042114410021154100211641002117200d2118034020182108410021184101210502402008417f6a2203450d00024002400240024002400240200c20034105746a2008410574220e200c6a41406a412010ad054100480d002008417e6a21062013200e6a210041002118410021010340024020062001470d00200821050c080b200141016a2101200041206a2000412010ad052103200041606a21002003417f4a0d000b200141016a21052001417f7320086a21030c010b2013200e6a210002400340024020034101470d00410021030c020b2003417f6a2103200041206a2000412010ad052101200041606a210020014100480d000b0b20082003490d012008200d4b0d03200820036b22054101762206450d002012200e6a2100200c20034105746a2101034020024198016a41186a220e200141186a221929000037030020024198016a41106a221a200141106a221b29000037030020024198016a41086a221c200141086a221d2900003703002002200129000037039801200041086a221e2900002107200041106a221f2900002104200041186a2218290000210f200120002900003700002019200f370000201b2004370000201d20073700002018200e290300370000201f201a290300370000201e201c2903003700002000200229039801370000200041606a2100200141206a21012006417f6a22060d000b0b024020030d00200321180c050b0240200541094d0d00200321180c050b2008200d4b0d01200820036b2106200c20034105746a210e034020082003417f6a2218490d040240200820186b22054102490d00200c20034105746a2200200c20184105746a2203412010ad05417f4a0d0020024198016a41186a221c200341186a220129000037030020024198016a41106a221d200341106a221929000037030020024198016a41086a221e200341086a221a290000370300200220032900003703980120032000290000370000201a200041086a2900003700002019200041106a2900003700002001200041186a2900003700004101211b024020054103490d00200341c0006a20024198016a412010ad05417f4a0d0041022101200e210002400340200041186a200041386a290000370000200041106a200041306a290000370000200041086a200041286a2900003700002000200041206a221929000037000020062001460d01200041c0006a211a2001211b20192100200141016a2101201a20024198016a412010ad05417f4a0d020c000b0b2001211b0b2003201b4105746a2200200229039801370000200041186a201c290300370000200041106a201d290300370000200041086a201e2903003700000b2018450d05200e41606a210e200641016a2106201821032005410a4f0d050c000b0b20032008107b000b20082003417f6a2218490d010b2008200d10b601000b20182008107b000b02400240024020172015470d00201541016a22002015490d14201541017422012000200120004b1b220041ffffffff01712000470d14200041037422014100480d140240024020150d002001102d21140c010b201420154103742001102f21140b2014450d0120002115201621170b201420174103746a2200200536020420002018360200201641016a2217211620174102490d0102400340024002400240024020142017417f6a22164103746a2200280200450d00201741037420146a220641746a2802002203200028020422014d0d000240201741024b0d0020172116410221172018450d140c090b20142017417d6a221c4103746a2802042200200120036a4d0d010240201741034b0d0020172116410321172018450d140c090b200641646a280200200020036a4d0d01201721160c070b20174103490d012000280204210120142017417d6a221c4103746a28020421000b20002001490d010b2017417e6a211c0b0240024002400240024002402017201c41016a22204b2221450d002017201c4b2222450d012014201c4103746a221d2802042223201d2802006a2200201420204103746a221e280200221f490d022000200d4b0d03200c201f4105746a221a201e280204221b41057422016a2106200041057421032000201f6b2208201b6b2200201b4f0d04201120062000410574220110ab05221920016a210502400240201b4101480d00200041014e0d010b20062100201921010c060b201220036a21032006210003402003200041606a2206200541606a220820082006412010ad05410048220e1b2201290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020052008200e1b21050240201a20062000200e1b2200490d00201921010c070b200341606a21032019210120192005490d000c060b0b41e49cc40020202017104b000b41e49cc400201c2017104b000b201f2000107b000b2000200d10b601000b2011201a200110ab05221920016a210502400240201b4101480d002008201b4a0d010b201a2100201921010c010b200c20036a210e20192101201a2100034020002006200120062001412010ad0541004822081b2203290000370000200041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a2900003700002001200141206a20081b2101200041206a2100200641206a200620081b2206200e4f0d01200520014b0d000b0b20002001200520016b41607110ab051a02402022450d00201d201f360200201d41046a2023201b6a3602002021450d02201e201e41086a20172020417f736a41037410ac051a20162117201641014d0d040c010b0b41f49cc400201c2017104b000b41daaec000411d419cdec40010a401000b200141041033000b2018450d0b0c000b0b200041011033000b200041011033000b1032000b41e9bcc0004133200241a8076a419cbdc0001038000b410541011033000b410141011033000b41e9bcc0004133200241a8076a419cbdc0001038000b200241d4006a4102360200200241ac016a41023602002002420237029c01200241c8a2c200360298012002410236024c200241e4a4c2003602482002410036020c200241f0eac4003602082002200241c8006a3602a8012002200241086a36025020024198016a41d8a2c20010b301000b2000450d042007a7450d04200510310c040b02402007a7450d00200010310b41a4b0c100ad4280808080d0058410070c030b02402015450d00201410310b2010450d01201110310c010b200d4102490d00200c200d417f6a22014105746a21054101210303400240024002400240200d20012200417f6a2201490d00200d20016b22084102490d03200c20004105746a2200200c20014105746a2206412010ad05417f4a0d0320024198016a41186a2217200641186a220e29000037030020024198016a41106a221b200641106a221929000037030020024198016a41086a2214200641086a221a290000370300200220062900003703980120062000290000370000201a200041086a2900003700002019200041106a290000370000200e200041186a2900003700004101210020084103490d02200641c0006a20024198016a412010ad05417f4a0d0241002108200521000340200041186a200041386a290000370000200041106a200041306a290000370000200041086a200041286a2900003700002000200041206a221929000037000020032008220e460d02200e417f6a2108200041c0006a211a20192100201a20024198016a412010ad05417f4a0d020c000b0b2001200d107b000b4102200e6b21000b200620004105746a2200200229039801370000200041186a2017290300370000200041106a201b290300370000200041086a20142903003700000b200541606a21052003417f6a210320010d000b0b200aa72120024002400240200a422088a722000d004100210341012100410021010c010b200920004105746a211a200241c8006aad4280808080800284210a200241b0026a2110200241d9026a211c20024198016a410272211d410121184100211f4100211e41002108200921050240024002400340024002400240200d41014b0d004101210041002103410021010240200d0e020800080b0340200541086a2900002107200541106a29000021042005290000210f20024198016a41186a200541186a29000037030020024198016a41106a200437030020024198016a41086a20073703002002200f37039801200c20024198016a412010ad05450d02200841016a2108201a200541206a2205470d000c070b0b0340200541086a2900002107200541106a29000021042005290000210f20024198016a41186a200541186a29000037030020024198016a41106a200437030020024198016a41086a20073703002002200f3703980141002100200d210103402001410176220320006a22062000200c20064105746a20024198016a412010ad054101481b2100200120036b220141014b0d000b200541206a2105200c20004105746a20024198016a412010ad05450d02200841016a21082005201a460d060c000b0b200541206a2105410021000b0240200d20004b0d0041e49cc4002000200d104b000b2002200836020420024198016a41086a220341fcdbc200ad4280808080a002841001220141086a290000370300200220012900003703980120011031200241c8006a41086a222220032903003703002002200229039801370348200241086a200a1002104102400240024002400240024002400240024002400240024020022802082203450d00200228020c21062002200228021036028c01200220033602880120024198016a20024188016a1089012002280298012201450d02200229029c0121072006450d01200310310c010b42002107410121010b0240024020082007422088a74f0d002008200120084105746a10b303210302402007a7450d00200110310b2003450d010c0a0b2007a7450d00200110310b20024198016a10b40302402002280298012211450d0020022802ac01212120022802a801212420022802a401212320022802a0012116200228029c0121252002280200211510b503211220022802042113200241003602a00120024201370398014104102d2201450d0220024284808080c00037029c01200220013602980120012015360000201620024198016a106f02400240200228029c01220320022802a00122016b2016490d0020022802980121030c010b200120166a22062001490d152003410174220e2006200e20064b1b22064100480d150240024020030d002006102d21030c010b20022802980120032006102f21030b2003450d042002200636029c0120022003360298010b2002200120166a3602a001200320016a2011201610ab051a202120024198016a106f2021450d0420232021410c6c6a211420232103034020032802002117200341086a280200220120024198016a106f02400240200228029c01220e20022802a00122066b2001490d0020022802980121190c010b200620016a22192006490d16200e410174221b2019201b20194b1b221b4100480d1602400240200e0d00201b102d21190c010b200228029801200e201b102f21190b2019450d072002201b36029c012002201936029801201b210e0b2002200620016a221b3602a001201920066a2017200110ab051a2003410c6a22032014470d000c070b0b410221060c060b41e9bcc0004133200241a8076a419cbdc0001038000b410441011033000b200641011033000b200228029c01210e20022802a001211b0c010b201b41011033000b02400240200e201b6b4104490d0020022802980121010c010b201b41046a2201201b490d0e200e41017422032001200320014b1b22034100480d0e02400240200e0d002003102d21010c010b200228029801200e2003102f21010b2001450d042002200336029c0120022001360298012003210e0b2002201b41046a22033602a0012001201b6a201236000002400240200e20036b41034d0d00200e21060c010b200341046a22062003490d0e200e41017422192006201920064b1b22064100480d0e02400240200e0d002006102d21010c010b2001200e2006102f21010b2001450d062002200636029c0120022001360298010b200120036a201336000020024198016a41e9dabdf306200c20004105746a2001201b41086a10b60320022d0098014101460d0102402006450d00200110310b02402025450d00201110310b02402021450d002021410c6c21012023210003400240200041046a280200450d00200028020010310b2000410c6a2100200141746a22010d000b0b410121062024450d00202310310b4100210102402020450d00200910310b20182100201f21030c080b200241086a41086a2200201d41086a290000370300200241086a41106a2203201d41106a290000370300200241086a41186a220e201d41186a290000370300200241086a41206a2219201d41206a290000370300200241086a41286a2217201d41286a290000370300200241086a41306a221b201d41306a290000370300200241086a41376a2214201d41376a2900003700002002201d29000037030820022d009901212602402006450d00200110310b200241c8006a41376a22012014290000370000200241c8006a41306a2206201b290300370300200241c8006a41286a221b2017290300370300200241c8006a41206a22172019290300370300200241c8006a41186a2219200e290300370300200241c8006a41106a220e20032903003703002022200029030037030020022002290308370348024041002802f8ed444103490d002002412a360294012002412a36028c0120022002360290012002200241046a3602880141002802f4ed44210041002802f0ed44210341002802fced44211420024196033602d801200242d3808080103703d001200241d6d2c2003602cc012002420e3702c401200241c8d2c2003602c001200242023703b801200242023703a801200241b0d2c2003602a401200241083602a001200241c0d2c20036029c012002410336029801200041e4d2c300201441024622141b2802102100200220024188016a3602b401200341f0eac40020141b20024198016a20001101000b201c2002290348370000201c41086a2022290300370000201c41106a200e290300370000201c41186a2019290300370000201c41206a2017290300370000201c41286a201b290300370000201c41306a2006290300370000201c41376a2001290000370000200220263a00d802200220133602d402200220123602d002200220213602cc02200220243602c802200220233602c402200220163602c002200220253602bc02200220113602b802200220153602b402200241093602b0022002420237038002200220024198016a3602a80720024188016a200241a8076a10ab01200228028801200228028c0120022802900110b8032100201010d6010240201f201e470d00201f41016a2201201f490d0c201f41017422032001200320014b1b22014100480d0c02400240201f0d002001102d21180c010b2018201f2001102f21180b2018450d052001211f0b2018201e6a4103410420001b3a0000201e41016a211e0b200841016a210820182100201f2103201e21012005201a460d050c010b0b200341011033000b200641011033000b200141011033000b20182100201f2103201e21010b02402020450d00200910310b4104210602400240024002402001450d00024020002d00002208417c6a220541014b0d0020050e020201020b200821060b20030d010c020b0240024020014101470d00410421060c010b20002d00012206417c6a220541014b0d0041042106024020050e020001000b4102210503402005450d08024020012005470d00410421060c020b200020056a2108200541016a21054104210620082d000022084104460d000b20084105460d00200821060b2003450d010b200010310b4101210120064104470d00200228020021014101102d2200450d02200041013a0000200041014105102f2200450d032000200136000141004191d2c200ad4280808080c003842000ad4280808080d00084101720001031200b450d01200c10310c010b0240200b450d00200c10310b02402001200345720d00200010310b412e210341d1b0c100210020024188016a2101024002400240024020060e0400010203000b412d210341a4b0c1002100200241086a21010c020b411f21034185b0c1002100200241c8006a21010c010b41d7afc100210020024198016a21010b20012003360204200120003602002003ad4220862000ad8410070b200241b0076a240042010f0b410141011033000b410541011033000b1034000b8b0503017f017e0a7f230041e0006b220224002002200136020c20022002410c6a102222034220883e0214200220033e02102002200241106a102c024020022802000d00024002400240200228021422044160712205417f4c0d002002280204210602400240200441057622010d00410121070c010b2005102d2207450d020b2001ad2103024002402006450d0041002108034020042109200241003a0058200841016a210841002101024002400240034020092001460d01200241386a20016a200228021022052d00003a00002002200541016a3602102002200141016a22053a00582005210120054120470d000b200241186a41186a220a200241386a41186a290300370300200241186a41106a220b200241386a41106a290300370300200241186a41086a220c200241386a41086a290300370300200220022903383703182003a72003422088a72201470d020240200141016a22042001490d002001410174220d20042004200d491b220441ffffff3f712004470d002004410574220d41004e0d020b1034000b200241003602140240200141ff0171450d00200241003a00580b2003a7450d08200710310c080b0240024020010d00200d102d21070c010b20072001410574200d102f21070b2007450d062003428080808070832004ad8421030b200920056b2104200720014105746a22012002290318370000200141186a200a290300370000200141106a200b290300370000200141086a200c29030037000020034280808080107c210320082006470d000b2002200920056b3602140c010b2007450d040b2000200337020420002007360200200241e0006a24000f0b1032000b200541011033000b200d41011033000b41c49fc400412e200241386a41b49fc4001038000bfe0801097f230041d0006b2202240010b5032103024002400240024002400240024002400240411b102d2204450d00200441176a4100280096b141360000200441106a410029008fb141370000200441086a4100290087b141370000200441002900ffb0413700002004411b4136102f2205450d012005200336001b200241306a41186a22062005ad4280808080f003841000220441186a290000370300200241306a41106a2207200441106a290000370300200241306a41086a2208200441086a2900003703002002200429000037033020041031200241086a41186a22092006290300370300200241086a41106a2007290300370300200241086a41086a200829030037030020022002290330370308200510314120102d2204450d0220042002290308370000200441186a2009290300370000200441106a200241086a41106a2207290300370000200441086a200241086a41086a22082903003700002002200036022c20062002412c6aad4280808080c000841000220541186a290000370300200241306a41106a2200200541106a290000370300200241306a41086a220a200541086a290000370300200220052900003703302005103120092006290300370300200720002903003703002008200a290300370300200220022903303703082004412041c000102f2204450d0320042002290308370020200441386a200241206a290300370000200441306a2007290300370000200441286a2008290300370000410121052002200441c000410141004100103f2002280200210620041031024020064101460d004117102d2204450d052004410f6a4100290089d242370000200441086a4100290082d242370000200441002900fad14237000020044117412e102f2205450d0620052003360017200241306a41186a22062005ad4280808080b003841000220441186a290000370300200241306a41106a2209200441106a290000370300200241306a41086a2207200441086a2900003703002002200429000037033020041031200241086a41186a22082006290300370300200241086a41106a22062009290300370300200241086a41086a200729030037030020022002290330370308200510314120102d2204450d0720042002290308370000200441186a2008290300370000200441106a2006290300370000200441086a200241086a41086a2205290300370000200241086a200110af022004412041c000102f2204450d0820042002290308370020200441386a200241206a290300370000200441306a200241186a290300370000200441286a2005290300370000200241306a2004ad42808080808008841002104102400240200228023022050d00410021060c010b200241386a2802004104490d0a20052800002109410121062002280234450d00200510310b20041031200620094100477121050b200241d0006a240020050f0b411b41011033000b413641011033000b412041011033000b41c00041011033000b411741011033000b412e41011033000b412041011033000b41c00041011033000b41e9bcc0004133200241086a419cbdc0001038000b890603017f017e0c7f230041306b22012400200110212202a7220336022020012002422088a7220436022402402004450d0020032d0000210520012004417f6a3602242001200341016a360220200541014b0d00024002400240024002400240024002400240024020050e020001000b200141186a200141206a102c20012802180d0920012802242203200128021c2206490d092006417f4c0d020240024020060d004101210741010d010c0b0b2006107a2207450d08200720012802202204200610ab0521052001200320066b3602242001200420066a3602202005450d0a0b200141106a200141206a102c20012802100d082001280224410c6e2208410c6c2203417f4c0d02200128021421090240024020030d004104210a0c010b2003102d220a450d040b024002402009450d004100210b410021044100210c0340200141086a200141206a102c20012802080d0220012802242205200128020c2203490d022003417f4c0d050240024020030d004101210d0c010b2003107a220d450d08200d2001280220220e200310ab051a2001200520036b3602242001200e20036a3602200b200c41016a21050240200c2008470d00200b2005200b20054b1b2208ad420c7e2202422088a70d0a2002a7220e4100480d0a02400240200c0d00200e102d210a0c010b200a2004200e102f210a0b200a450d090b200a20046a220c200d360200200c41046a2003ad2202422086200284370200200b41026a210b2004410c6a21042005210c20092005470d000b0b200a450d0920070d020c0a0b0240200c450d00200a210303400240200341046a280200450d00200328020010310b2003410c6a2103200441746a22040d000b0b2008450d08200a10310c080b410021070b2000200636020420002007360200200041146a2009360200200041106a20083602002000410c6a200a360200200041086a2006360200200141306a24000f0b1032000b200341041033000b200341011033000b200e41041033000b1034000b200641011033000b2006450d00200710310b41c49fc400412e200141286a41f49fc4001038000bc40101037f230041306b22002400200041186a41086a220141e8bfc400ad4280808080c002841001220241086a2900003703002000200229000037031820021031200041086a41086a200129030037030020002000290318370308200041186a200041086aad428080808080028410021041024002400240200028021822020d00410021010c010b20012802004104490d0120022800002101200028021c450d00200210310b200041306a240020010f0b41e9bcc0004133200041286a419cbdc0001038000b8e0402017f017e23004190016b22052400200520013602040240200541046a20022004ad4220862003ad8410232206422088a72201450d002006a722042d0000220341014b0d00410021020240024020030e020100010b41002102200541003a008801200441016a21042001417f6a21010340024020012002470d00200241ff0171450d03200541003a0088010c030b200541c8006a20026a200420026a2d00003a00002005200241016a22033a00880120032102200341c000470d000b200541086a41386a200541c8006a41386a290300370300200541086a41306a200541c8006a41306a290300370300200541086a41286a200541c8006a41286a290300370300200541086a41206a200541c8006a41206a290300370300200541086a41186a200541c8006a41186a290300370300200541086a41106a200541c8006a41106a290300370300200541086a41086a200541c8006a41086a29030037030020052005290348370308410121020b200020023a000020002005290308370001200041096a200541106a290300370000200041116a200541186a290300370000200041196a200541206a290300370000200041216a200541286a290300370000200041296a200541306a290300370000200041316a200541386a290300370000200041396a200541c0006a29030037000020054190016a24000f0b41c49fc400412e200541c8006a41f49fc4001038000bb20201037f23004180016b2202240002400240024002400240200128020022034110710d002000280200210420034120710d012004ad4101200110960221000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141014184a3c3004102200220006a4180016a410020006b10950221000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141014184a3c3004102200220006a4180016a410020006b10950221000b20024180016a240020000f0b2004418001107b000b2004418001107b000b7603017f017e017f230041106b220324000240024002402002ad4220862000ad8410202204428080808010540d00410121022004a72d0000220541014b0d0020050e020102010b41c49fc400412e200341086a41f49fc4001038000b410021020b02402001450d00200010310b200341106a240020020b8d0403067f027e017f230041306b22022400200241086a41e6c8c400ad4280808080c00284100210410240024020022802082203450d00200228020c21042002200241106a280200220536021c20022003360218024002402005450d0020022005417f6a36021c2002200341016a36021820032d00002105200241206a200241186a106d20022802202206450d0020022802242107200541ff01714101460d012007450d00200610310b41e9bcc0004133200241206a419cbdc0001038000b200241286a35020042208621082007ad210902402004450d00200310310b200820098421090c010b41082106420021090b20024100360228200242013703202009422088a72203200241206a106f0240024002402003450d002006200341286c6a210a2006210503402005200241206a1046200541206a29030021080240024020022802242204200228022822036b4108490d00200228022021040c010b200341086a22072003490d04200441017422032007200320074b1b22034100480d040240024020040d002003102d21040c010b200228022020042003102f21040b2004450d032002200336022420022004360220200228022821030b2002200341086a360228200420036a2008370000200a200541286a2205470d000b0b2002350228422086200235022084210802402009a7450d00200610310b200241306a240020080f0b200341011033000b1034000b8e0d02067f017e230041c0016b22022400200241086a22034192a8c400ad42808080808002841001220441086a290000370300200220042900003703002004103120024198016a41086a220520032903003703002002200229030037039801200241f0006a20024198016aad4280808080800284100210410240024002400240024002400240024002400240200228027022060d00410021040c010b200228027421072002200241f0006a41086a280200360254200220063602502002200241d0006a106d20022802002204450d01200229020421082007450d00200610310b200341c2a8c400ad4280808080f001841001220641086a2900003703002002200629000037030020061031200520032903003703002002200229030037039801200241f0006a20024198016a106e20022d0070210320024198016a41186a220620024189016a29000037030020024198016a41106a220720024181016a2900003703002005200241f9006a29000037030020022002290071370398012008420020041b21082004410820041b21040240024020034101460d00200241d0006a41186a4200370300200241d0006a41106a4200370300200241d8006a4200370300200242003703500c010b200241d0006a41186a2006290300370300200241d0006a41106a2007290300370300200241d0006a41086a20024198016a41086a29030037030020022002290398013703500b200241246a2008370200200241186a4204370300200241346a200241d0006a41086a2903003702002002413c6a200241e0006a290300370200200241c4006a200241d0006a41186a2903003702002002200436022020024201370310200242c801370308200242b8173703002002200229035037022c200241013a004c20024100360278200242013703704108102d2203450d012002410836027420022002280278220441086a36027820022003360270200320046a42b817370000200229030821080240024020022802742204200228027822036b4108490d00200228027021040c010b200341086a22052003490d08200441017422032005200320054b1b22034100480d080240024020040d002003102d21040c010b200228027020042003102f21040b2004450d032002200336027420022004360270200228027821030b2002200341086a360278200420036a2008370000200229031021080240024020022802742204200228027822036b4108490d00200228027021040c010b200341086a22052003490d08200441017422032005200320054b1b22034100480d080240024020040d002003102d21040c010b200228027020042003102f21040b2004450d042002200336027420022004360270200228027821030b2002200341086a360278200420036a2008370000200229031821080240024020022802742204200228027822036b4108490d00200228027021040c010b200341086a22052003490d08200441017422032005200320054b1b22034100480d080240024020040d002003102d21040c010b200228027020042003102f21040b2004450d052002200336027420022004360270200228027821030b2002200341086a360278200420036a200837000020022802202104200241286a2802002203200241f0006a106f02402003450d002004200341286c6a210703402004200241f0006a1046200441206a29030021080240024020022802742205200228027822036b4108490d00200228027021050c010b200341086a22062003490d0a200541017422032006200320064b1b22034100480d0a0240024020050d002003102d21050c010b200228027020052003102f21050b2005450d082002200336027420022005360270200228027821030b2002200341086a360278200520036a20083700002007200441286a2204470d000b0b2002412c6a200241f0006a107020022d004c210502400240200228027420022802782203460d00200228027021040c010b200341016a22042003490d08200341017422062004200620044b1b22064100480d080240024020030d002006102d21040c010b200228027020032006102f21040b2004450d072002200636027420022004360270200228027821030b2002200341016a360278200420036a20053a00002002350278422086200235027084210802402002280224450d00200228022010310b200241c0016a240020080f0b41e9bcc0004133200241b8016a419cbdc0001038000b410841011033000b200341011033000b200341011033000b200341011033000b200341011033000b200641011033000b1034000bee0503037f047e017f230041a0016b2202240041002103200241003a00482000410120011b21040240024002400240034020012003460d01200241286a20036a200420036a2d00003a00002002200341016a22003a00482000210320004120470d000b200241086a41186a200241286a41186a22002903002205370300200241086a41106a200241286a41106a22012903002206370300200241086a41086a200241286a41086a22042903002207370300200220022903282208370308200241f0006a41186a2005370300200241f0006a41106a2006370300200241f0006a41086a2007370300200220083703704113102d2203450d0141002109200341002900eea7423700002003410f6a41002800fda742360000200341086a41002900f6a74237000020024293808080b002370294012002200336029001200241f0006a20024190016a10462000200235029801422086200235029001841000220341186a2900003703002001200341106a2900003703002004200341086a2900003703002002200329000037032820031031200241d0006a41186a2000290300370300200241d0006a41106a2001290300370300200241d0006a41086a2004290300370300200220022903283703500240200228029401450d0020022802900110310b200241286a200241d0006aad428080808080048410021041024020022802282203450d00200241306a2802004104490d0320032800002109200228022c450d00200310310b4104102d2203450d0320032009360000200241a0016a24002003ad4280808080c000840f0b0240200341ff0171450d00200241003a00480b2002413c6a4102360200200241fc006a41023602002002420237022c200241c8a2c20036022820024102360274200241fca4c20036027020024100360254200241f0eac4003602502002200241f0006a3602382002200241d0006a360278200241286a41d8a2c20010b301000b411341011033000b41e9bcc0004133200241f0006a419cbdc0001038000b410441011033000b910f03057f037e017f230041c0016b22022400024020010d00410121000b200220003602082002200136020c41002103200241003a00702001417f6a21040340024020012003470d000240200341ff0171450d00200241003a00700b200241e4006a41023602002002419c016a410236020020024202370254200241c8a2c200360250200241023602940120024194a5c2003602900120024100360234200241f0eac400360230200220024190016a3602602002200241306a36029801200241d0006a41d8a2c20010b301000b200241d0006a20036a200020036a22052d00003a00002002200541016a3602082002200341016a22053a00702002200436020c2004417f6a21042005210320054120470d000b200241106a41086a200241d0006a41086a290300370300200241106a41106a200241d0006a41106a290300370300200241106a41186a200241d0006a41186a2903003703002002200229035037031041002103200241003a0070200120056b2106200020056a2100417f21010340024020062003470d000240200341ff0171450d00200241003a00700b200241e4006a41023602002002419c016a410236020020024202370254200241c8a2c200360250200241023602940120024194a5c2003602900120024100360234200241f0eac400360230200220024190016a3602602002200241306a36029801200241d0006a41d8a2c20010b301000b200241d0006a20036a200020036a22052d00003a00002002200420036b36020c2002200541016a3602082002200341016a22053a00702001417f6a21012005210320054120470d000b200241306a41086a200241d0006a41086a290300370300200241306a41106a200241d0006a41106a290300370300200241306a41186a200241d0006a41186a29030037030020022002290350370330024002400240024002400240024002400240024002400240200420056b220441016a4110490d002002200020056a220341106a3602082002200441716a220536020c20054108490d0220032900002107200341086a29000021082002200441696a36020c2002200341186a360208200341106a29000021092002200241086a102c20022802000d0b200228020c2205200228020422034f0d010c0b0b2002419c016a4102360200200241e4006a410236020020024202370254200241c8a2c200360250200241023602940120024194a5c200360290012002410036027c200241f0eac400360278200220024190016a3602602002200241f8006a36029801200241d0006a41d8a2c20010b301000b2003417f4c0d0302400240024020030d00410121044101450d0c0c010b2003107a2204450d01200420022802082201200310ab0521002002200520036b36020c2002200120036a3602082000450d0b0b20024190016a41186a200241106a41186a29030037030020024190016a41106a200241106a41106a29030037030020024190016a41086a200241106a41086a2903003703002002200229031037039001200241d0006a41186a200241306a41186a290300370300200241d0006a41106a200241306a41106a290300370300200241d0006a41086a200241306a41086a29030037030020022002290330370350200220033602b801200220033602b401200220043602b001200241f8006a20024190016a200241d0006a200720082009200241b0016a108a0220022802784101460d0220024184016a2802002105200241f8006a41086a2802002100200228027c210420022d00880121010c030b200341011033000b2002419c016a4102360200200241e4006a410236020020024202370254200241c8a2c200360250200241023602940120024194a5c200360290012002410036027c200241f0eac400360278200220024190016a3602602002200241f8006a36029801200241d0006a41d8a2c20010b301000b0240200228028801450d0020024184016a28020010310b410021040b20024100360258200242013703504101102d2103024002402004450d002003450d03200341003a0000200242818080801037025420022003360250200341014102102f2203450d04200320013a00012002428280808020370254200220033602502005200241d0006a106f0240024020022802542203200228025822016b2005490d00200228025021030c010b200120056a22062001490d072003410174220a2006200a20064b1b22064100480d070240024020030d002006102d21030c010b200228025020032006102f21030b2003450d0620022006360254200220033602500b2002200120056a2206360258200320016a2004200510ab051a2006ad42208621070c010b2003450d06200341013a000020024281808080103702542002200336025042808080801021070b20072003ad84210702402000450d002004450d00200410310b200241c0016a240020070f0b1032000b410141011033000b410241011033000b200641011033000b1034000b410141011033000b2002419c016a4102360200200241e4006a410236020020024202370254200241c8a2c200360250200241023602940120024194a5c200360290012002410036027c200241f0eac400360278200220024190016a3602602002200241f8006a36029801200241d0006a41d8a2c20010b301000bfd1003047f017e037f23004180026b2202240041002103200241003a00a8012000410120011b21040240034020012003460d0120024188016a20036a200420036a2d00003a00002002200341016a22003a00a8012000210320004120470d000b200241086a41086a20024188016a41086a290300370300200241086a41106a20024188016a41106a290300370300200241086a41186a20024188016a41186a290300370300200220022903880137030841002103200241003a00a801200420006a2104200120006b21010340024020012003470d000240200341ff0171450d00200241003a00a8010b2002419c016a4102360200200241ec016a41023602002002420237028c01200241c8a2c20036028801200241023602e4012002419ca5c2003602e0012002410036026c200241f0eac4003602682002200241e0016a360298012002200241e8006a3602e80120024188016a41d8a2c20010b301000b20024188016a20036a200420036a2d00003a00002002200341016a22003a00a8012000210320004120470d000b200241286a41086a220320024188016a41086a290300370300200241286a41106a220020024188016a41106a290300370300200241286a41186a220120024188016a41186a22042903003703002002200229038801370328200241e8006a41186a200241086a41186a290300370300200241e8006a41106a200241086a41106a290300370300200241e8006a41086a200241086a41086a29030037030020022002290308370368200241c8006a41186a2001290300370300200241c8006a41106a2000290300370300200241c8006a41086a20032903003703002002200229032837034820024188016a200241e8006a105a02400240024020022d00880122034102460d004101210520030d01200241b4016a2802004102460d01200241a8016a3502002106200241a4016a28020021072004280200210120024188016a41186a2204200241c8006aad42808080808004841000220341186a29000037030020024188016a41106a2208200341106a29000037030020024188016a41086a2200200341086a290000370300200220032900003703880120031031200241e0016a41186a2004290300370300200241e0016a41106a2008290300370300200241e0016a41086a200029030037030020022002290388013703e00120024188016a20064220862001ad84200241e0016aad4280808080800484100a1041200028020021042002280288012100200228028c01210902402007450d00200110310b410021010c020b410021050b410121010b41012103024002400240024002400240024002400240024002400240024002400240024020010d00200441066a410220001b2203417f4c0d072003450d010b2003102d2207450d074100210820024100360290012002200336028c0120022007360288012001450d012002410136029001200741013a0000200228028c0121042002280290012103200541ff01714101460d0420042003460d0220022802880121040c030b200241003602900120024201370388014101102d2207450d072002410136028c01200220073602880120022802900121080b2002200841016a36029001200720086a41003a0000200228028c0121072002280290012103024020000d000240024020072003460d0020022802880121040c010b200341016a22042003490d0e200341017422072004200720044b1b22074100480d0e0240024020030d002007102d21040c010b20022802880120032007102f21040b2004450d092002200736028c01200220043602880120022802900121030b2002200341016a36029001200420036a41003a00000c040b0240024020072003460d0020022802880121070c010b200341016a22072003490d0d200341017422082007200820074b1b22084100480d0d0240024020030d002008102d21070c010b20022802880120032008102f21070b2007450d092002200836028c01200220073602880120022802900121030b2002200341016a36029001200720036a41013a0000200420024188016a106f02400240200228028c01220720022802900122036b2004490d0020022802880121070c010b200320046a22082003490d0d200741017422032008200320084b1b22034100480d0d0240024020070d002003102d21070c010b20022802880120072003102f21070b2007450d0a2002200336028c01200220073602880120022802900121030b2002200320046a36029001200720036a2000200410ab051a0c030b200341016a22042003490d0b200341017422072004200720044b1b22074100480d0b0240024020030d002007102d21040c010b20022802880120032007102f21040b2004450d092002200736028c01200220043602880120022802900121030b2002200341016a36029001200420036a41003a00000c010b0240024020042003460d0020022802880121040c010b200341016a22042003490d0a200341017422072004200720044b1b22074100480d0a0240024020030d002007102d21040c010b20022802880120032007102f21040b2004450d092002200736028c01200220043602880120022802900121030b2002200341016a36029001200420036a41013a00000b200235029001422086200235028801842106024020010d002000450d002009450d00200010310b20024180026a240020060f0b1032000b200341011033000b410141011033000b200741011033000b200841011033000b200341011033000b200741011033000b200741011033000b1034000b0240200341ff0171450d00200241003a00a8010b2002419c016a4102360200200241ec016a41023602002002420237028c01200241c8a2c20036028801200241023602e4012002419ca5c2003602e0012002410036026c200241f0eac4003602682002200241e0016a360298012002200241e8006a3602e80120024188016a41d8a2c20010b301000bc20402037f027e230041e00c6b22022400024002402001450d00200220003602200c010b200241013602200b20022001360224200241d0066a200241206a102e024002400240024020022903b8074203510d00200241286a200241d0066a41900610ab051a0240200228022422014104490d0020022802202200280000210320022001417c6a3602242002200041046a360220200241d0066a200241286a41900610ab051a200241186a200241e8076a220110ad03200241086a20032002280218220020022d001c4101712204420042001064200241086a41086a290300210520022903082106200110d6014104102d2201450d0220012000360000200141044108102f2201450d03200120043a0004200141084115102f2201450d04200120063700052001410d6a2005370000200241e00c6a24002001ad4280808080d002840f0b200241c4066a4102360200200241e4066a4102360200200242023702d406200241c8a2c2003602d006200241023602bc06200241b0a5c2003602b806200241003602cc06200241f0eac4003602c8062002200241b8066a3602e0062002200241c8066a3602c006200241d0066a41d8a2c20010b301000b200241c4066a41023602002002413c6a41023602002002420237022c200241c8a2c200360228200241023602bc06200241b0a5c2003602b806200241003602cc06200241f0eac4003602c8062002200241b8066a3602382002200241c8066a3602c006200241286a41d8a2c20010b301000b410441011033000b410841011033000b411541011033000bd10b03037f017e057f230041e0016b220224000240024020010d002002200136020c200241013602080c010b20022001417f6a36020c2002200041016a36020820002d0000220141014b0d0041002100024002400240024002400240024002400240024020010e020100010b2002200241086a102c20022802000d09200228020c220320022802042201490d092001417f4c0d010240024020010d00410121000c010b2001107a2200450d03200020022802082204200110ab051a2002200320016b36020c2002200420016a3602080b2000450d092001ad220542208620058421050b0240024020000d00410021040c010b2005422088a72201417f4c0d01024020010d00410121040c010b2001102d2204450d0320042000200110ab051a0b200241b0016a41086a2001360200200220013602b401200220043602b001200241e7e485f30636029001200241106a200241b0016a109a0120022802142106200241106a41186a220720024190016a200235021842208620022802102208ad841018220341186a290000370300200241106a41106a2209200341106a290000370300200241106a41086a220a200341086a2900003703002002200329000037031020031031200241f0006a41186a2007290300370300200241f0006a41106a2009290300370300200241f0006a41086a200a2903003703002002200229031037037002402006450d00200810310b02402004450d002001450d00200410310b410021030240024020000d00410021040c010b2005422088a72201417f4c0d01024020010d00410121040c010b2001102d2204450d0420042000200110ab051a0b200241106a41086a22062001360200200220013602142002200436021020024190016a41e2c289ab06200241106a10c0030240024020000d000c010b2005422088a72201417f4c0d01024020010d00410121030c010b2001102d2203450d0520032000200110ab051a0b200241d0016a41086a2001360200200220013602d401200220033602d001200241b0016a41e9dabdf306200241d0016a10c0032006200241f0006a41086a290300370300200241106a41106a200241f0006a41106a290300370300200241106a41186a200241f0006a41186a290300370300200241386a20024190016a41086a290300370300200241c0006a20024190016a41106a290300370300200241c8006a20024190016a41186a290300370300200241d8006a200241b0016a41086a290300370300200241e0006a200241b0016a41106a290300370300200241e8006a200241b0016a41186a290300370300200220022903703703102002200229039001370330200220022903b001370350200241003602b801200242013703b001200241106a200241b0016a1046200241306a200241b0016a1046200241d0006a200241b0016a104620022802b801210120022802b401210620022802b001210402402000450d002005a7450d00200010310b200141046a2200417f4c0d000240024020000d00410121030c010b2000102d2203450d060b2002410036021820022000360214200220033602102001200241106a106f0240024020022802142203200228021822006b2001490d00200228021021030c010b200020016a22072000490d08200341017422092007200920074b1b22074100480d080240024020030d002007102d21030c010b200228021020032007102f21030b2003450d0720022007360214200220033602100b200320006a2004200110ab051a200020016aad4220862003ad84210502402006450d00200410310b200241e0016a240020050f0b1032000b200141011033000b200141011033000b200141011033000b200141011033000b200041011033000b200741011033000b1034000b200241bc016a4102360200200241246a410236020020024202370214200241c8a2c200360210200241023602b401200241c4a5c2003602b0012002410036029401200241f0eac400360290012002200241b0016a360220200220024190016a3602b801200241106a41d8a2c20010b301000b810201057f230041306b22032400200341086a200241086a280200360200200320022902003703002003200136020c200341106a2003109a0120032802142101200341106a41186a22042003410c6a200335021842208620032802102205ad841029220241186a290000370300200341106a41106a2206200241106a290000370300200341106a41086a2207200241086a2900003703002003200229000037031020021031200041186a2004290300370000200041106a2006290300370000200041086a20072903003700002000200329031037000002402001450d00200510310b024020032802002200450d002003280204450d00200010310b200341306a24000be20a040a7f027e017f047e230041c0016b22032400410021040240024002400340200441086a22054128460d01200220046a2106200521042006290300500d000b200341106a4200370300200341186a42003703002003420037030820034201370300200341206a41186a22074200370300200341206a41106a22084200370300200341206a41086a2209420037030020034201370320200341c0006a41186a200241186a290300370300200341c0006a41106a200241106a290300370300200341c0006a41086a200241086a29030037030020032002290300370340200341e0006a41186a220a200141186a290300370300200341e0006a41106a220b200141106a290300370300200341e0006a41086a220c200141086a29030037030020032001290300370360200341a0016a41086a21054104210403402004450d0202402004417f6a220441034b0d00200341c0006a200441037422066a290300220d200320066a290300220e540d03200d200e580d01024002402003290340220e420183500d0020034180016a41186a2204200a29030037030020034180016a41106a2206200b29030037030020034180016a41086a2202200c2903003703002003200329036037038001200341a0016a41186a22012007290300370300200341a0016a41106a220f200829030037030020052009290300370300200320032903203703a001200341206a20034180016a200341a0016a10c3032004200a290300220d3703002006200b29030022103703002002200c2903002211370300200320032903602212370380012001200d370300200f201037030020052011370300200320123703a001200341e0006a20034180016a200341a0016a10c30320032003290358221342ffffffffffffffffff0083220d370358200329034821112003290350211220054200370300200541086a4200370300200541106a4200370300200342013703a0014100210402400340200441086a22064120460d01200520046a2102200621042002290300500d000b41c8e2c300412641fce0c30010a401000b2012423f8620114201888421102011423f86200e42018884210e2013423f862111201242018821120c010b20034180016a41186a200a290300220d37030020034180016a41106a200b290300221037030020034180016a41086a200c290300221137030020032003290360221237038001200341a0016a41186a200d370300200341a0016a41106a201037030020052011370300200320123703a001200341e0006a20034180016a200341a0016a10c30320032903482111200329035021132003290358210d20054200370300200541086a4200370300200541106a4200370300200342013703a0014100210402400340200441086a22064120460d01200520046a2102200621042002290300500d000b41c8e2c300412641fce0c30010a401000b2013423f8620114201888421102011423f86200e42018884210e200d423f862112201342018821110b200320103703482003200e3703402003200d42018837035820032012201184370350410421040c010b0b41fce0c30020044104104b000b2000420037030820004201370300200041106a4200370300200041186a42003703000c010b20034180016a41186a200341e0006a41186a29030037030020034180016a41106a200341e0006a41106a29030037030020034180016a41086a200341e0006a41086a2903003703002003200329036037038001200341a0016a41186a200341206a41186a290300370300200341a0016a41106a200341206a41106a290300370300200341a0016a41086a200341206a41086a290300370300200320032903203703a001200020034180016a200341a0016a10c3030b200341c0016a24000b852810037f017e017f017e077f017e017f027e027f067e017f017e017f047e017f037e230041a0026b22032400200141186a210441c0022105024002400340200541406a220541c000460d0120042903002106200441786a21042006500d000c020b0b2001290300210641c00021050b200241186a21042005200679a76b210741c0022105024002400340200541406a220541c000460d0120042903002106200441786a21042006500d000c020b0b2002290300210641c00021050b02400240024002400240024002402005200679a76b2204450d000240024002400240024002400240024020072004490d00200441c100490d07200341d8006a41086a200141106a290300370300200341d8006a41106a200141186a2903003703002003200129030837035820012903002108200341f0006a41186a2205200241186a290300370300200341f0006a41106a2209200241106a290300370300200341f0006a41086a220a200241086a290300370300200320022903003703702004417f6a220b410676210c200b41ff014b0d022007417f6a410676220d200c6b2101200c41016a210e200341f0006a200c4103746a220f290300210620034190016a41186a200529030037030020034190016a41106a200929030037030020034190016a41086a200a2903003703002003200329037037039001200341b8016a41106a4200370300200341b8016a41186a4200370300200342003703c001200320067922103703b8012010a72111200341b8016a41086a2107410021040340200441086a22054120460d02200720046a2102200521042002290300500d000b41c8e2c300412641fce0c30010a401000b20004200370300200041186a4200370300200041106a4200370300200041086a420037030020002001290300370320200041286a200141086a290300370300200041306a200141106a290300370300200041386a200141186a2903003703000c0d0b200341f8016a4200370300200341f0016a4200370300200341e0016a41086a4200370300200342003703e0012011410676220741037421042011413f712202ad210620034190016a21050340200341e0016a20046a2005290300200686370300200541086a2105200441086a22044120470d000b02402002450d0020074103742104420020107d423f832106200341e0016a41086a210720034190016a21050340200720046a2202200229030020052903002006887c370300200541086a2105200441086a22044118470d000b0b200341f0006a41186a200341e0016a41186a290300370300200341f0006a41106a200341e0016a41106a290300370300200341f0006a41086a200341e0016a41086a290300370300200320032903e00137037020034180026a41106a200341d8006a41086a29030037030020034180026a41186a200341d8006a41106a29030037030020032003290358370388022003200837038002200341b8016a41106a4200370300200341b8016a41186a4200370300200342003703c001200341c00020116b2209ad22123703b80120082010423f832213862108200341b8016a41086a21074100210402400340200441086a22054120460d01200720046a2102200521042002290300500d000b41c8e2c300412641fce0c30010a401000b200341f8016a4200370300200341f0016a4200370300200341e0016a41086a4200370300200342003703e0012009413f712102200941067621070240200941ff014b0d00200741037421042002ad2106200341e0016a21050340200520034180026a20046a290300200688370300200541086a2105200441086a22044120470d000b0b02402002450d00200741016a41034b0d0020074103742105420020127d423f83210620034180026a41086a2102200341e0016a2104034020042004290300200220056a2903002006867c370300200441086a2104200541086a22054118470d000b0b200320032903f8013703b001200320032903f0013703a801200320032903e8013703a001200320032903e00137039801200320083703900120034198026a420037030020034180026a41106a420037030020034180026a41086a42003703002003420037038002200c417f6a220441034b0d01200c41026a211420034190016a200d200c6b4103746a221541086a210d200f29030022162016792206423f83221786221842ffffffff0f8321192018422088211a200341f0006a20044103746a290300211b41c0002006a76b221c413f71ad211d200341b8016a41106a211e200329038801211f20032903800121202003290378212120032903702122200b418002492123034020012209200e6a220441054f0d03427f2108024020034190016a20044103746a220f290300220620165a0d002009200c6a220541044b0d05201a500d0920034190016a20054103746a2903002208201786221242ffffffff0f8321242012422088211242002008201d88201c413f4b1b20062017868422252025201a802208201a7e7d2106024003400240200842ffffffff0f560d00200820197e2006422086201284580d020b2008427f7c21082006201a7c2206428080808010540d000b0b2025422086201284200820187e7d22252025201a802212201a7e7d2106024003400240201242ffffffff0f560d00201220197e2006422086202484580d020b2012427f7c21122006201a7c220642ffffffff0f580d000b0b2004417e6a220441044b0d0a2025422086202484201220187e7d2017882106201220084220867c210820034190016a20044103746a29030021240340200341c8006a20084200201b420010b005202420032903485a2006200341c8006a41086a29030022125a20062012511b0d012008427f7c2108200620167c22122006542104201221062004450d000b0b200341386a202242002008420010b005200341286a202142002008420010b005200341186a202042002008420010b005200341086a201f42002008420010b0052003200329033822263703b801200320032903282212200341386a41086a2903007c22063703c001200320032903182224200341286a41086a2903002006201254ad7c7c22123703c801200320032903082225200341186a41086a2903002012202454ad7c7c22123703d0012003200341086a41086a2903002012202554ad7c3703d801200941064f0d0a2023450d0b0240201441282009410374220b6b410376220a200a20144b1b2207450d0020034190016a200b6a22042004290300221220267d222437030020242012562102024020074101460d0041022105201e2101200d2104034020042004290300221220062002ad4201837c22247d222537030020242006542025201256722102200520074f0d01200541016a2105200441086a210420012903002106200141086a21010c000b0b2002450d00410021010240200e200a200a200e4b1b2207450d00200341f0006a210520152104410021020340200420042903002206200529030022122001ad42ff01837c22247c222537030020242012542025200654722101200441086a2104200541086a2105200241016a22022007490d000b0b2008427f7c2108200f200f2903002001ad7c3703000b200941034b0d05200920094100476b210120034180026a200b6a2008370300201541786a2115200d41786a210d2009450d0c0c000b0b41fce0c300200c4104104b000b41fce0c30020044104104b000b41fce0c30020044105104b000b41fce0c30020054105104b000b41fce0c30020094104104b000b200341b8016a41186a200141186a290300370300200341b8016a41106a200141106a290300370300200341b8016a41086a200141086a290300370300200320012903003703b801024002400240200229030022062006792212423f83221b8622164220882206500d00201642ffffffff0f83210820032903d001212441c0002012a76b220441c000490d01200642208621192024201b86221242ffffffff0f832126201242208821174200211242002124420021254200211a024003400240201a42ffffffff0f560d0020122024201784580d020b201220087d2112202420197c2124201a427f7c211a202520067c2225428080808010540d000b0b2017201a20167e7d22252025200680221220067e7d2124024003400240201242ffffffff0f560d00201220087e2024422086202684580d020b2012427f7c2112202420067c2224428080808010540d000b0b20032012201a4220867c3703d001427f201b862025422086202684201220167e7d8322192019200680221220067e7d211a20032903c801201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2024201942208684201220167e7d22192019200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703c801427f201b862019422086202584201a20167e7d8322192019200680221220067e7d211a20032903c001201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2024201942208684201220167e7d22192019200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703c001427f201b862019422086202584201a20167e7d8322192019200680221220067e7d211a20032903b801201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2024201942208684201220167e7d22192019200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703b8012019422086202584201a20167e7d21060c020b41e0dfc300411941fce0c30010a401000b20242004413f71ad22198822262026200680221220067e7d211a2024201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2026422086202484201220167e7d22262026200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703d00120032903c8012224201988427f201b862026422086202584201a20167e7d838422262026200680221220067e7d211a2024201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2026422086202484201220167e7d22262026200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703c80120032903c0012224201988427f201b862026422086202584201a20167e7d838422262026200680221220067e7d211a2024201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2026422086202484201220167e7d22262026200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703c00120032903b8012224201988427f201b862026422086202584201a20167e7d838422192019200680221220067e7d211a2024201b86222442ffffffff0f83212520244220882124024003400240201242ffffffff0f560d00201220087e201a422086202484580d020b2012427f7c2112201a20067c221a428080808010540d000b0b2019422086202484201220167e7d22192019200680221a20067e7d2124024003400240201a42ffffffff0f560d00201a20087e2024422086202584580d020b201a427f7c211a202420067c2224428080808010540d000b0b2003201a20124220867c3703b8012019422086202584201a20167e7d21060b200020032903b801370300200041286a420037030020002006201b88370320200041306a4200370300200041386a4200370300200041186a200341b8016a41186a290300370300200041106a200341b8016a41106a290300370300200041086a200341b8016a41086a2903003703000c060b41b8e2c300411041fce0c30010a401000b41e0e0c300411941fce0c30010a401000b41fce0c30020044105104b000b20094105107b000b2014410510b601000b20032903a8012225201388210620032903a0012219201388210820032903980122162013882112200329039001201388211a02402011450d00200620032903b001420020107d423f832224868421062008202520248684210820122019202486842112201a201620248684211a0b20002003290380023703002000201a370320200041386a2006370300200041306a2008370300200041286a2012370300200041186a20034180026a41186a290300370300200041106a20034180026a41106a290300370300200041086a20034180026a41086a2903003703000b200341a0026a24000be20702017f137e23004180026b22032400200320012903002204420020022903002205420010b005200341c0006a2001290308220642002005420010b005200341d0006a2001290310220742002005420010b005200341106a2004420020022903082208420010b005200341f0006a200642002008420010b005200341e0006a2001290318220942002005420010b005200341a0016a200742002008420010b005200341d0016a200942002008420010b005200341206a2004420020022903102205420010b00520034180016a200642002005420010b005200341b0016a200742002005420010b005200341e0016a200942002005420010b005200341306a2004420020022903182205420010b00520034190016a200642002005420010b005200341c0016a200742002005420010b005200341f0016a200942002005420010b005024020032903c0012207200329039001220620032903302205200329038001220820032903202204200329037022092003290310220a2003290340220b200341086a2903007c220c7c220d200a54ad200341106a41086a2903007c220a2003290350220e200c200b54ad200341c0006a41086a2903007c7c220b7c220c7c220f7c2210200454ad200341206a41086a2903007c221120032903a0012212200f200954ad200341f0006a41086a2903007c2209200c200a54ad7c22042003290360220a200b200e54ad200341d0006a41086a2903007c7c220b7c220c7c220e7c220f7c22137c2214200554ad200341306a41086a2903007c221520032903b00122162013200854ad20034180016a41086a2903007c2208200f201154ad7c220520032903d001220f200e201254ad200341a0016a41086a2903007c220e2004200954200c20045472ad7c2204200b200a54ad200341e0006a41086a2903007c7c22097c220a7c220b7c220c7c22117c2212200654ad20034190016a41086a2903007c22132011201554ad7c220620032903e0012211200c201654ad200341b0016a41086a2903007c220c2005200854200b20055472ad7c22052004200e54200920045472ad200341d0016a41086a2903007c200a200f54ad7c7c22087c22097c22047c220a20128420032903f001220b200a200754ad200341c0016a41086a2903007c22072006201354200420065472ad7c22042005200c54200820055472ad200341e0016a41086a2903007c2009201154ad7c7c22057c2206844200520d002006200b54ad200341f0016a41086a2903007c42002004200754200520045472ad7d520d002003290300210420002014370318200020103703102000200d3703082000200437030020034180026a24000f0b4189e3c300411d41fce0c30010a401000bf40304097f017e017f017e230041a00a6b22022400200141086a2802002103200028020421042000280200210520012802042106024020002802082207200028020c2208460d0020012802002100200241096a2109200241a8056a410472210a0240034020072802002101200241346a200741046a41f40410ab051a20014113460d01200220013602a805200a200241346a41f40410ab051a200241003a00102002200241a8056a200241106a108e022002290300210b20022d00082101200241a8056a41026a220c200941026a2d00003a0000200220092f00003b01a805024020014102460d00200241106a41026a200c2d00003a0000200220022f01a8053b0110200b210d0b200041086a20013a00002000200d370200200041096a20022f01103b00002000410b6a200241106a41026a2d00003a00002000410c6a2100200341016a2103200741f8046a22072008470d000b200821070c010b200741f8046a21070b20062003360200024020072008460d00200241a8056a4104722101034020072802002100200241a8056a200741046a41f40410ab051a20004113460d01200241346a200241a8056a41f40410ab051a200220003602a8052001200241346a41f40410ab051a200241a8056a1030200741f8046a22072008470d000b0b02402004450d00200510310b200241a00a6a24000bd40201027f0240024002402002450d002002417f6a2104024020012d0000220241037122054103460d000240024020050e03040001040b2004450d0220012d0001410874200272220241ffff0371418002490d02200241fcff037141027621020c040b20044103490d0120012f0001200141036a2d000041107472410874200272220241808004490d01200241027621020c030b200241034b0d0020044104490d002001280001220241ffffffff034b0d020b200041013602000f0b200241027621020b0240200220036a220120024f0d00200041013602000f0b41012103410121050240200241c000490d0041022105200241808001490d00410441052002418080808004491b21050b0240200141c000490d0041022103200141808001490d00410441052001418080808004491b21030b20002001360204200041003602002000410c6a2003360200200041086a20053602000bfc0401057f230041106b220224000240024002400240024002402000280298054101460d0002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200028029c05210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d06200441017422032005200320054b1b22034100480d060240024020040d002003102d21040c010b200128020020042003102f21040b2004450d0420012004360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200420036a20063600000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102d21040c010b200128020020032005102f21040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00000b2000200110be0220002802a0052103200041a8056a28020022002001106f02402000450d002000410574210003402002200136020c20032002410c6a103e200341206a2103200041606a22000d000b0b200241106a24000f0b200541011033000b200341011033000b200541011033000b1034000bc40601027f024020002d0000417c6a220141084b0d00024002400240024002400240024020010e09000102070304070506000b200041046a2802000d062000410c6a280200450d06200041086a28020010310c060b200041046a2d00004102490d050240200041106a2802002201450d00200141d0006c2102200041086a28020041c0006a210103400240200141046a280200450d00200128020010310b200141d0006a2101200241b07f6a22020d000b0b2000410c6a280200450d05200028020810310c050b200041086a280200450d04200041046a28020010310c040b200041086a2d00000d030240200041146a2802002201450d00200141067421022000410c6a28020041106a210103400240200141046a280200450d00200128020010310b200141c0006a2101200241406a22020d000b0b200041106a280200450d03200028020c10310c030b200041086a2d00004105490d02200041306a280200450d022000412c6a28020010310c020b200041086a280200450d01200041046a28020010310c010b0240200041086a2d0000220141014b0d000240024020010e020001000b0240200041a4016a280200450d00200041a0016a28020010310b0240200041b4016a2802002202450d00200041ac016a28020021012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b200041b0016a280200450d0220002802ac0110310c020b0240200041a4016a280200450d00200041a0016a28020010310b0240200041b4016a2802002202450d00200041ac016a28020021012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b200041b0016a280200450d0120002802ac0110310c010b0240200041d8006a2802002202450d00200041d0006a28020021012002412c6c210203400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b2001412c6a2101200241546a22020d000b0b0240200041d4006a280200450d00200028025010310b2000418c036a280200450d0020004188036a28020010310b0240200041a4056a280200450d0020002802a00510310b0b130020004107360204200041a0a8c2003602000b3400200041d084c40036020420004100360200200041146a410d360200200041106a41d0afc200360200200041086a42063702000b5401017f230041206b22022400200241003602082002420837030020024100360218200242013703104100200241106a106f200041086a2002280218360200200020022903103702002002107e200241206a24000bb40303017f017e037f23004190016b2202240002402001101e2203422088a72204450d002003a722052d0000220641014b0d004100210102400240024020060e020100010b41002101200241003a0068200541016a21052004417f6a2104034020042001460d02200241c8006a20016a200520016a2d00003a00002002200141016a22063a00682006210120064120470d000b200241f0006a41186a2201200241c8006a41186a290300370300200241f0006a41106a2205200241c8006a41106a290300370300200241f0006a41086a2204200241c8006a41086a29030037030020022002290348370370200641ff01714120490d02200241286a41186a20012903002203370300200241086a41086a2004290300370300200241086a41106a2005290300370300200241086a41186a200337030020022002290370370308410121010b200020013a000020002002290308370001200041096a200241106a290300370000200041116a200241186a290300370000200041196a200241206a29030037000020024190016a24000f0b200141ff0171450d00200241003a00680b41c49fc400412e200241c8006a41f49fc4001038000b130020004105360204200041dcc4c4003602000bb00701057f230041106b22032400200341003602082003420137030020022003106f02400240024002400240024002402002450d00200241c4006c210403400240024020012d00004101460d0002400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d0a200241017422062005200620054b1b22064100480d0a0240024020020d002006102d21050c010b200328020020022006102f21050b2005450d052003200636020420032005360200200328020821020b2003200241016a360208200520026a41003a0000200141046a28020021060240024020032802042205200328020822026b4104490d00200328020021050c010b200241046a22072002490d0a200541017422022007200220074b1b22024100480d0a0240024020050d002002102d21050c010b200328020020052002102f21050b2005450d062003200236020420032005360200200328020821020b2003200241046a360208200520026a20063600000c010b02400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d09200241017422062005200620054b1b22064100480d090240024020020d002006102d21050c010b200328020020022006102f21050b2005450d062003200636020420032005360200200328020821020b2003200241016a360208200520026a41013a00002003200336020c200141016a2003410c6a103e0240200141216a2d00004101460d0002400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d0a200241017422062005200620054b1b22064100480d0a0240024020020d002006102d21050c010b200328020020022006102f21050b2005450d082003200636020420032005360200200328020821020b2003200241016a360208200520026a41003a00000c010b02400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d09200241017422062005200620054b1b22064100480d090240024020020d002006102d21050c010b200328020020022006102f21050b2005450d082003200636020420032005360200200328020821020b2003200241016a360208200520026a41013a0000200141226a200310460b200141c4006a2101200441bc7f6a22040d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b200641011033000b200241011033000b200641011033000b200641011033000b200641011033000b1034000b13002000410136020420004198c8c2003602000b34002000418885c40036020420004100360200200041146a4103360200200041106a41a4c9c200360200200041086a420a3702000b2f01017f02404101102d22020d00410141011033000b200042818080801037020420002002360200200241003a00000b130020004101360204200041d4d3c2003602000b840502067f017e230041e0006b2201240010b5032102200141186a200041186a290000370300200141106a200041106a290000370300200141086a200041086a29000037030020012000290000370300024002400240024002404117102d2200450d002000410f6a4100290089d242370000200041086a4100290082d242370000200041002900fad14237000020004117412e102f2203450d0120032002360017200141c0006a41186a22022003ad4280808080b003841000220041186a290000370300200141c0006a41106a2204200041106a290000370300200141c0006a41086a2205200041086a2900003703002001200029000037034020001031200141206a41186a22062002290300370300200141206a41106a22022004290300370300200141206a41086a2204200529030037030020012001290340370320200310314120102d2200450d0220002001290320370000200041186a2006290300370000200041106a2002290300370000200041086a2004290300370000200141c0006a200110af022000412041c000102f2200450d0320002001290040370020200041386a200141d8006a290000370000200041306a200141d0006a290000370000200041286a200141c8006a2202290000370000200141c0006a2000ad42808080808008842207100210410240024020012802402203450d0020022802004104490d062003280000210202402001280244450d00200310310b200241016a21030c010b410121030b200120033602402007200141c0006aad4280808080c00084100320001031200141e0006a24000f0b411741011033000b412e41011033000b412041011033000b41c00041011033000b41e9bcc0004133200141206a419cbdc0001038000b34002000419985c40036020420004100360200200041146a4104360200200041106a4190d5c200360200200041086a42083702000b3001017f02404104102d22020d00410441011033000b20004284808080c00037020420002002360200200241003600000b2201017f230041106b220224002002410036020020002002109a01200241106a24000bcd0b05077f017e027f017e027f230041a0036b220324000240024002400240024002400240200028020022044198bfc000460d00200028020421050c010b41002105200341e8016a410272410041b20110aa051a41b801102d2204450d0120044100360200200441046a200341e8016a41b40110ab051a20004100360204200020043602000b024003400240024020044198bfc000462206450d0041002107410821080c010b200441086a210820042f010621070b20074103742107417f21090240024002400340024020070d002006450d02410021090c030b2008290300210a200741786a2107200941016a2109200841086a2108417f200a200152200a2001561b41016a0e03020300020b0b20042f010621090b2005450d022005417f6a2105200420094102746a41b8016a28020021040c010b0b200420094103746a41e0006a20023703000c050b2000200028020841016a36020820042f01062207410b490d02200341e8016a410272410041b20110aa051a41b801102d2207450d0120074100360200200741046a200341e8016a41b40110ab051a410821064108200441086a220b20044198bfc00046220c1b2208290330210a200429039001210d200741086a200841386a20042f010641796a2205410374220810ab05210e200741e0006a20044198016a200810ab05210f200441063b0106200720053b01060240024020094107490d00200741066a21084108200e20074198bfc0004622061b220c200941037441506a220e6a200c200941796a2209410374220b6a220c4100200541ffff037120061b20096b41037410ac051a200c2001370300200f200e6a200f200b6a220520072f010620096b41037410ac051a0c010b200441066a2108200441e0006a210502400240200c450d004100210c0c010b20082f0100210c200b21060b20062009410374220f41086a220e6a2006200f6a2206200c20096b41037410ac051a200620013703002005200e6a2005200f6a220520082f010020096b41037410ac051a0b20052002370300200820082f010041016a3b0100024020042802002208450d00200320042f010436023c200320003602382003200836023420034101360230200341e8016a200341306a200a200d200710a00120032802e8014101470d05034020032802f401210020032802f8012107200329038802210d200329038002210a20032802f00122082802002204450d0120032802ec012109200320082f010436023c20032000360238200320043602342003200941016a360230200341e8016a200341306a200a200d200710a00120032802e8014101460d000c060b0b200341e8016a410272410041b20110aa051a200341306a200341e8016a41b40110ab051a200341286a22044200370300200341206a22094200370300200341186a22054200370300200341106a22064200370300200341086a220f42003703002003420037030041e801102d2208450d0320084100360200200841046a200341306a41b40110ab051a200841e0016a2004290300370300200841d8016a2009290300370300200841d0016a2005290300370300200841c8016a2006290300370300200841c0016a200f290300370300200820032903003703b8012008200028020022043602b801200020083602002000200028020441016a360204200441003b0104200420083602004108200841086a20084198bfc000461b20082f0106220441037422096a200a370300200820096a41e0006a200d370300200841b8016a200441016a22044102746a2007360200200820082f010641016a3b0106200720043b0104200720083602000c040b41b80141081033000b41b80141081033000b4108200441086a20044198bfc0004622051b22002009410374220841086a22066a200020086a22004100200720051b20096b41037410ac051a20002001370300200441e0006a220720066a200720086a220720042f010620096b41037410ac051a20072002370300200420042f010641016a3b01060c010b41e80141081033000b200341a0036a24000b13002000410136020420004190dcc2003602000b3400200041b885c40036020420004100360200200041146a4107360200200041106a41f4dfc200360200200041086a42073702000b130020004101360204200041b0edc2003602000b880201057f230041106b220224000240024002404111102d2203450d002002421137020420022003360200410d2002106f0240024020022802042204200228020822036b410d490d002003410d6a2105200228020021040c010b2003410d6a22052003490d03200441017422062005200620054b1b22064100480d030240024020040d002006102d21040c010b200228020020042006102f21040b2004450d0220022006360204200220043602000b20022005360208200420036a22034100290086ef42370000200341056a410029008bef4237000020002002290300370200200041086a2002280208360200200241106a24000f0b411141011033000b200641011033000b1034000bdd0403027f017e097f230041106b220324002002ad4220862001ad841027220429000021052004103120032005370308200120026a21060240024002400240200241086a220720024f0d00200341086a41086a2108200341086a210941002104410021074101210a4100210b0340200441017421022008200941016a220c6b210d034020092d00002109024002400240024020042007470d00200d2107024002400240200b41ff01710e03010200010b200620016b21070c010b417f200d200620016b6a22072007200d491b21070b2004417f200741016a220e200e2007491b6a22072004490d0920022007200220074b1b22074100480d090240024020040d002007102d210a0c010b200a20042007102f210a0b200a450d010b200a20046a20093a00000240024002400240200b41ff01710e03010300010b20062001460d010c050b0240200c2008460d004100210b0c040b20062001470d040b200441016a21040c070b4101210b200c2008470d01200441016a21040c060b200741011033000b200441016a2104200c21090c020b200441016a21044102210b200241026a21022001220941016a21010c000b0b0b4101210a02402007450d0020074100480d032007102d220a450d020b410021040340200a20046a200341086a20046a2d00003a0000200441016a22044108470d000b024020020d00410821040c010b200a20046a210b410021040340200b20046a200120046a2d00003a00002002200441016a2204470d000b200620016b41086a21040b20002004360208200020073602042000200a360200200341106a24000f0b200741011033000b1034000bc59b0109037f057e037f027e017f017e257f037e057f230041c00b6b2201240010690240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020004101460d00200141c0076a41086a220041b2a8c400ad42808080808002841001220241086a290000370300200120022900003703c00720021031200141c00a6a41086a22032000290300370300200120012903c0073703c00a200141c8006a200141c00a6aad428080808080028422041002104142002105420021060240024002400240024002400240024002400240024020012802482202450d00200141c8006a41086a2802004108490d0120022900002106200128024c450d00200210310b20004183a8c400ad4280808080f001841001220241086a290000370300200120022900003703c0072002103120032000290300370300200120012903c0073703c00a200141c8006a200410021041024020012802482200450d00200141c8006a41086a2802004108490d0220002900002105200128024c450d00200010310b200141c0076a41086a220241a2a8c400ad42808080808002841001220041086a290000370300200120002900003703c00720001031200141c00a6a41086a2002290300370300200120012903c0073703c00a200141c8006a20041002104142002107024020012802482200450d00200141c8006a41086a2802004108490d0320002900002107200128024c450d00200010310b420020062007200542c8017e7c7d220520052006561b42c801540d0a200141c0076a41086a220041e8bfc400ad4280808080c002841001220241086a290000370300200120022900003703c00720021031200141186a41086a22032000290300370300200120012903c007370318200141c8006a200141186aad428080808080028422081002104102400240200128024822020d00410021090c010b200141c8006a41086a2802004104490d0420022800002109200128024c450d00200210310b200041fcbfc400ad4280808080d002841001220241086a290000370300200120022900003703c0072002103120032000290300370300200120012903c007370318200141c8006a2008100210414102210a024020012802482200450d00024002400240200141d0006a280200450d0020002d0000220241014b0d00200128024c21034100210a20020e020201020b41e9bcc0004133200141e0086a419cbdc0001038000b4101210a0b2003450d00200010310b10b503210b200141c00a6a41086a220241edd1c200ad4280808080d001841001220041086a290000370300200120002900003703c00a20001031200141c8006a41086a2002290300370300200120012903c00a370348200141c00a6a200141c8006aad220c4280808080800284220d100210410240024020012802c00a2200450d0020012802c40a2103200120022802003602e409200120003602e009200141c0076a200141e0096a10800120012802c007220e450d0620012902c407210f2003450d01200010310c010b4101210e4200210f0b200141c0076a41086a220241fcdbc200ad4280808080a002841001220041086a290000370300200120002900003703c00720001031200141c00a6a41086a2002290300370300200120012903c0073703c00a200141c0076a2004100210410240024020012802c0072200450d0020012802c4072103200120022802003602e409200120003602e009200141c8006a200141e0096a10890120012802482210450d07200129024c21062003450d01200010310c010b41012110420021060b2006a72111024002402006422088a72200450d002010200041057422126a2113200141b4076a2114200141c8006a41206a2115200141e8066a4104722116200141c0066a410472210241022100410021170340200141e0056a41186a201020176a220341186a2900002206370300200141e0056a41106a200341106a2900002204370300200141e0056a41086a200341086a29000022053703002001200329000022073703e00520022007370000200241086a2005370000200241106a2004370000200241186a200637000020012000417e6a22183602c0064100211902402018200210b3030d00200141e8066a41206a200141c0066a41206a280200360200200141e8066a41186a200141c0066a41186a290300370300200141e8066a41106a200141c0066a41106a290300370300200141e8066a41086a200141c0066a41086a290300370300200120012903c0063703e80620014180066a41186a2219201641186a221a29000037030020014180066a41106a221b201641106a221c29000037030020014180066a41086a221d201641086a221e2900003703002001201629000037038006200141c8006a41186a2218201a290000370300200141c8006a41106a221a201c290000370300200141c8006a41086a221c201e2900003703002001201629000037034820014190076a200141c8006a10c602200141a0066a41186a221e2019290300370300200141a0066a41106a221f201b290300370300200141a0066a41086a221b201d29030037030020012001290380063703a00620012802b0072219450d002015200129039007370300201541186a20014190076a41186a290300370300201541106a20014190076a41106a290300370300201541086a20014190076a41086a2903003703002018201e290300370300201a201f290300370300201c201b290300370300200141e0086a41086a221b201441086a280200360200200120012903a006370348200120142902003703e008200141c0076a41386a221d200141c8006a41386a290300370300200141c0076a41306a221e200141c8006a41306a290300370300200141c0076a41286a221f200141c8006a41286a290300370300200141c0076a41206a22202015290300370300200141c0076a41186a22212018290300370300200141c0076a41106a2218201a290300370300200141c0076a41086a221a201c290300370300200120012903483703c007200141c00a6a41386a201d290300370300200141c00a6a41306a201e290300370300200141c00a6a41286a201f290300370300200141c00a6a41206a2020290300370300200141c00a6a41186a2021290300370300200141c00a6a41106a2018290300370300200141c00a6a41086a201a290300370300200120012903c0073703c00a200141c0086a41086a201b280200360200200120012903e0083703c0080b200141e0096a41086a200141c00a6a41086a290300370300200141e0096a41106a200141c00a6a41106a290300370300200141e0096a41186a200141c00a6a41186a290300370300200141e0096a41206a200141c00a6a41206a290300370300200141e0096a41286a200141c00a6a41286a290300370300200141e0096a41306a200141c00a6a41306a290300370300200141e0096a41386a200141c00a6a41386a290300370300200141286a41086a200141c0086a41086a280200360200200120012903c00a3703e009200120012903c00837032820190d02200041016a21002012201741206a2217470d000b0b41002122200141003602c80a200142083703c00a4108211b02402011450d00201010310b410021190c0a0b20014180096a41386a2202200141e0096a41386a29030037030020014180096a41306a2216200141e0096a41306a29030037030020014180096a41286a2218200141e0096a41286a29030037030020014180096a41206a221a200141e0096a41206a29030037030020014180096a41186a221c200141e0096a41186a29030037030020014180096a41106a221b200141e0096a41106a29030037030020014180096a41086a221d200141e0096a41086a290300370300200141186a41086a221e200141286a41086a280200360200200120012903e0093703800920012001290328370318200141b00b6a41086a221f201e280200360200200120012903183703b00b200141c8006a41086a221e201d290300370300200141c8006a41106a221d201b290300370300200141c8006a41186a2214201c290300370300200141c8006a41206a221c201a290300370300200141c8006a41286a221a2018290300370300200141c8006a41306a22182016290300370300200141c8006a41386a221620022903003703002001200129038009370348200141c0076a41086a2202201f280200360200200120012903b00b3703c00741d000102d221b450d06201b2001290348370300201b2019360240201b20012903c007370244201b41386a2016290300370300201b41306a2018290300370300201b41286a201a290300370300201b41206a201c290300370300201b41186a2014290300370300201b41106a201d290300370300201b41086a201e290300370300201b41cc006a2002280200360200024002400240201241606a2017470d00410121190c010b200341206a2102201220176b41606a211c200141b4076a2114200141e8066a4104722116200141c0066a41047221030340200141e0056a41186a200241186a2217290000370300200141e0056a41106a200241106a2219290000370300200141e0056a41086a200241086a2218290000370300200120022900003703e00520012000417f6a221a3602c006201829000021062019290000210420022900002105200341186a2017290000370000200341106a2004370000200341086a200637000020032005370000410021170240201a200310b3030d00200141e8066a41206a200141c0066a41206a280200360200200141e8066a41186a200141c0066a41186a290300370300200141e8066a41106a200141c0066a41106a290300370300200141e8066a41086a200141c0066a41086a290300370300200120012903c0063703e80620014180066a41186a2217201641186a221829000037030020014180066a41106a2212201641106a221a29000037030020014180066a41086a221d201641086a221e2900003703002001201629000037038006200141c8006a41186a22192018290000370300200141c8006a41106a2218201a290000370300200141c8006a41086a221a201e2900003703002001201629000037034820014190076a200141c8006a10c602200141a0066a41186a221e2017290300370300200141a0066a41106a221f2012290300370300200141a0066a41086a2212201d29030037030020012001290380063703a00620012802b0072217450d002015200129039007370300201541186a20014190076a41186a290300370300201541106a20014190076a41106a290300370300201541086a20014190076a41086a2903003703002019201e2903003703002018201f290300370300201a2012290300370300200141e0086a41086a2212201441086a280200360200200120012903a006370348200120142902003703e008200141c0076a41386a221d200141c8006a41386a290300370300200141c0076a41306a221e200141c8006a41306a290300370300200141c0076a41286a221f200141c8006a41286a290300370300200141c0076a41206a2220200141c8006a41206a290300370300200141c0076a41186a22212019290300370300200141c0076a41106a22192018290300370300200141c0076a41086a2218201a290300370300200120012903483703c007200141c00a6a41386a201d290300370300200141c00a6a41306a201e290300370300200141c00a6a41286a201f290300370300200141c00a6a41206a2020290300370300200141c00a6a41186a2021290300370300200141c00a6a41106a2019290300370300200141c00a6a41086a2018290300370300200120012903c0073703c00a200141c0086a41086a2012280200360200200120012903e0083703c0080b200141e0096a41086a200141c00a6a41086a290300370300200141e0096a41106a200141c00a6a41106a290300370300200141e0096a41186a200141c00a6a41186a290300370300200141e0096a41206a200141c00a6a41206a290300370300200141e0096a41286a200141c00a6a41286a290300370300200141e0096a41306a200141c00a6a41306a290300370300200141e0096a41386a200141c00a6a41386a290300370300200141286a41086a200141c0086a41086a280200360200200120012903c00a3703e009200120012903c00837032820170d02200241206a210241012119200041016a2100201c41606a221c0d000b0b410121220c090b20014180096a41386a2223200141e0096a41386a221e29030037030020014180096a41306a2224200141e0096a41306a221f29030037030020014180096a41286a2225200141e0096a41286a221429030037030020014180096a41206a2226200141e0096a41206a222029030037030020014180096a41186a2227200141e0096a41186a222129030037030020014180096a41106a2228200141e0096a41106a222929030037030020014180096a41086a222a200141e0096a41086a222b290300370300200141186a41086a222c200141286a41086a222d280200360200200120012903e0093703800920012001290328370318200141b00b6a41086a222e202c280200360200200120012903183703b00b200241206a2102200141b4076a212f200141e8066a4104722116200141c0066a410472210341012119410121220340200141c8006a41086a221c202a290300370300200141c8006a41106a22122028290300370300200141c8006a41186a221d2027290300370300200141c8006a41206a22302026290300370300200141c8006a41286a22312025290300370300200141c8006a41306a22322024290300370300200141c8006a41386a223320232903003703002001200129038009370348200141c0076a41086a2234202e280200360200200120012903b00b3703c007024020222019470d00201941016a22182019490d2e2019410174221a2018201a20184b1b2222ad42d0007e2206422088a70d2e2006a722184100480d2e0240024020190d002018102d211b0c010b201b201941d0006c2018102f211b0b201b450d090b201b201941d0006c6a2218200129034837030020122903002106201d290300210420302903002105203129030021072032290300213520332903002136201c290300213720182017360240201841086a2037370300201841386a2036370300201841306a2035370300201841286a2007370300201841206a2005370300201841186a2004370300201841106a2006370300201820012903c007370244201841cc006a2034280200360200201941016a211920022013460d090340200141e0056a41186a200241186a2217290000370300200141e0056a41106a200241106a2218290000370300200141e0056a41086a200241086a221a290000370300200120022900003703e005200120003602c006201a29000021062018290000210420022900002105200341186a2017290000370000200341106a2004370000200341086a2006370000200320053700004100211702402000200310b3030d00200141e8066a41206a200141c0066a41206a280200360200200141e8066a41186a200141c0066a41186a290300370300200141e8066a41106a200141c0066a41106a290300370300200141e8066a41086a200141c0066a41086a290300370300200120012903c0063703e80620014180066a41186a2217201641186a221829000037030020014180066a41106a221a201641106a223829000037030020014180066a41086a2239201641086a223a2900003703002001201629000037038006201d201829000037030020122038290000370300201c203a2900003703002001201629000037034820014190076a200141c8006a10c602200141a0066a41186a22182017290300370300200141a0066a41106a2238201a290300370300200141a0066a41086a221a203929030037030020012001290380063703a00620012802b0072217450d002015200129039007370300201541186a20014190076a41186a290300370300201541106a20014190076a41106a290300370300201541086a20014190076a41086a290300370300201d201829030037030020122038290300370300201c201a290300370300200141e0086a41086a2218202f41086a280200360200200120012903a0063703482001202f2902003703e008200141c0076a41386a221a2033290300370300200141c0076a41306a22382032290300370300200141c0076a41286a22392031290300370300200141c0076a41206a223a2030290300370300200141c0076a41186a223b201d290300370300200141c0076a41106a223c20122903003703002034201c290300370300200120012903483703c007200141c00a6a41386a201a290300370300200141c00a6a41306a2038290300370300200141c00a6a41286a2039290300370300200141c00a6a41206a203a290300370300200141c00a6a41186a203b290300370300200141c00a6a41106a203c290300370300200141c00a6a41086a2034290300370300200120012903c0073703c00a200141c0086a41086a2018280200360200200120012903e0083703c0080b202b200141c00a6a41086a2903003703002029200141c00a6a41106a2903003703002021200141c00a6a41186a2903003703002020200141c00a6a41206a2903003703002014200141c00a6a41286a290300370300201f200141c00a6a41306a290300370300201e200141c00a6a41386a290300370300202d200141c0086a41086a280200360200200120012903c00a3703e009200120012903c008370328024020170d00200041016a21002013200241206a2202460d0b0c010b0b2023201e2903003703002024201f29030037030020252014290300370300202620202903003703002027202129030037030020282029290300370300202a202b290300370300202c202d280200360200200120012903e0093703800920012001290328370318202e202c280200360200200120012903183703b00b200241206a2102200041016a21000c000b0b41e9bcc0004133200141e0086a419cbdc0001038000b41e9bcc0004133200141e0086a419cbdc0001038000b41e9bcc0004133200141e0086a419cbdc0001038000b41e9bcc0004133200141e0086a419cbdc0001038000b41e9bcc0004133200141e0086a419cbdc0001038000b41e9bcc0004133200141e0086a419cbdc0001038000b41d00041081033000b201841081033000b02402011450d00201010310b200120193602c80a200120223602c40a2001201b3602c00a0b10b5032103411b102d2200450d21200041176a4100280096b141360000200041106a410029008fb141370000200041086a4100290087b141370000200041002900ffb0413700002000411b4136102f2202450d202002200336001b200141a0066a41186a22032002ad4280808080f003841000220041186a290000370300200141a0066a41106a2217200041106a290000370300200141a0066a41086a2216200041086a290000370300200120002900003703a00620001031200141286a41186a2003290300370300200141286a41106a2017290300370300200141286a41086a2016290300370300200120012903a00637032820021031200141286aad42808080808004842206101b10b50321034117102d2200450d1f2000410f6a4100290089d242370000200041086a4100290082d242370000200041002900fad14237000020004117412e102f2202450d1e20022003360017200141a0066a41186a22032002ad4280808080b003841000220041186a290000370300200141a0066a41106a2217200041106a290000370300200141a0066a41086a2216200041086a290000370300200120002900003703a00620001031200141286a41186a2003290300370300200141286a41106a2017290300370300200141286a41086a2016290300370300200120012903a006370328200210312006101b024002402019450d00200141c8006a200141c00a6a107d2001418b096a200141c8006a41086a2802003600002001200129034837008309200141d4006a20014187096a290000370000200141023a004c200141053a0048200120012900800937004d41014100200141c8006a1045200141003602c807200142013703c007200141c8006a41106a200141c00a6a41086a2802003602002001200f4220883e024c2001200b360248200120012903c00a370350200141c0076a200141c8006a10dd030c010b200141013a004c200141053a004841014100200141c8006a10452022450d00201b10310b0240200fa7450d00200e10310b200141c0076a41086a220241b3efc200ad4280808080a002841001220041086a290000370300200120002900003703c00720001031200141186a41086a2002290300370300200120012903c007370318200141b00b6a2008100210410240024020012802b00b2211450d0020012802b40b21222001200141b00b6a41086a2802003602a40b200120113602a00b2001200141a00b6a102c024020012802000d0020012802a40b220041807f712202417f4c0d2020012802042134024002402000410776221b0d00410121200c010b2002102d2220450d200b0240024002402034450d00200141c8006a41206a212f200141800b6a2118200141c00a6a41206a211020012802a40b21004100211a0340200141003a00e00a201a221541016a211a4100210202400240024002400240024002400240034020002002460d01200141c00a6a20026a20012802a00b22162d00003a00002001201641016a3602a00b2001200241016a22033a00e00a2003210220034120470d000b200141c0086a41186a221d200141c00a6a41186a221e290300370300200141c0086a41106a221f200141c00a6a41106a2214290300370300200141c0086a41086a2221200141c00a6a41086a2213290300370300200120012903c00a3703c00841002102200141003a00a009200320006b21190340201920026a450d0220014180096a20026a201620026a221741016a2d00003a00002001201741026a3602a00b2001200241016a22173a00a0092000417f6a21002017210220174120470d000b20014180066a41186a220220014180096a41186a221929030037030020014180066a41106a222920014180096a41106a221c29030037030020014180066a41086a222b20014180096a41086a2212290300370300200120012903800937038006201741ff01714120490d0a200020036b2100200141e0086a41086a222d202b290300370300200141e0086a41106a222b2029290300370300200141e0086a41186a2229200229030037030020012001290380062206370328200120063703e00841002102200141003a00a009201620176a211703402000450d0320014180096a20026a201720026a220341016a2d00003a00002001200341026a3602a00b2001200241016a22033a00a0092000417f6a21002003210220034120470d000b200141a0066a41186a22162019290300370300200141a0066a41106a2238201c290300370300200141a0066a41086a2239201229030037030020012001290380093703a006200341ff01714120490d03201720036a41016a2102200141c0066a41086a223a2039290300370300200141c0066a41106a22392038290300370300200141c0066a41186a22382016290300370300200120012903a0062206370328200120063703c00641002103200141003a00a00903402000450d0520014180096a20036a20022d00003a00002001200241016a22023602a00b2001200341016a22173a00a0092000417f6a21002017210320174120470d000b200141e0056a41186a22022019290300370300200141e0056a41106a2203201c290300370300200141e0056a41086a2216201229030037030020012001290380093703e005201741ff01714120490d05200141e8066a41086a22172016290300370300200141e8066a41106a22162003290300370300200141e8066a41186a22032002290300370300201e20292903003703002014202b2903003703002013202d290300370300200120012903e0052206370328200120063703e806200120012903e0083703c00a201020012903c006370000201041086a203a290300370000201041106a2039290300370000201041186a2038290300370000201820012903e806370000201841086a2017290300370000201841106a2016290300370000201841186a2003290300370000200141e0096a200141c00a6a41e00010ab051a200141c8006a41086a2021290300370300200141c8006a41106a201f290300370300200141c8006a41186a201d290300370300200120012903c008370348202f200141e0096a41e00010ab051a200141c0076a200141c8006a41800110ab051a201b2015470d0720154101742202201a2002201a4b1b221b41ffffff0f71201b470d31201b410774220241004e0d060c310b200141003602a40b200241ff0171450d0a200141003a00e00a0c0a0b200141003602a40b200241ff0171450d09200141003a00a0090c090b200141003602a40b200241ff0171450d08200141003a00a0090c080b200120003602a40b0c070b200141003602a40b200341ff0171450d06200141003a00a0090c060b200120003602a40b0c050b0240024020150d002002102d21200c010b202020154107742002102f21200b2020450d090b202020154107746a200141c0076a41800110ab051a201a2034470d000b200120003602a40b0b2020450d022034ad4220862106201bad210402402022450d00201110310b2006200484210f0c040b2001200020036b3602a40b0b201b450d00202010310b41e9bcc0004133200141e0086a419cbdc0001038000b410121204200210f0b4100210002400240200f422088a7221741077422160d004101210e410021320c010b20164102762202102d220e450d1c201641077621320b02402017450d0020174107742103200e210020202102034020002002290000370000200041186a200241186a290000370000200041106a200241106a290000370000200041086a200241086a290000370000200041206a210020024180016a2102200341807f6a22030d000b201741077441807f6a41077641016a21000b200a4102472103200141c0076a41086a221741fcdbc200ad4280808080a002841001220241086a290000370300200120022900003703c00720021031200141186a41086a2017290300370300200120012903c00737031820014100360250200142013703482000200141c8006a106f02402000450d0020004105742102200e210003402000200141c8006a1046200041206a2100200241606a22020d000b0b200a200371213b200128024c21002008200135025042208620012802482202ad84100302402000450d00200210310b0240203b450d00200141c0076a41086a22024191c0c400ad4280808080a003841001220041086a290000370300200120002900003703c00720001031200141186a41086a2002290300370300200120012903c007370318200141c0076a20081002104120012802c0072200450d0020012802c4072103200120022802003602c40a200120003602c00a200141c8006a200141c00a6a108b0120012802482202450d1b200129024c210602402003450d00200010310b200810092006a7450d00200210310b200141086a200941026a10c502024002402001280208220b0d00200141c0076a41086a220241fcdbc200ad4280808080a002841001220041086a290000370300200120002900003703c00720001031200141186a41086a2002290300370300200120012903c007370318200141c0076a200810021041024020012802c0072200450d0020012802c4072103200120022802003602c40a200120003602c00a200141c8006a200141c00a6a10890120012802482230450d1c200129024c210702402003450d00200010310b4100213c0c020b4100213c41012130420021070c010b4101213c200129020c2107200b21300b200141c0076a41086a220241e8bfc400ad4280808080c002841001220041086a290000370300200120002900003703c00720001031200141186a41086a2002290300370300200120012903c0073703184101212f2001200941016a22313602482008200c4280808080c0008410032001203c3a00172001202020166a22093602a40b200120203602a00b2001200141a00b6a3602b40b2001200141176a3602b00b4100211a024002402007422088a7220241057422000d00410021220c010b2000410575222241ffffff0f712022470d23202241077422034100480d232003102d222f450d190b02402002450d00203020006a213a200141c0076a41c0006a2118200141c0076a41206a2110200141c8006a41206a213420014180096a41c0006a211120014180096a41206a210a4100211a202f211c203021150340201541086a2900002106201541106a29000021042015290000210520014190076a41186a2212201541186a29000037030020014190076a41106a221b200437030020014190076a41086a221d20063703002001200537039007200141186a20014190076a109902200141c0086a200135022042208620012802182221ad84100210410240024020012802c0082216450d0020012802c408211320012802c808211741002100200141003a00e00a0240024002400240034020172000460d01200141c00a6a20006a201620006a2d00003a00002001200041016a22033a00e00a2003210020034120470d000b20014180066a41186a2202200141c00a6a41186a221e29030037030020014180066a41106a2219200141c00a6a41106a221f29030037030020014180066a41086a2229200141c00a6a41086a2214290300370300200120012903c00a37038006200341ff01714120490d03201720036b2100200141e0086a41086a222b2029290300370300200141e0086a41106a22292019290300370300200141e0086a41186a222d200229030037030020012001290380062206370328200120063703e00841002102200141003a00e00a201620036a2119200320176b21170340201720026a450d02200141c00a6a20026a201920026a2d00003a00002001200241016a22033a00e00a2000417f6a21002003210220034120470d000b200141a0066a41186a2202201e290300370300200141a0066a41106a2217201f290300370300200141a0066a41086a22382014290300370300200120012903c00a3703a006200341ff01714120490d03201920036a2103200141c0066a41086a22192038290300370300200141c0066a41106a22382017290300370300200141c0066a41186a22392002290300370300200120012903a0062206370328200120063703c00641002117200141003a00e00a03402000450d03200141c00a6a20176a20032d00003a00002001201741016a22023a00e00a2000417f6a2100200341016a21032002211720024120470d000b200141e0056a41186a2200201e290300370300200141e0056a41106a2203201f290300370300200141e0056a41086a22172014290300370300200120012903c00a3703e005200241ff01714120490d03200141e8066a41086a22022017290300370300200141e8066a41106a22172003290300370300200141e8066a41186a22032000290300370300200141c0076a41186a202d290300370300200141c0076a41106a2029290300370300200141c0076a41086a202b290300370300200120012903e0052206370328200120063703e806200120012903e0083703c007201020012903c006370000201041086a2019290300370000201041106a2038290300370000201041186a2039290300370000201820012903e806370000201841086a2002290300370000201841106a2017290300370000201841186a2003290300370000200141c00a6a200141c0076a41e00010ab051a02402013450d00201610310b200141e0096a200141c00a6a41e00010ab051a200141c0076a200141e0096a41e00010ab051a200141c00a6a200141c0076a41e00010ab051a410121000c050b200041ff0171450d02200141003a00e00a0c020b200241ff0171450d01200141003a00e00a0c010b201741ff0171450d00200141003a00e00a0b41e9bcc0004133200141e0086a419cbdc0001038000b200141c0076a200141e0096a41e00010ab051a410021000b0240200128021c450d00202110310b024002402000450d0020014180096a200141c00a6a41e00010ab051a0c010b20014180096a410041e00010aa051a0b201541206a2115024020012802b00b2d00000d0020012802b40b220228020022002002280204460d00200220004180016a3602000240024020014180096a200041206a2202460d00200220014180096a412010ad050d010b0240200a200041c0006a2202460d002002200a412010ad050d010b2011200041e0006a2200460d0120002011412010ad05450d010b20012802b00b41013a00000b200141c8006a41186a2012290300370300200141c8006a41106a201b290300370300200141c8006a41086a201d2903003703002001200129039007370348203420014180096a41e00010ab051a201a41016a211a201c200141c8006a41800110ab054180016a211c2015203a470d000b0b02402007a7450d00203010310b201a41ffffff0f71201a470d1d201a4107742200417f4c0d1d20012d001721180240024020000d00410121150c010b2000102d2215450d180b410021000240201a450d00202f201a4107746a2119200141c8006a41e0006a2102200141c8006a41c0006a2103200141c8006a41206a211720152116202f21000340200141c8006a41186a200041186a290000370300200141c8006a41106a200041106a290000370300200141c8006a41086a200041086a29000037030020012000290000370348201741186a200041386a290000370000201741106a200041306a290000370000201741086a200041286a2900003700002017200041206a290000370000200341186a200041d8006a290000370000200341106a200041d0006a290000370000200341086a200041c8006a2900003700002003200041c0006a2900003700002002200041e0006a290000370000200241086a200041e8006a290000370000200241106a200041f0006a290000370000200241186a200041f8006a2900003700002016200141c8006a41800110ab054180016a211620004180016a22002019470d000b201a41077441807f6a41077641016a21000b200141c0076a41086a220341b3efc200ad4280808080a002841001220241086a290000370300200120022900003703c00720021031200141186a41086a2003290300370300200120012903c00737031820014100360250200142013703482000200141c8006a106f02402000450d00201520004107746a21022015210003402000200141c8006a1046200041206a200141c8006a1046200041c0006a200141c8006a1046200041e0006a200141c8006a104620004180016a22002002470d000b0b200128024c21002008200135025042208620012802482202ad84100302402000450d00200210310b0240201a450d00201510310b200141c0076a41086a220241fcbfc400ad4280808080d002841001220041086a290000370300200120002900003703c00720001031200141186a41086a2002290300370300200120012903c007370318200120183a00482008200c4280808080108410032001203136024c200141073a004841014100200141c8006a10454108102d2210450d16201020093602042010202036020002400240203b0d00200141c00a6a41086a220241f7bcc400ad4280808080c003841001220041086a290000370300200120002900003703c00a20001031200141c8006a41086a2002290300370300200120012903c00a370348200141c0076a200d100210410240024020012802c00722000d00420021060c010b200141c0076a41086a2802004108490d182000290000210620012802c407450d00200010310b200110b5033602482006200141c8006a10de03201010310c010b200141c0076a201010df030240024020012802c0070d0020101031410021034108211c410021170c010b200141c8006a41106a200141c0076a41106a290300370300200141c8006a41086a200141c0076a41086a290300370300200141c8006a41186a200141c0076a41186a290300370300200141c8006a41206a200141c0076a41206a280200360200200141c00a6a41086a200141d4006a290200370300200141c00a6a41106a200141dc006a290200370300200141c00a6a41186a200141e4006a290200370300200120012903c0073703482001200129024c3703c00a201028020420102802006b41077641016a220341286c2200417f4c0d1f2000102d221c450d16201c20012903c00a370300201c4201370320201c41186a200141c00a6a41186a2212290300370300201c41106a200141c00a6a41106a221b290300370300201c41086a200141c00a6a41086a221d290300370300200141c0076a201010df030240024020012802c0070d00410121170c010b200141c8006a410472210041c8002116410121170340200141c8006a41206a200141c0076a41206a280200360200200141c8006a41186a200141c0076a41186a2219290300370300200141c8006a41106a200141c0076a41106a2215290300370300200141c8006a41086a200141c0076a41086a2218290300370300200120012903c007370348201d200041086a290200370300201b200041106a2902003703002012200041186a290200370300200120002902003703c00a201920122903003703002015201b2903003703002018201d290300370300200120012903c00a3703c007024020172003470d00201028020420102802006b41077620036a41016a22022003490d272003410174221e2002201e20024b1b221ead42287e2206422088a70d272006a722024100480d270240024020030d002002102d211c0c010b201c200341286c2002102f211c0b201c450d18201e21030b201c20166a221e41606a220220012903c007370300201829030021062015290300210420192903002105201e4201370300200241186a2005370300200241106a2004370300200241086a2006370300200141c0076a201010df03201641286a2116201741016a211720012802c0070d000b0b201010310b200141c00a6a41086a220241fac8c400ad4280808080f002841001220041086a290000370300200120002900003703c00a20001031200141c8006a41086a2002290300370300200120012903c00a370348200141c0076a200141c8006a109d010240024020012802c0074101460d00200120173602502001200336024c2001201c360248200141c8006a41004100200110e0030c010b200d100920012902c4072106200120173602502001200336024c2001201c360248200141c8006a2006a741012006422088a710e0030b200141c00a6a41086a220041f7bcc400ad4280808080c0038422061001220241086a290000370300200120022900003703c00a20021031200141c8006a41086a22032000290300370300200120012903c00a370348200141c0076a200d100210410240024020012802c00722020d00420021040c010b200141c0076a41086a2802004108490d142002290000210420012802c407450d00200210310b200020061001220241086a290000370300200120022900003703c00a2002103120032000290300370300200120012903c00a3703482001200442017c22063703c007200d200141c0076aad42808080808001841003200110b5033602482006200141c8006a10de030b4108102d2200450d1120002009360204200020203602004108102d2202450d102002202f201a4107746a221f3602042002202f360200200141a00b6a20004194c9c400108c01200141b00b6a20024194c9c400108c0120012802a80b210220012802a40b211520012802a00b2119200141186a41086a200141b00b6a41086a280200360200200120012903b00b370318200141c00a6a41086a22034183a8c400ad4280808080f001841001220041086a290000370300200120002900003703c00a20001031200141c0076a41086a2003290300370300200120012903c00a3703c007200141c8006a200141c0076aad428080808080028422081002104102400240200128024822000d00420021060c010b200141c8006a41086a2802004108490d1020002900002106200128024c450d00200010310b200642017c22042006540d0e200141c00a6a41086a22004183a8c400ad4280808080f001841001220341086a290000370300200120032900003703c00a20031031200141c0076a41086a22172000290300370300200120012903c00a3703c007200120043703482008200c4280808080800184100320004192a8c400ad42808080808002841001220341086a290000370300200120032900003703c00a2003103120172000290300370300200120012903c00a3703c00720014100360250200142013703482002200141c8006a106f02402002450d002019200241286c6a21162019210203402002200141c8006a1046200241206a290300210602400240200128024c2203200128025022006b4108490d00200128024821030c010b200041086a22172000490d25200341017422002017200020174b1b22004100480d250240024020030d002000102d21030c010b200128024820032000102f21030b2003450d102001200036024c20012003360248200128025021000b2001200041086a360250200320006a20063700002016200241286a2202470d000b0b200128024c21002008200135025042208620012802482202ad84100302402000450d00200210310b02402015450d00201910310b200442017c22062004540d0c200141c00a6a41086a220241d1a8c400ad4280808080b002841001220041086a290000370300200120002900003703c00a20001031200141c0076a41086a22002002290300370300200120012903c00a3703c007200141c8006a200141c0076a106e20012d00482102200141c0076a41186a2203200141e1006a290000370300200141c0076a41106a2217200141d9006a2900003703002000200141d1006a290000370300200120012900493703c0070240024020024101460d00200141c0066a41186a4200370300200141c0066a41106a4200370300200141c0066a41086a4200370300200142003703c0060c010b200141c0066a41186a2003290300370300200141c0066a41106a2017290300370300200141c0066a41086a2000290300370300200120012903c0073703c0060b200141c00a6a41086a220041e4a8c400ad428080808090028422041001220241086a290000370300200120022900003703c00a20021031200141c0076a41086a22032000290300370300200120012903c00a3703c007200141c8006a2008100210414100211a024020012802482202450d00200141c8006a41086a2802004104490d0c2002280000211a200128024c450d00200210310b200020041001220241086a290000370300200120022900003703c00a2002103120032000290300370300200120012903c00a3703c007200141003602482008200c4280808080c000841003200141286a41186a200141c0066a41186a290300370300200141286a41106a200141c0066a41106a290300370300200141286a41086a200141c0066a41086a290300370300200120012903c006370328417f201a41016a22002000201a491b410d74412872221b417f4c0d1d201b102d2212450d0a2012200129032837000020122006370020201241186a200141286a41186a290300370000201241106a200141286a41106a290300370000201241086a200141286a41086a290300370000200141a0066aad428080808080048421044128211c41002102410021004100211002400240024003400240024002400240024002402000450d0020032017470d010b0340200021172002201a4f0d024116102d2200450d132000410e6a4100290083a944370000200041086a41002900fda844370000200041002900f5a84437000020004116412c102f2203450d1220032002360016200141c0076a41186a22162003ad4280808080a003841000220041186a290000370300200141c0076a41106a2219200041106a290000370300200141c0076a41086a2215200041086a290000370300200120002900003703c00720001031200141a0066a41186a2016290300370300200141a0066a41106a2019290300370300200141a0066a41086a2015290300370300200120012903c0073703a00620031031200141c0076a2004100210410240024020012802c0072203450d0020012802c4072116200120012802c8073602c40a200120033602c00a200141c8006a200141c00a6a10810120012802482200450d13200129024c210602402016450d00200310310b200410090c010b41012100420021060b20002006422088a74105746a210302402017450d002018450d00201010310b200241016a21022006a721182000211020032000460d000b20002110200021170b201741086a2900002106201741106a290000210520172900002107200141e0056a41186a201741186a290000220d370300200141e0056a41106a2005370300200141e0056a41086a2006370300200120073703e00520014180066a41186a2219200d37030020014180066a41106a2215200537030020014180066a41086a221d20063703002001200737038006201b201c6b411f4b0d03201c41206a2216201c490d2a201b410174221e2016201e20164b1b22164100480d2a201b0d012016102d21120c020b02402017450d002018450d00200010310b200141c0076a41186a2203201cad4220862012ad841000220241186a290000370300200141c0076a41106a2217200241106a290000370300200141c0076a41086a2200200241086a290000370300200120022900003703c00720021031200141e8066a41186a2003290300370300200141e8066a41106a2017290300370300200141e8066a41086a2000290300370300200120012903c0073703e8060240201b450d00201210310b200141c00a6a41086a220241d1a8c400ad4280808080b0028422061001221641086a290000370300200120162900003703c00a2016103120002002290300370300200120012903c00a3703c0072001411036024c2001200141c0076a360248200141e8066a200141c8006a10b002200141e0096a41186a200141c0066a41186a2903002204370300200141e0096a41106a200141c0066a41106a2903002205370300200141e0096a41086a200141c0066a41086a2903002207370300200120012903c006220d3703e009200141c0086a41186a2004370300200141c0086a41106a2005370300200141c0086a41086a20073703002001200d3703c008200241c2a8c400ad4280808080f001841001221641086a290000370300200120162900003703c00a2016103120002002290300370300200120012903c00a3703c0072001411036024c2001200141c0076a360248200141c0086a200141c8006a10ae02200220061001221641086a290000370300200120162900003703c00a2016103120002002290300370300200120012903c00a3703c007200141c8006a200141c0076a106e20012d004821022003200141e1006a2900003703002017200141d9006a2900003703002000200141d1006a290000370300200120012900493703c00720024101460d05200141f8086a4200370300200141f0086a4200370300200141e8086a4200370300200142003703e0080c060b2012201b2016102f21120b2012450d022016211b0b201741206a21172012201c6a2216200129038006370000201641186a2019290300370000201641106a2015290300370000201641086a201d290300370000201c41206a211c0c000b0b201641011033000b200141e0086a41186a200141c0076a41186a290300370300200141e0086a41106a200141c0076a41106a290300370300200141e0086a41086a200141c0076a41086a290300370300200120012903c0073703e0080b200141c0076a41086a2200200141186a41086a280200360200200141c0076a41246a200141e0086a41186a290300370200200141c0076a411c6a200141e0086a41106a290300370200200141c0076a41146a200141e0086a41086a2903003702002001200129031822063703c007200120012903e0083702cc07200141f4006a200141c0076a41286a280200360200200141c8006a41246a200141e0076a290300370200200141c8006a411c6a200141c0076a41186a290300370200200141c8006a41146a200141c0076a41106a290300370200200141d4006a220320002903003702002001200637024c20014100360248200141003602c80a200142013703c00a4101102d2200450d06200141013602c40a200120012802c80a220241016a3602c80a200120003602c00a200020026a41013a0000200128024c210220032802002200200141c00a6a106f02402000450d002002200041286c6a211603402002200141c00a6a1046200241206a29030021060240024020012802c40a220320012802c80a22006b4108490d0020012802c00a21030c010b200041086a22172000490d25200341017422002017200020174b1b22004100480d250240024020030d002000102d21030c010b20012802c00a20032000102f21030b2003450d08200120003602c40a200120033602c00a20012802c80a21000b2001200041086a3602c80a200320006a20063700002016200241286a2202470d000b0b200141d8006a200141c00a6a10702001418b096a200141c00a6a41086a280200360000200120012903c00a2206370390072001200637008309200141cc0a6a20014187096a290000370000200141c28289aa043600c10a200141023a00c00a20012001290080093700c50a200141c00a6a1071024020012802480d00200141c8006a41086a280200450d00200128024c10310b4108102d221a450d04201a2009360204201a20203602004108102d221b450d03201b201f360204201b202f360200105b2102200141c00a6a41086a220341dcd1c200ad42808080809002841001220041086a290000370300200120002900003703c00a20001031200141c0076a41086a2003290300370300200120012903c00a3703c0072001200241e4006a3602482008200c4280808080c000841003200141c0076a201a10e1030240024020012802c0070d00201a10314100211741012110410021030c010b200141c8006a41106a200141c0076a41106a290300370300200141c8006a41086a200141c0076a41086a290300370300200141c8006a41186a200141c0076a41186a290300370300200141c8006a41206a200141c0076a41206a28020036020020014180066a41086a2202200141d4006a29020037030020014180066a41106a2217200141dc006a29020037030020014180066a41186a2216200141e4006a290200370300200120012903c0073703482001200129024c3703800641012103201a280204201a2802006b41077641016a22004105742219102d2210450d032010200129038006370000201041186a2016290300370000201041106a2017290300370000201041086a2002290300370000200141c0076a201a10e1030240024020012802c0070d00200021170c010b200141c8006a410472210241202116410121030340200141c8006a41206a200141c0076a41206a280200360200200141c8006a41186a200141c0076a41186a2219290300370300200141c8006a41106a200141c0076a41106a2215290300370300200141c8006a41086a200141c0076a41086a2218290300370300200120012903c007370348200141a0066a41086a2217200241086a290000370300200141a0066a41106a221c200241106a290000370300200141a0066a41186a2212200241186a290000370300200120022900003703a006201920122903003703002015201c29030037030020182017290300370300200120012903a0063703c0070240024020032000460d00200021170c010b201a280204201a2802006b41077620006a41016a22172000490d262000410174221c2017201c20174b1b221741ffffff3f712017470d262017410574221c4100480d260240024020000d00201c102d21100c010b20102000410574201c102f21100b20100d00201c41011033000b201020166a220020012903c007370000200041186a2019290300370000200041106a2015290300370000200041086a2018290300370000200141c0076a201a10e103201641206a2116200341016a21032017210020012802c0070d000b0b201a10310b200141c00a6a41086a220241edd1c200ad4280808080d001841001220041086a290000370300200120002900003703c00a20001031200141c0076a41086a2002290300370300200120012903c00a3703c00720014100360250200142013703482003200141c8006a106f02402003450d00200341057421022010210003402000200141c8006a1046200041206a2100200241606a22020d000b0b200128024c21002008200135025042208620012802482202ad84100302402000450d00200210310b02402017450d00201010310b201b103102402022450d00202f10310b0240203c200b45720d00200128020c450d00200b10310b02402032450d00200e10310b200fa7450d00202010310b200141c00b6a24000f0b200241011033000b201941011033000b410841041033000b410841041033000b200041011033000b410141011033000b41e9bcc0004133200141e0086a419cbdc0001038000b412c41011033000b411641011033000b201b41011033000b41e9bcc0004133200141e0086a419cbdc0001038000b41e993c00041c90010bf01000b200041011033000b41e993c00041c90010bf01000b41e9bcc0004133200141e0086a419cbdc0001038000b410841041033000b410841041033000b41e9bcc0004133200141e0086a419cbdc0001038000b200241081033000b200041081033000b41e9bcc0004133200141e0086a419cbdc0001038000b410841041033000b200041011033000b200341011033000b41e9bcc0004133200141e0086a419cbdc0001038000b41e9bcc0004133200141e0086a419cbdc0001038000b200241011033000b200241011033000b1032000b412e41011033000b411741011033000b413641011033000b411b41011033000b1034000be5a801080f7f047e087f017e1f7f037e057f1b7e230041c0116b2202240020024188046a200141086a107d20002802082103200028020421042000280200210520012802042106200128020021072002280290042108200228028c042109200228028804210a0240024002400240024002400240024002400240024002404104102d220b450d00200b200736000020024284808080c00037029c082002200b360298080240411b102d2200450d004100210c200041176a41002800c6bd44360000200041106a41002900bfbd44370000200041086a41002900b7bd44370000200041002900afbd443700002002429b808080b00337029c0a200220003602980a4187d2c300200241980a6a10b10220024188066a41186a220d20023502a00a42208620022802980a220ead841000220041186a29000037030020024188066a41106a220f200041106a29000037030020024188066a41086a2210200041086a290000370300200220002900003703880620001031200241c8096a41186a200d290300370300200241c8096a41106a200f290300370300200241c8096a41086a201029030037030020022002290388063703c8090240200228029c0a450d00200e10310b200241980a6a200241c8096aad221142808080808004842212100210410240024020022802980a220d0d000c010b200228029c0a210f2002200241a00a6a2802003602fc082002200d3602f80820024180046a200241f8086a102c0240024002402002280280040d0020022802fc0822102002280284042200490d002000417f4c0d070240024020000d004101210c0c010b2000107a220c450d02200c20022802f808220e200010ab051a2002201020006b3602fc082002200e20006a3602f8080b200c0d020b41e9bcc000413320024188066a419cbdc0001038000b200041011033000b2000ad22134220862013842113200f450d00200d10310b200220134200200c1b22144220883e02cc092002200c4101200c1b22153602c809200241f8036a200241c8096a102c20022802fc0321164100211002400240024020022802f8030d0020022802cc09220041246e220e41246c220c417f4c0d0602400240200c0d00410421100c010b200c102d2210450d030b2016450d0041002117034002400240024020004104490d00201741016a211820022000417c6a220f3602cc09200220022802c809220d41046a3602c809200d280000211941002100200241003a00b80a02400340200241003a00c805200f2000460d01200241980a6a20006a200d20006a220c41046a2d00003a00002002200c41056a3602c8092002200041016a220c3a00b80a200c2100200c4120470d000b20024188066a41086a220d200241980a6a41086a29030037030020024188066a41106a221a200241980a6a41106a29030037030020024188066a41186a221b200241980a6a41186a290300370300200220022903980a370388062002200f200c6b22003602cc09200e2017470d032017410174220c2018200c20184b1b220ead42247e2213422088a70d142013a7220c41004e0d020c140b200241003602cc09200041ff0171450d00200241003a00b80a0b0240200e0d00410021100c040b20101031410021100c030b0240024020170d00200c102d21100c010b2010201741246c200c102f21100b2010450d030b2010201741246c6a220c2019360200200c200229038806370204200c410c6a200d290300370200200c41146a201a290300370200200c411c6a201b2903003702002018211720182016470d000b0b200241f8086a20024198086a109e04200241c8096a20023502800942208620022802f808220cad841002104102400240024020022802c8092200450d0020022802cc09210d2002200241d0096a2802003602bc07200220003602b807200241980a6a200241b8076a10890120022802980a221c450d02200229029c0a2113200d450d01200010310c010b420021134101211c0b024020022802fc08450d00200c10310b2013422088211d02402014a7450d00201510310b2016410020101b211e200e410020101b211f2010410420101b2115201da721202013a721212002420037029c0420024198bfc00036029804200a200841d0006c6a2122024020080d00200a21160c060b200241f8046a41306a2123200241980a6a410c6a2124200341ffffff3f7120034721252003410574222641606a41057641016a2127200241980a6a41306a2128200241980a6a41206a2129200241980a6a410272212a200241d8066a41046a212b200241980a6a41c0006a212c200241c8096a41106a211b200241f8086a410472212d200241f8046a41c4006a212e200a2116024002400340200241980a6a41386a22102016220041386a2903003703002028200041306a290300370300200241980a6a41286a220e200041286a2903003703002029200041206a290300370300200241980a6a41186a222f200041186a290300370300200241980a6a41106a2230200041106a290300370300200241980a6a41086a2231200041086a290300370300200241c8096a41086a2217200041cc006a280200360200200220002903003703980a2002200041c4006a2902003703c809200041d0006a2116200041c0006a2802002200450d08200241b8046a41386a220c2010290300370300200241b8046a41306a220d2028290300370300200241b8046a41286a220f200e290300370300200241b8046a41206a22082029290300370300200241b8046a41186a2218202f290300370300200241b8046a41106a22192030290300370300200241b8046a41086a221a2031290300370300200241a8046a41086a22322017280200360200200220022903980a3703b804200220022903c8093703a804200241f8046a41386a2233200c2903003703002023200d290300370300200241f8046a41286a2234200f290300370300200241f8046a41206a220f2008290300370300200241f8046a41186a22082018290300370300200241f8046a41106a22352019290300370300200241f8046a41086a2236201a290300370300200220022903b8043703f804200220003602b805202e20022903a804370200202e41086a203228020036020002400240024002400240024002404104102d220d450d00200d200736000020244100290087d243370000202441086a410029008fd24337000020024284808080c00037029c0a2002200d3602980a2002200241f8046a3602b40a4108102d2200450d01200242083702cc09200220003602c8092024200241c8096a10b2024104200241c8096a106f0240024020022802cc09220c20022802d00922006b4104490d0020022802c809210c0c010b200041046a22182000490d1a200c41017422002018200020184b1b22004100480d1a02400240200c0d002000102d210c0c010b20022802c809200c2000102f210c0b200c450d03200220003602cc092002200c3602c80920022802d00921000b2002200041046a3602d009200c20006a200d280000360000200241f8046a200241c8096a10462002200f3602f808200241f8086a200241c8096a10ac01200220233602f808200241f8086a200241c8096a10ac0120022802b805210020022802c005220c200241c8096a106f0240200c450d00200c41306c210c0340200041106a200241c8096a1046200220003602f808200041306a2100200241f8086a200241c8096a10ac01200c41506a220c0d000b0b20022802cc09210c20024188066a41186a221820023502d00942208620022802c809220fad841000220041186a29000037030020024188066a41106a2219200041106a29000037030020024188066a41086a221a200041086a290000370300200220002900003703880620001031200241c8056a41186a22372018290300370300200241c8056a41106a22382019290300370300200241c8056a41086a2239201a29030037030020022002290388063703c8050240200c450d00200f10310b200d10314110102d2200450d03200041002900c0ca432213370000200041086a41002900c8ca43221437000020024290808080800237029c0a200220003602980a2002200241980a6a3602f808200241c8056a200241f8086a103e201820023502a00a42208620023502980a841000220041186a2900003703002019200041106a290000370300201a200041086a290000370300200220002900003703880620001031200241c8096a41186a223a2018290300370300201b20192903003703002017201a29030037030020022002290388063703c8090240200228029c0a450d0020022802980a10310b200241f0036a200241c8096a4120410141004100103f20022802f0034101460d040c050b410441011033000b410841011033000b200041011033000b411041011033000b20022802bc05450d0120022802b80510310c010b200241e8056a41186a223b2008290300370300200241e8056a41106a223c2035290300370300200241e8056a41086a22352036290300370300200220022903f8043703e80520022802c0052208ad42307e221d422088a70d0a201da7220c417f4c0d0a2033290300211d2034290300213d20022903a805213e200229039805213f20022802b805210002400240024002400240024002400240024002400240024002400240200c0d00410821320c010b200c102d2232450d010b0240024020080d004100210d0c010b2000200841306c6a210f4100210d2032210c0340200c2000290300370300200c200041086a290300370308200c41106a200041106a290300370300200c41186a200041186a290300370300200c41206a200041206a290300370300200c41286a200041286a290300370300200c41306a210c200d41016a210d200041306a2200200f470d000b0b200241c8096a41386a201d370300200241c8096a41286a203d370300203a203b290300370300201b203c290300370300201720352903003703002002203e3703f8092002203f3703e809200220022903e8053703c8092002200d3602900a2002200836028c0a200220323602880a0240024020022802980422004198bfc000460d00200228029c04210c0c010b200241980a6a410041f00610aa051a41f806102d2200450d024100210c200041003b010620004100360200200041086a200241980a6a41f00610ab051a2002410036029c0420022000360298040b2002200036029c0a2002200c3602980a200220024198046a3602a00a200241f8086a200241980a6a200241c8096a10ed01024020022802f8084101470d00202c202d2902003702002031201b41086a2903003703002030201b41106a290300370300202f201b41186a2903003703002029201b41206a290300370300200e201b41286a2903003703002028201b41306a2903003703002010201b41386a290300370300202c41086a202d41086a2902003702002002201b2903003703980a20022802d409210f202b41086a220c2017280200360200202b20022903c80937020020024188066a200241980a6a41d00010ab051a200241e8066a20024188066a41d00010ab051a200220022802a00441016a3602a00420022802b007213c20022802b407210d20022802ac07210020024198086a41086a2240201a29030037030020024198086a41106a2208201929030037030020024198086a41186a2232201829030037030020024198086a41206a223420024188066a41206a29030037030020024198086a41286a223520024188066a41286a29030037030020024198086a41306a223620024188066a41306a29030037030020024198086a41386a223b20024188066a41386a29030037030020024188086a41086a2241200c2802003602002002200229038806370398082002202b2902003703880820002f01062233410b490d05200241980a6a410041f00610aa051a41f806102d2233450d03203341003b010620334100360200203341086a200241980a6a41f00610ab05210c200241980a6a4108200041086a224220004198bfc0004622431b224441e0036a41d00010ab051a200c204441b0046a20002f010641796a224441d0006c10ab05210c200041063b0106203320443b0106200241c8096a200241980a6a41d00010ab051a02400240200d4107490d00200d41d0006c4108200c20334198bfc0004622101b6a220c41a07c6a200c41d07b6a220c4100204441ffff037120101b200d6b41d0006c41b0046a10ac051a200c200f36020c200c41086a2041280200360200200c200229038808370300200c200229039808370310200c41186a2040290300370300200c41206a2008290300370300200c41286a2032290300370300200c41306a2034290300370300200c41386a2035290300370300200c41c0006a2036290300370300200c41c8006a203b290300370300203320332f010641016a3b01060c010b4108210c200241e8086a41086a20024188086a41086a280200360200200241980a6a41086a20024198086a41086a29030037030020302008290300370300202f203229030037030020292034290300370300200e2035290300370300202820362903003703002010203b29030037030020022002290388083703e80820022002290398083703980a024002402043450d00410021080c010b20002f010621082042210c0b200c200d41d0006c6a220c41d0006a200c2008200d6b41d0006c10ac051a200c200f36020c200c41086a200241e8086a41086a280200360200200c20022903e808370300200c20022903980a370310200c41186a2031290300370300200c41206a2030290300370300200c41286a202f290300370300200c41306a2029290300370300200c41386a200e290300370300200c41c0006a2028290300370300200c41c8006a2010290300370300200020002f010641016a3b01060b200241f8086a200241c8096a41d00010ab051a200241b8076a200241f8086a41d00010ab051a20002802002208450d0620002f01042132034020024198086a200241b8076a41d00010ab051a203241ffff037121100240024002400240024020082f01062200410b490d00202a410041a20710aa051a41a807102d220f450d0a200f4100360200200f41046a200241980a6a41a40710ab051a200241980a6a4108200841086a223620084198bfc00046223b1b220041e0036a41d00010ab051a200f41086a2235200041b0046a20082f0106220041796a220c41d0006c10ab051a200f41f8066a20084194076a2000417a6a220e41027410ab052134200841063b0106200f200c3b01060240200e450d00410021002034210c0340200c280200220d20003b0104200d200f360200200c41046a210c200e200041016a2200470d000b0b200241c8096a200241980a6a41d00010ab051a200241f8086a200241c8096a41d00010ab051a203241ffff037122004107490d03200241980a6a20024198086a41d00010ab051a201041796a21004198bfc000210d200f4198bfc000470d0141082135410021320c020b4108200841086a20084198bfc00046220d1b201041d0006c6a220c41d0006a200c41002000200d1b20106b41d0006c10ac051a200c20024198086a41d00010ab051a200820082f010641016a220c3b01062010410274200841f8066a220d6a41086a200d201041016a22004102746a220d200c41ffff0371220c20006b41027410ac051a200d20333602002010200c4f0d0c203320003b0104203320083602002000200c4f0d0c200c417f6a210f20082000417f6a22004102746a4180076a210c0340200c280200220d200041026a3b0104200d2008360200200c41046a210c200f200041016a2200470d000c0d0b0b200f2f01062132200f210d0b20352010417a6a220c41d0006c6a2035200041d0006c6a220e203220006b41d0006c10ac051a200e200241980a6a41d00010ab051a200f200f2f010641016a220e3b01062010410274223220346a416c6a2034200c4102746a2210200e41ffff0371200c6b41027410ac051a20102033360200200c200d2f010622104b0d01200f20326a41e0066a210c0340200c280200220d200041016a22003b0104200d200f360200200c41046a210c20002010490d000c020b0b200841f8066a210c200241980a6a20024198086a41d00010ab051a02400240203b450d00410821364100210e0c010b20082f0106210e0b2036201041d0006c6a220d41d0006a200d200e20106b41d0006c10ac051a200d200241980a6a41d00010ab051a200820082f010641016a220d3b010620104102742232200c6a41086a200c201041016a220e4102746a220c200d41ffff0371200e6b41027410ac051a200c2033360200200020082f0106220d4f0d00200820326a41fc066a210003402000280200220c201041016a22103b0104200c2008360200200041046a2100200d2010470d000b0b200241b8076a200241f8086a41d00010ab051a0240200828020022000d00200f21330c080b20082f0104213220002108200f21330c000b0b200241d8066a41086a202d41086a2902003703002002202d2902003703d8062008450d06203210310c060b200c41081033000b41f80641081033000b41f80641081033000b41a80741081033000b4108200041086a20004198bfc0004622101b200d41d0006c6a220c41d0006a200c4100203320101b200d6b41d0006c10ac051a200c200f36020c200c41086a2041280200360200200c200229038808370300200c200229039808370310200c41186a2040290300370300200c41206a2008290300370300200c41286a2032290300370300200c41306a2034290300370300200c41386a2035290300370300200c41c0006a2036290300370300200c41c8006a203b290300370300200020002f010641016a3b01060c010b202a410041a20710aa051a41a807102d2200450d0120004100360200200041046a200241980a6a41a40710ab051a2000203c280200220c3602f806203c2000360200203c203c28020441016a360204200c41003b0104200c20003602004108200041086a20004198bfc000461b20002f0106220c41d0006c6a200241b8076a41d00010ab051a200041f8066a200c41016a220c4102746a2033360200200020002f010641016a3b01062033200c3b0104203320003602000b200241c8096a200241f8046a41d00010ab051a20250d0f2026417f4c0d0f0240024020260d004101210f0c010b2026102d220f450d020b0240024020030d00410021000c010b2026210d200f21002005210c03402000200c290000370000200041186a200c41186a290000370000200041106a200c41106a290000370000200041086a200c41086a290000370000200041206a2100200c41206a210c200d41606a220d0d000b202721000b200241980a6a200241c8096a41d00010ab051a200220003602f00a200220033602ec0a2002200f3602e80a4110102d2200450d0220002013370000200041086a20143700002002429080808080023702fc08200220003602f8082002200241f8086a36029808200241c8056a20024198086a103e201820023502800942208620023502f808841000220041186a2900003703002019200041106a290000370300201a200041086a290000370300200220002900003703880620001031203a2018290300370300201b20192903003703002017201a29030037030020022002290388063703c809024020022802fc08450d0020022802f80810310b2002410036028009200242013703f808200241980a6a200241f8086a1046200220293602980820024198086a200241f8086a10ac01200220283602980820024198086a200241f8086a10ac0120022802d80a210020022802e00a220c200241f8086a106f0240200c450d00200c41306c210c0340200041106a200241f8086a10462002200036029808200041306a210020024198086a200241f8086a10ac01200c41506a220c0d000b0b20022802e80a210020022802f00a220c200241f8086a106f0240200c450d00200c410574210c03402000200241f8086a1046200041206a2100200c41606a220c0d000b0b20022802fc082100201220023502800942208620022802f808220cad84100302402000450d00200c10310b024020022802dc0a450d0020022802d80a10310b024020022802ec0a450d0020022802e80a10310b200241f8086a41186a22102037290300370300200241f8086a41106a220e2038290300370300200241f8086a41086a22082039290300370300200220022903c8053703f808410021000240201e41014b0d000240201e0e020005000b202f20102903003703002030200e29030037030020312008290300370300200220022903f8083703980a410021000c050b201e210c03402000200c410176220d20006a220f2015200f41246c6a28020020074b1b2100200c200d6b220c41014b0d000c040b0b41a80741081033000b202641011033000b411041011033000b02402015200041246c6a280200220c2007460d002000200c2007496a21000b202f20102903003703002030200e29030037030020312008290300370300200220022903f8083703980a201e20004f0d0041bcaec000411e419cdec40010a401000b0240201e201f470d00201e41016a220c201e490d14201e410174220d200c200d200c4b1b221fad42247e2213422088a70d142013a7220c4100480d1402400240201e0d00200c102d21150c010b2015201e41246c200c102f21150b2015450d030b2015200041246c6a220c41246a200c201e20006b41246c10ac051a200c2007360200200c411c6a202f290300370200200c41146a2030290300370200200c410c6a2031290300370200200c20022903980a370204203a2010290300370300201b200e29030037030020172008290300370300200220022903f8083703c809024020202021470d00202041016a22002020490d142020410174220c2000200c20004b1b222141ffffff3f712021470d14202141057422004100480d140240024020200d002000102d211c0c010b201c20204105742000102f211c0b201c450d040b201e41016a211e201c20204105746a220020022903c809370000200041186a203a290300370000200041106a201b290300370000200041086a2017290300370000202041016a21200b20162022470d000b202221160c070b200c41041033000b200041011033000b41e9bcc000413320024188066a419cbdc0001038000b200c41041033000b200c41041033000b411b41011033000b410441011033000b024020162022460d000340201641c0006a280200220c450d01201641d0006a21000240201641c4006a280200450d00200c10310b2000211620222000470d000b0b02402009450d00200a10310b024002400240024002400240024002400240024020022802a0040d00200228029804200228029c044100109f04200b103102402021450d00201c10310b0240201f450d00201510310b2004450d01200510310c010b0240024002402020450d002020410574210c201c21000340200241980a6a200010a00420022802d80a220d0d02200041206a2100200c41606a220c0d000b0b41082132410021354100212e0c010b200241f8086a41386a2232200241980a6a41386a2216290300370300200241f8086a41306a222f200241980a6a41306a2217290300370300200241f8086a41286a2230200241980a6a41286a2218290300370300200241f8086a41206a2231200241980a6a41206a2219290300370300200241f8086a41186a220f200241980a6a41186a221a290300370300200241f8086a41106a2210200241980a6a41106a221b290300370300200241f8086a41086a220e200241980a6a41086a2233290300370300200241b8076a41086a2234200241980a6a41cc006a290200370300200241b8076a41106a2224200241980a6a41d4006a290200370300200241b8076a41186a223a200241980a6a41dc006a280200360200200220022903980a3703f8082002200241dc0a6a22082902003703b807200241c8096a41086a2228200e290300370300200241c8096a41106a22292010290300370300200241c8096a41186a2235200f290300370300200241c8096a41206a22222031290300370300200241c8096a41286a22312030290300370300200241c8096a41306a2230202f290300370300200241c8096a41386a222f203229030037030020024198086a41086a2232203429030037030020024198086a41106a2234202429030037030020024198086a41186a2224203a280200360200200220022903f8083703c809200220022903b8073703980820332028290300370300201b2029290300370300201a20352903003703002019202229030037030020182031290300370300201720302903003703002016202f290300370300200220022903c8093703980a200e203229030037030020102034290300370300200f202428020036020020022002290398083703f80841e000102d2232450d03203220022903980a3703002032200d360240203220022903f808370244203241386a2016290300370300203241306a2017290300370300203241286a2018290300370300203241206a2019290300370300203241186a201a290300370300203241106a201b290300370300203241086a2033290300370300203241cc006a200e290300370200203241d4006a2010290300370200203241dc006a200f2802003602000240200c4120470d00410121354101212e0c010b200041206a2117201c20204105746a220d41606a2131410121354101212e03402017210002400340200241980a6a200010a00420022802d80a220c0d01200d200041206a2200470d000c030b0b200241f8086a41386a220f200241980a6a41386a2218290300370300200241f8086a41306a2217200241980a6a41306a2219290300370300200241f8086a41286a2234200241980a6a41286a221a290300370300200241f8086a41206a2224200241980a6a41206a221b290300370300200241f8086a41186a2210200241980a6a41186a2233290300370300200241f8086a41106a220e200241980a6a41106a222f290300370300200241f8086a41086a2216200241980a6a41086a2230290300370300200241b8076a41086a223a200841086a290200370300200241b8076a41106a2228200841106a290200370300200241b8076a41186a2229200841186a280200360200200220022903980a3703f808200220082902003703b807200241c8096a41086a22222016290300370300200241c8096a41106a2236200e290300370300200241c8096a41186a22232010290300370300200241c8096a41206a223b2024290300370300200241c8096a41286a22242034290300370300200241c8096a41306a22342017290300370300200241c8096a41386a2217200f29030037030020024198086a41086a220f203a29030037030020024198086a41106a223a202829030037030020024198086a41186a22282029280200360200200220022903f8083703c809200220022903b8073703980820302022290300370300202f203629030037030020332023290300370300201b203b290300370300201a20242903003703002019203429030037030020182017290300370300200220022903c8093703980a2016200f290300370300200e203a2903003703002010202828020036020020022002290398083703f8080240202e2035470d00203541016a220f2035490d1520354101742217200f2017200f4b1b222ead42e0007e2213422088a70d152013a7220f4100480d150240024020350d00200f102d21320c010b2032203541e0006c200f102f21320b2032450d060b200041206a21172032203541e0006c6a220f20022903980a370300200f41106a202f290300370300200f41086a20302903003703002019290300211320182903002114201a290300211d201b290300213d2033290300213e200f41c0006a200c360200200f41186a203e370300200f41206a203d370300200f41286a201d370300200f41386a2014370300200f41306a2013370300200f41c4006a20022903f808370200200f41cc006a2016290300370200200f41d4006a200e290300370200200f41dc006a2010280200360200203541016a213520312000470d000b0b200241b80a6a201e360200200241b40a6a201f360200200241a80a6a2020ad4220862021ad843703002002201c3602a40a20024284808080c00037029c0a2002200b3602980a200220153602b00a200241003602d009200242013703c809201e200241c8096a106f0240201e450d002015201e41246c6a210e2015210c0340200c280200210f0240024020022802cc09220d20022802d00922006b4104490d0020022802c809210d0c010b200041046a22102000490d15200d41017422002010200020104b1b22004100480d1502400240200d0d002000102d210d0c010b20022802c809200d2000102f210d0b200d450d07200220003602cc092002200d3602c80920022802d00921000b2002200041046a3602d009200d20006a200f3600002002200241c8096a3602f808200c41046a200241f8086a103e200c41246a220c200e470d000b0b20022802d009210d20022802cc09210f20022802c809210c411b102d2200450d05200041176a41002800c6bd44360000200041106a41002900bfbd44370000200041086a41002900b7bd44370000200041002900afbd443700002002429b808080b0033702fc08200220003602f8084187d2c300200241f8086a10b10220024188066a41186a221020023502800942208620022802f8082216ad841000220041186a29000037030020024188066a41106a220e200041106a29000037030020024188066a41086a2208200041086a290000370300200220002900003703880620001031200241c8096a41186a2010290300370300200241c8096a41106a200e290300370300200241c8096a41086a200829030037030020022002290388063703c809024020022802fc08450d00201610310b200241203602fc082002200241c8096a3602f808200c200d200241f8086a1094020240200f450d00200c10310b200241f8086a200241980a6a109e04200235028009211320022802f808210d200241003602d009200242013703c8092020200241c8096a106f02402020450d002020410574210c201c210003402002200241c8096a36029808200020024198086a103e200041206a2100200c41606a220c0d000b0b20022802cc0921002013422086200dad8420023502d00942208620022802c809220cad84100302402000450d00200c10310b024020022802fc08450d00200d10310b200b103102402021450d00201c10310b0240201f450d00201510310b2002280298042100200229029c04211302402004450d00200510310b20000d010b2001280208210d0240200141106a2802002200450d00200041d0006c210c200d41c0006a210003400240200041046a280200450d00200028020010310b200041d0006a2100200c41b07f6a220c0d000b0b2001410c6a280200450d0d200d10310c0d0b200220133702bc04200220003602b8044104102d2200450d0420002007360000200241a00a6a4284808080c00037030041002126200241a80a6a4100290087d243370300200241b00a6a410029008fd2433703002002200036029c0a200241063a00980a41014100200241980a6a10452002418094ebdc0336029c0a200220064101200641014b1b22002035417f6a220c4101200c41014b1b41036c220c2000200c491b2000418094ebdc036e220c4101200c41014b1b220c6ead428094ebdc037e2000200c6ead22148042fcffffff0f83421480a7220d3602980a200241980a6a200d418094ebdc034b4102746a280200220f210d20352013422088a76b22100d050c060b41e00041081033000b200f41081033000b200041011033000b411b41011033000b410441011033000b2002418094ebdc0336029c0a200220004100203520106b220d200d20354b1b417f6a220d4101200d41014b1b41036c220d2000200d491b200c6ead428094ebdc037e20148042fcffffff0f83421480a722003602980a200241980a6a2000418094ebdc034b4102746a28020021002002418094ebdc0336029c0a20024100200f20006b220c200c200f4b1b220c3602980a200241980a6a200c418094ebdc034b4102746a35020021132002418094ebdc0336029c0a200220134100418094ebdc0320006b22002000418094ebdc034b1bad7e428094ebdc0380a722003602980a200241980a6a2000418094ebdc034b4102746a280200210d0b203541e0006c220041e0006e210c02400240024020000d004104212f0c010b200c410274220e102d222f450d01200c21260b41002117410021160240203220006a2032460d00024020100d00203541e0006c210c41002116202f210003402000200d360200201641016a2116200041046a2100200c41a07f6a220c0d000c020b0b2032203541e0006c6a2110203541057441606a210e202f21002032210c0340200220022802b8043602cc09200220022802bc043602c8092002200241b8046a3602d009200241980a6a200241c8096a200c10ed012000200d200f20022802980a4101461b360200200041046a21002010200c41e0006a220c470d000b200e41057641016a21160b200241980a6a41086a220041d6d6c000ad4280808080b003841001220c41086a2900003703002002200c2900003703980a200c1031200241c8096a41086a220d2000290300370300200220022903980a3703c809200241980a6a201142808080808002842245100210410240024020022802980a220c450d0020002802004104490d01200c2800002117200228029c0a450d00200c10310b200041e2d5c000ad4280808080a002841001220c41086a2900003703002002200c2900003703980a200c1031200d2000290300370300200220022903980a3703c809200241980a6a20451002104102400240024020022802980a22000d004100213b0c010b200241a00a6a2802004104490d012000280000213b200228029c0a450d00200010310b02404117102d2200450d002000410f6a41002900e9ba41370000200041086a41002900e2ba41370000200041002900daba41370000024020004117412e102f220c450d00200c203b360017200241b8076a41186a220d200cad4280808080b003841000220041186a290000370300200241b8076a41106a220f200041106a290000370300200241b8076a41086a2210200041086a290000370300200220002900003703b80720001031200241e8066a41186a200d290300370300200241e8066a41106a200f290300370300200241e8066a41086a2010290300370300200220022903b8073703e806200c1031200241f8046a200241e8066aad4280808080800484224610021041024002400240024020022802f8042218450d0020022802fc04211a200220024180056a2802003602ec05200220183602e805200241e8036a200241e8056a102c20022802e8030d1120022802ec05220d4140712200417f4c0d0920022802ec03211502400240200d410676220e0d00410821190c010b2000102d2219450d040b02402015450d004100210f0340200241003a00b80a200f41016a211041002100024002400240024002400340200241003a00c805200d2000460d01200241980a6a20006a20022802e805220c2d00003a00002002200c41016a3602e8052002200041016a220c3a00b80a200c2100200c4120470d000b200241b8076a41086a2200200241980a6a41086a290300370300200241b8076a41106a2208200241980a6a41106a290300370300200241b8076a41186a2207200241980a6a41186a290300370300200220022903980a3703b8072002200d200c6b3602ec05200241d0036a200241e8056a10af0120022903d003a70d01200241d0036a41106a290300211420022903d803211d200241b8036a200241e8056a10af0120022903b803a70d01200241b8036a41106a290300213d20022903c003213e200241f8086a41086a20002903002213370300200241f8086a41106a2008290300223f370300200241f8086a41186a2007290300221237030020024198086a41186a220c201237030020024198086a41106a220d203f37030020024198086a41086a22082013370300200220022903b80722133703c809200220133703f8082002201337039808200e200f470d04200f41017422002010200020104b1b220e41ffffff1f71200e470d19200e41067422004100480d19200f0d022000102d21190c030b200241003602ec05200041ff0171450d00200241003a00b80a0b200241f8086a41086a200241c8096a41086a290300370300200e450d16201910310c160b2019200f4106742000102f21190b2019450d050b2019200f4106746a2200203e370310200020143703082000201d370300200041186a203d3703002000200229039808370320200041286a2008290300370300200041306a200d290300370300200041386a200c29030037030020102015460d0120022802ec05210d2010210f0c000b0b2019450d112015ad422086200ead8421470240201a450d00201810310b2047422088a7210c2047a7210f0c010b410821194100210c420021474100210f0b024020162035203520164b1b22300d0042002148420021494200214a4200214b0c0c0b20114280808080800284214c200241d8066aad4280808080800284214d200241980a6a4105722123200241980a6a41086a210e2017ad214e200241a10a6a2120200241980a6a41286a21222032210f42002148420021494200214a4200214b41002118034020182100200e419690c200ad4280808080d002841001220c41086a2900003703002002200c2900003703980a200c1031200241c8096a41086a2233200e290300370300200220022903980a3703c809200241f8086a2045100210410240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022802f808220c450d0020022802fc08210d200220022802800936029c082002200c36029808200241980a6a20024198086a10890120022802980a2207450d02200229029c0a2113200d450d01200c10310c010b41012107420021130b200041016a2118202f20004102746a21162032200041e0006c6a220d41206a211a2013422088a7410574210c20072100024003400240200c0d00410021080c020b41012108200f2000460d012000200d412010ad052110200c41606a210c200041206a210020100d000b0b02402013a7450d00200710310b20080d1a4112102d2200450d012000410029008db941370000200041106a41002f009db9413b0000200041086a4100290095b94137000020024292808080a00237029c0a200220003602980a200d200241980a6a1046200241b8076a41186a220c20023502a00a42208620023502980a841000220041186a290000370300200241b8076a41106a2210200041106a290000370300200241b8076a41086a2208200041086a290000370300200220002900003703b80720001031200241e8066a41186a2234200c290300370300200241e8066a41106a22242010290300370300200241e8066a41086a223a2008290300370300200220022903b8073703e8060240200228029c0a450d0020022802980a10310b200241b0036a200241e8066a4120410141004100103f024020022802b0034101470d00200d10c102200e41c6d6c000ad428080808080028422131001220041086a290000370300200220002900003703980a200010312033200e290300370300200220022903980a3703c809200241980a6a204510021041024020022802980a2200450d0020022802a00a210c200228029c0a2110200241003a00c805200c450d0420002d0000220c41044f0d0402402010450d00200010310b200c417f6a220041024b0d0020000e03010001010b200e20131001220041086a290000370300200220002900003703980a200010312033200e290300370300200220022903980a3703c809200241013a00c8054101102d2200450d04200020022d00c8053a0000204c2000ad428080808010841003200010310b200241a0036a201a2903002213201a41086a2228290300428094ebdc03420010b10520024190036a20022903a0032214200241a0036a41086a290300221d4280ec94a37c427f10b00520024180036a2014201d2016350200223d420010b0052002290380032214203d20132002290390037c7e22132013428094ebdc038022134280ec94a37c7e7c4280cab5ee01562013a76aad7c223e20024180036a41086a290300203e201454ad7c221184500d1a200e41fcdbc200ad4280808080a00284221d1001220041086a290000370300200220002900003703980a20001031200241d8066a41086a2215200e290300370300200220022903980a3703d806200241c8096a204d100210410240024020022802c8092200450d0020022802cc09210c200220022802d0093602fc08200220003602f808200241980a6a200241f8086a10890120022802980a2229450d06200229029c0a2113200c450d01200010310c010b41012129420021130b410221312013422088a72200450d09200041057421104100210c2029210002400340200f2000460d01200c2000200d412010ad0522084100476a210c2008450d01200041206a2100201041606a22100d000c0b0b0b200e4191c0c400ad4280808080a00384223f1001220041086a290000370300200220002900003703980a200010312015200e290300370300200220022903980a3703d806200241c8096a204d100210414100210041002110024020022802c8092208450d0020022802cc092107200220022802d0093602fc08200220083602f808200241980a6a200241f8086a108b0120022802980a2210450d06200229029c0a21142007450d00200810310b2010410420101b211b02402014420020101b2214422088223da7221641014b0d0020160e020807080b4100210020162110034020002010410176220820006a2207200c201b20074102746a280200491b2100201020086b221041014b0d000c070b0b41e9bcc000413320024188066a419cbdc0001038000b411241011033000b41e9bcc000413320024188066a419cbdc0001038000b410141011033000b41e9bcc000413320024188066a419cbdc0001038000b41e9bcc000413320024188066a419cbdc0001038000b410021310240200c201b20004102746a2802002210470d00410021360c020b2000200c20104b6a21000b200e201d1001221041086a290000370300200220102900003703980a201010312015200e290300370300200220022903980a3703d806200241980a6a204d100210410240024020022802980a22080d00410021100c010b200228029c0a2107200220022802a00a3602cc09200220083602c809200241f8026a200241c8096a102c0240024020022802f8020d0020022802fc0221100c010b410021100b2007450d00200810310b20102010418094ebdc036e22084180ec94a37c6c6aad4280fd87d1007e2212428094ebdc0380211d200020164b0d02024020162014a7470d00201641016a22102016490d2520164101742207201020102007491b221041ffffffff03712010470d25201041027422074100480d250240024020160d002007102d211b0c010b201b20164102742007102f211b0b201b450d042010ad21140b201b20004102746a221041046a2010201620006b41027410ac051a2010200c36020041012136201442ffffffff0f83201641016a2200ad223d422086842114200020084180fd87d1006c201da76a2012201d4280ec94a37c7e7c4280cab5ee01566a4b21310b200e203f1001220041086a290000370300200220002900003703980a200010312015200e290300370300200220022903980a3703d80602400240201b0d00204d10090c010b200241003602a00a200242013703980a203da72210200241980a6a106f0240024020100d0020022802a00a2115200228029c0a211620022802980a21100c010b410020022802a00a22006b2108201b20104102746a211e200228029c0a2116201b210703402007280200211702400240201620086a4104490d0020022802980a21100c010b200041046a22102000490d27201641017422152010201520104b1b22154100480d270240024020160d002015102d21100c010b20022802980a20162015102f21100b2010450d072002201536029c0a200220103602980a201521160b2002200041046a22153602a00a201020006a20173600002008417c6a210820152100201e200741046a2207470d000b0b2014a72100204d2015ad4220862010ad84100302402016450d00201010310b2000450d00201b10310b2036450d00200241023602c8092002200cad3703d009200241980a6a200241c8096a10a70220022903980a2114200220022802a00a3602a80a200220143703a00a200241c6a4b9da043600990a200241023a00980a200241980a6a1071200241023a00c8054101102d2200450d04200020022d00c8053a0000200041014105102f2200450d052000200c360001202320022f00f8083b0000200241023a00980a202341026a200241f8086a41026a2d00003a0000200241c28289aa043600990a20024285808080d0003702a40a200220003602a00a200241980a6a10710b02402013a7450d00202910310b024020314102460d002031410171450d00200e41c6d6c000ad428080808080028422131001220041086a290000370300200220002900003703980a200010312033200e290300370300200220022903980a3703c809200241980a6a204510021041024020022802980a2200450d0020022802a00a210c200228029c0a2110200241003a00c805200c450d0720002d0000220c41044f0d0702402010450d00200010310b200c417f6a220041024b0d0020000e03010001010b200e20131001220041086a290000370300200220002900003703980a200010312033200e290300370300200220022903980a3703c809200241013a00c8054101102d2200450d07200020022d00c8053a0000204c2000ad428080808010841003200010310b201a290300214f202829030021120240024020474220882250a722070d0042002114420021130c010b2007410674210c201941206a21004200211442002113034002400240200f2000470d00427f2013200041706a221041086a2903007c201420102903007c221d2014542210ad7c22142010201420135420142013511b22101b2113427f201d20101b21140c010b2000200d412010ad050d00427f2013200041706a221041086a2903007c201420102903007c221d2014542210ad7c22142010201420135420142013511b22101b2113427f201d20101b21140b200041c0006a2100200c41406a220c0d000b0b200241e8026a200d290330223d4201203d420156200d41386a290300221d420052201d501b22001b2251201d420020001b223f428094ebdc03420010b105200241d8026a2051203f20022903e802225242012052420156200241e8026a41086a29030022524200522052501b22001b22532052420020001b225410b10520022903d8022252428080808010544100200241d8026a41086a290300501b450d07200241c8026a2051204f203e204f203e54201220115420122011511b22001b22554200203d20147d223e203e203d56201d20137d203d201454ad7d2213201d562013201d511b220c1b2214201420555642002013200c1b22142012201120001b22565620142056511b22001b22132051201354203f2056201420001b221454203f2014511b22001b203f201420001b2053205410b10520022903c802223e428080808010544100200241c8026a41086a290300501b450d082052a7450d09200241980a6a200d203e42ffffffff0f83428094ebdc037e205242ffffffff0f8380a710de02200241980a6a41186a22102903002111200e290300215120022903a80a215220022903980a215302402055201320022903b80a223e7d22577d22542056201420222903007d2013203e54ad7d22587d2055205754ad7d221484500d00204f203d7d223e2012201d7d204f203d54ad7d221384500d00200d280248220c450d00200d2802402100200241b8026a203e4201203e42015620134200522013501b22081b223f2013420020081b221d428094ebdc03420010b10520024198026a20542014428094ebdc03420010b105200241a8026a203f201d20022903b802221342012013420156200241b8026a41086a29030022134200522013501b22081b22592013420020081b225a10b10520024188026a200229039802225b20024198026a41086a290300225c4280ec94a37c427f10b00520022903a802221342ffffffff0f56200241a8026a41086a29030022144200522014501b0d0b2013a7450d1b2000200c41306c6a210820542002290388027c215d201342ffffffff0f83215e0340200241f8016a203f20002903002214203f201454201d200041086a290300221354201d2013511b220c1b201d2013200c1b2059205a10b10520022903f801223d428080808010544100200241f8016a41086a290300501b450d1d200241d8016a20144201201442015620134200522013501b220c1b221420134200200c1b2213428094ebdc03420010b105200241e8016a205b205c203d42ffffffff0f83428094ebdc037e205e8042ffffffff0f83223e420010b005200241c8016a2014201320022903d801223d4201203d420156200241d8016a41086a290300223d420052203d501b220c1b2212203d4200200c1b224f10b105203e205d7e2254428094ebdc0380213d20022903c801223e428080808010544100200241c8016a41086a290300501b450d0d200241b8016a201420022903e801225f2054203d4280ec94a37c7e7c4280cab5ee0156203da76aad7c223d2014203d542013200241e8016a41086a290300203d205f54ad7c223d542013203d511b220c1b2013203d200c1b2012204f10b10520022903b8012213428080808010544100200241b8016a41086a290300501b450d0e203ea7450d0f200241980a6a200041106a201342ffffffff0f83428094ebdc037e203e42ffffffff0f8380a710de02427f201120102903007c205220022903a80a7c2214205254220cad7c2213200c201320115420132011511b220c1b2111427f2014200c1b2152427f2051200e2903007c205320022903980a7c2214205354220cad7c2213200c201320515420132051511b220c1b2151427f2014200c1b2153200041306a22002008470d000b0b2010200d41186a2216290300370300200241980a6a41106a220c200d41106a2215290300370300200e200d41086a22172903003703002002200d2903003703980a0240024020072047a7460d00200721080c010b200741016a22002007490d232050a72208410174221a20002000201a491b220041ffffff1f712000470d232000410674221a4100480d230240024020070d00201a102d21190c010b20192008410674201a102f21190b2019450d0f2000ad21470b20024198016a20532051428094ebdc03420010b10520024188016a200229039801221320024198016a41086a29030022144280ec94a37c427f10b005200241f8006a20132014204e420010b005201920084106746a220020573703102000205637030820002055370300200041186a2058370300200020022903980a370320200041286a200e290300370300200041306a200c290300370300200041386a20102903003703002034201629000037030020242015290000370300203a20172900003703002002200d2900003703e806200241013a00a00a200241083a00980a20162900002113201529000021142017290000211d200d290000213d200241980a6a41386a20563703002020203d370000202041086a201d370000202041106a2014370000202041186a2013370000200220553703c80a41014100200241980a6a1045204742ffffffff0f832154200841016aad422086215f0240024002402002290378221420532002290388017c204e7e22132013428094ebdc038022134280ec94a37c7e7c4280cab5ee01562013a76aad7c2213200241f8006a41086a2903002013201454ad7c221484500d00200d41d8006a28020022000d010b427f204b20517c204a20537c2214204a542200ad7c221320002013204b542013204b511b22001b214b427f201420001b214a0c010b200241e8006a201320532053201356205120145620512014511b22101b22592014205120101b225a2000ad420010b10520004105742110200d2802502100200241e8006a41086a29030021122002290368214f2059213d205a213e0340200241d8006a2000204f203d203d204f56203e201256203e2012511b22081b22132012203e20081b22141065200c2014200241d8006a41086a290300223f7d20132002290358221d54ad7d203f20147d201d201354ad7d201d201358203f201458203f20145122081b22071b37030020022013201d7d201d20137d20071b3703a00a2002201d201356203f20145620081b2208ad3703980a203e20147d2114203d201354ad211d0240024020080d002002200e3602c809200241c8096a105f0c010b2002200e3602c809200241c8096a10430b2014201d7d213e203d20137d213d200041206a2100201041606a22100d000b427f427f204b203e7c204a203d7c2214204a542200ad7c221320002013204b542013204b511b22001b22132051205a7d2053205954ad7d7c427f201420001b2214205320597d7c221d2014542200ad7c22142000201420135420142013511b22001b214b427f201d20001b214a0b2054205f842147200241c8006a20522011428094ebdc03420010b105200241386a20022903482213200241c8006a41086a29030022144280ec94a37c427f10b005200241286a20132014204e420010b0050240024020022903282214205220022903387c204e7e22132013428094ebdc038022134280ec94a37c7e7c4280cab5ee01562013a76aad7c2213200241286a41086a2903002013201454ad7c221484500d00200d41d8006a28020022000d010b427f204920117c204820527c22142048542200ad7c22132000201320495420132049511b22001b2149427f201420001b21480c110b200241186a201320522052201356201120145620112014511b22101b22532014201120101b224f2000ad420010b10520004105742110200d2802502100200241186a41086a2903002112200229031821512053213d204f213e0340200241086a20002051203d203d205156203e201256203e2012511b220d1b22132012203e200d1b221410ea02200c2014200241086a41086a290300223f7d20132002290308221d54ad7d203f20147d201d201354ad7d201d201358203f201458203f201451220d1b22081b37030020022013201d7d201d20137d20081b3703a00a2002201d201356203f201456200d1b220dad3703980a203e20147d2114203d201354ad211d02400240200d0d002002200e3602c809200241c8096a10e6020c010b2002200e3602c809200241c8096a10480b2014201d7d213e203d20137d213d200041206a2100201041606a2210450d100c000b0b41bcaec000411e419cdec40010a401000b200741041033000b201541011033000b410141011033000b410541011033000b41e9bcc000413320024188066a419cbdc0001038000b410141011033000b2002411136029c0a20024199aec0003602980a41a2acc00041e000200241980a6a41acaec0001038000b2002411136029c0a20024199aec0003602980a41a2acc00041e000200241980a6a41acaec0001038000b4180aec00041194184adc00010a401000b2002411136029c0a20024199aec0003602980a41a2acc00041e000200241980a6a41acaec0001038000b2002411136029c0a20024199aec0003602980a41a2acc00041e000200241980a6a41acaec0001038000b2002411136029c0a20024199aec0003602980a41a2acc00041e000200241980a6a41acaec0001038000b4180aec00041194184adc00010a401000b201a41081033000b427f427f2049203e7c2048203d7c22142048542200ad7c22132000201320495420132049511b22001b22132011204f7d2052205354ad7d7c427f201420001b2214205220537d7c221d2014542200ad7c22142000201420135420142013511b22001b2149427f201d20001b21480b200f41e0006a210f201820304f0d0b0c000b0b200041081033000b200041081033000b412e41011033000b411741011033000b41e9bcc000413320024188066a419cbdc0001038000b41e9bcc000413320024188066a419cbdc0001038000b200e41041033000b1032000b200241a8016a203f20002903002213203f201354201d200041086a290300221354201d2013511b22001b201d201320001b2059205a10b10520022903a801428080808010544100200241a8016a41086a290300501b450d004180aec00041194184adc00010a401000b2002411136029c0a20024199aec0003602980a41a2acc00041e000200241980a6a41acaec0001038000b2047422088a7210c2047a7210f0b4117102d2200450d012000410f6a41002900e9ba41370000200041086a41002900e2ba41370000200041002900daba4137000020004117412e102f220d450d02200d203b360017200241b8076a41186a2210200dad4280808080b003841000220041186a290000370300200241b8076a41106a220e200041106a290000370300200241b8076a41086a2208200041086a290000370300200220002900003703b80720001031200241e8066a41186a2010290300370300200241e8066a41106a200e290300370300200241e8066a41086a2008290300370300200220022903b8073703e806200d1031200241003602a00a200242013703980a200c200241980a6a106f0240200c450d00200c410674210c201921000340200041206a200241980a6a1046200220003602c809200241c8096a200241980a6a10ac012002200041106a3602c809200041c0006a2100200241c8096a200241980a6a10ac01200c41406a220c0d000b0b200228029c0a2100204620023502a00a42208620022802980a220cad84100302402000450d00200c10310b0240200f450d00201910310b2002204a3703980a2002204b3703a00a2002200241980a6a3602c809200241c8096a105f200220493703a00a200220483703980a2002200241980a6a3602c809200241c8096a10e60202402026450d00202f10310b02402035450d00203541e0006c210c203241d4006a210003400240200041706a280200450d002000416c6a28020010310b02402000280200450d002000417c6a28020010310b200041e0006a2100200c41a07f6a220c0d000b0b0240202e450d00203210310b20022802b80420022802bc0420022802c004109f042001280208210d0240200141106a2802002200450d00200041d0006c210c200d41c0006a210003400240200041046a280200450d00200028020010310b200041d0006a2100200c41b07f6a220c0d000b0b2001410c6a280200450d00200d10310b200241c0116a24000f0b411741011033000b412e41011033000b41e9bcc000413320024188066a419cbdc0001038000b1034000bb50201067f230041c0006b2202240002400240411c102d2203450d00200341186a41002800abbd44360000200341106a41002900a3bd44370000200341086a410029009bbd4437000020034100290093bd443700002003411c4138102f2204450d012004200037001c200241206a41186a22052004ad4280808080c004841000220341186a290000370300200241206a41106a2206200341106a290000370300200241206a41086a2207200341086a2900003703002002200329000037032020031031200241186a2005290300370300200241106a2006290300370300200241086a20072903003703002002200229032037030020041031200220012802003602202002ad4280808080800484200241206aad4280808080c000841003200241c0006a24000f0b411c41011033000b413841011033000b8c0303027f047e037f230041f0006b21020240200128020022032001280204470d00200041003602000f0b200120034180016a360200200241003a00482002200341216a2d00003a00292002200341226a29000037012a20022003412a6a2900003701322002200341326a29000037013a20022003413a6a28000036014220022003413e6a2f00003b0146200220032d00203a0028200241203a0048200241d0006a41186a20022903402204370300200241d0006a41106a20022903382205370300200241d0006a41086a20022903302206370300200220022903282207370350200241086a41186a22012004370300200241086a41106a22082005370300200241086a41086a2209200637030020022007370308200241286a41186a220a2001290300370300200241286a41106a22012008290300370300200241286a41086a220820092903003703002002200229030837032820002003360200200020022903283700042000410c6a2008290300370000200041146a20012903003700002000411c6a200a2903003700000bad0c03057f017e027f230041306b22042400200441186a41086a220541a0cbc400ad4280808080d003841001220641086a2900003703002004200629000037031820061031200441086a41086a2005290300370300200420042903183703082004200441086a4110410141004100103f024002400240024020042802004101460d00105b2105024020024101460d00200441086a21070c030b200441186a41086a220841bdcbc400ad4280808080a003841001220641086a2900003703002004200629000037031820061031200441086a41086a200829030037030020042004290318370308200441186a200441086aad42808080808002842209100210410240024020042802182206450d0020082802004104490d03200628000021080240200428021c450d00200610310b200820054b0d010b200441186a41086a220841bdcbc400ad4280808080a003841001220641086a2900003703002004200629000037031820061031200441086a41086a2008290300370300200420042903183703082004200520014101746a3602182009200441186aad4280808080c000841003200441086a21070c030b200041046a280200450d03200028020010310c030b200041046a280200450d02200028020010310c020b41e9bcc0004133200441286a419cbdc0001038000b200028020821062000280204210a2000280200210b200441186a41086a220841a0cbc400ad4280808080d003841001220041086a2900003703002004200029000037031820001031200441086a41086a200829030037030020042004290318370308200441003602202004420137031802400240024002400240024002404104102d2200450d002004410436021c20042004280220220841046a36022020042000360218200020086a200536000002400240200428021c2205200428022022006b4104490d00200428021821050c010b200041046a22082000490d07200541017422002008200020084b1b22004100480d070240024020050d002000102d21050c010b200428021820052000102f21050b2005450d022004200036021c20042005360218200428022021000b2004200041046a360220200520006a20013600002006200441186a106f02402006450d00200b200641286c6a2108200b210603402006200441186a1046200641206a290300210902400240200428021c2205200428022022006b4108490d00200428021821050c010b200041086a22012000490d09200541017422002001200020014b1b22004100480d090240024020050d002000102d21050c010b200428021820052000102f21050b2005450d052004200036021c20042005360218200428022021000b2004200041086a360220200520006a20093700002008200641286a2206470d000b0b200428021c2106200428022021000240024020024101460d000240024020062000460d00200428021821060c010b200041016a22062000490d09200041017422052006200520064b1b22054100480d090240024020000d002005102d21060c010b200428021820002005102f21060b2006450d062004200536021c20042006360218200428022021000b2004200041016a360220200620006a41003a00000c010b0240024020062000460d00200428021821060c010b200041016a22062000490d08200041017422052006200520064b1b22054100480d080240024020000d002005102d21060c010b200428021820002005102f21060b2006450d062004200536021c20042006360218200428022021000b2004200041016a360220200620006a41013a000002400240200428021c2206200428022022006b4104490d00200428021821060c010b200041046a22052000490d08200641017422002005200020054b1b22004100480d080240024020060d002000102d21060c010b200428021820062000102f21060b2006450d072004200036021c20042006360218200428022021000b2004200041046a360220200620006a20033600000b200428021c21002007ad4280808080800284200435022042208620042802182206ad84100302402000450d00200610310b200a450d07200b10310c070b410441011033000b200041011033000b200041011033000b200541011033000b200541011033000b200041011033000b1034000b200441306a24000b810303027f047e037f230041f0006b21020240200128020022032001280204470d00200041003602000f0b200120034180016a360200200241203a00482002200341e0006a2f00003b01282002200341e2006a29000037012a2002200341ea006a2900003701322002200341f2006a29000037013a2002200341fa006a2800003601422002200341fe006a2f00003b0146200241d0006a41186a20022903402204370300200241d0006a41106a20022903382205370300200241d0006a41086a20022903302206370300200220022903282207370350200241086a41186a22012004370300200241086a41106a22082005370300200241086a41086a2209200637030020022007370308200241286a41186a220a2001290300370300200241286a41106a22012008290300370300200241286a41086a220820092903003703002002200229030837032820002003360200200020022903283700042000410c6a2008290300370000200041146a20012903003700002000411c6a200a2903003700000b951504047f027e097f017e230041f0056b22032400410221040240024002400240024002400240024020024184016a28020022054102460d00410121064200210742002108410221090c010b200228027c2106200341003602ac01200341003602a0012003200628020836029c01200320062802003602980120034198046a20034198016a10800320032d0098044101460d012003200341b1046a2900003700c502200320034198046a41146a2902003703c0022003200328009c0436005b2003200328009904360258200320032903c0023703a002200320032900c5023700a502200341a0046a210a200341a4046a210b200641146a280200220c450d06200628020c220d2c0000220e417f4a0d06200a2802002109200b2802002104200341a8046a2802002105024002400240200e41ff0171220641b801490d00200e41ff017141c0014f0d09200c200641ca7e6a220f490d09200641c97e6a220e41044b0d09200d2d0001450d09200d41016a2110410021114100210602400340200e2006460d01201020066a2d00002006417f73200e6a4103744118717420116a2111200e200641016a2206470d000b0b200f20116a2206200f490d09200c20064f0d010c090b200c200641817f6a490d08200641807f6a2111200d41016a210602400240200e41817f460d0020114108470d0a0c010b2011450d0720062c0000417f4a0d0920114108470d090b200d41086a210e200d41046a21110c010b2006200f490d032006200f6b4108470d07200d200f6a220641076a210e200641036a21110b20032003280258360298012003200328005b36009b01200320032903a0023703c002200320032900a5023700c50220113500004218862107200e310000423886210820062f0000200641026a2d000041107472210e410021060b2003200328009b0136003b2003200328029801360238200320032903c002370378200320032900c50237007d200341c0016a20034198046a41d70010ab051a2008200784200ead42ffffff078384211202402006450d00200020043602042000200936020020002012370019200041086a20053602002000410c6a2003290378370000200041116a200329007d370000200041216a200341c0016a41d70010ab051a0c050b2003200328003b36001320032003280238360210200320032903783703002003200329007d370005200341186a41186a220e200141186a290300370300200341186a41106a200141106a290300370300200341186a41086a200141086a29030037030020032001290300370318200241e8006a2111200241d0006a21104103210602400240024003402006417f460d01200641034b0d0620112903002207200e2903002208540d02201141786a2111200e41786a210e2006417f6a210620072008580d000b0b200341f8006a2002109203200341c0016a410041e00010aa051a20034198016a41186a200341f8006a41186a29030037030020034198016a41106a200341f8006a41106a29030037030020034198016a41086a200341f8006a41086a29030037030020032012423886201242288642808080808080c0ff0083842012421886428080808080e03f8320124208864280808080f01f838484201242088842808080f80f832012421888428080fc07838420124228884280fe038320124238888484843703b8012003200329037837039801200341c0026a410041cc0110aa051a200341013b019004200341c80036028c04200341c0026a20034198016a4128108f0320034198046a200341c0026a41d80110ab051a20034198046a200341c0016a41e00010900320034183026a200328001336000020034198026a20032900053700002003200536008f022003200436008b02200320093600870220032003280210360080022003200329030037009302200341a0026a41186a22064200370300200341a0026a41106a220e4200370300200341a0026a41086a22114200370300200342003703a002200341c0026a410041cc0110aa051a200341013b019004200341880136028c04200341c0026a200341c0016a41e000108f0320034198046a200341c0026a41d80110ab051a20034198046a200341a0026a4120109003200341d8006a41086a22012011290300370300200341d8006a41106a2204200e290300370300200341d8006a41186a22052006290300370300200320032903a00237035820034198046a41186a2206420037030020034198046a41106a220e420037030020034198046a41086a221142003703002003420037039804200320032d00773a009804200320032d00763a009904200320032d00753a009a04200320032d00743a009b04200320032d00733a009c04200320032d00723a009d04200320032d00713a009e04200320052d00003a009f04201120032d006f3a0000200320032d006e3a00a104200320032d006d3a00a204200320032d006c3a00a304200320032d006b3a00a404200320032d006a3a00a504200320032d00693a00a604200320042d00003a00a704200e20032d00673a0000200320032d00663a00a904200320032d00653a00aa04200320032d00643a00ab04200320032d00633a00ac04200320032d00623a00ad04200320032d00613a00ae04200320012d00003a00af04200620032d005f3a0000200320032d005e3a00b104200320032d005d3a00b204200320032d005c3a00b304200320032d005b3a00b404200320032d005a3a00b504200320032d00593a00b604200320032d00583a00b704200341c0026a41106a200e290300370300200341c0026a41186a2006290300370300200341c0026a41086a201129030037030020032003290398043703c002200241e8006a210e200341386a200341c0026a108903200341386a41186a2111410321060240024003402006417f460d01200641034b0d0220112903002207200e2903002208540d04201141786a2111200e41786a210e2006417f6a210620072008580d000b0b200041043602000c070b4190e2c30020064104104b000b20004101360200200041086a4201370200200041106a2003290318370200200041306a4200370200200041d8006a2010290200370200200041186a200341186a41086a290300370200200041206a200341186a41106a290300370200200041286a200341186a41186a290300370200200041e0006a201041086a290200370200200041e8006a201041106a290200370200200041f0006a201041186a2902003702000c050b20004100360200200041086a4201370200200041106a2010290200370200200041306a4200370200200041d8006a2003290338370200200041186a201041086a290200370200200041206a201041106a290200370200200041286a201041186a290200370200200041e0006a200341386a41086a290300370200200041e8006a200341386a41106a290300370200200041f0006a200341386a41186a2903003702000c040b200341a0046a410d3602002003418c9ec20036029c042003410336029804200341a4046a200341c0026a41ec0010ab051a41baa0c400412b20034198046a419c9ec2001038000b200f2006107b000b4190e2c30020064104104b000b41a099c40041004100104b000b200341f0056a24000f0b200a410d3602002003418c9ec20036029c042003410336029804200b200341c0026a41ec0010ab051a41baa0c400412b20034198046a419c9ec2001038000bf12c05037f037e017f047e027f230041e0016b2205240002400240024002400240024002402003500d0002400240200441dc016a22064184f0c200470d00410121070c010b20064184f0c200412010ad054521070b200541186a200141186a290300370300200541106a200141106a290300370300200541086a200141086a29030037030020052001290300370300200541206a41186a200141206a200141e8006a20012903602003561b220641186a290300370300200541206a41106a200641106a290300370300200541206a41086a200641086a29030037030020052006290300370320024002400240024020012903582003560d00200141c0006a200141c8006a20012903900120035622061b290300220850450d0141e0f0c200411941fcf0c20010a401000b02402004290300200141d0006a200141b0016a20012903a8012003561b2903007c2002580d00200441e8006a22062903002109200441e0006a2207290300210a200441d8006a220b290300210220042903502108200541a0016a41186a2006290300370300200541a0016a41106a2007290300370300200541a0016a41086a200b290300370300200520042903503703a001200541c0016a41186a200541206a41186a290300370300200541c0016a41106a200541206a41106a290300370300200541c0016a41086a200541206a41086a290300370300200520052903203703c001200541e0006a200541a0016a200541c0016a1050200220052903687c220c20025421072005290370210d2005290378210e02400240200820052903607c22022008540d00200c21080c010b200c42017c2208200c5420076a21070b200a200d7c220c200a5421060240024020070d00200c210a0c010b200c2007ad7c220a200c5420066a21060b2009200e7c220c20095421070240024020060d00200c21090c010b200c2006ad7c2209200c5420076a21070b2007450d024189e3c300411d419cdec40010a401000b200441e8006a22062903002109200441e0006a2207290300210a200441d8006a220b290300210220042903502108200541a0016a41186a2006290300370300200541a0016a41106a2007290300370300200541a0016a41086a200b290300370300200520042903503703a001200541c0016a41186a200541206a41186a290300370300200541c0016a41106a200541206a41106a290300370300200541c0016a41086a200541206a41086a290300370300200520052903203703c001200541e0006a200541a0016a200541c0016a1050200220052903687d220c20025621072005290370210d2005290378210e02400240200820052903607d22022008560d00200c21080c010b200c427f7c2208200c5620076a21070b200a200d7d220c200a5621060240024020070d00200c210a0c010b200c2007ad7d220a200c5620066a21060b2009200e7d220c20095621070240024020060d00200c21090c010b200c2006ad7d2209200c5620076a21070b2007450d014189e3c300411d419cdec40010a401000b0240200220042903007d200880220242014201420220061b20071b2208580d00200441e8006a2206290300210a200441e0006a22072903002109200441d8006a220b290300210c2004290350210d200541a0016a41186a2006290300370300200541a0016a41106a2007290300370300200541a0016a41086a200b290300370300200520042903503703a001200541c0016a41186a200541206a41186a290300370300200541c0016a41106a200541206a41106a290300370300200541c0016a41086a200541206a41086a290300370300200520052903203703c001200541e0006a200541a0016a200541c0016a1050200541c0006a41086a200541e0006a41086a290300370300200541c0006a41106a200541e0006a41106a2206290300370300200541c0006a41186a200541e0006a41186a2207290300370300200520052903603703402006420037030020074200370300200542003703682005200220087d220242e300200242e300541b370360200541c0016a200541c0006a200541e0006a10e403200c20052903c8017d2202200c56210620052903d801210820052903d001210c02400240200d20052903c0017d220e200d560d002002210d0c010b2002427f7c220d20025620066a21060b2009200c7d220220095621070240024020060d002002210c0c010b20022006ad7d220c20025620076a21070b200a20087d2202200a5621060240024020070d00200221080c010b20022007ad7d220820025620066a21060b4200200820061b21094200200c20061b210a4200200d20061b21084200200e20061b21020c010b200441e8006a22062903002109200441e0006a2207290300210a200441d8006a220b290300210c2004290350210d200541a0016a41186a2006290300370300200541a0016a41106a2007290300370300200541a0016a41086a200b290300370300200520042903503703a001200541c0016a41186a200541206a41186a290300370300200541c0016a41106a200541206a41106a290300370300200541c0016a41086a200541206a41086a290300370300200520052903203703c001200541e0006a200541a0016a200541c0016a1050200541c0006a41086a200541e0006a41086a290300370300200541c0006a41106a200541e0006a41106a2206290300370300200541c0006a41186a200541e0006a41186a2207290300370300200520052903603703402006420037030020074200370300200542003703682005200820027d370360200541c0016a200541c0006a200541e0006a10e403200c20052903c8017c220e200c54210720052903d801210f20052903d001210c02400240200d20052903c0017c2202200d540d00200e21080c010b200e42017c2208200e5420076a21070b200a200c7c220c200a5421060240024020070d00200c210a0c010b200c2007ad7c220a200c5420066a21060b2009200f7c220c20095421070240024020060d00200c21090c010b200c2006ad7c2209200c5420076a21070b20070d010b200541c0016a41186a2207200541186a290300370300200541c0016a41106a200541106a290300370300200541c0016a41086a200541086a290300370300200520052903003703c001200520093703782005200a3703702005200837036820052002370360200541e0006a41186a210b41032106024002400340200541e0006a21102006417f460d01200641034b0d0220072903002202200b2903002208540d01200741786a2107200b41786a210b2006417f6a210620022008580d000b200541c0016a21100b2010290318210a201029031021092010290308210c2010290300210d2001290388012003580d06024020012903980122022003560d0020012903a00122082003560d0420042903082103200541c0016a41106a4200370300200541c0016a41186a4200370300200542003703c801200542013703c001200541e0006a41106a4200370300200541e0006a41186a4200370300200542003703682005200342017c42a08d0680200820027d42a08d06807d42feffffff0f7c220842ffffffff0f83370360200541e0006a41086a2110410021060340200641086a22074120460d06201020066a210b20072106200b290300500d000b41c8e2c3004126419cdec40010a401000b20012802c00121070240200141c4016a2802002206450d002006210b034020072802b8012107200b417f6a220b0d000b03402006417f6a22060d000b0b200141c8016a2802002210450d050240024020072f0106450d004108200741086a20074198bfc000461b2104200741e0006a2111410121010c010b02400240200728020022060d00410021074100210b410021060c010b20072f010421074101210b0b0240200720062f0106490d000340200b41016a210b20062f01042207200628020022062f01064f0d000b0b4108200641086a20064198bfc000461b200741037422016a2104200620016a41e0006a2111200741027420066a41bc016a280200210741002101200b417f6a2206450d00034020072802b80121072006417f6a22060d000b0b2003210203402010417f6a2110024020042903002003560d004200200220112903007d220820082002561b21020b024020100d00200221030c070b0240200120072f01064f0d004108200741086a20074198bfc000461b200141037422066a2104200141016a2101200720066a41e0006a21110c010b02400240200728020022060d00410021074100210b410021060c010b20072f010421074101210b0b0240200720062f0106490d000340200b41016a210b20062f01042207200628020022062f01064f0d000b0b4108200641086a20064198bfc000461b200741037422016a2104200620016a41e0006a2111200741027420066a41bc016a280200210741002101200b417f6a2206450d00034020072802b80121072006417f6a22060d000c010b0b0b4190e2c30020064104104b000b4189e3c300411d419cdec40010a401000b41a4f0c200412841ccf0c20010a401000b200541c0016a41106a4200370300200541c0016a41186a4200370300200542003703c801200542013703c001200541e0006a41106a4200370300200541e0006a41186a4200370300200542003703682005200242a08d0680220842feffffff0f7c220242ffffffff0f83370360200541e0006a41086a21104100210602400340200641086a22074120460d01201020066a210b20072106200b290300500d000b41c8e2c3004126419cdec40010a401000b200541f8006a4200370300200541f0006a4200370300200541e0006a41086a4200370300200542003703602002a72206413f712101200641067621100240200641ff014b0d00200541e0006a20104103746a21062001ad2102200541c0016a21072010210b034020062007290300200286370300200741086a2107200641086a2106200b41016a220b4104490d000b0b02402001450d00201041016a220641034b0d002010417d6a2107420220087d423f832102200541e0006a20064103746a2106200541c0016a210b034020062006290300200b2903002002887c370300200b41086a210b200641086a2106200741016a221020074f21012010210720010d000b0b200c20052903687c2202200c542107200529037821082005290370210302400240200d20052903607c220c200d540d002002210d0c010b200242017c220d20025420076a21070b200920037c220220095421060240024020070d00200221030c010b20022007ad7c220320025420066a21060b200a20087c2202200a5421070240024020060d00200221080c010b20022006ad7c220820025420076a21070b0240024020070d00200541c0016a41186a2207200541186a290300370300200541c0016a41106a200541106a290300370300200541c0016a41086a200541086a290300370300200520052903003703c00120052008370378200520033703702005200d3703682005200c370360200541e0006a41186a210b4103210602400340200541e0006a21102006417f460d01200641034b0d0320072903002202200b2903002208540d01200741786a2107200b41786a210b2006417f6a210620022008580d000b200541c0016a21100b2010290318210a201029031021092010290308210c2010290300210d0c040b4189e3c300411d419cdec40010a401000b4190e2c30020064104104b000b200541f8006a4200370300200541f0006a4200370300200541e0006a41086a4200370300200542003703602008a72206413f712101200641067621100240200641ff014b0d00200541e0006a20104103746a21062001ad2102200541c0016a21072010210b034020062007290300200286370300200741086a2107200641086a2106200b41016a220b4104490d000b0b02402001450d00201041016a220641034b0d00410320106b210b420020087d423f832102200541e0006a20064103746a2106200541c0016a210703402006200629030020072903002002887c370300200741086a2107200641086a2106200b417f6a220b0d000b0b200c20052903687c2202200c542107200529037821082005290370210302400240200d20052903607c220c200d540d002002210d0c010b200242017c220d20025420076a21070b200920037c220220095421060240024020070d00200221030c010b20022007ad7c220320025420066a21060b200a20087c2202200a5421070240024020060d00200221080c010b20022006ad7c220820025420076a21070b0240024020070d00200541c0016a41186a2207200541186a290300370300200541c0016a41106a200541106a290300370300200541c0016a41086a200541086a290300370300200520052903003703c00120052008370378200520033703702005200d3703682005200c370360200541e0006a41186a210b4103210602400340200541e0006a21102006417f460d01200641034b0d0320072903002202200b2903002208540d01200741786a2107200b41786a210b2006417f6a210620022008580d000b200541c0016a21100b2010290318210a201029031021092010290308210c2010290300210d0c030b4189e3c300411d419cdec40010a401000b4190e2c30020064104104b000b200342a08d06802208a741014d0d00200541c0016a41106a4200370300200541c0016a41186a4200370300200542003703c801200542013703c001200541e0006a41106a4200370300200541e0006a41186a4200370300200542003703682005200842feffffff0f7c220242ffffffff0f83370360200541e0006a41086a21104100210602400340200641086a22074120460d01201020066a210b20072106200b290300500d000b41c8e2c3004126419cdec40010a401000b200541f8006a4200370300200541f0006a4200370300200541e0006a41086a4200370300200542003703602002a72206413f712101200641067621100240200641ff014b0d00200541e0006a20104103746a21062001ad2102200541c0016a21072010210b034020062007290300200286370300200741086a2107200641086a2106200b41016a220b4104490d000b0b02402001450d00201041016a220641034b0d002010417d6a2107420220087d423f832102200541e0006a20064103746a2106200541c0016a210b034020062006290300200b2903002002887c370300200b41086a210b200641086a2106200741016a221020074f21012010210720010d000b0b200c20052903687c2202200c542107200529037821082005290370210302400240200d20052903607c220c200d540d002002210d0c010b200242017c220d20025420076a21070b200920037c220220095421060240024020070d00200221030c010b20022007ad7c220320025420066a21060b200a20087c2202200a5421070240024020060d00200221080c010b20022006ad7c220820025420076a21070b20070d01200541c0016a41186a2207200541186a290300370300200541c0016a41106a200541106a290300370300200541c0016a41086a200541086a290300370300200520052903003703c00120052008370378200520033703702005200d3703682005200c370360200541e0006a41186a210b4103210602400340200541e0006a21102006417f460d01200641034b0d0420072903002202200b2903002208540d01200741786a2107200b41786a210b2006417f6a210620022008580d000b200541c0016a21100b2010290318210a201029031021092010290308210c2010290300210d0b2000200a370318200020093703102000200c3703082000200d370300200541e0016a24000f0b4189e3c300411d419cdec40010a401000b4190e2c30020064104104b000be20702017f137e23004180026b22032400200320012903002204420020022903002205420010b005200341c0006a2001290308220642002005420010b005200341d0006a2001290310220742002005420010b005200341106a2004420020022903082208420010b005200341f0006a200642002008420010b005200341e0006a2001290318220942002005420010b005200341a0016a200742002008420010b005200341d0016a200942002008420010b005200341206a2004420020022903102205420010b00520034180016a200642002005420010b005200341b0016a200742002005420010b005200341e0016a200942002005420010b005200341306a2004420020022903182205420010b00520034190016a200642002005420010b005200341c0016a200742002005420010b005200341f0016a200942002005420010b005024020032903c0012207200329039001220620032903302205200329038001220820032903202204200329037022092003290310220a2003290340220b200341086a2903007c220c7c220d200a54ad200341106a41086a2903007c220a2003290350220e200c200b54ad200341c0006a41086a2903007c7c220b7c220c7c220f7c2210200454ad200341206a41086a2903007c221120032903a0012212200f200954ad200341f0006a41086a2903007c2209200c200a54ad7c22042003290360220a200b200e54ad200341d0006a41086a2903007c7c220b7c220c7c220e7c220f7c22137c2214200554ad200341306a41086a2903007c221520032903b00122162013200854ad20034180016a41086a2903007c2208200f201154ad7c220520032903d001220f200e201254ad200341a0016a41086a2903007c220e2004200954200c20045472ad7c2204200b200a54ad200341e0006a41086a2903007c7c22097c220a7c220b7c220c7c22117c2212200654ad20034190016a41086a2903007c22132011201554ad7c220620032903e0012211200c201654ad200341b0016a41086a2903007c220c2005200854200b20055472ad7c22052004200e54200920045472ad200341d0016a41086a2903007c200a200f54ad7c7c22087c22097c22047c220a20128420032903f001220b200a200754ad200341c0016a41086a2903007c22072006201354200420065472ad7c22042005200c54200820055472ad200341e0016a41086a2903007c2009201154ad7c7c22057c2206844200520d002006200b54ad200341f0016a41086a2903007c42002004200754200520045472ad7d520d002003290300210420002014370318200020103703102000200d3703082000200437030020034180026a24000f0b4189e3c300411d4190e2c30010a401000bb90201047f230041d0006b2203240002404114102d2204450d0020044100290086f442370000200441106a4100280096f442360000200441086a410029008ef44237000020034294808080c002370224200320043602202000200341206a1046200341306a41186a220020033502284220862003350220841000220441186a290000370300200341306a41106a2205200441106a290000370300200341306a41086a2206200441086a2900003703002003200429000037033020041031200341186a2000290300370300200341106a2005290300370300200341086a20062903003703002003200329033037030002402003280224450d00200328022010310b20032002370338200320013703302003ad4280808080800484200341306aad42808080808002841003200341d0006a24000f0b411441011033000b130020004103360204200041bcf4c2003602000b3400200041e984c40036020420004100360200200041146a4105360200200041106a41b887c300360200200041086a42043702000b3701017f02404110102d22020d00411041011033000b2002420037000820024200370000200042908080808002370204200020023602000bb50d02057f077e230041e0056b2205240002400240024002400240024002404114102d2206450d00200641002900a09b41370000200641106a41002800b09b41360000200641086a41002900a89b4137000020054294808080c0023702d405200520063602d0052001200541d0056a1046200541186a41186a220720053502d80542208620053502d005841000220641186a290000370300200541186a41106a2208200641106a290000370300200541186a41086a2209200641086a2900003703002005200629000037031820061031200541b0056a41186a2007290300370300200541b0056a41106a2008290300370300200541b0056a41086a2009290300370300200520052903183703b005024020052802d405450d0020052802d00510310b200541186a200541b0056aad220a42808080808004841002104102400240200528021822060d004200210b4200210c0c010b200541186a41086a2802004110490d02200641086a290000210c2006290000210b200528021c450d00200610310b0240200b4298787c220d200b56200c200b42e80754ad7d220e200c56200b42e707561b4101470d0041b098c3002106411e21010c070b200541106a20014108200d200e105d024020052802102206450d00200528021421010c070b4110102d2206450d0220064100290089f342370000200641086a4100290091f3423700002005429080808080023702d405200520063602d0052001200541d0056a1046200541186a41186a220720053502d80542208620053502d005841000220641186a290000370300200541186a41106a2208200641106a290000370300200541186a41086a2209200641086a2900003703002005200629000037031820061031200541b0056a41186a2007290300370300200541b0056a41106a2008290300370300200541b0056a41086a2009290300370300200520052903183703b005024020052802d405450d0020052802d00510310b200541186a200a4280808080800484220f1002104102400240200528021822060d004200210b4200210c0c010b200541186a41086a2802004110490d04200641086a290000210c2006290000210b200528021c450d00200610310b0240200b20037d220a200b56200c20047d200b200354ad7d220b200c56200b200c511b450d0041ce98c3002106411d21010c070b200541086a2001200a200b10e502024020052802082206450d00200528020c21010c070b4110102d2206450d0420064100290089f342370000200641086a4100290091f3423700002005429080808080023702d405200520063602d0052002200541d0056a1046200541186a41186a220720053502d80542208620053502d005841000220641186a290000370300200541186a41106a2208200641106a290000370300200541186a41086a2209200641086a2900003703002005200629000037031820061031200541b0056a41186a2007290300370300200541b0056a41106a2008290300370300200541b0056a41086a2009290300370300200520052903183703b005024020052802d405450d0020052802d00510310b200541186a200f1002104102400240200528021822060d004200210f4200210c0c010b200541186a41086a2802004110490d06200641086a290000210c2006290000210f200528021c450d00200610310b0240200f20037c2210200f542206200c20047c2006ad7c220f200c54200f200c511b450d0041eb98c3002106412d21010c070b41002106024020012002470d000c070b024020012002412010ad050d000c070b410021060240200d428094ebdc03544100200e501b450d00419598c3002106411b21010c070b2001200d200e1097022001200a200b104720022010200f104720054200370320200542e8073703182005200541186a3602b005200541b0056a105f200541386a4200370300200541186a41186a42e807370300200541186a41106a2004370300200541186a41086a2003370300200541c0006a2001290000370300200541c8006a200141086a290000370300200541d0006a200141106a290000370300200541d8006a200141186a290000370300200541e0006a2002290000370300200541e8006a200241086a290000370300200541f0006a200241106a290000370300200541f8006a200241186a290000370300200541033a001841014100200541186a10450c060b411441011033000b41e9bcc0004133200541d0056a419cbdc0001038000b411041011033000b41e9bcc0004133200541d0056a419cbdc0001038000b411041011033000b41e9bcc0004133200541d0056a419cbdc0001038000b2000200136020420002006360200200541e0056a24000bff0202017f037e230041206b220224002001ad42adfed5e4d485fda8d8007e42b9e0007c210302400240024002400240200141084b0d00200141014b0d0120010d02420021040c030b0240200141104b0d00200241106a2000290000200385420042adfed5e4d485fda8d800420010b005200241186a29030020022903107c200120006a41786a2900008521040c040b200120006a41786a2900002105200321040340200029000020048542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e2003852103200041086a2100200442cf829ebbefefde82147c2104200141786a220141084b0d000b200320058521040c030b0240200141034b0d00200120006a417e6a33000042108620003300008420038521040c030b200120006a417c6a35000042208620003500008420038521040c020b200031000021040b200420038521040b20022004420042adfed5e4d485fda8d800420010b005200241086a290300210420022903002103200241206a2400200420037c42c300850b880301067f230041306b2202240020012802002103024002402001280204220441037422050d00410021060c010b200341046a2107410021060340200728020020066a2106200741086a2107200541786a22050d000b0b024002400240024002400240200141146a2802000d00200621070c010b024020040d0041d499c30041004100104b000b024002402006410f4b0d002003280204450d010b200620066a220720064f0d010b4101210541002107200241086a21060c010b2007417f4c0d01200241086a2106024020070d0041012105410021070c010b2007102d2205450d020b200241003602102002200736020c200220053602082002200241086a360214200241186a41106a200141106a290200370300200241186a41086a200141086a29020037030020022001290200370318200241146a41e499c300200241186a10ac020d0220002006290200370200200041086a200641086a280200360200200241306a24000f0b1032000b200741011033000b41fc99c3004133200241186a41b09ac3001038000bb10101037f0240024002400240200028020022002802042203200028020822046b2002490d00200028020021030c010b200420026a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102d21030c010b200028020020032004102f21030b2003450d012000200436020420002003360200200028020821040b2000200420026a360208200320046a2001200210ab051a41000f0b200441011033000b1034000bb20401057f230041106b220224002000280200210002400240024002400240024002402001418001490d002002410036020c2001418010490d012002410c6a210302402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c040b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c030b0240200028020822042000280204470d00200441016a22052004490d06200441017422032005200320054b1b22054100480d060240024020040d002005102d21040c010b200028020020042005102f21040b2004450d022000200536020420002004360200200028020821040b200028020020046a20013a00002000200028020841016a3602080c030b20022001413f71418001723a000d20022001410676411f7141c001723a000c2002410c6a2103410221010c010b200541011033000b0240024020002802042205200028020822046b2001490d00200028020021050c010b200420016a22062004490d03200541017422042006200420064b1b22044100480d030240024020050d002004102d21050c010b200028020020052004102f21050b2005450d022000200436020420002005360200200028020821040b2000200420016a360208200520046a2003200110ab051a0b200241106a240041000f0b200441011033000b1034000b6401017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41e499c300200241086a10ac022101200241206a240020010b9e0501037f230041b0016b22042400024002400240024020002d00000e03000102000b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a2002ad4220862001ad84200441206a101c41014621000c020b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a2002ad4220862001ad84200441206a101a41014621000c010b20044190016a41186a22052002ad4220862001ad841000220141186a29000037030020044190016a41106a2202200141106a29000037030020044190016a41086a2206200141086a290000370300200420012900003703900120011031200441186a2005290300370300200441106a2002290300370300200441086a2006290300370300200420042903900137030041012101200441206a200041016a200410f0034100210020042d00200d00200441c8006a41206a200441c1006a2d00003a0000200441c8006a41186a200441396a290000370300200441c8006a41106a200441316a290000370300200441c8006a41086a200441296a290000370300200420042900213703482005200441c8006aad42808080809004841000220041186a2900003703002002200041106a2900003703002006200041086a290000370300200420002900003703900120001031200441f0006a41186a2005290300370300200441f0006a41106a2002290300370300200441f0006a41086a200629030037030020042004290390013703700240200441f0006a2003460d00200441f0006a2003412010ad054521010b200121000b200441b0016a240020000bb80303017f017e027f230041d0006b2203240002402001200210242204422088a72201450d002004a722022d0000220541014b0d002001417f6a210602400240024020050e020001000b41002101200341003a0049200241016a21050340024020062001470d00200141ff0171450d04200341003a00490c040b200341286a20016a200520016a2d00003a00002003200141016a22023a00492002210120024121470d000b200341106a200341316a290000370300200341186a200341396a290000370300200341206a200341c1006a2900003703002003200329002937030820032d00282101410021020c010b2006450d0120022d0001220141034f0d01200341086a41186a200341286a41186a290000370300200341086a41106a200341286a41106a290000370300200341086a41086a200341286a41086a29000037030020032003290028370308410121020b200020013a0001200020023a0000200041026a20032903083700002000410a6a200341106a290300370000200041126a200341186a2903003700002000411a6a200341206a290300370000200341d0006a24000f0b41c49fc400412e200341286a41f49fc4001038000b0e002000350200410120011096020b6701017f230041c0006b220124002001200036020c200141346a410136020020014201370224200141e8eac4003602202001412b36023c2001200141386a36023020012001410c6a360238200141106a200141206a10eb032001280210200128021810e40400000b0d004280dfd8fafbd9a29b877f0b5401017f024002402001418080c400460d0041012104200028021820012000411c6a2802002802101104000d010b024020020d0041000f0b2000280218200220032000411c6a28020028020c11030021040b20040b8507010c7f200028021021030240024002400240200028020822044101460d0020030d012000280218200120022000411c6a28020028020c11030021030c030b2003450d010b0240024020020d00410021020c010b200120026a2105200041146a28020041016a21064100210720012103200121080340200341016a210902400240024020032c0000220a417f4a0d000240024020092005470d004100210b200521030c010b20032d0001413f71210b200341026a220921030b200a411f71210c0240200a41ff0171220a41df014b0d00200b200c41067472210a0c020b0240024020032005470d004100210d2005210e0c010b20032d0000413f71210d200341016a2209210e0b200d200b41067472210b0240200a41f0014f0d00200b200c410c7472210a0c020b02400240200e2005470d004100210a200921030c010b200e41016a2103200e2d0000413f71210a0b200b410674200c411274418080f0007172200a72220a418080c400470d020c040b200a41ff0171210a0b200921030b02402006417f6a2206450d00200720086b20036a21072003210820052003470d010c020b0b200a418080c400460d00024002402007450d0020072002460d0041002103200720024f0d01200120076a2c00004140480d010b200121030b2007200220031b21022003200120031b21010b20040d002000280218200120022000411c6a28020028020c1103000f0b4100210902402002450d002002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b0240200220096b200028020c2206490d002000280218200120022000411c6a28020028020c1103000f0b410021074100210902402002450d00410021092002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b200920026b20066a2209210a024002400240410020002d0030220320034103461b0e0402010001020b20094101762107200941016a410176210a0c010b4100210a200921070b200741016a2103024003402003417f6a2203450d0120002802182000280204200028021c280210110400450d000b41010f0b2000280204210941012103200028021820012002200028021c28020c1103000d00200a41016a2103200028021c210a20002802182100034002402003417f6a22030d0041000f0b20002009200a280210110400450d000b41010f0b20030bd80801067f230041f0006b220424002004200336020c20042002360208410121052001210602402001418102490d00410020016b2107418002210803400240200820014f0d00200020086a2c000041bf7f4c0d0041002105200821060c020b2008417f6a21064100210520084101460d01200720086a21092006210820094101470d000b0b200420063602142004200036021020044100410520051b36021c200441f0eac40041c7a0c30020051b3602180240024002400240200220014b22080d00200320014b0d00200220034b0d01024002402002450d0020012002460d00200120024d0d01200020026a2c00004140480d010b200321020b200420023602202002450d0220022001460d02200141016a210903400240200220014f0d00200020026a2c000041404e0d040b2002417f6a210820024101460d0420092002462106200821022006450d000c040b0b20042002200320081b360228200441306a41146a4103360200200441c8006a41146a4102360200200441d4006a410236020020044203370234200441cca0c3003602302004410536024c2004200441c8006a3602402004200441186a3602582004200441106a3602502004200441286a360248200441306a41e4a0c30010b301000b200441e4006a4102360200200441c8006a41146a4102360200200441d4006a4105360200200441306a41146a410436020020044204370234200441f4a0c3003602302004410536024c2004200441c8006a3602402004200441186a3602602004200441106a36025820042004410c6a3602502004200441086a360248200441306a4194a1c30010b301000b200221080b024020082001460d00410121060240024002400240200020086a22092c00002202417f4a0d0041002105200020016a220621010240200941016a2006460d00200941026a210120092d0001413f7121050b2002411f712109200241ff017141df014b0d01200520094106747221010c020b2004200241ff0171360224200441286a21020c020b4100210020062107024020012006460d00200141016a210720012d0000413f7121000b200020054106747221010240200241ff017141f0014f0d0020012009410c747221010c010b41002102024020072006460d0020072d0000413f7121020b20014106742009411274418080f00071722002722201418080c400460d020b2004200136022441012106200441286a21022001418001490d00410221062001418010490d0041034104200141808004491b21060b200420083602282004200620086a36022c200441306a41146a4105360200200441ec006a4102360200200441e4006a4102360200200441c8006a41146a412c360200200441d4006a412d36020020044205370234200441b4a1c300360230200420023602582004410536024c2004200441c8006a3602402004200441186a3602682004200441106a3602602004200441246a3602502004200441206a360248200441306a41dca1c30010b301000b41f099c400412b41a4a1c30010a401000b7201037f230041206b2202240002402000280200200110fa030d002001411c6a280200210320012802182104200242043703182002420137020c200241c4a2c30036020820042003200241086a10ac020d002000280204200110fa032101200241206a240020010f0b200241206a240041010bec0a02077f017e410121020240200128021841272001411c6a2802002802101104000d0041022103024002400240024002402000280200220241776a2200411e4d0d00200241dc00470d010c020b41f40021040240024020000e1f05010202000202020202020202020202020202020202020202030202020203050b41f20021040c040b41ee0021040c030b0240024002400240024002400240200210f9030d00024002400240024002400240200241808004490d00200241808008490d0120024190fc476a4190fc0b490d0a200241e28b746a41e28d2c490d0a2002419fa8746a419f18490d0a200241dee2746a410e490d0a200241feffff0071419ef00a460d0a200241a9b2756a4129490d0a200241cb91756a410a4d0d0a410121030c0e0b20024180fe037141087621054180afc300210041002106200241ff017121040340200041026a2107200620002d000122036a2108024020002d000022002005460d00200020054b0d092008210620072100200741d2afc300470d010c090b20082006490d02200841a5024b0d03200641d2afc3006a2100024003402003450d012003417f6a210320002d00002106200041016a210020062004470d000c0c0b0b2008210620072100200741d2afc300470d000c080b0b20024180fe0371410876210541b1b4c300210041002106200241ff017121040340200041026a2107200620002d000122036a2108024020002d000022002005460d00200020054b0d072008210620072100200741f7b4c300470d010c070b20082006490d03200841a6014b0d04200641f7b4c3006a2100024003402003450d012003417f6a210320002d00002106200041016a210020062004470d000c0b0b0b2008210620072100200741f7b4c300470d000c060b0b20062008107b000b200841a50210b601000b20062008107b000b200841a60110b601000b200241017267410276410773ad4280808080d0008421090c040b200241ffff03712104419db6c30021034101210002400340200341016a21080240024020032d0000220641187441187522074100480d00200821030c010b200841b5b9c300460d02200741ff007141087420032d0001722106200341026a21030b200420066b22044100480d0320004101732100200341b5b9c300470d000c030b0b41f099c400412b41a4a1c30010a401000b200241ffff0371210441f7b1c3002103410121000340200341016a21080240024020032d0000220641187441187522074100480d00200821030c010b200841b1b4c300460d05200741ff007141087420032d0001722106200341026a21030b200420066b22044100480d0120004101732100200341b1b4c300470d000b0b4101210320004101710d030b200241017267410276410773ad4280808080d0008421090b410321030c020b41f099c400412b41a4a1c30010a401000b0b200221040b03402003210641dc0021004101210241012103024002400240024020060e0401020300010b024002400240024002402009422088a741ff01710e06050403020100050b200942ffffffff8f60834280808080c000842109410321030c060b200942ffffffff8f608342808080803084210941f5002100410321030c050b200942ffffffff8f608342808080802084210941fb002100410321030c040b20042009a72206410274411c7176410f712203413072200341d7006a2003410a491b210002402006450d002009427f7c42ffffffff0f83200942808080807083842109410321030c040b200942ffffffff8f6083428080808010842109410321030c030b200942ffffffff8f6083210941fd002100410321030c020b20012802184127200128021c2802101104000f0b41002103200421000b20012802182000200128021c280210110400450d000b0b20020b950201017f024002402000418010490d00024002400240024002400240200041808004490d002000410c7641706a2201418002490d0141d8b9c3002001418002104b000b200041067641606a220141df074b0d01200141a0a5c3006a2d0000220141c9004b0d02200141037441a8bac3006a21010c060b20014180adc3006a2d00004106742000410676413f7172220141ff034b0d02200141f8bec3006a2d0000220141394b0d03200141037441f8c2c3006a21010c050b41b8b9c300200141e007104b000b41c8b9c300200141ca00104b000b41e8b9c3002001418004104b000b41f8b9c3002001413a104b000b200041037641f8ffffff01714188a3c3006a21010b200129030042012000413f71ad86834200520ba40201037f23004180016b2202240002400240024002400240200128020022034110710d0020034120710d012000ad4101200110960221000c020b410021030340200220036a41ff006a2000410f712204413072200441d7006a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d02200141014184a3c3004102200220036a4180016a410020036b10950221000c010b410021030340200220036a41ff006a2000410f712204413072200441376a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d02200141014184a3c3004102200220036a4180016a410020036b10950221000b20024180016a240020000f0b2000418001107b000b2000418001107b000b0e002000350200410120011096020b1c0020012802184195c7c300410b2001411c6a28020028020c1103000b1c00200128021841a0c7c300410e2001411c6a28020028020c1103000b140020002802002001200028020428020c1104000b6a01037f230041206b220224002001411c6a280200210320012802182104200241086a41106a2000280200220141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820042003200241086a10ac022101200241206a240020010b1600200120002802002200280200200028020410f5030ba70401077f230041306b220324000240024020020d00410021040c010b200341286a210502400240024002400340024020002802082d0000450d00200028020041aac8c3004104200028020428020c1103000d050b2003410a3602282003428a808080103703202003200236021c200341003602182003200236021420032001360210200341086a410a2001200210e702024002400240024020032802084101470d00200328020c210403402003200420032802186a41016a2204360218024002402004200328022422064f0d00200328021421070c010b200328021422072004490d00200641054f0d072003280210200420066b22086a22092005460d0420092005200610ad05450d040b200328021c22092004490d0220072009490d0220032006200341106a6a41176a2d0000200328021020046a200920046b10e7022003280204210420032802004101460d000b0b2003200328021c3602180b200028020841003a0000200221040c010b200028020841013a0000200841016a21040b2000280204210920002802002106024020044520022004467222070d00200220044d0d03200120046a2c000041bf7f4c0d030b200620012004200928020c1103000d04024020070d00200220044d0d04200120046a2c000041bf7f4c0d040b200120046a2101200220046b22020d000b410021040c040b2006410410b601000b200120024100200410f603000b200120022004200210f603000b410121040b200341306a240020040b02000b8c0201027f230041106b220224002002410036020c02400240024002402001418001490d002001418010490d012002410c6a21032001418080044f0d0220022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b200220013a000c2002410c6a2103410121010c020b20022001413f71418001723a000d20022001410676411f7141c001723a000c2002410c6a2103410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b2000200320011081042101200241106a240020010b6101017f230041206b2202240020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41d4c8c300200241086a10ac022101200241206a240020010b0e002000280200200120021081040b0c00200028020020011083040b6401017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41d4c8c300200241086a10ac022101200241206a240020010b2701017f2000280200220128020020012802042000280204280200200028020828020010f603000b1c00200128021841f0eac40041052001411c6a28020028020c1103000ba315010b7f024020002802082201450d0020002802002202200141286c6a210303402002220441286a21020240024020042d0000220041074b0d00024002400240024020000e080500010505050203050b200441086a280200450d04200441046a28020010310c040b200441086a280200450d03200441046a28020010310c030b200441086a280200450d02200441046a28020010310c020b02402004410c6a2802002200450d00200441046a2802002205200041286c6a210603402005220741286a21050240024020072d0000220041074b0d00024002400240024020000e080500010505050203050b200741086a280200450d04200741046a28020010310c040b200741086a280200450d03200741046a28020010310c030b200741086a280200450d02200741046a28020010310c020b02402007410c6a2802002200450d00200741046a2802002208200041286c6a210903402008220a41286a210802400240200a2d0000220041074b0d00024002400240024020000e080500010505050203050b200a41086a280200450d04200a41046a28020010310c040b200a41086a280200450d03200a41046a28020010310c030b200a41086a280200450d02200a41046a28020010310c020b0240200a410c6a2802002200450d00200041286c2101200a41046a28020041046a21000340024002402000417c6a2d0000220b41074b0d00024002400240200b0e080400010404040203040b200041046a280200450d03200028020010310c030b200041046a280200450d02200028020010310c020b200041046a280200450d01200028020010310c010b2000108b040b200041286a2100200141586a22010d000b0b200a41086a280200450d01200a28020410310c010b0240200a410c6a2802002200450d00200041286c2101200a41046a28020041046a21000340024002402000417c6a2d0000220b41074b0d00024002400240200b0e080400010404040203040b200041046a280200450d03200028020010310c030b200041046a280200450d02200028020010310c020b200041046a280200450d01200028020010310c010b2000108b040b200041286a2100200141586a22010d000b0b200a41086a280200450d00200a28020410310b20082009470d000b0b200741086a280200450d01200728020410310c010b02402007410c6a2802002200450d00200741046a2802002208200041286c6a210903402008220a41286a210802400240200a2d0000220041074b0d00024002400240024020000e080500010505050203050b200a41086a280200450d04200a41046a28020010310c040b200a41086a280200450d03200a41046a28020010310c030b200a41086a280200450d02200a41046a28020010310c020b0240200a410c6a2802002200450d00200041286c2101200a41046a28020041046a21000340024002402000417c6a2d0000220b41074b0d00024002400240200b0e080400010404040203040b200041046a280200450d03200028020010310c030b200041046a280200450d02200028020010310c020b200041046a280200450d01200028020010310c010b2000108b040b200041286a2100200141586a22010d000b0b200a41086a280200450d01200a28020410310c010b0240200a410c6a2802002200450d00200041286c2101200a41046a28020041046a21000340024002402000417c6a2d0000220b41074b0d00024002400240200b0e080400010404040203040b200041046a280200450d03200028020010310c030b200041046a280200450d02200028020010310c020b200041046a280200450d01200028020010310c010b2000108b040b200041286a2100200141586a22010d000b0b200a41086a280200450d00200a28020410310b20082009470d000b0b200741086a280200450d00200728020410310b20052006470d000b0b200441086a280200450d01200428020410310c010b02402004410c6a2802002200450d00200441046a2802002205200041286c6a210603402005220741286a21050240024020072d0000220041074b0d00024002400240024020000e080500010505050203050b200741086a280200450d04200741046a28020010310c040b200741086a280200450d03200741046a28020010310c030b200741086a280200450d02200741046a28020010310c020b02402007410c6a2802002200450d00200741046a2802002208200041286c6a210903402008220a41286a210802400240200a2d0000220041074b0d00024002400240024020000e080500010505050203050b200a41086a280200450d04200a41046a28020010310c040b200a41086a280200450d03200a41046a28020010310c030b200a41086a280200450d02200a41046a28020010310c020b0240200a410c6a2802002200450d00200041286c2101200a41046a28020041046a21000340024002402000417c6a2d0000220b41074b0d00024002400240200b0e080400010404040203040b200041046a280200450d03200028020010310c030b200041046a280200450d02200028020010310c020b200041046a280200450d01200028020010310c010b2000108b040b200041286a2100200141586a22010d000b0b200a41086a280200450d01200a28020410310c010b0240200a410c6a2802002200450d00200041286c2101200a41046a28020041046a21000340024002402000417c6a2d0000220b41074b0d00024002400240200b0e080400010404040203040b200041046a280200450d03200028020010310c030b200041046a280200450d02200028020010310c020b200041046a280200450d01200028020010310c010b2000108b040b200041286a2100200141586a22010d000b0b200a41086a280200450d00200a28020410310b20082009470d000b0b200741086a280200450d01200728020410310c010b02402007410c6a2802002200450d00200741046a2802002208200041286c6a210903402008220a41286a210802400240200a2d0000220041074b0d00024002400240024020000e080500010505050203050b200a41086a280200450d04200a41046a28020010310c040b200a41086a280200450d03200a41046a28020010310c030b200a41086a280200450d02200a41046a28020010310c020b0240200a410c6a2802002200450d00200041286c2101200a41046a28020041046a21000340024002402000417c6a2d0000220b41074b0d00024002400240200b0e080400010404040203040b200041046a280200450d03200028020010310c030b200041046a280200450d02200028020010310c020b200041046a280200450d01200028020010310c010b2000108b040b200041286a2100200141586a22010d000b0b200a41086a280200450d01200a28020410310c010b0240200a410c6a2802002200450d00200041286c2101200a41046a28020041046a21000340024002402000417c6a2d0000220b41074b0d00024002400240200b0e080400010404040203040b200041046a280200450d03200028020010310c030b200041046a280200450d02200028020010310c020b200041046a280200450d01200028020010310c010b2000108b040b200041286a2100200141586a22010d000b0b200a41086a280200450d00200a28020410310b20082009470d000b0b200741086a280200450d00200728020410310b20052006470d000b0b200441086a280200450d00200428020410310b20022003470d000b0b0b4c01027f024020002802082201450d0020002802002102200141286c210103402002108c04200241286a2102200141586a22010d000b0b0240200041046a280200450d00200028020010310b0b820101017f024020002d0000220141074b0d000240024002400240024020010e080400010404040203040b200041086a280200450d03200041046a28020010310f0b200041086a280200450d02200041046a28020010310f0b200041086a280200450d01200041046a28020010310f0b200041046a108b040b0f0b200041046a108b040b930e010a7f024020002802082201200028020c460d0003402000200141286a3602082001410c6a2800002102200141086a2800002103200141046a280000210402400240024020012d0000220141094b0d000240024020010e0a04000004040400010206040b20030d020c030b02402002450d002004200241286c6a21052004210603402006220741286a21060240024020072d0000220141074b0d00024002400240024020010e080500010505050203050b200741086a280200450d04200741046a28020010310c040b200741086a280200450d03200741046a28020010310c030b200741086a280200450d02200741046a28020010310c020b02402007410c6a2802002201450d00200741046a2802002208200141286c6a210903402008220a41286a210802400240200a2d0000220141074b0d00024002400240024020010e080500010505050203050b200a41086a280200450d04200a41046a28020010310c040b200a41086a280200450d03200a41046a28020010310c030b200a41086a280200450d02200a41046a28020010310c020b0240200a410c6a2802002202450d00200a41046a2802002101200241286c210203402001108c04200141286a2101200241586a22020d000b0b200a41086a280200450d01200a28020410310c010b0240200a410c6a2802002202450d00200a41046a2802002101200241286c210203402001108c04200141286a2101200241586a22020d000b0b200a41086a280200450d00200a28020410310b20082009470d000b0b200741086a280200450d01200728020410310c010b02402007410c6a2802002201450d00200741046a2802002208200141286c6a210903402008220a41286a210802400240200a2d0000220141074b0d00024002400240024020010e080500010505050203050b200a41086a280200450d04200a41046a28020010310c040b200a41086a280200450d03200a41046a28020010310c030b200a41086a280200450d02200a41046a28020010310c020b0240200a410c6a2802002202450d00200a41046a2802002101200241286c210203402001108c04200141286a2101200241586a22020d000b0b200a41086a280200450d01200a28020410310c010b0240200a410c6a2802002202450d00200a41046a2802002101200241286c210203402001108c04200141286a2101200241586a22020d000b0b200a41086a280200450d00200a28020410310b20082009470d000b0b200741086a280200450d00200728020410310b20062005470d000b0b20030d010c020b02402002450d002004200241286c6a21052004210603402006220741286a21060240024020072d0000220141074b0d00024002400240024020010e080500010505050203050b200741086a280200450d04200741046a28020010310c040b200741086a280200450d03200741046a28020010310c030b200741086a280200450d02200741046a28020010310c020b02402007410c6a2802002201450d00200741046a2802002208200141286c6a210903402008220a41286a210802400240200a2d0000220141074b0d00024002400240024020010e080500010505050203050b200a41086a280200450d04200a41046a28020010310c040b200a41086a280200450d03200a41046a28020010310c030b200a41086a280200450d02200a41046a28020010310c020b0240200a410c6a2802002202450d00200a41046a2802002101200241286c210203402001108c04200141286a2101200241586a22020d000b0b200a41086a280200450d01200a28020410310c010b0240200a410c6a2802002202450d00200a41046a2802002101200241286c210203402001108c04200141286a2101200241586a22020d000b0b200a41086a280200450d00200a28020410310b20082009470d000b0b200741086a280200450d01200728020410310c010b02402007410c6a2802002201450d00200741046a2802002208200141286c6a210903402008220a41286a210802400240200a2d0000220141074b0d00024002400240024020010e080500010505050203050b200a41086a280200450d04200a41046a28020010310c040b200a41086a280200450d03200a41046a28020010310c030b200a41086a280200450d02200a41046a28020010310c020b0240200a410c6a2802002202450d00200a41046a2802002101200241286c210203402001108c04200141286a2101200241586a22020d000b0b200a41086a280200450d01200a28020410310c010b0240200a410c6a2802002202450d00200a41046a2802002101200241286c210203402001108c04200141286a2101200241586a22020d000b0b200a41086a280200450d00200a28020410310b20082009470d000b0b200741086a280200450d00200728020410310b20062005470d000b0b2003450d010b200410310b20002802082201200028020c470d000b0b02402000280204450d00200028020010310b0bf60704087f017e067f017e230041206b2202240020012802042103200128020021040240024002400240024002400240024002400240034020032004460d0120012004411c6a2205360200200441186a210620052104200128020822072d000041004720062d000045460d000b2005416c6a2802002204417f4c0d02200541646a28020021010240024020040d00410121060c010b2004102d2206450d040b20062001200410ab052106200241106a200541706a108f042005417c6a2d000021082002410a6a41026a2002410d6a41026a2d00003a0000200220022f000d3b010a200228021022094109470d010b20004100360208200042043702000c080b2002290214210a411c102d2201450d02200120084100473a00182001200a3702102001200936020c200120043602082001200436020420012006360200200120022f010a3b00192001411b6a2002410c6a2d00003a000002400340024020032005470d0041012106410121090c020b200541186a21042005411c6a210520072d000041004720042d000045460d000b2005416c6a2802002208417f4c0d01200541646a2802002104410121064101210b02402008450d002008102d220b450d050b200b2004200810ab051a200241106a200541706a108f042005417c6a2d0000210c2002410a6a41026a220d2002410d6a41026a220e2d00003a0000200220022f000d3b010a410121092002280210220f4109460d002002290214210a41012106410121090340200241106a41026a2210200d2d00003a0000200220022f010a3b0110024020092006470d00200641016a22042006490d08200641017422092004200920044b1b2209ad421c7e2211422088a70d082011a722044100480d080240024020060d002004102d21010c010b20012006411c6c2004102f21010b2001450d070b20012006411c6c6a220441186a200c41ff01714100473a00002004200f36020c20042008360208200420083602042004200b360200200441106a200a370200200441196a20022f01103b00002004411b6a20102d00003a0000200641016a2106034020032005460d02200541186a21042005411c6a210520072d000041004720042d000045460d000b2005416c6a2802002208417f4c0d02200541646a28020021040240024020080d004101210b0c010b2008102d220b450d090b200b2004200810ab051a200241106a200541706a108f042005417c6a2d0000210c200d200e2d00003a0000200220022f000d3b010a2002290214210a2002280210220f4109470d000b0b2000200636020820002009360204200020013602000c070b1032000b200441011033000b411c41041033000b200841011033000b200441041033000b1034000b200841011033000b200241206a24000bcb0101017f02400240024002400240024002400240200128020022020e09050504000505010203050b20002001280204360204200041033602000f0b410c102d2202450d0420022001280204108f0420004106360200200020023602040f0b20002001280204360204200041073602000f0b410c102d2202450d0320022001280204108f042000200236020420004108360200200041086a200141086a2802003602000f0b20002001280204360204410221020b200020023602000f0b410c41041033000b410c41041033000bd30101017f024020002d001022014109460d000240200041046a280200450d002000280200103120002d001021010b0240200141ff0171220141074b0d00024002400240024020010e080500010505050203050b200041186a280200450d04200041146a28020010310f0b200041186a280200450d03200041146a28020010310f0b200041186a280200450d02200041146a28020010310f0b200041146a2201108a04200041186a280200450d01200128020010310f0b200041146a2201108a04200041186a280200450d00200128020010310b0bd203010d7f230041206b220324000240024002400240024002402002411f710d0020024160712204417f4c0d040240024020040d00410121050c010b2004102d2205450d040b41002106200241057622070d01410021080c020b200041033a0004200041086a4100360200410121060c040b41002109200721044100210a034002400240200941206a220b20024b0d00200341186a220c200120096a220841186a290000370300200341106a220d200841106a290000370300200341086a220e200841086a290000370300200320082900003703000240200a2004460d00200421080c020b024020044101742208200441016a220f2008200f4b1b220841ffffff3f712008470d002008410574220f4100480d000240024020040d00200f102d21050c010b20052004410574200f102f21050b20050d02200f41011033000b1034000b200941206a200210b601000b200520096a22042003290300370000200441186a200c290300370000200441106a200d290300370000200441086a200e290300370000200b2109200821042007200a41016a220a470d000b0b200020053602042000410c6a2007360200200041086a20083602000c020b200441011033000b1032000b20002006360200200341206a24000bf62105017f057e0b7f027e167f230041c0096b22022400200141286a2903002103200141206a2903002104200141186a2903002105200141306a29030021062001290310210720012802082108200128020421092001280200210a0240024002400240024002400240024002402000280200280200220b280200220c4198bfc000460d00200b280204210d0c010b4100210d200241f8046a410041840110aa051a2002418c016a410041b80310aa051a41c804102d220c450d01200c41003b0106200c4100360200200c41086a200241f8046a41840110ab051a200c418c016a20024188016a41bc0310ab051a200b4100360204200b200c3602000b02400240024002400340200c41086a2101200c2f0106220e410c6c2100417f210f410021100240024003402000450d0202400240200a2001280200200128020822112008200820114b1b10ad052212450d0041012111201241004e0d012010210e0c040b20082011490d02200820114721110b2001410c6a2101201041016a2110200041746a2100200f41016a210f20110d000b02402009450d00200a10310b200c200f41286c6a220141a8016a2200290300211320002003370300200141a0016a220029030021142000200437030020014198016a220029030021042000200537030020014190016a220029030021032000200737030020024190056a2013370300200141b0016a220129030021052001200637030020024198056a200537030020022014370388052002200437038005200220033703f8042003a741ff017122014109460d0c2004a721002003422088a72108200141074b0d0520010e080c03030c0c0c03040c0b200f41016a210e0b0240200d450d00200d417f6a210d200c200e4102746a41c8046a280200210c0c010b0b200b200b28020841016a3602080240200c2f01062200410b490d00200241f8046a410041840110aa051a2002418c016a410041b80310aa051a41c804102d2215450d06201541003b010620154100360200201541086a200241f8046a41840110ab0521002015418c016a20024188016a41bc0310ab051a200241f8046a41086a2211200c4188036a290300370300200241f8046a41106a220f200c4190036a290300370300200241f8046a41186a2210200c4198036a290300370300200241f8046a41206a2212200c41a0036a2903003703002002200c290380033703f804200c41d4006a2902002113200c28025021162000200c41dc006a200c2f010641796a2201410c6c10ab05210020154190016a200c41a8036a200141286c10ab05210d200c41063b0106201520013b010620024188016a41206a201229030037030020024188016a41186a201029030037030020024188016a41106a200f29030037030020024188016a41086a2011290300370300200220022903f8043703880102400240200e4107490d00200e410c6c20006a220041b87f6a200041ac7f6a2200200141ffff0371200e41796a22116b410c6c10ac051a20002008360208200020093602042000200a360200200e41286c200d6a220141907e6a200141e87d6a220120152f010620116b41286c10ac051a20012006370320200141186a2003370300200120043703102001200537030820012007370300201520152f010641016a3b01060c010b200c41086a200e410c6c6a2201410c6a2001200c2f0106200e6b410c6c10ac051a20012008360208200120093602042001200a360200200c4190016a200e41286c6a220141286a2001200c2f0106200e6b41286c10ac051a20012006370320200141186a2003370300200120043703102001200537030820012007370300200c200c2f010641016a3b01060b200241f8046a410c6a20024188016a41086a2217290300370200200241f8046a41146a20024188016a41106a2218290300370200200241f8046a411c6a20024188016a41186a2219290300370200200241f8046a41246a20024188016a41206a221a29030037020020022002290388013702fc04200241b8086a41086a200241f8046a41086a220d290200370300200241b8086a41106a200241f8046a41106a220e290200370300200241b8086a41186a200241f8046a41186a2209290200370300200241b8086a41206a200241f8046a41206a221b290200370300200241b8086a41286a200241f8046a41286a280200360200200220022902f8043703b808200241086a41206a221c200241b8086a41246a290200370300200241086a41186a221d200241b8086a411c6a290200370300200241086a41106a221e200241b8086a41146a290200370300200241086a41086a221f200241b8086a410c6a290200370300200220022902bc08370308200c2802002210450d08200c2f0104210c200241346a41046a210a200241b8086a410272212020024188016a41046a2121200241c8046a41286a21220340200241e0006a41206a2223201c290300370300200241e0006a41186a2224201d290300370300200241e0006a41106a2225201e290300370300200241e0006a41086a2226201f29030037030020022002290308370360200c41ffff0371210f02400240024020102f01062201410b490d002021410041b80310aa051a2020410041860110aa051a200241f8046a20024188016a41bc0310ab051a20224200370300200241c8046a41206a22014200370300200241c8046a41186a22004200370300200241c8046a41106a22114200370300200241c8046a41086a22124200370300200242003703c80441f804102d2208450d0b20084100360200200841046a200241b8086a41880110ab051a2008418c016a200241f8046a41bc0310ab051a200841f0046a2022290300370300200841e8046a2001290300370300200841e0046a2000290300370300200841d8046a2011290300370300200841d0046a2012290300370300200820022903c8043703c804201041d4006a290200210320102802502127201b201041a0036a290300370300200920104198036a290300370300200e20104190036a290300370300200d20104188036a29030037030020022010290380033703f804200841086a201041dc006a20102f0106220041796a2201410c6c10ab05212820084190016a201041a8036a200141286c10ab052129200841c8046a201041e4046a2000417a6a221241027410ab05212a201041063b0106200820013b010602402012450d0041002101202a210003402000280200221120013b010420112008360200200041046a21002012200141016a2201470d000b0b201a201b29030022043703002019200929030022053703002018200e29030022063703002017200d2903002207370300200220022903f804221437038801201b200437030020092005370300200e2006370300200d2007370300200220143703f804200c41ffff037122004107490d01200f410c6c20286a220141b87f6a200141ac7f6a220020082f0106200f41796a22016b410c6c10ac051a2000201337020420002016360200200f41286c20296a220041907e6a200041e87d6a220020082f010620016b41286c10ac051a200041206a2023290300370300200041186a2024290300370300200041106a2025290300370300200041086a202629030037030020002002290360370300200820082f010641016a22113b0106200f410274220c202a6a416c6a202a200f417a6a22004102746a2212201141ffff0371220f20006b41027410ac051a20122015360200200f2000490d022008200c6a41b0046a2100034020002802002211200141016a22013b010420112008360200200041046a21002001200f490d000c030b0b2010200f410c6c6a220041146a200041086a22082001200f6b2211410c6c10ac051a2000410c6a2013370200200820163602002010200f41286c6a220041b8016a20004190016a2208201141286c10ac051a200041b0016a20024180016a290300370300200041a8016a200241f8006a290300370300200041a0016a200241f0006a29030037030020004198016a200241e0006a41086a290300370300200820022903603703002010200141016a22003b0106200f410274201041c8046a22086a41086a2008200f41016a22014102746a2208200041ffff0371220020016b41027410ac051a20082015360200200c41ffff037120004f0d0c201520013b010420152010360200200120004f0d0c2000417f6a211120102001417f6a22014102746a41d0046a2100034020002802002208200141026a3b010420082010360200200041046a21002011200141016a2201470d000c0d0b0b201041086a200f410c6c6a2201410c6a200120102f01062211200f6b2212410c6c10ac051a200120133702042001201636020020104190016a200f41286c6a220141286a2001201241286c10ac051a200141206a2023290300370300200141186a2024290300370300200141106a2025290300370300200141086a2026290300370300200120022903603703002010201141016a22013b0106200f410274222a201041c8046a22116a41086a2011200f41016a22124102746a220c200141ffff0371221120126b41027410ac051a200c2015360200200020114f0d002010202a6a41cc046a2101034020012802002200200f41016a220f3b010420002010360200200141046a21012011200f470d000b0b200a20022903f804370200200a41206a2201201b290300370200200a41186a22002009290300370200200a41106a2211200e290300370200200a41086a220f200d290300370200201f200f290200370300201e2011290200370300201d2000290200370300201c20012902003703002002200a2902003703080240201028020022010d002027211620032113200821150c0a0b20102f0104210c202721162003211320012110200821150c000b0b200c200e410c6c6a220141146a200141086a22112000200e6b410c6c10ac051a200141106a20083602002001410c6a20093602002011200a360200200c200e41286c6a220141b8016a20014190016a2200200c2f0106200e6b41286c10ac051a200141b0016a2006370300200141a8016a2003370300200141a0016a200437030020014198016a200537030020002007370300200c200c2f010641016a3b01060c080b20000d020c080b200241f8046a410472108a0420000d010c070b200241f8046a410472108a042000450d060b200810310c050b41c80441081033000b41c80441081033000b41f80441081033000b20024188016a41046a410041b80310aa051a200241b8086a410272410041860110aa051a200241f8046a20024188016a41bc0310ab051a200241c8046a41286a22004200370300200241c8046a41206a22084200370300200241c8046a41186a22114200370300200241c8046a41106a220f4200370300200241c8046a41086a22104200370300200242003703c80441f804102d2201450d0220014100360200200141046a200241b8086a41880110ab051a2001418c016a200241f8046a41bc0310ab051a200141f0046a2000290300370300200141e8046a2008290300370300200141e0046a2011290300370300200141d8046a200f290300370300200141d0046a2010290300370300200120022903c8043703c8042001200b28020022003602c804200b2001360200200b200b28020441016a360204200041003b010420002001360200200120012f01062208410c6c6a2211410c6a20133702002001200841286c6a22004190016a200229030837030020004198016a200241086a41086a290300370300200041a0016a200241086a41106a290300370300200041a8016a200241086a41186a290300370300200041b0016a200241086a41206a290300370300201141086a2016360200200141c8046a200841016a22004102746a2015360200200120003b0106201520003b0104201520013602000b200241093a00f8040b200241c0096a24000f0b41f80441081033000b920a05047f017e077f027e057f230041e0016b220524000240024002402002450d002002410c6c210620012107034002400240200728020041796a220841014b0d000240024020080e020001000b200741046a2802000d010c020b200741086a280200450d010b02402004450d00200541f8006a200320041091040c040b200041033a000420004101360200200041086a41003602000c040b2007410c6a2107200641746a22060d000b0b200541f8006a200320041091040b200541f8006a4104722107024020052802784101470d002000410136020020002007290200370204200041146a200741106a2902003702002000410c6a200741086a2902003702000c010b200541086a200741086a28020036020020052007290200370300024002400240024002402002ad42287e2209422088a70d002009a72207417f4c0d000240024020070d004108210a0c010b2007102d220a450d020b20054100360218200520023602142005200a3602102002450d042002410c6c210b200541b0016a41046a2106200541c8006a41046a2108200541f8006a41047221072005280208210c2005280200210d410121034100210e2002210f410021100340200541f8006a2001200d200c2010109404200541b0016a41086a200741086a290200370300200541b0016a41106a200741106a290200370300200541b0016a41186a200741186a290200370300200541b0016a41206a200741206a290200370300200541b0016a41286a200741286a280200360200200520072902003703b001024020052802784101470d00200541c8006a41106a200541b0016a41106a2903002209370300200541c8006a41086a200541b0016a41086a2903002211370300200520052903b0012212370348200041146a20093702002000410c6a20113702002000201237020420004101360200200541106a108a0402402002450d00200a10310b2005280204450d07200d10310c070b20052802a801211020082006290200370200200841206a2204200641206a290200370200200841186a2213200641186a290200370200200841106a2214200641106a290200370200200841086a2215200641086a290200370200200541206a41086a22162015290200370300200541206a41106a22152014290200370300200541206a41186a22142013290200370300200541206a41206a2213200429020037030020052008290200370320200541f8006a41206a22172013290300370300200541f8006a41186a22132014290300370300200541f8006a41106a22142015290300370300200541f8006a41086a221520162903003703002005200529032037037802402003417f6a200f470d0002402002200f460d002002210f0c010b200241016a22042002490d052002410174220f2004200f20044b1b220fad42287e2209422088a70d052009a722044100480d050240024020020d002004102d210a0c010b200a200241286c2004102f210a0b200a450d042005200f3602142005200a360210200f21020b2001410c6a2101200a200e6a22042005290378370300200441206a2017290300370300200441186a2013290300370300200441106a2014290300370300200441086a2015290300370300200e41286a210e20052003360218200341016a2103200b41746a220b450d050c000b0b1032000b200741081033000b200441081033000b1034000b20002005290310370204200041003602002000410c6a200541186a2802003602002005280204450d00200528020010310b200541e0016a24000bd22d04027f017e147f047e23004180016b22052400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e0900040102030506090a000b0240200320044b0d002000428180808030370300200041086a41003602000c150b20004100360200200041086a41003a0000200041306a200441016a360200200041096a200220044105746a220629000c370000200041116a200641146a290000370000200041196a2006411c6a2800003600000c140b0240200320044b0d002000428180808030370300200041086a41003602000c140b200220044105746a2206290000210720062d001f210820062d001e210320062d001d210120062d001c210220062d001b210920062d001a210a20062d0019210b20062d0018210c20062d0017210d20062d0016210e20062d0015210f20062d0014211020062d0013211120062d0012211220062d0011211320062d0010211420062d000f211520062d000e211620062d000d211720062d000c211820062d000b211920062d000a211a20062d0009211b20062d00082106200041086a41033a0000200041306a200441016a360200200041276a20063a0000200041266a201b3a0000200041256a201a3a0000200041246a20193a0000200041236a20183a0000200041226a20173a0000200041216a20163a0000200041206a20153a00002000411f6a20143a00002000411e6a20133a00002000411d6a20123a00002000411c6a20113a00002000411b6a20103a00002000411a6a200f3a0000200041196a200e3a0000200041186a200d3a0000200041176a200c3a0000200041166a200b3a0000200041156a200a3a0000200041146a20093a0000200041136a20023a0000200041126a20013a0000200041116a20033a0000200041106a20083a0000200041096a20052800483600002000410c6a200541c8006a41036a280000360000200041286a2007423886200742288642808080808080c0ff0083842007421886428080808080e03f8320074208864280808080f01f838484200742088842808080f80f832007421888428080fc07838420074228884280fe03832007423888848484370000200041003602000c130b0240200320044b0d002000428180808030370300200041086a41003602000c130b200220044105746a2206290000210720062d001f210820062d001e210320062d001d210120062d001c210220062d001b210920062d001a210a20062d0019210b20062d0018210c20062d0017210d20062d0016210e20062d0015210f20062d0014211020062d0013211120062d0012211220062d0011211320062d0010211420062d000f211520062d000e211620062d000d211720062d000c211820062d000b211920062d000a211a20062d0009211b20062d00082106200041086a41043a0000200041306a200441016a360200200041276a20063a0000200041266a201b3a0000200041256a201a3a0000200041246a20193a0000200041236a20183a0000200041226a20173a0000200041216a20163a0000200041206a20153a00002000411f6a20143a00002000411e6a20133a00002000411d6a20123a00002000411c6a20113a00002000411b6a20103a00002000411a6a200f3a0000200041196a200e3a0000200041186a200d3a0000200041176a200c3a0000200041166a200b3a0000200041156a200a3a0000200041146a20093a0000200041136a20023a0000200041126a20013a0000200041116a20033a0000200041106a20083a0000200041096a20052800483600002000410c6a200541cb006a280000360000200041286a2007423886200742288642808080808080c0ff0083842007421886428080808080e03f8320074208864280808080f01f838484200742088842808080f80f832007421888428080fc07838420074228884280fe03832007423888848484370000200041003602000c120b0240200320044b0d002000428180808030370300200041086a41003602000c120b200220044105746a2203411f6a210141002106024003402006411f460d01200320066a2108200641016a210620082d0000450d000b200541206a41026a200541c8006a41026a2d000022063a0000200520052f004822083b0120200041033a0004200020083b0005200041076a20063a0000200041086a4100360000200041013602000c120b20012d00002106200041306a200441016a360200200041096a20064101463a0000200041086a41053a0000200041003602000c110b0240200320044b0d002000428180808030370300200041086a41003602000c110b200220044105746a2201411c6a210941002106024003402006411c460d01200120066a2108200641016a210620082d0000450d000b2000428180808030370300200041086a41003602000c110b0240200220044105746a22062d001d41107420092d00004118747220062d001e4108747220062d001f7241057622092003490d002000428180808030370300200041086a41003602000c110b200220094105746a2201411c6a210a4100210603402006411c460d04200120066a2108200641016a210620082d0000450d000b2000428180808030370300200041086a41003602000c100b0240200320044b0d002000428180808030370300200041086a41003602000c100b200220044105746a2201411c6a210941002106024003402006411c460d01200120066a2108200641016a210620082d0000450d000b2000428180808030370300200041086a41003602000c100b0240200220044105746a22062d001d41107420092d00004118747220062d001e4108747220062d001f7241057622092003490d002000428180808030370300200041086a41003602000c100b200220094105746a2201411c6a210a4100210603402006411c460d02200120066a2108200641016a210620082d0000450d000b2000428180808030370300200041086a41003602000c0f0b0240200320044b0d002000428180808030370300200041086a41003602000c0f0b200220044105746a2209411c6a210a41002106024003402006411c460d01200920066a2108200641016a210620082d0000450d000b2000428180808030370300200041086a41003602000c0f0b0240200220044105746a22062d001d411074200a2d00004118747220062d001e4108747220062d001f72410576220b2003490d002000428180808030370300200041086a41003602000c0f0b2002200b4105746a2209411c6a210a41002106024003402006411c460d01200920066a2108200641016a210620082d0000450d000b2000428180808030370300200041086a41003602000c0f0b2002200b4105746a22062d001d411074200a2d00004118747220062d001e4108747220062d001f72220aad42287e2207422088a70d042007a72206417f4c0d04024002400240024020060d00410821090c010b2006102d2209450d010b200541003602102005200a36020c20052009360208200a450d0f2003200b41016a22066b210f200220064105746a211020012802042111200541c8006a41086a2106200a210341002101410021020340200541c8006a20112010200f2002109404024020052802484101470d002000200529024c370204200041013602002000410c6a200541c8006a410c6a290200370200200041146a200541c8006a41146a2902003702002005200336020c20052001360210200541086a108a042003450d12200910310c120b200541206a41206a200641206a2903002207370300200541206a41186a200641186a290300221c370300200541206a41106a200641106a290300221d370300200541206a41086a200641086a290300221e37030020052006290300221f37032020052802782102200541c8006a41206a220b2007370300200541c8006a41186a220c201c370300200541c8006a41106a220d201d3703002006201e3703002005201f3703480240024020012003460d002003210e0c010b200341016a22082003490d0b200341017422012008200120084b1b220ead42287e2207422088a70d0b2007a722084100480d0b0240024020030d002008102d21090c010b2009200341286c2008102f21090b2009450d032005200936020820032101200e21030b2009200141286c6a22082005290348370300200841206a200b290300370300200841186a200c290300370300200841106a200d290300370300200841086a2006290300370300200141016a2101200a417f6a220a450d0f0c000b0b200641081033000b200841081033000b200541c8006a20022003200941016a200220094105746a22062d001d411074200a2d00004118747220062d001e4108747220062d001f72109504024020052802484101470d00200041013602002000200541c8006a4104722206290200370204200041146a200641106a2902003702002000410c6a200641086a2902003702000c0e0b200541c8006a41086a2802002106200541086a200528024c2208200541c8006a410c6a280200220310c401024020052802084101470d00200041146a200529020c370000200041106a20033600002000410c6a2006360000200041086a2008360000200041013a0004200041013602000c0e0b2005411a6a41026a2005411d6a41026a2d000022013a0000200541206a41086a2202200541c8006a41086a290300370300200541206a41106a2209200541c8006a41106a290300370300200520052f001d220a3b011a20052005290348370320200041086a41063a0000200041096a200a3b00002000410b6a20013a0000200041146a2003360000200041106a20063600002000410c6a2008360000200041306a200441016a36020020004100360200200041186a2005290320370300200041206a2002290300370300200041286a20092903003703000c0d0b200541c8006a20022003200941016a200220094105746a22062d001d411074200a2d00004118747220062d001e4108747220062d001f72109504200541c8006a4104722106024020052802484101470d002000410136020020002006290200370204200041146a200641106a2902003702002000410c6a200641086a2902003702000c0d0b200541206a41086a200641086a290200220737030020052006290200221c370320200541d3006a20073e00002005201c37004b200520052900483703082005200541cf006a29000037000f200041086a41023a0000200041096a2005290308370000200041106a200529000f370000200041306a200441016a360200200041003602000c0c0b200541c8006a2002200320042001280204109504200541c8006a4104722106024020052802484101470d002000410136020020002006290200370204200041146a200641106a2902003702002000410c6a200641086a2902003702000c0c0b200541086a41086a200641086a2802002208360200200520062902002207370308200541c8006a41106a2802002106200541d3006a20083600002005200737004b200520052900483703202005200541cf006a290000370027200041086a41013a0000200041096a2005290320370000200041106a2005290027370000200041306a2006360200200041003602000c0b0b200141086a2802002209ad42287e2207422088a70d002007a72206417f4c0d0002400240024020060d004108210a4108210b0c010b2006102d220a450d01200a210b0b200541003602102005200936020c2005200a360208410821062001210802400340024020064108460d000240200641064b0d00410120067441e200710d070b2009450d0a20012802042112200541c8006a41086a2106200a2111200921014100210c0340200541c8006a2012200220032004109404024020052802484101470d002000200529024c370204200041013602002000410c6a200541c8006a410c6a290200370200200041146a200541c8006a41146a2902003702002005200136020c2005200c360210200121090c0d0b200541206a41206a200641206a2903002207370300200541206a41186a200641186a290300221c370300200541206a41106a200641106a290300221d370300200541206a41086a200641086a290300221e37030020052006290300221f37032020052802782104200541c8006a41206a220d2007370300200541c8006a41186a220e201c370300200541c8006a41106a220f201d3703002006201e3703002005201f37034802400240200c2001460d00200121100c010b200141016a22082001490d092001410174220a2008200a20084b1b2210ad42287e2207422088a70d092007a722084100480d090240024020010d002008102d210a0c010b2011200141286c2008102f210a0b200a450d042005200a360208200a210b2001210c201021010b200b200c41286c6a22082005290348370300200841206a200d290300370300200841186a200e290300370300200841106a200f290300370300200841086a2006290300370300200c41016a210c200b21112009417f6a2209450d060c000b0b2008280204220828020021060c000b0b200841081033000b200641081033000b1032000b2005201036020c2005200c3602100c040b0240200320044b0d002000428180808030370300200041086a41003602000c050b200220044105746a220c411c6a210d41002106024003402006411c460d01200c20066a2108200641016a210620082d0000450d000b2000428180808030370300200041086a41003602000c050b02400240200220044105746a22062d001d411074200d2d00004118747220062d001e4108747220062d001f72410576220620034b0d002009450d04200320066b2111200220064105746a211220012802042113200541c8006a41086a2106200a21102009210341002101410021020340200541c8006a2013201220112002109404024020052802484101470d002000200529024c370204200041013602002000410c6a200541c8006a410c6a290200370200200041146a200541c8006a41146a2902003702002005200336020c20052001360210200321090c080b200541206a41206a200641206a2903002207370300200541206a41186a200641186a290300221c370300200541206a41106a200641106a290300221d370300200541206a41086a200641086a290300221e37030020052006290300221f37032020052802782102200541c8006a41206a220c2007370300200541c8006a41186a220d201c370300200541c8006a41106a220e201d3703002006201e3703002005201f3703480240024020012003460d002003210f0c010b200341016a22082003490d04200341017422012008200120084b1b220fad42287e2207422088a70d042007a722084100480d040240024020030d002008102d210a0c010b2010200341286c2008102f210a0b200a450d032005200a360208200a210b20032101200f21030b200b200141286c6a22082005290348370300200841206a200c290300370300200841186a200d290300370300200841106a200e290300370300200841086a2006290300370300200141016a2101200b21102009417f6a2209450d040c000b0b20062003107b000b200841081033000b1034000b2005200f36020c200520013602100b200441016a21040b200541d3006a200541086a41086a2802003600002005200529030837004b200520052900483703202005200541c8006a41076a290000370027200041086a41073a0000200041096a2005290320370000200041106a2005290027370000200041306a2004360200200041003602000c030b200541086a108a042009450d02200a10310c020b2005200e36020c200520013602100b200541d3006a200541086a41086a2802003600002005200529030837004b200520052900483703202005200541cf006a290000370027200041086a41083a0000200041096a2005290320370000200041106a2005290027370000200041306a200441016a360200200041003602000b20054180016a24000b8f11010c7f230041f0006b22052400410021060240024002400240024002400240024002402004411f6a41057622070d0041042108410021094100210a0c010b024002402007410274220b102d2208450d004100210b2007210a03400240200b20036a220c2002490d002000428180808030370200200041086a4100360200200a450d0b200810310c0b0b0240200b200a470d00200a41016a2209200a490d05200a410174220d2009200d20094b1b220941ffffffff03712009470d052009410274220d4100480d0502400240200a0d00200d102d21080c010b2008200a410274200d102f21080b2008450d032009210a0b2008200b4102746a2001200c4105746a360200200b41016a2209210b20092007460d030c000b0b200b41041033000b200d41041033000b200520043602302005410036022020054100360210200520083602082005200a360204200520083602002005200820094102746a220c36020c02400240024020040d00410021012008210c0c010b200541106a210e20052004417f6a220f36023020094102742101410021062008210b0240034002402006450d00200d200528021c470d040b2001450d012005200b41046a22043602080240200b2802002202450d004120102d220b450d08200b2002290000370000200b41186a200241186a290000370000200b41106a200241106a290000370000200b41086a200241086a290000370000200b41206a210202402006450d000240200d200528021c2210460d00200520103602180b2005280214450d00200610310b2005200236021c2005200b360218200541203602142005200b3602102001417c6a2101200b210d200b21062004210b0c010b0b200b41046a210c0b200621010b200820094102746a200c6b210b02400340200b450d012005200c41046a2209360208200b417c6a210b200c28020021022009210c20020d000b0b0240200a450d00200810310b4101210241002109024020010d00410021060c070b0240200541186a2802002005411c6a280200220b460d002005200b3602180b0240200541146a2802000d00410021060c070b20061031410021060c060b2005200d41016a360218200d2d0000210a02400240200f0d004100210b0c010b200f200e410020061b220b410c6a280200200b41086a2802006b220b200b200f4b1b210b0b417f200b41016a22082008200b491b2206417f4c0d022006102d2202450d012002200a3a0000200541386a41306a200541306a280200220b360200200541386a41286a200541286a290300370300200541386a41206a200541206a290300370300200541386a41186a2204200541186a290300370300200541386a41106a2210200541106a290300370300200541386a41086a200541086a2903003703002005200529030037033841012109200b450d042005200b417f6a22013602682005280248210803400240024002402008450d002005280250220b2005280254460d002004210a0c010b02402005280240220b2005280244460d002005200b41046a360240200b280200220a450d004120102d220b0d02412041011033000b2005280258450d07200541e0006a220a280200220b200541e4006a280200460d070b200a200b41016a360200200541e0006a210d200541386a41206a210f4101210902400340200b2d0000210b024020062009470d000240024020010d004100210a0c010b4100210c4100210a02402008450d002010410020081b220a410c6a280200200a41086a2802006b210a0b024020052802582208450d00200f410020081b2208410c6a280200200841086a2802006b210c0b2001417f200a200c6a22082008200a491b220a200a20014b1b210a0b2009417f200a41016a22082008200a491b6a220a2009490d0520094101742208200a2008200a4b1b22064100480d050240024020090d002006102d21020c010b200220092006102f21020b2002450d020b200220096a200b3a0000200941016a21092005280268220b450d082005200b417f6a22013602682005280248210803400240024002402008450d002005280250220b2005280254460d002004210a0c010b02402005280240220b2005280244460d002005200b41046a360240200b280200220a450d004120102d220b0d02412041011033000b2005280258450d0b200d210a2005280260220b2005280264460d0b0b200a200b41016a3602000c020b200b200a290000370000200b41186a200a41186a290000370000200b41106a200a41106a290000370000200b41086a200a41086a290000370000200b41206a210a02402008450d00024020052802502005280254220c460d002005200c3602500b200528024c450d00200810310b2005200a3602542005200b3602502005412036024c2005200b360248200b21080c000b0b0b200641011033000b200b200a290000370000200b41186a200a41186a290000370000200b41106a200a41106a290000370000200b41086a200a41086a290000370000200b41206a210a02402008450d00024020052802502005280254220c460d002005200c3602500b200528024c450d00200810310b2005200a3602542005200b3602502005412036024c2005200b360248200b21080c000b0b1034000b200641011033000b1032000b412041011033000b20052802442005280240220a6b210b02400340200b450d012005200a41046a2208360240200b417c6a210b200a280200210c2008210a200c0d000b0b0240200528023c450d00200528023810310b02402005280248220b450d000240200541d0006a280200200541d4006a280200220a460d002005200a3602500b200541cc006a280200450d00200b10310b2005280258220b450d000240200541e0006a280200200541e4006a280200220a460d002005200a3602600b200541dc006a280200450d00200b10310b2000200236020420004100360200200041106a200720036a3602002000410c6a2009360200200041086a20063602000b200541f0006a24000ba50903047f017e027f230041306b22022400024002400240024002400240024002400240024002400240024002400240024020012d00000e09000102030405060708000b200041003a000020002001290001370001200041116a200141116a280000360000200041096a200141096a2900003700000c080b2001410c6a2802002203417f4c0d084101210402402003450d00200141046a28020021012003102d2204450d0a20042001200310ab051a0b200041013a00002000410c6a2003360200200041086a2003360200200041046a20043602000c070b2001410c6a2802002203417f4c0d070240024020030d00410121010c010b200141046a28020021042003102d2201450d0a20012004200310ab051a0b200041023a00002000410c6a2003360200200041086a2003360200200041046a20013602000c060b200041033a0000200041206a200141206a290300370300200041186a200141186a290300370300200041106a200141106a290300370300200041086a200141086a2903003703000c050b200041043a0000200041206a200141206a290300370300200041186a200141186a290300370300200041106a200141106a290300370300200041086a200141086a2903003703000c040b200041053a0000200020012d00014100473a00010c030b2001410c6a2802002203417f4c0d03200141046a28020021010240024020030d00410121040c010b2003102d2204450d070b20042001200310ab0521012000410c6a2003360200200041086a2003360200200041046a2001360200200041063a00000c020b2001410c6a2802002205ad42287e2206422088a70d022006a72204417f4c0d02200141046a28020021030240024020040d00410821070c010b2004102d2207450d070b0240024020050d00410021010c010b200541286c2104200541037441786a2108200721010340200241086a2003109604200141206a200241086a41206a290300370300200141186a200241086a41186a290300370300200141106a200241086a41106a290300370300200141086a200241086a41086a29030037030020012002290308370300200141286a2101200341286a2103200441586a22040d000b200841037641016a21010b200041073a00002000410c6a2001360200200041086a2005360200200041046a20073602000c010b2001410c6a2802002205ad42287e2206422088a70d012006a72204417f4c0d01200141046a28020021030240024020040d00410821070c010b2004102d2207450d070b0240024020050d00410021010c010b200541286c2104200541037441786a2108200721010340200241086a2003109604200141206a200241086a41206a290300370300200141186a200241086a41186a290300370300200141106a200241086a41106a290300370300200141086a200241086a41086a29030037030020012002290308370300200141286a2101200341286a2103200441586a22040d000b200841037641016a21010b200041083a00002000410c6a2001360200200041086a2005360200200041046a20073602000b200241306a24000f0b1032000b200341011033000b200341011033000b200341011033000b200441081033000b200441081033000b810601017f230041c0006b220224000240024002400240024002400240024002400240024002400240024020012802000e09000103040506080207000b4107102d2201450d0920004287808080f00037020420002001360200200141036a41002800c0c943360000200141002800bdc9433600000c080b4105102d2201450d0920004285808080d00037020420002001360200200141046a41002d00c8c9433a0000200141002800c4c9433600000c070b200220012802043602182002413c6a41013602002002420137022c200241ccc9c3003602282002410536020c2002200241086a3602382002200241186a3602082000200241286a10eb030c060b200220012802043602182002413c6a41013602002002420137022c200241d4c9c3003602282002410536020c2002200241086a3602382002200241186a3602082000200241286a10eb030c050b200220012802043602182002413c6a41013602002002420137022c200241dcc9c3003602282002410536020c2002200241086a3602382002200241186a3602082000200241286a10eb030c040b4104102d2201450d0620004284808080c00037020420002001360200200141e2debde3063600000c030b4106102d2201450d0620004286808080e00037020420002001360200200141046a41002f00e8c9433b0000200141002800e4c9433600000c020b2002200141086a280200360204200241186a2001280204109704200241146a41053602002002413c6a41023602002002412e36020c2002420337022c200241ecc9c3003602282002200241046a3602102002200241186a3602082002200241086a3602382000200241286a10eb03200228021c450d01200228021810310c010b200241086a20012802041097042002413c6a41013602002002412e36021c2002420237022c20024184cac3003602282002200241086a3602182002200241186a3602382000200241286a10eb03200228020c450d00200228020810310b200241c0006a24000f0b410741011033000b410541011033000b410441011033000b410641011033000b110020012000280200200028020810f5030bd40c03057f017e047f230041e0036b220524002005200136020c2005200036020802400240024002400240024002400240024020030d0041012106410421074100210841002103410121090c010b2003ad420c7e220a422088a70d02200aa722004100480d022000102d2207450d042003410c6c21012003410274417c6a210b20072100034020054188026a2002109704200041086a20054188026a41086a28020036020020002005290388023702002000410c6a21002002410c6a2102200141746a22010d000b41012109200b41027641016a2108410021064100450d010b4100210c410021000c050b2008410c6c220241746a410c6e210020072101024003402002450d01200241746a2102200020012802086a220b20004f210d2001410c6a2101200b2100200d0d000b41f2c8c300413510bf01000b2000417f4c0d050240024020000d00410121090c010b2000102d2209450d020b200728020021010240200020072802082202490d002000210c0c040b2000410174220b2002200b20024b1b220c4100480d000240024020000d00200c102d21090c010b20092000200c102f21090b20090d03200c41011033000b1034000b200041011033000b200041041033000b20092001200210ab05210120084101460d00200120026a210b200020026b210d2008410c6c20076a41746a210e20072102024002400340200d450d01200b412c3a0000200d417f6a220d200241146a2802002201490d02200d20016b210d200b41016a2002410c6a2202280200200110ab0520016a210b200e2002460d030c000b0b4198b1c400411c41b4b1c40010a401000b4198b1c400411c41b4b1c40010a401000b200520003602182005200c36021420052009360210024020060d002008410c6c21022007210003400240200041046a280200450d00200028020010310b2000410c6a2100200241746a22020d000b0b02402003450d00200710310b2005419c026a41023602002005413c6a412e3602002005420337028c02200541a0cac30036028802200541023602342005200541306a360298022005200541106a3602382005200541086a360230200541206a20054188026a10eb032005280228220e417f4c0d0020052802202100024002400240200e0d00410121020c010b200e102d2202450d010b20022000200e10ab05210702402005280224450d00200010310b4100210d200541306a410041cc0110aa051a200541013a008002418801210b20054188013602fc01200e2103024002400340200e200d6b21002007200d6a210202402003200b4f0d00024002400240024002400240024002400240200341c9014f0d0020002003490d0102402003450d00200541306a2100200321010340200020002d000020022d0000733a0000200041016a2100200241016a21022001417f6a22010d000b0b200520033602f80120054188026a200541306a41d80110ab051a20052802d003220041c9014f0d02200041c801460d0320052802d403210220054188026a20006a220020002d000020052d00d803733a00002002417f6a220041c9014f0d04200041c801460d0520054188026a20006a220020002d0000418001733a000020054188026a109a044100210220052802d40321004120210102400340412020026b210b200420026a210d0240200120004f0d00200141c9014f0d09200b20014f0d022001200b10b601000b200041c9014f0d09200b2000490d0a200d20054188026a200010ab051a20054188026a109a04200120052802d40322006b2101200020026a220241204d0d000b20024120107b000b200d20054188026a200110ab051a0240200e450d00200710310b02402005280214450d00200528021010310b200541e0036a24000f0b200341c80110b601000b41badcc400412841b0d9c40010a401000b200041c801107b000b4101410010b601000b200041c801107b000b4101410010b601000b200141c80110b601000b200041c80110b601000b2000200b10b601000b200b41c9014f0d012000200b490d020240200b450d00200541306a2100200b21010340200020002d000020022d0000733a0000200041016a2100200241016a21022001417f6a22010d000b0b2003200b6b2103200b200d6a210d200541306a109a0420052802fc01210b200d200e4d0d000b200d200e107b000b200b41c80110b601000b41badcc400412841b0d9c40010a401000b200e41011033000b1032000ba90803197e017f147e20002903c0012101200029039801210220002903702103200029034821042000290320210520002903b8012106200029039001210720002903682108200029034021092000290318210a20002903b001210b200029038801210c2000290360210d2000290338210e2000290310210f20002903a8012110200029038001211120002903582112200029033021132000290308211420002903a00121152000290378211620002903502117200029032821182000290300211941c07e211a0340200e200f85200d85200c85200b85221b4201892018201985201785201685201585221c85221d201385211e20012009200a85200885200785200685221f201c42018985221c85212020042005852003852002852001852221420189201b85221b2009854237892222201f4201892013201485201285201185201085220985221f200f85423e892223427f8583201d201085420289222485210120222021200942018985220f20168542298922212003201c854227892225427f8583852110201b2006854238892226201f200c85420f892227427f8583201d201285420a89222885210c2028200f2018854224892229427f8583201c200585421b89222a852116200f2015854212892215201f200e85420689222b201d201485420189222c427f85838521032002201c85420889222d201b200885421989222e427f8583202b8521122004201c85421489221c201b200a85421c89220a427f8583201f200b85423d89220e852104200a200e427f8583201d201185422d89221d852109200f2017854203892214200e201d427f858385210e201d2014427f8583201c852113200a2014201c427f8583852118201b200785421589221d200f201985221c2020420e89221b427f858385210a201b201d427f8583201f200d85422b89221f85210f201d201f427f8583201e422c89221d852114201a41e0dbc4006a290300201c201f201d427f85838585211920262029202a427f858385221f2102201d201c427f8583201b85221d2105202120232024427f858385221c2106202a2026427f8583202785221b2107202c2015427f8583202d852226210820242021427f85832025852224210b202e2015202d427f8583852221210d202920272028427f8583852227211120252022427f858320238522222115202e202b427f8583202c8522232117201a41086a221a0d000b200020223703a00120002016370378200020233703502000201837032820002019370300200020103703a8012000202737038001200020123703582000201337033020002014370308200020243703b0012000200c37038801200020213703602000200e3703382000200f3703102000201c3703b8012000201b3703900120002026370368200020093703402000200a370318200020013703c0012000201f3703980120002003370370200020043703482000201d3703200bcd0702077f017e230041b0046b2202240002400240200128020422030d00200041013a0000200041046a41013602000c010b024002400240024002400240200128020022042c00002201417f4a0d0002400240200141ff0171220541b801490d00200141ff017141c001490d01200041013a0000200041046a41033602000c080b2003200541817f6a490d020240200141817f470d0020042c00014100480d00200041013a0000200041046a41073602000c080b200041013a0000200041046a41013602000c070b2003200541ca7e6a2206490d054100210102400240200541c97e6a220541044b0d0020042d00010d01410721010b200041013a0000200041046a20013602000c070b200441016a210741002108410021010240034020052001460d01200720016a2d00002001417f7320056a4103744118717420086a21082005200141016a2201470d000b0b0240200620086a220120064f22050d00200041013a0000200041046a41093602000c070b20032001490d042005450d024101210341012105024002400240417f200120066b2201418002472001418002491b41016a0e03020001020b20024180023602f003200220013602f4032001418002470d0520024190046a41026a200420066a220141026a2d00003a0000200220012f00003b0190042001290007210920012800032105200241f8016a2001410f6a41f10110ab051a410021030c010b41002105410121030b200241f4016a41026a220120024190046a41026a2d00003a0000200220022f0190043b01f401200241036a200241f8016a41f10110ab051a02402003450d00200041013a0000200041086a2009370200200041046a20053602000c070b200020022f01f4013b0001200041086a2009370000200041046a2005360000200041036a20012d00003a0000200041106a200241036a41f10110ab051a200041003a00000c060b200041013a0000200041046a41013602000c050b200041013a0000200041046a41083602000c040b20062001107b000b20024190046a41146a41033602002002419c046a4104360200200241f8036a41146a4103360200200242033702fc0320024180ecc4003602f80320024104360294042002200241f0036a3602a8042002200241f4036a3602ac042002420437038802200242013702fc01200241d4ecc4003602f801200220024190046a360288042002200241f8016a3602a0042002200241ac046a360298042002200241a8046a36029004200241f8036a4190edc40010b301000b200041013a0000200041046a41083602000c010b200041013a0000200041046a41083602000b200241b0046a24000b3400200041b085c40036020420004100360200200041146a4103360200200041106a41d0cac300360200200041086a42083702000b5101027f230041106b2202240002404104102d22030d00410441011033000b200242043702042002200336020041002002106f200041086a200228020836020020002002290300370200200241106a24000be60601077f230041d0006b220224000240024002400240024002400240411f102d2203450d00200341176a41002900aed243370000200341106a41002900a7d243370000200341086a410029009fd24337000020034100290097d2433700002002429f808080f003370224200220033602204187d2c300200241206a10b102200241306a41186a2204200235022842208620022802202205ad841000220341186a290000370300200241306a41106a2206200341106a290000370300200241306a41086a2207200341086a2900003703002002200329000037033020031031200241186a2004290300370300200241106a2006290300370300200241086a20072903003703002002200229033037030002402002280224450d00200510310b4120102d2203450d0120032002290300370000200341186a200241186a290300370000200341106a200241106a290300370000200341086a200241086a2903003700002001280208220441046a2206417f4c0d02200128020021050240024020060d00410121010c010b2006102d2201450d040b2002410036023820022006360234200220013602302004200241306a106f0240024020022802342207200228023822016b2004490d00200228023021060c010b200120046a22062001490d06200741017422082006200820064b1b22084100480d060240024020070d002008102d21060c010b200228023020072008102f21060b2006450d052002200836023420022006360230200821070b200620016a2005200410ab051a200241306a41186a2205200120046aad4220862006ad841000220441186a290000370300200241306a41106a2201200441106a290000370300200241306a41086a2208200441086a2900003703002002200429000037033020041031200241186a2005290300370300200241106a2001290300370300200241086a20082903003703002002200229033037030002402007450d00200610310b2003412041c000102f2203450d0620032002290300370020200341386a200241186a290300370000200341306a200241106a290300370000200341286a200241086a290300370000200042c0808080800837020420002003360200200241d0006a24000f0b411f41011033000b412041011033000b1032000b200641011033000b200841011033000b1034000b41c00041011033000bee0303047f017e017f02402001450d00034020002802f80621002001417f6a22010d000b0b02402002450d004100210341002101034002400240200120002f01064f0d004108200041086a20004198bfc000461b200141d0006c6a22042802442105200441c0006a2802002106200141016a21010c010b02400240200028020022010d002003ad210741002104410021010c010b20003301044220862003ad842107410121040b200010312007a72103024002402007422088a7220820012f01064f0d00200121000c010b034002400240200128020022000d002003ad2107410021000c010b200441016a210420013301044220862003ad8421070b200110312007a72103200021012007422088a7220820002f01064f0d000b0b4108200041086a20004198bfc000461b200841d0006c6a22012802442105200141c0006a2802002106200841027420006a41fc066a280200210002402004417f6a2201450d00034020002802f80621002001417f6a22010d000b0b410021010b2006450d012002417f6a210202402005450d00200610310b20020d000b0b024020004198bfc000460d0020002802002101200010312001450d0020012802002100200110312000450d00024020002802002201450d000340200010312001210020012802002203210120030d000b0b200010310b0b8c0d030c7f017e067f230041b0026b2202240002404110102d2203450d0041002104200341002900c0ca43370000200341086a41002900c8ca433700002002429080808080023702d401200220033602d0012002200241d0016a36029001200120024190016a103e20024190026a41186a220120023502d80142208620023502d001841000220341186a29000037030020024190026a41106a2205200341106a29000037030020024190026a41086a2206200341086a290000370300200220032900003703900220031031200241d8006a41186a2001290300370300200241d8006a41106a2005290300370300200241d8006a41086a20062903003703002002200229039002370358024020022802d401450d0020022802d00110310b200241f8006a200241d8006aad42808080808004841002104102400240200228027822010d000c010b200228027c2107200220024180016a280200220536028c01200220013602880141002103200241003a0038024002400340024020052003470d002002410036028c01200341ff0171450d02200241003a00380c020b200241186a20036a200120036a22042d00003a00002002200441016a360288012002200341016a22043a00382004210320044120470d000b20024190026a41086a2203200241186a41086a220629030037030020024190026a41106a2208200241186a41106a220929030037030020024190026a41186a220a200241186a41186a220b29030037030020022002290318370390022002200520046b36028c01200241186a20024188016a10cf0220022802382204450d00200241d0016a41186a220c200a290300370300200241d0016a41106a220a2008290300370300200241d0016a41086a220d2003290300370300200241d0016a41286a22032006290300370300200241d0016a41306a22052009290300370300200241d0016a41386a2206200b29030037030020022002290390023703d001200220022903183703f0012002413c6a2802002108200241186a41286a2209290300210e20024190016a41086a200d29030037030020024190016a41106a200a29030037030020024190016a41186a200c29030037030020024190016a41206a220a20022903f00137030020024190016a41286a220b200329030037030020024190016a41306a220c200529030037030020024190016a41386a220d2006290300370300200220022903d00137039001200241186a20024188016a10890120022802180d012008450d00200410310b41e9bcc000413320024190016a419cbdc0001038000b20024190026a41086a220f200241186a41086a2210280200360200200241d0016a41086a221120024190016a41086a290300370300200241d0016a41106a221220024190016a41106a290300370300200241d0016a41186a221320024190016a41186a290300370300200241d0016a41206a2214200a2903003703002003200b2903003703002005200c2903003703002006200d290300370300200220022903183703900220022002290390013703d00120102011290300370300200241186a41106a2012290300370300200241186a41186a2013290300370300200241186a41206a201429030037030020092003290300370300200241186a41306a2005290300370300200241186a41386a2006290300370300200241086a41086a200f280200360200200220022903d00137031820022002290390023703082007450d00200110310b200241d0016a41086a2203200241186a41086a290300370300200241d0016a41106a2201200241186a41106a290300370300200241d0016a41186a2205200241186a41186a290300370300200241d0016a41206a2206200241186a41206a290300370300200241d0016a41286a2207200241186a41286a290300370300200241d0016a41306a2209200241186a41306a290300370300200241d0016a41386a220a200241186a41386a290300370300200220022903183703d00120024190016a41086a220b200241086a41086a280200360200200220022903083703900102402004450d00200020022903d00137030020002008360244200041c8006a200e370200200041386a200a290300370300200041306a2009290300370300200041286a2007290300370300200041206a2006290300370300200041186a2005290300370300200041106a2001290300370300200041086a2003290300370300200041d8006a200b280200360200200041d0006a2002290390013702000b20002004360240200241b0026a24000f0b411041011033000b040041000b02000b02000b896601037f230041206b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d00000eac010102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01ab0100010b2002200128021841d3d3c30041112001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000cab010b2002200128021841e4d3c300410b2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000caa010b2002200128021841efd3c30041032001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000ca9010b2002200128021841f2d3c30041052001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41f8d3c30010f10221000ca8010b200220012802184188d4c30041042001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41f8d3c30010f10221000ca7010b20022001280218418cd4c30041022001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41f8d3c30010f10221000ca6010b20022001280218418ed4c30041042001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000ca5010b200220012802184192d4c30041032001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000ca4010b200220012802184195d4c30041022001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221000ca3010b200220012802184197d4c30041042001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221000ca2010b20022001280218419bd4c30041072001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41a4d4c30010f10221000ca1010b2002200128021841b4d4c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000ca0010b2002200128021841bad4c30041042001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221000c9f010b2002200128021841bed4c300410c2001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041016a36020c20012002410c6a41ccd4c30010f10221000c9e010b2002200128021841dcd4c30041042001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c9d010b2002200128021841e0d4c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c9c010b2002200128021841e6d4c30041082001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221000c9b010b2002200128021841eed4c30041082001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221000c9a010b2002200128021841f6d4c30041082001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221000c99010b2002200128021841fed4c30041092001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221000c98010b200220012802184187d5c30041092001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221000c97010b200220012802184190d5c30041072001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c96010b200220012802184197d5c30041072001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c95010b20022001280218419ed5c30041072001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c94010b2002200128021841a5d5c30041072001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c93010b2002200128021841acd5c30041092001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c92010b2002200128021841b5d5c30041092001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c91010b2002200128021841bed5c300410a2001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c90010b2002200128021841c8d5c300410a2001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c8f010b2002200128021841d2d5c30041092001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c8e010b2002200128021841dbd5c30041092001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c8d010b2002200128021841e4d5c300410a2001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c8c010b2002200128021841eed5c300410a2001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c8b010b2002200128021841f8d5c300410a2001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c8a010b200220012802184182d6c300410a2001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c89010b20022001280218418cd6c30041082001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c88010b200220012802184194d6c30041082001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c87010b20022001280218419cd6c30041082001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c86010b2002200128021841a4d6c30041082001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c85010b2002200128021841acd6c30041092001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c84010b2002200128021841b5d6c300410a2001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c83010b2002200128021841bfd6c30041092001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c82010b2002200128021841c8d6c300410a2001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c81010b2002200128021841d2d6c300410a2001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221012002200041086a36020c20012002410c6a419cd3c30010f10221000c80010b2002200128021841dcd6c300410d2001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41ccd4c30010f10221000c7f0b2002200128021841e9d6c300410a2001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041016a36020c200241106a2002410c6a41ccd4c30010f10221000c7e0b2002200128021841f3d6c30041082001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a41fcd6c30010f10221000c7d0b20022001280218418cd7c30041082001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041086a36020c200241106a2002410c6a4194d7c30010f10221000c7c0b2002200128021841a4d7c30041082001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041046a36020c200241106a2002410c6a419cd3c30010f10221000c7b0b2002200128021841acd7c30041082001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200041086a36020c200241106a2002410c6a41b4d7c30010f10221000c7a0b2002200128021841c4d7c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c790b2002200128021841cad7c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c780b2002200128021841cfd7c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c770b2002200128021841d4d7c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c760b2002200128021841dad7c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c750b2002200128021841e0d7c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c740b2002200128021841e6d7c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c730b2002200128021841ecd7c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c720b2002200128021841f2d7c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c710b2002200128021841f8d7c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c700b2002200128021841fed7c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c6f0b200220012802184184d8c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c6e0b20022001280218418ad8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c6d0b20022001280218418fd8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c6c0b200220012802184194d8c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c6b0b20022001280218419ad8c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c6a0b2002200128021841a0d8c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c690b2002200128021841a6d8c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c680b2002200128021841acd8c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c670b2002200128021841b2d8c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c660b2002200128021841b8d8c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c650b2002200128021841bed8c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c640b2002200128021841c4d8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c630b2002200128021841c9d8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c620b2002200128021841ced8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c610b2002200128021841d3d8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c600b2002200128021841d8d8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c5f0b2002200128021841ddd8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c5e0b2002200128021841e2d8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c5d0b2002200128021841e7d8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c5c0b2002200128021841ecd8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c5b0b2002200128021841f1d8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c5a0b2002200128021841f6d8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c590b2002200128021841fbd8c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c580b200220012802184180d9c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c570b200220012802184186d9c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c560b20022001280218418cd9c30041092001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c550b200220012802184195d9c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c540b20022001280218419bd9c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c530b2002200128021841a1d9c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c520b2002200128021841a7d9c30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c510b2002200128021841aed9c30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c500b2002200128021841b5d9c30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c4f0b2002200128021841bcd9c30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c4e0b2002200128021841c3d9c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c4d0b2002200128021841c9d9c30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c4c0b2002200128021841ced9c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c4b0b2002200128021841d4d9c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c4a0b2002200128021841dad9c30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c490b2002200128021841e1d9c30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c480b2002200128021841e8d9c30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c470b2002200128021841efd9c30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c460b2002200128021841f6d9c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c450b2002200128021841fcd9c30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c440b200220012802184182dac30041092001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c430b20022001280218418bdac30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c420b200220012802184191dac30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c410b200220012802184197dac30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c400b20022001280218419ddac30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c3f0b2002200128021841a4dac30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c3e0b2002200128021841abdac30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c3d0b2002200128021841b2dac30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c3c0b2002200128021841b9dac30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c3b0b2002200128021841bfdac30041052001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c3a0b2002200128021841c4dac30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c390b2002200128021841cadac30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c380b2002200128021841d0dac30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c370b2002200128021841d7dac30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c360b2002200128021841dedac30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c350b2002200128021841e5dac30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c340b2002200128021841ecdac30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c330b2002200128021841f2dac30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c320b2002200128021841f8dac30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c310b2002200128021841ffdac30041082001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c300b200220012802184187dbc30041082001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c2f0b20022001280218418fdbc300410a2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c2e0b200220012802184199dbc30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c2d0b2002200128021841a0dbc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c2c0b2002200128021841a6dbc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c2b0b2002200128021841acdbc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c2a0b2002200128021841b2dbc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c290b2002200128021841b8dbc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c280b2002200128021841bedbc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c270b2002200128021841c4dbc300410b2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c260b2002200128021841cfdbc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c250b2002200128021841d5dbc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c240b2002200128021841dbdbc30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c230b2002200128021841e2dbc30041082001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c220b2002200128021841eadbc30041082001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c210b2002200128021841f2dbc300410a2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c200b2002200128021841fcdbc30041072001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c1f0b200220012802184183dcc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c1e0b200220012802184189dcc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c1d0b20022001280218418fdcc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c1c0b200220012802184195dcc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c1b0b20022001280218419bdcc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c1a0b2002200128021841a1dcc30041062001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c190b2002200128021841a7dcc300410b2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c180b2002200128021841b2dcc300410a2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c170b2002200128021841bcdcc300410c2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c160b2002200128021841c8dcc300410c2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c150b2002200128021841d4dcc300410c2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c140b2002200128021841e0dcc300410c2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c130b2002200128021841ecdcc300410d2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c120b2002200128021841f9dcc300410d2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c110b200220012802184186ddc300410c2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c100b200220012802184192ddc300410c2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c0f0b20022001280218419eddc300410c2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c0e0b2002200128021841aaddc300410c2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c0d0b2002200128021841b6ddc300410e2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c0c0b2002200128021841c4ddc300410e2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c0b0b2002200128021841d2ddc300410e2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c0a0b2002200128021841e0ddc300410e2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c090b2002200128021841eeddc300410c2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c080b2002200128021841faddc300410e2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c070b200220012802184188dec300410e2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c060b200220012802184196dec300410e2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c050b2002200128021841a4dec300410e2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c040b2002200128021841b2dec300410d2001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c030b2002200128021841bfdec30041112001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c020b2002200128021841d0dec30041112001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000c010b2002200128021841e1dec30041112001411c6a28020028020c1103003a001820022001360210200241003a001920024100360214200241106a21000b20002d00082101024020002802042203450d00200141ff0171210441012101024020040d00024020034101470d0020002d0009450d00200028020022042d00004104710d00410121012004280218419fcac30041012004411c6a28020028020c1103000d010b200028020022012802184180e1c40041012001411c6a28020028020c11030021010b200020013a00080b200241206a2400200141ff01714100470b19002000200141186a280200360204200020012802103602000bc60201037f230041206b2202240002400240200028020022002d00004104470d002002200128021841f2dec30041082001411c6a28020028020c11030022003a001820022001360210200241003a0019200241003602140c010b2002200128021841fadec30041052001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200036020c200241106a2002410c6a4180dfc30010f102210120022d0018210020022802142203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d00410121002004280218419fcac30041012004411c6a28020028020c1103000d010b200128020022002802184180e1c40041012000411c6a28020028020c11030021000b200120003a00080b200241206a2400200041ff01714100470b0c002000280200200110a8040b8f0201017f230041106b220224000240024002400240024020002d00000e0401020300010b200220012802184190dfc30041032001411c6a28020028020c11030022003a000820022001360200200241003a0009200241003602040c030b200220012802184193dfc30041032001411c6a28020028020c11030022003a000820022001360200200241003a0009200241003602040c020b200220012802184196dfc30041032001411c6a28020028020c11030022003a000820022001360200200241003a0009200241003602040c010b200220012802184199dfc30041032001411c6a28020028020c11030022003a000820022001360200200241003a0009200241003602040b200241106a240020000bc10201037f230041206b220224000240024020002d00004104470d002002200128021841f2dec30041082001411c6a28020028020c11030022003a001820022001360210200241003a0019200241003602140c010b2002200128021841fadec30041052001411c6a28020028020c1103003a001820022001360210200241003a0019200241003602142002200036020c200241106a2002410c6a4180dfc30010f102210120022d0018210020022802142203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d00410121002004280218419fcac30041012004411c6a28020028020c1103000d010b200128020022002802184180e1c40041012000411c6a28020028020c11030021000b200120003a00080b200241206a2400200041ff01714100470bc30201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d0020002d0000210420034120710d012004ad42ff01834101200110960221000c020b20002d00002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d02200141014184a3c3004102200220006a4180016a410020006b10950221000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d02200141014184a3c3004102200220006a4180016a410020006b10950221000b20024180016a240020000f0b2004418001107b000b2004418001107b000bd00203027f017e017f23004180016b220224002000280200210002400240024002400240200128020022034110710d002000280200210020034120710d012000ac22042004423f8722047c2004852000417f73411f76200110960221000c020b20002802002103410021000340200220006a41ff006a2003410f712205413072200541d7006a2005410a491b3a00002000417f6a2100200341047622030d000b20004180016a22034181014f0d02200141014184a3c3004102200220006a4180016a410020006b10950221000c010b410021030340200220036a41ff006a2000410f712205413072200541376a2005410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d02200141014184a3c3004102200220036a4180016a410020036b10950221000b20024180016a240020000f0b2003418001107b000b2000418001107b000bd00202027f027e23004180016b220224002000280200210002400240024002400240200128020022034110710d002000290300210420034120710d0120042004423f8722057c2005852004427f55200110960221000c020b20002903002104410021000340200220006a41ff006a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d02200141014184a3c3004102200220006a4180016a410020006b10950221000c010b410021000340200220006a41ff006a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d02200141014184a3c3004102200220006a4180016a410020006b10950221000b20024180016a240020000f0b2003418001107b000b2003418001107b000bd30101017f230041106b22022400024002400240024020002d00000e03010200010b2002200128021841afdfc300410b2001411c6a28020028020c11030022003a000820022001360200200241003a0009200241003602040c020b2002200128021841badfc300410c2001411c6a28020028020c11030022003a000820022001360200200241003a0009200241003602040c010b2002200128021841c6dfc300410d2001411c6a28020028020c11030022003a000820022001360200200241003a0009200241003602040b200241106a240020000b890501047f230041d0006b220224002000280200220041046a2802002103200028020021004101210420012802184196cac30041012001411c6a28020028020c110300210502402003450d0020022000360204024020050d00024020012d0000410471450d0041012104200128021841f1c8c3004101200128021c28020c1103000d012001280200210541012104200241013a001720022005360218200241b8c8c30036023420022001290218370308200220012d00303a00482002200128020436021c200220012902283703402002200129022037033820022001290210370328200220012902083703202002200241176a3602102002200241086a360230200241046a200241186a10b7010d01200228023041d0c8c3004102200228023428020c11030021040c010b200241046a200110b70121040b024020034101470d00200421050c010b200041046a21002003410274417c6a210320042105034020022000360204200541ff0171210441012105024020040d00024020012802002204410471450d00200241013a001720022004360218200241b8c8c30036023420022001290218370308200220012d00303a00482002200128020436021c200220012902283703402002200129022037033820022001290210370328200220012902083703202002200241176a3602102002200241086a360230200241046a200241186a10b7010d01200228023041d0c8c3004102200228023428020c11030021050c010b200128021841b1c8c3004102200128021c28020c1103000d00200241046a200110b70121050b200041046a21002003417c6a22030d000b0b41012100024020050d0020012802184197cac3004101200128021c28020c11030021000b200241d0006a240020000b8c0201027f230041106b2202240020002802002802002100200128021841acd3c300410b2001411c6a28020028020c1103002103200241003a0005200220033a0004200220013602002002200036020c200241b7d3c30041052002410c6a41bcd3c30010930121012002200041086a36020c200141ccd3c30041072002410c6a419cd3c3001093011a20022d00042101024020022d0005450d00200141ff0171210041012101024020000d0020022802002201411c6a28020028020c210020012802182103024020012d00004104710d00200341ecc8c3004102200011030021010c010b200341eec8c3004101200011030021010b200220013a00040b200241106a2400200141ff01714100470b1c00200128021841b0e2c30041082001411c6a28020028020c1103000bec0a04047f017e047f037e230041f0006b2202240002400240200128020422030d0020004281808080103703000c010b0240024002400240024002400240024002400240024002400240024002400240200128020022042c00002201417f4a0d00200141ff0171220541b801490d01200141ff017141c001490d0220004281808080303703000c100b20010d0320004281808080f0003703000c0f0b2003200541817f6a490d03200541807f6a21030240200141817f460d00024020030d0042002106200241386a4200370300200241c0006a4200370300200241c8006a42003703002002420037033020022105200241186a21070c0f0b20042d00010d0b410721010c0d0b2003450d01024020042c0001417f4a0d00200241186a2107200221050c0c0b20004281808080f0003703000c0e0b2003200541ca7e6a2208490d054100210102400240200541c97e6a220741044b0d0020042d00010d01410721010b20004101360200200020013602040c0e0b200441016a21094100210a410021010240034020072001460d01200920016a2d00002001417f7320076a41037441187174200a6a210a2007200141016a2201470d000b0b02402008200a6a220120084f22070d002000428180808090013703000c0e0b20032001490d042007450d030240200120086b22010d0042002106200241386a4200370300200241c0006a4200370300200241c8006a42003703000c080b200420086a2d00000d06410721030c080b41a099c40041004100104b000b200241306a41086a4200370300200241306a41106a420037030020024200370350200220013a005020024200370330200041086a2002290350370300200041106a4200370300200041186a4200370300200041206a4200370300200041003602000c0b0b2000428180808080013703000c0a0b20082001107b000b2000428180808080013703000c080b2000428180808080013703000c070b41002103200141204b0d01200241e8006a4200370300200241e0006a4200370300200241d8006a420037030020024200370350200520046a41c97e6a2103200241d0006a2101034020012003200a6a2d00003a0000200141016a2101200a417f6a220a0d000b200241306a41186a200241d0006a41186a290300370300200241306a41106a200241d0006a41106a290300370300200241306a41086a200241d0006a41086a290300370300200229035021060b20022006370330200241186a41086a200241306a41106a290300220b370300200241186a41106a200241306a41186a290300220c37030020022002290338220d370318200041086a2006370300200041106a200d370300200041186a200b370300200041206a200c370300200041003602000c050b20004101360200200020033602040c040b20022105200241186a21070b41002101200341204b0d00200241e8006a4200370300200241e0006a4200370300200241d8006a420037030020024200370350200241d0006a210103402001200420036a2d00003a0000200141016a21012003417f6a22030d000b200241306a41186a200241d0006a41186a290300370300200241306a41106a200241d0006a41106a290300370300200241306a41086a200241d0006a41086a2903003703002002200229035022063703300c010b20004101360200200020013602040c010b20072002290338370300200741106a2201200241306a41186a290300370300200741086a2203200241306a41106a290300370300200541106a22042001290200370200200541086a2201200329020037020020052007290200370200200041086a2006370300200041106a2005290200370200200041186a2001290200370200200041206a2004290200370200200041003602000b200241f0006a24000b2300200141a6c8c30041a1c8c30020002802002d000022001b4104410520001b10f5030bed0902067f017e024020010d00200041ac013a00000f0b024002400240024002400240024020012d00002202414f6a41fb004f0d000c010b02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020020e312c2c0001022c2c0304052c06072c2c08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292c0b20012d00012103410221020c2b0b20012d00012103410321020c2a0b20012d00012103410421020c290b200141046a2802002104410721020c270b200141046a2802002104410821020c260b200141046a2802002105410c102d2204450d272005280204220641ffffffff03712006470d2820064102742201417f4c0d280240024020010d00410421070c010b2001102d2207450d2a0b02402006450d00200528020021012006410274210320072102034020022001280200360200200241046a2102200141046a21012003417c6a22030d000b0b200420063602042004200736020020042005280208360208410921020c250b200141046a2802002104410b21020c240b200141046a280200210420012d00012103410c21020c240b200141046a2802002104410f21020c220b200141046a2802002104411021020c210b200141046a2802002104411121020c200b200141046a2802002104411221020c1f0b200141046a2802002104411321020c1e0b200141046a280200210420013502082108411421020c1d0b200141046a280200210420013502082108411521020c1c0b200141046a280200210420013502082108411621020c1b0b200141046a280200210420013502082108411721020c1a0b200141046a280200210420013502082108411821020c190b200141046a280200210420013502082108411921020c180b200141046a280200210420013502082108411a21020c170b200141046a280200210420013502082108411b21020c160b200141046a280200210420013502082108411c21020c150b200141046a280200210420013502082108411d21020c140b200141046a280200210420013502082108411e21020c130b200141046a280200210420013502082108411f21020c120b200141046a280200210420013502082108412021020c110b200141046a280200210420013502082108412121020c100b200141046a280200210420013502082108412221020c0f0b200141046a280200210420013502082108412321020c0e0b200141046a280200210420013502082108412421020c0d0b200141046a280200210420013502082108412521020c0c0b200141046a280200210420013502082108412621020c0b0b200141046a280200210420013502082108412721020c0a0b200141046a280200210420013502082108412821020c090b200141046a280200210420013502082108412921020c080b200141046a280200210420013502082108412a21020c070b20012d00012103412b21020c070b20012d00012103412c21020c060b200141046a2802002104412d21020c040b20012903082108412e21020c020b200141046a2802002104412f21020c020b20012903082108413021020b0b0b200020033a0001200020023a0000200041086a2008370300200041046a20043602000f0b410c41041033000b1032000b200141041033000bbb0201037f230041106b220224000240024020002802000d002002200128021841b1e3c30041042001411c6a28020028020c11030022003a000820022001360200200241003a0009200241003602040c010b2002200128021841b5e3c30041042001411c6a28020028020c1103003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41bce3c30010f102210120022d0008210020022802042203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d00410121002004280218419fcac30041012004411c6a28020028020c1103000d010b200128020022002802184180e1c40041012000411c6a28020028020c11030021000b200120003a00080b200241106a2400200041ff01714100470bd60501087f230041106b220324002002280208220441546a2105200241106a280200220641306c210702400340410021082007450d01200741506a21072005412c6a2109200541306a220a210520092d00004103470d000b200a41086a2802002207450d00200741286c2105200a28020041186a2107410021080340200820072d0000456a2108200741286a2107200541586a22050d000b0b02400240024002400240024002400240200120086b220a20014b0d00200641306c2107200441546a210503402007450d02200741506a21072005412c6a2108200541306a2209210520082d0000410c470d000b200941086a280200200a4b0d02411e102d22070d05411e41011033000b412c102d22070d02412c41011033000b412c102d22070d02412c41011033000b2009280200200a41186c6a28020821072003200a200210bc0420032802004101460d0320032802042105200041003602002000200520076a3602040c040b2000200736020420004101360200200741286a4100280099e543360000200741206a4100290091e543370000200741186a4100290089e543370000200741106a4100290081e543370000200741086a41002900f9e443370000200741002900f1e443370000200041086a42ac808080c0053702000c030b2000200736020420004101360200200741286a41002800c5e543360000200741206a41002900bde543370000200741186a41002900b5e543370000200741106a41002900ade543370000200741086a41002900a5e5433700002007410029009de543370000200041086a42ac808080c0053702000c020b2000200736020420004101360200200741166a41002900dfe543370000200741106a41002900d9e543370000200741086a41002900d1e543370000200741002900c9e543370000200041086a429e808080e0033702000c010b20002003290204370204200041013602002000410c6a2003410c6a2802003602000b200341106a24000b8d0301067f230041106b220224000240024002400240200041046a2802002203200041086a28020022046b20012802042205200128020022066b4104762207490d00200028020021030c010b200420076a22062004490d02200341017422052006200520064b1b220641ffffffff00712006470d02200641047422054100480d020240024020030d002005102d21030c010b200028020020034104742005102f21030b2003450d0120002003360200200041046a2006360200200041086a280200210420012802042105200128020021060b0240024020062005470d00410021060c010b2001200641106a3602000b2002200610b304024020022d000041ac01460d00200320044104746a2106034020062002290300370300200641086a200241086a29030037030002400240200128020022052001280204470d00410021050c010b2001200541106a3602000b200441016a2104200641106a21062002200510b30420022d000041ac01470d000b0b200041086a2004360200200241106a24000f0b200541081033000b1034000b11002000280200350200410120011096020be00a01067f024002400240024020012d00002202414f6a41fb00490d0002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020020e312a2a0001022a2a0304052a06072a2a08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a0b200020012d00013a0001200041023a00000f0b200020012d00013a0001200041033a00000f0b200020012d00013a0001200041043a00000f0b200041046a200141046a280200360200200041073a00000f0b200041046a200141046a280200360200200041083a00000f0b200141046a2802002103410c102d2204450d252003280204220541ffffffff03712005470d2620054102742201417f4c0d260240024020010d00410421060c010b2001102d2206450d280b02402005450d00200328020021012005410274210720062102034020022001280200360200200241046a2102200141046a21012007417c6a22070d000b0b200420053602042004200636020020042003280208360208200041046a2004360200200041093a00000f0b200041046a200141046a2802003602002000410b3a00000f0b200020012d00013a0001200041046a200141046a2802003602002000410c3a00000f0b200041046a200141046a2802003602002000410f3a00000f0b200041046a200141046a280200360200200041103a00000f0b200041046a200141046a280200360200200041113a00000f0b200041046a200141046a280200360200200041123a00000f0b200041046a200141046a280200360200200041133a00000f0b200041046a200141046a290200370200200041143a00000f0b200041046a200141046a290200370200200041153a00000f0b200041046a200141046a290200370200200041163a00000f0b200041046a200141046a290200370200200041173a00000f0b200041046a200141046a290200370200200041183a00000f0b200041046a200141046a290200370200200041193a00000f0b200041046a200141046a2902003702002000411a3a00000f0b200041046a200141046a2902003702002000411b3a00000f0b200041046a200141046a2902003702002000411c3a00000f0b200041046a200141046a2902003702002000411d3a00000f0b200041046a200141046a2902003702002000411e3a00000f0b200041046a200141046a2902003702002000411f3a00000f0b200041046a200141046a290200370200200041203a00000f0b200041046a200141046a290200370200200041213a00000f0b200041046a200141046a290200370200200041223a00000f0b200041046a200141046a290200370200200041233a00000f0b200041046a200141046a290200370200200041243a00000f0b200041046a200141046a290200370200200041253a00000f0b200041046a200141046a290200370200200041263a00000f0b200041046a200141046a290200370200200041273a00000f0b200041046a200141046a290200370200200041283a00000f0b200041046a200141046a290200370200200041293a00000f0b200041046a200141046a2902003702002000412a3a00000f0b200020012d00013a00012000412b3a00000f0b200020012d00013a00012000412c3a00000f0b200041046a200141046a2802003602002000412d3a00000f0b200041086a200141086a2903003703002000412e3a00000f0b200041046a200141046a2802003602002000412f3a00000f0b200041086a200141086a290300370300413021020b200020023a00000f0b410c41041033000b1032000b200141041033000bea0302057f017e02402001450d00034020002802940321002001417f6a22010d000b0b02402002450d004100210341002101034002400240200120002f01064f0d00200020014105746a220441c4006a2802002105200441386a2802002106200441346a2802002107200141016a21010c010b02400240200028020022010d002003ad210841002104410021010c010b20003301044220862003ad842108410121040b200010312008a72103024002402008422088a7220620012f01064f0d00200121050c010b034002400240200128020022050d002003ad2108410021050c010b200441016a210420013301044220862003ad8421080b200110312008a72103200521012008422088a7220620052f01064f0d000b0b200641027420056a4198036a2802002100200520064105746a220141c4006a2802002105200141386a2802002106200141346a280200210702402004417f6a2201450d00034020002802940321002001417f6a22010d000b0b410021010b20054102460d012002417f6a210202402006450d00200710310b20020d000b0b024020004198bfc000460d0020002802002101200010312001450d0020012802002105200110312005450d00024020052802002201450d000340200510312001210520012802002200210120000d000b0b200510310b0baa07010b7f230041e0006b22032400200320013602202002280208220441546a2105200241106a280200220641306c210202400340024020020d00410021070c020b200241506a21022005412c6a2107200541306a2208210520072d00004102470d000b200341186a200810f30220032802182107200328021c21020b2002410020071b2109200641306c2102200441546a21052007410420071b210a02400340024020020d004100210b0c020b200241506a21022005412c6a2107200541306a2208210520072d00004104470d000b200341106a200810f3022003280210210b2003280214210c0b200641306c2102200441546a2105200b4104200b1b210d02400240024002400240024002400240024003402002450d01200241506a21022005412c6a2107200541306a2208210520072d00004103470d000b200841086a2802002202450d00200241286c2107200828020041186a2102410021050340200520022d0000456a2105200241286a2102200741586a22070d000b200520014d0d01200641306c2102200441546a210503402002450d07200241506a21022005412c6a2107200541306a2208210520072d00004103470d000b200341086a200810f302200328020c220b41286c210520032802082204210703402005450d08200541586a2105200741186a2108200741286a2202210720082d00000d000b20010d02200241586a21020c030b410021050b0240200c4100200b1b200120056b22024d0d00200d20024102746a22020d030b200341cc006a41013602002003420237023c20034188e7c3003602382003410536022c2003200341286a3602482003200341206a360228200341d0006a200341386a10eb03200341d0006a21020c030b2004200b41286c6a210803402001417f6a2101034020082002460d06200241186a2105200241286a2207210220052d00000d000b2007210220010d000b200741586a21020b2002411c6a21020b2003200228020022023602240240200920024d0d00200a20024104746a2202450d0020002002360204410021020c040b200341cc006a4102360200200341dc006a41053602002003420337023c20034198e7c300360238200341053602542003200341d0006a3602482003200341206a3602582003200341246a360250200341286a200341386a10eb03200341286a21020b20022802002105200041086a200229020437020020002005360204410121020c020b41e7e5c30041c20010bf01000b41a9e6c30041dd0010bf01000b20002002360200200341e0006a24000bf80d01067f0240024020002d00002201410e4b0d00024002400240024002400240024002400240024002400240024020010e0f0001020304050607080e090e0a0b0c000b200041086a280200450d0d200041046a28020010310f0b0240200041086a280200450d00200041046a28020010310b200041146a280200450d0c200041106a28020010310f0b02402000410c6a2802002202450d00200041046a28020021012002410474210203400240200141046a280200450d00200128020010310b200141106a2101200241706a22020d000b0b200041086a280200450d0b200028020410310f0b02402000410c6a2802002202450d00200041046a2802002101200241286c210203400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141286a2101200241586a22020d000b0b200041086a280200450d0a200028020410310f0b200041086a280200450d09200041046a28020010310f0b200041086a280200450d08200041046a28020010310f0b200041086a280200450d07200041046a28020010310f0b02402000410c6a2802002201450d00200041046a280200220320014104746a21040340024020032802082202450d0020032802002101200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d0020062802001031200528020021060b200610310b200141106a2101200241706a22020d000b0b200341106a21010240200341046a280200450d00200328020010310b2001210320012004470d000b0b200041086a280200450d06200028020410310f0b02402000410c6a2802002202450d00200041046a2802002101200241146c210203400240200141046a280200450d00200128020010310b200141146a21012002416c6a22020d000b0b200041086a280200450d05200028020410310f0b02402000410c6a2802002201450d00200041046a28020022032001411c6c6a21040340024020032802042201450d0002402003410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d0020062802001031200528020021060b200610310b200141106a2101200241706a22020d000b0b200341086a280200450d00200328020410310b2003411c6a21010240200341146a280200450d00200328021010310b2001210320012004470d000b0b200041086a280200450d04200028020410310f0b02402000410c6a2802002201450d00200041046a2802002203200141186c6a210403400240200341046a280200450d00200328020010310b0240200341146a2802002202450d00200328020c2101200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d0020062802001031200528020021060b200610310b200141106a2101200241706a22020d000b0b200341186a21010240200341106a280200450d00200328020c10310b2001210320012004470d000b0b200041086a280200450d03200028020410310f0b02402000410c6a2802002201450d00200041046a28020022032001411c6c6a21040340024020032802042201450d0002402003410c6a2802002202450d00200241047421020340024020012d00004109470d000240200141046a2205280200220628020441ffffffff0371450d0020062802001031200528020021060b200610310b200141106a2101200241706a22020d000b0b200341086a280200450d00200328020410310b2003411c6a21010240200341146a280200450d00200328021010310b2001210320012004470d000b0b200041086a280200450d02200028020410310f0b0240200041046a2802002201450d00200041086a280200450d00200110310b0240200041146a2802002201450d0002402000411c6a2802002202450d002002410c6c21020340024020012802002206450d00200141046a280200450d00200610310b2001410c6a2101200241746a22020d000b0b200041186a280200450d00200028021410310b200041246a2802002203450d0102402000412c6a2802002201450d00200320014104746a210403402003220541106a2103024020052802042201450d0002402005410c6a2802002202450d002002410c6c21020340024020012802002206450d00200141046a280200450d00200610310b2001410c6a2101200241746a22020d000b0b200541086a280200450d00200528020410310b20032004470d000b0b200041286a280200450d01200028022410310c010b0240200041086a280200450d00200041046a28020010310b0240200041146a2802002201450d00200041186a280200450d00200110310b200041246a280200450d00200041206a28020010310f0b0bcd68030c7f017e037f230041a0016b22032400200320013602242002280208220441546a2105200241106a280200220641306c2101024002400240024002400240024002400240024002400240024003402001450d01200141506a21012005412c6a2107200541306a2208210520072d00004104470d000b200641306c2101200441546a210503402001450d02200141506a21012005412c6a2107200541306a2209210520072d0000410c470d000b200641306c2101200441546a210503402001450d03200141506a21012005412c6a2107200541306a2204210520072d00004102470d000b024041002802f8ed444105490d00200341053602442003200341246a36024041002802f4ed44210141002802f0ed44210541002802fced44210720034198016a41980136020020034190016a42ef808080103703002003418c016a41e0ecc30036020020034184016a422537020020034180016a41d9edc300360200200341f8006a4201370300200341e8006a4201370300200341e0006a410a360200200341f4006a200341c0006a360200200341f8eac300360264200341cfedc30036025c20034105360258200541f0eac400200741024622071b200341d8006a200141e4d2c30020071b2802101101000b200341186a200810f302200328021c200328022422014d0d03200328021820014102746a2201450d03200341106a200410f30202402003280214200128020022014d0d00200328021020014104746a22010d050b4125102d2201450d052001411d6a410029009deb43370000200141186a4100290098eb43370000200141106a4100290090eb43370000200141086a4100290088eb4337000020014100290080eb43370000200041086a42a5808080d00437020020002001360204200041013602000c0c0b4113102d2201450d082001410f6a41002800d3ea43360000200141086a41002900ccea43370000200141002900c4ea43370000200041086a4293808080b00237020020002001360204200041013602000c0b0b410f102d2201450d06200141076a41002900deea43370000200141002900d7ea43370000200041086a428f808080f00137020020002001360204200041013602000c0a0b410f102d2201450d04200141076a41002900edea43370000200141002900e6ea43370000200041086a428f808080f00137020020002001360204200041013602000c090b4125102d2201450d022001411d6a410029009deb43370000200141186a4100290098eb43370000200141106a4100290090eb43370000200141086a4100290088eb4337000020014100290080eb43370000200041086a42a5808080d00437020020002001360204200041013602000c080b02400240200941086a280200200328022422054b0d004127102d2201450d012001411f6a41002900c4eb43370000200141186a41002900bdeb43370000200141106a41002900b5eb43370000200141086a41002900adeb43370000200141002900a5eb43370000200041086a42a7808080f00437020020002001360204200041013602000c090b20092802002109200341286a41086a420037030020034280808080c00037032820012d000d2107410021012003410036024820032007410447220a3602442003200a360240200341003a004c0240024002400240024041002802f8ed4441044b0d00200341d8006a41086a200341c0006a41086a29030037030020032003290340370358200341286a410472210b200341d8006a21070c010b2003412f3602542003200341c0006a36025041002802f4ed44210141002802f0ed44210741002802fced44210820034198016a41cb0036020020034190016a42ef808080103703002003418c016a41e0ecc30036020020034184016a422537020020034180016a41d9edc300360200200341f8006a4201370300200341e8006a4201370300200341d8006a41086a2206410a360200200341f4006a200341d0006a360200200341ccebc300360264200341cfedc30036025c20034105360258200741f0eac400200841024622081b200341d8006a200141e4d2c30020081b28021011010020032802342108200328023021012006200341c0006a41086a29030037030020032003290340370358200341286a410472210b200341d8006a210720082001470d010b200141016a22082001490d01200141017422062008200620084b1b220841ffffffff00712008470d01200841047422064100480d010240024020010d002006102d21010c010b200b28020020014104742006102f21010b2001450d02200b200136020020032008360230200328023421080b200b28020020084104746a22012007290200370200200141086a200741086a2902003702002003200328023441016a360234410021072009200541186c6a2201280214450d092009200541186c6a410c6a210c200141146a2108200341d8006a410472210d4100210741002101034002402003280228220520074d0d0002400240024020032802342209417f6a220620094d0d004116102d22010d01411641011033000b200920064b0d0141e49cc40020062009104b000b2001410e6a41002900f1ee43370000200141086a41002900ebee43370000200141002900e3ee43370000200041086a4296808080e00237020020002001360204200041013602000c0b0b20072005200b28020020064104746a2d000c1b21070b0240024002400240024002400240024002400240024002400240024002400240024002402001200828020022054f0d002003200c28020020014104746a220536023c024041002802f8ed444105490d002003412636024420032003413c6a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341c90136029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341e8eac4003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328023c21050b024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020052d000022090eac01022d0000002d01030405060708090a0b0c0d0e0f1010101010101010101010101010111111111111111111121314141414151616161616161616161615161616161616161616161616161616161616161616161717171818181818181818181818181818181717171818181818181818181818181818181717171717171718181818181818171717171717171818181818181819191919191919191919191919191919191919191919191919020b20052d000121052003200328022836024820032005410447220536024020032009410347200571360244200341003a004c024041002802f8ed444105490d002003412f3602542003200341c0006a36025041002802f4ed44210541002802f0ed44210941002802fced442106200341cb0036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341ccebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341d0006a360274200941f0eac40020061b200341d8006a20051101000b200341d8006a41086a2209200341c0006a41086a290300370300200320032903403703580240200328023422052003280230470d00200541016a22062005490d2f2005410174220e2006200e20064b1b220641ffffffff00712006470d2f2006410474220e4100480d2f0240024020050d00200e102d21050c010b200b2802002005410474200e102f21050b2005450d1d200b200536020020032006360230200328023421050b200b28020020054104746a22052003290358370200200541086a20092903003702002003200328023441016a3602340c2c0b41002105024041002802f8ed444105490d00024020032802342209417f6a220620094b0d00200b28020020064104746a410020062009491b21050b20034130360254200320053602402003200341c0006a36025041002802f4ed44210541002802f0ed44210941002802fced442106200341d30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341d4ebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341d0006a360274200941f0eac40020061b200341d8006a20051101000b024020032802342205450d0020032005417f6a2205360234200b28020020054104746a22052d000c4102470d1a0b4117102d2201450d1c2001410f6a41002900ebeb43370000200141086a41002900e4eb43370000200141002900dceb43370000200041086a4297808080f00237020020002001360204200041013602000c350b024041002802f8ed444105490d0041002802f4ed44210541002802f0ed44210941002802fced442106200341c10036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003410036027c2003420437027420034201370368200341f4ebc3003602642003410a360260200341cfedc30036025c20034105360258200941f0eac400200641024622061b200341d8006a200541e4d2c30020061b2802101101000b024020032802342205417f6a220920054f0d00200920054d0d180b4117102d2201450d262001410f6a41002900ebeb43370000200141086a41002900e4eb43370000200141002900dceb43370000200041086a4297808080f00237020020002001360204200041013602000c340b02400240024020032802342209417f6a220620094d0d004116102d2201450d1e2001410e6a41002900f1ee43370000200141086a41002900ebee43370000200141002900e3ee433700004296808080e002210f0c010b2006200541046a2802006b220520064d0d01411b102d2201450d1e200141176a4100280090ef43360000200141106a4100290089ef43370000200141086a4100290081ef43370000200141002900f9ee43370000429b808080b003210f0b2000200136020420004101360200200041086a200f3702000c340b200920054d0d26200341d8006a200341286a200b28020020054104746a28020410c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c340b024041002802f8ed444105490d0041002802f4ed44210541002802f0ed44210941002802fced442106200341c10036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003410036027c2003420437027420034201370368200341f4ebc3003602642003410a360260200341cfedc30036025c20034105360258200941f0eac400200641024622061b200341d8006a200541e4d2c30020061b2802101101000b02400240024020032802342205417f6a220920054f0d00200920054d0d010b4117102d22010d01411741011033000b200b28020020094104746a41013a000c0c2a0b2001410f6a41002900ebeb43370000200141086a41002900e4eb43370000200141002900dceb43370000200041086a4297808080f00237020020002001360204200041013602000c330b02400240024020032802342209417f6a220620094d0d004116102d2201450d1f2001410e6a41002900f1ee43370000200141086a41002900ebee43370000200141002900e3ee433700004296808080e002210f0c010b2006200541046a2802006b220520064d0d01411b102d2201450d1f200141176a4100280090ef43360000200141106a4100290089ef43370000200141086a4100290081ef43370000200141002900f9ee43370000429b808080b003210f0b2000200136020420004101360200200041086a200f3702000c330b200920054d0d26200341d8006a200341286a200b28020020054104746a280204220510c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c330b200341d8006a200341286a410110c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c330b20032005360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c290b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c320b02400240024020032802342210417f6a220e20104d0d004116102d2201450d202001410e6a41002900f1ee43370000200141086a41002900ebee43370000200141002900e3ee433700004296808080e002210f0c010b200e200541046a28020022092802086b2206200e4d0d01411b102d2201450d20200141176a4100280090ef43360000200141106a4100290089ef43370000200141086a4100290081ef43370000200141002900f9ee43370000429b808080b003210f0b2000200136020420004101360200200041086a200f3702000c320b201020064d0d2620092802044102742105200b280200221120064104746a28020421122009280200210902400340024020050d00200341d8006a200341286a201210c0042003280258450d0220002003290358370204200041013602002000410c6a200341e0006a2802003602000c340b0240200e20092802006b2206200e4d0d00411b102d2201450d22200141176a4100280090ef43360000200141106a4100290089ef43370000200141086a4100290081ef43370000200141002900f9ee43370000200041086a429b808080b00337020020002001360204200041013602000c340b201020064d0d222005417c6a2105200941046a2109201120064104746a2802042012460d000b4127102d2201450d222001411f6a41002900b1ec43370000200141186a41002900aaec43370000200141106a41002900a2ec43370000200141086a410029009aec4337000020014100290092ec43370000200041086a42a7808080f00437020020002001360204200041013602000c320b024041002802f8ed444105490d0041002802f4ed44210541002802f0ed44210941002802fced442106200341c10036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003410036027c2003420437027420034201370368200341f4ebc3003602642003410a360260200341cfedc30036025c20034105360258200941f0eac400200641024622061b200341d8006a200541e4d2c30020061b2802101101000b02400240024020032802342205417f6a220920054f0d00200920054d0d010b4117102d22010d01411741011033000b200b28020020094104746a41013a000c0c280b2001410f6a41002900ebeb43370000200141086a41002900e4eb43370000200141002900dceb43370000200041086a4297808080f00237020020002001360204200041013602000c310b200341d8006a200341286a200a10c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c310b024041002802f8ed444105490d0041002802f4ed44210541002802f0ed44210941002802fced442106200341c10036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003410036027c2003420437027420034201370368200341f4ebc3003602642003410a360260200341cfedc30036025c20034105360258200941f0eac400200641024622061b200341d8006a200541e4d2c30020061b2802101101000b02400240024020032802342205417f6a220920054f0d00200920054d0d010b4117102d22010d01411741011033000b200b28020020094104746a41013a000c0c270b2001410f6a41002900ebeb43370000200141086a41002900e4eb43370000200141002900dceb43370000200041086a4297808080f00237020020002001360204200041013602000c300b200341d8006a200541046a280200200210ba04024020032802584101470d00200041013602002000200d2902003702042000410c6a200d41086a2802003602000c300b200341d8006a200341286a200328025c220528020810c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c300b200320052d000d4104472205360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c260b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c2f0b200341086a200410f30202400240200328020c200541046a28020022054d0d002003280208220920054104746a22060d010b410e102d2201450d20200141066a41002900bfec43370000200141002900b9ec43370000200041086a428e808080e00137020020002001360204200041013602000c2f0b200341d8006a200341286a200920054104746a28020810c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c2f0b200320062d000d4104472205360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c250b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c2e0b200341d8006a200341286a410110c0042003280258450d2320002003290358370204200041013602002000410c6a200341e0006a2802003602000c2d0b200341d8006a200341286a410210c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c2d0b41012105200341d8006a200341286a410110c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c2d0b20034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c230b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c2c0b4101210520034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c220b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c2b0b200341d8006a200341286a410110c0042003280258450d2020002003290358370204200041013602002000410c6a200341e0006a2802003602000c2a0b41012105200341d8006a200341286a410110c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c2a0b20034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c200b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c290b4101210520034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c1f0b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c280b200341d8006a200341286a410110c0042003280258450d1d20002003290358370204200041013602002000410c6a200341e0006a2802003602000c270b41012105200341d8006a200341286a410110c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c270b20034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c1d0b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c260b200341d8006a200341286a410210c0042003280258450d1b20002003290358370204200041013602002000410c6a200341e0006a2802003602000c250b4101210520034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c1b0b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c240b41012105200341d8006a200341286a410110c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c240b20034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c1a0b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c230b4101210520034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c190b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c220b41012105200341d8006a200341286a410110c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c220b20034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c180b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c210b200341d8006a200341286a410210c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c210b4101210520034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c170b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c200b41012105200341d8006a200341286a410110c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c200b20034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c160b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c1f0b200341d8006a200341286a410210c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c1f0b4101210520034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c150b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c1e0b41012105200341d8006a200341286a410110c00402402003280258450d0020002003290358370204200041013602002000410c6a200341e0006a2802003602000c1e0b20034101360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a2005110100200328025021050b024002402003280228220920056a220520094f0d00410e102d22010d01410e41011033000b200320053602280c140b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c1d0b200b28020020094104746a41013a000c0c120b20052802002109200320052802082205360240024041002802f8ed444105490d00200341053602542003200341c0006a36025041002802f4ed44210541002802f0ed44210641002802fced44210e200341db0036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341c8ecc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200e410246220e1b28021021052003200341d0006a360274200641f0eac400200e1b200341d8006a2005110100200328024021050b2003200536022820032009360250024041002802f8ed444105490d00200341053602442003200341d0006a36024041002802f4ed44210541002802f0ed44210941002802fced442106200341e30036029801200342ef8080801037039001200341e0ecc30036028c012003422537028401200341d9edc300360280012003420137037820034201370368200341fcebc3003602642003410a360260200341cfedc30036025c20034105360258200541e4d2c300200641024622061b28021021052003200341c0006a360274200941f0eac40020061b200341d8006a200511010020032802282105200328025021090b02400240200520096a220920054f0d00410e102d22010d01410e41011033000b200320093602280c120b200141066a410029008aec4337000020014100290084ec43370000200041086a428e808080e00137020020002001360204200041013602000c1b0b41d0ecc30020012005104b000b200e41041033000b411741011033000b411641011033000b411b41011033000b411641011033000b411b41011033000b411641011033000b411b41011033000b411b41011033000b41e49cc40020062010104b000b412741011033000b410e41011033000b411741011033000b41e49cc40020052009104b000b41e49cc40020052009104b000b41e49cc40020062010104b000b200141016a22012008280200490d000c0a0b0b1034000b200641041033000b412741011033000b412541011033000b412541011033000b410f41011033000b410f41011033000b411341011033000b2003280230450d01200b28020010310c010b20004100360200200020073602042003280230450d00200b28020010310b200341a0016a24000bd00201027f230041106b2202240020002802002802002100200128021841ebe9c30041052001411c6a28020028020c1103002103200241003a0005200220033a00042002200136020020022000410c6a36020c200241f0e9c300410e2002410c6a4180eac30010930121012002200036020c20014190eac30041092002410c6a419ceac30010930121012002200041046a36020c200141aceac300410c2002410c6a419ceac30010930121012002200041086a36020c200141b8eac300410c2002410c6a419ceac3001093011a20022d00042100024020022d0005450d00200041ff0171210141012100024020010d0020022802002200411c6a28020028020c210120002802182103024020002d00004104710d00200341ecc8c3004102200111030021000c010b200341eec8c3004101200111030021000b200220003a00040b200241106a2400200041ff01714100470bc60201027f230041106b22022400200128021841ebe9c30041052001411c6a28020028020c1103002103200241003a0005200220033a00042002200136020020022000410c6a36020c200241f0e9c300410e2002410c6a4180eac30010930121012002200036020c20014190eac30041092002410c6a419ceac30010930121012002200041046a36020c200141aceac300410c2002410c6a419ceac30010930121012002200041086a36020c200141b8eac300410c2002410c6a419ceac3001093011a20022d00042100024020022d0005450d00200041ff0171210141012100024020010d0020022802002200411c6a28020028020c210120002802182103024020002d00004104710d00200341ecc8c3004102200111030021000c010b200341eec8c3004101200111030021000b200220003a00040b200241106a2400200041ff01714100470b0c002000280200200110a4040b9e0501037f230041e0006b220324002003200236020c024041002802f8ed444105490d002003410536021420032003410c6a36021041002802f4ed44210241002802f0ed44210441002802fced442105200341d8006a41ef00360200200341d0006a42ef80808010370300200341cc006a41e0ecc300360200200341c4006a4225370200200341c0006a41d9edc300360200200341386a4201370300200341286a4201370300200341206a410a360200200341346a200341106a3602002003418ceec300360224200341cfedc30036021c20034105360218200441f0eac400200541024622051b200341186a200241e4d2c30020051b280210110100200328020c21020b02400240024002402002450d0002402001410c6a2802002204417f6a220520044d0d004116102d22020d02411641011033000b200420054b0d0241e49cc40020052004104b000b200041003602000c020b20004296808080e002370204200020023602002002410e6a41002900f1ee43370000200241086a41002900ebee43370000200241002900e3ee433700000c010b024002400240024020012802002204200128020420054104746a2205280208460d00200420026b220220044d0d02410f102d22020d01410f41011033000b024020052d000c0d004125102d2202450d03200042a5808080d004370204200020023602002002411d6a41002900b1ee43370000200241186a41002900acee43370000200241106a41002900a4ee43370000200241086a410029009cee4337000020024100290094ee433700000c040b200041003602000c030b2000428f808080f00137020420002002360200200241076a41002900c0ee43370000200241002900b9ee433700000c020b20004100360200200120023602000c010b412541011033000b200341e0006a24000bf50202057f017e02400240024020014108490d00200141017641feffffff07712202417f6a220320014f0d022001410d74200173220441117620047322044105742004732205417f2001417f6a677622067122044100200120042001491b6b220420014f0d01200020034103746a220329020021072003200020044103746a220429020037020020042007370200024020022001490d00200221030c030b2005410d7420057322044111762004732204410574200473220520067122044100200120042001491b6b220420014f0d01200020024103746a220329020021072003200020044103746a2204290200370200200420073702002002410172220320014f0d022005410d742005732204411176200473220441057420047320067122044100200120042001491b6b220420014f0d01200020034103746a220129020021072001200020044103746a2200290200370200200020073702000b0f0b4188b1c40020042001104b000b41f8b0c40020032001104b000bd50302047f017e024020014101762202450d0003402002417f6a2202210302400240024003402003410174220441017221050240200441026a220420014f0d00200520014f0d0220042005200020054103746a280200200020044103746a280200491b21050b200520014f0d03200320014f0d02200020034103746a2203280200200020054103746a22042802004f0d03200329020021062003200429020037020020042006370200200521030c000b0b41e8b2c40020052001104b000b41f8b2c40020032001104b000b20020d000b0b0240024020014102490d002001210403402004417f6a220420014f0d02200029020021062000200020044103746a2205290200370200200520063702004100210302400240024003402003410174220241017221050240200241026a220220044f0d00200520044f0d0220022005200020054103746a280200200020024103746a280200491b21050b200520044f0d03200320044f0d02200020034103746a2203280200200020054103746a22022802004f0d03200329020021062003200229020037020020022006370200200521030c000b0b41e8b2c40020052004104b000b41f8b2c40020032004104b000b200441014b0d000b0b0f0b4188b1c40020042001104b000bea04050a7f017e017f017e027f200041686a21022001417f6a2103200041086a2104410021052001413249210641012107024003400240024020072001490d00410021080c010b410121082000200741037422096a220a280200220b200a41786a280200490d00200420096a210803404101210a20032007460d03200741016a21072008280200220a200b4f2109200841086a2108200a210b20090d000b200720014921080b2007200146210a20060d0120072001460d010240024002400240024002402007417f6a220b20014f0d002008450d012000200b4103746a220b290200210c200b20002007410374220d6a2208290200220e3702002008200c37020020074102490d0520002007417e6a220a4103746a220f280200200ea722094d0d05200b200f290200370200200a450d0420002007417d6a220a4103746a28020020094d0d042002200d6a210b0340200b41086a200b290200370200200a450d03200a417f6a210a200b41786a220b28020020094b0d000b200a41016a210b0c030b41f8b0c400200b2001104b000b4188b1c40020072001104b000b4100210b0b2000200b4103746a210f0b200f200e3702000b200541016a21050240200120076b220a4102490d00200828020820082802004f0d002008290200210c20082008290208370200200841086a210f0240200a4103490d002008280210200ca722104f0d00200841106a21094103210b4102210d0340200d41037420086a220f41786a2009290200370200200b200a4f0d01200b4103742109200b210d200b41016a210b200820096a22092802002010490d000b0b200f200c3702000b20054105470d000b4100210a0b200a0b130020004102360204200041acc2c4003602000b1300200041033602042000419099c1003602000b130020004101360204200041d8cfc0003602000b130020004101360204200041e8f1c2003602000b130020004103360204200041c0bac4003602000b130020004103360204200041b4cec2003602000b130020004101360204200041ccbdc4003602000b130020004101360204200041acc0c4003602000b1300200041063602042000419cb1c1003602000b13002000410636020420004184dac0003602000b13002000410336020420004180c0c0003602000b13002000410136020420004184c8c4003602000b130020004103360204200041e485c4003602000b1300200041033602042000418082c0003602000b9881010a017f017e017f017e077f027e017f047e027f077e23004180166b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e080001020304050607000b200341fc106a4101360200200342013702ec10200341d494c4003602e8102003410236028c05200341cc94c40036028805200320034188056a3602f810200341e8106a41dc94c40010b301000b200141e8046a2903002104200341086a200141086a41e00410ab051a200241086a220529000021062002410c6a28000021072005280000210841042105200241046a280000210920022d0000210a200341a8106a41026a220b200241036a2d00003a0000200341e8106a41086a220c200241186a290000370300200341e8106a41106a220d200241206a2d00003a0000200320022f00013b01a8102003200241106a2900003703e810410121020240200a4101470d00200341c8106a41026a200b2d00003a000020034188056a41086a200c29030037030020034188056a41106a200d2d00003a0000200320032f01a8103b01c810200320032903e8103703880541002102200921050b20034188106a41026a200341c8106a41026a2d00003a0000200341e80a6a41086a20034188056a41086a290300370300200341e80a6a41106a20034188056a41106a2d00003a0000200320032f01c8103b01881020032003290388053703e80a02402002450d0041cac4c400210a410f210902400240024002400240024020050e070001020304052e000b200721092008210a0c2d0b41bcc4c400210a410e21090c2c0b41b0c4c400210a410c21090c2b0b41a7c4c400210a410921090c2a0b4194c4c400210a411321090c290b4183c4c400210a411121090c280b200341ff046a200341e80a6a41086a29030037000020034187056a200341f80a6a2d00003a0000200320032f0188103b01e804200320063700ef04200320053600eb04200320032903e80a3700f704200320034188106a41026a2d00003a00ea0420034188106a41086a220541cda7c100ad42808080809003841001220241086a290000370300200320022900003703881020021031200341900a6a41086a200529030037030020032003290388103703900a200341e8106a200341900a6aad220e428080808080028422061002104141022102024020032802e8102205450d00024002400240200341e8106a41086a280200450d0020052d0000220a41014b0d0020032802ec10210941002102200a0e020201020b41e9bcc0004133200341b00a6a419cbdc0001038000b410121020b2009450d00200510310b0240024020024102460d002002410171450d010b20034188106a41086a220541ab95c400ad4280808080c002841001220241086a290000370300200320022900003703881020021031200341900a6a41086a200529030037030020032003290388103703900a20034188056a200610021041024002402003280288052202450d00200328028c052105200320034188056a41086a2802003602ec0a200320023602e80a200341e8106a200341e80a6a10890120032802e810220b450d0920032902ec10210f2005450d01200210310c010b4101210b4200210f0b200f422088a74105742105200b210202400340024020050d00410021090c020b41012109200341e8046a2002460d01200541606a21052002200341e8046a412010ad05210a200241206a2102200a0d000b0b0240200fa7450d00200b10310b20090d00418495c400210a412721090c280b200341f0096a200341086a109103200341e8106a200341086a108e03200341f0096a200341e8106a412010ad050d0d2003290310210f4111102d2202450d07200241002900a4a741370000200241106a41002d00b4a7413a0000200241086a41002900aca7413700002003429180808090023702ec10200320023602e8102003200341e8106a36028805200341f0096a20034188056a103e200341e80a6a41186a220520033502f01042208620033502e810841000220241186a290000370300200341e80a6a41106a220a200241106a290000370300200341e80a6a41086a2209200241086a290000370300200320022900003703e80a20021031200341900a6a41186a2005290300370300200341900a6a41106a200a290300370300200341900a6a41086a2009290300370300200320032903e80a3703900a024020032802ec10450d0020032802e81010310b200341003602f010200342013703e810200341086a200341e8106a10bd0220032802ec102102200e428080808080048420033502f01042208620032802e8102205ad84100302402002450d00200510310b200341e8106a41106a4200370300200341e8106a41186a420037030020034188116a420037030020034198116a200341f0096a41086a290300370300200341a0116a200341f0096a41106a290300370300200341a8116a200341f0096a41186a2903003703002003200f3703e810200320032903f00937039011200320043703f0104118102d2202450d08200241002900b5a741370000200241106a41002900c5a741370000200241086a41002900bda74137000020034298808080800337028c052003200236028805200320034188056a3602e80a200341f0096a200341e80a6a103e200341e80a6a41186a2205200335029005422086200335028805841000220241186a290000370300200341e80a6a41106a220a200241106a290000370300200341e80a6a41086a2209200241086a290000370300200320022900003703e80a20021031200341900a6a41186a2005290300370300200341900a6a41106a200a290300370300200341900a6a41086a2009290300370300200320032903e80a3703900a0240200328028c05450d0020032802880510310b2003412036028c052003200341900a6a36028805200341e8106a20034188056a10db0420034188106a41086a2202418da7c100ad4280808080f00284220f1001220541086a290000370300200320052900003703881020051031200341900a6a41086a220a200229030037030020032003290388103703900a200341e8106a200341900a6a109c0120034181116a200341f0096a41186a290300370000200341f9106a200341f0096a41106a290300370000200341f1106a200341f0096a41086a290300370000200320032903f0093700e91041012110200341013a00e8102002200f1001220541086a290000370300200320052900003703881020051031200a200229030037030020032003290388103703900a2003411036028c052003200341900a6a36028805200341e8106a41017220034188056a10ae02200341c80a6a41186a200341a8016a290300370300200341c80a6a41106a200341a0016a290300370300200341c80a6a41086a20034198016a29030037030020032003290390013703c80a2003290308210f2003290310210e200341b00a6a41106a200341c0016a280200360200200341b00a6a41086a200341b8016a290300370300200320032903b0013703b00a200341c80f6a41186a200341dc016a290200370300200341c80f6a41106a200341d4016a290200370300200341c80f6a41086a200341cc016a290200370300200320032902c4013703c80f200341e80f6a41186a200341fc016a290200370300200341e80f6a41106a200341f4016a290200370300200341e80f6a41086a200341ec016a290200370300200320032902e4013703e80f20034180016a2802002207417f4c0d0902402007450d00200328027821022007102d2210450d0b20102002200710ab051a0b20034188106a41186a2003419c026a29020037030020034188106a41106a20034194026a29020037030020034188106a41086a2003418c026a290200370300200320032902840237038810200341a8106a41186a200341bc026a290200370300200341a8106a41106a200341b4026a290200370300200341a8106a41086a200341ac026a290200370300200320032902a4023703a81020034188056a200341c4026a41800210ab051a200341c8106a41186a200341306a290300370300200341c8106a41106a200341286a290300370300200341c8106a41086a200341086a41186a290300370300200320032903183703c810200341e80a6a41186a200341d0006a290300370300200341e80a6a41106a200341c8006a290300370300200341e80a6a41086a200341c0006a290300370300200320032903383703e80a2003418c016a2802002208ad420c7e2211422088a70d092011a72202417f4c0d09200341f0006a2903002111200341e8006a2903002112200341e0006a2903002113200328028401210a200329035821140240024020020d00410421150c010b2002102d2215450d0c0b410021164100210902402008450d00200a2008410c6c6a210d41002109201521050340200a41086a2802002202417f4c0d0b200a280200210b0240024020020d004101210c0c010b2002102d220c450d0f0b200c200b200210ab05210b200541086a2002360200200541046a20023602002005200b3602002005410c6a2105200941016a2109200a410c6a220a200d470d000b0b024020032d00c4044101470d00200341a80a6a200341dd046a290000370300200341a00a6a200341d5046a290000370300200341980a6a200341cd046a2900003703002003200341c5046a2900003703900a410121160b20034188126a200341c80a6a41186a29030037030020034180126a200341c80a6a41106a290300370300200341f8116a200341c80a6a41086a29030037030020034198126a200341b00a6a41086a290300370300200341a0126a200341b00a6a41106a280200360200200341ac126a200341c80f6a41086a290300370200200341b4126a200341c80f6a41106a290300370200200341bc126a200341c80f6a41186a290300370200200320032903c80a3703f0112003200e3703f0102003200f3703e810200320032903b00a37039012200320032903c80f3702a412200341dc116a2007360200200341e0116a2007360200200341dc126a200341e80f6a41186a290300370200200341d4126a200341e80f6a41106a290300370200200341cc126a200341e80f6a41086a290300370200200341ec126a20034188106a41086a2202290300370200200341f4126a20034188106a41106a290300370200200341fc126a20034188106a41186a290300370200200320103602d811200320032903e80f3702c41220032003290388103702e4122003419c136a200341a8106a41186a29030037020020034194136a200341a8106a41106a2903003702002003418c136a200341a8106a41086a290300370200200320032903a81037028413200341a4136a20034188056a41800210ab051a200341ec116a2009360200200341e8116a2008360200200341d0116a2011370300200341c8116a2012370300200341c0116a201337030020034190116a200341c8106a41186a29030037030020034188116a200341c8106a41106a290300370300200341e8106a41186a200341c8106a41086a290300370300200341a0116a200341e80a6a41086a290300370300200341a8116a200341e80a6a41106a290300370300200341b0116a200341e80a6a41186a290300370300200320163a00a415200320153602e411200320143703b811200320032903c8103703f810200320032903e80a37039811200341bd156a200341900a6a41186a290300370000200341b5156a200341900a6a41106a290300370000200341ad156a200341900a6a41086a220a290300370000200341a5156a20032903900a370000200241f9a6c100ad4280808080c002841001220541086a290000370300200320052900003703881020051031200a200229030037030020032003290388103703900a20034100360290052003420137038805200341e8106a20034188056a10bd02200328028c05210220062003350290054220862003280288052205ad84100302402002450d00200510310b024020032802dc11450d0020032802d81110310b024020032802ec112205450d0020032802e41121022005410c6c210503400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b024020032802e811450d0020032802e41110310b2003418f056a200341086a41e00410ab051a4100210a200341e8106a41086a41003a0000200341f1106a20032903e804370000200341f9106a200341e8046a41086a29030037000020034181116a200341f8046a29030037000020034189116a20034180056a2903003700002003410c3a00e81020034191116a20034188056a41e70410ab051a200341f8156a200437030041014100200341e8106a10450c280b200341086a200141086a41e00410ab051a200241086a220529000021062002410c6a28000021072005280000210841042105200241046a280000210920022d0000210a200341a8106a41026a220b200241036a2d00003a0000200341e8106a41086a220c200241186a290000370300200341e8106a41106a220d200241206a2d00003a0000200320022f00013b01a8102003200241106a2900003703e810410121020240200a4101470d00200341c8106a41026a200b2d00003a000020034188056a41086a200c29030037030020034188056a41106a200d2d00003a0000200320032f01a8103b01c810200320032903e8103703880541002102200921050b20034188106a41026a200341c8106a41026a2d00003a0000200341e80a6a41086a20034188056a41086a290300370300200341e80a6a41106a20034188056a41106a2d00003a0000200320032f01c8103b01881020032003290388053703e80a02402002450d0041cac4c400210a410f210902400240024002400240024020050e070001020304052a000b200721092008210a0c290b41bcc4c400210a410e21090c280b41b0c4c400210a410c21090c270b41a7c4c400210a410921090c260b4194c4c400210a411321090c250b4183c4c400210a411121090c240b200341df0a6a200341e80a6a41086a290300370000200341e70a6a200341f80a6a2d00003a0000200320032f0188103b01c80a200320063700cf0a200320053600cb0a200320032903e80a3700d70a200320034188106a41026a2d00003a00ca0a20034188106a41086a220541cda7c100ad42808080809003841001220241086a290000370300200320022900003703881020021031200341900a6a41086a200529030037030020032003290388103703900a200341e8106a200341900a6aad220f428080808080028422061002104141022102024020032802e8102205450d00024002400240200341e8106a41086a280200450d0020052d0000220a41014b0d0020032802ec10210941002102200a0e020201020b41e9bcc0004133200341b00a6a419cbdc0001038000b410121020b2009450d00200510310b0240024020024102460d002002410171450d010b20034188106a41086a220541ab95c400ad4280808080c002841001220241086a290000370300200320022900003703881020021031200341900a6a41086a200529030037030020032003290388103703900a20034188056a200610021041024002402003280288052202450d00200328028c052105200320034188056a41086a2802003602ec0a200320023602e80a200341e8106a200341e80a6a10890120032802e810220b450d1020032902ec1021042005450d01200210310c010b4101210b420021040b2004422088a74105742105200b210202400340024020050d00410021090c020b41012109200341c80a6a2002460d01200541606a21052002200341c80a6a412010ad05210a200241206a2102200a0d000b0b02402004a7450d00200b10310b20090d00418495c400210a412721090c240b20034188056a200341086a109103200341e8106a200341086a108e0341ec94c400210a4118210920034188056a200341e8106a412010ad050d232003290310210420034188106a41086a220541f9a6c100ad4280808080c002841001220241086a290000370300200320022900003703881020021031200341900a6a41086a200529030037030020032003290388103703900a20034188056a2006100210412003280288052202450d0f200328028c05210b200320034188056a41086a2802003602ec0a200320023602e80a200341e8106a200341e80a6a10bf0220032d00a4154102460d0e20032802ec11210520032802e811210c20032802e411210a20032802dc11210d20032802d811210720032903f01021060240200b450d00200210310b0240200d450d00200710310b02402005450d002005410c6c2105200a210203400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b0240200c450d00200a10310b41bf95c400210a20042006540d23200341e8106a20034190016a220b10dc04024020032d00a4154102470d0041f195c400210a411d21090c240b20032802e8102102200341e80a6a200341e8106a41047241dc0410ab051a200320023602880520034188056a410472200341e80a6a41dc0410ab051a20032903900542017c2004510d20418e96c400210a411921090c210b200341e80a6a41306a200141386a290300370300200341e80a6a41286a200141306a290300370300200341e80a6a41206a200141286a290300370300200341e80a6a41186a200141206a290300370300200341e80a6a41106a200141186a290300370300200341e80a6a41086a200141106a2903003703002003200141086a2903003703e80a200241086a290000210641042105200241046a280000210920022d0000210a200341a8106a41026a220b200241036a2d00003a0000200341e8106a41086a220c200241186a290000370300200341e8106a41106a220d200241206a2d00003a0000200320022f00013b01a8102003200241106a2900003703e810410121020240200a4101470d00200341086a41026a200b2d00003a000020034188056a41086a200c29030037030020034188056a41106a200d2d00003a0000200320032f01a8103b0108200320032903e8103703880541002102200921050b200341a70a6a20034188056a41086a290300370000200341af0a6a20034188056a41106a2d00003a0000200320032f01083b01900a200320053600930a200320032903880537009f0a2003200341086a41026a2d00003a00920a200320063700970a02402002450d0041cac4c400210a410f210902400240024002400240024020050e0700010203040524000b2006422088a721092006a7210a0c230b41bcc4c400210a410e21090c220b41b0c4c400210a410c21090c210b41a7c4c400210a410921090c200b4194c4c400210a411321090c1f0b4183c4c400210a411121090c1e0b200341c8106a41186a200341900a6a41186a290300370300200341c8106a41106a200341900a6a41106a290300370300200341c8106a41086a200341900a6a41086a2205290300370300200320032903900a3703c81020034188106a41086a220a41cda7c100ad42808080809003841001220241086a2900003703002003200229000037038810200210312005200a29030037030020032003290388103703900a200341e8106a200341900a6aad428080808080028422061002104141022102024020032802e8102205450d00024002400240200341e8106a41086a280200450d0020052d0000220a41014b0d0020032802ec10210941002102200a0e020201020b41e9bcc0004133200341b00a6a419cbdc0001038000b410121020b2009450d00200510310b0240024020024102460d002002410171450d010b20034188106a41086a220541ab95c400ad4280808080c002841001220241086a290000370300200320022900003703881020021031200341900a6a41086a200529030037030020032003290388103703900a20034188056a200610021041024002402003280288052202450d00200328028c052105200320034188056a41086a28020036020c20032002360208200341e8106a200341086a10890120032802e810220b450d1220032902ec1021062005450d01200210310c010b420021064101210b0b2006422088a74105742105200b210202400340024020050d00410021090c020b41012109200341c8106a2002460d01200541606a21052002200341c8106a412010ad05210a200241206a2102200a0d000b0b02402006a7450d00200b10310b20090d00418495c400210a412721090c1e0b200341e8106a200341e80a6a1049024020032802e8104101470d0020032802f010210920032802ec10210a0c1e0b200341086a200341e8106a41086a220241d00210ab051a2003418f056a200341086a41d00210ab051a200241023a0000200341f1106a20032903c810370000200341f9106a200341c8106a41086a29030037000020034181116a200341c8106a41106a29030037000020034189116a200341c8106a41186a2903003700002003410c3a00e81020034191116a20034188056a41d70210ab051a20034198146a200341980b6a29030037030020034190146a200341900b6a29030037030020034188146a200341880b6a29030037030020034180146a200341e80a6a41186a290300370300200341f8136a200341e80a6a41106a290300370300200341f0136a200341e80a6a41086a290300370300200341e8136a20032903e80a3703004100210a41014100200341e8106a10450c1e0b2001418c016a280200210520014188016a280200210720014184016a280200210c200141fc006a280200210a200141f8006a2802002109024020022d00004101460d000240200a450d00200910310b02402005450d002005410c6c2105200c210203400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b4194c4c400210a411321094100210d4101210b2007450d1c200c10310c1c0b0240200a450d00200910310b02402005450d002005410c6c2105200c210203400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b4101210b2007450d1a200c10310c1a0b20034180116a200141196a29000037030041112109200341f8106a200141116a290000370300200341e8106a41086a200141096a290000370300200320012900013703e8104183c4c400210a20022d00000d1620034188106a41086a220541ab95c400ad4280808080c002841001220241086a290000370300200320022900003703881020021031200341900a6a41086a200529030037030020032003290388103703900a200341086a200341900a6aad42808080808002842204100210410240024020032802082202450d00200328020c21052003200341106a2802003602ec0a200320023602e80a20034188056a200341e80a6a108901200328028805220c450d10200329028c0521062005450d01200210310c010b420021064101210c0b2006422088a74105742105200c210202400340024020050d004100210b0c020b4101210b200341e8106a2002460d01200541606a21052002200341e8106a412010ad05210a200241206a2102200a0d000b0b02402006a7450d00200c10310b4100210a200b0d16200341a8106a41186a220b200341e8106a41186a290300370300200341a8106a41106a220c200341e8106a41106a290300370300200341a8106a41086a220d200341e8106a41086a290300370300200320032903e8103703a81020034188106a41086a220541ab95c400ad4280808080c002841001220241086a290000370300200320022900003703881020021031200341900a6a41086a2207200529030037030020032003290388103703900a200341086a20041002104120032802082202450d10200328020c21052003200341086a41086a2802003602ec0a200320023602e80a20034188056a200341e80a6a108901200328028805220b450d0f200329028c05210602402005450d00200210310b200341900a6a41186a200341a8106a41186a290300370300200341900a6a41106a200341a8106a41106a290300370300200341900a6a41086a200341a8106a41086a290300370300200320032903a8103703900a200341900a6a21022006422088a722052006a7470d150c140b200341a0056a200141196a2900003703004111210920034198056a200141116a29000037030020034188056a41086a200141096a29000037030020032001290001370388054183c4c400210a20022d00000d1520034188106a41086a220541ab95c400ad4280808080c002841001220241086a290000370300200320022900003703881020021031200341900a6a41086a200529030037030020032003290388103703900a200341086a200341900a6aad42808080808002842211100210410240024020032802082202450d00200328020c21052003200341106a2802003602ec0a200320023602e80a200341e8106a200341e80a6a10890120032802e810220c450d1220032902ec10210e2005450d01200210310c010b4200210e4101210c0b0240200e422088a72202450d002002410574210b200c21024100210502400340200241086a2900002106200241106a29000021042002290000210f200341e8106a41186a200241186a290000370300200341e8106a41106a2004370300200341e8106a41086a20063703002003200f3703e8102005200341e8106a20034188056a412010ad05220a4100476a2105200a450d01200241206a2102200b41606a220b0d000c020b0b20034188106a41086a220a41ab95c400ad4280808080c002841001220241086a290000370300200320022900003703881020021031200341900a6a41086a200a29030037030020032003290388103703900a200341086a2011100210410240024020032802082202450d00200328020c210b2003200341086a41086a2802003602ec0a200320023602e80a200341e8106a200341e80a6a10890120032802e810220a450d1420032902ec102106200b450d01200210310c010b420021064101210a0b20052006422088a722024f0d13200a20054105746a220b200b41206a2005417f7320026a41057410ac051a20034188106a41086a220b41ab95c400ad4280808080c002841001220541086a290000370300200320052900003703881020051031200341900a6a41086a200b29030037030020032003290388103703900a0240200a0d00201110090c010b200341003602f010200342013703e8102002417f6a2205200341e8106a106f02402005450d00200241057441606a2105200a210203402002200341e8106a1046200241206a2102200541606a22050d000b0b20032802ec102102201120033502f01042208620032802e8102205ad84100302402002450d00200510310b2006a7450d00200a10310b4100210a200ea7450d15200c10310c150b024020022d0000450d004183c4c400210a411121090c150b20034188106a41086a220241cda7c100ad428080808090038422061001220541086a290000370300200320052900003703881020051031200341900a6a41086a2209200229030037030020032003290388103703900a200341e8106a200341900a6aad428080808080028422041002104141022105024020032802e810220a450d00024002400240200341e8106a41086a280200450d00200a2d0000220b41014b0d0020032802ec10210c41002105200b0e020201020b41e9bcc0004133200341b00a6a419cbdc0001038000b410121050b200c450d00200a10310b200220061001220a41086a2900003703002003200a29000037038810200a10312009200229030037030020032003290388103703900a4101210b20032005410171452005410247713a00e8102004200341e8106aad4280808080108410034100210a4101210c4101210d410121050c230b41e9bcc0004133200341b00a6a419cbdc0001038000b411141011033000b411841011033000b1032000b200741011033000b200241041033000b200241011033000b41ec94c400210a411821090c190b41e9bcc0004133200341b00a6a419cbdc0001038000b41e9bcc0004133200341b00a6a419cbdc0001038000b41d795c400210a411a21090c130b41e9bcc0004133200341b00a6a419cbdc0001038000b41e9bcc0004133200341b00a6a419cbdc0001038000b41e9bcc0004133200341b00a6a419cbdc0001038000b200341900a6a41186a200b290300370300200341900a6a41106a200c2903003703002007200d290300370300200320032903a8103703900a4101210b42002106200341900a6a21020c030b41e9bcc0004133200341b00a6a419cbdc0001038000b41e9bcc0004133200341b00a6a419cbdc0001038000b41daaec000411d419cdec40010a401000b2006a72006422088220fa72205470d00200541016a220c2005490d03200fa72207410174220d200c200c200d491b220c41ffffff3f71200c470d03200c410574220d4100480d030240024020050d00200d102d210b0c010b200b2007410574200d102f210b0b200b450d02200cad21060b200b20054105746a220c2002290000370000200c41186a200241186a290000370000200c41106a200241106a290000370000200c41086a200241086a29000037000020034188106a41086a220c41ab95c400ad4280808080c002841001220241086a290000370300200320022900003703881020021031200341900a6a41086a200c29030037030020032003290388103703900a0240200b0d00200410090c010b20034100360290052003420137038805200541016a220220034188056a106f024020022005490d00200541057441206a2105200b21020340200220034188056a1046200241206a2102200541606a22050d000b0b200328028c05210220042003350290054220862003280288052205ad84100302402002450d00200510310b2006a7450d00200b10310b4101210b4101210c0c0b0b200d41011033000b1034000b4100210d4101210c410121054100210a0c0b0b4101210c410121050c0a0b200341f40a6a280200450d0020032802f00a10310b4100210c4101210b0c050b200341f8106a420037030020034180116a4200370300200342003703f0102003428080083703e810200342003702ec0a20034198bfc0003602e80a200341e80a6a42a0e1e70042c08db70110d603200341e80a6a42f0968202428089fa0010d603200341c8106a41086a220220032802f00a36020020034190116a420037030020034198116a4200370300200341a0116a4200370300200341d8116a4200370300200341e0116a4200370300200341e8116a4200370300200320032903e80a3703c81020034280103703881120034280103703d011200342d9b3013703c811200342003703c0112003420d3703b811200342093703b0112003420a3703a811200342a0e1e7003703f8112003427f3703f01120034188126a427f3703002003427f37038012200341b0126a2002280200360200200320032903c8103703a8122003427f3703a0122003421e370398122003427f37039012200341e80a6a200341e8106a200341086a10e20341f798c200210a411721090240024002400240024020032802e80a0e050400010203040b41dd98c200210a411a21090c030b41c998c200210a411421090c020b200341e80a6a41086a280200210920032802ec0a210a0c010b200341e80a6a200341e8106a2003290308200329031020034188056a10e3034120210941a796c400210a200341e80a6a200341d8006a412010ad050d0020032802a812200341ac126a280200200341b0126a28020010dd040240200341fc056a280200450d0020032802f80510310b02402003418c066a2802002205450d0020032802840621022005410c6c210503400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b20034188066a280200450d0220032802840610310c020b20032802a812200341ac126a280200200341b0126a28020010dd040b0240200341fc056a280200450d0020032802f80510310b02402003418c066a2802002205450d0020032802840621022005410c6c210503400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b024020034188066a280200450d0020032802840610310b200a0d010b200341c80f6a200341086a10910320032903102112024002400240024002400240024002404118102d2202450d0041002105200241002900b5a741370000200241106a41002900c5a741370000200241086a41002900bda7413700002003429880808080033702ec10200320023602e8102003200341e8106a36028805200b20034188056a103e200341e80a6a41186a220a20033502f01042208620033502e810841000220241186a290000370300200341e80a6a41106a2209200241106a290000370300200341e80a6a41086a220b200241086a290000370300200320022900003703e80a20021031200341900a6a41186a200a290300370300200341900a6a41106a2009290300370300200341900a6a41086a200b290300370300200320032903e80a3703900a024020032802ec10450d0020032802e81010310b200341c8106a200f42808080808004842211100210410240024020032802c81022020d000c010b20032802cc1021052003200341c8106a41086a2802003602ec0a200320023602e80a200341e8106a200341e80a6a10da0420032903e8104201510d0220034188056a41086a200341a0116a29030037030020034188056a41106a220a200341a8116a29030037030020034188056a41186a2209200341b0116a290300370300200320034198116a2903003703880520034190116a290300210e20034188116a290300210f200341e8106a41186a2903002104200341e8106a41106a290300210602402005450d00200210310b200341e80a6a41186a2009290300370300200341e80a6a41106a200a290300370300200341e80a6a41086a20034188056a41086a29030037030020032003290388053703e80a410121050b024020050d0041e796c400210a412421090c090b20034188106a41086a2205418da7c100ad4280808080f002841001220241086a290000370300200320022900003703881020021031200341900a6a41086a200529030037030020032003290388103703900a200341e8106a200341900a6a109c0120032d00e8102102200341e80a6a41186a220520034181116a290000370300200341e80a6a41106a220a200341f9106a290000370300200341e80a6a41086a2209200341f1106a290000370300200320032900e9103703e80a0240024020024101460d00200341e80f6a41186a4200370300200341e80f6a41106a4200370300200341e80f6a41086a4200370300200342003703e80f0c010b200341e80f6a41186a2005290300370300200341e80f6a41106a200a290300370300200341e80f6a41086a2009290300370300200320032903e80a3703e80f0b200341e8106a41186a200341e80f6a41186a290300370300200341e8106a41106a200341e80f6a41106a290300370300200341e8106a41086a200341e80f6a41086a290300370300200320032903e80f3703e8104118102d2202450d02200241002900b5a741370000200241106a41002900c5a741370000200241086a41002900bda7413700002003429880808080033702f409200320023602f0092003200341f0096a3602e80a200341e8106a200341e80a6a103e200341e80a6a41186a220520033502f80942208620033502f009841000220241186a290000370300200341e80a6a41106a220a200241106a290000370300200341e80a6a41086a2209200241086a290000370300200320022900003703e80a20021031200341900a6a41186a2005290300370300200341900a6a41106a200a290300370300200341900a6a41086a2009290300370300200320032903e80a3703900a024020032802f409450d0020032802f00910310b200341f0096a201110021041024020032802f0092202450d0020032802f40921052003200341f0096a41086a2802003602ec04200320023602e804200341e8106a200341e8046a10da0420032903e8104201510d04200341e80a6a41086a200341e8106a41386a290300370300200341e80a6a41106a220a200341e8106a41c0006a290300370300200341e80a6a41186a2209200341b0116a2903003703002003200341e8106a41306a2903003703e80a20034190116a2903002117200341e8106a41206a2903002118200341e8106a41186a220b2903002119200341e8106a41106a220c290300211a20032903f010211302402005450d00200210310b200341c8106a41186a20092903002214370300200341c8106a41106a200a290300221b370300200341a8106a41086a200341e80a6a41086a2205290300221c370300200341a8106a41186a2014370300200341a8106a41106a201b370300200320032903e80a221d3703a81020034188106a41186a2202201437030020034188106a41106a220a201b37030020034188106a41086a2209201c3703002003201d3703881020034188056a41206a201737030020034188056a41186a201837030020034188056a41106a20193703002003201a37039005200320133e028805200320134220883e028c0520034188056a41c0006a200229030037030020034188056a41386a200a29030037030020034188056a41306a200929030037030020032003290388103703b005200b200341c80f6a41186a290300370300200c200341c80f6a41106a290300370300200341e8106a41086a200341c80f6a41086a290300370300200320032903c80f3703e8104111102d2202450d05200241002900a4a741370000200241106a41002d00b4a7413a0000200241086a41002900aca7413700002003429180808090023702cc10200320023602c8102003200341c8106a3602e80a200341e8106a200341e80a6a103e200341e80a6a41186a220a20033502d01042208620033502c810841000220241186a290000370300200341e80a6a41106a2209200241106a2900003703002005200241086a290000370300200320022900003703e80a20021031200341900a6a41186a200a290300370300200341900a6a41106a2009290300370300200341900a6a41086a2005290300370300200320032903e80a3703900a024020032802cc10450d0020032802c81010310b200341003602f010200342013703e810200341086a200341e8106a10bd0220032802ec102102201120033502f01042208620032802e8102205ad84100302402002450d00200510310b200341a8106a41186a200341c80f6a41186a290300370300200341a8106a41106a200341c80f6a41106a290300370300200341a8106a41086a200341c80f6a41086a290300370300200320032903c80f3703a8102004200341e0006a2903007c22112004542105200341f0006a2903002113200341e8006a290300211402400240200620032903587c221b2006540d00201121170c010b201142017c221720115420056a21050b200f20147c2211200f5421020240024020050d00201121140c010b20112005ad7c221420115420026a21020b200e20137c2211200e5421050240024020020d00201121130c010b20112002ad7c221320115420056a21050b20050d0620034188116a2013370300200341e8106a41186a2014370300200341e8106a41106a201737030020034198116a200341c80f6a41086a290300370300200341a0116a200341c80f6a41106a290300370300200341a8116a200341c80f6a41186a290300370300200320123703e810200320032903c80f370390112003201b3703f010200341c8106a41186a200341a8106a41186a290300370300200341c8106a41106a200341a8106a41106a290300370300200341c8106a41086a200341a8106a41086a290300370300200320032903a8103703c8104118102d2202450d07200241002900b5a741370000200241106a41002900c5a741370000200241086a41002900bda74137000020034298808080800337028c102003200236028810200320034188106a3602e80a200341c8106a200341e80a6a103e200341e80a6a41186a2205200335029010422086200335028810841000220241186a290000370300200341e80a6a41106a220a200241106a290000370300200341e80a6a41086a2209200241086a290000370300200320022900003703e80a20021031200341900a6a41186a2005290300370300200341900a6a41106a200a290300370300200341900a6a41086a2009290300370300200320032903e80a3703900a0240200328028c10450d0020032802881010310b200341203602ec0a2003200341900a6a3602e80a200341e8106a200341e80a6a10db04200420032903607c22112004542105200329037021042003290368211202400240200620032903587c22132006540d00201121140c010b201142017c221420115420056a21050b200f20127c2206200f5421020240024020050d002006210f0c010b20062005ad7c220f20065420026a21020b200e20047c2206200e5421050240024020020d00200621040c010b20062002ad7c220420065420056a21050b20050d0820032004370380112003200f3703f810200320143703f010200320133703e81020034180116a2105200341a8056a210a410321020240024003402002417f460d01200241034b0d0220052903002206200a2903002204540d01200541786a2105200a41786a210a2002417f6a210220062004580d000b20034188106a41086a2202418da7c100ad4280808080f0028422061001220541086a290000370300200320052900003703881020051031200341900a6a41086a220a200229030037030020032003290388103703900a200341e8106a200341900a6a109c0120034181116a200341e00f6a290300370000200341f9106a200341c80f6a41106a290300370000200341f1106a200341c80f6a41086a290300370000200320032903c80f3700e910200341013a00e810200220061001220541086a290000370300200320052900003703881020051031200a200229030037030020032003290388103703900a200341103602ec0a2003200341900a6a3602e80a200341e8106a410172200341e80a6a10ae020b2003418f056a200341086a41e00410ab051a200341e8106a41086a41013a0000200341f1106a20032903c80a370000200341f9106a200341c80a6a41086a29030037000020034181116a200341d80a6a29030037000020034189116a200341e00a6a2903003700002003410c3a00e81020034191116a20034188056a41e70410ab051a4100210a41014100200341e8106a10450c0b0b4190e2c30020024104104b000b41c796c400210a412021090c080b411841011033000b41e9bcc0004133200341b00a6a419cbdc0001038000b411841011033000b41e9bcc0004133200341b00a6a419cbdc0001038000b411141011033000b4189e3c300411d419cdec40010a401000b411841011033000b4189e3c300411d419cdec40010a401000b0240200341fc006a280200450d00200328027810310b02402003418c016a2802002205450d0020032802840121022005410c6c210503400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b20034188016a280200450d0020032802840110310b4101210c4100210b0b4101210d410121050c020b0240200341fc006a280200450d00200328027810310b02402003418c016a2802002205450d0020032802840121022005410c6c210503400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b20034188016a280200450d0020032802840110310b410021054101210b4101210c4101210d0b024020012d0000417f6a220241034b0d00024002400240024020020e0400010203000b2005450d030240200141fc006a280200450d00200141f8006a28020010310b02402001418c016a2802002205450d0020014184016a28020021022005410c6c210503400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b20014188016a280200450d0320012802840110310c030b200b450d020240200141fc006a280200450d00200141f8006a28020010310b02402001418c016a2802002205450d0020014184016a28020021022005410c6c210503400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b20014188016a280200450d0220012802840110310c020b200c450d01200141146a280200450d01200141106a28020010310c010b200d450d000240200141fc006a280200450d00200141f8006a28020010310b02402001418c016a2802002205450d0020014184016a28020021022005410c6c210503400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b20014188016a280200450d0020012802840110310b200020093602042000200a36020020034180166a24000bb20201027f024002402000280200220141064b0d00024002400240024020010e0705050005010203050b200041086a280200450d04200028020410310f0b200041086a280200450d03200028020410310f0b02402000410c6a2802002202450d0020002802042101200241186c210203400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141186a2101200241686a22020d000b0b200041086a280200450d02200028020410310f0b02402000410c6a2802002202450d00200028020421012002410c6c210203400240200141046a280200450d00200128020010310b2001410c6a2101200241746a22020d000b0b200041086a280200450d01200028020410310c010b200041086a280200450d00200028020410310f0b0bee0a01067f0240024020002802002201280200220241114b0d00024002400240024002400240024002400240024020020e120b000b0b0b0b0b0102030b0b0405060708090b0b200141086a10d3040c0a0b02402001410c6a2802002202450d0020012802042203200241f0006c6a2104034002402003410c6a2802002205450d0020032802042102200541246c210503400240024020022d0000220641034b0d0002400240024020060e0404000102040b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022005415c6a22050d000b0b200341f0006a21020240200341086a280200450d00200328020410310b2002210320022004470d000b0b200141086a280200450d09200128020410310c090b200141086a280200450d08200128020410310c080b02402001410c6a280200450d00200141086a28020010310b02402001411c6a2802002205450d00200141146a28020021022005410c6c210503400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b200141186a280200450d07200128021410310c070b200141086a280200450d06200128020410310c060b200141086a2d000041796a220241084b0d0502400240024020020e09000108080808080802000b200141106a280200450d072001410c6a28020010310c070b200141106a280200450d062001410c6a28020010310c060b200141106a280200450d052001410c6a28020010310c050b200141086a2d0000417e6a220241024b0d0402400240024020020e03000102000b200141106a280200450d062001410c6a28020010310c060b200141346a280200450d05200141306a28020010310c050b200141306a280200450d042001412c6a28020010310c040b02402001280204220241024b0d00024020020e03050005050b200141086a10d4040c040b2001412c6a10d4040c030b02402001410c6a2802002205450d0020012802042102200541f8046c2105034020021030200241f8046a2102200541887b6a22050d000b0b200141086a280200450d02200128020410310c020b200141086a2d0000417f6a220241034b0d01024002400240024020020e0400010203000b024020014184016a280200450d0020014180016a28020010310b024020014194016a2802002205450d002001418c016a28020021022005410c6c210503400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b20014190016a280200450d04200128028c0110310c040b024020014184016a280200450d0020014180016a28020010310b024020014194016a2802002205450d002001418c016a28020021022005410c6c210503400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b20014190016a280200450d03200128028c0110310c030b2001411c6a280200450d02200141186a28020010310c020b024020014184016a280200450d0020014180016a28020010310b024020014194016a2802002205450d002001418c016a28020021022005410c6c210503400240200241046a280200450d00200228020010310b2002410c6a2102200541746a22050d000b0b20014190016a280200450d01200128028c0110310c010b0240200141086a280200220241024b0d000240024020020e03030001030b2001411c6a280200450d02200141186a28020010310c020b2001411c6a280200450d01200141186a28020010310c010b2001411c6a280200450d00200141186a28020010310b200028020010310b130020004107360204200041fc87c4003602000b3400200041f28cc40036020420004100360200200041146a4107360200200041106a41fc8cc400360200200041086a42083702000b3f01017f230041106b22022400200241003602082002420137030041002002106f200041086a200228020836020020002002290300370200200241106a24000b2f01017f02404101102d22020d00410141011033000b200042818080801037020420002002360200200241013a00000b7101017f230041306b22022400200241186a4200370300200241106a4200370300200241086a42003703002002420037030020024100360228200242013703202002200241206a36022c20022002412c6a103e200041086a200228022836020020002002290320370200200241306a24000bfa0504037f017e047f017e230041b0016b2202240002400240200128020422034108490d002001280200220429000021052001200341786a3602042001200441086a36020041002106200241003a00a801410820036b2107200341776a210803400240200720066a0d000240200641ff0171450d00200241003a00a8010b200042013703000c030b20024188016a20066a200420066a220941086a2d00003a0000200120083602042001200941096a3602002002200641016a22093a00a8012008417f6a21082009210620094120470d000b200241c8006a41086a20024188016a41086a290300370300200241c8006a41106a20024188016a41106a290300370300200241c8006a41186a20024188016a41186a290300370300200220022903880137034841002106200241003a00a801200420096a2107200920036b41086a210403400240200420066a0d000240200641ff0171450d00200241003a00a8010b200042013703000c030b20024188016a20066a200720066a220941086a2d00003a0000200120083602042001200941096a3602002002200641016a22093a00a8012008417f6a21082009210620094120470d000b200241e8006a41186a20024188016a41186a290300220a370300200241286a41086a220620024188016a41086a290300370300200241286a41106a220820024188016a41106a290300370300200241286a41186a2201200a370300200241086a41186a2209200241c8006a41186a290300370300200241086a41106a2204200241c8006a41106a290300370300200241086a41086a2207200241c8006a41086a29030037030020022002290388013703282002200229034837030820002005370308200041106a2002290328370300200041186a2006290300370300200041206a2008290300370300200041286a200129030037030020004200370300200041306a2002290308370300200041386a2007290300370300200041c0006a2004290300370300200041c8006a20092903003703000c010b200042013703000b200241b0016a24000bdd0103017f017e017f230041306b2202240020024100360208200242013703002000290300210302404108102d2204450d00200242888080808001370204200220043602002004200337000020022002360210200041286a200241106a103e2002200236020c200220002903083703102002200041106a2903003703182002200041186a2903003703202002200041206a290300370328200241106a2002410c6a103e200228020421002001290200200235020842208620022802002204ad84100302402000450d00200410310b200241306a24000f0b410841011033000b800601067f230041a00a6b22022400024002404111102d2203450d00200341002900a4a741370000200341106a41002d00b4a7413a0000200341086a41002900aca741370000200242918080809002370234200220033602302002200241306a36029005200120024190056a103e20024190056a41186a220120023502384220862002350230841000220341186a29000037030020024190056a41106a2204200341106a29000037030020024190056a41086a2205200341086a290000370300200220032900003703900520031031200241f0046a41186a2001290300370300200241f0046a41106a2004290300370300200241f0046a41086a200529030037030020022002290390053703f00402402002280234450d00200228023010310b200241f8096a200241f0046aad42808080808004841002104141022103024020022802f8092201450d0020022802fc0921042002200241f8096a41086a2802003602f409200220013602f00920024190056a200241f0096a10bf0220022d00cc0922034102460d02200241306a20024190056a41bc0410ab051a200241276a200241ec096a280000360000200241206a200241e5096a290000370300200241186a200241dd096a290000370300200241086a41086a200241d5096a290000370300200220022900cd093703082004450d00200110310b20024190056a200241306a41bc0410ab051a200241f8096a411f6a2204200241086a411f6a280000360000200241f8096a41186a2205200241086a41186a290300370300200241f8096a41106a2206200241086a41106a290300370300200241f8096a41086a2207200241086a41086a290300370300200220022903083703f809024020034102460d00200020024190056a41bc0410ab05220141dc046a2004280000360000200141d5046a2005290300370000200141cd046a2006290300370000200141c5046a2007290300370000200120022903f8093700bd040b200020033a00bc04200241a00a6a24000f0b411141011033000b41e9bcc0004133200241306a419cbdc0001038000b8b0303017f017e027f02402001450d00034020002802b80121002001417f6a22010d000b0b02402002450d00410021034100210103402002417f6a210202400240200120002f01064f0d00200141016a21010c010b02400240200028020022010d002003ad210441002105410021010c010b20003301044220862003ad842104410121050b200010312004a72103024002402004422088a7220620012f01064f0d00200121000c010b034002400240200128020022000d002003ad2104410021000c010b200541016a210520013301044220862003ad8421040b200110312004a72103200021012004422088a7220620002f01064f0d000b0b200641027420006a41bc016a280200210002402005417f6a2201450d00034020002802b80121002001417f6a22010d000b0b410021010b20020d000b0b024020004198bfc000460d0020002802002101200010312001450d0020012802002100200110312000450d00024020002802002201450d000340200010312001210020012802002203210120030d000b0b200010310b0bd40808067f017e027f017e017f017e017f017e23004180016b2203240002402000450d002002450d00034002400240024002400240200220006a4118490d0020022000200020024b1b418101490d0320002002490d02410020026b210420024120490d01200120046a210503402001220620046a2101410021070340200520076a220829000021092008200620076a220a290000370000200841186a220b290000210c200b200a41186a220d290000370000200841106a220b290000210e200b200a41106a220f290000370000200841086a220829000021102008200a41086a220b290000370000200b2010370000200f200e370000200d200c370000200a2009370000200741c0006a2108200741206a220a2107200820024d0d000b02402002200a4d0d0020032005200a6a22082002200a6b220710ab05210b20082006200a6a220a200710ab051a200a200b200710ab051a0b200520046a2105200020026b220020024f0d000c050b0b410020006b210f200120006b22082d0000210b20022101200221070340200820076a220a2d0000210d200a200b3a00000240200720004f0d00200720026a2107200d210b0c010b0240200f20076a2207450d002007200120072001491b2101200d210b0c010b0b2008200d3a000020014102490d054101210f0340200f20026a21072008200f6a22052d0000210a0340200820076a220d2d0000210b200d200a3a00000240200720004f0d00200720026a2107200b210a0c010b200b210a200720006b2207200f470d000b2005200b3a0000200f41016a220f2001470d000c060b0b024020020d0003400c000b0b03402003200120046a2207200210ab05210820072001200210ab05210720012008200210ab051a20072101200020026b220020024f0d000b200721010c020b410020006b210a024020004120490d002001200a6a21050340410021070340200520076a220829000021092008200120076a220a290000370000200841186a220b290000210c200b200a41186a220d290000370000200841106a220b290000210e200b200a41106a220f290000370000200841086a220829000021102008200a41086a220b290000370000200b2010370000200f200e370000200d200c370000200a2009370000200741c0006a2108200741206a220a2107200820004d0d000b02402000200a4d0d0020032005200a6a22082000200a6b220710ab05210b20082001200a6a220a200710ab051a200a200b200710ab051a0b200520006a2105200120006a2101200220006b22022000490d030c000b0b034020032001200a6a2207200010ab05210820072001200010ab051a20012008200010ab0520006a2101200220006b220220004f0d000c020b0b200120006b220720026a21080240200020024d0d0020032001200210ab05210a20082007200010ac051a2007200a200210ab051a0c030b20032007200010ab05210a20072001200210ac051a2008200a200010ab051a0c020b2002450d0120000d000b0b20034180016a24000ba70201077f0240024002400240200041086a2802002201450d00410020014102746b2102417f210320002802002204210503402002450d01200341016a2103200241046a210220052802002106200541046a21052006450d000b4100200641004741016a41017122056b2003460d002001200520036a2207490d012001200641004741016a4101716b20036b220541ffffffff03712005470d0220054102742203417f4c0d020240024020030d00410421010c010b2003102d2201450d040b2001200420074102746a4104200641004741016a41017141027420026a6b10ab0521020240200041046a280200450d00200028020010310b20002002360200200041086a2005360200200041046a20053602000b0f0b20072001107b000b1032000b200341041033000bbf0403067f017e097f02400240024002400240200141086a2802002203200241086a2802002204200320044b1b220541016a22064101200641014b1b220741ffffffff03712007470d0020074102742206417f4c0d000240024020060d00410421080c010b2006107a2208450d020b024020050d00420021090c040b2004417f6a220a20044b210b2002280200210c2003417f6a220d20034b0d022001280200210e20082007417f6a22024102746a210f410021064200210903404100211002402003200d20066b22114d0d00410021102011200d4b0d00200e20114102746a28020021100b410021110240200b0d002004200a20066b22124d0d002012200a4b0d00200c20124102746a28020021110b200720024d0d05200f20092010ad7c2011ad7c22093e0200200f417c6a210f2002417f6a210220094220882109200641016a22062005490d000c040b0b1032000b200641041033000b20082007417f6a22024102746a21104100210f420021090340410021060240200b0d00410021062004200a200f6b22114d0d00410021062011200a4b0d00200c20114102746a28020021060b200720024d0d02201020092006ad7c22093e02002010417c6a21102002417f6a210220094220882109200f41016a220f2005490d000b0b024020072005417f736a220220074f0d00200020073602082000200736020420002008360200200820024102746a20093e02000240200141046a280200450d00200128020010310b0f0b41f49cc40020022007104b000b41f49cc40020022007104b000bb60302097f017e230041106b2201240002400240024002400240024002402000280200220228020041016a41004c0d002000280204220328020041016a41004c0d012000280208220441086a28020022054101200028020c22062802006b22076a220820054f0d02200720002802142802006b22052000280210220741086a28020022006a220920054f0d03024002402002290308220a42ffffffff0f560d0041002100200a200428020020084102746a3502007e2003290308422086200728020020094102746a35020084580d010b20022802000d052002410036020020022002290308427f7c370308200441086a2802002200200020062802006b22024d0d0620032802000d07200428020020024102746a350200210a200341003602002003200a20032903087c370308410121000b200141106a240020000f0b41aeddc4004118200141086a41b89ec4001038000b41aeddc4004118200141086a41b89ec4001038000b41e49cc40020082005104b000b41e49cc40020092000104b000b419eddc4004110200141086a41c89ec4001038000b41e49cc40020022000104b000b419eddc4004110200141086a41c89ec4001038000b11002000280200200028020420011083030b8906010d7f200128000c21022001280204210320012802002104024002400240024002400240024020012d000822054102470d00200320044f0d010c020b20054101710d010b41002106024002400240024002404100200320046b2201200120034b1b220741016a220120074f0d000240200420034b200520054102461b22014102460d002001410171450d004104210841002101410021060c080b2003417f732109200241086a210a41002107200321054104210841002106410021010340200920016a220b200a280200220c6a220d200b4f0d022004200549210b2002280200200d4102746a280200210d024020012006470d002006417f417f41002005200b6b220c20046b220e200e200c4b1b220c41016a220e200e200c491b4100200b1b220c41016a220e200e200c491b6a220c2006490d062006410174220e200c200e200c4b1b220c41ffffffff0371200c470d06200c410274220e4100480d060240024020060d00200e102d21080c010b20082006410274200e102f21080b2008450d04200c21060b200820076a200d360200200741046a21072005417f6a2105200141016a2101200b0d000c080b0b024020010d00410421080c060b200141ffffffff03712001470d03200141027422064100480d032006102d2208450d02200121060c050b41e49cc400200120036b200c6a417f6a200c104b000b200e41041033000b200641041033000b1034000b41042108410021060b410021012003200449200520054102461b4101710d0002400240200320044d0d002003417f732101200241086a210d200821052003210703402001200d280200220c6a220b20014f0d0420052002280200200b4102746a280200360200200141016a2101200541046a210520042007417f6a2207490d000b200320046b41016a21010c010b20032004470d0141012101200821050b200241086a28020022072004417f736a220420074f0d022005200228020020044102746a2802003602000b2000200136020820002006360204200020083602000f0b41e49cc400200b200c104b000b41e49cc40020042007104b000b0e002001ad4220862000ad8410070bb30301047f230041c0006b2202240020002802002103410121000240200128021841c0c7c300410c2001411c6a28020028020c1103000d0002400240200328020822000d0020032802002200200328020428020c11070042e4aec285979ba58811520d012002200036020c2002412836021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c200241ccc7c3003602282002200241106a36023820042005200241286a10ac020d020c010b2002200036020c2002413136021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c200241ccc7c3003602282002200241106a36023820042005200241286a10ac020d010b200328020c2100200241106a41146a4105360200200241106a410c6a410536020020022000410c6a3602202002200041086a360218200241023602142002200036021020012802182100200128021c2101200241286a41146a41033602002002420337022c200241dcc7c3003602282002200241106a36023820002001200241286a10ac0221000b200241c0006a240020000bbe04020d7f017e230041c0006b22032400200128020022042001280208220541047422066a210720012802042108200421010240024002402005450d00200641706a2109200341306a410172210a200341306a41026a2106200341206a410172220b41076a210c20042101034020012d000021052006200141036a2d00003a00002003200141016a2f00003b01300240200541ac01470d00200141106a21010c020b2003410c6a41026a20062d0000220d3a0000200320032f0130220e3b010c200141046a280200210f200141086a2903002110200a200e3b0000200a41026a200d3a0000200320053a0030200320103703382003200f360234200341206a200341306a200210e7042003200b2900003703102003200c290000370017024020032d00202205411f470d00200941706a2109200141106a22012007470d010c030b0b200020053a000020002003290310370001200041086a200329001737000002402009450d00200141106a210103400240024020012d000022054109460d00200541ac01470d010c030b0240200141046a280200220528020441ffffffff0371450d00200528020010310b200510310b200141106a22012007470d000b0b2008450d02200410310c020b20012007460d0003400240024020012d000022054109460d00200541ac01470d010c030b0240200141046a280200220528020441ffffffff0371450d00200528020010310b200510310b200141106a22012007470d000b0b02402008450d00200410310b2000411f3a00000b200341c0006a24000bcbd60202097f017e230041106b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000eac01000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01ab01000b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dad0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41003a00000cab010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dad0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41013a00000caa010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490df501200441017422082005200820054b1b22084100480df5010240024020040d002008102d21050c010b200628020020042008102f21050b2005450dad0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41023a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490df501200441017422082005200820054b1b22084100480df5010240024020040d002008102d21050c010b200628020020042008102f21050b2005450dae0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca9010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490df401200441017422082005200820054b1b22084100480df4010240024020040d002008102d21050c010b200628020020042008102f21050b2005450dae0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41033a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490df401200441017422082005200820054b1b22084100480df4010240024020040d002008102d21050c010b200628020020042008102f21050b2005450daf0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca8010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490df301200441017422082005200820054b1b22084100480df3010240024020040d002008102d21050c010b200628020020042008102f21050b2005450daf0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41043a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490df301200441017422082005200820054b1b22084100480df3010240024020040d002008102d21050c010b200628020020042008102f21050b2005450db00120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca7010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102d21050c010b200228020420042006102f21050b2005450db00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41053a00000ca6010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102d21050c010b200228020420042006102f21050b2005450db00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410b3a00000ca5010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490df001200441017422072006200720064b1b22074100480df0010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db00120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410c3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490df1012004410174220a2006200a20064b1b220a4100480df1010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db201200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca5010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490def01200441017422072006200720064b1b22074100480def010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db10120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410d3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490df0012004410174220a2006200a20064b1b220a4100480df0010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db301200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca4010b0b200241046a210902400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490dee01200441017422062005200620054b1b22064100480dee010240024020040d002006102d21050c010b200928020020042006102f21050b2005450db20120022005360204200241086a20063602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a410e3a0000200320012802042204280204220520042802002204200420054102746a200210e8042003210420032d0000411f470d930320012802042802082105200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490def012004410174220a2006200a20064b1b220a4100480def010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db401200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca3010b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490ded01200441017422062005200620054b1b22064100480ded010240024020040d002006102d21050c010b200228020420042006102f21050b2005450db30120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410f3a00000ca1010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490dec01200441017422072006200720064b1b22074100480dec010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db30120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41103a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490ded012004410174220a2006200a20064b1b220a4100480ded010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db501200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca1010b0b200241046a2109200141046a280200210520012d0001210b02400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490deb01200441017422072006200720064b1b22074100480deb010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db40120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41113a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490dec012004410174220a2006200a20064b1b220a4100480dec010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db601200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b02400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490deb01200441017422062005200620054b1b22064100480deb010240024020040d002006102d21050c010b200928020020042006102f21050b2005450db60120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a200b3a00000c9f010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dea01200441017422062005200620054b1b22064100480dea010240024020040d002006102d21050c010b200228020420042006102f21050b2005450db60120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411a3a00000c9e010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490de901200441017422062005200620054b1b22064100480de9010240024020040d002006102d21050c010b200228020420042006102f21050b2005450db60120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411b3a00000c9d010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de801200441017422072006200720064b1b22074100480de8010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db60120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41203a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de9012004410174220a2006200a20064b1b220a4100480de9010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db801200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9d010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de701200441017422072006200720064b1b22074100480de7010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db70120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41213a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de8012004410174220a2006200a20064b1b220a4100480de8010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db901200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9c010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de601200441017422072006200720064b1b22074100480de6010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db80120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41223a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de7012004410174220a2006200a20064b1b220a4100480de7010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450dba01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9b010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de501200441017422072006200720064b1b22074100480de5010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db90120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41233a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de6012004410174220a2006200a20064b1b220a4100480de6010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450dbb01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9a010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de401200441017422072006200720064b1b22074100480de4010240024020040d002007102d21060c010b200928020020042007102f21060b2006450dba0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41243a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de5012004410174220a2006200a20064b1b220a4100480de5010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450dbc01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c99010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de301200441017422082007200820074b1b22084100480de3010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dbb0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41283a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de4012004410174220b2007200b20074b1b220b4100480de4010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dbd01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de401200441017422092006200920064b1b22094100480de4010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dbe012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c98010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de201200441017422082007200820074b1b22084100480de2010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dbd0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41293a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de3012004410174220b2007200b20074b1b220b4100480de3010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dbf01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de301200441017422092006200920064b1b22094100480de3010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dc0012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c97010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de101200441017422082007200820074b1b22084100480de1010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dbf0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de2012004410174220b2007200b20074b1b220b4100480de2010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dc101200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de201200441017422092006200920064b1b22094100480de2010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dc2012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c96010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de001200441017422082007200820074b1b22084100480de0010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dc10120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de1012004410174220b2007200b20074b1b220b4100480de1010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dc301200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de101200441017422092006200920064b1b22094100480de1010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dc4012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c95010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddf01200441017422082007200820074b1b22084100480ddf010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dc30120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de0012004410174220b2007200b20074b1b220b4100480de0010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dc501200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de001200441017422092006200920064b1b22094100480de0010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dc6012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c94010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dde01200441017422082007200820074b1b22084100480dde010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dc50120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddf012004410174220b2007200b20074b1b220b4100480ddf010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dc701200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddf01200441017422092006200920064b1b22094100480ddf010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dc8012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c93010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddd01200441017422082007200820074b1b22084100480ddd010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dc70120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dde012004410174220b2007200b20074b1b220b4100480dde010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dc901200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dde01200441017422092006200920064b1b22094100480dde010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dca012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c92010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddc01200441017422082007200820074b1b22084100480ddc010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dc90120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412f3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddd012004410174220b2007200b20074b1b220b4100480ddd010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dcb01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddd01200441017422092006200920064b1b22094100480ddd010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dcc012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c91010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddb01200441017422082007200820074b1b22084100480ddb010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dcb0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41303a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddc012004410174220b2007200b20074b1b220b4100480ddc010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dcd01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddc01200441017422092006200920064b1b22094100480ddc010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dce012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c90010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dda01200441017422082007200820074b1b22084100480dda010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dcd0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41313a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddb012004410174220b2007200b20074b1b220b4100480ddb010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dcf01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddb01200441017422092006200920064b1b22094100480ddb010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dd0012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8f010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd901200441017422082007200820074b1b22084100480dd9010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dcf0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41323a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dda012004410174220b2007200b20074b1b220b4100480dda010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dd101200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dda01200441017422092006200920064b1b22094100480dda010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dd2012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8e010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd801200441017422082007200820074b1b22084100480dd8010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dd10120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41333a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dd9012004410174220b2007200b20074b1b220b4100480dd9010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dd301200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dd901200441017422092006200920064b1b22094100480dd9010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dd4012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8d010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd701200441017422082007200820074b1b22084100480dd7010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dd30120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41343a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dd8012004410174220b2007200b20074b1b220b4100480dd8010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dd501200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dd801200441017422092006200920064b1b22094100480dd8010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dd6012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8c010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd601200441017422082007200820074b1b22084100480dd6010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dd50120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41353a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da3022004410174220b2007200b20074b1b220b4100480da3020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dd801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da302200441017422092006200920064b1b22094100480da3020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dd9012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8b010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490da102200441017422082007200820074b1b22084100480da1020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dd80120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41363a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da2022004410174220b2007200b20074b1b220b4100480da2020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dda01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da202200441017422092006200920064b1b22094100480da2020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450ddb012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8a010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490da002200441017422082007200820074b1b22084100480da0020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dda0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41373a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da1022004410174220b2007200b20074b1b220b4100480da1020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450ddc01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da102200441017422092006200920064b1b22094100480da1020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450ddd012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c89010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9f02200441017422082007200820074b1b22084100480d9f020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450ddc0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41383a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da0022004410174220b2007200b20074b1b220b4100480da0020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dde01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da002200441017422092006200920064b1b22094100480da0020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450ddf012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c88010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9e02200441017422082007200820074b1b22084100480d9e020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dde0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41393a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9f022004410174220b2007200b20074b1b220b4100480d9f020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450de001200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9f02200441017422092006200920064b1b22094100480d9f020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450de1012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c87010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9d02200441017422082007200820074b1b22084100480d9d020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450de00120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9e022004410174220b2007200b20074b1b220b4100480d9e020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450de201200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9e02200441017422092006200920064b1b22094100480d9e020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450de3012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c86010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9c02200441017422082007200820074b1b22084100480d9c020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450de20120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9d022004410174220b2007200b20074b1b220b4100480d9d020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450de401200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9d02200441017422092006200920064b1b22094100480d9d020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450de5012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c85010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9b02200441017422082007200820074b1b22084100480d9b020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450de40120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9c022004410174220b2007200b20074b1b220b4100480d9c020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450de601200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9c02200441017422092005200920054b1b22094100480d9c020240024020040d002009102d21050c010b200a28020020042009102f21050b2005450de7012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c84010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9a02200441017422082007200820074b1b22084100480d9a020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450de60120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9b022004410174220b2007200b20074b1b220b4100480d9b020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450de801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9b02200441017422092006200920064b1b22094100480d9b020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450de9012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c83010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9902200441017422082007200820074b1b22084100480d99020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450de80120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9a022004410174220b2007200b20074b1b220b4100480d9a020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dea01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9a02200441017422092006200920064b1b22094100480d9a020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450deb012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c82010b0b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9802200441017422082005200820054b1b22084100480d98020240024020040d002008102d21050c010b200628020020042008102f21050b2005450dea0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a413f3a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d9802200441017422082005200820054b1b22084100480d98020240024020040d002008102d21050c010b200628020020042008102f21050b2005450deb0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c80010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9702200441017422082005200820054b1b22084100480d97020240024020040d002008102d21050c010b200628020020042008102f21050b2005450deb0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c0003a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d9702200441017422082005200820054b1b22084100480d97020240024020040d002008102d21050c010b200628020020042008102f21050b2005450dec0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c7f0b200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9602200441017422072005200720054b1b22074100480d96020240024020040d002007102d21050c010b200228020420042007102f21050b2005450dec0120022005360204200241086a20073602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c1003a000020032006200210e9042003210420032d0000411f470def020c7e0b200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9502200441017422062005200620054b1b22064100480d95020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dec0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c2003a00002003200c200210ea042003210420032d0000411f470dee020c7d0b200241046a2106200141046a280200210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9402200441017422082005200820054b1b22084100480d94020240024020040d002008102d21050c010b200628020020042008102f21050b2005450dec0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c3003a000002400240200241086a2802002205200828020022046b4104490d00200628020021050c010b200441046a22082004490d9402200541017422042008200420084b1b22044100480d94020240024020050d002004102d21050c010b200628020020052004102f21050b2005450ded0120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441046a360200200520046a20073600000c7c0b200241046a2106200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9302200441017422072005200720054b1b22074100480d93020240024020040d002007102d21050c010b200628020020042007102f21050b2005450ded0120022005360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a41c4003a000002400240200241086a2802002205200728020022046b4108490d00200628020021050c010b200441086a22072004490d9302200541017422042007200420074b1b22044100480d93020240024020050d002004102d21050c010b200628020020052004102f21050b2005450dee0120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441086a360200200520046a200c3700000c7b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9202200441017422062005200620054b1b22064100480d92020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c5003a00000c7a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9102200441017422062005200620054b1b22064100480d91020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c6003a00000c790b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9002200441017422062005200620054b1b22064100480d90020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c7003a00000c780b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8f02200441017422062005200620054b1b22064100480d8f020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c8003a00000c770b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8e02200441017422062005200620054b1b22064100480d8e020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c9003a00000c760b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8d02200441017422062005200620054b1b22064100480d8d020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ca003a00000c750b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8c02200441017422062005200620054b1b22064100480d8c020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cb003a00000c740b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8b02200441017422062005200620054b1b22064100480d8b020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cc003a00000c730b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8a02200441017422062005200620054b1b22064100480d8a020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cd003a00000c720b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8902200441017422062005200620054b1b22064100480d89020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ce003a00000c710b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8802200441017422062005200620054b1b22064100480d88020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cf003a00000c700b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8702200441017422062005200620054b1b22064100480d87020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d0003a00000c6f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8602200441017422062005200620054b1b22064100480d86020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d1003a00000c6e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8502200441017422062005200620054b1b22064100480d85020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d2003a00000c6d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8402200441017422062005200620054b1b22064100480d84020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d3003a00000c6c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8302200441017422062005200620054b1b22064100480d83020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d4003a00000c6b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8202200441017422062005200620054b1b22064100480d82020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d5003a00000c6a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8102200441017422062005200620054b1b22064100480d81020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d6003a00000c690b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8002200441017422062005200620054b1b22064100480d80020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d7003a00000c680b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dff01200441017422062005200620054b1b22064100480dff010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d8003a00000c670b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfe01200441017422062005200620054b1b22064100480dfe010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d9003a00000c660b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfd01200441017422062005200620054b1b22064100480dfd010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41da003a00000c650b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfc01200441017422062005200620054b1b22064100480dfc010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41db003a00000c640b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfb01200441017422062005200620054b1b22064100480dfb010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dc003a00000c630b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfa01200441017422062005200620054b1b22064100480dfa010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dd003a00000c620b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df901200441017422062005200620054b1b22064100480df9010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41de003a00000c610b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df801200441017422062005200620054b1b22064100480df8010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41df003a00000c600b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e0003a00000c5f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e1003a00000c5e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df501200441017422062005200620054b1b22064100480df5010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e2003a00000c5d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df401200441017422062005200620054b1b22064100480df4010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e3003a00000c5c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df301200441017422062005200620054b1b22064100480df3010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e4003a00000c5b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e5003a00000c5a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e6003a00000c590b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df001200441017422062005200620054b1b22064100480df0010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e7003a00000c580b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490def01200441017422062005200620054b1b22064100480def010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e8003a00000c570b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dba02200441017422062005200620054b1b22064100480dba020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e9003a00000c560b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db902200441017422062005200620054b1b22064100480db9020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ea003a00000c550b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db802200441017422062005200620054b1b22064100480db8020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41eb003a00000c540b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db702200441017422062005200620054b1b22064100480db7020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ec003a00000c530b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db602200441017422062005200620054b1b22064100480db6020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ed003a00000c520b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db502200441017422062005200620054b1b22064100480db5020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ee003a00000c510b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db402200441017422062005200620054b1b22064100480db4020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ef003a00000c500b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db302200441017422062005200620054b1b22064100480db3020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f0003a00000c4f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db202200441017422062005200620054b1b22064100480db2020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f1003a00000c4e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db102200441017422062005200620054b1b22064100480db1020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f2003a00000c4d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db002200441017422062005200620054b1b22064100480db0020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f3003a00000c4c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490daf02200441017422062005200620054b1b22064100480daf020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f4003a00000c4b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dae02200441017422062005200620054b1b22064100480dae020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f5003a00000c4a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dad02200441017422062005200620054b1b22064100480dad020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f6003a00000c490b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dac02200441017422062005200620054b1b22064100480dac020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f7003a00000c480b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dab02200441017422062005200620054b1b22064100480dab020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f8003a00000c470b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490daa02200441017422062005200620054b1b22064100480daa020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f9003a00000c460b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da902200441017422062005200620054b1b22064100480da9020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fa003a00000c450b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da802200441017422062005200620054b1b22064100480da8020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fb003a00000c440b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da702200441017422062005200620054b1b22064100480da7020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fc003a00000c430b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da602200441017422062005200620054b1b22064100480da6020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fd003a00000c420b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da502200441017422062005200620054b1b22064100480da5020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fe003a00000c410b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da402200441017422062005200620054b1b22064100480da4020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ff003a00000c400b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da302200441017422062005200620054b1b22064100480da3020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4180013a00000c3f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da202200441017422062005200620054b1b22064100480da2020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4181013a00000c3e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da102200441017422062005200620054b1b22064100480da1020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4182013a00000c3d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da002200441017422062005200620054b1b22064100480da0020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4183013a00000c3c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9f02200441017422062005200620054b1b22064100480d9f020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4184013a00000c3b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9e02200441017422062005200620054b1b22064100480d9e020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4185013a00000c3a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9d02200441017422062005200620054b1b22064100480d9d020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4186013a00000c390b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9c02200441017422062005200620054b1b22064100480d9c020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4187013a00000c380b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9b02200441017422062005200620054b1b22064100480d9b020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4188013a00000c370b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9a02200441017422062005200620054b1b22064100480d9a020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4189013a00000c360b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9902200441017422062005200620054b1b22064100480d99020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418a013a00000c350b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9802200441017422062005200620054b1b22064100480d98020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418b013a00000c340b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9702200441017422062005200620054b1b22064100480d97020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418c013a00000c330b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9602200441017422062005200620054b1b22064100480d96020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418d013a00000c320b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9502200441017422062005200620054b1b22064100480d95020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418e013a00000c310b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9402200441017422062005200620054b1b22064100480d94020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418f013a00000c300b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9302200441017422062005200620054b1b22064100480d93020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4190013a00000c2f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9202200441017422062005200620054b1b22064100480d92020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4191013a00000c2e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9102200441017422062005200620054b1b22064100480d91020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4192013a00000c2d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9002200441017422062005200620054b1b22064100480d90020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4193013a00000c2c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8f02200441017422062005200620054b1b22064100480d8f020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4194013a00000c2b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8e02200441017422062005200620054b1b22064100480d8e020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4195013a00000c2a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8d02200441017422062005200620054b1b22064100480d8d020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4196013a00000c290b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8c02200441017422062005200620054b1b22064100480d8c020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4197013a00000c280b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8b02200441017422062005200620054b1b22064100480d8b020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4198013a00000c270b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8a02200441017422062005200620054b1b22064100480d8a020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4199013a00000c260b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8902200441017422062005200620054b1b22064100480d89020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419a013a00000c250b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8802200441017422062005200620054b1b22064100480d88020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419b013a00000c240b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8702200441017422062005200620054b1b22064100480d87020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419c013a00000c230b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8602200441017422062005200620054b1b22064100480d86020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419d013a00000c220b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8502200441017422062005200620054b1b22064100480d85020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419e013a00000c210b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8402200441017422062005200620054b1b22064100480d84020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419f013a00000c200b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8302200441017422062005200620054b1b22064100480d83020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a0013a00000c1f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8202200441017422062005200620054b1b22064100480d82020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a1013a00000c1e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8102200441017422062005200620054b1b22064100480d81020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a2013a00000c1d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8002200441017422062005200620054b1b22064100480d80020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a3013a00000c1c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dff01200441017422062005200620054b1b22064100480dff010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a4013a00000c1b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfe01200441017422062005200620054b1b22064100480dfe010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a5013a00000c1a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfd01200441017422062005200620054b1b22064100480dfd010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a6013a00000c190b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfc01200441017422062005200620054b1b22064100480dfc010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a7013a00000c180b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfb01200441017422062005200620054b1b22064100480dfb010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a8013a00000c170b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfa01200441017422062005200620054b1b22064100480dfa010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a9013a00000c160b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df901200441017422062005200620054b1b22064100480df9010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41aa013a00000c150b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df801200441017422062005200620054b1b22064100480df8010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ab013a00000c140b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ac013a00000c130b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ad013a00000c120b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df501200441017422062005200620054b1b22064100480df5010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ae013a00000c110b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df401200441017422062005200620054b1b22064100480df4010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41af013a00000c100b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df301200441017422062005200620054b1b22064100480df3010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b0013a00000c0f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b1013a00000c0e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b2013a00000c0d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df001200441017422062005200620054b1b22064100480df0010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b3013a00000c0c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfc01200441017422062005200620054b1b22064100480dfc010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b4013a00000c0b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfb01200441017422062005200620054b1b22064100480dfb010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b5013a00000c0a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfa01200441017422062005200620054b1b22064100480dfa010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b6013a00000c090b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df901200441017422062005200620054b1b22064100480df9010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b7013a00000c080b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df801200441017422062005200620054b1b22064100480df8010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b8013a00000c070b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b9013a00000c060b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ba013a00000c050b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df501200441017422062005200620054b1b22064100480df5010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bb013a00000c040b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df401200441017422062005200620054b1b22064100480df4010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bc013a00000c030b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df301200441017422062005200620054b1b22064100480df3010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bd013a00000c020b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41be013a00000c010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bf013a00000b2000411f3a000020012d00004109470df1010240200141046a280200220228020441ffffffff0371450d0020022802001031200128020421020b200210310cf1010b200641011033000b200641011033000b200841011033000b200841011033000b200841011033000b200841011033000b200841011033000b200841011033000b200641011033000b200641011033000b200741011033000b200a41011033000b200741011033000b200a41011033000b200641011033000b200a41011033000b200641011033000b200741011033000b200a41011033000b200741011033000b200a41011033000b200641011033000b200641011033000b200641011033000b200741011033000b200a41011033000b200741011033000b200a41011033000b200741011033000b200a41011033000b200741011033000b200a41011033000b200741011033000b200a41011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b1034000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200841011033000b200841011033000b200841011033000b200741011033000b200641011033000b200841011033000b200441011033000b200741011033000b200441011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b1034000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b1034000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b1034000b20002004290200370200200041086a200441086a29020037020020012d00004109470d000240200141046a280200220228020441ffffffff0371450d0020022802001031200128020421020b200210310b200341106a24000bb60301057f2004410c6a2105200441086a2106024002400240034002400240200628020020052802002207460d00200428020421080c010b200741016a22082007490d04200741017422092008200920084b1b22094100480d040240024020070d002009102d21080c010b200428020420072009102f21080b2008450d022004200836020420062009360200200528020021070b2005200741016a360200200820076a200141807f72200141ff0071200141077622071b3a00002007210120070d000b024020022003460d002004410c6a2105200441086a2106034020022802002101034002400240200628020020052802002207460d00200428020421080c010b200741016a22082007490d06200741017422092008200920084b1b22094100480d060240024020070d002009102d21080c010b200428020420072009102f21080b2008450d052004200836020420062009360200200528020021070b2005200741016a360200200820076a200141807f72200141ff0071200141077622071b3a00002007210120070d000b200241046a22022003470d000b0b2000411f3a00000f0b200941011033000b200941011033000b1034000bb20301067f024002400240024020014107752203200141c00071220472452003417f4720044572734101470d002002410c6a2105200241086a2106034002400240200628020020052802002204460d00200228020421070c010b200441016a22072004490d05200441017422082007200820074b1b22084100480d050240024020040d002008102d21070c010b200228020420042008102f21070b2007450d032002200736020420062008360200200528020021040b2005200441016a360200200720046a200141807f723a0000200341c000712104200321012003410775220721032007200472452007417f4720044572470d000b0b02400240200241086a2802002002410c6a2802002204460d00200228020421030c010b200441016a22032004490d03200441017422072003200720034b1b22074100480d030240024020040d002007102d21030c010b200228020420042007102f21030b2003450d0220022003360204200241086a20073602002002410c6a28020021040b2002410c6a200441016a360200200320046a200141ff00713a00002000411f3a00000f0b200841011033000b200741011033000b1034000bb60302017e067f024002400240024020014207872203502001a7220441c00071452205712003427f52200572734101470d002002410c6a2106200241086a2107034002400240200728020020062802002205460d00200228020421080c010b200541016a22082005490d05200541017422092008200920084b1b22094100480d050240024020050d002009102d21080c010b200228020420052009102f21080b2008450d032002200836020420072009360200200628020021050b2006200541016a360200200820056a200441807f723a00002003a72104200342078722012103200150200441c00071452205712001427f52200572470d000b0b02400240200241086a2802002002410c6a2802002205460d00200228020421080c010b200541016a22082005490d03200541017422062008200620084b1b22064100480d030240024020050d002006102d21080c010b200228020420052006102f21080b2008450d0220022008360204200241086a20063602002002410c6a28020021050b2002410c6a200541016a360200200820056a200441ff00713a00002000411f3a00000f0b200941011033000b200641011033000b1034000be103010a7f230041306b22022400200241216a220341076a210441002105410021064100210741002108410821090240024002400340200241186a200110ec04024020022802184101470d002000200229021c370204200041013602002000410c6a200241186a410c6a29020037020002402007450d00200921070340024020072d00004109470d000240200741046a220a280200220528020441ffffffff0371450d0020052802001031200a28020021050b200510310b200741106a2107200641706a22060d000b0b2008450d04200910310c040b200220032900003703082002200429000037000f20022d0020210a2002200229000f37001f200220022903083703180240024020072008470d00200741016a220b2007490d032005200b2005200b4b1b220841ffffffff00712008470d032008410474220b4100480d030240024020070d00200b102d21090c010b20092006200b102f21090b2009450d010b200920066a220b200a3a0000200b41016a2002290318370000200b41086a200229001f370000200541026a2105200641106a2106200741016a2107200a41ff01714106460d030c010b0b200b41081033000b1034000b20002009360204200041003602002000410c6a2007360200200041086a20083602000b200241306a24000b8eb701020b7f017e230041f0006b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802082203200128020c2204460d00200441016a22052004490d02200320054f0d012005200310b601000b200241013a0048200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a10eb03200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000c640b2001280200220620046a2d000021072001410c6a2208200536020002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200741bf014b0d0020070ec001b902b902010203b90200000000000405060708090a00000000000000000b0c000000000d0e0f101100000012131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901b9020b2000410b3a000420004101360200200041056a20073a00000cbc020b024002400240024002400240024020032005460d00200441026a21092005417f460de00120032009490da302200620056a2c00002101200820093602004100210a0240200141004e0d00411921090c020b0240200141017441807f71200172220141ff0171220541847e6a220941034d0d0041062109200541c001470d034104210a410221070cbf020b20090e0404030506040b200241013a0047200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241c7006a360238200241c8006a200241d8006a10eb03200241326a200241d0006a2802003601002002200229034837012a2002200229012837031820022002412e6a29010037011e410521090b2002200229011e37010e200220022903183703080b200020013a0005200020093a000420002002290308370106200041013602002000410c6a200229010e3701000cbf020b4102210a410221070cba020b4103210a410221070cb9020b4101210a0b410221070cb7020b024002400240024002400240024020032005460d00200441026a21092005417f460de00120032009490da302200620056a2c00002101200820093602004100210a0240200141004e0d00411921090c020b0240200141017441807f71200172220141ff0171220541847e6a220941034d0d0041062109200541c001470d034104210a410321070cbe020b20090e0404030506040b200241013a0047200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241c7006a360238200241c8006a200241d8006a10eb03200241326a200241d0006a2802003601002002200229034837012a2002200229012837031820022002412e6a29010037011e410521090b2002200229011e37010e200220022903183703080b200020013a0005200020093a000420002002290308370106200041013602002000410c6a200229010e3701000cbe020b4102210a410321070cb9020b4103210a410321070cb8020b4101210a0b410321070cb6020b024002400240024002400240024020032005460d00200441026a21092005417f460de00120032009490da302200620056a2c00002101200820093602004100210a0240200141004e0d00411921090c020b0240200141017441807f71200172220141ff0171220541847e6a220941034d0d0041062109200541c001470d034104210a410421070cbd020b20090e0404030506040b200241013a0047200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241c7006a360238200241c8006a200241d8006a10eb03200241326a200241d0006a2802003601002002200229034837012a2002200229012837031820022002412e6a29010037011e410521090b2002200229011e37010e200220022903183703080b200020013a0005200020093a000420002002290308370106200041013602002000410c6a200229010e3701000cbd020b4102210a410421070cb8020b4103210a410421070cb7020b4101210a0b410421070cb5020b410621070cb4020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddd012003200541016a22074f0d01200541016a200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cb8020b410721070cb3020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddd012003200541016a22074f0d01200541016a200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cb7020b410821070cb2020b200241d8006a200110ed044104210a200228025822074101460da201200241e0006a280200210b41002106200228025c210c02400240200241e4006a280200220941027422050d00410021040c010b2005410275220441ffffffff03712004470dda01200441027422034100480dda012003102d220a450dd9010b02402009450d00200941027421032005417c6a2106200a2109200c2105034020092005280200360200200941046a2109200541046a21052003417c6a22030d000b200641027641016a21060b0240200b450d00200c10310b20022d005c4105470db0022007450db00220022802640da3010cb0020b410a21070cb0020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddd012003200541016a22074f0d01200541016a200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cb4020b410b21070caf020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddd012003200541016a22044f0d01200541016a200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010c020b200620056a2d0000210720082004360200200741ff00712001411f71742009722109200141076a2101200421052007418001710d000b20014120490d01410d210120074110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cb3020b0240024020032004460d00200441016a22012004490ddb01200320014f0d012001200310b601000b200241013a0048200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a10eb03200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000cb3020b200620046a2d0000210520082001360200024020050d00410c21074100210a0caf020b200041163a000420004101360200200041056a20053a00000cb2020b410d21070cad020b410e21070cac020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddc012003200541016a22074f0d01200541016a200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cb0020b410f21070cab020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddc012003200541016a22074f0d01200541016a200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000caf020b411021070caa020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddc012003200541016a22074f0d01200541016a200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cae020b411121070ca9020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddc012003200541016a22074f0d01200541016a200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cad020b411221070ca8020b410021014100210902400240034002402001411f4d0d00410f21010c020b0240024020032005460d002005417f460ddc012003200541016a22074f0d01200541016a200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010c020b200620056a2d0000210420082007360200200441ff00712001411f71742009722109200141076a2101200721052004418001710d000b20014120490d01410d210120044110490d010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000cac020b411321070ca7020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450ddd01200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000cab020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c9c010b20032001460d9a012001417f460dd9012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9b010b200aad210d411421070ca6020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450dde01200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000caa020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c9d010b20032001460d9b012001417f460dda012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9c010b200aad210d411521070ca5020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450ddf01200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca9020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c9e010b20032001460d9c012001417f460ddb012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9d010b200aad210d411621070ca4020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de001200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca8020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010c9f010b20032001460d9d012001417f460ddc012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9e010b200aad210d411721070ca3020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de101200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca7020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca0010b20032001460d9e012001417f460ddd012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0d9f010b200aad210d411821070ca2020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de201200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca6020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca1010b20032001460d9f012001417f460dde012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da0010b200aad210d411921070ca1020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de301200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca5020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca2010b20032001460da0012001417f460ddf012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da1010b200aad210d411a21070ca0020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de401200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca4020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca3010b20032001460da1012001417f460de0012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da2010b200aad210d411b21070c9f020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de501200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca3020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca4010b20032001460da2012001417f460de1012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da3010b200aad210d411c21070c9e020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de601200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca2020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca5010b20032001460da3012001417f460de2012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da4010b200aad210d411d21070c9d020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de701200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca1020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca6010b20032001460da4012001417f460de3012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da5010b200aad210d411e21070c9c020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de801200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000ca0020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca7010b20032001460da5012001417f460de4012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da6010b200aad210d411f21070c9b020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450de901200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9f020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca8010b20032001460da6012001417f460de5012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b41202107024020054120490d00410d21012004410f4b0da7010b200aad210d0c9a020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450dea01200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9e020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010ca9010b20032001460da7012001417f460de6012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da8010b200aad210d412121070c99020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450deb01200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9d020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010caa010b20032001460da8012001417f460de7012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0da9010b200aad210d412221070c98020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450dec01200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9c020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cab010b20032001460da9012001417f460de8012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0daa010b200aad210d412321070c97020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450ded01200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9b020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cac010b20032001460daa012001417f460de9012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0dab010b200aad210d412421070c96020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450dee01200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c9a020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cad010b20032001460dab012001417f460dea012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0dac010b200aad210d412521070c95020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450def01200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c99020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cae010b20032001460dac012001417f460deb012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0dad010b200aad210d412621070c94020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450df001200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c98020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010caf010b20032001460dad012001417f460dec012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0dae010b200aad210d412721070c93020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450df101200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c97020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cb0010b20032001460dae012001417f460ded012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0daf010b200aad210d412821070c92020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450df201200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c96020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cb1010b20032001460daf012001417f460dee012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0db0010b200aad210d412921070c91020b410120036b2107200441026a21014100210541002109024002400240034002402005411f4d0d00410f21010c020b02400240200720016a4102460d002001450df301200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320022802282109200228022c210520022802302103410521010c030b200620016a417f6a2d0000210420082001360200200441ff00712005411f71742009722109200141016a2101200541076a21052004418001710d000b20054120490d0220044110490d02410d21010b0b2000200136020420004101360200200041106a20033602002000410c6a2005360200200041086a20093602000c95020b2001417f6a2101410021054100210a034002402005411f4d0d00410f21010cb2010b20032001460db0012001417f460def012003200141016a2207490d8f02200620016a2d0000210420082007360200200441ff00712005411f7174200a72210a200541076a2105200721012004418001710d000b024020054120490d00410d21012004410f4b0db1010b200aad210d412a21070c90020b0240024020032005460d00200441026a21012005417f460df001200320014f0d012001200310b601000b200241013a0048200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a10eb03200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000c94020b200620056a2d0000210920082001360200024020090d00412b21074100210a0c90020b200041153a000420004101360200200041056a20093a00000c93020b0240024020032005460d00200441026a21012005417f460df001200320014f0d012001200310b601000b200241013a0048200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241c8006a360238200241086a200241d8006a10eb03200241336a200241106a2802003600002002200229030837002b2002200229002837031820022002412f6a29000037001f200041053a0004200020022903183700052000410c6a200229001f370000200041013602000c93020b200620056a2d0000210920082001360200024020090d00412c21074100210a0c8f020b200041153a000420004101360200200041056a20093a00000c92020b41002101410021090240024002400340410d210a2001411f4b0d010240024020032005460d002005417f460df4012003200541016a22074f0d01200541016a200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb034105210a0c020b200620056a2c0000210420082007360200200441ff00712001411f71742009722109200141076a21012007210520044100480d000b200441c00071210502402001411f4b0d0020050d020b0240024020014120490d0020050d010b200441ff01714108490d0320014120490d032005450d010c030b20044180017241ff017141f7014b0d020b2000200a36020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c93020b2009417f2001411f71747221090b412d21070c8d020b4200210d4100210102400240024002400340410e21072001413f4b0d010240024020032005460d002005417f460df5012003200541016a22094f0d01200541016a200310b601000b200241013a0008200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241086a360238200241286a200241d8006a10eb032002290328210d20022802302101410521070c030b200620056a2d0000210420082009360200200441ff0071220aad2001413f71ad86200d84210d200141076a210120092105200441187441187522094100480d000b200941c00071210502402001413f4b0d0020050d030b02400240200141c000490d0020050d010b200141c000490d0420090d010c040b200a41ff00460d030b0b200020073a0004200020022f00183b000520004101360200200041106a2001360200200041086a200d370200200041076a2002411a6a2d00003a00000c92020b200d427f2001413f71ad8684210d0b412e21070c8c020b02400240200320056b4104490d00200441056a21012005417b4b0df001200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb0320004281808080d000370300200041086a2002290328370200200041106a200241286a41086a2802003602000c90020b200620056a280000210920082001360200412f21070c8b020b02400240200320056b4108490d00200441096a2101200541774b0df001200320014f0d012001200310b601000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb032002290328210d200041106a2002280230360200200041086a200d37020020004281808080d0003703000c8f020b200620056a290000210d20082001360200413021070c8a020b413121070c89020b413221070c88020b413321070c87020b413421070c86020b413521070c85020b413621070c84020b413721070c83020b413821070c82020b413921070c81020b413a21070c80020b413b21070cff010b413c21070cfe010b413d21070cfd010b413e21070cfc010b413f21070cfb010b41c00021070cfa010b41c10021070cf9010b41c20021070cf8010b41c30021070cf7010b41c40021070cf6010b41c50021070cf5010b41c60021070cf4010b41c70021070cf3010b41c80021070cf2010b41c90021070cf1010b41ca0021070cf0010b41cb0021070cef010b41cc0021070cee010b41cd0021070ced010b41ce0021070cec010b41cf0021070ceb010b41d00021070cea010b41d10021070ce9010b41d20021070ce8010b41d30021070ce7010b41d40021070ce6010b41d50021070ce5010b41d60021070ce4010b41d70021070ce3010b41d80021070ce2010b41d90021070ce1010b41da0021070ce0010b41db0021070cdf010b41dc0021070cde010b41dd0021070cdd010b41de0021070cdc010b41df0021070cdb010b41e00021070cda010b41e10021070cd9010b41e20021070cd8010b41e30021070cd7010b41e40021070cd6010b41e50021070cd5010b41e60021070cd4010b41e70021070cd3010b41e80021070cd2010b41e90021070cd1010b41ea0021070cd0010b41eb0021070ccf010b41ec0021070cce010b41ed0021070ccd010b41ee0021070ccc010b41ef0021070ccb010b41f00021070cca010b41f10021070cc9010b41f20021070cc8010b41f30021070cc7010b41f40021070cc6010b41f50021070cc5010b41f60021070cc4010b41f70021070cc3010b41f80021070cc2010b41f90021070cc1010b41fa0021070cc0010b41fb0021070cbf010b41fc0021070cbe010b41fd0021070cbd010b41fe0021070cbc010b41ff0021070cbb010b41800121070cba010b41810121070cb9010b41820121070cb8010b41830121070cb7010b41840121070cb6010b41850121070cb5010b41860121070cb4010b41870121070cb3010b41880121070cb2010b41890121070cb1010b418a0121070cb0010b418b0121070caf010b418c0121070cae010b418d0121070cad010b418e0121070cac010b418f0121070cab010b41900121070caa010b41910121070ca9010b41920121070ca8010b41930121070ca7010b41940121070ca6010b41950121070ca5010b41960121070ca4010b41970121070ca3010b41980121070ca2010b41990121070ca1010b419a0121070ca0010b419b0121070c9f010b419c0121070c9e010b419d0121070c9d010b419e0121070c9c010b419f0121070c9b010b41a00121070c9a010b41a10121070c99010b41a20121070c98010b41a30121070c97010b41a40121070c96010b41a50121070c95010b41a60121070c94010b41a70121070c93010b41a80121070c92010b41a90121070c91010b41aa0121070c90010b41ab0121070c8f010b200041013602002000200241d8006a41047222012902003702042000410c6a200141086a2902003702000c92010b200228026010310c8c010b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c8f010b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c8d010b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c8b010b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c89010b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c87010b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c85010b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c83010b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c81010b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c7f0b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c7d0b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c7b0b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c790b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c770b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c750b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c730b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c710b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c6f0b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c6d0b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c6b0b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c690b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c670b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c650b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a2802003602000c630b417f2005107b000b417f2009107b000b417f2009107b000b417f2009107b000b417f200541016a107b000b417f200541016a107b000b200341041033000b1034000b417f200541016a107b000b417f200541016a107b000b417f2001107b000b417f200541016a107b000b417f200541016a107b000b417f200541016a107b000b417f200541016a107b000b417f200541016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f200141016a107b000b417f2001107b000b417f2001107b000b417f200541016a107b000b417f200541016a107b000b20052001107b000b20052001107b000b2009200310b601000b2009200310b601000b2009200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b200141016a200310b601000b02400240024002400240024020042006460d0020042006490d01024020060d00024020040d004104210a0c020b200a10314104210a0c010b200a200441027420064102742209102f220a450d020b4100210941002104034002402009411f4d0d00410f21010c0a0b20012802082207200128020c2205460d08200541016a22032005490d0320072003490d04200128020020056a2d0000210520082003360200200541ff00712009411f71742004722104200941076a21092005418001710d000b20094120490d04410d21012005410f4b0d080c040b41d4a9c4004124419cdec40010a401000b200941041033000b417f2003107b000b2003200710b601000b410c102d2209450d0120092004360208200920063602042009200a360200410921070b20004100360200200041106a200d3703002000410c6a2009360200200041096a200a3a0000200041086a20073a00000c030b410c41041033000b200241013a0018200241ec006a41013602002002420137025c2002419cdfc3003602582002412336023c2002200241386a3602682002200241186a360238200241286a200241d8006a10eb03410521010b2000200136020420004101360200200041086a2002290328370200200041106a200241286a41086a280200360200200641ffffffff0371450d00200a10310b200241f0006a24000bda0703067f017e067f230041d0006b220224004100210341002104024002400240024002400240024002400240024002400240034002402003411f4d0d00410f21030c020b0240024020012802082205200128020c2206460d00200641016a22072006490d05200520074f0d012007200510b601000b200241013a0027200241cc006a41013602002002420137023c2002419cdfc3003602382002412336021c2002200241186a3602482002200241276a360218200241286a200241386a10eb03410521030c020b200128020020066a2d000021062001200736020c200641ff00712003411f71742004722104200341076a21032006418001710d000b20034120490d01410d210320064110490d010b200241086a41086a200241286a41086a280200220136020020022002290328220837030820002003360204200041086a2008370200200041106a2001360200200041013602000c0a0b20024100360210200242043703082004450d0841042109410021034100210a03402003210b200a220c41016a210a410021034100210503402003411f4b0d04024002402001280208220d200128020c2206460d00200641016a22072006490d05200d20074f0d012007200d10b601000b2002200b36020c2002200c360210200241013a0027200241cc006a41013602002002420137023c2002419cdfc3003602382002412336021c2002200241186a3602482002200241276a360218200241286a200241386a10eb0320022802282103200228022c2106200228023021074100210e410521010c090b200128020020066a2d000021062001200736020c200641ff00712003411f71742005722105200341076a21032006418001710d000b024020034120490d002006410f4d0d002002200b36020c2002200c360210410d21010c070b02400240200c200b460d00200b2103200c210b0c010b200b41016a2203200b490d06200b41017422062003200620034b1b220341ffffffff03712003470d06200341027422064100480d0602400240200b0d002006102d21090c010b2009200b4102742006102f21090b2009450d05200220093602080b2005410876210e2009200b4102746a2005360200200a2004460d080c000b0b417f2007107b000b417f2007107b000b2002200b36020c2002200c360210410f21010c020b200641041033000b1034000b0b20004101360200200041106a20073602002000410c6a2006360200200041086a20033602002000200e410874200172360204200b450d02200910310c020b2002200336020c2002200a3602100b20002002290308370204200041003602002000410c6a200241106a2802003602000b200241d0006a24000bcbd60202097f017e230041106b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000eac01000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01ab01000b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dad0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41003a00000cab010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dad0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41013a00000caa010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490df501200441017422082005200820054b1b22084100480df5010240024020040d002008102d21050c010b200628020020042008102f21050b2005450dad0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41023a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490df501200441017422082005200820054b1b22084100480df5010240024020040d002008102d21050c010b200628020020042008102f21050b2005450dae0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca9010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490df401200441017422082005200820054b1b22084100480df4010240024020040d002008102d21050c010b200628020020042008102f21050b2005450dae0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41033a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490df401200441017422082005200820054b1b22084100480df4010240024020040d002008102d21050c010b200628020020042008102f21050b2005450daf0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca8010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490df301200441017422082005200820054b1b22084100480df3010240024020040d002008102d21050c010b200628020020042008102f21050b2005450daf0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41043a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490df301200441017422082005200820054b1b22084100480df3010240024020040d002008102d21050c010b200628020020042008102f21050b2005450db00120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a42c0818386fcdffffe7c2007410473ad42078342038688a7413f7141c000723a00000ca7010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102d21050c010b200228020420042006102f21050b2005450db00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41053a00000ca6010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102d21050c010b200228020420042006102f21050b2005450db00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410b3a00000ca5010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490df001200441017422072006200720064b1b22074100480df0010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db00120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410c3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490df1012004410174220a2006200a20064b1b220a4100480df1010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db201200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca5010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490def01200441017422072006200720064b1b22074100480def010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db10120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a410d3a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490df0012004410174220a2006200a20064b1b220a4100480df0010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db301200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca4010b0b200241046a210902400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490dee01200441017422062005200620054b1b22064100480dee010240024020040d002006102d21050c010b200928020020042006102f21050b2005450db20120022005360204200241086a20063602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a410e3a0000200320012802042204280204220520042802002204200420054102746a200210e8042003210420032d0000411f470d930320012802042802082105200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490def012004410174220a2006200a20064b1b220a4100480def010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db401200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca3010b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490ded01200441017422062005200620054b1b22064100480ded010240024020040d002006102d21050c010b200228020420042006102f21050b2005450db30120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a410f3a00000ca1010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490dec01200441017422072006200720064b1b22074100480dec010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db30120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41103a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490ded012004410174220a2006200a20064b1b220a4100480ded010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db501200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000ca1010b0b200241046a2109200141046a280200210520012d0001210b02400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490deb01200441017422072006200720064b1b22074100480deb010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db40120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41113a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490dec012004410174220a2006200a20064b1b220a4100480dec010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db601200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b02400240200241086a2802002002410c6a2802002204460d00200928020021050c010b200441016a22052004490deb01200441017422062005200620054b1b22064100480deb010240024020040d002006102d21050c010b200928020020042006102f21050b2005450db60120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a200b3a00000c9f010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dea01200441017422062005200620054b1b22064100480dea010240024020040d002006102d21050c010b200228020420042006102f21050b2005450db60120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411a3a00000c9e010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490de901200441017422062005200620054b1b22064100480de9010240024020040d002006102d21050c010b200228020420042006102f21050b2005450db60120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a411b3a00000c9d010b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de801200441017422072006200720064b1b22074100480de8010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db60120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41203a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de9012004410174220a2006200a20064b1b220a4100480de9010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db801200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9d010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de701200441017422072006200720064b1b22074100480de7010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db70120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41213a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de8012004410174220a2006200a20064b1b220a4100480de8010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450db901200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9c010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de601200441017422072006200720064b1b22074100480de6010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db80120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41223a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de7012004410174220a2006200a20064b1b220a4100480de7010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450dba01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9b010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de501200441017422072006200720064b1b22074100480de5010240024020040d002007102d21060c010b200928020020042007102f21060b2006450db90120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41233a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de6012004410174220a2006200a20064b1b220a4100480de6010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450dbb01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c9a010b0b200241046a2109200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200928020021060c010b200441016a22062004490de401200441017422072006200720064b1b22074100480de4010240024020040d002007102d21060c010b200928020020042007102f21060b2006450dba0120022006360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200620046a41243a0000200241086a2108034002400240200828020020072802002204460d00200928020021060c010b200441016a22062004490de5012004410174220a2006200a20064b1b220a4100480de5010240024020040d00200a102d21060c010b20092802002004200a102f21060b2006450dbc01200220063602042008200a360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c99010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de301200441017422082007200820074b1b22084100480de3010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dbb0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41283a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de4012004410174220b2007200b20074b1b220b4100480de4010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dbd01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de401200441017422092006200920064b1b22094100480de4010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dbe012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c98010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de201200441017422082007200820074b1b22084100480de2010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dbd0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41293a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de3012004410174220b2007200b20074b1b220b4100480de3010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dbf01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de301200441017422092006200920064b1b22094100480de3010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dc0012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c97010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de101200441017422082007200820074b1b22084100480de1010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dbf0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de2012004410174220b2007200b20074b1b220b4100480de2010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dc101200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de201200441017422092006200920064b1b22094100480de2010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dc2012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c96010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490de001200441017422082007200820074b1b22084100480de0010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dc10120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de1012004410174220b2007200b20074b1b220b4100480de1010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dc301200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de101200441017422092006200920064b1b22094100480de1010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dc4012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c95010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddf01200441017422082007200820074b1b22084100480ddf010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dc30120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490de0012004410174220b2007200b20074b1b220b4100480de0010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dc501200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490de001200441017422092006200920064b1b22094100480de0010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dc6012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c94010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dde01200441017422082007200820074b1b22084100480dde010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dc50120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddf012004410174220b2007200b20074b1b220b4100480ddf010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dc701200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddf01200441017422092006200920064b1b22094100480ddf010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dc8012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c93010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddd01200441017422082007200820074b1b22084100480ddd010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dc70120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dde012004410174220b2007200b20074b1b220b4100480dde010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dc901200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dde01200441017422092006200920064b1b22094100480dde010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dca012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c92010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddc01200441017422082007200820074b1b22084100480ddc010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dc90120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a412f3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddd012004410174220b2007200b20074b1b220b4100480ddd010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dcb01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddd01200441017422092006200920064b1b22094100480ddd010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dcc012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c91010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490ddb01200441017422082007200820074b1b22084100480ddb010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dcb0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41303a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddc012004410174220b2007200b20074b1b220b4100480ddc010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dcd01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddc01200441017422092006200920064b1b22094100480ddc010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dce012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c90010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dda01200441017422082007200820074b1b22084100480dda010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dcd0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41313a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490ddb012004410174220b2007200b20074b1b220b4100480ddb010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dcf01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490ddb01200441017422092006200920064b1b22094100480ddb010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dd0012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8f010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd901200441017422082007200820074b1b22084100480dd9010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dcf0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41323a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dda012004410174220b2007200b20074b1b220b4100480dda010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dd101200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dda01200441017422092006200920064b1b22094100480dda010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dd2012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8e010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd801200441017422082007200820074b1b22084100480dd8010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dd10120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41333a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dd9012004410174220b2007200b20074b1b220b4100480dd9010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dd301200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dd901200441017422092006200920064b1b22094100480dd9010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dd4012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8d010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd701200441017422082007200820074b1b22084100480dd7010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dd30120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41343a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490dd8012004410174220b2007200b20074b1b220b4100480dd8010240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dd501200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490dd801200441017422092006200920064b1b22094100480dd8010240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dd6012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8c010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490dd601200441017422082007200820074b1b22084100480dd6010240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dd50120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41353a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da3022004410174220b2007200b20074b1b220b4100480da3020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dd801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da302200441017422092006200920064b1b22094100480da3020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450dd9012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8b010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490da102200441017422082007200820074b1b22084100480da1020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dd80120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41363a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da2022004410174220b2007200b20074b1b220b4100480da2020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dda01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da202200441017422092006200920064b1b22094100480da2020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450ddb012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c8a010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490da002200441017422082007200820074b1b22084100480da0020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dda0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41373a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da1022004410174220b2007200b20074b1b220b4100480da1020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450ddc01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da102200441017422092006200920064b1b22094100480da1020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450ddd012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c89010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9f02200441017422082007200820074b1b22084100480d9f020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450ddc0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41383a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490da0022004410174220b2007200b20074b1b220b4100480da0020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dde01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490da002200441017422092006200920064b1b22094100480da0020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450ddf012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c88010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9e02200441017422082007200820074b1b22084100480d9e020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450dde0120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a41393a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9f022004410174220b2007200b20074b1b220b4100480d9f020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450de001200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9f02200441017422092006200920064b1b22094100480d9f020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450de1012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c87010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9d02200441017422082007200820074b1b22084100480d9d020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450de00120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413a3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9e022004410174220b2007200b20074b1b220b4100480d9e020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450de201200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9e02200441017422092006200920064b1b22094100480d9e020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450de3012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c86010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9c02200441017422082007200820074b1b22084100480d9c020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450de20120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413b3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9d022004410174220b2007200b20074b1b220b4100480d9d020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450de401200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9d02200441017422092006200920064b1b22094100480d9d020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450de5012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c85010b0b200241046a210a200141086a2802002106200141046a280200210502400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9b02200441017422082007200820074b1b22084100480d9b020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450de40120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413c3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9c022004410174220b2007200b20074b1b220b4100480d9c020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450de601200220073602042009200b360200200828020021040b2008200441016a360200200720046a200541807f72200541ff0071200541077622041b3a00002004210520040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021050c010b200441016a22052004490d9c02200441017422092005200920054b1b22094100480d9c020240024020040d002009102d21050c010b200a28020020042009102f21050b2005450de7012002200536020420082009360200200728020021040b2007200441016a360200200520046a200641807f72200641ff0071200641077622041b3a00002004210620040d000c84010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9a02200441017422082007200820074b1b22084100480d9a020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450de60120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413d3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9b022004410174220b2007200b20074b1b220b4100480d9b020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450de801200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9b02200441017422092006200920064b1b22094100480d9b020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450de9012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c83010b0b200241046a210a200141086a2802002105200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200a28020021070c010b200441016a22072004490d9902200441017422082007200820074b1b22084100480d99020240024020040d002008102d21070c010b200a28020020042008102f21070b2007450de80120022007360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200720046a413e3a0000200241086a2109034002400240200928020020082802002204460d00200a28020021070c010b200441016a22072004490d9a022004410174220b2007200b20074b1b220b4100480d9a020240024020040d00200b102d21070c010b200a2802002004200b102f21070b2007450dea01200220073602042009200b360200200828020021040b2008200441016a360200200720046a200641807f72200641ff0071200641077622041b3a00002004210620040d000b2002410c6a2107200241086a2108034002400240200828020020072802002204460d00200a28020021060c010b200441016a22062004490d9a02200441017422092006200920064b1b22094100480d9a020240024020040d002009102d21060c010b200a28020020042009102f21060b2006450deb012002200636020420082009360200200728020021040b2007200441016a360200200620046a200541807f72200541ff0071200541077622041b3a00002004210520040d000c82010b0b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9802200441017422082005200820054b1b22084100480d98020240024020040d002008102d21050c010b200628020020042008102f21050b2005450dea0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a413f3a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d9802200441017422082005200820054b1b22084100480d98020240024020040d002008102d21050c010b200628020020042008102f21050b2005450deb0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c80010b200241046a210620012d0001210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9702200441017422082005200820054b1b22084100480d97020240024020040d002008102d21050c010b200628020020042008102f21050b2005450deb0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c0003a000002400240200241086a28020020082802002204460d00200628020021050c010b200441016a22052004490d9702200441017422082005200820054b1b22084100480d97020240024020040d002008102d21050c010b200628020020042008102f21050b2005450dec0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a200441016a360200200520046a20073a00000c7f0b200141046a280200210602400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9602200441017422072005200720054b1b22074100480d96020240024020040d002007102d21050c010b200228020420042007102f21050b2005450dec0120022005360204200241086a20073602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c1003a000020032006200210e9042003210420032d0000411f470def020c7e0b200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9502200441017422062005200620054b1b22064100480d95020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dec0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c2003a00002003200c200210ea042003210420032d0000411f470dee020c7d0b200241046a2106200141046a280200210702400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9402200441017422082005200820054b1b22084100480d94020240024020040d002008102d21050c010b200628020020042008102f21050b2005450dec0120022005360204200241086a20083602002002410c6a28020021040b2002410c6a2208200441016a360200200520046a41c3003a000002400240200241086a2802002205200828020022046b4104490d00200628020021050c010b200441046a22082004490d9402200541017422042008200420084b1b22044100480d94020240024020050d002004102d21050c010b200628020020052004102f21050b2005450ded0120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441046a360200200520046a20073600000c7c0b200241046a2106200141086a290300210c02400240200241086a2802002002410c6a2802002204460d00200628020021050c010b200441016a22052004490d9302200441017422072005200720054b1b22074100480d93020240024020040d002007102d21050c010b200628020020042007102f21050b2005450ded0120022005360204200241086a20073602002002410c6a28020021040b2002410c6a2207200441016a360200200520046a41c4003a000002400240200241086a2802002205200728020022046b4108490d00200628020021050c010b200441086a22072004490d9302200541017422042007200420074b1b22044100480d93020240024020050d002004102d21050c010b200628020020052004102f21050b2005450dee0120022005360204200241086a20043602002002410c6a28020021040b2002410c6a200441086a360200200520046a200c3700000c7b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9202200441017422062005200620054b1b22064100480d92020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c5003a00000c7a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9102200441017422062005200620054b1b22064100480d91020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c6003a00000c790b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9002200441017422062005200620054b1b22064100480d90020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c7003a00000c780b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8f02200441017422062005200620054b1b22064100480d8f020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c8003a00000c770b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8e02200441017422062005200620054b1b22064100480d8e020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41c9003a00000c760b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8d02200441017422062005200620054b1b22064100480d8d020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ca003a00000c750b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8c02200441017422062005200620054b1b22064100480d8c020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cb003a00000c740b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8b02200441017422062005200620054b1b22064100480d8b020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cc003a00000c730b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8a02200441017422062005200620054b1b22064100480d8a020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cd003a00000c720b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8902200441017422062005200620054b1b22064100480d89020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ce003a00000c710b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8802200441017422062005200620054b1b22064100480d88020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41cf003a00000c700b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8702200441017422062005200620054b1b22064100480d87020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d0003a00000c6f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8602200441017422062005200620054b1b22064100480d86020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d1003a00000c6e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8502200441017422062005200620054b1b22064100480d85020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d2003a00000c6d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8402200441017422062005200620054b1b22064100480d84020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d3003a00000c6c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8302200441017422062005200620054b1b22064100480d83020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d4003a00000c6b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8202200441017422062005200620054b1b22064100480d82020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d5003a00000c6a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8102200441017422062005200620054b1b22064100480d81020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d6003a00000c690b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8002200441017422062005200620054b1b22064100480d80020240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d7003a00000c680b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dff01200441017422062005200620054b1b22064100480dff010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d8003a00000c670b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfe01200441017422062005200620054b1b22064100480dfe010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41d9003a00000c660b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfd01200441017422062005200620054b1b22064100480dfd010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41da003a00000c650b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfc01200441017422062005200620054b1b22064100480dfc010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41db003a00000c640b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfb01200441017422062005200620054b1b22064100480dfb010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dc003a00000c630b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfa01200441017422062005200620054b1b22064100480dfa010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41dd003a00000c620b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df901200441017422062005200620054b1b22064100480df9010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41de003a00000c610b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df801200441017422062005200620054b1b22064100480df8010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41df003a00000c600b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e0003a00000c5f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e1003a00000c5e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df501200441017422062005200620054b1b22064100480df5010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e2003a00000c5d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df401200441017422062005200620054b1b22064100480df4010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e3003a00000c5c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df301200441017422062005200620054b1b22064100480df3010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e4003a00000c5b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e5003a00000c5a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e6003a00000c590b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df001200441017422062005200620054b1b22064100480df0010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e7003a00000c580b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490def01200441017422062005200620054b1b22064100480def010240024020040d002006102d21050c010b200228020420042006102f21050b2005450dee0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e8003a00000c570b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dba02200441017422062005200620054b1b22064100480dba020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41e9003a00000c560b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db902200441017422062005200620054b1b22064100480db9020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ea003a00000c550b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db802200441017422062005200620054b1b22064100480db8020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41eb003a00000c540b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db702200441017422062005200620054b1b22064100480db7020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ec003a00000c530b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db602200441017422062005200620054b1b22064100480db6020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ed003a00000c520b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db502200441017422062005200620054b1b22064100480db5020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ee003a00000c510b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db402200441017422062005200620054b1b22064100480db4020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ef003a00000c500b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db302200441017422062005200620054b1b22064100480db3020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f0003a00000c4f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db202200441017422062005200620054b1b22064100480db2020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f1003a00000c4e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db102200441017422062005200620054b1b22064100480db1020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f2003a00000c4d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490db002200441017422062005200620054b1b22064100480db0020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f3003a00000c4c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490daf02200441017422062005200620054b1b22064100480daf020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f4003a00000c4b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dae02200441017422062005200620054b1b22064100480dae020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f5003a00000c4a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dad02200441017422062005200620054b1b22064100480dad020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f6003a00000c490b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dac02200441017422062005200620054b1b22064100480dac020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f7003a00000c480b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dab02200441017422062005200620054b1b22064100480dab020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f8003a00000c470b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490daa02200441017422062005200620054b1b22064100480daa020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41f9003a00000c460b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da902200441017422062005200620054b1b22064100480da9020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fa003a00000c450b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da802200441017422062005200620054b1b22064100480da8020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fb003a00000c440b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da702200441017422062005200620054b1b22064100480da7020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fc003a00000c430b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da602200441017422062005200620054b1b22064100480da6020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fd003a00000c420b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da502200441017422062005200620054b1b22064100480da5020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41fe003a00000c410b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da402200441017422062005200620054b1b22064100480da4020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ff003a00000c400b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da302200441017422062005200620054b1b22064100480da3020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4180013a00000c3f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da202200441017422062005200620054b1b22064100480da2020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4181013a00000c3e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da102200441017422062005200620054b1b22064100480da1020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4182013a00000c3d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490da002200441017422062005200620054b1b22064100480da0020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4183013a00000c3c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9f02200441017422062005200620054b1b22064100480d9f020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4184013a00000c3b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9e02200441017422062005200620054b1b22064100480d9e020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4185013a00000c3a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9d02200441017422062005200620054b1b22064100480d9d020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4186013a00000c390b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9c02200441017422062005200620054b1b22064100480d9c020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4187013a00000c380b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9b02200441017422062005200620054b1b22064100480d9b020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4188013a00000c370b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9a02200441017422062005200620054b1b22064100480d9a020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4189013a00000c360b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9902200441017422062005200620054b1b22064100480d99020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418a013a00000c350b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9802200441017422062005200620054b1b22064100480d98020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418b013a00000c340b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9702200441017422062005200620054b1b22064100480d97020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418c013a00000c330b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9602200441017422062005200620054b1b22064100480d96020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418d013a00000c320b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9502200441017422062005200620054b1b22064100480d95020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418e013a00000c310b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9402200441017422062005200620054b1b22064100480d94020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a418f013a00000c300b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9302200441017422062005200620054b1b22064100480d93020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4190013a00000c2f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9202200441017422062005200620054b1b22064100480d92020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4191013a00000c2e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9102200441017422062005200620054b1b22064100480d91020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4192013a00000c2d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d9002200441017422062005200620054b1b22064100480d90020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4193013a00000c2c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8f02200441017422062005200620054b1b22064100480d8f020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4194013a00000c2b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8e02200441017422062005200620054b1b22064100480d8e020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4195013a00000c2a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8d02200441017422062005200620054b1b22064100480d8d020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4196013a00000c290b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8c02200441017422062005200620054b1b22064100480d8c020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4197013a00000c280b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8b02200441017422062005200620054b1b22064100480d8b020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4198013a00000c270b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8a02200441017422062005200620054b1b22064100480d8a020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a4199013a00000c260b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8902200441017422062005200620054b1b22064100480d89020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419a013a00000c250b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8802200441017422062005200620054b1b22064100480d88020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419b013a00000c240b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8702200441017422062005200620054b1b22064100480d87020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419c013a00000c230b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8602200441017422062005200620054b1b22064100480d86020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419d013a00000c220b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8502200441017422062005200620054b1b22064100480d85020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419e013a00000c210b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8402200441017422062005200620054b1b22064100480d84020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a419f013a00000c200b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8302200441017422062005200620054b1b22064100480d83020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a0013a00000c1f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8202200441017422062005200620054b1b22064100480d82020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a1013a00000c1e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8102200441017422062005200620054b1b22064100480d81020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a2013a00000c1d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490d8002200441017422062005200620054b1b22064100480d80020240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a3013a00000c1c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dff01200441017422062005200620054b1b22064100480dff010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a4013a00000c1b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfe01200441017422062005200620054b1b22064100480dfe010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a5013a00000c1a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfd01200441017422062005200620054b1b22064100480dfd010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a6013a00000c190b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfc01200441017422062005200620054b1b22064100480dfc010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a7013a00000c180b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfb01200441017422062005200620054b1b22064100480dfb010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a8013a00000c170b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfa01200441017422062005200620054b1b22064100480dfa010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41a9013a00000c160b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df901200441017422062005200620054b1b22064100480df9010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41aa013a00000c150b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df801200441017422062005200620054b1b22064100480df8010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ab013a00000c140b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ac013a00000c130b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ad013a00000c120b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df501200441017422062005200620054b1b22064100480df5010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ae013a00000c110b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df401200441017422062005200620054b1b22064100480df4010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41af013a00000c100b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df301200441017422062005200620054b1b22064100480df3010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b0013a00000c0f0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b1013a00000c0e0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b2013a00000c0d0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df001200441017422062005200620054b1b22064100480df0010240024020040d002006102d21050c010b200228020420042006102f21050b2005450def0120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b3013a00000c0c0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfc01200441017422062005200620054b1b22064100480dfc010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b4013a00000c0b0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfb01200441017422062005200620054b1b22064100480dfb010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b5013a00000c0a0b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490dfa01200441017422062005200620054b1b22064100480dfa010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b6013a00000c090b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df901200441017422062005200620054b1b22064100480df9010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b7013a00000c080b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df801200441017422062005200620054b1b22064100480df8010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b8013a00000c070b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df701200441017422062005200620054b1b22064100480df7010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41b9013a00000c060b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df601200441017422062005200620054b1b22064100480df6010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41ba013a00000c050b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df501200441017422062005200620054b1b22064100480df5010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bb013a00000c040b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df401200441017422062005200620054b1b22064100480df4010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bc013a00000c030b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df301200441017422062005200620054b1b22064100480df3010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bd013a00000c020b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df201200441017422062005200620054b1b22064100480df2010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41be013a00000c010b02400240200241086a2802002002410c6a2802002204460d00200228020421050c010b200441016a22052004490df101200441017422062005200620054b1b22064100480df1010240024020040d002006102d21050c010b200228020420042006102f21050b2005450df00120022005360204200241086a20063602002002410c6a28020021040b2002410c6a200441016a360200200520046a41bf013a00000b2000411f3a000020012d00004109470df1010240200141046a280200220228020441ffffffff0371450d0020022802001031200128020421020b200210310cf1010b200641011033000b200641011033000b200841011033000b200841011033000b200841011033000b200841011033000b200841011033000b200841011033000b200641011033000b200641011033000b200741011033000b200a41011033000b200741011033000b200a41011033000b200641011033000b200a41011033000b200641011033000b200741011033000b200a41011033000b200741011033000b200a41011033000b200641011033000b200641011033000b200641011033000b200741011033000b200a41011033000b200741011033000b200a41011033000b200741011033000b200a41011033000b200741011033000b200a41011033000b200741011033000b200a41011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b1034000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200b41011033000b200941011033000b200841011033000b200841011033000b200841011033000b200841011033000b200741011033000b200641011033000b200841011033000b200441011033000b200741011033000b200441011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b1034000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b1034000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b200641011033000b1034000b20002004290200370200200041086a200441086a29020037020020012d00004109470d000240200141046a280200220228020441ffffffff0371450d0020022802001031200128020421020b200210310b200341106a24000ba60301077f2002410c6a2103200141086a28020022042105024002400240034002400240200241086a220628020020032802002207460d00200228020421080c010b200741016a22082007490d04200741017422092008200920084b1b22094100480d040240024020070d002009102d21080c010b200228020420072009102f21080b2008450d022002200836020420062009360200200328020021070b2003200741016a360200200820076a200541807f72200541ff0071200541077622071b3a00002007210520070d000b200128020421032001280200210802400240200241086a28020022052002410c6a28020022076b2004490d00200228020421050c010b200720046a22062007490d03200541017422072006200720064b1b22074100480d030240024020050d002007102d21050c010b200228020420052007102f21050b2005450d0220022005360204200241086a20073602002002410c6a28020021070b2002410c6a200720046a360200200520076a2008200410ab051a02402003450d00200810310b2000411f3a00000f0b200941011033000b200741011033000b1034000b8907010b7f230041d0086b220224004100210341002104024002400240024002400240024002400240034002402003411f4d0d00410f21030c030b20012802082205200128020c2206460d01200641016a22072006490d0320052007490d072001280200220820066a2d000021062001200736020c200641ff00712003411f71742004722104200341076a21032006418001710d000b024020034120490d00410d21032006410f4b0d020b024020040d002000428080808010370200200041086a42003702000c090b200241086a410041800810aa051a410121094100210a410021064100210b034002400240200520076b2004200b6b22034180082003418008491b2203490d00200720036a220c2007490d062005200c4f0d01200c200510b601000b200241013a00a708200241cc086a4101360200200242013702bc082002419cdfc3003602b8082002412336029c08200220024198086a3602c8082002200241a7086a36029808200241a8086a200241b8086a10eb0320024194086a200241b0086a280200360000200220022903a80837008c08200041053a000420002002290089083700052000410c6a20024190086a29000037000020004101360200200a450d0a200910310c0a0b200241086a200820076a200310ab051a2001200c36020c02400240200a20066b2003490d00200320066a210c0c010b200620036a220c2006490d07200a4101742207200c2007200c4b1b22074100480d0702400240200a0d002007102d21090c010b2009200a2007102f21090b2009450d062007210a0b200920066a200241086a200310ab051a20042003200b6a220b4d0d08200128020c21072001280208210520012802002108200c21060c000b0b200241013a0089082002411c6a41013602002002420137020c2002419cdfc3003602082002412336029c08200220024198086a360218200220024189086a36029808200241b8086a200241086a10eb03410521030b2000200336020420004101360200200041086a20022903b808370200200041106a200241b8086a41086a2802003602000c060b417f2007107b000b2007200c107b000b200741011033000b1034000b2007200510b601000b200241086a2009200c10c401024020022802084101470d000240200a450d00200910310b200041083a0004200041013602000c010b200020093602042000410c6a200c360200200041086a200a360200200041003602000b200241d0086a24000b1600200120002802002200280200200028020810f5030bcb0401067f200441046a2105024002400240024002400240200441086a2802002004410c6a2802002206460d00200528020021070c010b200641016a22072006490d04200641017422082007200820074b1b22084100480d040240024020060d002008102d21070c010b200528020020062008102f21070b2007450d0120042007360204200441086a20083602002004410c6a28020021060b2004410c6a2208200641016a360200200720066a20024101463a0000200441086a2109034002400240200928020020082802002206460d00200528020021070c010b200641016a22072006490d052006410174220a2007200a20074b1b220a4100480d050240024020060d00200a102d21070c010b20052802002006200a102f21070b2007450d03200420073602042009200a360200200828020021060b2008200641016a360200200720066a200141807f72200141ff0071200141077622061b3a00002006210120060d000b024020024101470d002004410c6a2107200441086a2108034002400240200828020020072802002206460d00200528020021010c010b200641016a22012006490d06200641017422092001200920014b1b22094100480d060240024020060d002009102d21010c010b200528020020062009102f21010b2001450d052004200136020420082009360200200728020021060b2007200641016a360200200120066a200341807f72200341ff0071200341077622061b3a00002006210320060d000b0b2000411f3a00000f0b200841011033000b200a41011033000b200941011033000b1034000bb607010a7f230041d0006b2202240002400240024002400240024020012802082203200128020c2204460d00200441016a22052004490d02200320054f0d012005200310b601000b200241013a001f200241cc006a41013602002002420137023c2002419cdfc300360238200241233602342002200241306a36024820022002411f6a360230200241206a200241386a10eb032002411b6a200241286a28020036000020022002290320370013200220022900103703002002200241176a290000370007200041053a0004200020022903003700052000410c6a2002290007370000200041013602000c040b2001280200220620046a2d000021072001200536020c024020074102490d00200041173a000420004101360200200041056a20073a00000c040b410120036b2108200441026a2104410021054100210902400240034002402005411f4d0d00410f21050c020b02400240200820046a4102460d002004450d06200320044f0d012004200310b601000b200241013a0000200241cc006a41013602002002420137023c2002419cdfc300360238200241233602342002200241306a36024820022002360230200241106a200241386a10eb03410521050c020b200620046a417f6a2d0000210a2001200436020c200a41ff00712005411f71742009722109200441016a2104200541076a2105200a418001710d000b20054120490d01410d2105200a4110490d010b2000200536020420004101360200200041086a2002290310370200200041106a200241106a41086a2802003602000c040b4100210502402007410171450d002004417f6a2104410021054100210b02400240034002402005411f4d0d00410f21040c020b0240024020032004460d002004417f460d082003200441016a22084f0d01200441016a200310b601000b200241013a0000200241cc006a41013602002002420137023c2002419cdfc300360238200241233602342002200241306a36024820022002360230200241106a200241386a10eb03410521040c020b200620046a2d0000210a2001200836020c200a41ff00712005411f7174200b72210b200541076a210520082104200a418001710d000b20054120490d01410d2104200a4110490d010b2000200436020420004101360200200041086a2002290310370200200041106a200241106a41086a2802003602000c050b410121050b20002009360204200041003602002000410c6a200b360200200041086a20053602000c030b417f2005107b000b417f2004107b000b417f200441016a107b000b200241d0006a24000b91cf0106077f017e047f017e0c7f027e2300418081046b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402001280204220320012802082204460d00200441016a22052004490d02200320054f0d012005200310b601000b200241013a0030200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a10eb0320022802e88004210420022802ec8004210120004101360200200041003a00042001450d2b200410310c2b0b200128020020046a2d00002104200120053602082004410c4b0d03024002400240024020040e0d0001161514131211060d0c0b05000b200241d8006a200110fa0441012106200228025c2107024020022802584101470d0020074108762108200241e8006a2802002101200241d8006a41086a29030021090c2d0b4100210a200241d8006a41004180800110aa051a4100210b410021032007450d1f410121064100210b410021054100210c0340024002402001280204220d200128020822036b2007200c6b220441808001200441808001491b2204490d00200320046a22082003490d05200d20084f0d012008200d10b601000b200241013a00d88004200241fc80046a4101360200200242013702ec80042002419cdfc3003602e880042002412336021c2002200241186a3602f880042002200241d880046a360218200241306a200241e880046a10eb032002290330210920022802382101410521070240200b450d00200610310b0c2e0b200241d8006a200128020020036a200410ab051a2001200836020802400240200b20056b2004490d00200420056a21030c010b200520046a22032005490d22200b41017422082003200820034b1b22084100480d2202400240200b0d002008102d21060c010b2006200b2008102f21060b2006450d032008210b0b200620056a200241d8006a200410ab051a2003210520072004200c6a220c4b0d000c200b0b200241d8006a2001108105024020022802584101470d00200228025c22044108762105200241d8006a41086a2903002209422088210e200241e8006a28020021030c1e0b200241ec006a2802002107200241e8006a2802002101200241e4006a2802002103200241e0006a280200210b200228025c210c4100210441002105024002400240034002402004411f4d0d00410f21040c020b0240024020032001460d002001417f460d052003200141016a220a4f0d01200141016a200310b601000b200241013a0030200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241306a360218200241206a200241d8006a10eb03410521040c020b200c20016a2d0000220641ff00712004411f71742005722105200441076a2104200a21012006418001710d000b20044120490d01410d210420064110490d010b200241e880046a41086a200241206a41086a28020022033602002002200229032022093703e880042009422088a7210a2009a721060c1e0b2002410036023820024204370330024020050d00410421010c1d0b410120036b21084100210f024002400340024002400240024002400240024002402003200a460d00200a41016a2201200a490d0120032001490d060240200c200a6a2d0000220d41e000460d00411821100c270b200f41016a210f200a41026a21014100210441002106034002402004411f4d0d00410f21104100210d0c270b02400240200820016a4102460d002001450d05200320014f0d012001200310b601000b200241013a00482002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241e880046a200241d8006a10eb0320022903e880042209422088a7210a20022802f0800421012009a72106410521104100210d0c270b200c20016a417f6a2d0000220a41ff00712004411f71742006722106200141016a2101200441076a2104200a418001710d000b024020044120490d00200a4110490d00410d21104100210d0c260b2001417f6a210441002111410121120240024020060d00410021130c010b410021144100210a410021130340024002400240024020032004460d002001200a6a220d450d092003200d4f0d01200d200310b601000b200241013a00d880042002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a10eb0320022802e88004210620022802ec8004210a20022802f080042101410521100c010b02400240200c20046a2c0000220d41004e0d00411921100c010b41062110200d41c00071450d00200d41807f72220d41ff017141fb014b0d020b0b2013450d28201210310c280b200a41016a21100240200a2013470d0020142010201420104b1b22134100480d2e02400240200a0d002013102d21120c010b2012200a2013102f21120b2012450d070b200441016a21042012200a6a200d417f733a0000201441026a21142010210a20062010470d000b0b20124110764110742215201241087641ff0171410874221672201241ff017122127221144100210103404100210d02402011411f4d0d00410f21100c260b0240024020032004460d002004417f460d082003200441016a220a4f0d01200441016a200310b601000b200241013a00d880042002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a10eb0320022802e88004210620022802ec8004210a20022d00f08004210120022d00f18004210320022f01f280042104410521100c260b200c20046a2d0000221041ff00712011411f71742001722101201141076a2111200a21042010418001710d000b20114120490d072010410f4d0d07410d21100c240b200241013a00d880042002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a10eb0320022802e88004210620022802ec8004210a20022d00f08004210120022d00f18004210320022f01f280042104410521100c250b417f2001107b000b417f2001107b000b417f200d107b000b201341011033000b417f200441016a107b000b2001200310b601000b0240200141014d0d00410421104192b0c40021064124210a0c1c0b024002400240024020010e020100010b2003200a460d1d200a41016a2201200a490d0220032001490d050240200c200a6a2c0000220d41004e0d00411921100c200b41062110200d41c00071450d1c200d41807f72220d41ff017141fb014d0d1c200d417f7321112001210a0c010b410421110b0240200228023822042002280234470d00200441016a22012004490d252004410174220d2001200d20014b1b220141ffffffff00712001470d25200141047422104100480d250240024020040d002010102d210d0c010b200228023020044104742010102f210d0b200d450d03200220013602342002200d3602300b2002280230220120044104746a220d20174180807c71201141ff01714108747241e00072221736020c200d2006360208200d2013360204200d20162012722015723602002002200441016a360238200f2005460d200c010b0b417f200a41016a107b000b201041041033000b200a41016a200310b601000b417f200141016a107b000b200841011033000b20032008107b000b417f2005107b000b200241d8006a2001108105024020022802584101470d00200041013602002000200241d8006a41047222012902003702042000410c6a200141086a2902003702000c290b200241ec006a2802002108200241e8006a2802002104200241e4006a2802002105200241e0006a280200210b200228025c210c410021034100210102400240034002402003411f4d0d00410f21040c080b20052004460d062004417f460d012005200441016a2206490d02200c20046a2d0000220a41ff00712003411f71742001722101200341076a210320062104200a418001710d000b20034120490d04410d2104200a410f4b0d060c040b417f200441016a107b000b200441016a200510b601000b200241d8006a2001108105024020022802584101470d00200041013602002000200241d8006a41047222012902003702042000410c6a200141086a2902003702000c280b200241ec006a2802002108200241e8006a2802002104200241e4006a2802002105200241e0006a280200210b200228025c210c410021034100210102400240034002402003411f4d0d00410f21040c0d0b20052004460d0b2004417f460d012005200441016a2206490d02200c20046a2d0000220a41ff00712003411f71742001722101200341076a210320062104200a418001710d000b20034120490d09410d2104200a410f4b0d0b0c090b417f200441016a107b000b200441016a200510b601000b200041123a000420004101360200200041056a20043a00000c260b200820064621040240200b450d00200c10310b02402004450d00410b21030c1f0b20024103410220041b3a00d88004200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a10eb03200241f380046a200241386a280200360000200220022903303700eb8004200041053a0004200020022900e880043700052000410c6a200241ef80046a290000370000200041013602000c250b200241013a0030200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a10eb03410521040b2000200436020420004101360200200041086a20022903e88004370200200041106a200241e880046a41086a280200360200200b450d23200c10310c230b200241d8006a20011081050240024020022802584101470d00200228025c22014108762106200241d8006a41086a2903002209422088210e200241e8006a280200210c0c010b200241c0006a200241ec006a280200360200200241386a200241e4006a2902003703002002200229025c370330410021014100210502400240024002400240024002400240034002402001411f4d0d00410f21080c020b024002402002280238220a200228023c2204460d00200441016a22032004490d05200a20034f0d012003200a10b601000b200241013a00d88004200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241206a200241d8006a10eb03410521080c020b200228023020046a2d000021042002200336023c200441ff00712001411f71742005722105200141076a21012004418001710d000b20014120490d01410d210820044110490d010b200241e880046a41086a200241206a41086a280200220c3602002002200229032022093703e880042009422088a721072009a7210d410021060c050b200241003602502002420437034802400240024020050d00410421010c010b410021080340200841016a2108410021014100210a0240024002400240024002400240034002402001411f4d0d00410f21080c020b0240024020022802382206200228023c2204460d00200441016a22032004490d06200620034f0d012003200610b601000b200241013a00202002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241206a360218200241e880046a200241d8006a10eb03200241d880046a41086a200241e880046a41086a280200360200200220022903e8800422093703d880042009a7210d410521080c030b200228023020046a2d000021042002200336023c200441ff00712001411f7174200a72210a200141076a21012004418001710d000b20014120490d0220044110490d02410d21080b0b20022802e08004210c20022802dc80042107410021060c0b0b200241d8006a200241306a10eb04024020022802584101470d00200228025c220841087621062002280268210c200228026421072002280260210d0c0b0b200228026421142002280260210f200228025c2112410021044100210c034002402004411f4d0d00410f21080c0b0b20022802382206200228023c2203460d09200341016a22012003490d0220062001490d032002280230220b20036a2d000021032002200136023c200341ff00712004411f7174200c72210c200441076a21042003418001710d000b20044120490d032003410f4d0d03410d21080c090b417f2003107b000b417f2001107b000b2001200610b601000b41002111200241d8006a41004180800410aa051a02400240200c0d00410121104100210d0c010b4100211141012110410021034100210702400240034002400240200620016b200c20076b220441808004200441808004491b2204490d00200120046a220d2001490d032006200d4f0d01200d200610b601000b200241013a0020200241013602fc8004200242013702ec80042002419cdfc3003602e880042002412336021c2002200241186a3602f880042002200241206a360218200241d880046a200241e880046a10eb0320022802d88004210d20022802dc8004210720022802e08004210c410521082011450d0a201010310c0a0b200241d8006a200b20016a200410ab051a2002200d36023c02400240201120036b2004490d00200420036a210d0c010b200320046a220d2003490d2420114101742201200d2001200d4b1b22014100480d240240024020110d002001102d21100c010b201020112001102f21100b2010450d03200121110b201020036a200241d8006a200410ab051a200c200420076a22074d0d03200228023c2101200228023821062002280230210b200d21030c000b0b2001200d107b000b200141011033000b024020022802502203200228024c470d00200341016a22012003490d20200341017422042001200420014b1b2204ad421c7e2209422088a70d202009a722064100480d200240024020030d002006102d21010c010b20022802482003411c6c2006102f21010b2001450d032002200436024c200220013602480b200228024822012003411c6c6a2204200a41087622063b000120042010360210200420123602042004200a3a0000200441036a20064110763a0000200441186a200d360200200441146a20113602002004410c6a2014360200200441086a200f3602002002200341016a36025020082005470d000b0b200228023c2002280240462104200229024c2209422088210e02402002280234450d00200228023010310b20014108762105200ea721032009a7210b2004450d062005410874200141ff01717221012003ad422086200bad842109410d21030c230b200641041033000b417f2003107b000b200241013a00d880042002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a10eb0320022903e880042209422088a7210720022802f08004210c2009a7210d410521080b02402014450d0020144104742104201221010340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d0020032802001031200528020021030b200310310b200141106a2101200441706a22040d000b0b41002106200f450d00201210310b20022802482111024020022802502201450d0020112001411c6c6a210b2011210a03400240200a2802042201450d000240200a410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d0020032802001031200528020021030b200310310b200141106a2101200441706a22040d000b0b200a41086a280200450d00200a28020410310b200a411c6a21010240200a41146a280200450d00200a28021010310b2001210a2001200b470d000b0b200228024c450d00201110310b2006410874200841ff01717221012007ad220e422086200dad8421092002280234450d01200228023010310c010b2005410874200141ff017172210820024103410220041b3a00d88004200241d8006a41146a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a10eb0320022903e88004210920022802f08004210c02402003450d0020082003411c6c6a21062008210a03400240200a2802042201450d000240200a410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d0020032802001031200528020021030b200310310b200141106a2101200441706a22040d000b0b200a41086a280200450d00200a28020410310b200a411c6a21010240200a41146a280200450d00200a28021010310b2001210a20012006470d000b0b2009422088210e4105210141002106200b450d00200810310b20004101360200200041106a200c360200200041086a200e422086200942ffffffff0f838437020020002006410874200141ff0171723602040c220b200241d8006a20011081050240024020022802584101470d00200228025c220b4108762104200241d8006a41086a2903002209422088210e200241e8006a28020021080c010b200241ec006a2802002111200241e8006a2802002101200241e4006a2802002105200241e0006a2802002107200228025c210c410021044100210a02400240024002400240024002400240024002400240034002402004411f4d0d00410f210b0c020b0240024020052001460d002001417f460d052005200141016a22034f0d01200141016a200510b601000b200241013a00d88004200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a10eb034105210b0c020b200c20016a2d0000220641ff00712004411f7174200a72210a200441076a2104200321012006418001710d000b20044120490d01410d210b20064110490d010b200241306a41086a200241e880046a41086a2802002208360200200220022903e8800422093703302009422088a7210d2009a721110c080b20024100360250200242043703480240024002400240200a0d00410421010c010b200241e1006a21134100210f0340200f41016a210f410021014100210602400240024002400240024002400240024002400240024002400240034002402001411f4d0d00410f210b0c020b0240024020052003460d002003417f460d062005200341016a22044f0d01200341016a200510b601000b200241013a00e880042002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241e880046a360218200241206a200241d8006a10eb034105210b200228022021110c030b200c20036a2d0000220b41ff00712001411f71742006722106200141076a210120042103200b418001710d000b20014120490d02200b4110490d02410d210b0b0b200228022821082002280224210d0c160b4100210d200241d8006a41004180800110aa051a0240024020060d004101211020042103410021124100210b0c010b41002112410121104100210841002114034002400240200520046b200620146b220141808001200141808001491b2201490d00200420016a22032004490d05200520034f0d012003200510b601000b200241013a0020200241013602fc8004200242013702ec80042002419cdfc3003602e880042002412336021c2002200241186a3602f880042002200241206a360218200241d880046a200241e880046a10eb0320022802d88004211120022802dc8004210d20022802e0800421084105210b2012450d18201010310c180b200241d8006a200c20046a200110ab051a02400240201220086b2001490d00200120086a210b0c010b200820016a220b2008490d3020124101742204200b2004200b4b1b22044100480d300240024020120d002004102d21100c010b201020122004102f21100b2010450d05200421120b201020086a200241d8006a200110ab051a20032104200b21082006200120146a22144b0d000b0b2002200b3602402002410036023c2002200b36023820022012360234200220103602304100210141002108024002400240034002402001411f4d0d00410f210b0c020b02400240200b200d460d00200d417f460d09200b200d41016a22064f0d01200d41016a200b10b601000b200241013a00202002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241206a360218200241e880046a200241d8006a10eb0320022903e880042209422088a7210d20022802f0800421082009a721114105210b0c030b2010200d6a2d000021042002200636023c200441ff00712001411f71742008722108200141076a21012006210d2004418001710d000b20014120490d0220044110490d02410d210b0b0b200220083602e080042002200dad4220862011ad843703d880040c150b4100210d200241003602e08004200242043703d880040240024020080d004104211841002119410021150c010b4100211941042118410021150340201921162015221a41016a21154100210141002110024002400240034002402001411f4d0d00410f21040c020b0240024020022802382214200228023c2204460d00200441016a22062004490d0c201420064f0d012006201410b601000b200241013a00e880042002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241e880046a360218200241206a200241d8006a10eb0341052104200228022021110c030b2002280230221220046a2d0000210b2002200636023c200b41ff00712001411f71742010722110200141076a2101200b418001710d000b20014120490d02200b4110490d02410d21040b0b200228022821082002280224210d410021010c0c0b02400240024020142006460d00200441026a21042006417f460d0a20142004490d0c201220066a2c000021012002200436023c0240200141004e0d00411921040c0f0b41062104200141c00071450d0d200141807f72220141ff017141fb014d0d0d201a2016460d0120162119201a21160c020b200241013a00202002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241206a360218200241e880046a200241d8006a10eb0320022802e88004211120022802ec8004210d20022802f080042108410521040c0d0b201641016a22042016490d30201641017422062004200620044b1b221941ffffffff01712019470d30201941037422044100480d300240024020160d002004102d21180c010b201820164103742004102f21180b2018450d09200220183602d880040b201820164103746a2204201741807e712001417f7341ff01717222173a00042004201036020020152008470d000b200220193602dc8004200220153602e080040b201820154103746a210b201821010340200b2001460d0b200d20012802006a2204200d492106200141086a21012004210d20060d120c000b0b417f200341016a107b000b20042003107b000b200441011033000b417f200d41016a107b000b417f2006107b000b417f2004107b000b200441041033000b2004201410b601000b0b200220163602dc80042002201a3602e08004200141ff0171410874200472210b20160d090c0a0b4101210b4100210441082114410021060340200241d8006a200241306a10ec04024020022802584101470d00200228026821082002280264210d20022802602111200228025c210b0c070b200241e880046a41026a2201201341026a2d00003a0000200220132f00003b01e8800420022802642112200229036821090240024002400240024020022d006022084106470d00200b417f6a210b0c010b2008417e6a41034f0d00200b41016a220d200b4f2110200d210b20100d004115210d41bfa9c40021114104210b20084109460d010c0a0b200241d8006a41026a220d20012d00003a0000200220022f01e880043b015820062004460d01200421100c020b0240201228020441ffffffff0371450d00201228020010310b201210310c080b200441016a22012004490d24200441017422062001200620014b1b221041ffffffff00712010470d24201041047422014100480d240240024020040d002001102d21140c010b201420044104742001102f21140b2014450d0420042106201021040b201420064104746a220120083a00002001200937030820012012360204200120022f01583b0001200141036a200d2d00003a0000200641016a2106200b0d000b200228023c200228024046210102402002280234450d00200228023010310b02400240024002402001450d002002280250220b200228024c470d03200b41016a2201200b490d26200b41017422042001200420014b1b2208ad42187e2209422088a70d262009a722044100480d26200b0d012004102d21010c020b20024103410220011b3a00d880042002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a10eb0320022802e88004211120022802ec8004210d20022802f08004210802402006450d0020064104742104201421010340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d0020032802001031200528020021030b200310310b200141106a2101200441706a22040d000b0b02402010450d00201410310b4105210b2019450d0d201810310c0d0b2002280248200b41186c2004102f21010b2001450d042002200836024c200220013602480b20022802482201200b41186c6a2204201436020c200420153602082004201936020420042018360200200441146a2006360200200441106a20103602002002200b41016a360250200f200a470d000b0b20032011462104200229024c2209422088210e02402007450d00200c10310b200ea721032009a721072004450d0a2003ad4220862007ad842109410c21030c260b200141081033000b200441041033000b417f200141016a107b000b02402006450d0020064104742103201421010340024020012d00004109470d000240200141046a220a280200220528020441ffffffff0371450d0020052802001031200a28020021050b200510310b200141106a2101200341706a22030d000b0b2004450d01201410310c010b20022802f08004210820022802ec8004210d411c210b0b2019450d010b201810310b2002280234450d00200228023010310b20022802482110024020022802502201450d002010200141186c6a21062010210a03400240200a41046a280200450d00200a28020010310b0240200a41146a2802002204450d00200a28020c2101200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d0020032802001031200528020021030b200310310b200141106a2101200441706a22040d000b0b200a41186a21010240200a41106a280200450d00200a28020c10310b2001210a20012006470d000b0b200228024c450d00201010310b200b4108762104200dad220e4220862011ad8421092007450d01200c10310c010b20024103410220041b3a0030200241d8006a41146a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a10eb0320022903e88004210920022802f08004210802402003450d002001200341186c6a210c2001210603400240200641046a280200450d00200628020010310b0240200641146a2802002203450d00200628020c2104200341047421030340024020042d00004109470d000240200441046a220a280200220528020441ffffffff0371450d0020052802001031200a28020021050b200510310b200441106a2104200341706a22030d000b0b200641186a21040240200641106a280200450d00200628020c10310b200421062004200c470d000b0b2009422088210e4105210b410021042007450d00200110310b20004101360200200041106a2008360200200041086a200e422086200942ffffffff0f838437020020002004410874200b41ff0171723602040c210b200241d8006a20011081050240024020022802584101470d00200228025c22044108762106200241d8006a41086a2903002209422088210e200241e8006a280200210c0c010b200241f880046a200241ec006a280200360200200241f080046a200241e4006a2902003703002002200229025c3703e88004410021014100210502400240024002400240034002402001411f4d0d00410f21080c020b0240024020022802f08004220a20022802f480042204460d00200441016a22032004490d05200a20034f0d012003200a10b601000b200241013a0048200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a10eb03200241d880046a41086a200241306a41086a280200360200200220022903303703d88004410521080c020b20022802e8800420046a2d00002104200220033602f48004200441ff00712001411f71742005722105200141076a21012004418001710d000b20014120490d01410d210820044110490d010b200241206a41086a200241d880046a41086a280200220c360200200220022903d8800422093703202009422088a721072009a7210d410021060c020b200241003602e08004200242043703d88004024002400240024020050d00410421010c010b4100210b0340200b41016a210b41002106410021014100210a02400240024002400240034002402001411f4d0d00410f21080c030b20022802f08004220c20022802f480042204460d01200441016a22032004490d03200c2003490d0420022802e8800420046a2d00002104200220033602f48004200441ff00712001411f7174200a72210a200141076a21012004418001710d000b024020014120490d002004410f4d0d00410d21080c020b200241d8006a200241e880046a10eb04024020022802584101470d00200228025c220841087621062002280268210c200228026421072002280260210d0c020b2002280264211120022802602114200228025c2110200241d8006a200241e880046a10ed04200228025822124101470d04200228025c21082002280268210c200228026421072002280260210d02402011450d0020114104742104201021010340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d0020032802001031200528020021030b200310310b200141106a2101200441706a22040d000b0b200841087621062014450d01201010310c010b200241013a00482002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a10eb0320022903302209422088a721072002280238210c2009a7210d410521080b20022802d880042111024020022802e080042201450d0020112001411c6c6a210b2011210a03400240200a2802042201450d000240200a410c6a2802002204450d00200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d0020032802001031200528020021030b200310310b200141106a2101200441706a22040d000b0b200a41086a280200450d00200a28020410310b200a411c6a21010240200a41146a280200450d00200a28021010310b2001210a2001200b470d000b0b20022802dc8004450d08201110310c080b417f2003107b000b2003200c10b601000b4100210c2002280260210d200228025c2107024002402002280264220141027422030d0041042108410021060c010b2003410275220641ffffffff03712006470d1c200641027422044100480d1c2004102d2208450d030b02402001450d002003417c6a210c2008210120072104034020012004280200360200200141046a2101200441046a21042003417c6a22030d000b200c41027641016a210c0b0240200d450d00200710310b024020022d005c4105470d002012450d002002280264450d00200228026010310b024020022802e08004220320022802dc8004470d00200341016a22012003490d1c200341017422042001200420014b1b2207ad421c7e2209422088a70d1c2009a722044100480d1c0240024020030d002004102d21010c010b20022802d880042003411c6c2004102f21010b2001450d04200220073602dc8004200220013602d880040b20022802d8800422012003411c6c6a2204200a41087622073b000120042008360210200420103602042004200a3a0000200441036a20074110763a0000200441186a200c360200200441146a20063602002004410c6a2011360200200441086a20143602002002200341016a3602e08004200b2005470d000b0b20022802f4800420022802f8800446210420022902dc80042209422088210e024020022802ec8004450d0020022802e8800410310b200ea721032009a721082004450d042003ad4220862008ad842109410a21030c1f0b200441041033000b200441041033000b417f2003107b000b2006410874200841ff01717221042007ad220e422086200dad84210920022802ec8004450d0120022802e8800410310c010b20024103410220041b3a00d88004200241d8006a41146a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a10eb03200229033021092002280238210c02402003450d0020012003411c6c6a210b200121060340024020062802042204450d0002402006410c6a2802002203450d00200341047421030340024020042d00004109470d000240200441046a220a280200220528020441ffffffff0371450d0020052802001031200a28020021050b200510310b200441106a2104200341706a22030d000b0b200641086a280200450d00200628020410310b2006411c6a21040240200641146a280200450d00200628021010310b200421062004200b470d000b0b2009422088210e41052104410021062008450d00200110310b20004101360200200041106a200c360200200041086a200e422086200942ffffffff0f838437020020002006410874200441ff0171723602040c200b200820064621040240200b450d00200c10310b02402004450d00410921030c190b20024103410220041b3a00d88004200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a10eb03200241f380046a200241386a280200360000200220022903303700eb8004200041053a0004200020022900e880043700052000410c6a200241ef80046a290000370000200041013602000c1f0b200241013a0030200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a10eb03410521040b2000200436020420004101360200200041086a20022903e88004370200200041106a200241e880046a41086a280200360200200b450d1d200c10310c1d0b200241d8006a20011081050240024020022802584101470d00200228025c22034108762104200241d8006a41086a2903002209422088210e200241e8006a28020021050c010b200241f880046a200241ec006a280200360200200241f080046a200241e4006a2902003703002002200229025c3703e880044100210141002105024002400240024002400240024002400240024002400240024002400240024002400240024003404200210902402001411f4d0d00410f21030c020b0240024020022802f08004220a20022802f480042204460d00200441016a22032004490d06200a20034f0d012003200a10b601000b200241013a0048200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a10eb032002290330220e42ffffffff0f832109200e42808080807083210e20022802382105410521030c030b20022802e8800420046a2d00002104200220033602f48004200441ff00712001411f71742005722105200141076a21012004418001710d000b20014120490d0220044110490d02410d21030b4200210e0b200220053602e080042002200e2009843703d88004200e422088a721062009a7210c0c100b20024100360250200242043703484104210102402005450d00410021114100210d410021120340200241d8006a200241e880046a10f004024020022802584101470d002002200229026422093703d880042002280260210c200228025c21032009a721060c100b20022802602110200228025c21140240024020022802f08004220320022802f48004220a460d00200a41016a2204200a490d05200320044f0d012004200310b601000b200241013a00202002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241206a360218200241306a200241d8006a10eb030c0d0b2002280264210f20022802e880042206200a6a2d00002107200220043602f480040240200741034d0d00410a21040c0f0b0240024002400240024020070e0400010203000b410021074100210c4100210a03400240200c411f4d0d00410f21040c140b20032004460d122004417f460d092003200441016a2208490d0e200620046a2d0000210b200220083602f48004200b41ff0071200c411f7174200a72210a200c41076a210c20082104200b418001710d000b41002107200c4120490d03200b410f4d0d03410d21040c120b4100210c4100210a0340200c411f4b0d0f0240024020032004460d002004417f460d0b2003200441016a22084f0d01200441016a200310b601000b200241013a00202002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241206a360218200241306a200241d8006a10eb030c110b200620046a2d0000210b200220083602f48004200b41ff0071200c411f7174200a72210a200c41076a210c20082104200b418001710d000b41012107200c4120490d02200b410f4d0d020c0d0b4100210c4100210a0340200c411f4b0d0e0240024020032004460d002004417f460d0b2003200441016a22084f0d01200441016a200310b601000b200241013a00202002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241206a360218200241306a200241d8006a10eb030c100b200620046a2d0000210b200220083602f48004200b41ff0071200c411f7174200a72210a200c41076a210c20082104200b418001710d000b41022107200c4120490d01200b410f4b0d0c0c010b4100210c4100210a0340200c411f4b0d0d0240024020032004460d002004417f460d0b2003200441016a22084f0d01200441016a200310b601000b200241013a00202002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241206a360218200241306a200241d8006a10eb030c0f0b200620046a2d0000210b200220083602f48004200b41ff0071200c411f7174200a72210a200c41076a210c20082104200b418001710d000b41032107200c4120490d00200b410f4b0d0b0b2002200a3602e08004200220073602dc800420022902dc8004210902400240200d2011460d00201121030c010b201141016a22042011490d23201141017422032004200320044b1b2203ad42147e220e422088a70d23200ea722044100480d230240024020110d002004102d21010c010b2001201141146c2004102f21010b2001450d09200220013602482011210d200321110b2001200d41146c6a2204200937020c2004200f3602082004201036020420042014360200200d41016a210d201241016a22122005470d000b2002200336024c2002200d3602500b20022802f4800420022802f88004462104200229024c2209422088210e024020022802ec8004450d0020022802e8800410310b200ea721032009a7210a2004450d0e2003ad422086200aad842109410821030c260b417f2003107b000b417f2004107b000b417f200441016a107b000b417f200441016a107b000b417f200441016a107b000b417f200441016a107b000b200441041033000b200441016a200310b601000b410d2104410021070c030b410f2104410021070c020b2002280230210c2002290234210941052104410021070c010b200241013a00202002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241206a360218200241306a200241d8006a10eb032002280230210c20022902342109410521040b20074108742004722103200220093703d880042009a721062010450d00201410310b2002200d3602502002201136024c20022802dc800421050240200d450d00200d41146c210a2001210403400240200441046a280200450d00200428020010310b200441146a2104200a416c6a220a0d000b0b2011450d01200110310c010b20024103410220041b3a00d88004200241d8006a41146a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a10eb03200229033021092002280238210502402003450d00200341146c21032001210403400240200441046a280200450d00200428020010310b200441146a21042003416c6a22030d000b0b2009422088210e4105210341002104200a450d01200110310c010b200341087621042006ad220e422086200cad84210920022802ec8004450d0020022802e8800410310b20004101360200200041106a2005360200200041086a200e422086200942ffffffff0f838437020020002004410874200341ff0171723602040c1c0b200241d8006a20011081050240024020022802584101470d00200228025c22064108762104200241d8006a41086a2903002209422088210e200241e8006a280200210c0c010b200241c0006a200241ec006a280200360200200241386a200241e4006a2902003703002002200229025c370330410021014100210a0240024002400240024002400240024002400240024002400240024003404200210902402001411f4d0d00410f21060c020b0240024020022802382205200228023c2204460d00200441016a22032004490d06200520034f0d012003200510b601000b200241013a0048200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241e880046a200241d8006a10eb0320022903e88004220e42ffffffff0f832109200e42808080807083210e20022802f08004210c410521060c030b2002280230220620046a2d000021042002200336023c200441ff00712001411f7174200a72210a200141076a21012004418001710d000b20014120490d0220044110490d02410d21060b4200210e0b2002200c3602e080042002200e2009843703d88004200e422088a721072009a721080c0b0b200241003602502002420437034802400240200a0d00410421010c010b200a417f6a2111410421014104210f4104210a41042112410421144100210b4100210d03400240024020052003460d00200341016a220c2003490d052005200c4f0d01200c200510b601000b2002200b36024c2002200d360250200241013a0020200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241206a360218200241d880046a200241d8006a10eb0320022802d88004210820022802dc8004210720022802e08004210c410521010c090b200620036a2c000021042002200c36023c20044100480d0402400240200441c00071450d00200441807f72220441ff017141fb014b0d010b2002200b36024c2002200d360250410621010c080b024002400240024002402005200c460d00200341026a2108200c417f460d0a200520084f0d012008200510b601000b2002200b36024c2002200d360250200241013a0020200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241206a360218200241d880046a200241d8006a10eb0320022802d88004210820022802dc8004210720022802e08004210c410521010c010b2006200c6a2d000021032002200836023c0240200341014b0d004100210520030e020302030b2002200b36024c2002200d360250410c21010b200241f880046a200c360200200241f480046a2007360200200241f080046a2008360200200220033a00ed8004200220013a00ec80040c0b0b41800221050b200241d8006a200241306a10eb042002280264210720022802602108200228025c2106024020022802584101470d002002200b36024c2002200d360250200241e8006a280200210c0c0b0b02400240200d200b460d00200b210c200d210b0c010b200b41016a2201200b490d1d200b41017422032001200320014b1b220c41ffffffff0071200c470d1d200c41047422034100480d1d02400240200b0d002003102d21010c010b2012200b4104742003102f21010b2001450d07200220013602482001210f2001210a20012112200121140b2014200b4104746a220320104180807c712004417f7341ff017172200572221036020c200320073602082003200836020420032006360200200b41016a210d02402011450d002011417f6a2111200228023c21032002280238210520022802302106200c210b0c010b0b2002200c36024c2002200d3602500b200228023c2002280240462104200229024c2209422088210e02402002280234450d00200228023010310b200ea721032009a721082004450d092003ad4220862008ad842109410721030c200b417f2003107b000b417f200c107b000b2002200b36024c2002200d360250411921010c020b417f2008107b000b200341041033000b0b200241f880046a200c360200200241f480046a2007360200200241f080046a2008360200200220043a00ed8004200220013a00ec80040b200241013a00e8800420022802ec800421060b0240200d450d00200a200d4104746a210d03400240200a2802082204450d00200a2802002101200441047421040340024020012d00004109470d000240200141046a2205280200220328020441ffffffff0371450d0020032802001031200528020021030b200310310b200141106a2101200441706a22040d000b0b200a41106a21010240200a41046a280200450d00200a28020010310b2001210a2001200d470d000b0b200b450d01200f10310c010b20024103410220041b3a00d88004200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a10eb0320022903e88004210920022802f08004210c02402003450d00200120034104746a210b200121060340024020062802082203450d0020062802002104200341047421030340024020042d00004109470d000240200441046a220a280200220528020441ffffffff0371450d0020052802001031200a28020021050b200510310b200441106a2104200341706a22030d000b0b200641106a21040240200641046a280200450d00200628020010310b200421062004200b470d000b0b2009422088210e41052106410021042008450d01200110310c010b200641087621042007ad220e4220862008ad8421092002280234450d00200228023010310b20004101360200200041106a200c360200200041086a200e422086200942ffffffff0f838437020020002004410874200641ff0171723602040c1b0b200241d8006a20011081050240024020022802584101470d00200228025c22034108762105200241d8006a41086a2903002209422088210e200241e8006a28020021040c010b200241f880046a200241ec006a280200360200200241f080046a200241e4006a29020022093703002002200229025c220e3703e88004200ea7210c2009a721054100210420022802f480042101410021030240024002400240024002400240024003402004411f4b0d010240024020052001460d002001417f460d072005200141016a220a4f0d01200141016a200510b601000b200220053602f48004200241013a0048200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a10eb032002290330220e42ffffffff0f832109200e42808080807083210e200228023821044105210c0c040b200c20016a2d0000220641ff00712004411f71742003722103200441076a2104200a21012006418001710d000b2002200a3602f4800420044120490d032006410f4d0d03410d210c0c010b200220013602f48004410f210c0b420021094200210e0b200220043602e080042002200e2009843703d88004200e422088a7210b2009a721084100210a0c030b20024100360238200242043703304104210102402003450d0041002105410021060340200241d8006a200241e880046a10f30420022f005d20022d005f41107472210a2002280264210b2002280260210820022d005c210c024020022802584101470d002002200536023420022006360238200241e8006a28020021042005450d05200110310c050b0240024020062005460d0020052107200621040c010b200541016a22042005490d15200541017422072004200720044b1b2207ad420c7e2209422088a70d152009a722044100480d150240024020050d002004102d21010c010b20012005410c6c2004102f21010b2001450d042002200136023020052104200721050b20012004410c6c6a2204200a3b0001200420083602042004200c3a0000200441036a200a4110763a0000200441086a200b3602002003200641016a2206470d000b20022007360234200220063602380b20022802f4800420022802f8800446210420022902342109024020022802ec8004450d0020022802e8800410310b2009a7210a2004450d032009422088a7ad422086200aad842109410621030c180b417f200141016a107b000b200441041033000b200a41ffffff07712205410874200c41ff0171722103200bad220e4220862008ad84210920022802ec8004450d0120022802e8800410310c010b20024103410220041b3a00d88004200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a10eb0320022903302209422088210e200228023821044105210341002105200a450d00200110310b20004101360200200041106a2004360200200041086a200e422086200942ffffffff0f838437020020002005410874200341ff0171723602040c1a0b200241d8006a20011081050240024020022802584101470d00200228025c22034108762105200241d8006a41086a2903002209422088210e200241e8006a28020021040c010b200241f880046a200241ec006a280200360200200241f080046a200241e4006a29020022093703002002200229025c220e3703e88004200ea7210c2009a721034100210420022802f4800421014100210a024002400240024002400240024002400240024003402004411f4b0d010240024020032001460d002001417f460d072003200141016a22054f0d01200141016a200310b601000b200220033602f48004200241013a0048200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a10eb032002290330220e42ffffffff0f832109200e42808080807083210e200228023821044105210c0c040b200c20016a2d0000220641ff00712004411f7174200a72210a200441076a2104200521012006418001710d000b200220053602f4800420044120490d032006410f4d0d03410d210c0c010b200220013602f48004410f210c0b420021094200210e0b200220043602e080042002200e2009843703d88004200e422088a7210b2009a72108410021030c050b41002107200241003602e08004200242043703d8800402400240200a0d00410421014100210b0c010b4104210141012107410021060340024002400240024020032005460d00200541016a22042005490d0720032004490d09200c20056a2c00002103200220043602f480040240200341004e0d004119210c0c020b4107210c0240200341c000710d000c020b200341807f7222034170470d02200241d8006a200241e880046a10f30420022f005d20022d005f41107472210320022d005c210c20022802584101470d0320034180feff07714108762105200228026821042002280264210b200228026021080c020b200241013a00482002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a10eb03200228023021082002280234210b200228023821044105210c0b0b200220063602dc800420022007417f6a3602e080042005410874200341ff01717221032006450d07200110310c070b2002280264210520022802602108024002402007417f6a22042006460d002006210b200421060c010b200641016a22042006490d162006410174220b2004200b20044b1b220bad420c7e2209422088a70d162009a722044100480d160240024020060d002004102d21010c010b20012006410c6c2004102f21010b2001450d05200220013602d880040b20012006410c6c6a220420033b000120042005360208200420083602042004200c3a0000200441036a20034110763a00000240200a2007460d00200741016a210720022802f48004210520022802f08004210320022802e88004210c200b21060c010b0b2002200b3602dc8004200220073602e080040b20022802f4800420022802f88004462104024020022802ec8004450d0020022802e8800410310b2004450d052007ad422086200bad842109410521030c190b417f200141016a107b000b417f2004107b000b200441041033000b2004200310b601000b200341ffffff07712205410874200c41ff0171722103200bad220e4220862008ad84210920022802ec8004450d0120022802e8800410310c010b20024103410220041b3a00d88004200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a10eb0320022903302209422088210e200228023821044105210341002105200b450d00200110310b20004101360200200041106a2004360200200041086a200e422086200942ffffffff0f838437020020002005410874200341ff0171723602040c190b200241d8006a20011081050240024020022802584101470d00200228025c22034108762105200241d8006a41086a2903002209422088210e200241e8006a28020021040c010b200241ec006a280200210d200241e8006a2802002101200241e4006a2802002103200241e0006a2802002107200228025c210c410021044100210a0240024002400240024002400240024002400240024003404200210902402004411f4d0d00410f21030c020b0240024020032001460d002001417f460d062003200141016a22054f0d01200141016a200310b601000b200241013a0030200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a10eb0320022903e88004220e42ffffffff0f832109200e42808080807083210e20022802f080042104410521030c030b200c20016a2d0000220641ff00712004411f7174200a72210a200441076a2104200521012006418001710d000b20044120490d0220064110490d02410d21030b4200210e0b200220043602e080042002200e2009843703d88004200e422088a721052009a7210a0c070b41002111200241003602382002420437033002400240200a0d0041042101410021060c010b4104210141002106410021110340200621102011221441016a211120052104410021064100210b03402006411f4b0d050240024020032004460d002004417f460d062003200441016a22054f0d01200441016a200310b601000b2002201036023420022014360238200241013a00d88004200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a10eb0320022802e88004210a20022802ec8004210520022802f080042104410521030c090b200c20046a2d0000220841ff00712006411f7174200b72210b200641076a2106200521042008418001710d000b024020064120490d002008410f4d0d002002201036023420022014360238410d21030c070b0240024020142010460d0020102106201421100c010b201041016a22042010490d17201041017422062004200620044b1b220641ffffffff03712006470d17200641027422044100480d170240024020100d002004102d21010c010b200120104102742004102f21010b2001450d06200220013602300b200120104102746a200b3602002011200a470d000b20022006360234200220113602380b2005200d46210402402007450d00200c10310b2004450d072011ad4220862006ad842109410421030c1a0b417f200141016a107b000b417f200441016a107b000b2002201036023420022014360238410f21030c010b200441041033000b0b2010450d00200110310b2005ad220e422086200aad842109410021052007450d01200c10310c010b20024103410220041b3a0030200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a10eb0320022903e880042209422088210e20022802f08004210441052103410021052006450d00200110310b20004101360200200041106a2004360200200041086a200e422086200942ffffffff0f838437020020002005410874200341ff0171723602040c180b200241d8006a20011081050240024020022802584101470d00200228025c22044108762105200241d8006a41086a2903002209422088210e200241e8006a28020021030c010b200241f880046a200241ec006a280200360200200241f080046a200241e4006a2902003703002002200229025c3703e8800441002101410021050240024002400240024002400240024002400240024003404200210902402001411f4d0d00410f21040c020b0240024020022802f08004220a20022802f480042204460d00200441016a22032004490d06200a20034f0d012003200a10b601000b200241013a0048200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a10eb032002290330220e42ffffffff0f832109200e42808080807083210e20022802382103410521040c030b20022802e8800420046a2d00002104200220033602f48004200441ff00712001411f71742005722105200141076a21012004418001710d000b20014120490d0220044110490d02410d21040b4200210e0b200220033602e080042002200e2009843703d88004200e422088a7210a2009a721060c080b200241003602e08004200242043703d8800402400240024020050d00410421010c010b20022802dc8004210720022802e080042108410021130340200241d8006a200241e880046a10f0042002280264210a20022802602110200228025c2112024020022802584101470d002002280268210320102106201221040c090b200241d8006a200241e880046a10f0042002280264211720022802602114200228025c210f024020022802584101470d0020022802682103201421062017210a200f21040c080b024002400240024002400240024002400240024002400240024002400240024020022802f08004220320022802f480042206460d00200641016a22012006490d02200320014f0d012001200310b601000b200241013a00482002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a10eb03200228023021062002290234210e4105210b41002111410021030c150b20022802e88004220d20066a2d00002104200220013602f48004410021110240200441034d0d004109210b410021030c150b024002400240024020040e0400010203000b41002111410021044100210b034002402004411f4d0d00410f210b0c170b0240024020032001460d002001417f460d072003200141016a220c4f0d01200141016a200310b601000b200241013a00482002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a10eb03200228023021062002290234210e4105210b410021110c180b200d20016a2d000021062002200c3602f48004200641ff00712004411f7174200b72210b200441076a2104200c21012006418001710d000b4100211120044120490d0f2006410f4d0d0f410d210b0c150b0240024020032001460d00200641026a21042001417f460d0620032004490d07200d20016a2c00002101200220043602f4800402402001417f4a0d00411921030c0e0b200141c000710d010c0c0b200241013a00482002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a10eb032002290330210920022802382104410521030c0c0b200141807f7222014170470d0a200241d8006a200241e880046a10f30420022903602109200228025c210b024020022802584101470d00200228026821040c0d0b410121110c0f0b200241d8006a200241e880046a10f30420022903602109200228025c210b024020022802584101460d00410221110c0f0b20022002280268360260200b4180808078712111200b4180807c712103200b41087621040c0c0b0240024020032001460d00200641026a210c2001417f460d062003200c490d08200d20016a2c000021042002200c3602f480040240200441004e0d004119210b410021030c170b200441c000710d010c090b200241013a00482002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a10eb034105210b2002290234210e20022802302106410021030c150b200441807f72220441ff017141fc01490d07024002402003200c460d00200641036a2101200c417f460d07200320014f0d012001200310b601000b200241013a00482002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241c8006a360218200241306a200241d8006a10eb03200228023021062002290234210e4105210b410021030c150b200d200c6a2d0000210c200220013602f48004410021030240200c41014d0d00410c210b41002111200c21040c150b2004417f732106410321110240200c0e020e000e0b410121030c0d0b417f2001107b000b417f200141016a107b000b417f2004107b000b2004200310b601000b417f200c107b000b417f2001107b000b200c200310b601000b4106210b410021030c0c0b410721030b200141ff0171410874200372210b0b20022004360260200b4180808078712111200b4180807c712103200b41087621040b20022009370358200229025c210e2009a721060c080b0b0240024020082007460d002007210c0c010b200741016a22012007490d17200741017422042001200420014b1b220cad42287e220e422088a70d17200ea722044100480d170240024020070d002004102d21010c010b20022802d88004200741286c2004102f21010b2001450d03200220013602d8800420072108200c21070b20022802d880042201200841286c6a2204200f36020c2004200a3602082004201036020420042012360200200441206a20093702002004411c6a200b3602002004411a6a20033a0000200441196a20063a0000200441186a20113a0000200441146a2017360200200441106a2014360200200841016a2108201341016a22132005470d000b2002200c3602dc8004200220083602e080040b20022802f4800420022802f8800446210420022902dc80042209422088210e024020022802ec8004450d0020022802e8800410310b200ea721052009a7210a2004450d072005ad422086200aad842109410321030c1a0b200441041033000b417f2003107b000b0b41002103410021040b200b41ff0171200441ff0171410874722003418080fc0771722011722104200e422088a72103200ea7210a2014450d00200f10310b2010450d00201210310b200220073602dc8004200220083602e0800420022802d88004210c02402008450d00200841286c2105200c210103400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141286a2101200541586a22050d000b0b2007450d01200c10310c010b20024103410220041b3a00d88004200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241306a200241d8006a10eb03200229033021092002280238210302402005450d00200541286c21052001210403400240200441046a280200450d00200428020010310b0240200441106a280200450d002004410c6a28020010310b200441286a2104200541586a22050d000b0b2009422088210e4105210441002105200a450d01200110310c010b20044108762105200aad220e4220862006ad84210920022802ec8004450d0020022802e8800410310b20004101360200200041106a2003360200200041086a200e422086200942ffffffff0f838437020020002005410874200441ff0171723602040c170b0c020b200241013a00d880042002410136026c2002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241d880046a360218200241e880046a200241d8006a10eb0320022802e88004210620022802ec8004210a20022d00f08004210120022d00f18004210320022f01f280042104410521100b0b2013450d01201410310c010b20014110762104200141087621030b200341ff0171410874200141ff017172210320044110742108200d41ff0171410874210720022802302105024020022802382201450d00200141047421042005210103400240200141046a280200450d00200128020010310b200141106a2101200441706a22040d000b0b20032008722103200720107221042002280234450d01200510310c010b200a200746210420022902342209422088210e0240200b450d00200c10310b200ea721052009a7210a02402004450d002005ad422086200aad842109410221030c0a0b20024103410220041b3a0030200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a10eb0320022903e88004210920022802f08004210302402005450d00200541047421052001210403400240200441046a280200450d00200428020010310b200441106a2104200541706a22050d000b0b2009422088210e4105210441002105200a450d01200110310c010b20044108762105200aad220e4220862006ad842109200b450d00200c10310b20004101360200200041106a2003360200200041086a200e422086200942ffffffff0f838437020020002005410874200441ff0171723602040c0e0b410021014100210402400340410021080240200a4105470d00410f21070c0d0b2003200a460d012003200a4d0d052006200a6a2d0000220541ff00712001411f71742004722104200141076a2101200a41016a220c210a2005418001710d000b024020014120490d002005410f4d0d00410d21070c0c0b024020040d0041002105410121104100210a4100210d0c070b200241d8006a410041800810aa051a410121104100210d41002105410021070340024002402003200c6b200420076b22014180082001418008491b2201490d00200c20016a2211200c490d05200320114f0d012011200310b601000b200241013a00d88004200241fc80046a4101360200200242013702ec80042002419cdfc3003602e880042002412336021c2002200241186a3602f880042002200241d880046a360218200241306a200241e880046a10eb0320022903302209422088a7210a200228023821012009a72104410521070240200d0d002004210d0c0f0b201010312004210d0c0e0b200241d8006a2006200c6a200110ab051a02400240200d20056b2001490d00200120056a210a0c010b200520016a220a2005490d03200d410174220c200a200c200a4b1b220c4100480d0302400240200d0d00200c102d21100c010b2010200d200c102f21100b2010450d05200c210d0b201020056a200241d8006a200110ab051a2011210c200a21052004200120076a22074d0d060c000b0b200241013a0030200241ec006a41013602002002420137025c2002419cdfc3003602582002412336021c2002200241186a3602682002200241306a360218200241e880046a200241d8006a10eb0320022903e880042209422088a7210a20022802f0800421012009a7210d410521070c0b0b1034000b200c2011107b000b200c41011033000b200a41016a200310b601000b200241d8006a2010200a10c401024020022802584101470d00410821070240200d0d000c080b201010310c070b201041087621052011210c0b2003200c490d012003200c6b2201417f4c0d020240024020010d00410121040c010b2001102d2204450d0420042006200c6a200110ab051a0b200aad4220862109200dad210e2001ad221b422086211c0240200b450d00200610310b2009200e842109201c201b84210e2005410874201041ff0171722101410121030b200020033a000420004100360200200041056a20022f00153b0000200041186a200e370200200041146a20043602002000410c6a2009370200200041086a2001360200200041206a2002290200370200200041076a200241176a2d00003a0000200041286a200241086a290200370200200041306a200241106a2802003602000c060b200c2003107b000b1032000b200141011033000b4100210a4100210d0b200aad422086200dad842109200b450d00200610310b20004101360200200041106a2001360200200041086a200937020020002008410874200741ff0171723602040b2002418081046a24000b900302037f017e230041c0006b22022400200141086a28020021032001280204210420022001280200220136020002400240024002402001418080044b0d002004450d022002200336020402400240200120034b0d002003418080044d0d042002413c6a41013602002002420237022c200241b0e4c4003602282002410536020c2002418ce4c4003602082002200241086a360238200241186a200241286a10eb03200241186a21010c010b2002413c6a4102360200200241246a41053602002002420237022c200241a0e4c4003602282002410536021c2002200241186a360238200220023602202002200241046a360218200241086a200241286a10eb03200241086a21010b20012902042105200128020021010c010b2002413c6a41013602002002420237022c20024190e4c4003602282002410536020c2002418ce4c4003602082002200241086a360238200241186a200241286a10eb0320022802182101200229021c21050b2001450d0020002005370204200020013602000c010b200041003602000b200241c0006a24000bf90501037f230041f0006b2204240002400240024002400240024020012802084102460d00412e102d2201450d01200041013a0000200141266a41002900a4e644370000200141206a410029009ee644370000200141186a4100290096e644370000200141106a410029008ee644370000200141086a4100290086e644370000200141002900fee544370000200041086a42ae808080e005370200200041046a20013602000c050b02400240024002400240200128020022052d0000416e6a2201411e4b0d004100210620010e1f03000000000000000000000000000000000000000000000000000008040102030b4120102d2201450d05200041013a0000200141186a41002900c4e644370000200141106a41002900bce644370000200141086a41002900b4e644370000200141002900ace644370000200041086a42a08080808004370200200041046a20013602000c080b410221060c060b410321060c050b20042005280204220136020c0240024020012003490d0041cce6c4002105200441e8006a2103200441d0006a2101200441c0006a21020c010b200220014101746a22012d0001450d0441dce6c4002105200441386a2103200441206a2101200441106a21020b20034105360204200141146a410136020020012003360210200142023702042001200536020020032004410c6a3602002002200110eb03200041013a00002000410c6a200241086a280200360200200041046a20022902003702000c050b410121060c030b412e41011033000b412041011033000b20012d000021060b0240200541106a2d00004106470d00200041003a0000200020063a00010c010b02404129102d2201450d00200041013a0000200141286a41002d0094e7443a0000200141206a410029008ce744370000200141186a4100290084e744370000200141106a41002900fce644370000200141086a41002900f4e644370000200141002900ece644370000200041086a42a98080809005370200200041046a20013602000c010b412941011033000b200441f0006a24000bb5c40103087f027e017f230041f0006b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022d00000eac0100da010102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80018101820183018401850186018701880189018a018b018c018d018e018f0190019101920193019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a401a501a601a701a801a901aa01000b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102d2200450dab012003421837025c20032000360258200341d8006a41004118109a0520032003280260220041186a3602602000200328025822016a411841cee9c4004118109b052003200329025c37025c2003200136025841cadec400413b200341d8006a4188dfc4001038000b02400240200128022820044103746a22052802002204200141206a220628020022024b0d00200421010c010b024002402001411c6a280200220720026b200420026b2208490d0020012802182107200221010c010b200220086a22092002490dd9012007410174220a2009200a20094b1b22094100480dd9010240024020070d002009102d21070c010b200128021820072009102f21070b2007450dad01200120073602182001411c6a2009360200200141206a28020021010b200720016a21090240024020084102490d002009410420042002417f736a220210aa051a2007200220016a22016a21090c010b2008450d010b200941043a0000200141016a21010b20062001360200200541013a00060cd9010b0240200141306a2802002204200141346a22052802004f0d002002310001210b200141206a350200210c024020042001412c6a280200470d00200441016a22022004490dd801200441017422052002200520024b1b220241ffffffff01712002470dd801200241037422054100480dd8010240024020040d002005102d21040c010b200128022820044103742005102f21040b2004450dad01200120043602282001412c6a2002360200200141306a28020021040b200128022820044103746a200b422886200c84370200200141306a2201200128020041016a3602000cd9010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200536020020032003360268200341106a200341d8006a10eb0320032802102202450dd8012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b2001450dd8012000200b370204200020013602000cd9010b0240200141306a2802002204200141346a22052802004f0d002002310001210b200141206a350200210c024020042001412c6a280200470d00200441016a22022004490dd701200441017422052002200520024b1b220241ffffffff01712002470dd701200241037422054100480dd7010240024020040d002005102d21040c010b200128022820044103742005102f21040b2004450dad01200120043602282001412c6a2002360200200141306a28020021040b200128022820044103746a200b422886200c8442808080803084370200200141306a2201200128020041016a3602000cd8010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200536020020032003360268200341106a200341d8006a10eb0320032802102202450dd7012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b2001450dd7012000200b370204200020013602000cd8010b2002310001210b200341d8006a200141186a200141286a22044100109c05024020032d00584101470d002000200329025c370200200041086a200341e4006a2802003602000cd8010b0240200141306a2802002202200141346a22052802004f0d00200141206a350200210c024020022001412c6a280200470d00200241016a22052002490dd601200241017422062005200620054b1b220541ffffffff01712005470dd601200541037422064100480dd6010240024020020d002006102d21020c010b200428020020024103742006102f21020b2002450dad01200120023602282001412c6a2005360200200141306a28020021020b200128022820024103746a200b422886200c8442808080801084370200200141306a2201200128020041016a3602000cd7010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200536020020032003360268200341106a200341d8006a10eb0320032802102202450dd6012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b2001450dd6012000200b370204200020013602000cd7010b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102d2200450dac012003421837025c20032000360258200341d8006a41004118109a0520032003280260220041186a3602602000200328025822016a411841cee9c4004118109b052003200329025c37025c200320013602584198dfc4004134200341d8006a4188dfc4001038000b02400240200141286a220228020020044103746a22042d00044101470d002004310005210b200341d8006a200141186a2002109d052003280258450d0120002003290358370200200041086a200341d8006a41086a2802003602000cd8010b411a102d2201450dad01200141186a41002f00e4df443b0000200141106a41002900dcdf44370000200141086a41002900d4df44370000200141002900ccdf443700002000429a808080a003370204200020013602000cd7010b0240200141306a2802002204200141346a22052802004f0d00200141206a350200210c024020042001412c6a280200470d00200441016a22052004490dd501200441017422062005200620054b1b220541ffffffff01712005470dd501200541037422064100480dd5010240024020040d002006102d21020c010b200228020020044103742006102f21020b2002450daf01200120023602282001412c6a2005360200200141306a28020021040b200128022820044103746a200b422886200c8442808080802084370200200141306a2201200128020041016a3602000cd6010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200536020020032003360268200341106a200341d8006a10eb0320032802102202450dd5012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b2001450dd5012000200b370204200020013602000cd6010b02400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102d2200450dae012003421837025c20032000360258200341d8006a41004118109a0520032003280260220041186a3602602000200328025822016a411841cee9c4004118109b052003200329025c37025c200320013602584198dfc4004134200341d8006a4188dfc4001038000b200141286a220628020020044103746a22042d00052105024020042d00044101470d00200541ff01714104470daf010b0240024020024101460d00200341d8006a200141186a22022006109d052003280258450d0120002003290358370200200041086a200341d8006a41086a2802003602000cd7010b20012d003822024104460dd401200341d8006a200141186a220520062002109c050240024020032d00584101460d000240200141206a2802002204200141246a22072802004f0d00024020042001411c6a280200470d00200441016a22072004490dd701200441017422082007200820074b1b22074100480dd7010240024020040d002007102d21040c010b200528020020042007102f21040b2004450db401200120043602182001411c6a2007360200200141206a28020021040b200128021820046a20023a0000200141206a2202200228020041016a3602000cd7010b200341ec006a220241013602002003420137025c200341c8eac4003602582003410536023c200320073602382003200341386a360268200341106a200341d8006a10eb0320032802102204450dd6012003200329021437023c20032004360238200241013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021022003290214210b0240200328023c450d00200328023810310b20020d010cd6010b200328025c2202450dd501200341e0006a290300210b0b2000200b370204200020023602000cd6010b200541ff01714104460dd4010240200141206a2802002204200141246a22062802004f0d00024020042001411c6a280200470d00200441016a22062004490dd401200441017422072006200720064b1b22064100480dd4010240024020040d002006102d21020c010b200228020020042006102f21020b2002450db201200120023602182001411c6a2006360200200141206a28020021040b200128021820046a20053a0000200141206a2201200128020041016a3602000cd5010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200636020020032003360268200341106a200341d8006a10eb0320032802102202450dd4012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b2001450dd4012000200b370204200020013602000cd5010b2003200241046a2802002202360248024002400240200141306a280200220420024d0d0020042002417f736a22022004490d0141aaeac400411d10bf01000b200341ec006a220241023602002003411c6a41053602002003420237025c200341e8e9c40036025820034105360214200320043602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a10eb03200328023821042003200329023c37023c20032004360238200241013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021022003290214210b0240200328023c450d00200328023810310b20020d010cd2010b200141286a220428020020024103746a22022d00044103460dd10120022d0005220241ff01714104460dd101200341d8006a200141186a220520042002109c05024020032d00584101460d000240200141206a2802002204200141246a22062802004f0d00024020042001411c6a280200470d00200441016a22062004490dd501200441017422072006200720064b1b22064100480dd5010240024020040d002006102d21040c010b200528020020042006102f21040b2004450db401200120043602182001411c6a2006360200200141206a28020021040b200128021820046a20023a0000200141206a2202200228020041016a3602000cd3010b200341ec006a220241013602002003420137025c200341c8eac4003602582003410536023c200320063602382003200341386a360268200341106a200341d8006a10eb0320032802102204450dd2012003200329021437023c20032004360238200241013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021022003290214210b0240200328023c450d00200328023810310b2002450dd2010c010b200328025c2202450dd101200341e0006a290300210b0b2000200b370204200020023602000cd4010b200241046a2802002102200341d8006a200141186a2206200141286a22054100109c05024020032d00584101470d00200341e0006a290300210b200328025c21010cce010b200141306a28020021042003200236024802400240200420024d0d0020042002417f736a22022004490d0141aaeac400411d10bf01000b200341ec006a220141023602002003411c6a41053602002003420237025c200341e8e9c40036025820034105360214200320043602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a10eb03200328023821022003200329023c37023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b200328023c450dce012003280238103120010dcf010cd3010b200528020020024103746a22022d00044103460dd20120022d0005220241ff01714104460dd201200341d8006a200620052002109c05024020032d00584101460d000240200141206a2802002204200141246a22052802004f0d00024020042001411c6a280200470d00200441016a22052004490dd301200441017422072005200720054b1b22054100480dd3010240024020040d002005102d21040c010b200628020020042005102f21040b2004450db301200120043602182001411c6a2005360200200141206a28020021040b200128021820046a20023a0000200141206a2201200128020041016a3602000cd4010b200341ec006a220141013602002003420137025c200341c8eac4003602582003410536023c200320053602382003200341386a360268200341106a200341d8006a10eb0320032802102202450dd3012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b20010dcf010cd3010b200328025c2201450dd201200341e0006a290300210b0cce010b200241046a280200220228020421062002280200210420032002280208220536024802400240200141306a280200220220054d0d0020022005417f736a22052002490d0141aaeac400411d10bf01000b200341ec006a220441023602002003411c6a41053602002003420237025c200341e8e9c40036025820034105360214200320023602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a10eb03200328023821022003200329023c37023c20032002360238200441013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021022003290214210b0240200328023c450d00200328023810310b2003200b370204200320023602000ccb010b410421090240200141286a220d280200220720054103746a22052d00044103460d0020052d000521090b200320093a00302006450dc601200941ff0171220a4104460dc501200641027421060340200320042802002205360248200220054d0dc80120022005417f736a220520024f0dcc01200720054103746a22052d00044103460dc90120052d000522084104460dc901200a2008470dc901200441046a21042006417c6a22060d000cc7010b0b20012d003822024104460dc301200341d8006a200141186a2205200141286a2002109c050240024020032d00584101460d000240200141206a2802002204200141246a22062802004f0d00024020042001411c6a280200470d00200441016a22062004490dd201200441017422072006200720064b1b22064100480dd2010240024020040d002006102d21040c010b200528020020042006102f21040b2004450db301200120043602182001411c6a2006360200200141206a28020021040b200128021820046a20023a0000200141206a2202200228020041016a3602000cc6010b200341ec006a220241013602002003420137025c200341c8eac4003602582003410536023c200320063602382003200341386a360268200341106a200341d8006a10eb0320032802102204450dc5012003200329021437023c20032004360238200241013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021022003290214210b0240200328023c450d00200328023810310b20020d010cc5010b200328025c2202450dc401200341e0006a290300210b0b2000200b370204200020023602000cd1010b200128020021042003200241046a2802002202360254024002400240200441386a28020020024b0d00200341ec006a41013602002003420237025c2003419ce8c400360258200341053602342003200341306a3602682003200341d4006a360230200341386a200341d8006a10eb03200341186a200329023c370300200341013602102003200328023822043602140c010b2003200428023020024102746a2802002202360200024002402004412c6a28020020024b0d0041012105200341ec006a41013602002003420237025c200341c0e8c4003602582003410536024c2003200341c8006a36026820032003360248200341386a200341d8006a10eb03200341186a200329023c220b370300200b422088a7210720032802382104200ba721020c010b2003411c6a200428022420024104746a22042d000d22073a0000200341186a2004280208220236020020042802002104410021050b20032005360210200320043602142005450d010b200341186a21010cc1010b02402002450d002004417f6a2104200141286a2105200141186a21060340200341d8006a20062005200420026a2d0000109c05024020032d00584101470d00200341e0006a2101200328025c21040cc3010b2002417f6a22020d000b0b200741ff01714104460dcf010240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490dcf01200241017422052004200520044b1b22044100480dcf010240024020020d002004102d21020c010b200128021820022004102f21020b2002450db101200120023602182001411c6a2004360200200141206a28020021020b200128021820026a20073a0000200141206a2201200128020041016a3602000cd0010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200436020020032003360268200341106a200341d8006a10eb0320032802102202450dcf012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021042003290214210b0240200328023c450d00200328023810310b2004450dcf010cc1010b200241046a280200210620012802002102200341003602380240024002400240200241146a2802000d00200341d8006a41146a41013602002003420237025c200341fce7c40036025820034105360204200320033602682003200341386a360200200341106a200341d8006a10eb030c010b200341d8006a200141186a2204200141286a22054100109c05024020032d00584101470d00200341e0006a290300210b200328025c21010c030b20012802002207412c6a280200210220032006360238200220064b0d01200341ec006a41013602002003420237025c200341c0e8c40036025820034105360204200320033602682003200341386a360200200341106a200341d8006a10eb030b200328021021012003290214210b0c010b200728022420064104746a22062d000d2107024020062802082202450d002006280200417f6a21060340200341d8006a20042005200620026a2d0000109c05024020032d00584101470d00200341e0006a290300210b200328025c21010c030b2002417f6a22020d000b0b200741ff01714104460dcf010240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490dcf01200241017422062005200620054b1b22054100480dcf010240024020020d002005102d21020c010b200428020020022005102f21020b2002450db201200120023602182001411c6a2005360200200141206a28020021020b200128021820026a20073a0000200141206a2201200128020041016a3602000cd0010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200536020020032003360268200341106a200341d8006a10eb0320032802102202450dcf012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b200328023c450d00200328023810310b2001450dce012000200b370204200020013602000ccf010b200341d8006a200141186a200141286a4104109c0520032d00584101470dcd01200328025c2201450dcd012000200341e0006a290300370204200020013602000cce010b200341d8006a200141186a2204200141286a22054100109c05200341d8006a21020240024020032d00584101460d00200341d8006a200420054104109c05200341d8006a210220032d00584101460d00200341d8006a2004200520032d00592206109c05200341d8006a210220032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490dce01200241017422072005200720054b1b22054100480dce010240024020020d002005102d21020c010b200428020020022005102f21020b2002450db201200120023602182001411c6a2005360200200141206a28020021020b200128021820026a20063a0000200141206a2201200128020041016a3602000ccf010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200536020020032003360268200341106a200341d8006a10eb0320032802102202450dce012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b20010d010cce010b200241046a2802002201450dcd01200241086a290200210b0b2000200b370204200020013602000ccd010b200341d8006a200141046a200241046a280200109e050240024020032d00584101460d000240200141206a2802002202200141246a22042802004f0d0020032d00592104024020022001411c6a280200470d00200241016a22052002490dcd01200241017422062005200620054b1b22054100480dcd010240024020020d002005102d21020c010b200128021820022005102f21020b2002450db201200120023602182001411c6a2005360200200141206a28020021020b200128021820026a20043a0000200141206a2201200128020041016a3602000cce010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200436020020032003360268200341106a200341d8006a10eb0320032802102202450dcd012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b20010d010ccd010b200328025c2201450dcc01200341e0006a290300210b0b2000200b370204200020013602000ccc010b2003200241046a2802002202360200200341d8006a200141046a2002109e05024020032d00584101470d002003200328025c22013602382003200341e0006a290300220b37023c0cbb010b200320032d005922023a0030200341d8006a200141186a200141286a4104109c05024020032d00584101470d00200341c0006a200341e4006a2802003602002003200329025c3703380cba010b200320032d005922013a004820014104460dca01200241ff01712001460dca01200341106a41146a41323602002003411c6a4124360200200341d8006a41146a41033602002003420337025c20034188e0c400360258200341053602142003200341106a3602682003200341c8006a3602202003200341306a36021820032003360210200341386a200341d8006a10eb030cb9010b200341d8006a200141046a200241046a280200109e050240024020032d00584101460d00200341d8006a200141186a2205200141286a20032d00592204109c05024020032d00584101460d000240200141206a2802002202200141246a22062802004f0d00024020022001411c6a280200470d00200241016a22062002490dcc01200241017422072006200720064b1b22064100480dcc010240024020020d002006102d21020c010b200528020020022006102f21020b2002450db201200120023602182001411c6a2006360200200141206a28020021020b200128021820026a20043a0000200141206a2201200128020041016a3602000ccd010b200341ec006a220141013602002003420137025c200341c8eac4003602582003410536023c200320063602382003200341386a360268200341106a200341d8006a10eb0320032802102202450dcc012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b20010d020ccc010b200328025c2201450dcb01200341e0006a290300210b0c010b200328025c2201450dca01200341e0006a290300210b0b2000200b370204200020013602000cca010b200128020021042003200241046a280200220236023802400240200441206a28020020024d0d000240200141206a2802002205200141246a22062802004f0d00200428021820024101746a2d00002102024020052001411c6a280200470d00200541016a22042005490dca01200541017422062004200620044b1b22044100480dca010240024020050d002004102d21050c010b200128021820052004102f21050b2005450db101200120053602182001411c6a2004360200200141206a28020021050b200128021820056a20023a0000200141206a2201200128020041016a3602000ccb010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200636020020032003360268200341106a200341d8006a10eb0320032802102202450dca012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b20010d010cca010b200341ec006a41013602002003420237025c200341e0e8c4003602582003410536024c2003200341c8006a3602682003200341386a360248200341106a200341d8006a10eb0320032802102201450dc9012003290214210b0b2000200b370204200020013602000cc9010b2003200241046a28020022023602282001280200210420032002360254024002400240200441206a28020020024b0d00200341ec006a41013602002003420237025c200341e0e8c4003602582003410536024c2003200341c8006a3602682003200341d4006a360248200341106a200341d8006a10eb030c010b200428021820024101746a22022d00010d01200341ec006a41013602002003420237025c200341f0e8c40036025820034105360204200320033602682003200341d4006a360200200341106a200341d8006a10eb030b2003280210210120032003290214220b37023c200320013602380cb6010b200320022d000022023a002f200341d8006a200141186a200141286a4104109c05024020032d00584101470d00200341c0006a200341e4006a2802003602002003200329025c3703380cb5010b200320032d005922013a00002001200241ff0171460dc70120014104460dc701200341106a41146a41323602002003411c6a4132360200200341d8006a41146a41033602002003420337025c200341a0e0c400360258200341053602142003200341106a3602682003200336022020032003412f6a3602182003200341286a360210200341386a200341d8006a10eb030cb4010b200341d8006a2001200241046a2802004104410010a0052003280258450dc60120002003290358370200200041086a200341d8006a41086a2802003602000cc7010b200341d8006a2001200241046a2802004108410110a0052003280258450dc50120002003290358370200200041086a200341d8006a41086a2802003602000cc6010b200341d8006a2001200241046a2802004104410210a0052003280258450dc40120002003290358370200200041086a200341d8006a41086a2802003602000cc5010b200341d8006a2001200241046a2802004108410310a0052003280258450dc30120002003290358370200200041086a200341d8006a41086a2802003602000cc4010b200341d8006a2001200241046a2802004101410010a0052003280258450dc20120002003290358370200200041086a200341d8006a41086a2802003602000cc3010b200341d8006a2001200241046a2802004101410010a0052003280258450dc10120002003290358370200200041086a200341d8006a41086a2802003602000cc2010b200341d8006a2001200241046a2802004102410010a0052003280258450dc00120002003290358370200200041086a200341d8006a41086a2802003602000cc1010b200341d8006a2001200241046a2802004102410010a0052003280258450dbf0120002003290358370200200041086a200341d8006a41086a2802003602000cc0010b200341d8006a2001200241046a2802004101410110a0052003280258450dbe0120002003290358370200200041086a200341d8006a41086a2802003602000cbf010b200341d8006a2001200241046a2802004101410110a0052003280258450dbd0120002003290358370200200041086a200341d8006a41086a2802003602000cbe010b200341d8006a2001200241046a2802004102410110a0052003280258450dbc0120002003290358370200200041086a200341d8006a41086a2802003602000cbd010b200341d8006a2001200241046a2802004102410110a0052003280258450dbb0120002003290358370200200041086a200341d8006a41086a2802003602000cbc010b200341d8006a2001200241046a2802004104410110a0052003280258450dba0120002003290358370200200041086a200341d8006a41086a2802003602000cbb010b200341d8006a2001200241046a2802004104410110a0052003280258450db90120002003290358370200200041086a200341d8006a41086a2802003602000cba010b200341d8006a2001200241046a2802004104410010a1052003280258450db80120002003290358370200200041086a200341d8006a41086a2802003602000cb9010b200341d8006a2001200241046a2802004108410110a1052003280258450db70120002003290358370200200041086a200341d8006a41086a2802003602000cb8010b200341d8006a2001200241046a2802004104410210a1052003280258450db60120002003290358370200200041086a200341d8006a41086a2802003602000cb7010b200341d8006a2001200241046a2802004108410310a1052003280258450db50120002003290358370200200041086a200341d8006a41086a2802003602000cb6010b200341d8006a2001200241046a2802004101410010a1052003280258450db40120002003290358370200200041086a200341d8006a41086a2802003602000cb5010b200341d8006a2001200241046a2802004102410010a1052003280258450db30120002003290358370200200041086a200341d8006a41086a2802003602000cb4010b200341d8006a2001200241046a2802004101410110a1052003280258450db20120002003290358370200200041086a200341d8006a41086a2802003602000cb3010b200341d8006a2001200241046a2802004102410110a1052003280258450db10120002003290358370200200041086a200341d8006a41086a2802003602000cb2010b200341d8006a2001200241046a2802004104410110a1052003280258450db00120002003290358370200200041086a200341d8006a41086a2802003602000cb1010b20012802002102200341003602380240024020022802080d00200341ec006a41013602002003420237025c200341cce7c40036025820034105360204200320033602682003200341386a360200200341106a200341d8006a10eb0320032802102202450d002003290214210b0c010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490db001200241017422052004200520044b1b22044100480db0010240024020020d002004102d21020c010b200128021820022004102f21020b2002450d9801200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000cb1010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200436020020032003360268200341106a200341d8006a10eb0320032802102202450db0012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021022003290214210b0240200328023c450d00200328023810310b2002450db0010b2000200b370204200020023602000cb0010b20012802002102200341003602380240024020022802080d00200341ec006a41013602002003420237025c200341cce7c40036025820034105360204200320033602682003200341386a360200200341106a200341d8006a10eb0320032802102202450d002003290214210b0c010b200341d8006a200141186a2204200141286a4100109c05024020032d00584101460d000240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490db001200241017422062005200620054b1b22054100480db0010240024020020d002005102d21020c010b200428020020022005102f21020b2002450d9901200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000cb1010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200536020020032003360268200341106a200341d8006a10eb0320032802102202450db0012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021022003290214210b0240200328023c450d00200328023810310b20020d010cb0010b200328025c2202450daf01200341e0006a290300210b0b2000200b370204200020023602000caf010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490dad01200241017422052004200520044b1b22044100480dad010240024020020d002004102d21020c010b200128021820022004102f21020b2002450d9701200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000cae010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200436020020032003360268200341106a200341d8006a10eb0320032802102202450dad012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b2001450dad012000200b370204200020013602000cae010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490dac01200241017422052004200520044b1b22044100480dac010240024020020d002004102d21020c010b200128021820022004102f21020b2002450d9701200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41013a0000200141206a2201200128020041016a3602000cad010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200436020020032003360268200341106a200341d8006a10eb0320032802102202450dac012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b2001450dac012000200b370204200020013602000cad010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490dab01200241017422052004200520044b1b22044100480dab010240024020020d002004102d21020c010b200128021820022004102f21020b2002450d9701200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41023a0000200141206a2201200128020041016a3602000cac010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200436020020032003360268200341106a200341d8006a10eb0320032802102202450dab012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b2001450dab012000200b370204200020013602000cac010b0240200141206a2802002202200141246a22042802004f0d00024020022001411c6a280200470d00200241016a22042002490daa01200241017422052004200520044b1b22044100480daa010240024020020d002004102d21020c010b200128021820022004102f21020b2002450d9701200120023602182001411c6a2004360200200141206a28020021020b200128021820026a41033a0000200141206a2201200128020041016a3602000cab010b200341ec006a220141013602002003420137025c200341c8eac400360258200341053602042003200436020020032003360268200341106a200341d8006a10eb0320032802102202450daa012003200329021437023c20032002360238200141013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021012003290214210b0240200328023c450d00200328023810310b2001450daa012000200b370204200020013602000cab010b200341d8006a2001410010a2052003280258450da90120002003290358370200200041086a200341d8006a41086a2802003602000caa010b200341d8006a2001410010a3052003280258450da80120002003290358370200200041086a200341d8006a41086a2802003602000ca9010b200341d8006a2001410010a3052003280258450da70120002003290358370200200041086a200341d8006a41086a2802003602000ca8010b200341d8006a2001410010a3052003280258450da60120002003290358370200200041086a200341d8006a41086a2802003602000ca7010b200341d8006a2001410010a3052003280258450da50120002003290358370200200041086a200341d8006a41086a2802003602000ca6010b200341d8006a2001410010a3052003280258450da40120002003290358370200200041086a200341d8006a41086a2802003602000ca5010b200341d8006a2001410010a3052003280258450da30120002003290358370200200041086a200341d8006a41086a2802003602000ca4010b200341d8006a2001410010a3052003280258450da20120002003290358370200200041086a200341d8006a41086a2802003602000ca3010b200341d8006a2001410010a3052003280258450da10120002003290358370200200041086a200341d8006a41086a2802003602000ca2010b200341d8006a2001410010a3052003280258450da00120002003290358370200200041086a200341d8006a41086a2802003602000ca1010b200341d8006a2001410010a3052003280258450d9f0120002003290358370200200041086a200341d8006a41086a2802003602000ca0010b200341d8006a2001410110a2052003280258450d9e0120002003290358370200200041086a200341d8006a41086a2802003602000c9f010b200341d8006a2001410110a3052003280258450d9d0120002003290358370200200041086a200341d8006a41086a2802003602000c9e010b200341d8006a2001410110a3052003280258450d9c0120002003290358370200200041086a200341d8006a41086a2802003602000c9d010b200341d8006a2001410110a3052003280258450d9b0120002003290358370200200041086a200341d8006a41086a2802003602000c9c010b200341d8006a2001410110a3052003280258450d9a0120002003290358370200200041086a200341d8006a41086a2802003602000c9b010b200341d8006a2001410110a3052003280258450d990120002003290358370200200041086a200341d8006a41086a2802003602000c9a010b200341d8006a2001410110a3052003280258450d980120002003290358370200200041086a200341d8006a41086a2802003602000c99010b200341d8006a2001410110a3052003280258450d970120002003290358370200200041086a200341d8006a41086a2802003602000c98010b200341d8006a2001410110a3052003280258450d960120002003290358370200200041086a200341d8006a41086a2802003602000c97010b200341d8006a2001410110a3052003280258450d950120002003290358370200200041086a200341d8006a41086a2802003602000c96010b200341d8006a2001410110a3052003280258450d940120002003290358370200200041086a200341d8006a41086a2802003602000c95010b200341d8006a2001410210a3052003280258450d930120002003290358370200200041086a200341d8006a41086a2802003602000c94010b200341d8006a2001410210a3052003280258450d920120002003290358370200200041086a200341d8006a41086a2802003602000c93010b200341d8006a2001410210a3052003280258450d910120002003290358370200200041086a200341d8006a41086a2802003602000c92010b200341d8006a2001410210a3052003280258450d900120002003290358370200200041086a200341d8006a41086a2802003602000c91010b200341d8006a2001410210a3052003280258450d8f0120002003290358370200200041086a200341d8006a41086a2802003602000c90010b200341d8006a2001410210a3052003280258450d8e0120002003290358370200200041086a200341d8006a41086a2802003602000c8f010b200341d8006a2001410310a3052003280258450d8d0120002003290358370200200041086a200341d8006a41086a2802003602000c8e010b200341d8006a2001410310a3052003280258450d8c0120002003290358370200200041086a200341d8006a41086a2802003602000c8d010b200341d8006a2001410310a3052003280258450d8b0120002003290358370200200041086a200341d8006a41086a2802003602000c8c010b200341d8006a2001410310a3052003280258450d8a0120002003290358370200200041086a200341d8006a41086a2802003602000c8b010b200341d8006a2001410310a3052003280258450d890120002003290358370200200041086a200341d8006a41086a2802003602000c8a010b200341d8006a2001410310a3052003280258450d880120002003290358370200200041086a200341d8006a41086a2802003602000c89010b200341d8006a2001410010a4052003280258450d870120002003290358370200200041086a200341d8006a41086a2802003602000c88010b200341d8006a2001410010a4052003280258450d860120002003290358370200200041086a200341d8006a41086a2802003602000c87010b200341d8006a2001410010a4052003280258450d850120002003290358370200200041086a200341d8006a41086a2802003602000c86010b200341d8006a2001410010a5052003280258450d840120002003290358370200200041086a200341d8006a41086a2802003602000c85010b200341d8006a2001410010a5052003280258450d830120002003290358370200200041086a200341d8006a41086a2802003602000c84010b200341d8006a2001410010a5052003280258450d820120002003290358370200200041086a200341d8006a41086a2802003602000c83010b200341d8006a2001410010a5052003280258450d810120002003290358370200200041086a200341d8006a41086a2802003602000c82010b200341d8006a2001410010a5052003280258450d800120002003290358370200200041086a200341d8006a41086a2802003602000c81010b200341d8006a2001410010a5052003280258450d7f20002003290358370200200041086a200341d8006a41086a2802003602000c80010b200341d8006a2001410010a5052003280258450d7e20002003290358370200200041086a200341d8006a41086a2802003602000c7f0b200341d8006a2001410010a5052003280258450d7d20002003290358370200200041086a200341d8006a41086a2802003602000c7e0b200341d8006a2001410010a5052003280258450d7c20002003290358370200200041086a200341d8006a41086a2802003602000c7d0b200341d8006a2001410010a5052003280258450d7b20002003290358370200200041086a200341d8006a41086a2802003602000c7c0b200341d8006a2001410010a5052003280258450d7a20002003290358370200200041086a200341d8006a41086a2802003602000c7b0b200341d8006a2001410010a5052003280258450d7920002003290358370200200041086a200341d8006a41086a2802003602000c7a0b200341d8006a2001410010a5052003280258450d7820002003290358370200200041086a200341d8006a41086a2802003602000c790b200341d8006a2001410010a5052003280258450d7720002003290358370200200041086a200341d8006a41086a2802003602000c780b200341d8006a2001410010a5052003280258450d7620002003290358370200200041086a200341d8006a41086a2802003602000c770b200341d8006a2001410110a4052003280258450d7520002003290358370200200041086a200341d8006a41086a2802003602000c760b200341d8006a2001410110a4052003280258450d7420002003290358370200200041086a200341d8006a41086a2802003602000c750b200341d8006a2001410110a4052003280258450d7320002003290358370200200041086a200341d8006a41086a2802003602000c740b200341d8006a2001410110a5052003280258450d7220002003290358370200200041086a200341d8006a41086a2802003602000c730b200341d8006a2001410110a5052003280258450d7120002003290358370200200041086a200341d8006a41086a2802003602000c720b200341d8006a2001410110a5052003280258450d7020002003290358370200200041086a200341d8006a41086a2802003602000c710b200341d8006a2001410110a5052003280258450d6f20002003290358370200200041086a200341d8006a41086a2802003602000c700b200341d8006a2001410110a5052003280258450d6e20002003290358370200200041086a200341d8006a41086a2802003602000c6f0b200341d8006a2001410110a5052003280258450d6d20002003290358370200200041086a200341d8006a41086a2802003602000c6e0b200341d8006a2001410110a5052003280258450d6c20002003290358370200200041086a200341d8006a41086a2802003602000c6d0b200341d8006a2001410110a5052003280258450d6b20002003290358370200200041086a200341d8006a41086a2802003602000c6c0b200341d8006a2001410110a5052003280258450d6a20002003290358370200200041086a200341d8006a41086a2802003602000c6b0b200341d8006a2001410110a5052003280258450d6920002003290358370200200041086a200341d8006a41086a2802003602000c6a0b200341d8006a2001410110a5052003280258450d6820002003290358370200200041086a200341d8006a41086a2802003602000c690b200341d8006a2001410110a5052003280258450d6720002003290358370200200041086a200341d8006a41086a2802003602000c680b200341d8006a2001410110a5052003280258450d6620002003290358370200200041086a200341d8006a41086a2802003602000c670b200341d8006a2001410110a5052003280258450d6520002003290358370200200041086a200341d8006a41086a2802003602000c660b200341d8006a2001410110a5052003280258450d6420002003290358370200200041086a200341d8006a41086a2802003602000c650b200341d8006a2001410210a4052003280258450d6320002003290358370200200041086a200341d8006a41086a2802003602000c640b200341d8006a2001410210a4052003280258450d6220002003290358370200200041086a200341d8006a41086a2802003602000c630b200341d8006a2001410210a4052003280258450d6120002003290358370200200041086a200341d8006a41086a2802003602000c620b200341d8006a2001410210a4052003280258450d6020002003290358370200200041086a200341d8006a41086a2802003602000c610b200341d8006a2001410210a4052003280258450d5f20002003290358370200200041086a200341d8006a41086a2802003602000c600b200341d8006a2001410210a4052003280258450d5e20002003290358370200200041086a200341d8006a41086a2802003602000c5f0b200341d8006a2001410210a4052003280258450d5d20002003290358370200200041086a200341d8006a41086a2802003602000c5e0b200341d8006a2001410210a5052003280258450d5c20002003290358370200200041086a200341d8006a41086a2802003602000c5d0b200341d8006a2001410210a5052003280258450d5b20002003290358370200200041086a200341d8006a41086a2802003602000c5c0b200341d8006a2001410210a5052003280258450d5a20002003290358370200200041086a200341d8006a41086a2802003602000c5b0b200341d8006a2001410210a5052003280258450d5920002003290358370200200041086a200341d8006a41086a2802003602000c5a0b200341d8006a2001410210a5052003280258450d5820002003290358370200200041086a200341d8006a41086a2802003602000c590b200341d8006a2001410210a5052003280258450d5720002003290358370200200041086a200341d8006a41086a2802003602000c580b200341d8006a2001410210a5052003280258450d5620002003290358370200200041086a200341d8006a41086a2802003602000c570b200341d8006a2001410310a4052003280258450d5520002003290358370200200041086a200341d8006a41086a2802003602000c560b200341d8006a2001410310a4052003280258450d5420002003290358370200200041086a200341d8006a41086a2802003602000c550b200341d8006a2001410310a4052003280258450d5320002003290358370200200041086a200341d8006a41086a2802003602000c540b200341d8006a2001410310a4052003280258450d5220002003290358370200200041086a200341d8006a41086a2802003602000c530b200341d8006a2001410310a4052003280258450d5120002003290358370200200041086a200341d8006a41086a2802003602000c520b200341d8006a2001410310a4052003280258450d5020002003290358370200200041086a200341d8006a41086a2802003602000c510b200341d8006a2001410310a4052003280258450d4f20002003290358370200200041086a200341d8006a41086a2802003602000c500b200341d8006a2001410310a5052003280258450d4e20002003290358370200200041086a200341d8006a41086a2802003602000c4f0b200341d8006a2001410310a5052003280258450d4d20002003290358370200200041086a200341d8006a41086a2802003602000c4e0b200341d8006a2001410310a5052003280258450d4c20002003290358370200200041086a200341d8006a41086a2802003602000c4d0b200341d8006a2001410310a5052003280258450d4b20002003290358370200200041086a200341d8006a41086a2802003602000c4c0b200341d8006a2001410310a5052003280258450d4a20002003290358370200200041086a200341d8006a41086a2802003602000c4b0b200341d8006a2001410310a5052003280258450d4920002003290358370200200041086a200341d8006a41086a2802003602000c4a0b200341d8006a2001410310a5052003280258450d4820002003290358370200200041086a200341d8006a41086a2802003602000c490b200341d8006a20014101410010a6052003280258450d4720002003290358370200200041086a200341d8006a41086a2802003602000c480b200341d8006a20014102410010a6052003280258450d4620002003290358370200200041086a200341d8006a41086a2802003602000c470b200341d8006a20014102410010a6052003280258450d4520002003290358370200200041086a200341d8006a41086a2802003602000c460b200341d8006a20014103410010a6052003280258450d4420002003290358370200200041086a200341d8006a41086a2802003602000c450b200341d8006a20014103410010a6052003280258450d4320002003290358370200200041086a200341d8006a41086a2802003602000c440b200341d8006a20014100410110a6052003280258450d4220002003290358370200200041086a200341d8006a41086a2802003602000c430b200341d8006a20014100410110a6052003280258450d4120002003290358370200200041086a200341d8006a41086a2802003602000c420b200341d8006a20014102410110a6052003280258450d4020002003290358370200200041086a200341d8006a41086a2802003602000c410b200341d8006a20014102410110a6052003280258450d3f20002003290358370200200041086a200341d8006a41086a2802003602000c400b200341d8006a20014103410110a6052003280258450d3e20002003290358370200200041086a200341d8006a41086a2802003602000c3f0b200341d8006a20014103410110a6052003280258450d3d20002003290358370200200041086a200341d8006a41086a2802003602000c3e0b200341d8006a20014100410210a6052003280258450d3c20002003290358370200200041086a200341d8006a41086a2802003602000c3d0b200341d8006a20014100410210a6052003280258450d3b20002003290358370200200041086a200341d8006a41086a2802003602000c3c0b200341d8006a20014101410210a6052003280258450d3a20002003290358370200200041086a200341d8006a41086a2802003602000c3b0b200341d8006a20014101410210a6052003280258450d3920002003290358370200200041086a200341d8006a41086a2802003602000c3a0b200341d8006a20014103410210a6052003280258450d3820002003290358370200200041086a200341d8006a41086a2802003602000c390b200341d8006a20014100410310a6052003280258450d3720002003290358370200200041086a200341d8006a41086a2802003602000c380b200341d8006a20014100410310a6052003280258450d3620002003290358370200200041086a200341d8006a41086a2802003602000c370b200341d8006a20014101410310a6052003280258450d3520002003290358370200200041086a200341d8006a41086a2802003602000c360b200341d8006a20014101410310a6052003280258450d3420002003290358370200200041086a200341d8006a41086a2802003602000c350b200341d8006a20014102410310a6052003280258450d3320002003290358370200200041086a200341d8006a41086a2802003602000c340b200341d8006a20014102410010a6052003280258450d3220002003290358370200200041086a200341d8006a41086a2802003602000c330b200341d8006a20014103410110a6052003280258450d3120002003290358370200200041086a200341d8006a41086a2802003602000c320b200341d8006a20014100410210a6052003280258450d3020002003290358370200200041086a200341d8006a41086a2802003602000c310b200341d8006a20014101410310a60520032802580d1b0c2f0b411841011033000b200941011033000b200541041033000b200541041033000b200641041033000b411841011033000b411a41011033000b200641041033000b411841011033000b200341ec006a41013602002003420237025c200341e8dfc4003602582003413336023c2003200441056a3602382003200341386a360268200341106a200341d8006a10eb03200041086a200341106a41086a280200360200200020032903103702000c260b200741011033000b200641011033000b200641011033000b200541011033000b200641011033000b200441011033000b200541011033000b200541011033000b200541011033000b200641011033000b200441011033000b200441011033000b200541011033000b200441011033000b200441011033000b200441011033000b200441011033000b20002003290358370200200041086a200341d8006a41086a2802003602000c140b200329023c210b200328023821010b2001450d112000200b370204200020013602000c120b200329023c210b200328023821010b2001450d0f2000200b370204200020013602000c100b2004450d0e2001290200210b0b2000200b370204200020043602000c0e0b02400240024002400240200141306a2802002202417f6a220420024f0d00200420024b0d00200128022820044103746a22052802002204200141206a220628020022024b0d01200421010c020b4118102d2200450d022003421837025c20032000360258200341d8006a41004118109a0520032003280260220041186a3602602000200328025822016a411841cee9c4004118109b052003200329025c37025c2003200136025841cadec400413b200341d8006a4188dfc4001038000b024002402001411c6a280200220720026b200420026b2208490d0020012802182107200221010c010b200220086a22092002490d0e2007410174220a2009200a20094b1b22094100480d0e0240024020070d002009102d21070c010b200128021820072009102f21070b2007450d03200120073602182001411c6a2009360200200141206a28020021010b200720016a21090240024020084102490d002009410420042002417f736a220210aa051a2007200220016a22016a21090c010b2008450d010b200941043a0000200141016a21010b20062001360200200541013a00060c0e0b411841011033000b200941011033000b200641027421060340200320042802002205360248200220054d0d0220022005417f736a220520024f0d060240200720054103746a22052d00044103460d0020052d00054104470d040b200441046a21042006417c6a22060d000b410421090b200341d8006a200141186a2202200d4100109c0520032d00584101470d02200341086a200341e4006a2802003602002003200329025c3703000c030b200341ec006a220441023602002003411c6a41053602002003420237025c200341e8e9c40036025820034105360214200320023602002003200341106a360268200320033602182003200341c8006a360210200341386a200341d8006a10eb03200328023821022003200329023c37023c20032002360238200441013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021022003290214210b0240200328023c450d00200328023810310b2003200b370204200320023602000c020b2003411c6a4133360200200341ec006a41023602002003420237025c200341f8dfc4003602582003200541056a360218200341333602142003200341106a3602682003200341306a3602102003200341d8006a10eb030c010b0240200941ff01714104460d00200341d8006a2002200d2009109c0502400240024020032d00584101460d000240200141206a2802002204200141246a22052802004f0d00024020042001411c6a280200470d00200441016a22052004490d0b200441017422062005200620054b1b22054100480d0b0240024020040d002005102d21020c010b200228020020042005102f21020b2002450d04200120023602182001411c6a2005360200200141206a28020021040b200128021820046a20093a0000200141206a2202200228020041016a3602000c040b200341ec006a220241013602002003420137025c200341c8eac4003602582003410536023c200320053602382003200341386a360268200341106a200341d8006a10eb0320032802102204450d032003200329021437023c20032004360238200241013602002003420137025c200341fce3c40036025820034125360204200320033602682003200341386a360200200341106a200341d8006a10eb03200328021021022003290214210b0240200328023c450d00200328023810310b20020d010c030b200328025c2202450d02200341e0006a290300210b0b2003200b370204200320023602000c020b200541011033000b200341003602000b024020032802002202450d0020002003290204370204200020023602000c080b0240024002400240200141306a2802002202417f6a220420024f0d00200420024d0d010b4118102d2200450d012003421837025c20032000360258200341d8006a41004118109a0520032003280260220041186a3602602000200328025822016a411841cee9c4004118109b052003200329025c37025c2003200136025841cadec400413b200341d8006a4188dfc4001038000b02400240200128022820044103746a22052802002204200141206a220628020022024b0d00200421010c010b024002402001411c6a280200220720026b200420026b2208490d0020012802182107200221010c010b200220086a22092002490d082007410174220a2009200a20094b1b22094100480d080240024020070d002009102d21070c010b200128021820072009102f21070b2007450d03200120073602182001411c6a2009360200200141206a28020021010b200720016a21090240024020084102490d002009410420042002417f736a220210aa051a2007200220016a22016a21090c010b2008450d010b200941043a0000200141016a21010b20062001360200200541013a00060c080b411841011033000b200941011033000b41aaeac400411d10bf01000b2001450d040b2000200b370204200020013602000c040b02400240024002400240200141306a2802002202417f6a220420024f0d00200420024b0d00200128022820044103746a22052802002204200141206a220628020022024b0d01200421010c020b4118102d2200450d022003421837025c20032000360258200341d8006a41004118109a0520032003280260220041186a3602602000200328025822016a411841cee9c4004118109b052003200329025c37025c2003200136025841cadec400413b200341d8006a4188dfc4001038000b024002402001411c6a280200220720026b200420026b2208490d0020012802182107200221010c010b200220086a22092002490d042007410174220a2009200a20094b1b22094100480d040240024020070d002009102d21070c010b200128021820072009102f21070b2007450d03200120073602182001411c6a2009360200200141206a28020021010b200720016a21090240024020084102490d002009410420042002417f736a220210aa051a2007200220016a22016a21090c010b2008450d010b200941043a0000200141016a21010b20062001360200200541013a00060c040b411841011033000b200941011033000b1034000b200341d8006a200141186a2006109d052003280258450d0020002003290358370200200041086a200341d8006a41086a2802003602000c010b200041003602000b200341f0006a24000b6501017f230041206b220224002002412e360204200220003602002001411c6a2802002100200128021821012002411c6a41013602002002420137020c200241e8eac4003602082002200236021820012000200241086a10ac022101200241206a240020010b911f03127f017e037f23004180026b220524000240024020014115490d00410121064101210702400240034020012108200021092006200771410173210a024002400240034002400240024002402004450d00024020064101710d002000200110c1042004417f6a21040b2001410276220741036c210b2007410174210c4100210d20014132490d03200741016a210e200020074103746a220f28020020002007417f6a220d4103746a2210280200201041046a2802002210200f41046a280200220f200f20104b1b10ad052211450d01417f410120114100481b21100c020b200020011082050c0b0b417f200f201047200f2010491b21100b2007200d2010417f4622101b210f024002402000200e4103746a22112802002000200d200720101b22124103746a2207280200200741046a2802002207201141046a280200220d200d20074b1b10ad052211450d00417f410120114100481b21070c010b417f200d200747200d2007491b21070b4102410120101b20102007417f4622071b210d024002402000200e201220071b22114103746a22102802002000200f4103746a2207280200200741046a2802002207201041046a2802002210201020074b1b10ad05220e450d00417f4101200e4100481b21100c010b417f201020074720102007491b21100b200c4101722107200d2010417f4622126a2113024002402000200c4103746a220d2802002000200c417f6a22104103746a220e280200200e41046a280200220e200d41046a280200220d200d200e4b1b10ad052214450d00417f410120144100481b210e0c010b417f200d200e47200d200e491b210e0b200c2010200e417f46220e1b210d2013200e6a211302400240200020074103746a221428020020002010200c200e1b220e4103746a220c280200200c41046a280200220c201441046a28020022102010200c4b1b10ad052214450d00417f410120144100481b210c0c010b417f2010200c472010200c491b210c0b2013200c417f46220c6a21100240024020002007200e200c1b22134103746a220c2802002000200d4103746a2207280200200741046a2802002207200c41046a280200220c200c20074b1b10ad05220e450d00417f4101200e4100481b210c0c010b417f200c200747200c2007491b210c0b200b41016a21072010200c417f4622146a2115024002402000200b4103746a220e2802002000200b417f6a220c4103746a2210280200201041046a2802002210200e41046a280200220e200e20104b1b10ad052216450d00417f410120164100481b21100c010b417f200e201047200e2010491b21100b200b200c2010417f4622101b210e201520106a211502400240200020074103746a22162802002000200c200b20101b22104103746a220c280200200c41046a280200220c201641046a280200220b200b200c4b1b10ad052216450d00417f410120164100481b210c0c010b417f200b200c47200b200c491b210c0b2015200c417f46220c6a211502400240200020072010200c1b220b4103746a220c2802002000200e4103746a2207280200200741046a2802002207200c41046a280200220c200c20074b1b10ad052210450d00417f410120104100481b21100c010b417f200c200747200c2007491b21100b200f201120121b2107200d201320141b210c200e200b2010417f4622101b210b201520106a210d0b024002402000200c4103746a220e280200200020074103746a2210280200201041046a2802002210200e41046a280200220e200e20104b1b10ad05220f450d00417f4101200f4100481b21100c010b417f200e201047200e2010491b21100b200c20072010417f46220e1b2110200d200e6a210d024002402000200b4103746a220f28020020002007200c200e1b220e4103746a2207280200200741046a2802002207200f41046a280200220c200c20074b1b10ad05220f450d00417f4101200f4100481b21070c010b417f200c200747200c2007491b21070b200d2007417f46220c6a2107024002400240024002402000200b200e200c1b220d4103746a220b280200200020104103746a220c280200200c41046a280200220c200b41046a280200220b200b200c4b1b10ad05220e450d00200e4100480d010c020b200b200c4f0d010b200741016a2207410c490d0102402001410176220b450d00200020014103746a41786a21072000210c0340200c2902002117200c200729020037020020072017370200200c41086a210c200741786a2107200b417f6a220b0d000b0b20012010417f736a2110410121070c020b200d21100b20074521070b0240200745200a724101710d00200020011083050d090b2003450d010240201020014f0d00024002402003280200200020104103746a2207280200200741046a280200220c200341046a280200220b200b200c4b1b10ad05220e450d00200e41004e0d010c050b200b200c490d040b200029020021172000200729020037020020072017370200200041786a21122000410c6a2113200041086a2114200028020421072000280200210d4100210b2001210e0340024002400240200b200e417f6a22114f0d002013200b4103746a210c034002400240200d200c417c6a280200200c28020022102007200720104b1b10ad05220f450d00200f4100480d030c010b20072010490d020b200c41086a210c2011200b41016a220b470d000c020b0b0240200b20114f0d002012200e4103746a210c2011210e034002400240200d200c280200200c41046a28020022102007200720104b1b10ad05220f450d00200f4100480d010c050b200720104f0d040b200c41786a210c200b200e417f6a220e490d000b0b200b21110b200020073602042000200d36020002402001201141016a2207490d00200020074103746a2100200120076b220141154f0d040c0b0b20072001107b000b2014200b4103746a221029020021172010200c290200370200200c2017370200200b41016a210b0c000b0b0b41c4b1c40020102001104b000b20080d0141f8b0c40041004100104b000b20002109200121080b201020084f0d02200929020021172009200920104103746a2207290200370200200720173702002009280204210c2009280200211241002100410021184100211902402008417f6a220e450d002009410c6a21074100211803400240024002402007417c6a2802002012200c2007280200220b200b200c4b1b10ad052210450d00201041004e0d010c020b200b200c490d010b200e21190240200e20184d0d00200920084103746a41786a2107200e211903400240024020072802002012200c200741046a280200220b200b200c4b1b10ad052210450d00201041004e0d010c030b200b200c490d020b200741786a21072019417f6a221920184b0d000b0b0240024020192018490d00200e2019490d010c040b20182019107b000b2019200e10b601000b200741086a2107200e201841016a2218470d000b200e2118200e21190b200941086a220720194103746a210e41800121144100211141002110410021014180012106200720184103746a221a210d03400240200e200d6b22074187104b220a0d002007410376220741807f6a200720112000492001201049220b72220f1b21070240200f450d0020062007200b1b210620072014200b1b21140c010b2007200741017622066b21140b024020012010470d00024020060d002005221021010c010b4100210720052110200d210b0340201020073a0000200741016a210702400240200b2802002012200c200b41046a280200220f200f200c4b1b10ad052201450d00417f410120014100481b210f0c010b417f200f200c47200f200c491b210f0b200b41086a210b2010200f417f476a211020062007470d000b200521010b024020112000470d00024020140d0020054180016a220021110c010b200e41786a21074100210b20054180016a210003402000200b3a0000200b41016a210b0240024020072802002012200c200741046a280200220f200f200c4b1b10ad052211450d00417f410120114100481b210f0c010b417f200f200c47200f200c491b210f0b200741786a21072000200f417f466a21002014200b470d000b20054180016a21110b0240200020116b2207201020016b220b200b20074b1b2213450d00200d20012d00004103746a22072802042115200728020021162007200e20112d0000417f734103746a290200370200024020134101460d00410021070340200e201120076a220b2d0000417f734103746a200d200120076a41016a220f2d00004103746a290200370200200d200f2d00004103746a200e200b41016a2d0000417f734103746a290200370200200741026a210b200741016a220f2107200b2013490d000b2011200f6a21112001200f6a21010b200e20112d0000417f734103746a2207201536020420072016360200201141016a2111200141016a21010b200e20144103746b200e20112000461b210e200d20064103746a200d20012010461b210d200a0d000b02400240200120104f0d00200e21070340200d2010417f6a22102d00004103746a220b2902002117200b200741786a22072902003702002007201737020020012010490d000c020b0b200d2107201120004f0d000340200729020021172007200e2000417f6a22002d0000417f734103746a220b290200370200200b2017370200200741086a210720112000490d000b0b2009200c36020420092012360200024020082007201a6b41037620186a22014d0d00200929020021172009200920014103746a220729020037020020072017370200200820016b220c450d02200c20012001200c4b1b210b20084103762110200741086a2100024002402001200c417f6a220c490d002000200c20022007200410f904200921000c010b2009200120022003200410f90420072103200c21010b200b20104f2106201920184d2107200141154f0d010c040b0b4188b1c40020012008104b000b4198b1c400411c41b4b1c40010a401000b4188b1c40020102008104b000b20014102490d00200041786a211341002114410121120340201241037421072012417f6a2110201241016a2112024002400240200020076a22072802002211200020104103746a220f280200200f41046a280200220c200741046a280200220b200b200c4b1b10ad05220e450d00200e4100480d010c020b200b200c4f0d010b2007200f29020037020002402010450d002014210c20132107024003400240024020112007280200200741046a280200220e200b200b200e4b1b10ad05220d450d00200d4100480d010c030b200b200e4f0d030b20002010417f6a22104103746a210f200741086a2007290200370200200741786a2107200c41016a220e200c49210d200e210c200d450d000b0b200741086a210f0b200f200b360204200f20113602000b2014417f6a2114201341086a211320122001470d000b0b20054180026a24000bf00201067f230041c0006b2202240041002103410021040240024003400240024002402003411f4b0d002001280204220520012802082206460d01200641016a22072006490d04200520074f0d022007200510b601000b200041013602002000410f3a00040c040b200241013a000f200241346a4101360200200242013702242002419cdfc3003602202002412336023c2002200241386a36023020022002410f6a360238200241106a200241206a10eb032002410b6a200241186a28020036000020022002290310370003200041053a0004200020022900003700052000410c6a200241076a290000370000200041013602000c030b200128020020066a2d0000210620012007360208200641ff00712003411f71742004722104200341076a21032006418001710d000b0240024020034120490d002006410f4b0d010b20004100360200200020043602040c020b200041013602002000410d3a00040c010b417f2007107b000b200241c0006a24000bfb07030e7f017e017f200241086a2103200241046a210420012802002205210602400240024002400240034002400240200428020020032802002207460d00200228020021080c010b200741016a22082007490d02200741017422092008200920084b1b22094100480d020240024020070d002009102d21080c010b200228020020072009102f21080b2008450d032002200836020020042009360200200328020021070b2003200741016a360200200820076a200641807f72200641ff0071200641077622071b3a00002007210620070d000b2001280204220a2001410c6a2802002206410c6c6a210b200141086a280200210c200a21072006450d03200a21072005450d03200b41746a210d200241086a210841002107200a210e02400340200e2103024003402003280200220f0d01200741016a2107200b2003410c6a2203470d000c080b0b2003410c6a210e200741016a21102005417f6a2105200341046a290200211102400240034002400240200241046a220428020020082802002206460d00200228020021090c010b200641016a22092006490d06200641017422012009200120094b1b22014100480d060240024020060d002001102d21090c010b200228020020062001102f21090b2009450d022002200936020020042001360200200828020021060b2008200641016a360200200920066a200741807f72200741ff0071200741077622061b3a0000200621072006450d020c000b0b200141011033000b2011422088a7221221060240034002400240200428020020082802002207460d00200228020021090c010b200741016a22092007490d05200741017422012009200120094b1b22014100480d050240024020070d002001102d21090c010b200228020020072001102f21090b2009450d022002200936020020042001360200200828020021070b2008200741016a360200200920076a200641807f72200641ff0071200641077622071b3a00002007210620070d000b0240024020042802002206200828020022076b2012490d00200228020021060c010b200720126a22092007490d04200641017422072009200720094b1b22074100480d040240024020060d002007102d21060c010b200228020020062007102f21060b2006450d032002200636020020042007360200200828020021070b2008200720126a360200200620076a200f201210ab051a02402011a7450d00200f10310b200d2003460d052010210720050d010c050b0b200141011033000b200741011033000b1034000b200941011033000b2003410c6a21070b2007200b460d000340024020072802002206450d00200741046a280200450d00200610310b2007410c6a2207200b470d000b0b0240200c450d00200a10310b2000411f3a00000bd606010a7f200128020421032001280200210441002105410121064100210720012802082208210902400240024002400340024020072005470d002005410174220a200541016a220b200a200b4b1b220a4100480d050240024020050d00200a102d21060c010b20062005200a102f21060b2006450d02200a21050b200620076a200941807f72200941ff00712009410776220a1b3a0000200741016a2107200a2109200a0d000b0240200520076b20084f0d00200720086a22092007490d042005410174220a2009200a20094b1b22094100480d040240024020050d002009102d21060c010b200620052009102f21060b2006450d02200921050b200620076a2004200810ab051a02402003450d00200410310b200128020c210c0240200520086b20076b200141146a2802002209490d00200820096a20076a21030c030b200820076a220a20096a2203200a490d032005410174220a2003200a20034b1b220a4100480d030240024020050d00200a102d21060c010b20062005200a102f21060b02402006450d00200a21050c030b200a41011033000b200a41011033000b200941011033000b200620086a20076a200c200910ab051a200241086a210b200241046a210820032109024002400340024002402008280200200b2802002207460d002002280200210a0c010b200741016a220a2007490d0420074101742204200a2004200a4b1b22044100480d040240024020070d002004102d210a0c010b200228020020072004102f210a0b200a450d022002200a36020020082004360200200b28020021070b200b200741016a360200200a20076a200941807f72200941ff0071200941077622071b3a00002007210920070d000b02400240200241046a2802002209200241086a28020022076b2003490d00200228020021090c010b200720036a220a2007490d0320094101742207200a2007200a4b1b22074100480d030240024020090d002007102d21090c010b200228020020092007102f21090b2009450d0220022009360200200241046a2007360200200241086a28020021070b200241086a200720036a360200200920076a2006200310ab051a02402005450d00200610310b2000411f3a00000240200141106a280200450d00200c10310b0f0b200441011033000b200741011033000b1034000bf20103027f017e057f024020002802082201200028020c460d00034020002001411c6a36020820012802102202450d01200141146a2902002103024020012802042204450d00200141086a280200210502402001410c6a2802002201450d0020014104742106200421010340024020012d00004109470d000240200141046a2207280200220828020441ffffffff0371450d0020082802001031200728020021080b200810310b200141106a2101200641706a22060d000b0b2005450d00200410310b02402003a7450d00200210310b20002802082201200028020c470d000b0b02402000280204450d00200028020010310b0be50101067f024020002802082201200028020c460d0003402000200141186a36020820012802002202450d01200141146a2802002103200141106a2802002104200128020c210502402001280204450d00200210310b02402003450d0020034104742103200521010340024020012d00004109470d000240200141046a2206280200220228020441ffffffff0371450d0020022802001031200628020021020b200210310b200141106a2101200341706a22030d000b0b02402004450d00200510310b20002802082201200028020c470d000b0b02402000280204450d00200028020010310b0bf20103027f017e057f024020002802082201200028020c460d00034020002001411c6a36020820012802102202450d01200141146a2902002103024020012802042204450d00200141086a280200210502402001410c6a2802002201450d0020014104742106200421010340024020012d00004109470d000240200141046a2207280200220828020441ffffffff0371450d0020082802001031200728020021080b200810310b200141106a2101200641706a22060d000b0b2005450d00200410310b02402003a7450d00200210310b20002802082201200028020c470d000b0b02402000280204450d00200028020010310b0bce0101057f024020002802082201450d00200028020022022001411c6c6a21030340024020022802042200450d0002402002410c6a2802002201450d00200141047421010340024020002d00004109470d000240200041046a2204280200220528020441ffffffff0371450d0020052802001031200428020021050b200510310b200041106a2100200141706a22010d000b0b200241086a280200450d00200228020410310b2002411c6a21000240200241146a280200450d00200228021010310b2000210220002003470d000b0b0bf504010b7f230041c080016b220224002002200110fa04410121030240024020022802004101470d0020002002290204370204200041013602002000410c6a2002410c6a2902003702000c010b20022802042104200241004180800110aa052105410021064100210702400240024002402004450d00410021084100210641012103410021090340024002402001280204220a200128020822076b200420096b220b41808001200b41808001491b220b490d002007200b6a220c2007490d04200a200c4f0d01200c200a10b601000b200541013a008f8001200541b480016a4101360200200542013702a480012005419cdfc3003602a08001200541233602bc80012005200541b880016a3602b0800120052005418f80016a3602b880012005419080016a200541a080016a10eb032005418b80016a2005419880016a2802003600002005200529039080013700838001200041053a00042000200529008080013700052000410c6a2005418780016a290000370000200041013602002006450d06200310310c060b2005200128020020076a200b10ab05210a2001200c36020802400240200620086b200b490d00200b20086a21070c010b2008200b6a22072008490d052006410174220c2007200c20074b1b220c4100480d050240024020060d00200c102d21030c010b20032006200c102f21030b2003450d04200c21060b200320086a200a200b10ab051a200721082004200b20096a22094b0d000b0b2000200336020420004100360200200041146a2007360200200041106a41003602002000410c6a2007360200200041086a20063602000c030b2007200c107b000b200c41011033000b1034000b200241c080016a24000bb20102037f017e024020014101762202450d00200020012002417f6a1084052002417e6a210203402002417f460d012000200120021084052002417f6a21020c000b0b0240024020014102490d00200141037420006a41786a21022001210303402003417f6a220420014f0d02200029020021052000200229020037020020022005370200200020044100108405200241786a210220042103200441014b0d000b0b0f0b4188b1c4002003417f6a2001104b000b9a06050a7f017e017f017e037f200041686a2102200041786a2103200141324921044101210541002106024003400240024020052001490d00410021070c010b200320054103746a210841012107034002400240200841086a22092802002008280200200841046a280200220a2008410c6a28020022082008200a4b1b10ad05220b450d00200b4100480d030c010b2008200a490d020b4101210a200541016a220520014921072009210820012005470d000c030b0b2005200146210a20040d0120052001460d01024002400240024002402005417f6a220820014f0d002007410171450d01200020084103746a2208290200210c200820002005410374220d6a220b290200220e370200200b200c37020020054102490d0402400240200ea7220f20002005417e6a220a4103746a2210280200201041046a2802002207200841046a2802002209200920074b1b10ad052211450d0020114100480d010c060b200920074f0d050b20082010290200370200200a450d032002200d6a2108034002400240200f2008280200200841046a28020022072009200920074b1b10ad05220d450d00200d4100480d010c050b200920074f0d050b2000200a417f6a220a4103746a2110200841086a2008290200370200200841786a2108200a0d000c030b0b41f8b0c40020082001104b000b4188b1c40020052001104b000b200841086a21100b201020093602042010200f3602000b200641016a21060240200120056b220d4102490d0002400240200b280208200b280200220f200b41046a2802002209200b410c6a2802002208200820094b1b10ad05220a450d00200a4100480d010c020b200820094f0d010b200b41086a2111200b200b2902083702000240200d4103490d004103210a41022107034002400240200b20074103746a2208280200200f2009200841046a2802002207200720094b1b10ad052210450d00201041004e0d030c010b200720094f0d020b200841786a20082902003702000240200a200d4f0d00200a2107200a41016a210a200821110c010b0b200821110b2011200f360200201120093602040b20064105470d000b4100210a0b200a0bb60202057f017e03402002410174220341017221040240024002400240200341026a220320014f0d00200420014f0d0102400240200020044103746a2205280200200020034103746a2206280200200641046a2802002206200541046a2802002205200520064b1b10ad052207450d00417f410120074100481b21060c010b417f200520064720052006491b21060b200320042006417f461b21040b0240200420014f0d00200220014f0d020240200020024103746a2202280200200020044103746a2203280200200341046a2802002206200241046a2802002205200520064b1b10ad052207450d00200741004e0d010c040b20052006490d030b0f0b41e8b2c40020042001104b000b41f8b2c40020022001104b000b200229020021082002200329020037020020032008370200200421020c000b0b040041010bb70101017f230041c0006b2202240020024100360210200242013703082002413136021c20022001410c6a3602202002200241206a3602182002200241086a3602242002413c6a41013602002002420137022c2002418cc2c4003602282002200241186a360238200241246a4194c2c400200241286a10ac021a20012d0000417f6a41ff0171200141046a290200200235021042208620023502088410280240200228020c450d00200228020810310b200241c0006a24000bc00101037f02400240024002402000280200220041046a2802002203200041086a28020022046b2002490d00200028020021030c010b200420026a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102d21030c010b200028020020032004102f21030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420026a360200200320046a2001200210ab051a41000f0b200441011033000b1034000bab0301047f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b0240024002400240200041046a2802002203200041086a28020022046b2001490d00200028020021030c010b200420016a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102d21030c010b200028020020032004102f21030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420016a360200200320046a2002410c6a200110ab051a200241106a240041000f0b200441011033000b1034000b6401017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a4194c2c400200241086a10ac022101200241206a240020010b280020004101360204200041086a200128020420012802006b4107762201360200200020013602000b810303027f047e037f230041f0006b21020240200128020022032001280204470d00200041003602000f0b200120034180016a360200200241203a00482002200341c0006a2f00003b01282002200341c2006a29000037012a2002200341ca006a2900003701322002200341d2006a29000037013a2002200341da006a2800003601422002200341de006a2f00003b0146200241d0006a41186a20022903402204370300200241d0006a41106a20022903382205370300200241d0006a41086a20022903302206370300200220022903282207370350200241086a41186a22012004370300200241086a41106a22082005370300200241086a41086a2209200637030020022007370308200241286a41186a220a2001290300370300200241286a41106a22012008290300370300200241286a41086a220820092903003703002002200229030837032820002003360200200020022903283700042000410c6a2008290300370000200041146a20012903003700002000411c6a200a2903003700000bc30d03037f047e107f230041d0016b22032400024002402001280200220420012802042205460d00200120044180016a360200200341203a00c8012003200441c0006a2f00003b01a8012003200441c2006a2900003701aa012003200441ca006a2900003701b2012003200441d2006a2900003701ba012003200441da006a2800003601c2012003200441de006a2f00003b01c60120034188016a41186a20032903c001220637030020034188016a41106a20032903b801220737030020034188016a41086a20032903b0012208370300200320032903a801220937038801200341e8006a41186a220a2006370300200341e8006a41106a220b2007370300200341e8006a41086a220c200837030020032009370368200341c8006a41186a220d200a290300370300200341c8006a41106a220e200b290300370300200341c8006a41086a220f200c29030037030020032003290368370348200341286a41186a2210200d290300370300200341286a41106a2211200e290300370300200341286a41086a2212200f29030037030020032003290348370328200341086a41186a22132010290300370300200341086a41106a22142011290300370300200341086a41086a2215201229030037030020032003290328370308200341a8016a41186a22162013290300370300200341a8016a41106a22172014290300370300200341a8016a41086a22182015290300370300200320032903083703a80102402002450d00200541807f6a2119034020192004460d02200120044180026a360200200341003a00c801200441c0016a2d00002105200341013a00c801200320053a00a801200441c1016a2d00002105200341023a00c801200320053a00a901200441c2016a2d00002105200341033a00c801200320053a00aa01200441c3016a2d00002105200341043a00c801200320053a00ab01200441c4016a2d00002105200341053a00c801200320053a00ac01200441c5016a2d00002105200341063a00c801200320053a00ad01200441c6016a2d00002105200341073a00c801200320053a00ae012003200441c7016a2d00003a00af01200341083a00c801200441c8016a2d00002105200341093a00c801200320053a00b001200441c9016a2d000021052003410a3a00c801200320053a00b101200441ca016a2d000021052003410b3a00c801200320053a00b201200441cb016a2d000021052003410c3a00c801200320053a00b301200441cc016a2d000021052003410d3a00c801200320053a00b401200441cd016a2d000021052003410e3a00c801200320053a00b501200441ce016a2d000021052003410f3a00c801200320053a00b6012003200441cf016a2d00003a00b701200341103a00c801200441d0016a2d00002105200341113a00c801200320053a00b801200441d1016a2d00002105200341123a00c801200320053a00b901200441d2016a2d00002105200341133a00c801200320053a00ba01200441d3016a2d00002105200341143a00c801200320053a00bb01200441d4016a2d00002105200341153a00c801200320053a00bc01200441d5016a2d00002105200341163a00c801200320053a00bd01200441d6016a2d00002105200341173a00c801200320053a00be012003200441d7016a2d00003a00bf01200341183a00c801200441d8016a2d00002105200341193a00c801200320053a00c001200441d9016a2d000021052003411a3a00c801200320053a00c101200441da016a2d000021052003411b3a00c801200320053a00c201200441db016a2d000021052003411c3a00c801200320053a00c301200441dc016a2d000021052003411d3a00c801200320053a00c401200441dd016a2d000021052003411e3a00c801200320053a00c501200441de016a2d000021052003411f3a00c801200320053a00c6012003200441df016a2d00003a00c701200a20032903c001370300200341203a00c801200c20032903b001370300200b20032903b801370300200320032903a801370368200f200c290300370300200e200b290300370300200d200a290300370300200320032903683703482010200d2903003703002011200e2903003703002012200f2903003703002003200329034837032820132010290300370300201420112903003703002015201229030037030020032003290328370308201620132903003703002017201429030037030020182015290300370300200320032903083703a80120044180016a21042002417f6a22020d000b0b20002004360200200020032903a8013702042000410c6a2018290300370200200041146a20172903003702002000411c6a20162903003702000c010b200041003602000b200341d0016a24000b130020004101360204200041d8cbc4003602000b3400200041dfccc40036020420004100360200200041146a4107360200200041106a41f0ccc400360200200041086a420f3702000b2201017f230041106b22022400200241003602002000200210a802200241106a24000b1c00200128021841a1d9c400410f2001411c6a28020028020c1103000b3702017f017e230041106b2203240020032002105c200329030021042000200341086a29030037030820002004370300200341106a24000bdf0103017f027e027f230041c0006b220524000240024020030d00200041003602000c010b2003350200210620033502082107200541206a41186a22082004ad42808080808004841000220341186a290000370300200541206a41106a2204200341106a290000370300200541206a41086a2209200341086a2900003703002005200329000037032020031031200541186a2008290300370300200541106a2004290300370300200541086a200929030037030020052005290320370300200020062007422086842005ad4280808080800484100a10410b200541c0006a24000bae0201027f23004190016b2203240020032002105a0240024020032d000022024102470d00200041003a00000c010b200341e0006a200341286a290300370300200341e8006a200341306a290300370300200341d8006a41186a200341386a290300370300200341d8006a41206a200341c0006a290300370300200341d8006a41286a200341c8006a290300370300200341d8006a41306a200341d0006a2802003602002003200341206a29030037035802402002450d00200041003a00000c010b2003411c6a2802002102200341186a28020021042000200329026c370001200041013a0000200041196a20034184016a290200370000200041116a200341fc006a290200370000200041096a200341d8006a411c6a2902003700002002450d00200410310b20034190016a24000bbc0201047f230041e0006b2202240002404117102d2203450d0020034100290082e1403700002003410f6a4100290091e140370000200341086a410029008ae14037000020024297808080f002370234200220033602302001200241306a1046200241c0006a41186a220120023502384220862002350230841000220341186a290000370300200241c0006a41106a2204200341106a290000370300200241c0006a41086a2205200341086a2900003703002002200329000037034020031031200241106a41186a2001290300370300200241106a41106a2004290300370300200241106a41086a20052903003703002002200229034037031002402002280234450d00200228023010310b200241086a200241106a4120410141004100103f20022802082103200241e0006a240020034101460f0b411741011033000b860102017f037e230041e0006b22032400200341086a2002105a0240024020032d000822024102470d00420021040c010b2002410173ad2104200341186a2903002105200341106a290300210620020d00200341246a280200450d00200341206a28020010310b2000200637030820002004370300200041106a2005370300200341e0006a24000bf90503087f017e017f23004180026b2202240002400240024020012802202203450d0020012003417f6a36022020012802082104200128020c2203200128020422052f01064f0d01200241186a2206200520034105746a220741206a290000370300200241106a2208200741186a290000370300200241086a2209200741106a2900003703002002200741086a290000370300200241206a2005200341e0006c6a41e8026a41e00010ab051a2001200341016a36020c200120043602082001200536020420024180016a41186a200629030037030020024180016a41106a200829030037030020024180016a41086a2009290300370300200220022903003703800120024180016a41206a200241206a41e00010ab051a200020024180016a41800110ab051a0c020b200042023703200c010b2001280200210702400240200528020022030d002004ad210a410021030c010b200741016a210720053301044220862004ad84210a0b20051031200aa7210402400240200a422088a7220620032f01064f0d00200321050c010b034002400240200328020022050d002004ad210a410021050c010b200741016a210720033301044220862004ad84210a0b20031031200aa7210420052103200a422088a7220620052f01064f0d000b0b200241186a2208200520064105746a220341206a290000370300200241106a2209200341186a290000370300200241086a220b200341106a2900003703002002200341086a290000370300200241206a2005200641e0006c6a41e8026a41e00010ab051a200641027420056a418c0b6a280200210302402007417f6a2205450d00034020032802880b21032005417f6a22050d000b0b2001410036020c20012004360208200120033602042001410036020020024180016a41186a200829030037030020024180016a41106a200929030037030020024180016a41086a200b290300370300200220022903003703800120024180016a41206a200241206a41e00010ab051a200020024180016a41800110ab051a0b20024180026a24000bdd0605057f047e017f017e047f23004190016b2202240002400240024020012802202203450d0020012003417f6a36022020012802082104200128020c2203200128020422052f01064f0d01200241e0006a41186a200520034105746a220641206a2900002207370300200241e0006a41106a200641186a2900002208370300200241e0006a41086a200641106a29000022093703002002200641086a290000220a370360200241306a41086a20052003410c6c6a220641f0026a280200220b360200200641e8026a290200210c2001200341016a36020c20012004360208200120053602042002200c3703302000200a3702042000410c6a2009370200200041146a20083702002000411c6a2007370200200041246a200c3702002000412c6a200b360200200041013602000c020b200041003602000c010b2001280200210602400240200528020022030d002004ad210c410021030c010b200641016a210620053301044220862004ad84210c0b20051031200ca7210402400240200c422088a7220b20032f01064f0d00200321050c010b034002400240200328020022050d002004ad210c410021050c010b200641016a210620033301044220862004ad84210c0b20031031200ca7210420052103200c422088a7220b20052f01064f0d000b0b200241306a41186a220d2005200b4105746a220341206a290000370300200241306a41106a220e200341186a290000370300200241306a41086a220f200341106a2900003703002002200341086a290000370330200241d0006a41086a22102005200b410c6c6a220341f0026a2802003602002002200341e8026a290200370350200b41027420056a41f0036a280200210302402006417f6a2205450d00034020032802ec0321032005417f6a22050d000b0b2001410036020c200120043602082001200336020420014100360200200241e0006a41186a200d290300220c370300200241e0006a41106a200e2903002207370300200241e0006a41086a200f290300220837030020024188016a201028020022033602002000200229033022093702042000410c6a2008370200200041146a20073702002000411c6a200c370200200041246a2002290350220c3702002000412c6a2003360200200220093703602002200c37038001200041013602000b20024190016a24000be80202097f027e230041206b220324000240200128020041016a220441004c0d0020012004360200200141046a2105200141086a28020021060240024003402005280200220741086a210820072f0106220941057421054100210a0240024003402005450d0120022008412010ad05220b450d02200541606a2105200a41016a210a200841206a2108200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200720094102746a41880b6a21050c010b0b2007200a41e0006c6a220541c5036a310000200541e8026a290300220c200c5022081ba7450d004200200541f8026a29030020081b210c4200200541f0026a29030020081b210d0c010b200341086a20012802102002200141146a28020028021c110500200341106a290300210c200128020021042003290308210d0b20012004417f6a3602002000200c3703082000200d370300200341206a24000f0b41aeddc4004118200341186a41d8ddc4001038000bcb0401097f230041c0006b220324000240200128020041016a220441004c0d0020012004360200200141046a2105200141086a280200210602400240024003402005280200220741086a210820072f0106220941057421054100210a0240024003402005450d0120022008412010ad05220b450d02200541606a2105200a41016a210a200841206a2108200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200720094102746a41880b6a21050c010b0b2007200a41e0006c6a220841e8026a210502400240200841c5036a2d00000d00200341206a41086a220a200541c5006a290000370300200341206a41106a220b200541cd006a290000370300200341206a41186a2207200541d5006a29000037030020032005413d6a2900003703204102210820052d003c4101470d01200341186a2007290300370300200341106a200b290300370300200341086a200a29030037030020032003290320370300410121080c010b200341086a200541c5006a290000370300200341106a200541cd006a290000370300200341186a200541d5006a29000037030020032005413d6a29000037030020052d003c21080b200841ff01714102470d010b200020012802102002200141146a280200280210110500200128020021040c010b200020083a000020002003290300370001200041096a200341086a290300370000200041116a200341106a290300370000200041196a200341186a2903003700000b20012004417f6a360200200341c0006a24000f0b41aeddc4004118200341206a41d8ddc4001038000b810101017f024002400240200041046a280200220320016b20024f0d00200120026a22022001490d02200341017422012002200120024b1b22014100480d020240024020030d002001102d21020c010b200028020020032001102f21020b2002450d0120002002360200200041046a20013602000b0f0b200141011033000b1034000bda0101017f230041e0006b22042400200420013602082004200336020c024020012003470d0020002002200110ab051a200441e0006a24000f0b200441286a41146a4103360200200441346a4104360200200441106a41146a41033602002004420337021420044180ecc4003602102004410436022c2004200441086a36024020042004410c6a360244200442043703582004420137024c200441d4ecc4003602482004200441286a3602202004200441c8006a3602382004200441c4006a3602302004200441c0006a360228200441106a4190edc40010b301000bbb0601037f230041d0006b22042400200420033a000f0240024002400240024020022802082205417f6a220620054f0d00200620054d0d010b4118102d2202450d012004421837023420042002360230200441306a41004118109a0520042004280238220241186a3602382002200428023022056a411841cee9c4004118109b0520042004290234370234200420053602304198dfc4004134200441306a4188dfc4001038000b200141086a2802002105200228020020064103746a2206280200210202400240024020062d0006450d0020052002460d010b024002400240200520024d0d00200141086a2005417f6a2202360200200128020020026a2d00002205417c6a220241014b0d02024020020e020400040b4118102d22020d01411841011033000b412b102d2202450d05200041013a0000200241276a41002800b6e344360000200241206a41002900afe344370000200241186a41002900a7e344370000200241106a410029009fe344370000200241086a4100290097e3443700002002410029008fe344370000200041086a42ab808080b005370200200041046a20023602000c060b200241106a41002900dee944370000200241086a41002900d6e944370000200241002900cee94437000020044298808080800337022420042002360220200441c4006a410136020020044201370234200441fce3c4003602302004412536024c2004200441c8006a3602402004200441206a360248200441106a200441306a10eb0302402004280224450d00200428022010310b200041013a0000200041046a20042903103702002000410c6a200441106a41086a2802003602000c050b0240200341ff017122024104460d0020052002470d020b200041003a0000200020053a00010c040b20004180083b01000c030b200420053a0048200441c4006a4102360200200441206a410c6a413236020020044202370234200441bce3c400360230200441323602242004200441206a3602402004200441c8006a36022820042004410f6a360220200441106a200441306a10eb032000410c6a200441186a280200360200200041046a2004290310370200200041013a00000c020b411841011033000b412b41011033000b200441d0006a24000b800602047f017e230041d0006b22032400024002400240024002400240200241086a2802002204417f6a220520044f0d00200520044d0d010b4118102d2202450d01200241106a41002900dee944370000200241086a41002900d6e944370000200241002900cee94437000020034298808080800337021420032002360210200341cc006a41013602002003420137023c200341fce3c400360238200341253602342003200341306a3602482003200341106a360230200341206a200341386a10eb03200041086a200341206a41086a280200360200200020032903203702002003280214450d04200328021010310c040b0240024002402002280200220620054103746a2d000522054104460d00200341386a200120022005109c05024020032d00384101470d002000200329023c370200200041086a200341c4006a2802003602000c070b200241086a2802002204450d01200228020021060b200241086a2004417f6a2202360200200620024103746a290200220742808080808080c0ff0083428080808080808001520d010b4118102d2202450d02200241106a41002900dee944370000200241086a41002900d6e944370000200241002900cee94437000020034298808080800337021420032002360210200341cc006a41013602002003420137023c200341fce3c400360238200341253602342003200341306a3602482003200341106a360230200341206a200341386a10eb03200041086a200341206a41086a280200360200200020032903203702002003280214450d04200328021010310c040b200141086a28020021022003200737030820022007a7470d02200041003602000c030b411841011033000b411841011033000b200341cc006a41023602002003412c6a41053602002003420237023c200341dce2c40036023820034105360224200320023602302003200341206a3602482003200341086a3602282003200341306a360220200341106a200341386a10eb03200041086a200341106a41086a280200360200200020032903103702000b200341d0006a24000bad0301057f230041c0006b2203240020032002360200024002402001280204220420024b0d002001280208417c6a21052001410c6a280200410374210102400340024020010d00200320043602042003412c6a4102360200200341306a410c6a41053602002003420337021c200341a8ebc400360218200341053602342003200341306a3602282003200341046a36023820032003360230200341086a200341186a10eb032000410c6a200341106a280200360200200041046a2003290308370200200041013a00000c040b02402004200541046a2802006a220620044f0d004120102d2204450d02200041013a0000200441186a41002900a0eb44370000200441106a4100290098eb44370000200441086a4100290090eb4437000020044100290088eb44370000200041086a42a08080808004370200200041046a20043602000c040b200141786a2101200541086a2105200420024b21072006210420070d0020062104200620024d0d000b20052d00002104200041003a0000200020043a00010c020b412041011033000b200041003a00002000200128020020026a2d00003a00010b200341c0006a24000bbe0201037f230041106b220224000240024020002d00004104470d002002200128021841b9e1c40041032001411c6a28020028020c11030022003a000820022001360200200241003a0009200241003602040c010b2002200128021841bce1c40041082001411c6a28020028020c1103003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41c4e1c40010f102210120022d0008210020022802042203450d00200041ff0171210441012100024020040d00024020034101470d0020012d0009450d00200128020022042d00004104710d00410121002004280218419fcac30041012004411c6a28020028020c1103000d010b200128020022002802184180e1c40041012000411c6a28020028020c11030021000b200120003a00080b200241106a2400200041ff01714100470b8a0602037f017e230041d0006b22052400200520023602082005200336020c024002400240417f41012002411f71742002411f4b1b20034b0d00200541386a200141186a2203200141286a4100109c0520052d00384101470d012000200529023c370200200041086a200541c4006a2802003602000c020b200541cc006a41023602002005411c6a41053602002005420337023c200541b8e0c400360238200541053602142005200541106a36024820052005410c6a3602182005200541086a360210200541206a200541386a10eb03200041086a200541206a41086a280200360200200020052903203702000c010b2001280200210220054100360220024020022802080d00200541cc006a41013602002005420237023c200541cce7c400360238200541053602342005200541306a3602482005200541206a360230200541106a200541386a10eb0320052802102202450d0020002005290214370204200020023602000c010b0240024002400240200141206a2802002202200141246a22062802004f0d00024020022001411c6a280200470d00200241016a22062002490d03200241017422072006200720064b1b22064100480d030240024020020d002006102d21020c010b200328020020022006102f21020b2002450d02200120023602182001411c6a2006360200200141206a28020021020b200128021820026a20043a0000200141206a2202200228020041016a3602000c030b200541cc006a220241013602002005420137023c200541c8eac40036023820054105360234200520063602302005200541306a360248200541106a200541386a10eb0320052802102201450d022005200529021437022420052001360220200241013602002005420137023c200541fce3c400360238200541253602342005200541306a3602482005200541206a360230200541106a200541386a10eb03200528021021022005290214210802402005280224450d00200528022010310b2002450d0220002008370204200020023602000c030b200641011033000b1034000b200041003602000b200541d0006a24000bb00301017f230041d0006b22052400200520023602082005200336020c024002400240417f41012002411f71742002411f4b1b20034b0d00200128020021022005410036023420022802080d01200541cc006a41013602002005420237023c200541cce7c400360238200541053602142005200541106a3602482005200541346a360210200541206a200541386a10eb0320052802202202450d0120002005290224370204200020023602000c020b200541cc006a41023602002005412c6a41053602002005420337023c200541b8e0c400360238200541053602242005200541206a36024820052005410c6a3602282005200541086a360220200541106a200541386a10eb03200041086a200541106a41086a280200360200200020052903103702000c010b200541386a200141186a2202200141286a22032004109c05024020052d00384101470d002000200529023c370200200041086a200541c4006a2802003602000c010b200541386a200220034100109c05024020052d00384101470d002000200529023c370200200041086a200541c4006a2802003602000c010b200041003602000b200541d0006a24000bef0302047f017e230041c0006b22032400200341286a200141186a2204200141286a2002109c050240024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b0240024002400240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d03200241017422062005200620054b1b22054100480d030240024020020d002005102d21020c010b200428020020022005102f21020b2002450d02200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c030b2003413c6a220141013602002003420137022c200341c8eac40036022820034105360214200320053602102003200341106a360238200341186a200341286a10eb0320032802182202450d022003200329021c37020420032002360200200141013602002003420137022c200341fce3c400360228200341253602142003200341106a36023820032003360210200341186a200341286a10eb0320032802182101200329021c210702402003280204450d00200328020010310b2001450d0220002007370204200020013602000c030b200541011033000b1034000b200041003602000b200341c0006a24000ba80402047f017e230041c0006b22032400200341286a200141186a2204200141286a22052002109c050240024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b200341286a200420052002109c05024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b0240024002400240200141206a2802002202200141246a22052802004f0d00024020022001411c6a280200470d00200241016a22052002490d03200241017422062005200620054b1b22054100480d030240024020020d002005102d21020c010b200428020020022005102f21020b2002450d02200120023602182001411c6a2005360200200141206a28020021020b200128021820026a41003a0000200141206a2201200128020041016a3602000c030b2003413c6a220141013602002003420137022c200341c8eac40036022820034105360214200320053602102003200341106a360238200341186a200341286a10eb0320032802182202450d022003200329021c37020420032002360200200141013602002003420137022c200341fce3c400360228200341253602142003200341106a36023820032003360210200341186a200341286a10eb0320032802182101200329021c210702402003280204450d00200328020010310b2001450d0220002007370204200020013602000c030b200541011033000b1034000b200041003602000b200341c0006a24000bef0302057f017e230041c0006b22032400200341286a200141186a2204200141286a2002109c050240024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b0240024002400240200141206a2802002205200141246a22062802004f0d00024020052001411c6a280200470d00200541016a22062005490d03200541017422072006200720064b1b22064100480d030240024020050d002006102d21050c010b200428020020052006102f21050b2005450d02200120053602182001411c6a2006360200200141206a28020021050b200128021820056a20023a0000200141206a2201200128020041016a3602000c030b2003413c6a220141013602002003420137022c200341c8eac40036022820034105360214200320063602102003200341106a360238200341186a200341286a10eb0320032802182202450d022003200329021c37020420032002360200200141013602002003420137022c200341fce3c400360228200341253602142003200341106a36023820032003360210200341186a200341286a10eb0320032802182101200329021c210802402003280204450d00200328020010310b2001450d0220002008370204200020013602000c030b200641011033000b1034000b200041003602000b200341c0006a24000ba80402057f017e230041c0006b22032400200341286a200141186a2204200141286a22052002109c050240024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b200341286a200420052002109c05024020032d00284101470d002000200329022c370200200041086a200341346a2802003602000c010b0240024002400240200141206a2802002205200141246a22062802004f0d00024020052001411c6a280200470d00200541016a22062005490d03200541017422072006200720064b1b22064100480d030240024020050d002006102d21040c010b200428020020052006102f21040b2004450d02200120043602182001411c6a2006360200200141206a28020021050b200128021820056a20023a0000200141206a2201200128020041016a3602000c030b2003413c6a220141013602002003420137022c200341c8eac40036022820034105360214200320063602102003200341106a360238200341186a200341286a10eb0320032802182202450d022003200329021c37020420032002360200200141013602002003420137022c200341fce3c400360228200341253602142003200341106a36023820032003360210200341186a200341286a10eb0320032802182101200329021c210802402003280204450d00200328020010310b2001450d0220002008370204200020013602000c030b200641011033000b1034000b200041003602000b200341c0006a24000bef0302047f017e230041c0006b22042400200441286a200141186a2205200141286a2002109c050240024020042d00284101470d002000200429022c370200200041086a200441346a2802003602000c010b0240024002400240200141206a2802002202200141246a22062802004f0d00024020022001411c6a280200470d00200241016a22062002490d03200241017422072006200720064b1b22064100480d030240024020020d002006102d21020c010b200528020020022006102f21020b2002450d02200120023602182001411c6a2006360200200141206a28020021020b200128021820026a20033a0000200141206a2201200128020041016a3602000c030b2004413c6a220141013602002004420137022c200441c8eac40036022820044105360214200420063602102004200441106a360238200441186a200441286a10eb0320042802182202450d022004200429021c37020420042002360200200141013602002004420137022c200441fce3c400360228200441253602142004200441106a36023820042004360210200441186a200441286a10eb0320042802182101200429021c210802402004280204450d00200428020010310b2001450d0220002008370204200020013602000c030b200641011033000b1034000b200041003602000b200441c0006a24000b17000240200041046a280200450d00200028020010310b0b160020002802002200280200200028020820011083030bfc0101027f230041106b220224002002200128021841f0eac40041052001411c6a28020028020c1103003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41f8eac40010f1021a20022d00082101024020022802042203450d00200141ff0171210041012101024020000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419fcac30041012000411c6a28020028020c1103000d010b200228020022012802184180e1c40041012001411c6a28020028020c11030021010b200220013a00080b200241106a2400200141ff01714100470b2c01017f02402002450d00200021030340200320013a0000200341016a21032002417f6a22020d000b0b20000b3601017f02402002450d00200021030340200320012d00003a0000200341016a2103200141016a21012002417f6a22020d000b0b20000b7101017f0240024020012000490d002002450d01200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000c020b0b2002450d002001417f6a21012000417f6a21030340200320026a200120026a2d00003a00002002417f6a22020d000b0b20000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030b5701017e02400240200341c000710d002003450d012001410020036b413f71ad8820022003413f71ad220486842102200120048621010c010b20012003413f71ad862102420021010b20002001370300200020023703080b5701017e02400240200341c000710d002003450d0120012003413f71ad2204882002410020036b413f71ad86842101200220048821020c010b20022003413f71ad882101420021020b20002001370300200020023703080b7501027e200020034220882205200142208822067e200320027e7c200420017e7c200342ffffffff0f832203200142ffffffff0f8322017e2204422088200320067e7c22034220887c200342ffffffff0f83200520017e7c22034220887c37030820002003422086200442ffffffff0f83843703000b3e01017f230041106b2205240020052001200220032004410010b305200529030021012000200541086a29030037030820002001370300200541106a24000b4c01017f230041206b22052400200542003703182005420037031020052001200220032004200541106a10b305200529031021012000200529031837030820002001370300200541206a24000be20502037f067e230041306b2206240002400240024002400240024002400240024002402002500d002003500d012004500d02200479a7200279a76b2207413f4b0d0341ff0020076b2108200741016a21070c080b02402004500d0020050d040c060b024002402005450d0020034200510d0620054200370308200520012003823703000c010b20034200510d050b200120038021010c060b2004500d030240024002402001500d0020047b4201510d01200479a7200279a76b2207413e4b0d0241ff0020076b2108200741016a21070c090b02402005450d0020054200370300200520022004823703080b200220048021010c070b02402005450d002005200137030020052004427f7c2002833703080b200220047a423f838821010c060b2005450d040c020b024020037b4201510d0041bf7f200379a7200279a76b22076b2108200741c1006a21070c060b02402005450d002005420037030820052003427f7c2001833703000b20034201510d06200641206a2001200220037aa710af05200641286a2903002102200629032021010c060b2005450d020b2005200137030020052002370308420021010c020b00000b420021010b420021020c010b200620012002200841ff007110ae05200641106a20012002200741ff007110af05200641086a2903002102200641106a41086a2903002109200629030021012006290310210a0240024020070d004200210b4200210c0c010b4200210c4200210d03402009420186200a423f8884220b200b427f8520047c200a4201862002423f8884220a427f85220b20037c200b54ad7c423f87220b2004837d200a200b200383220e54ad7d2109200a200e7d210a420020024201862001423f8884842102200d2001420186842101200b420183220b210d2007417f6a22070d000b0b02402005450d002005200a370300200520093703080b200c20024201862001423f8884842102200b20014201868421010b2000200137030020002002370308200641306a24000b0b98ee040300418080c0000be9ed042f55736572732f7861766965722f446f63756d656e74732f70726f6772616d2f64617277696e69612d6e6574776f726b2f64617277696e69612f636f72652f6d65726b6c652d70617472696369612d747269652f7372632f6e6962626c65732e7273696e76616c6964206461746100000000100062000000270000001200000073657269616c697a656420617267732073686f756c642062652070726f7669646564206279207468652072756e74696d653b0a090909636f72726563746c792073657269616c697a656420646174612073686f756c6420626520646573657269616c697a61626c653b0a0909097165643400000000000000010000003500000000000000840110000a000000000000009001100003000000000000000000000070351100000000000000000000000000a80110000a000000000000009001100003000000000000000000000070351100000000000000000000000000b20110000d000000000000009001100003000000000000000000000070351100000000000000000052656465656d52696e670000d00311000900000070b9100007000000bf0110001300000052656465656d4b746f6e52656465656d4465706f7369744574685472616e73616374696f6e496e646578000000000000580210000b00000000000000a805110001000000000000000000000070351100000000000000000000000000630210000b00000000000000a8051100010000000000000000000000703511000000000000000000000000006e0210000e00000000000000a805110001000000000000000000000070351100000000000000000072656465656d5f72696e6772656465656d5f6b746f6e72656465656d5f6465706f736974000000003c0510000a0000000000000000000000cd7010000e00000000000000000000000000000000000000000000000000000000000000703511007c0510000000000000000000703511000000000000000000010000000000000046051000110000000101000000000000bf0110001300000000000000e00311000f0000000000000000000000000000000000000070351100c40510000000000000000000703511000000000000000000000000000000000057051000110000000000000000000000680510000a0000000000000000000000000000000000000000000000000000000000000070351100e805100000000000000000007035110000000000000000000100000000000000720510000a0000000000000000000000d47e10000e00000000000000000000000000000000000000000000000000000000000000703511007c051000000000000000000070351100000000000000000001000000000000008c051000110000000101000000000000bf0110001300000000000000e00311000f0000000000000000000000000000000000000070351100c4051000000000000000000070351100000000000000000000000000000000009d051000110000000000000000000000680510000a0000000000000000000000000000000000000000000000000000000000000070351100e805100000000000000000007035110000000000000000000100000000000000ae051000140000000101000000000000bf0110001300000000000000e00311000f0000000000000000000000000000000000000070351100c405100000000000000000007035110000000000000000000000000000000000d4051000140000000000000000000000680510000a0000000000000000000000000000000000000000000000000000000000000070351100e805100000000000000000007035110000000000000000000100000052696e674c6f636b656452696e6750726f6f66566572696669656452696e6752656465656d41646472657373457468416464726573734b746f6e4c6f636b6564340000000000000001000000360000004b746f6e50726f6f6656657269666965644b746f6e52656465656d416464726573734465706f73697450726f6f6656657269666965640000340000000000000001000000370000004465706f73697452656465656d416464726573733400000000000000010000003800000052696e6720466f7220546869732050726f6f66202d20414c5245414459204245454e2052454445454d454452696e674275726e64726f70546f6b656e734574684261636b696e672052696e674c6f636b656452494e47204c6f636b6564202d204e4f2053554646494349454e54204241434b494e47204153534554534b746f6e20466f7220546869732050726f6f66202d20414c5245414459204245454e2052454445454d45444b746f6e4275726e64726f70546f6b656e734574684261636b696e67204b746f6e4c6f636b65644b544f4e204c6f636b6564202d204e4f2053554646494349454e54204241434b494e47204153534554534465706f73697420466f7220546869732050726f6f66202d20414c5245414459204245454e2052454445454d45444c6f6720456e747279202d204e4f5420464f554e44506172736520457468204c6f67202d204641494c4544436f6e7665727420746f20496e74202d204641494c4544696e7465676572206f766572666c6f77207768656e2063617374696e6720746f2075313238436f6e7665727420746f204279746573202d204641494c45445f6465706f73697449445f6465706f7369746f725f6d6f6e7468735f756e6974496e7465726573745f76616c75655f6461746141646472657373204c656e677468202d204d49534d4154434845445075626b657920507265666978202d204d49534d415443484544746f6b656e6f776e6572616d6f756e74576974686472617720686173206265656e20636865636b65642061626f76653b0a090909647565735f6c696d69746564203c2072656e745f627564676574203c2062616c616e6365202d2073756273697374656e6365203c2062616c616e6365202d206578697374656e7469616c5f6465706f7369743b0a0909097165643900000008000000040000003a00000000000000fc0810001100000000000000000000000d0910000a0000000000000000000000000000000000000000000000000000000000000070351100180910000000000000000000703511000000000000000000010000004e6578744665654d756c7469706c6965724d756c7469706c696572003400000000000000010000003b00000000000000bc4310001200000000000000843d10000c0000000000000070351100980910000000000000000000d0431000010000000000000000000000d84310001200000000000000843d10000c0000000000000070351100a80910000000000000000000fc43100001000000000000003400000000000000010000003c0000003400000000000000010000003d00000074696d657374616d702073657420696e20626c6f636b20646f65736e2774206d6174636820736c6f7420696e207365616c65706f636820696e64696365732077696c6c206e6576657220726561636820325e3634206265666f726520746865206465617468206f662074686520756e6976657273653b207165640000000000004c0d10000a0000000000000000000000f8031100030000000000000000000000000000000000000000000000000000000000000070351100c80d10000000000000000000580d100001000000000000000100000000000000d82811000b0000000000000000000000600d1000270000000000000000000000000000000000000000000000000000000000000070351100880d10000000000000000000980d100001000000000000000100000000000000a00d10000b0000000000000000000000f8031100030000000000000000000000000000000000000000000000000000000000000070351100c80d10000000000000000000ac0d100002000000000000000100000000000000bc0d10000b0000000000000000000000f8031100030000000000000000000000000000000000000000000000000000000000000070351100c80d10000000000000000000d80d100001000000000000000100000000000000e00d10000a0000000000000000000000ea0d1000080000000000000000000000000000000000000000000000000000000000000070351100540e10000000000000000000f40d10000a000000000000000100000000000000440e10000e0000000000000000000000ea0d1000080000000000000000000000000000000000000000000000000000000000000070351100540e10000000000000000000640e1000010000000000000001000000000000006c0e10000c00000000000000000000007aac1000030000000000000000000000000000000000000000000000000000000000000070351100780e10000000000000000000880e100009000000000000000100000000000000d00e10001100000001010000000000007aac10000300000000000000e10e10000d0000000000000000000000000000000000000070351100f00e100000000000000000007035110000000000000000000100000000000000000f10000b00000000000000000000000b0f1000080000000000000000000000000000000000000000000000000000000000000070351100140f10000000000000000000240f100002000000000000000000000045706f6368496e64657800006f131000150000005665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e003400000000000000010000003e000000541310001b00000047656e65736973536c6f7400f21210003e000000301310002400000043757272656e74536c6f74003400000000000000010000003b000000dd1210001500000052616e646f6d6e6573735b75383b2033325d0000171110002e0000007035110000000000451110000b00000070351100000000005011100041000000911110003e000000cf11100045000000141210004500000059121000410000009a121000430000004e65787452616e646f6d6e65737300003400000000000000010000003f00000000111000170000005365676d656e74496e64657834000000000000000100000040000000bb0f10001f0000007035110000000000da0f10003d0000001710100040000000571010002500000070351100000000007c1010003b000000b710100042000000f910100007000000556e646572436f6e737472756374696f6e5665633c5b75383b2033325d3e00003400000000000000010000003e000000496e697469616c697a65644d617962655672660034000000000000000100000037000000340f100040000000740f1000470000002054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d6560206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e2057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f2060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e20576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572792065706f63682e204e6578742065706f63682072616e646f6d6e6573732e205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e20232053656375726974792054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e792063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d626572732074686174207468697320286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e20626520757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e2043757272656e7420736c6f74206e756d6265722e2054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e2054686973206973203020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2043757272656e742065706f636820617574686f7269746965732e2043757272656e742065706f636820696e6465782e00000000f41310000d00000000000000f8031100030000000000000070351100041410000000000000000000141410000200000000000000000000002414100011000000000000009f6c100009000000000000007035110038141000000000000000000048141000050000000000000045706f63684475726174696f6e00000034000000000000000100000041000000a015100043000000e31510003f0000004578706563746564426c6f636b54696d65000000340000000000000001000000420000007014100041000000b114100044000000f5141000410000003615100042000000781510002800000020546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e6720626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f7574207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f74206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e20546865206e756d626572206f66202a2a736c6f74732a2a207468617420616e2065706f63682074616b65732e20576520636f75706c652073657373696f6e7320746f2065706f6368732c20692e652e2077652073746172742061206e65772073657373696f6e206f6e636520746865206e65772065706f636820626567696e732e71202f2028712f246d617829203c202832202a20246d6178292e204d6163726f2070726576656e747320616e792074797065206265696e672063726561746564207468617420646f6573206e6f74207361746973667920746869733b207165640000941610006a0000006f000000210000002f55736572732f7861766965722f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d613766613535336561643633353531322f643263346230642f636f72652f73722d61726974686d657469632f7372632f7065725f7468696e67732e72730000617474656d707420746f20646976696465206279207a65726f4661696c656420746f20636f6e7665727400003900000008000000040000003a000000617373657274696f6e206661696c65643a20696e646578203c3d206c656e617373657274696f6e206661696c65643a20696e646578203c206c656e2f72757374632f646133363239623035663866316234323561373338626665396665396165646434376335343137612f7372632f6c6962616c6c6f632f7665632e727300007717100043000000440b0000300000007717100043000000500b00002c000000636f6465206973206e6f7420666f756e647072697374696e6520636f6465206973206e6f7420666f756e647468657265206973206e6f7420656e6f7567682067617320666f722073746f72696e672074686520636f64654d69736d6174636865787065637465640043000000040000000400000004000000666f756e644f75744f66426f756e64736d696e00430000000400000004000000440000006d6178004300000004000000040000004500000054696d657374616d70206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b54696d657374616d70206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b54696d657374616d70206d75737420696e6372656d656e74206279206174206c65617374203c4d696e696d756d506572696f643e206265747765656e2073657175656e7469616c20626c6f636b7354696d657374616d70204e6f7700003900000008000000040000003a00000054696d657374616d7020746f6f2066617220696e2066757475726520746f206163636570744765747320616e64206465636f6465732074696d657374616d7020696e686572656e74206461746100000000000000d01910000300000000000000d4191000010000000000000000000000ec191000090000000000000073657400000000006e1b10000300000000000000711b100012000000341a10001600000070351100000000004a1a100056000000a01a1000360000007035110000000000d61a100051000000271b1000110000007035110000000000381b10003600000020536574207468652063757272656e742074696d652e20546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6e2070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627920604d696e696d756d506572696f64602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e6e6f77436f6d706163743c543a3a4d6f6d656e743e0000000000341c10000300000000000000000000009f6c1000090000000000000000000000000000000000000000000000000000000000000070351100381c10000000000000000000481c100001000000000000000100000000000000501c1000090000000000000000000000a00911000400000000000000000000000000000000000000000000000000000000000000703511005c1c100000000000000000006c1c10000100000000000000010000004e6f77003400000000000000010000003b000000a11c10002400000044696455706461746500000034000000000000000100000037000000741c10002d00000020446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f2043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e00000000000000001d10000d000000000000009f6c1000090000000000000070351100101d10000000000000000000201d100004000000000000004d696e696d756d506572696f6400000034000000000000000100000046000000401d10005a0000009a1d10005a000000f41d1000590000004d1e10001c00000020546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e73746f72616765206973206e6f74206e756c6c2c207468657265666f7265206d75737420626520612076616c69642074797065340000000000000001000000350000005468657265206973206f6e6c79206f6e6520666174616c206572726f723b2071656400003900000008000000040000004700000034000000000000000100000048000000001f10005f000000c7000000210000002f55736572732f7861766965722f446f63756d656e74732f70726f6772616d2f64617277696e69612d6e6574776f726b2f64617277696e69612f636f72652f6d65726b6c652d70617472696369612d747269652f7372632f747269652e727350726576696f7573206d617463682061726d206d61746368657320616e7974696e67206c657373207468616e20325e33303b207165640000000000000000000000a81f10003d000000736869667465642073756666696369656e74206269747320726967687420746f206c656164206f6e6c79206c656164696e67207a65726f733b20716564000000000000000000000000000000000000005375646f204b6579000000008420100005000000000000008c201000010000000000000000000000942010000100000000000000000000009c2010000a00000000000000484d1000010000000000000000000000a8201000010000000000000000000000b02010000a000000000000008c2010000100000000000000000000009420100001000000000000005375646964000000a009110004000000f6201000180000004b65794368616e6765640000ba2010003c0000005375646f4173446f6e6520546865207375646f6572206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e2041207375646f206a75737420746f6f6b20706c6163652e6f6e6c79207468652063757272656e74207375646f206b65792063616e207375646f6f6e6c79207468652063757272656e74207375646f206b65792063616e206368616e676520746865207375646f206b657900000000000000e82110000400000000000000ec211000010000000000000000000000042210000a00000000000000000000005422100007000000000000005c22100001000000000000000000000074221000090000000000000000000000bc2210000700000000000000c4221000020000000000000000000000f42210000b000000000000007375646f000000004b24100008000000000000005324100010000000d12410004e0000007035110000000000b1231000340000007035110000000000e4be10000b0000000e72100008000000e523100019000000fe23100018000000162410003500000040bf10000c0000007365745f6b657900000000001f971000030000000000000049bd100023000000632410005d0000007035110000000000b1231000340000007035110000000000e4be10000b0000000e72100008000000e523100019000000c02410001100000040bf10000c0000007375646f5f6173000000000038061100030000000000000049bd100023000000000000004b241000080000000000000053241000100000004c23100054000000a0231000110000007035110000000000b1231000340000007035110000000000e4be10000b0000000e72100008000000e523100019000000fe23100018000000162410003500000040bf10000c0000002041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d206120676976656e206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e202d204c696d697465642073746f726167652072656164732e202d204f6e6520444220777269746520286576656e74292e202d20556e6b6e6f776e20776569676874206f662064657269766174697665206070726f706f73616c6020657865637574696f6e2e70726f706f73616c426f783c543a3a50726f706f73616c3e2041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e202d204f6e65204442206368616e67652e2041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e0000000000b79610000300000000000000000000003b0611000c0000000000000000000000000000000000000000000000000000000000000070351100782510000000000000000000882510000100000000000000010000003400000000000000010000003f00000090251000210000002054686520604163636f756e74496460206f6620746865207375646f206b65792e707265636f6e646974696f6e3a20616c6c20696d706f7274732073686f756c6420626520636865636b656420616761696e737420746865207369676e617475726573206f6620636f72726573706f6e64696e670a09090909090966756e6374696f6e7320646566696e65642062792060646566696e655f656e762160206d6163726f206279207468652075736572206f6620746865206d6163726f3b0a0909090909097369676e617475726573206f662074686573652066756e6374696f6e7320646566696e6564206279206024706172616d73603b0a09090909090963616c6c7320616c77617973206d616465207769746820617267756d656e7473207479706573206f662077686963682061726520646566696e65642062792074686520636f72726573706f6e64696e6720696d706f7274733b0a09090909090974687573207479706573206f6620617267756d656e74732073686f756c6420626520657175616c20746f2074797065206c69737420696e206024706172616d736020616e640a0909090909096c656e677468206f6620617267756d656e74206c69737420616e642024706172616d732073686f756c6420626520657175616c3b0a0909090909097468757320746869732063616e206e6576657220626520604e6f6e65603b0a0909090909097165643b0a09090909090972657475726e2074797065206572726f7276616c69646174696f6e206572726f72647572696e6720657865637574696f6e000000000000042810000f00000000000000142810000200000000000000000000002428100004000000000000004e65774163636f756e74496e64657800d003110009000000bf2810000c000000442810002200000070351100000000006628100041000000a7281000180000002041206e6577206163636f756e7420696e646578207761732061737369676e65642e2054686973206576656e74206973206e6f7420747269676765726564207768656e20616e206578697374696e6720696e64657820697320726561737369676e656420746f20616e6f7468657220604163636f756e744964602e4163636f756e74496e646578496e646963657320456e756d5365740000000000008c2910000b0000000000000000000000972910000f0000000000000000000000000000000000000000000000000000000000000070351100a82910000000000000000000b829100001000000000000000100000000000000c0291000070000000101000000000000972910000f00000000000000b4091100110000000000000000000000000000000000000070351100c82910000000000000000000d82910000100000000000000010000004e657874456e756d536574543a3a4163636f756e74496e646578000034000000000000000100000040000000f62910001f000000456e756d536574003400000000000000010000003e000000e0291000160000002054686520656e756d65726174696f6e20736574732e20546865206e657874206672656520656e756d65726174696f6e207365742e496e6469636573204e657874456e756d5365744e6f6465204e616d65202d205245414348204d4158204c454e4754482033324e6f6465204e616d65202d20434f4e5441494e5320494e56414c4944204348415253205355434820415320272e2720414e44202740274e6f6465204e616d65202d20434f4e5441494e532055524c536874747078797a6f7267696f636e636f6d77777768747470735374616b696e672056616c696461746f72436f756e745374616b696e67204d696e696d756d56616c696461746f72436f756e745374616b696e672043757272656e744572615374616b696e672043757272656e74457261537461727453657373696f6e496e6465785374616b696e672043757272656e74457261506f696e74734561726e65645374616b696e6720536c6f745374616b655374616b696e6720466f7263654572615374616b696e6720536c6173685265776172644672616374696f6e5374616b696e67205061796f75744672616374696f6e5374616b696e6720426f6e6465644572617370726576696f75732f6e657874206f6e6c7920636f6e7461696e206578697374696e6720656e74697265733b0a090909090909776520656e756d6572617465207573696e67206e6578743b20656e747279206578697374733b207165644c696e6b616765206973207570646174656420696e206361736520656e7472792069732072656d6f7665643b0a0909090909697420616c7761797320706f696e747320746f206578697374696e67206b6579733b207165646865616420697320736574207768656e20666972737420656c656d656e7420697320696e7365727465640a090909090909616e6420756e736574207768656e206c61737420656c656d656e742069732072656d6f7665643b0a0909090909096966206865616420697320536f6d65207468656e20697420706f696e747320746f206578697374696e67206b65793b20716564e82c10001c00000056617269616e74206973206e6576657220636f6e73747275637465640000000014b9100008000000000000000c2e1000030000000000000000000000242e10000100000000000000000000002c2e10000c00000000000000382e1000020000000000000000000000482e1000010000000000000000000000502e10000a000000000000005c2e1000010000000000000000000000642e10000100000000000000000000006c2e10000f000000000000007c2e1000010000000000000000000000842e10000100000000000000000000008c2e10000a00000000000000982e1000020000000000000000000000a82e1000020000000000000000000000b82e10000800000000000000c02e1000020000000000000000000000d02e10000100000000000000d003110009000000d00311000900000070b9100007000000ff2f10005a000000496e7374616e746961746564d003110009000000d003110009000000c82f100037000000436f646553746f7265640000c42f100004000000962f10002e0000005363686564756c6555706461746564007aac100003000000662f100030000000446973706174636865640000d003110009000000a009110004000000fb2e10004e000000492f10001d000000436f6e7472616374d0031100090000005826110007000000d82e10002300000020416e206576656e742066726f6d20636f6e7472616374206f66206163636f756e742e20412063616c6c2077617320646973706174636865642066726f6d2074686520676976656e206163636f756e742e2054686520626f6f6c207369676e616c73207768657468657220697420776173207375636365737366756c20657865637574696f6e206f72206e6f742e20547269676765726564207768656e207468652063757272656e74207363686564756c6520697320757064617465642e20436f646520776974682074686520737065636966696564206861736820686173206265656e2073746f7265642e4861736820436f6e7472616374206465706c6f7965642062792061646472657373206174207468652073706563696669656420616464726573732e205472616e736665722068617070656e6564206066726f6d6020746f2060746f60207769746820676976656e206076616c7565602061732070617274206f662061206063616c6c60206f722060696e7374616e7469617465602e436f6e7472616374205072697374696e65436f6465436f6e747261637420436f646553746f72616765436f6e747261637420436f6e7472616374496e666f4f66436f6e7472616374204761735072696365000000000000883110000f0000000000000098311000010000000000000000000000b0311000030000000000000000000000c83110000800000000000000d031100002000000000000000000000000321000020000000000000000000000cf16110004000000000000001032100004000000000000000000000070321000070000000000000000000000a83210000b00000000000000b4321000040000000000000000000000143310000a0000000000000000000000643310000f0000000000000074331000020000000000000000000000a433100005000000000000007570646174655f7363686564756c650000000000053a100008000000000000000d3a100008000000953910002d0000007035110000000000c2391000430000007075745f636f6465000000004337100009000000000000004c3710000c00000000000000913910000400000000000000582611000700000005391000570000005c39100035000000000000006cbd1000040000000000000049bd1000230000000000000070bd100005000000000000002e37100015000000000000004337100009000000000000004c3710000c000000000000006c3710000400000000000000582611000700000070371000420000007035110000000000b23710004a000000fc3710002c00000028381000460000006e38100052000000c038100045000000696e7374616e746961746500000000002537100009000000000000002e37100015000000000000004337100009000000000000004c3710000c00000000000000583710000900000000000000613710000b000000000000006c37100004000000000000005826110007000000043510006f0000007035110000000000733510002600000070351100000000009935100050000000e9351000410000002a3610005b0000008536100057000000dc3610002a000000063710001f000000636c61696d5f73757263686172676500000000006cbd100004000000000000003b0611000c00000000000000e63410000a00000000000000f034100014000000cc3310005c000000283410004500000070351100000000006d3410004e000000bb3410002b00000020416c6c6f777320626c6f636b2070726f64756365727320746f20636c61696d206120736d616c6c2072657761726420666f72206576696374696e67206120636f6e74726163742e204966206120626c6f636b2070726f6475636572206661696c7320746f20646f20736f2c206120726567756c61722075736572732077696c6c20626520616c6c6f77656420746f20636c61696d20746865207265776172642e20496620636f6e7472616374206973206e6f742065766963746564206173206120726573756c74206f6620746869732063616c6c2c206e6f20616374696f6e73206172652074616b656e20616e64207468652073656e646572206973206e6f7420656c696769626c6520666f7220746865207265776172642e6175785f73656e6465724f7074696f6e3c543a3a4163636f756e7449643e20496e7374616e7469617465732061206e657720636f6e74726163742066726f6d207468652060636f646568617368602067656e65726174656420627920607075745f636f6465602c206f7074696f6e616c6c79207472616e7366657272696e6720736f6d652062616c616e63652e20496e7374616e74696174696f6e20697320657865637574656420617320666f6c6c6f77733a202d205468652064657374696e6174696f6e206164647265737320697320636f6d7075746564206261736564206f6e207468652073656e64657220616e642068617368206f662074686520636f64652e202d2054686520736d6172742d636f6e7472616374206163636f756e7420697320637265617465642061742074686520636f6d707574656420616464726573732e202d20546865206063746f725f636f64656020697320657865637574656420696e2074686520636f6e74657874206f6620746865206e65776c792d63726561746564206163636f756e742e204275666665722072657475726e656420202061667465722074686520657865637574696f6e206973207361766564206173207468652060636f646560206f6620746865206163636f756e742e205468617420636f64652077696c6c20626520696e766f6b656420202075706f6e20616e792063616c6c2072656365697665642062792074686973206163636f756e742e202d2054686520636f6e747261637420697320696e697469616c697a65642e656e646f776d656e74436f6d706163743c42616c616e63654f663c543e3e6761735f6c696d6974436f6d706163743c4761733e636f64655f68617368436f6465486173683c543e64617461204d616b657320612063616c6c20746f20616e206163636f756e742c206f7074696f6e616c6c79207472616e7366657272696e6720736f6d652062616c616e63652e202a20496620746865206163636f756e74206973206120736d6172742d636f6e7472616374206163636f756e742c20746865206173736f63696174656420636f64652077696c6c20626520657865637574656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e202a20496620746865206163636f756e74206973206120726567756c6172206163636f756e742c20616e792076616c75652077696c6c206265207472616e736665727265642e202a204966206e6f206163636f756e742065786973747320616e64207468652063616c6c2076616c7565206973206e6f74206c657373207468616e20606578697374656e7469616c5f6465706f736974602c206120726567756c6172206163636f756e742077696c6c206265206372656174656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e2053746f7265732074686520676976656e2062696e617279205761736d20636f646520696e746f2074686520636861696e27732073746f7261676520616e642072657475726e73206974732060636f646568617368602e20596f752063616e20696e7374616e746961746520636f6e747261637473206f6e6c7920776974682073746f72656420636f64652e636f6465205570646174657320746865207363686564756c6520666f72206d65746572696e6720636f6e7472616374732e20546865207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e207468652073746f726564207363686564756c652e7363686564756c655363686564756c6500000000000000803c1000080000000000000000000000883c10000300000000000000000000000000000000000000000000000000000000000000703511002c3d100000000000000000008c3c100001000000000000000100000000000000943c10000f00000000000000000000000d3a1000080000000000000000000000000000000000000000000000000000000000000070351100a43c10000000000000000000b43c100001000000000000000100000000000000bc3c10000c0000000101000000000000613710000b0000000000000058261100070000000000000000000000000000000000000070351100c83c10000000000000000000d83c100001000000000000000000000000000000e03c10000b0000000101000000000000613710000b00000000000000eb3c1000160000000000000000000000000000000000000070351100043d10000000000000000000143d1000010000000000000000000000000000001c3d10000e0000000000000000000000f80311000300000000000000000000000000000000000000000000000000000000000000703511002c3d100000000000000000003c3d100001000000000000000100000000000000443d10000e00000001010000000000003b0611000c00000000000000523d10000f0000000000000000000000000000000000000070351100643d10000000000000000000743d1000010000000000000000000000000000007c3d1000080000000000000000000000843d10000c0000000000000000000000000000000000000000000000000000000000000070351100903d10000000000000000000a03d10000100000000000000010000004761735370656e7447617300dc3e10002000000043757272656e745363686564756c650034000000000000000100000049000000b73e1000250000005072697374696e65436f64653400000000000000010000004a0000005e3e100059000000436f646553746f726167657761736d3a3a5072656661625761736d4d6f64756c6500000034000000000000000100000037000000053e1000590000004163636f756e74436f756e74657200003400000000000000010000003b000000f03d100015000000436f6e7472616374496e666f4f66436f6e7472616374496e666f3c543e00000034000000000000000100000037000000c63d10002a000000476173507269636542616c616e63654f663c543e3400000000000000010000004b000000a83d10001e00000020546865207072696365206f66206f6e6520756e6974206f66206761732e2054686520636f6465206173736f6369617465642077697468206120676976656e206163636f756e742e20546865207375627472696520636f756e7465722e2041206d617070696e67206265747765656e20616e206f726967696e616c20636f6465206861736820616e6420696e737472756d656e746564207761736d20636f64652c20726561647920666f7220657865637574696f6e2e2041206d617070696e672066726f6d20616e206f726967696e616c20636f6465206861736820746f20746865206f726967696e616c20636f64652c20756e746f756368656420627920696e737472756d656e746174696f6e2e2043757272656e7420636f7374207363686564756c6520666f7220636f6e7472616374732e20476173207370656e7420736f2066617220696e207468697320626c6f636b2e000000007c4210001300000000000000aa2911000e0000000000000070351100904210000000000000000000a0421000040000000000000000000000c04210001000000000000000843d10000c0000000000000070351100184310000000000000000000d0421000010000000000000000000000d842100011000000000000007aac1000030000000000000070351100ec4210000000000000000000fc4210000200000000000000000000000c4310000b00000000000000843d10000c000000000000007035110018431000000000000000000028431000010000000000000000000000304310001100000000000000843d10000c0000000000000070351100444310000000000000000000544310000700000000000000000000008c4310000f00000000000000843d10000c00000000000000703511009c4310000000000000000000ac431000020000000000000000000000985210000b00000000000000843d10000c0000000000000070351100104410000000000000000000a4521000010000000000000000000000ac5210000b00000000000000843d10000c0000000000000070351100104410000000000000000000c8521000010000000000000000000000bc4310001200000000000000843d10000c0000000000000070351100104410000000000000000000d0431000010000000000000000000000d84310001200000000000000843d10000c0000000000000070351100ec4310000000000000000000fc431000010000000000000000000000044410000b00000000000000843d10000c000000000000007035110010441000000000000000000020441000020000000000000000000000304410000b00000000000000883c10000300000000000000703511006044100000000000000000003c4410000200000000000000000000004c4410001200000000000000883c1000030000000000000070351100604410000000000000000000704410000200000000000000000000008044100008000000000000007aac100003000000000000007035110088441000000000000000000098441000020000000000000000000000a84410000c000000000000007aac1000030000000000000070351100b44410000000000000000000c4441000010000000000000000000000cc4410000d00000000000000883c1000030000000000000070351100dc4410000000000000000000ec44100002000000000000005369676e6564436c61696d48616e6469636170003400000000000000010000004c000000504a1000380000007035110000000000884a100043000000cb4a10001a000000546f6d6273746f6e654465706f7369741b4a10003500000053746f7261676553697a654f66667365740000003400000000000000010000004d0000009e49100054000000f24910002900000052656e7442797465466565003400000000000000010000004e000000514910004d00000052656e744465706f7369744f66667365740000003400000000000000010000004f000000d9471000410000001a481000160000007035110000000000304810005a0000008a48100056000000e048100053000000334910001e00000053757263686172676552657761726400340000000000000001000000500000008647100039000000bf4710001a0000005472616e73616374696f6e4261736546656500004f471000370000005472616e73616374696f6e4279746546656500003400000000000000010000003d0000000c47100043000000436f6e7472616374466565003400000000000000010000003c000000b546100050000000054710000700000043616c6c42617365466565006046100047000000a74610000e000000496e7374616e7469617465426173654665650000340000000000000001000000510000000a4610004e00000058461000080000004d6178446570746834000000000000000100000052000000b04510004c000000fc4510000e0000004d617856616c756553697a6534000000000000000100000053000000624510004e000000426c6f636b4761734c696d697400000034000000000000000100000054000000fc44100049000000454510001d00000020546865206d6178696d756d20616d6f756e74206f6620676173207468617420636f756c6420626520657870656e6465642070657220626c6f636b2e204120726561736f6e61626c652064656661756c742076616c75652069732031305f3030305f3030302e20546865206d6178696d756d2073697a65206f6620612073746f726167652076616c756520696e2062797465732e204120726561736f6e61626c652064656661756c74206973203136204b69422e20546865206d6178696d756d206e657374696e67206c6576656c206f6620612063616c6c2f696e7374616e746961746520737461636b2e204120726561736f6e61626c652064656661756c742076616c7565206973203130302e20546865206261736520666565206368617267656420666f7220696e7374616e74696174696e67206120636f6e74726163742e204120726561736f6e61626c652064656661756c742076616c7565206973203137352e20546865206261736520666565206368617267656420666f722063616c6c696e6720696e746f206120636f6e74726163742e204120726561736f6e61626c652064656661756c742076616c7565206973203133352e205468652066656520726571756972656420746f20696e7374616e7469617465206120636f6e747261637420696e7374616e63652e204120726561736f6e61626c652064656661756c742076616c75652069732032312e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b2074686520626173652e205265776172642074686174206973207265636569766564206279207468652070617274792077686f736520746f75636820686173206c656420746f2072656d6f76616c206f66206120636f6e74726163742e2054686520616d6f756e74206f662066756e6473206120636f6e74726163742073686f756c64206465706f73697420696e206f7264657220746f206f66667365742074686520636f7374206f66206f6e6520627974652e204c6574277320737570706f736520746865206465706f73697420697320312c303030204255202862616c616e636520756e697473292f6279746520616e64207468652072656e7420697320312042552f627974652f6461792c207468656e206120636f6e7472616374207769746820312c3030302c3030302042552074686174207573657320312c303030206279746573206f662073746f7261676520776f756c6420706179206e6f2072656e742e20427574206966207468652062616c616e6365207265647563656420746f203530302c30303020425520616e64207468652073746f7261676520737461796564207468652073616d6520617420312c3030302c207468656e20697420776f756c6420706179203530302042552f6461792e205072696365206f6620612062797465206f662073746f7261676520706572206f6e6520626c6f636b20696e74657276616c2e2053686f756c642062652067726561746572207468616e20302e2053697a65206f66206120636f6e7472616374206174207468652074696d65206f6620696e7374616e746961696f6e2e205468697320697320612073696d706c652077617920746f20656e73757265207468617420656d70747920636f6e747261637473206576656e7475616c6c7920676574732064656c657465642e20546865206d696e696d756d20616d6f756e7420726571756972656420746f2067656e6572617465206120746f6d6273746f6e652e204e756d626572206f6620626c6f636b2064656c617920616e2065787472696e73696320636c61696d20737572636861726765206861732e205768656e20636c61696d207375726368617267652069732063616c6c656420627920616e2065787472696e736963207468652072656e7420697320636865636b656420666f722063757272656e745f626c6f636b202d2064656c617943616e6e6f7420726573746f726520746f20696e6578697374696e67206f7220616c69766520636f6e747261637464656661756c743a6e6577207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e2063757272656e74496e76616c69642073757263686172676520636c61696d3a206f726967696e206d757374206265207369676e6564206f7220696e686572656e7420616e6420617578696c696172792073656e646572206f6e6c792070726f7669646564206f6e20696e686572656e746f766572666c6f77206d756c7469706c79696e6720676173206c696d6974206279207072696365f04b100048000000bb0100002d0000002f72757374632f646133363239623035663866316234323561373338626665396665396165646434376335343137612f7372632f6c6962636f72652f6f70732f61726974682e72730000000000000000617474656d707420746f20646976696465206279207a65726f746f6f2066657720667265652066756e647320696e206163636f756e747061796d656e7420776f756c64206b696c6c206163636f756e7400000000144d10000a00000000000000204d1000020000000000000000000000304d1000010000000000000000000000384d10000d00000000000000484d1000010000000000000000000000504d100001000000000000000000000014b9100008000000000000001cb910000400000000000000000000003cb9100001000000000000004e65774163636f756e740000d00311000900000070b91000070000006f4d10001b0000005265617065644163636f756e74000000d003110009000000584d10001700000020416e206163636f756e7420776173207265617065642e2041206e6577206163636f756e742077617320637265617465642e42616c616e63657320546f74616c49737375616e636542616c616e636573204672656542616c616e636542616c616e63657320526573657276656442616c616e636542616c616e636573204c6f636b7342616c616e6365732056657374696e67000000000000c0ba10000800000000000000c8ba1000020000000000000000000000f8ba1000190000000000000000000000c0bb10000b00000000000000ccbb100003000000000000000000000014bc10000d00000000000000000000007cbc10000e000000000000008cbc1000030000000000000000000000d4bc10000200000000000000000000009c4e10001300000000000000c8ba1000020000000000000000000000b04e100006000000000000007472616e736665725f6b6565705f616c69766500e04e100054000000344f1000100000007035110000000000444f10002f0000007035110000000000734f1000310000002053616d6520617320746865205b607472616e73666572605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e20393925206f66207468652074696d6520796f752077616e74205b607472616e73666572605d20696e73746561642e205b607472616e73666572605d3a207374727563742e4d6f64756c652e68746d6c236d6574686f642e7472616e736665720000000070c510000d00000000000000000000007dc510000a00000000000000000000000000000000000000000000000000000000000000703511006c511000000000000000000088c510000100000000000000010000000000000090c510000700000001010000000000003b0611000c0000000000000097c510002b00000000000000000000000000000000000000703511005c5110000000000000000000d4c5100001000000000000000000000000000000dcc510000b00000001010000000000003b0611000c000000000000007dc510000a00000000000000000000000000000000000000703511006c5110000000000000000000e8c510000b00000000000000010000000000000040c610000f00000001010000000000003b0611000c000000000000007dc510000a00000000000000000000000000000000000000703511006c511000000000000000000060c610000b000000000000000100000000000000b8c610000500000001010000000000003b0611000c00000000000000bdc610002700000000000000000000000000000000000000703511007c51100000000000000000008c51100001000000000000000100000034000000000000000100000055000000340000000000000001000000360000003400000000000000010000003e000000945110002e00000020416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e0000000000006c52100012000000000000007dc510000a000000000000007035110080521000000000000000000090521000010000000000000000000000985210000b000000000000007dc510000a0000000000000070351100b85210000000000000000000a4521000010000000000000000000000ac5210000b000000000000007dc510000a0000000000000070351100b85210000000000000000000c852100001000000000000004578697374656e7469616c4465706f73697400003400000000000000010000004e0000001c531000350000005472616e7366657246656500f7521000250000004372656174696f6e466565003400000000000000010000003c000000d052100027000000205468652066656520726571756972656420746f2063726561746520616e206163636f756e742e205468652066656520726571756972656420746f206d616b652061207472616e736665722e20546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e676f74206f766572666c6f7720616674657220616464696e6720612066656520746f2076616c756545746852656c617920426567696e48656164657245746852656c617920426573744865616465724861736845746852656c6179204865616465724f6645746852656c61792048656164657244657461696c734f6645746852656c617920436865636b417574686f72697469657352616e646f6d6e657373436f6c6c656374697665466c69702052616e646f6d4d6174657269616c00000000000000685410000e0000000000000000000000765410000c00000000000000000000000000000000000000000000000000000000000000703511008454100000000000000000009454100003000000000000000100000052616e646f6d4d6174657269616c5665633c543a3a486173683e00003400000000000000010000003e000000ac5410005800000004551000580000005c5510001100000020536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e205468697320697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f6620746865206f6c6465737420686173682e000000000000009c5510000500000000000000a4551000010000000000000000000000bc5510000100000000000000626174636800000000000000f05510000500000000000000f555100017000000c45510002c0000002053656e642061206261746368206f662064697370617463682063616c6c7320286f6e6c7920726f6f74292e63616c6c735665633c3c542061732054726169743e3a3a43616c6c3e340000000000000001000000560000005700000058000000590000005a0000005b00000072656163686564206d6178696d756d2064657074682c2063616e6e6f7420696e7374616e74696174650000005c00000018000000040000005d0000005e0000005f000000600000006100000062000000696e73756666696369656e742072656d61696e696e672062616c616e63656e6f7420656e6f7567682067617320746f20706179206261736520696e7374616e7469617465206665656e6f7420656e6f7567682067617320746f20706179207472616e736665722066656576616c756520746f6f206c6f7720746f20637265617465206163636f756e7472656163686564206d6178696d756d2064657074682c2063616e6e6f74206d616b6520612063616c6c6e6f7420656e6f7567682067617320746f2070617920626173652063616c6c20666565636f6e747261637420686173206265656e2065766963746564636f6e74726163742063616e6e6f742062652064657374726f79656420647572696e672072656375727369766520657865637574696f6e61206e657374656420657865637574696f6e20636f6e74657874206d7573742068617665206120706172656e743b207165644f6666636861696e206572726f723a206665746368696e67206e6574776f726b207374617465206661696c6564214f6666636861696e206572726f723a207369676e696e67206661696c6564214f6666636861696e206572726f723a206465636f64696e6720576f726b6572537461747573206661696c6564214f6666636861696e206572726f723a207375626d697474696e67207472616e73616374696f6e206661696c656421496d4f6e6c696e6520526563656976656448656172746265617473000000000000a45910000600000000000000ac591000030000000000000000000000c4591000020000000000000000000000d45910000500000000000000dc591000020000000000000000000000ec591000010000000000000000000000f45910001a0000000000000064201100010000000000000000000000105a1000020000000000000000000000205a10000f0000000000000070351100000000000000000000000000305a1000010000000000000000000000385a100004000000000000003c5a1000030000000000000000000000545a1000020000000000000000000000645a100006000000000000006c5a10000200000000000000000000007c5a10000200000000000000526577617264000070b910000700000070b9100007000000655c100028000000bf5b100054000000135c100052000000536c617368000000d003110009000000ba5b100005000000715b1000490000004f6c64536c617368696e675265706f72744469736361726465640000185b1000470000005f5b1000120000004e6f64654e616d655570646174656400065b100012000000426f6e64ac5a100021000000cd5a100006000000cd5a100006000000d35a10000e000000e15a100025000000556e626f6e640000ac5a100021000000cd5a1000060000008c5a1000100000009c5a10001000000020556e626f6e6420737563636565642e2060616d6f756e74602c20606e6f77605374616b696e6742616c616e6365733c42616c616e63652c2042616c616e63653e4d6f6d656e7420426f6e6420737563636565642e2060616d6f756e74602c20606e6f77602c20606475726174696f6e6020696e206d6f6e7468204e6f64654e616d65206368616e6765642e20416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c64206e6f742062652070726f6365737365642e204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e506f77657220416c6c2076616c696461746f72732068617665206265656e207265776172646564206279207468652066697273742062616c616e63653b20746865207365636f6e64206973207468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172643b207468652074686972642069732076616c696461746f7220616e64206e6f6d696e61746f727327207265776172642e5665633c56616c696461746f725265776172643c4163636f756e7449642c2042616c616e63653e3e5374616b696e672056616c696461746f727368656164206f66205374616b696e672056616c696461746f72735374616b696e672043757272656e7445726153746172745374616b696e67204e6f6d696e61746f727368656164206f66205374616b696e67204e6f6d696e61746f72735374616b696e67205374616b6572735374616b696e672052696e67506f6f6c5374616b696e67204c65646765725374616b696e6720426f6e6465645374616b696e672050617965655374616b696e672043757272656e74456c65637465645374616b696e6720457261536c6173684a6f75726e616c5374617368204163636f756e74202d20494e56414c4944436f6e74726f6c6c6572204163636f756e74202d20494e56414c49440000000090601000040000000000000094601000040000000000000000000000f46010000f00000000000000000000006c6110000a0000000000000078611000020000000000000000000000a86110000e0000000000000000000000186210000d000000000000002862100002000000000000000000000070351100000000000000000000000000586210000600000000000000606210000100000000000000000000007862100016000000000000000000000028631000150000000000000070351100000000000000000000000000703511000000000000000000000000003d6310001e000000000000005c631000010000000000000000000000703511000000000000000000000000007463100008000000000000007c631000010000000000000000000000946310000b0000000000000000000000ec6310000800000000000000f46310000100000000000000000000000c6410000b0000000000000000000000646410000500000000000000703511000000000000000000000000006c6410000b0000000000000000000000c46410000900000000000000d0641000010000000000000000000000e86410000b0000000000000000000000406510000e0000000000000050651000010000000000000000000000686510000b0000000000000000000000c06510001300000000000000d4651000010000000000000000000000ec651000010000000000000000000000f46510000d0000000000000070351100000000000000000000000000046610000500000000000000000000002c6610000d00000000000000703511000000000000000000000000003c6610000600000000000000000000006c66100011000000000000008066100001000000000000000000000098661000010000000000000000000000a06610000d00000000000000b0661000010000000000000000000000c8661000010000000000000000000000d0661000140000000000000070351100000000000000000000000000e46610000500000000000000626f6e64000000000b6a10000a0000000000000049bd1000230000000000000070bd100005000000000000009e7010002f00000000000000986a100005000000000000009d6a10001100000000000000db7010000d00000000000000cd5a10000600000016721000590000006f721000210000007035110000000000907210004c0000007035110000000000dc721000490000007035110000000000e4be10000b00000025731000350000000e721000080000005a7310001a0000007035110000000000747310005b000000cf7310004900000040bf10000c000000626f6e645f657874726100000000000070bd100005000000000000009e7010002f00000000000000db7010000d00000000000000cd5a100006000000e870100059000000417110000d00000070351100000000004e71100054000000a271100059000000fb71100013000000703511000000000024691000550000007035110000000000e4be10000b000000796910003a0000000e72100008000000847010001000000040bf10000c0000006465706f7369745f65787472610000000000000070bd10000500000000000000cd7010000e00000000000000db7010000d00000000000000cd5a100006000000756e626f6e6400000000000070bd100005000000000000009e7010002f000000a86c100046000000ee6c10003b000000296d100037000000606d100055000000b56d100040000000f56d10004900000070351100000000003e6e10006100000070351100000000009f6e10004f000000ee6e10004c0000003a6f10003f0000007035110000000000436a1000550000007035110000000000e4be10000b000000796f100050000000b369100026000000c96f10005900000022701000620000008470100010000000947010000a000000636c61696d5f6d61747572655f6465706f736974737472795f636c61696d5f6465706f736974735f776974685f70756e6973680000000000946c10000b000000000000009f6c10000900000076616c696461746500000000816c10000500000000000000866c10000e000000476c10003a0000007035110000000000ed681000370000007035110000000000436a1000550000007035110000000000e4be10000b000000796910003a000000b369100026000000d96910003200000040bf10000c0000006e6f6d696e61746500000000186c100007000000000000001f6c1000280000002f6b1000440000007035110000000000ed681000370000007035110000000000436a1000550000007035110000000000e4be10000b000000736b100049000000bc6b100026000000e26b10003600000040bf10000c0000006368696c6c000000ae6a1000320000007035110000000000e06a10003a0000007035110000000000436a1000550000007035110000000000e4be10000b000000796910003a0000001a6b100015000000d96910003200000040bf10000c0000007365745f706179656500000000000000986a100005000000000000009d6a100011000000156a10002e0000007035110000000000ed681000370000007035110000000000436a1000550000007035110000000000e4be10000b000000796910003a000000b369100026000000d96910003200000040bf10000c0000007365745f636f6e74726f6c6c65720000000000000b6a10000a0000000000000049bd100023000000c9681000240000007035110000000000ed68100037000000703511000000000024691000550000007035110000000000e4be10000b000000796910003a000000b369100026000000d96910003200000040bf10000c0000007365745f76616c696461746f725f636f756e7400000000001f9710000300000000000000bd6810000c0000009d68100020000000666f7263655f6e6f5f65726173000000716810002c0000007035110000000000e4be10000b000000616810001000000040bf10000c000000666f7263655f6e65775f657261000000e66710005300000039681000280000007035110000000000e4be10000b000000616810001000000040bf10000c0000007365745f696e76756c6e657261626c657300000000000000dc6710000a00000000000000b409110011000000a967100033000000666f7263655f756e7374616b6500000000000000a467100005000000000000003b0611000c0000006167100043000000666f7263655f6e65775f6572615f616c776179730c671000410000007035110000000000e4be10000b0000004d6710001400000040bf10000c00000020466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e202d204f6e652073746f7261676520777269746520466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e737461736820536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e76616c696461746f727320466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c20626520726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e202d204e6f20617267756d656e74732e20466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e2054686520696465616c206e756d626572206f662076616c696461746f72732e436f6d706163743c7533323e202852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e636f6e74726f6c6c6572202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e706179656552657761726444657374696e6174696f6e204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612ee38081202d20436f6e7461696e73206f6e6520726561642e204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f66206074617267657473602c2077686963682069732063617070656420617420604d41585f4e4f4d494e4154494f4e53602e202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e746172676574735665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e707265667356616c696461746f7250726566736578706972655f74696d65543a3a4d6f6d656e7420666f72206e6f726d616c5f72696e67206f72206e6f726d616c5f6b746f6e2c20666f6c6c6f7720746865206f726967696e616c20737562737472617465207061747465726e20666f722074696d655f6465706f7369745f72696e672c207472616e73666f726d20697420696e746f206e6f726d616c5f72696e67206669727374206d6f646966792074696d655f6465706f7369745f6974656d7320616e642074696d655f6465706f7369745f72696e6720616d6f756e74205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e6420706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e20543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c207468652066756e64732077696c6c206265207769746864726577206175746f6d61746963616c6c7920616e6420726561647920666f72207472616e736665722e204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360292063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c20205b605374616b696e674c6f636b3a3a736872696e6b605d206e65656420746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e6365602920202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028605374616b696e674c6f636b2e756e626f6e64696e67736029206b65707420696e2073746f726167652e202d204f6e6520444220656e7472792e203c2f7765696768743e5374616b696e6742616c616e6365733c52696e6742616c616e63653c543e2c204b746f6e42616c616e63653c543e3e52696e6742616c616e63653c543e70726f6d6973655f6d6f6e74682041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757020666f72207374616b696e672e20557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e20556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7420746861742063616e2062652061646465642e202d204f2831292e2054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c20626520746865206163636f756e74207468617420636f6e74726f6c732069742e206076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e202d20546872656520657874726120444220656e74726965732e204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e656420756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e00000000a87b10000e00000000000000000000007aac1000030000000000000000000000000000000000000000000000000000000000000070351100b47d10000000000000000000b87b100001000000000000000100000000000000c07b10001500000000000000000000007aac1000030000000000000000000000000000000000000000000000000000000000000070351100d87b10000000000000000000e87b100001000000000000000100000000000000f07b10000d0000000000000000000000b4091100110000000000000000000000000000000000000000000000000000000000000070351100687f10000000000000000000007c100003000000000000000100000000000000187c10000600000001010000000000003b0611000c000000000000003b0611000c0000000000000000000000000000000000000070351100787c10000000000000000000207c100001000000000000000000000000000000287c10000600000001010000000000003b0611000c000000000000002e7c1000470000000000000000000000000000000000000070351100787c10000000000000000000887c100001000000000000000000000000000000907c10000500000001010000000000003b0611000c000000000000009d6a1000110000000000000000000000000000000000000070351100987c10000000000000000000a87c1000010000000000000001000000000000005cb210000a00000001010100000000003b0611000c00000000000000866c10000e0000000000000000000000000000000000000070351100b07c10000000000000000000c07c100001000000000000000100000000000000c87c10000a00000001010100000000003b0611000c00000000000000b4091100110000000000000000000000000000000000000070351100687f10000000000000000000d47c100001000000000000000100000000000000dc7c10000700000001010000000000003b0611000c00000000000000e37c10001d0000000000000000000000000000000000000070351100007d10000000000000000000107d100004000000000000000100000000000000307d10000e0000000000000000000000b4091100110000000000000000000000000000000000000000000000000000000000000070351100687f10000000000000000000407d100001000000000000000100000000000000487d10000a0000000000000000000000527d1000080000000000000000000000000000000000000000000000000000000000000070351100b47d100000000000000000005c7d100001000000000000000100000000000000647d10000f0000000000000000000000737d10000b0000000000000000000000000000000000000000000000000000000000000070351100807d10000000000000000000907d100001000000000000000100000000000000987d10001b0000000000000000000000402a11000c0000000000000000000000000000000000000000000000000000000000000070351100b47d10000000000000000000c47d100001000000000000000100000000000000cc7d1000160000000000000000000000e27d1000090000000000000000000000000000000000000000000000000000000000000070351100ec7d10000000000000000000fc7d100001000000000000000100000000000000047e1000090000000000000000000000ba5b1000050000000000000000000000000000000000000000000000000000000000000070351100e47e10000000000000000000107e100003000000000000000100000000000000287e1000080000000000000000000000307e1000070000000000000000000000000000000000000000000000000000000000000070351100387e10000000000000000000487e100001000000000000000100000000000000507e1000130000000000000000000000637e1000070000000000000000000000000000000000000000000000000000000000000070351100947e100000000000000000006c7e100003000000000000000100000000000000847e10000e0000000000000000000000637e1000070000000000000000000000000000000000000000000000000000000000000070351100947e10000000000000000000a47e100003000000000000000100000000000000bc7e1000080000000000000000000000cd7010000e0000000000000000000000000000000000000000000000000000000000000070351100e47e10000000000000000000c47e100001000000000000000100000000000000cc7e1000080000000000000000000000d47e10000e0000000000000000000000000000000000000000000000000000000000000070351100e47e10000000000000000000f47e100001000000000000000100000000000000fc7e10000a0000000000000000000000067f10001d0000000000000000000000000000000000000000000000000000000000000070351100687f10000000000000000000247f1000010000000000000001000000000000002c7f10000f0000000101000000000000527d100008000000000000003b7f10002b0000000000000000000000000000000000000070351100687f10000000000000000000787f100001000000000000000100000056616c696461746f72436f756e740000248610002a0000004d696e696d756d56616c696461746f72436f756e7400000034000000000000000100000063000000d485100050000000496e76756c6e657261626c657300000000851000560000005685100053000000a98510002b000000426f6e6465640000c0841000400000004c65646765725374616b696e674c65646765723c543a3a4163636f756e7449642c2052696e6742616c616e63653c543e2c204b746f6e42616c616e63653c543e2c20543a3a0a4d6f6d656e743e000000340000000000000001000000370000006f84100051000000506179656500000034000000000000000100000037000000368410003900000034000000000000000100000064000000e5831000510000004e6f6d696e61746f727300008c831000590000005374616b6572734578706f737572653c543a3a4163636f756e7449642c20506f7765723e34000000000000000100000065000000cf8210005300000022831000460000007035110000000000688310002400000043757272656e74456c65637465640000908210003f00000043757272656e74457261457261496e6465780000798210001700000043757272656e7445726153746172744d6f6d656e744f663c543e00003400000000000000010000003b0000005b8210001e00000043757272656e74457261537461727453657373696f6e496e6465780034000000000000000100000040000000278210003400000043757272656e74457261506f696e74734561726e6564457261506f696e74730034000000000000000100000066000000e481100043000000536c6f745374616b65000000688110004c0000007035110000000000b481100030000000466f726365457261466f7263696e6700340000000000000001000000370000002181100047000000536c6173685265776172644672616374696f6e50657262696c6c0000aa8010003e0000007035110000000000e8801000390000005061796f75744672616374696f6e00003400000000000000010000004000000024801000540000007035110000000000788010003200000052696e67506f6f6c0e801000160000004b746f6e506f6f6c4b746f6e42616c616e63653c543e000034000000000000000100000036000000f87f100016000000426f6e646564457261735665633c28457261496e6465782c2053657373696f6e496e646578293e00af7f100049000000457261536c6173684a6f75726e616c5665633c536c6173684a6f75726e616c456e7472793c543a3a4163636f756e7449642c20506f7765723e3e00003400000000000000010000003e000000807f10002f00000020416c6c20736c617368657320746861742068617665206f6363757272656420696e206120676976656e206572612e2041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e20546f74616c202a4b746f6e2a20696e20706f6f6c2e20546f74616c202a52696e672a20696e20706f6f6c2e205468652070657263656e74616765206f662074686520746f74616c207061796f7574207468617420697320646973747269627574656420746f2076616c696461746f727320616e64206e6f6d696e61746f727320546865207265736574206d6967687420676f20746f205472656173757279206f7220736f6d657468696e6720656c73652e205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e205472756520696620746865206e6578742073657373696f6e206368616e67652077696c6c2062652061206e657720657261207265676172646c657373206f6620696e6465782e2054686520616d6f756e74206f662062616c616e6365206163746976656c79206174207374616b6520666f7220656163682076616c696461746f7220736c6f742c2063757272656e746c792e2054686973206973207573656420746f20646572697665207265776172647320616e642070756e6973686d656e74732e205265776172647320666f72207468652063757272656e74206572612e205573696e6720696e6469636573206f662063757272656e7420656c6563746564207365742e205468652073657373696f6e20696e646578206174207768696368207468652063757272656e742065726120737461727465642e20546865207374617274206f66207468652063757272656e74206572612e205468652063757272656e742065726120696e6465782e205468652063757272656e746c7920656c65637465642076616c696461746f7220736574206b65796564206279207374617368206163636f756e742049442e204e6f6d696e61746f727320666f72206120706172746963756c6172206163636f756e74207468617420697320696e20616374696f6e207269676874206e6f772e20596f752063616e27742069746572617465207468726f7567682076616c696461746f727320686572652c2062757420796f752063616e2066696e64207468656d20696e207468652053657373696f6e206d6f64756c652e2054686973206973206b6579656420627920746865207374617368206163636f756e742e20546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e20546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e2057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e20416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e63652074686579277265206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f757220696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e2054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e000000000000f88610000e00000000000000402a11000c000000000000007035110008871000000000000000000018871000010000000000000000000000208710000f000000000000009f6c100009000000000000007035110030871000000000000000000040871000010000000000000000000000488710001400000000000000527d10000800000000000000703511005c87100000000000000000006c871000010000000000000053657373696f6e73506572457261000034000000000000000100000067000000ea8710001c000000426f6e64696e674475726174696f6e0034000000000000000100000068000000ad8710003d000000426f6e64696e674475726174696f6e496e457261340000000000000001000000690000007487100039000000204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e204e756d626572206f6620604d6f6d656e74602074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e204e756d626572206f662073657373696f6e7320706572206572612e5374616b696e67204b746f6e506f6f6c5374616b696e6720496e76756c6e657261626c6573436f6e74726f6c6c6572204163636f756e74202d20414c5245414459205041495245445374617368204163636f756e74202d20414c524541445920424f4e444544556e6c6f636b204368756e6b73202d205245414348204d41582056414c5545203332436c61696d204465706f7369747320576974682050756e697368202d204e4f5448494e4720544f20434c41494d20415420544849532054494d4554617267657473202d2043414e204e4f5420424520454d50545954696d657374616d702055706461746554696d657374616d7020526563656e7448696e747346696e616c2068696e74206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b46696e616c697a6564206865696768742061626f766520626c6f636b206e756d62657254696d657374616d70204f72646572656448696e747354696d657374616d70204d656469616e616c77617973206174206c65617374206f6e6520726563656e742073616d706c653b20716564726563656e7420616e64206f72646572656420636f6e7461696e207468652073616d65206974656d733b207165640000004300000004000000040000002a0000007072756e696e672064696374617465642062792077696e646f775f73697a6520776869636820697320616c776179732073617475726174656420617420313b207165640000000000588a10000a00000000000000648a10000100000000000000000000007c8a1000020000000000000066696e616c5f68696e74000000000000e48a10000400000000000000e88a1000170000008c8a10003d000000c98a10001b0000002048696e7420746861742074686520617574686f72206f66207468697320626c6f636b207468696e6b732074686520626573742066696e616c697a656420626c6f636b2069732074686520676976656e206e756d6265722e68696e74436f6d706163743c543a3a426c6f636b4e756d6265723e0000000000708b10000a00000000000000aa2911000e00000000000000703511007c8b100000000000000000008c8b1000010000000000000000000000948b10000d00000000000000aa2911000e0000000000000070351100a48b10000000000000000000b48b1000010000000000000057696e646f7753697a6500003400000000000000010000006a000000038c1000460000005265706f72744c6174656e63790000003400000000000000010000006b000000bc8b100047000000205468652064656c617920616674657220776869636820706f696e74207468696e6773206265636f6d6520737573706963696f75732e2044656661756c7420697320313030302e20546865206e756d626572206f6620726563656e742073616d706c657320746f206b6565702066726f6d207468697320636861696e2e2044656661756c74206973203130312e5365616c204172697479202d20494e56414c4944446966666963756c7479202d204f5554204f4620424f554e445350726f6f66204f6620576f726b202d20494e56414c4944496e76616c696450726f6f664f66576f726b4300000004000000040000006c000000446966666963756c74794f75744f66426f756e6473496e76616c69645365616c41726974790000004300000004000000040000006d000000526c70004300000004000000040000006e00000076616c69646174696f6e3a20696d706f727420656e74727920706f696e747320746f2061206e6f6e2d6578697374656e74207479706543616e6e6f7420696d706f727420676c6f62616c736d6f64756c6520696d706f7274732061206e6f6e2d6578697374656e742066756e6374696f6e6d6f64756c6520696d706f72747320606578745f7072696e746c6e60206275742064656275672066656174757265732064697361626c656443616e6e6f7420696d706f7274207461626c65736d6f64756c652068617320696d706f7274732066726f6d2061206e6f6e2d27656e7627206e616d6573706163654d656d6f727920696d706f7274206d757374206861766520746865206669656c64206e616d6520276d656d6f7279274d756c7469706c65206d656d6f727920696d706f72747320646566696e65644d6178696d756d206e756d626572206f662070616765732073686f756c6420626520616c77617973206465636c617265642e52657175657374656420696e697469616c206e756d626572206f662070616765732073686f756c64206e6f74206578636565642074686520726571756573746564206d6178696d756d4d6178696d756d206e756d626572206f662070616765732073686f756c64206e6f74206578636565642074686520636f6e66696775726564206d6178696d756d2e48617368207461626c65206361706163697479206f766572666c6f77526c70202d20494e56414c49440000006f000000780000000800000070000000617373657274696f6e206661696c65643a2021646966666963756c74792e69735f7a65726f2829008cb810005b0000000d01000005000000646966666963756c7479203e20312c20736f20726573756c74206e65766572206f766572666c6f77732032353620626974733b2071656400340000000000000001000000710000006d656d6f7279657865632e7072656661625f6d6f64756c652e696e697469616c2063616e27742062652067726561746572207468616e20657865632e7072656661625f6d6f64756c652e6d6178696d756d3b0a09090909090974687573204d656d6f72793a3a6e6577206d757374206e6f74206661696c3b0a09090909090971656466696e616c6e756d496e686572656e7420776974682073616d65206964656e74696669657220616c726561647920657869737473214e6f206f74686572206572726f72732061726520616363657074656420616674657220616e2068617264206572726f7221756e636c65733030430000000400000004000000450000004574684261636b696e672052696e6750726f6f6656657269666965644574684261636b696e672052696e6752656465656d416464726573734574684261636b696e67204b746f6e50726f6f6656657269666965644574684261636b696e67204465706f73697450726f6f6656657269666965644574684261636b696e67204465706f73697452656465656d416464726573730000d49110000d000000b99110001b00000038101100020000006891100051000000e7010000010000002f55736572732f7861766965722f446f63756d656e74732f70726f6772616d2f64617277696e69612d6e6574776f726b2f64617277696e69612f6e6f64652f72756e74696d652f7372632f6c69622e727342616420696e70757420646174612070726f766964656420746f20657865637574655f626c6f636b000000ec91100010000000696e697469616c697a655f626c6f636b049210000f0000006170706c795f65787472696e736963001c92100013000000696e686572656e745f65787472696e7369637300389210000f000000636865636b5f696e686572656e747300509210001400000076616c69646174655f7472616e73616374696f6e6c9210000f0000006f6666636861696e5f776f726b657200849210000d0000006163636f756e745f6e6f6e6365000000cf16110004000000a49210000b0000006765745f73746f7261676500b89210000a00000071756572795f696e666f0000cc9210001500000067656e65726174655f73657373696f6e5f6b657973000000f4921000570000001b0000001d0000002f55736572732f7861766965722f446f63756d656e74732f70726f6772616d2f64617277696e69612d6e6574776f726b2f64617277696e69612f73726d6c2f7374616b696e672f7372632f696e666c6174696f6e2e72730000000000617474656d707420746f20646976696465206279207a65726f496e7465676572206f766572666c6f77207768656e2063617374696e6720746f20753132383a65787472696e7369635f696e64657853797374656d20506172656e744861736853797374656d204e756d62657253797374656d2045787472696e73696373526f6f7453797374656d2044696765737453797374656d20426c6f636b4861736853797374656d204163636f756e744e6f6e636553797374656d204576656e747353797374656d204576656e74546f7069637300000000549510000a0000000000000070351100000000000000000000000000609510000100000000000000000000006895100006000000000000007095100001000000000000000000000088951000010000000000000000000000909510000e00000000000000a0951000010000000000000000000000b8951000010000000000000000000000c09510000800000000000000c8951000010000000000000000000000e0951000010000000000000000000000e89510000b00000000000000f49510000100000000000000000000000c961000010000000000000000000000149610000c000000000000002096100001000000000000000000000038961000010000000000000000000000409610000b000000000000004c96100001000000000000000000000064961000010000000000000066696c6c5f626c6f636b0000889710004800000072656d61726b0000000000008197100007000000000000005826110007000000669710001b0000007365745f686561705f7061676573000000000000619710000500000000000000f803110003000000229710003f0000007365745f636f6465000000001f971000030000000000000058261100070000000d971000120000007365745f73746f726167650000000000fb9610000500000000000000009710000d000000e09610001b0000006b696c6c5f73746f7261676500000000e3af10000400000000000000d896100008000000ba9610001e0000006b696c6c5f7072656669780000000000b19610000600000000000000b7961000030000006c96100045000000204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e7072656669784b6579204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e5665633c4b65793e2053657420736f6d65206974656d73206f662073746f726167652e6974656d735665633c4b657956616c75653e2053657420746865206e657720636f64652e6e65772053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e7061676573204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e5f72656d61726b20412062696720646973706174636820746861742077696c6c20646973616c6c6f7720616e79206f74686572207472616e73616374696f6e20746f20626520696e636c756465642e00000000489c10000c00000001010000000000003b0611000c00000000000000549c1000080000000000000000000000000000000000000070351100d89d100000000000000000005c9c100001000000000000000100000000000000649c10000e00000000000000000000007aac1000030000000000000000000000000000000000000000000000000000000000000070351100b09c10000000000000000000749c1000010000000000000000000000000000007c9c10001300000000000000000000008f9c1000060000000000000000000000000000000000000000000000000000000000000070351100b09c10000000000000000000989c100001000000000000000000000000000000a09c10001000000000000000000000007aac1000030000000000000000000000000000000000000000000000000000000000000070351100b09c10000000000000000000c09c100001000000000000000000000000000000c89c1000090000000101000000000000aa2911000e00000000000000d19c10000700000000000000000000000000000000000000703511003c9d10000000000000000000d89c100001000000000000000100000000000000e09c10000d00000001010000000000007aac1000030000000000000058261100070000000000000000000000000000000000000070351100f09c10000000000000000000009d100001000000000000000100000000000000089d1000060000000000000000000000aa2911000e0000000000000000000000000000000000000000000000000000000000000070351100d89d10000000000000000000109d100001000000000000000100000000000000189d10000a0000000000000000000000d19c10000700000000000000000000000000000000000000000000000000000000000000703511003c9d10000000000000000000249d1000010000000000000001000000000000002c9d10000e0000000000000000000000d19c10000700000000000000000000000000000000000000000000000000000000000000703511003c9d100000000000000000004c9d100001000000000000000100000000000000549d10000600000000000000000000005a9d10000b0000000000000000000000000000000000000000000000000000000000000070351100689d10000000000000000000789d100001000000000000000100000000000000809d1000060000000000000000000000869d1000230000000000000000000000000000000000000000000000000000000000000070351100ac9d10000000000000000000bc9d100001000000000000000100000000000000c49d10000a0000000000000000000000ce9d10000a0000000000000000000000000000000000000000000000000000000000000070351100d89d10000000000000000000e89d100001000000000000000100000000000000f09d10000b0000000201010000000000fb9d10000200000000000000d19c10000700000000000000fd9d1000210000000000000070351100209e10000000000000000000309e10000d00000000000000010000004163636f756e744e6f6e6365543a3a496e646578aca310001f00000045787472696e736963436f756e7400007ea310002e000000416c6c45787472696e7369637357656967687457656967687400000039a3100045000000416c6c45787472696e736963734c656e34000000000000000100000037000000e9a2100050000000426c6f636b48617368543a3a48617368c3a210002600000045787472696e736963446174610000003400000000000000010000007200000074a210004f0000004e756d626572000032a2100042000000506172656e7448617368000016a210001c00000045787472696e73696373526f6f74000034000000000000000100000073000000d1a11000450000004469676573744469676573744f663c543e0000003400000000000000010000003e00000095a110003c0000004576656e74735665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e000000340000000000000001000000740000006da11000280000004576656e74436f756e744576656e74496e646578340000000000000001000000400000003fa110002e0000004576656e74546f7069637328295665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e00003400000000000000010000003e000000989e100049000000e19e1000250000007035110000000000069f10004b000000519f10002a00000070351100000000007b9f100054000000cf9f10005100000020a0100039000000703511000000000059a0100053000000aca0100053000000ffa0100040000000204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e6465786573206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e20546865206669727374206b657920736572766573206e6f20707572706f73652e2054686973206669656c64206973206465636c6172656420617320646f75626c655f6d6170206a75737420666f7220636f6e76656e69656e6365206f66207573696e67206072656d6f76655f707265666978602e20416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e205468697320616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e6420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573742074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e20546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e20446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2045787472696e7369637320726f6f74206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2048617368206f66207468652070726576696f757320626c6f636b2e205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e2045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e20546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e20546f74616c2077656967687420666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e20546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2045787472696e73696373206e6f6e636520666f72206163636f756e74732e3a6865617070616765733a636f646553657373696f6e20486973746f726963616c53657373696f6e73417574686f727368697020417574686f72417574686f727368697020556e636c657300000000000044a410000a0000000000000050a4100001000000000000000000000068a4100001000000000000007365745f756e636c657300000000000089a410000a0000000000000093a410000e00000070a41000190000002050726f76696465206120736574206f6620756e636c65732e6e65775f756e636c65735665633c543a3a4865616465723e00000000000000aca51000060000000000000000000000b2a510003a0000000000000000000000000000000000000000000000000000000000000070351100eca510000000000000000000fca510000100000000000000010000000000000004a610000600000000000000000000003b0611000c00000000000000000000000000000000000000000000000000000000000000703511000ca6100000000000000000001ca610000100000000000000000000000000000024a610000c0000000000000000000000a009110004000000000000000000000000000000000000000000000000000000000000007035110030a61000000000000000000040a61000010000000000000001000000556e636c65735665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e3400000000000000010000003e00000090a6100007000000417574686f7200003400000000000000010000003700000077a6100019000000446964536574556e636c65733400000000000000010000003700000048a610002f000000205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e20417574686f72206f662063757272656e7420626c6f636b2e20556e636c6573556e636c657320616c72656164792073657420696e20626c6f636b2e756e636c6520616c726561647920696e636c75646564756e636c652069732067656e65736973756e636c6520697320746f6f206869676820696e20636861696e756e636c6520706172656e74206e6f7420696e20636861696e756e636c65206e6f7420726563656e7420656e6f75676820746f20626520696e636c75646564000000000000b8a710001100000000000000cca71000010000000000000000000000d4a71000010000000000000000000000dca71000070000000000000070351100000000000000000000000000e4a71000010000000000000000000000eca710000b00000000000000f8a7100001000000000000000000000000a8100001000000000000004865617274626561745265636569766564000000d1a810000b000000a1a8100030000000416c6c476f6f64006ca8100035000000536f6d654f66666c696e650054a810001800000008a810004c0000002041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e63652076616c696461746f722077617320666f756e6420746f206265206f66666c696e652e5665633c4964656e74696669636174696f6e5475706c653e2041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460417574686f726974794964496d4f6e6c696e6520476f737369704174496d4f6e6c696e65204b657973496d4f6e6c696e6520417574686f726564426c6f636b7373726d6c2f696d2d6f6e6c696e652d776f726b65722d737461747573000000a9a9100008000000b1a9100020000000696d6f6e6c696e6573726d6c5f696d5f6f6e6c696e652f55736572732f7861766965722f446f63756d656e74732f70726f6772616d2f64617277696e69612d6e6574776f726b2f64617277696e69612f73726d6c2f696d2d6f6e6c696e652f7372632f6c69622e72735b696e6465783a205d205265706f7274696e6720696d2d6f6e6c696e6520617420626c6f636b3a200000000000000000aa100009000000000000000caa10000200000000000000000000007035110000000000000000006865617274626561740000000000000000aa100009000000000000003caa1000190000000000000055aa10000a000000000000005faa10002f0000004865617274626561743c543a3a426c6f636b4e756d6265723e5f7369676e61747572653c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e6174757265000000000000f0ab1000080000000000000000000000aa2911000e000000000000000000000000000000000000000000000000000000000000007035110080ac10000000000000000000f8ab10000100000000000000010000000000000000ac100004000000000000000000000004ac100013000000000000000000000000000000000000000000000000000000000000007035110018ac1000000000000000000028ac10000100000000000000010000000000000030ac1000120000000201010000000000402a11000c0000000000000042ac10000900000000000000582611000700000000000000703511004cac100000000000000000005cac1000020000000000000000000000000000006cac10000e0000000201010000000000402a11000c000000000000005cb310000e000000000000007aac100003000000000000007035110080ac1000000000000000000090ac1000020000000000000001000000476f737369704174a7ad1000280000004b6579735665633c543a3a417574686f7269747949643e003400000000000000010000003e00000073ad10003400000052656365697665644865617274626561747341757468496e646578003400000000000000010000004a00000017ad10003900000050ad100023000000417574686f726564426c6f636b7375333200000034000000000000000100000040000000a0ac100045000000e5ac10003200000020466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f662060543a3a56616c696461746f7249646020746f20746865206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e20466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e6465786020746f20606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e2054686520626c6f636b206e756d626572207768656e2077652073686f756c6420676f737369702e4475706c696361746564206865617274626561742e4e6f6e206578697374656e74207075626c6963206b65792e53657373696f6e2056616c696461746f72730000000000003cae1000080000000000000044ae100002000000000000000000000074ae10000a000000000000007365745f6b65797300000000e3af10000400000000000000e7af10000700000000000000eeaf100005000000000000005826110007000000c4ae100039000000fdae10004800000045af100031000000703511000000000076af1000350000007035110000000000e4be10000b000000abaf100022000000cdaf10001600000040bf10000c0000002053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b6579602e20416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722e205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e20546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e202d204f286c6f67206e2920696e206e756d626572206f66206163636f756e74732e202d204f6e6520657874726120444220656e7472792e6b657973543a3a4b65797370726f6f6600000000005cb210000a000000000000000000000066b210001300000000000000000000000000000000000000000000000000000000000000703511002cb3100000000000000000007cb210000100000000000000010000000000000084b210000c0000000000000000000000402a11000c000000000000000000000000000000000000000000000000000000000000007035110090b210000000000000000000a0b2100001000000000000000100000000000000a8b210000d0000000000000000000000a0091100040000000000000000000000000000000000000000000000000000000000000070351100b8b210000000000000000000c8b2100002000000000000000100000000000000d8b210000a0000000000000000000000e2b210001e00000000000000000000000000000000000000000000000000000000000000703511002cb31000000000000000000000b310000200000000000000010000000000000010b3100012000000000000000000000022b310000800000000000000000000000000000000000000000000000000000000000000703511002cb3100000000000000000003cb310000300000000000000010000000000000054b310000800000002040100000000005826110007000000000000005cb310000e00000000000000e7af10000700000000000000703511006cb3100000000000000000007cb31000040000000000000000000000000000009cb31000080000000204010000000000582611000700000000000000a4b3100014000000000000005cb310000e0000000000000070351100b8b310000000000000000000c8b3100004000000000000000000000056616c696461746f72735665633c543a3a56616c696461746f7249643e0000008fb610001f00000043757272656e74496e6465783400000000000000010000004000000071b610001e0000005175657565644368616e67656400000034000000000000000100000037000000fab510004e00000048b61000290000005175657565644b6579735665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e73b510004f000000c2b510003800000044697361626c656456616c696461746f72735665633c7533323e00003400000000000000010000003e00000006b5100020000000703511000000000026b510004d0000004e6578744b657973543a3a56616c696461746f724964000034000000000000000100000037000000dfb4100027000000703511000000000031b410005600000087b41000580000004b65794f776e6572284b65795479706549642c205665633c75383e2934000000000000000100000037000000e8b3100049000000703511000000000031b410005600000087b410005800000020546865206f776e6572206f662061206b65792e20546865207365636f6e64206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e20546865206669727374206b657920697320616c77617973206044454455505f4b45595f5052454649586020746f206861766520616c6c20746865206461746120696e207468652073616d65206272616e6368206f662074686520747269652e20486176696e6720616c6c206461746120696e207468652073616d65206272616e63682073686f756c642070726576656e7420736c6f77696e6720646f776e206f7468657220717565726965732e20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e20496e6469636573206f662064697361626c65642076616c696461746f72732e205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e2054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b6579732077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e20547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f727320686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e2043757272656e7420696e646578206f66207468652073657373696f6e2e205468652063757272656e7420736574206f662076616c696461746f72732e000000000000e8b610001000000000000000f8b6100005000000000000007035110000b71000000000000000000010b71000020000000000000044454455505f4b45595f505245464958265b75385d0000003400000000000000010000007500000020b710005900000079b710000d0000002055736564206173206669727374206b657920666f7220604e6578744b6579736020616e6420604b65794f776e65726020746f2070757420616c6c20746865206461746120696e746f207468652073616d65206272616e6368206f662074686520747269652e3a73657373696f6e3a6b65797353657373696f6e204e6578744b65797353657373696f6e204b65794f776e657253657373696f6e205175657565644b6579736e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e72656769737465726564206475706c6963617465206b65791dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934743616e27742063616c63756c6174652067656e6573697320626c6f636b20646966666963756c74798cb810005b000000980000000d00000000000000617474656d707420746f20646976696465206279207a65726f0000008cb810005b000000c00000001c0000002f55736572732f7861766965722f446f63756d656e74732f70726f6772616d2f64617277696e69612d6e6574776f726b2f64617277696e69612f636f72652f73722d6574682d7072696d6974697665732f7372632f706f772e7273000000000014b9100008000000000000001cb910000400000000000000000000003cb9100001000000000000005472616e73666572d003110009000000d00311000900000070b910000700000070b910000700000044b910002c000000205472616e7366657220737563636565646564202866726f6d2c20746f2c2076616c75652c2066656573292e42616c616e63654b746f6e20546f74616c49737375616e63654b746f6e204672656542616c616e63654b746f6e204c6f636b734b746f6e2056657374696e676163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c76657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75654b746f6e20526573657276656442616c616e636562656e6566696369617279206163636f756e74206d757374207072652d657869737400000000c0ba10000800000000000000c8ba1000020000000000000000000000f8ba1000190000000000000000000000c0bb10000b00000000000000ccbb100003000000000000000000000014bc10000d00000000000000000000007cbc10000e000000000000008cbc1000030000000000000000000000d4bc100002000000000000007472616e73666572000000006cbd1000040000000000000049bd1000230000000000000070bd1000050000000000000075bd10001300000060bf100036000000703511000000000096bf100042000000d8bf10004800000020c010004500000065c010002d000000703511000000000092c01000460000007035110000000000e4be10000b000000d8c010004c00000024c110003300000057c110005a0000007035110000000000b1c11000130000007035110000000000c4c110005400000018c210004b00000063c210003500000098c2100037000000cfc210005600000025c310005200000077c310003e000000703511000000000040bf10000c0000007365745f62616c616e6365000000000038061100030000000000000049bd100023000000000000004cbf1000080000000000000075bd1000130000000000000054bf10000c0000000000000075bd10001300000088bd1000250000007035110000000000adbd100048000000f5bd10004200000037be1000460000007dbe10003a0000007035110000000000b7be10002d0000007035110000000000e4be10000b000000efbe1000200000000fbf10003100000040bf10000c000000666f7263655f7472616e7366657200000000000043bd1000060000000000000049bd100023000000000000006cbd1000040000000000000049bd1000230000000000000070bd1000050000000000000075bd100013000000e4bc10005400000038bd10000b0000002045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265207370656369666965642e736f757263653c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263656465737476616c7565436f6d706163743c543a3a42616c616e63653e20536574207468652062616c616e636573206f66206120676976656e206163636f756e742e20546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c20616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e20496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742c2069742077696c6c20726573657420746865206163636f756e74206e6f6e636520286073797374656d3a3a4163636f756e744e6f6e636560292e20546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e2023203c7765696768743e202d20496e646570656e64656e74206f662074686520617267756d656e74732e202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e2023203c2f7765696768743e6e65775f667265656e65775f7265736572766564205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e20607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e2049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e204966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74206f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e2052656c617465642066756e6374696f6e733a2020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c20636175736520202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e2020202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c2074726967676572202020202060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e6365646020616e642060543a3a4f6e4672656542616c616e63655a65726f3a3a6f6e5f667265655f62616c616e63655f7a65726f602e2020202d20607472616e736665725f6b6565705f616c6976656020776f726b73207468652073616d652077617920617320607472616e73666572602c206275742068617320616e206164646974696f6e616c2020202020636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e0000000000000070c510000d00000000000000000000007dc510000a000000000000000000000000000000000000000000000000000000000000007035110050c61000000000000000000088c510000100000000000000010000000000000090c510000700000001010000000000003b0611000c0000000000000097c510002b0000000000000000000000000000000000000070351100c4c510000000000000000000d4c5100001000000000000000000000000000000dcc510000b00000001010000000000003b0611000c000000000000007dc510000a000000000000000000000000000000000000007035110050c610000000000000000000e8c510000b00000000000000010000000000000040c610000f00000001010000000000003b0611000c000000000000007dc510000a000000000000000000000000000000000000007035110050c61000000000000000000060c610000b000000000000000100000000000000b8c610000500000001010000000000003b0611000c00000000000000bdc61000270000000000000000000000000000000000000070351100e4c61000000000000000000070351100000000000000000001000000546f74616c49737375616e6365543a3a42616c616e636500efcb10002600000056657374696e6756657374696e675363686564756c653c543a3a42616c616e63652c20543a3a426c6f636b4e756d6265723e000034000000000000000100000055000000b9cb1000360000004672656542616c616e6365003fc9100027000000703511000000000066c9100050000000b6c910005d00000013ca10005500000068ca10004f000000b7ca10005100000008cb10001500000070351100000000001dcb10005700000074cb100045000000526573657276656442616c616e63650034000000000000000100000036000000f4c610005d00000051c7100027000000703511000000000078c710005b000000d3c710004900000070351100000000001cc810005d00000079c810002d0000007035110000000000a6c8100053000000f9c81000460000004c6f636b735665633c42616c616e63654c6f636b3c543a3a42616c616e63652c20543a3a4d6f6d656e743e3e3400000000000000010000003e0000002054686520616d6f756e74206f66207468652062616c616e6365206f66206120676976656e206163636f756e7420746861742069732065787465726e616c6c792072657365727665643b20746869732063616e207374696c6c2067657420736c61736865642c20627574206765747320736c6173686564206c617374206f6620616c6c2e20546869732062616c616e63652069732061202772657365727665272062616c616e63652074686174206f746865722073756273797374656d732075736520696e206f7264657220746f2073657420617369646520746f6b656e73207468617420617265207374696c6c20276f776e65642720627920746865206163636f756e7420686f6c6465722c20627574207768696368206172652073757370656e6461626c652e205768656e20746869732062616c616e63652066616c6c732062656c6f77207468652076616c7565206f6620604578697374656e7469616c4465706f736974602c207468656e2074686973202772657365727665206163636f756e74272069732064656c657465643a207370656369666963616c6c792c2060526573657276656442616c616e6365602e206073797374656d3a3a4163636f756e744e6f6e63656020697320616c736f2064656c6574656420696620604672656542616c616e63656020697320616c736f207a65726f2028697420616c736f206765747320636f6c6c617073656420746f207a65726f2069662069742065766572206265636f6d6573206c657373207468616e20604578697374656e7469616c4465706f736974602e2920546865202766726565272062616c616e6365206f66206120676976656e206163636f756e742e205468697320697320746865206f6e6c792062616c616e63652074686174206d61747465727320696e207465726d73206f66206d6f7374206f7065726174696f6e73206f6e20746f6b656e732e20497420616c6f6e65206973207573656420746f2064657465726d696e65207468652062616c616e6365207768656e20696e2074686520636f6e747261637420657865637574696f6e20656e7669726f6e6d656e742e205768656e20746869732062616c616e63652066616c6c732062656c6f77207468652076616c7565206f6620604578697374656e7469616c4465706f736974602c207468656e20746865202763757272656e74206163636f756e74272069732064656c657465643a207370656369666963616c6c7920604672656542616c616e6365602e20467572746865722c2074686520604f6e4672656542616c616e63655a65726f602063616c6c6261636b20697320696e766f6b65642c20676976696e672061206368616e636520746f2065787465726e616c206d6f64756c657320746f20636c65616e2075702064617461206173736f6369617465642077697468207468652064656c65746564206163636f756e742e206073797374656d3a3a4163636f756e744e6f6e63656020697320616c736f2064656c657465642069662060526573657276656442616c616e63656020697320616c736f207a65726f2028697420616c736f206765747320636f6c6c617073656420746f207a65726f2069662069742065766572206265636f6d6573206c657373207468616e20604578697374656e7469616c4465706f736974602e20496e666f726d6174696f6e20726567617264696e67207468652076657374696e67206f66206120676976656e206163636f756e742e2054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e7472616e7366657220776f756c64206b696c6c206163636f756e745472616e7366657220466565202d204e4f5420454e4f5547482052494e4762616c616e636520746f6f206c6f7720746f2073656e642076616c756564657374696e6174696f6e2062616c616e636520746f6f206869676820746f20726563656976652076616c75656361706163697479206f766572666c6f77000000bccc100017000000ea020000050000007372632f6c6962616c6c6f632f7261775f7665632e72730040cd1000460000005a010000130000004300000004000000040000007600000077000000780000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f7200340000000000000001000000350000002f72757374632f646133363239623035663866316234323561373338626665396665396165646434376335343137612f7372632f6c6962636f72652f666d742f6d6f642e7273010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002020202020202020202020202020202020202020202020202020202020203030303030303030303030303030303040404040400000000000000000000000000a8ce100020000000c8ce10001200000034000000000000000100000079000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e6465782069732030303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839390000dccf100006000000e2cf100022000000c4cf100018000000720a0000050000007372632f6c6962636f72652f736c6963652f6d6f642e7273696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682024d01000160000003ad010000d000000c4cf100018000000780a000005000000736c69636520696e64657820737461727473206174202062757420656e6473206174205b2e2e2e5d02d110000b0000007fe310001600000041d1100001000000ecd01000160000003e080000090000005de310000e0000006be31000040000006fe310001000000041d1100001000000ecd0100016000000420800000500000048e31000150000007d0100001500000002d110000b0000000dd110002600000033d11000080000003bd110000600000041d1100001000000ecd010001600000055080000050000007372632f6c6962636f72652f7374722f6d6f642e72736279746520696e64657820206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f66206060000082d11000020000006cd11000160000007e040000280000006cd110001600000073040000280000007372632f6c6962636f72652f666d742f6d6f642e72732e2e30780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000f8030000000000000000000000000000000000000000000000000000000000000000feffffffffbfb6000000000000000000ff070000000000f8ffff0000010000000000000000000000c09f9f3d0000000002000000ffffff0700000000000000000000c0ff01000000000000f80f2028dd10004a00000078df10000002000078e110003a00000000010203040506070809080a0b0c0d0e0f10111213140215161718191a1b1c1d1e1f2002020202020202020202210202020202020202020202020202222324252602270228020202292a2b022c2d2e2f300202310202023202020202020202023302023402020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023502360237020202020202020238023902020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023a3b3c020202023d02023e3f4041424344454602020247020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202024802020202020202020202024902020202023b020001020202020302020202040205060202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020207020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200010305050606030706080809110a1c0b190c140d120e0d0f0410031212130916011705180219031a071c021d011f1620032b042c022d0b2e01300331023201a702a902aa04ab08fa02fb05fd04fe03ff09ad78798b8da23057588b8c901c1ddd0e0f4b4cfbfc2e2f3f5c5d5fb5e2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d112945495764658d91a9b4babbc5c9dfe4e5f0040d1145496465808184b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff800d6d71dedf0e0f1f6e6f1c1d5f7d7eaeafbbbcfa16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596972f5f262e2fa7afb7bfc7cfd7df9a409798308f1fc0c1ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091feff536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab351e1580e003190801042f043404070301070607110a500f1207550802041c0a090308030703020303030c0405030b06010e15053a0311070605100757070207150d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd035907150b1709140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a061f414c042d0374083c030f033c0738082b0582ff1118082f112d032010210f808c048297190b158894052f053b07020e180980b030740c80d61a0c0580ff0580b605240c9bc60ad23010848d033709815c1480b80880c73035040a06380846080c06740b1e035a0459098083181c0a16094808808a06aba40c170431a10481da26070c050580a511816d1078282a064c04808d0480be031b030f0d0006010103010402080809020a050b02100111041205131114021502170219041c051d0824016a036b02bc02d102d40cd509d602d702da01e005e102e802ee20f004f906fa020c273b3e4e4f8f9e9e9f060709363d3e56f3d0d104141836375657bd35cecfe01287898e9e040d0e11122931343a4546494a4e4f64655a5cb6b71b1ca8a9d8d909379091a8070a3b3e66698f926f5feeef5a629a9b2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d00c72a3a4cbcc6e6f5e227b0503042d036504012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b018090813709160a088098390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a81261f808128082a808617094e041e0f430e19070a0647092709750b3f412a063b050a0651060105100305808b602048080a80a65e22450b0a060d1339070a362c041080c03c64530c0180a0451b4808531d398107460a1d03474937030e080a0639070a81361980c7320d839b66750b80c48abc842f8fd18247a1b98239072a040260260a460a28051382b05b654b0439071140041c97f80882f3a50d811f3103110408818c89046b050d03090710936080f60a73086e1746809a140c570919808781470385420f1585502b80d52d031a040281703a0501850080d7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a0d035d033d391d0d2c040907020e06809a83d60a0d030b05740c59070c140c0438080a0628081e527703310380a60c14040305030d06856a00000008dd100020000000270000001900000008dd100020000000280000002000000008dd1000200000002a0000001900000008dd1000200000002b0000001800000008dd1000200000002c000000200000007372632f6c6962636f72652f756e69636f64652f626f6f6c5f747269652e72730000c0fbef3e00000000000e0000000000000000000000000000f8fffbffffff0700000000000014fe21fe000c00000002000000000000501e2080000c00004006000000000000108639020000002300be2100000c0000fc02000000000000d01e20c0000c0000000400000000000040012080000000000011000000000000c0c13d60000c0000000200000000000090443060000c00000003000000000000581e2080000c00000000845c8000000000000000000000f207807f000000000000000000000000f21f003f000000000000000000030000a002000000000000fe7fdfe0fffeffffff1f40000000000000000000000000e0fd66000000c301001e006420002000000000000000e00000000000001c0000001c0000000c0000000c00000000000000b03f40fe0f200000000000380000000000006000000000020000000000008701040e00008009000000000000407fe51ff89f000000000000ff7f0f0000000000f0170400000000f80f00030000003c3b00000000000040a303000000000000f0cf000000f7fffd211003fffffffffffffffb00100000000000000000ffffffff01000000000000800300000000000000008000000000ffffffff0000000000fc00000000000600000000000000000080f73f000000c0000000000000000000000300440800006000000030000000ffff038000000000c03f000080ff030000000000070000000000c833000000002000000000000000007e660008100000000000100000000000009dc1020000000030400000000000202100000000004000000000ffff0000ffff00000000000000000001000000020003000000000000000000000000000000000000000000000000000004000005000000000000000006000000000000000007000008090a000b0c0d0e0f000010111200001314151600001718191a1b001c0000001d0000000000001e1f202100000000002200230024252600000000270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002829000000000000000000000000000000002a2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000002d2e00002f0000000000000000000000000000000000000000000000000000000000003031320000000000000000000000000000000000000000003300000029000000000000340000000000000000000000000000000000000000000000350036000000000000000000000000000000000000000000000000000037380000383838390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000001000000000000000000c0076ef0000000000087000000006000000000000000f0000000c0ff01000000000002000000000000ff7f0000000000008003000000000078060700000080ef1f000000000000000800030000000000c07f001e000000000000000000000080d34000000080f8070000030000000000005801008000c01f1f0000000000000000ff5c00004000000000000000000000f9a50d000000000000000000000000803cb00100003000000000000000000000f8a70100000000000000000000000028bf00000000e0bc0f0000000000000080ff060000f00c01000000fe0700000000f87980007e0e0000000000fc7f03000000000000000000007fbf0000fcfffffc6d000000000000007eb4bf000000000000000000a3000000000000000000000018000000000000001f000000000000007f0000800000000000000080070000000000000000600000000000000000a0c307f8e70f0000003c00001c00000000000000ffffffffffff7ff8ffffffffff1f2000100000f8feff00007ffffff9db0700000000000000f0000000007f0000000000f00700000000000000000000ffffffffffffffffffffffffffffffffffff00007372632f6c6962636f72652f6f7074696f6e2e7273626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e672060206973206f7574206f6620626f756e6473206f662060426f72726f774572726f72426f72726f774d75744572726f72000048e3100015000000a40400000500000070616e69636b656420617420f5e3100001000000f6e31000030000007035110000000000f4e3100001000000f4e31000010000003a27272c200000000ce4100015000000a5040000050000007372632f6c6962636f72652f726573756c742e727366616c73657472756520202020207b202c20207b0a00007a0000000c000000040000007b0000007c0000007d0000002c0a00004300000004000000040000007e0000007f00000080000000207d7d280a0a617474656d707420746f206a6f696e20696e746f20636f6c6c656374696f6e2077697468206c656e203e207573697a653a3a4d41586e6f20656e74727920666f756e6420666f72206b6579616464726573736279746573000000c4e41000050000001ce510000300000018e5100004000000737472696e670000703511000000000016e510000100000017e5100001000000703511000000000014e51000020000005b5d5b5d75696e74696e742c703511000000000038e5100001000000803011000100000028000000ffffffff4f6666656e636573205265706f7274730000000058e610000700000001010000000000005fe610000d000000000000006ce61000340000000000000000000000000000000000000070351100a0e610000000000000000000b0e6100001000000000000000000000000000000b8e61000160000000201010000000000c31f11000400000000000000c71f11000e00000000000000cee61000120000000000000070351100e0e610000000000000000000f0e6100001000000000000000100000000000000f8e61000120000000101000000000000c31f11000400000000000000582611000700000000000000000000000000000000000000703511000ce7100000000000000000001ce710000600000000000000010000005265706f7274735265706f727449644f663c543e4f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e34000000000000000100000037000000b5e8100052000000436f6e63757272656e745265706f727473496e6465785665633c5265706f727449644f663c543e3e3400000000000000010000003e0000006be810004a0000005265706f72747342794b696e64496e6465780000340000000000000001000000720000004ce7100044000000703511000000000090e710002f0000007035110000000000bfe710005200000011e810005a00000020456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f6620646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e20546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e696d2d6f6e6c696e653a6f66666c696e4f6666656e63657320436f6e63757272656e745265706f727473496e6465784469676573744974656d206e6f7420657175616c000034000000000000000100000081000000820000008300000034000000000000000100000081000000820000008300000034000000000000000100000048000000340000000000000001000000840000004300000004000000040000000400000042725461626c65446174617461626c654300000004000000040000008500000064656661756c744636345265696e74657270726574493634556e726561636861626c654e6f70426c6f636b00430000000400000004000000860000004c6f6f704966456c7365456e6442724272496642725461626c6500004300000004000000040000008700000052657475726e43616c6c43616c6c496e64697265637400004300000004000000040000008800000044726f7053656c6563744765744c6f63616c5365744c6f63616c5465654c6f63616c476574476c6f62616c536574476c6f62616c4933324c6f61644936344c6f61644633324c6f61644636344c6f61644933324c6f616438534933324c6f616438554933324c6f61643136534933324c6f61643136554936344c6f616438534936344c6f616438554936344c6f61643136534936344c6f61643136554936344c6f61643332534936344c6f616433325549333253746f726549363453746f726546333253746f726546363453746f726549333253746f72653849333253746f7265313649363453746f72653849363453746f7265313649363453746f7265333243757272656e744d656d6f727947726f774d656d6f7279493332436f6e73740043000000040000000400000089000000493634436f6e73744300000004000000040000008a000000463332436f6e7374463634436f6e73744300000004000000040000000700000049333245717a49333245714933324e654933324c74534933324c74554933324774534933324774554933324c65534933324c655549333247655349333247655549363445717a49363445714936344e654936344c74534936344c74554936344774534936344774554936344c65534936344c655549363447655349363447655546333245714633324e654633324c7446333247744633324c65463332476546363445714636344e654636344c7446363447744636344c654636344765493332436c7a49333243747a493332506f70636e744933324164644933325375624933324d756c493332446976534933324469765549333252656d5349333252656d55493332416e644933324f72493332586f7249333253686c4933325368725349333253687255493332526f746c493332526f7472493634436c7a49363443747a493634506f70636e744936344164644936345375624936344d756c493634446976534936344469765549363452656d5349363452656d55493634416e644936344f72493634586f7249363453686c4936345368725349363453687255493634526f746c493634526f74724633324162734633324e65674633324365696c463332466c6f6f724633325472756e634633324e656172657374463332537172744633324164644633325375624633324d756c4633324469764633324d696e4633324d6178463332436f70797369676e4636344162734636344e65674636344365696c463634466c6f6f724636345472756e634636344e656172657374463634537172744636344164644636345375624636344d756c4636344469764636344d696e4636344d6178463634436f70797369676e493332577261704936344933325472756e63534633324933325472756e63554633324933325472756e63534636344933325472756e6355463634493634457874656e6453493332493634457874656e64554933324936345472756e63534633324936345472756e63554633324936345472756e63534636344936345472756e6355463634463332436f6e7665727453493332463332436f6e7665727455493332463332436f6e7665727453493634463332436f6e766572745549363446333244656d6f7465463634463634436f6e7665727453493332463634436f6e7665727455493332463634436f6e7665727453493634463634436f6e766572745549363446363450726f6d6f74654633324933325265696e746572707265744633324936345265696e746572707265744636344633325265696e746572707265744933324e6f526573756c7456616c7565004300000004000000040000008b000000463634493332493634463332a4ef10000b000000492f4f204572726f723a20496e76616c696444617461547261696c696e6744617461556e6578706563746564456f6600000000000000000000000000617474656d707420746f20646976696465206279207a65726f2f55736572732f7861766965722f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7072696d69746976652d74797065732d302e362e312f7372632f6c69622e7273000000000000000000617474656d707420746f20646976696465206279207a65726f000000f9ef10005e000000330000000100000000000000617474656d707420746f20646976696465206279207a65726f2f55736572732f7861766965722f2e636172676f2f6769742f636865636b6f7574732f7061726974792d636f6d6d6f6e2d653537356438316432346139336539332f646639656562612f7072696d69746976652d74797065732f7372632f6c69622e7273000000a9f01000640000002000000001000000a9f010006400000024000000010000004f766572666c6f776469766973696f6e206279207a65726f496e7465676572206f766572666c6f77207768656e2063617374696e6720746f207573697a650000617474656d707420746f20646976696465206279207a65726f61726974686d65746963206f7065726174696f6e206f766572666c6f770000b0f1100001000000304e6f6e65536f6d650000004300000004000000040000008c00000009f21000680000001001000020000000e4f110002500000043616c6c20746f2066756e6374696f6e2074686174206f75742d6f662d626f756e64733a202f55736572732f7861766965722f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31312e302f7372632f737461636b5f6865696768742f6d6f642e7273546869732073686f756c64206265206120696e646578206f66206120646566696e65642066756e6374696f6e44756520746f2076616c69646174696f6e20636f64652073656374696f6e2073686f756c642065786973747346756e6374696f6e20626f6479206973206f7574206f6620626f756e647366756e6374696f6e20696d706f727420636f756e74206973206e6f74207a65726f3b20696d706f72742073656374696f6e206d757374206578697374733b2071656466756e635f696478206973206c657373207468616e2066756e6374696f6e20696d706f72747320636f756e743b0a090909096e74682066756e6374696f6e20696d706f7274206d7573742062652060536f6d65603b0a0909090971656400002c34110012000000ddf310000f000000b0f310000a000000baf3100014000000cef310000f0000005369676e61747572652020287370656369666965642062792066756e6320292069736e277420646566696e6564206973206e6f7420646566696e6564b1f4100012000000c3f410000c0000006066756e635f696478602073686f756c6420636f6d652066726f6d20606e6565645f7468756e6b73603b0a09090909606e6565645f7468756e6b736020697320706f70756c617465642077697468207468652073616d65206974656d73207468617420696e20607265706c6163656d656e745f6d6170603b0a090909097165644174207468697320706f696e7420616e20696e646578206d7573742062652061737369676e656420746f2065616368207468756e6b66756e6374696f6e207769746820696478202069736e277420666f756e64617373657274696f6e206661696c65643a20656e64203c3d206c656e4672616d6569735f706f6c796d6f727068696300004300000004000000040000008d000000656e645f6172697479000000430000000400000004000000040000006272616e63685f617269747973746172745f6865696768744e6f2066756e6374696f6e2073656374696f6e4e6f20636f64652073656374696f6e4e6f20747970652073656374696f6e000000a0f710000a00000046756e6374696f6e206973206e6f7420666f756e6420696e2066756e632073656374696f6e46756e6374696f6e20626f647920666f722074686520696e6465782069736e277420666f756e6494f710000c00000058f710000b000000737461636b206d757374206265206e6f6e2d656d707479004df710000b00000005f7100006000000737461636b206f766572666c6f774172697479206f6620616c6c206a756d702d74617267657473206d75737420626520657175616c54797065206e6f7420666f756e6400fef610000700000060f610006f000000c8000000170000002f55736572732f7861766965722f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31312e302f7372632f737461636b5f6865696768742f6d61785f6865696768742e72736d61785f686569676874707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768747472756e633a20707573683a200048f7100005000000747279696e6720746f20706f70206d6f72652076616c756573207468616e20707573686564737461636b20756e646572666c6f77706f703a20756e726561636861626c65706f705f6672616d653a20636f6e74726f6c20737461636b20697320656d707479636f6e74726f6c20737461636b206f75742d6f662d626f756e6473707573685f6672616d653a2066756e635f6964783a20656e76000000c0f710005f000000120100001c0000002f55736572732f7861766965722f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f707761736d2d7574696c732d302e31312e302f7372632f6761732f6d6f642e72736c6173745f696e6465782069732067726561746572207468616e20303b206c6173745f696e64657820697320737461636b2073697a65202d20313b20716564506172656e7420686173682073686f756c642062652076616c69642e5472616e73616374696f6e207472696520726f6f74206d7573742062652076616c69642e0000f7f8100032000000446967657374206974656d206d757374206d6174636820746861742063616c63756c617465642e53746f7261676520726f6f74206d757374206d6174636820746861742063616c63756c617465642e4e756d626572206f6620646967657374206974656d73206d757374206d6174636820746861742063616c63756c617465642e64617277696e69612d6e6f64650000df6acb689907609b0200000037e397fc7c91f5e40100000040fe3ad401f8959a03000000d2bc9897eed08f1501000000f78b278be53f454c01000000ed99c5acb25eedf502000000cbca25e39f14238701000000bc9d89904f5b923f0100000068b66ba122c93fa70100000037c8bb1350a9a2a801000000ab3c0572291feb8b010000006772616e62616265696d6f6e000000003802110018000000000000008e000000000000000000000000000000000000000000000000000000000000008f000000000000000000000002000000000000000000000000000000000000008f0000000000000000000000000000008f000000000000000000000000000000500211000600000000000000900000000000000000000000000000000000000000000000000000000000000091000000000000000000000000000000920000000000000000000000000000008f0000000000000000000000000000009300000000000000000000000000000056021100040000000000000094000000000000000000000000000000000000000000000000000000000000008f00000000000000000000000200000000000000000000000000000000000000950000000000000000000000000000008f0000000000000000000000000000005a021100080000000000000096000000000000000000000000000000000000000000000000000000000000009700000000000000000000000000000098000000000000000000000000000000990000000000000000000000000000008f0000000000000000000000000000006202110007000000000000009a000000000000000000000000000000000000000000000000000000000000008f0000000000000000000000000000009b0000000000000000000000000000008f0000000000000000000000000000008f0000000000000000000000000000006902110004000000000000009c000000000000000000000000000000000000000000000000000000000000009d0000000000000000000000000000009e0000000000000000000000000000008f0000000000000000000000000000008f0000000000000000000000000000006d02110009000000000000009f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000200000000000000000000000000000000000000a10000000000000000000000000000008f000000000000000000000000000000760211001200000000000000a2000000000000000000000000000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000000000000a30000000000000000000000000000008f000000000000000000000000000000880211000a00000000000000a400000000000000000000000000000000000000000000000000000000000000a5000000000000000000000002000000000000000000000000000000000000008f0000000000000000000000000000008f000000000000000000000000000000920211000700000000000000a600000000000000000000000000000000000000000000000000000000000000a7000000000000000000000000000000a80000000000000000000000000000008f0000000000000000000000000000008f000000000000000000000000000000990211000800000000000000a900000000000000000000000000000000000000000000000000000000000000aa000000000000000000000000000000ab0000000000000000000000000000008f0000000000000000000000000000008f000000000000000000000000000000a10211000f000000020000000000000000000000000000000000000000000000000000000000000000000000ac00000000000000000000000200000000000000000000000000000000000000ad0000000000000000000000000000008f000000000000000000000000000000b00211000800000000000000ae000000000000000000000000000000000000000000000000000000000000008f000000000000000000000000000000af0000000000000000000000000000008f0000000000000000000000000000008f000000000000000000000000000000b80211000700000000000000b000000000000000000000000000000000000000000000000000000000000000b1000000000000000000000000000000b2000000000000000000000000000000b30000000000000000000000000000008f000000000000000000000000000000bf0211000700000000000000b400000000000000000000000000000000000000000000000000000000000000b5000000000000000000000000000000b6000000000000000000000000000000b70000000000000000000000000000008f000000000000000000000000000000c60211000900000000000000b800000000000000000000000000000000000000000000000000000000000000b9000000000000000000000000000000ba000000000000000000000000000000bb0000000000000000000000000000008f000000000000000000000000000000cf0211000400000000000000bc00000000000000000000000000000000000000000000000000000000000000bd000000000000000000000000000000be0000000000000000000000000000008f0000000000000000000000000000008f000000000000000000000000000000d302110007000000020000000000000000000000000000000000000000000000000000000000000000000000bf000000000000000000000000000000c00000000000000000000000000000008f0000000000000000000000000000008f000000000000000000000000000000720611000800000000000000c100000000000000000000000000000000000000000000000000000000000000c2000000000000000000000000000000c30000000000000000000000000000008f0000000000000000000000000000008f000000000000000000000000000000da0211000a00000000000000c400000000000000000000000000000000000000000000000000000000000000c5000000000000000000000000000000c60000000000000000000000000000008f0000000000000000000000000000008f000000000000000000000052616e646f6d6e657373436f6c6c656374697665466c697053797374656d4261626542616c616e636573496e64696365734b746f6e54696d657374616d705472616e73616374696f6e5061796d656e74417574686f72736869704772616e647061496d4f6e6c696e6546696e616c697479547261636b65724f6666656e63657353657373696f6e5374616b696e67436f6e7472616374735375646f5574696c6974794574684261636b696e67000000006803110010000000000000007803110003000000000000000000000070351100000000000000000000000000900311000b000000000000009c03110002000000000000000000000070351100000000000000000000000000ac0311000b00000000000000b803110003000000000000000000000070351100000000000000000053657447656e65736973486561646572d003110009000000ef03110009000000f80311000300000052656c617948656164657200d003110009000000ef0311000900000056657269667950726f6f6600d003110009000000d903110007000000e00311000f0000004163636f756e744964526563656970744574685265636569707450726f6f6645746848656164657275363400000000003005110014000000000000004405110002000000000000000000000070351100000000000000000000000000740511000c000000000000008005110001000000000000000000000070351100000000000000000000000000980511000d00000000000000a805110001000000000000000000000070351100000000000000000000000000c00511001000000000000000d005110001000000000000000000000070351100000000000000000000000000e80511000d00000000000000f805110001000000000000000000000070351100000000000000000000000000100611001000000000000000f8051100010000000000000000000000703511000000000000000000000000002006110018000000000000007035110000000000000000000000000070351100000000000000000072657365745f67656e657369735f686561646572000000005a0611000600000000000000ef0311000900000000000000600611001200000000000000f80311000300000072656c61795f686561646572000000005a0611000600000000000000ef03110009000000636865636b5f72656365697074000000000000004e0611000c00000000000000e00311000f0000006368616c6c656e67655f68656164657200000000470611000700000000000000ef031100090000006164645f617574686f72697479000000000000003806110003000000000000003b0611000c00000072656d6f76655f617574686f72697479746f67676c655f636865636b5f617574686f72697469657377686f543a3a4163636f756e7449645f68656164657270726f6f665f7265636f726468656164657267656e657369735f646966666963756c747945746852656c6179000000000000e40811000b0000000000000000000000ef0311000900000000000000000000000000000000000000000000000000000000000000703511002c0911000000000000000000f008110001000000000000000000000000000000f80811000e0000000000000000000000060911000400000000000000000000000000000000000000000000000000000000000000703511000c09110000000000000000001c0911000100000000000000010000000000000024091100080000000101000000000000060911000400000000000000ef0311000900000000000000000000000000000000000000703511002c091100000000000000000070351100000000000000000000000000000000003c0911000f00000001010000000000000609110004000000000000004b0911000c00000000000000000000000000000000000000703511005809110000000000000000007035110000000000000000000000000000000000680911000e0000000000000000000000f8031100030000000000000000000000000000000000000000000000000000000000000070351100780911000000000000000000880911000100000000000000000000000000000090091100100000000000000000000000a0091100040000000000000000000000000000000000000000000000000000000000000070351100a409110000000000000000007035110000000000000000000100000000000000d82811000b0000000000000000000000b4091100110000000000000000000000000000000000000000000000000000000000000070351100c8091100000000000000000070351100000000000000000001000000426567696e48656164657200210a110029000000426573744865616465724861736848323536000034000000000000000100000073000000fb091100260000004865616465724f663400000000000000010000003700000048656164657244657461696c734f66426c6f636b44657461696c73003400000000000000010000003700000046696e616c697a654e756d626572000034000000000000000100000037000000d809110023000000436865636b417574686f726974696573626f6f6c340000000000000001000000c70000005665633c543a3a4163636f756e7449643e0000003400000000000000010000003e00000020426c6f636b2064656c617920666f7220766572696679207472616e73616374696f6e20496e666f206f6620746865206265737420626c6f636b2068656164657220666f72206e6f7720416e63686f7220626c6f636b207468617420776f726b732061732067656e6573697320626c6f636b0000230c110023000000f90b11002a0000002c2f11001e00000006000000320000004865616465722048617368202d204d49534d415443484544596f7572206163636f756e74206973206e6f74206f6e2074686520617574686f7269746965732145746852656c617920417574686f726974696573426c6f636b204e756d626572202d20544f4f20534d414c4c426567696e20486561646572202d204e4f54204558495354454450726576696f757320486561646572202d204e4f542045584953544544426c6f636b204e756d626572202d204d49534d415443484544446966666963756c747920566572696669636174696f6e202d204641494c454442657374204865616465722044657461696c202d204e4f54204558495354454450726576696f7573204865616465722044657461696c202d204e4f542045584953544544486561646572202d204e4f542045584953544544526c70204465636f6465202d204641494c45445665726966792050726f6f66202d204641494c454454726965204b6579202d204e4f542045584953544544446573657269616c697a652052656365697074202d204641494c4544696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64653a205f5f5068616e746f6d4974656d2073686f756c64206e6576657220626520757365642e2f55736572732f7861766965722f2e636172676f2f6769742f636865636b6f7574732f7061726974792d636f6d6d6f6e2d653537356438316432346139336539332f646639656562612f726c702f7372632f726c70696e2e7273460c11005a000000970100001d000000596f752063616e6e6f7420617070656e64206d6f7265206974656d73207468656e20796f7520657870656374210000005c0d11005b000000400100003a00000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c7565617373657274696f6e206661696c65643a20706f736974696f6e203c3d2073656c662e6275666665722e6c656e282900005c0d11005b00000074010000090000002f55736572732f7861766965722f2e636172676f2f6769742f636865636b6f7574732f7061726974792d636f6d6d6f6e2d653537356438316432346139336539332f646639656562612f726c702f7372632f73747265616d2e72736578706c696369742070616e69630000005c0d11005b000000300100000d000000e80d11005a00000016000000100000002f55736572732f7861766965722f2e636172676f2f6769742f636865636b6f7574732f7061726974792d636f6d6d6f6e2d653537356438316432346139336539332f646639656562612f726c702f7372632f696d706c732e7273617373657274696f6e206661696c65643a206b203c3d2073656c662e6c656e2829001d19110048000000e70a00000a0000001d19110048000000ed0a00000e000000940e110067000000440000000d0000002f55736572732f7861766965722f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d613766613535336561643633353531322f643263346230642f636f72652f73722d61726974686d657469632f7372632f62696775696e742e72730000000000617474656d707420746f20646976696465206279207a65726f63616e6e6f74206669742061206e756d62657220696e746f20753132380000340000000000000001000000480000003400000000000000010000008400000072656d696e646572206f6620646976206279206320697320616c77617973206c657373207468616e20633b20716564003900000008000000040000003a000000726573756c742063616e6e6f742066697420696e207531323800000034000000000000000100000035000000486f737420746f207761736d2076616c7565732061726520656e636f64656420636f72726563746c793b2071656400003400000000000000010000003500000052756e74696d65206d656d6f7279206578686175737465642e2041626f7274696e670000703511000000000038101100020000003a2063616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c756548617368206e6f7420657175616c53797374656d2073746174652063757272656e746c792070726576656e74732074686973207472616e73616374696f6e5472616e73616374696f6e20646f6573206e6f742068617665207265717569726564207065726d697373696f6e73496e76616c69645472616e73616374696f6e20637573746f6d206572726f725472616e73616374696f6e20776f756c642065786861757374732074686520626c6f636b206c696d6974735472616e73616374696f6e2068617320616e20616e6369656e7420626972746820626c6f636b5472616e73616374696f6e20686173206120626164207369676e61747572655472616e73616374696f6e206973206f757464617465645472616e73616374696f6e2077696c6c2062652076616c696420696e2074686520667574757265496e6162696c69747920746f2070617920736f6d6520666565732028652e672e206163636f756e742062616c616e636520746f6f206c6f77295472616e73616374696f6e2063616c6c206973206e6f74206578706563746564556e6b6e6f776e5472616e73616374696f6e20637573746f6d206572726f72436f756c64206e6f742066696e6420616e20756e7369676e65642076616c696461746f7220666f722074686520756e7369676e6564207472616e73616374696f6e436f756c64206e6f74206c6f6f6b757020696e666f726d6174696f6e20726571756972656420746f2076616c696461746520746865207472616e73616374696f6e0000000000000000617474656d707420746f20646976696465206279207a65726f000000cc1211006b000000580000002b0000002f55736572732f7861766965722f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d613766613535336561643633353531322f643263346230642f636f72652f73722d7072696d6974697665732f7372632f67656e657269632f6572612e7273696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f646500701311006b0000005a000000120000002f55736572732f7861766965722f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d613766613535336561643633353531322f643263346230642f636f72652f73722d73616e64626f782f7372632f2e2e2f776974686f75745f7374642e727300701311006b0000006800000012000000417574686f727368697020446964536574556e636c6573426162652045706f6368496e6465784261626520417574686f726974696573426162652047656e65736973536c6f74426162652043757272656e74536c6f74426162652052616e646f6d6e65737342616265204e65787452616e646f6d6e65737342616265205365676d656e74496e6465784261626520556e646572436f6e737472756374696f6e4261626520496e697469616c697a656462616265736c6f744241424520696e686572656e742064617461206e6f7420666f756e64746f6f206d616e7920696e737472756374696f6e73547269656420746f20736872696e6b20746f2061206c61726765722063617061636974794e6f6e2d656d7074792066756e6374696f6e20626f6479206578706563746564601511000f0000006f151100020000007115110003000000617373657274696f6e206661696c65643a20636f6e746578742e6672616d655f737461636b2e69735f656d7074792829417420696e737472756374696f6e202840293a2043616e2774206465636f6465207761736d20636f64654d6f64756c65206973206e6f742076616c69646d6f64756c65206465636c6172657320696e7465726e616c206d656d6f72796d756c7469706c65207461626c6573206465636c617265647461626c652065786365656473206d6178696d756d2073697a6520616c6c6f776564757365206f6620666c6f6174696e6720706f696e74207479706520696e2066756e6374696f6e20747970657320697320666f7262696464656e757365206f6620666c6f6174696e6720706f696e74207479706520696e206c6f63616c7320697320666f7262696464656e757365206f6620666c6f6174696e6720706f696e74207479706520696e20676c6f62616c7320697320666f7262696464656e67617320696e737472756d656e746174696f6e206661696c6564737461636b2068656967687420696e737472756d656e746174696f6e206661696c656463616c6c6465706c6f796465706c6f792066756e6374696f6e2069736e2774206578706f72746564756e6b6e6f776e206578706f72743a20657870656374696e67206f6e6c79206465706c6f7920616e642063616c6c2066756e6374696f6e7366756e6374696f6e206861732061206e6f6e2d6578697374656e7420747970656578706f72742072656665727320746f206e6f6e2d6578697374656e742066756e6374696f6e657870656374656420612066756e6374696f6e656e74727920706f696e7420706f696e747320746f20616e20696d706f727465642066756e6374696f6e656e74727920706f696e74206861732077726f6e67207369676e617475726563616c6c2066756e6374696f6e2069736e2774206578706f727465646572726f722073657269616c697a696e6720696e737472756d656e746564206d6f64756c6552657475726e207479706573206c656e6774682073686f756c642062652030206f722031436f6e7472616374204761735370656e74436f6e74726163742043757272656e745363686564756c65436f6e7472616374204163636f756e74436f756e74657200001d191100480000000e020000230000001d191100480000000f02000023000000617373657274696f6e206661696c65643a206d6964203c3d206c656ea0361100490000001000000028000000d4181100490000008e0200001d0000002f72757374632f646133363239623035663866316234323561373338626665396665396165646434376335343137612f7372632f6c6962636f72652f736c6963652f736f72742e72732f72757374632f646133363239623035663866316234323561373338626665396665396165646434376335343137612f7372632f6c6962636f72652f736c6963652f6d6f642e7273000000d418110049000000a100000030000000d418110049000000a400000030000000931b11001e000000b11b11001f00000066756e6374696f6e5f73656374696f6e5f6c656e20213d20303b2071656466756e6374696f6e5f73656374696f6e5f6c656e20213d20303b2066756e6374696f6e5f73656374696f6e5f6c656e203d3d20636f64655f73656374696f6e5f6c656e3b207165640000791b11001a000000541b11000a0000005e1b11001b00000073746172742066756e6374696f6e20657870656374656420746f20686176652074797065205b5d202d3e205b5d000000431b110011000000231b110020000000031b110020000000db1a1100280000007365676d656e74206f66667365742073686f756c642072657475726e2049333270617373697665206d656d6f7279207365676d656e747320617265206e6f7420737570706f727465647061737369766520656c656d656e74207365676d656e747320617265206e6f7420737570706f72746564746f6f206d616e79206d656d6f727920726567696f6e7320696e20696e6465782073706163653a20746f6f206d616e79207461626c657320696e20696e6465782073706163653a20747279696e6720746f20696d706f7274206d757461626c6520676c6f62616c206475706c6963617465206578706f72742046756e6374696f6e20232072656164696e672f76616c69646174696f6e206572726f723a204d697373696e6720626f647920666f722066756e6374696f6e206c656e677468206f662066756e6374696f6e2073656374696f6e206973202c207768696c65206c656e206f6620636f64652073656374696f6e206973206761736578745f7365745f73746f726167656578745f6765745f73746f726167656578745f63616c6c6578745f696e7374616e74696174656578745f72657475726e6578745f63616c6c65726578745f616464726573736578745f6761735f70726963656578745f6761735f6c6566746578745f62616c616e63656578745f76616c75655f7472616e736665727265646578745f72616e646f6d6578745f6e6f776578745f6d696e696d756d5f62616c616e63656578745f64697370617463685f63616c6c6578745f726573746f72655f746f6578745f736372617463685f73697a656578745f736372617463685f726561646578745f736372617463685f77726974656578745f6465706f7369745f6576656e746578745f7365745f72656e745f616c6c6f77616e63656578745f72656e745f616c6c6f77616e63656578745f7072696e746c6e6578745f626c6f636b5f6e756d62657254696d657374616d7020496e697469616c697a656400000000000000c41d11000e00000000000000d41d1100010000000000000000000000dc1d1100010000000000000000000000e41d1100060000000000000070351100000000000000000000000000ec1d1100010000000000000000000000f41d1100070000000000000070351100000000000000000000000000fc1d110001000000000000004e6577417574686f7269746965730000e32811000d000000531e11002400000050617573656400002c1e110027000000526573756d656400041e1100280000002043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e204e657720617574686f726974792073657420686173206265656e206170706c6965642e4772616e64706146696e616c6974792043757272656e7453657449644772616e64706146696e616c69747920536574496453657373696f6e4f6666656e636573205265706f72747342794b696e64496e646578000000000000f81e11000700000000000000001f1100020000000000000000000000101f110002000000000000004f6666656e636500c31f110004000000c71f11000e000000201f110055000000751f11004e00000020546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e6420286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4b696e644f706171756554696d65536c6f7453657373696f6e2053746f72656452616e676553657373696f6e2043757272656e74496e64657853657373696f6e205175657565644368616e67656453657373696f6e2044697361626c656456616c696461746f72730000000000582011000a00000000000000642011000100000000000000000000006c20110002000000000000004e657753657373696f6e0000402a11000c0000007c20110055000000d120110022000000204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f742074686520626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e00340000000000000001000000c8000000c900000083000000f320110000000000430000000400000004000000ca000000cb000000cc0000000000000084211100100000000000000070351100000000000000000000000000942111000100000000000000000000009c2111000f00000000000000ac211100010000000000000000000000b4211100010000000000000045787472696e73696353756363657373de2111002500000045787472696e7369634661696c656400d12111000d000000bc2111001500000020416e2065787472696e736963206661696c65642e44697370617463684572726f7220416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e52657175697265526f6f744f726967696e526571756972655369676e65644f726967696e426c6f636b46756c6c4261645369676e617475726543616e206e6f74206c6f6f6b7570526571756972654e6f4f726967696e00000000000000302211000c00000000000000703511000000000000000000000000002722110009000000000000007035110000000000000000000000000014221100130000000000000070351100000000000000000000000000032211001100000000000000703511000000000000000000000000004a2211000f0000000000000070351100000000000000000053797374656d2045787472696e736963436f756e7453797374656d20416c6c45787472696e7369637357656967687453797374656d20416c6c45787472696e736963734c656e53797374656d2045787472696e7369634461746153797374656d204576656e74436f756e7474696d737461703054696d657374616d7020696e686572656e742064617461206973206e6f742070726f76696465642e496e76616c69642074696d657374616d7020696e686572656e74206461746120656e636f64696e672e54696d657374616d7020446964557064617465436f756c64206e6f74206465636f64652072657175657374656420696e686572656e7420747970652142616c616e636573204e6578744665654d756c7469706c696572000000000000302411000d000000000000004024110001000000000000000000000070351100000000000000000042617463684578656375746564000000482411001e0000005665633c526573756c743c28292c2044697370617463684572726f723e3e3a6772616e6470615f617574686f7269746965734772616e64706146696e616c697479205374616c6c6564000000390000000800000004000000cd000000ce0000000000000000000000cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004772616e64706146696e616c6974792050656e64696e674368616e67654772616e64706146696e616c697479204e657874466f726365640000000000042611001200000000000000182611000100000000000000000000003026110001000000000000007265706f72745f6d69736265686176696f7200000000000051261100070000000000000058261100070000003826110019000000205265706f727420736f6d65206d69736265686176696f722e5f7265706f72745665633c75383e4772616e64706146696e616c697479000000000000d82811000b0000000000000000000000e32811000d0000000000000000000000000000000000000000000000000000000000000070351100f02811000000000000000000002911000400000000000000010000000000000020291100050000000000000000000000252911001b00000000000000000000000000000000000000000000000000000000000000703511004029110000000000000000005029110001000000000000000100000000000000582911000d0000000000000000000000652911002300000000000000000000000000000000000000000000000000000000000000703511008829110000000000000000009829110001000000000000000000000000000000a02911000a0000000000000000000000aa2911000e00000000000000000000000000000000000000000000000000000000000000703511004c2a11000000000000000000b829110001000000000000000000000000000000c0291100070000000000000000000000c7291100200000000000000000000000000000000000000000000000000000000000000070351100e82911000000000000000000f829110001000000000000000000000000000000002a11000c00000000000000000000000c2a1100050000000000000000000000000000000000000000000000000000000000000070351100142a11000000000000000000242a110002000000000000000100000000000000342a11000c00000001010000000000000c2a11000500000000000000402a11000c00000000000000000000000000000000000000703511004c2a110000000000000000005c2a1100010000000000000000000000417574686f726974696573417574686f726974794c6973743400000000000000010000003e000000042c11000b00000070351100000000000f2c110058000000672c110025000000537461746553746f72656453746174653c543a3a426c6f636b4e756d6265723e340000000000000001000000d0000000e02b11002400000050656e64696e674368616e676553746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e34000000000000000100000037000000af2b1100310000004e657874466f72636564543a3a426c6f636b4e756d626572802b11002f0000005374616c6c656428543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d6265722900340000000000000001000000370000005c2b11002400000043757272656e74536574496453657449640000003400000000000000010000003b000000d42a1100570000002b2b110031000000536574496453657373696f6e53657373696f6e496e64657834000000000000000100000037000000642a1100700000002041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f7220776869636820697473206d656d62657273207765726520726573706f6e7369626c652e20546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c69746965732920696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e20607472756560206966207765206172652063757272656e746c79207374616c6c65642e206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e2050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e205374617465206f66207468652063757272656e7420617574686f72697479207365742e20444550524543415445442054686973207573656420746f2073746f7265207468652063757272656e7420617574686f72697479207365742c20776869636820686173206265656e206d6967726174656420746f207468652077656c6c2d6b6e6f776e204752414e4450415f415554484f52495445535f4b455920756e686173686564206b65792e4772616e64706146696e616c6974792053746174653c7761736d3a73747269707065643ec02c11005a0000009e0000000d0000002f55736572732f7861766965722f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f74696e792d6b656363616b2d312e352e302f7372632f6c69622e7273000000000000010000000000000082800000000000008a8000000000008000800080000000808b800000000000000100008000000000818000800000008009800000000000808a00000000000000880000000000000009800080000000000a000080000000008b800080000000008b0000000000008089800000000000800380000000000080028000000000008080000000000000800a800000000000000a0000800000008081800080000000808080000000000080010000800000000008800080000000802f55736572732f7861766965722f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f74696e792d6b656363616b2d322e302e312f7372632f6c69622e7273617373657274696f6e206661696c65643a206473742e6c656e2829203c3d207372632e6c656e28290000e02d11005a000000520100000d000000416c69766520636f6e7472616374206f7220746f6d6273746f6e6520616c726561647920657869737473616c726561647920626f72726f776564616c7265616479206d757461626c7920626f72726f77656400003400000000000000010000008400000034000000000000000100000048000000636f6e74726163742073756273797374656d20726573756c74696e6720696e20706f73697469766520696d62616c616e636521002c2f11001e000000030000000a0000003c3a3a636f72653a3a6d6163726f733a3a70616e6963206d6163726f733e6d616b655f746f705f6672616d655f706f6c796d6f72706869632069732063616c6c6564207769746820656d707479206672616d6520737461636b000000d10000000c00000004000000d2000000746869732066756e6374696f6e2063616e27742062652063616c6c6564207769746820656d707479206672616d6520737461636b4d6973706c6163656420656c736520696e737472756374696f6e000010311100470000005731110005000000d4301100370000000b31110005000000a2301100170000009930110009000000ea3211001400000081301100180000009930110009000000ea32110014000000503011001d0000006d301100130000008030110001000000546f6f206c61726765206d656d6f727920616c69676e6d656e7420325e20286578706563746564206174206d6f73742029547279696e6720746f2075706461746520676c6f62616c20206f66207479706520547279696e6720746f20757064617465206c6f63616c20416e7953706563696669634300000004000000040000008b0000004c6162656c7320696e2062725f7461626c6520706f696e747320746f20626c6f636b206f6620646966666572656e742074797065733a2020616e6420496620626c6f636b20776974686f757420656c736520726571756972656420746f2068617665204e6f526573756c7420626c6f636b20747970652e20427574206974206861732020747970656c31110018000000843111000b000000556e657870656374656420737461636b20686569676874202c20657870656374656420547279696e6720746f2061636365737320706172656e74206672616d6520737461636b2076616c7565732e0000cc31110017000000e33111001600000045787065637465642076616c7565206f66207479706520206f6e20746f70206f6620737461636b2e20476f74200000000432110007000000537461636b3a2000000001008e3211002400000064321100060000006a3211000e0000007832110016000000403211002400000064321100060000006d6178696d756d206d656d6f72792073697a65206d757374206265206174206d6f7374202070616765736d6178696d756d206c696d697420206973206c657373207468616e206d696e696d756d20696e697469616c206d656d6f72792073697a65206d757374206265206174206d6f7374200000c432110026000000ea32110014000000547279696e6720746f20696e697469616c697a65207661726961626c65206f6620747970652020776974682076616c7565206f66207479706520496e69742065787072657373696f6e2073686f756c6420616c776179732062652077697468206c656e67746820324e6f6e20636f6e7374616e74206f70636f646520696e20696e697420657870729533110007000000a73311002200000095331100070000009c3311000b00000045787072657373696f6e20646f65736e277420656e647320776974682060656e6460206f70636f6465476c6f62616c20206973206d757461626c6520646f65736e277420657869737473206f72206e6f742079657420646566696e6564000000dc33110010000000ec3311000f0000004d656d6f727920617420696e6465782020646f65736e277420657869737473000c3411000f000000ec3311000f0000005461626c6520617420696e64657820002c34110012000000ec3311000f00000046756e6374696f6e20617420696e646578200000503411000e000000ec3311000f0000005479706520617420696e646578200000be34110010000000ec3311000f0000009034110010000000b03411000e0000009034110010000000a034110010000000457870656374656420676c6f62616c2020746f20626520696d6d757461626c6520746f206265206d757461626c65476c6f62616c20617420696e646578206e6f6e2d656d70747920737461636b2065787065637465640000f8341100200000001835110012000000747279696e6720746f206765742076616c756520617420706f736974696f6e20206f6e20737461636b206f662073697a6520636865636b656420636f75706c65206f66206c696e65732061626f7665005035110015000000657863656564656420737461636b206c696d69742000000070351100000000004572726f72000000430000000400000004000000d30000004c6f63616c732072616e6765206e6f7420696e2033322d6269742072616e6765c035110022000000e235110015000000f735110007000000547279696e6720746f20616363657373206c6f63616c207769746820696e64657820207768656e20746865726520617265206f6e6c7920206c6f63616c730000183611002d000000453611000c0000005136110003000000617373657274696f6e206661696c65643a2060286c656674203d3d20726967687429600a20206c6566743a2060602c0a2072696768743a2060603a205c3611003400000064657374696e6174696f6e20616e6420736f7572636520736c69636573206861766520646966666572656e74206c656e67746873a036110049000000180000000d0000002f72757374632f646133363239623035663866316234323561373338626665396665396165646434376335343137612f7372632f6c6962636f72652f6d6163726f732f6d6f642e72730041ecedc4000b0c8df27e9f003711004ce910000041f8edc4000b08000000000000000000b0b703046e616d6501a7b703b40500206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f31011e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f3102196578745f73746f726167655f6765745f76657273696f6e5f3103196578745f73746f726167655f7365745f76657273696f6e5f3104206578745f73746f726167655f6368696c645f726f6f745f76657273696f6e5f3105286578745f73746f726167655f6368696c645f73746f726167655f6b696c6c5f76657273696f6e5f3106206578745f73616e64626f785f6d656d6f72795f6765745f76657273696f6e5f31071d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f3108206578745f73616e64626f785f6d656d6f72795f7365745f76657273696f6e5f31091b6578745f73746f726167655f636c6561725f76657273696f6e5f310a1f6578745f73746f726167655f6368696c645f6765745f76657273696f6e5f310b216578745f73746f726167655f6368696c645f636c6561725f76657273696f6e5f310c1f6578745f73746f726167655f6368696c645f7365745f76657273696f6e5f310d206578745f73616e64626f785f6d656d6f72795f6e65775f76657273696f6e5f310e256578745f73616e64626f785f6d656d6f72795f74656172646f776e5f76657273696f6e5f310f216578745f73616e64626f785f696e7374616e74696174655f76657273696f6e5f31101c6578745f73616e64626f785f696e766f6b655f76657273696f6e5f3111276578745f73616e64626f785f696e7374616e63655f74656172646f776e5f76657273696f6e5f31121c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f31131c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f3114236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f3115286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f3116346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f3117286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f3118256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f31191a6578745f73746f726167655f726f6f745f76657273696f6e5f311a236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f311b226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f311c236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f311d1a6578745f73746f726167655f726561645f76657273696f6e5f311e226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f311f326578745f73746f726167655f626c616b65325f3235365f6f7264657265645f747269655f726f6f745f76657273696f6e5f3120296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f3121246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f3122286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f3123216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f3124376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f31251e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31261c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31271d6578745f68617368696e675f74776f785f36345f76657273696f6e5f3128196578745f6c6f6767696e675f6c6f675f76657273696f6e5f3129256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f312aa00173725f7072696d6974697665733a3a67656e657269633a3a626c6f636b3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073725f7072696d6974697665733a3a67656e657269633a3a626c6f636b3a3a426c6f636b3c4865616465722c45787472696e7369633e3e3a3a6465636f64653a3a68373961353262306435383239313334632b753c73725f7072696d6974697665733a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68653831616662363535303964623239612c6b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68333962326564663535616263616139382d0c5f5f727573745f616c6c6f632e9f013c73725f7072696d6974697665733a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68323230633161616134623735366632372f0e5f5f727573745f7265616c6c6f633030636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6864393134343761663135303635653432310e5f5f727573745f6465616c6c6f633248616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68303030306332386131333232646335383308727573745f6f6f6d3434616c6c6f633a3a7261775f7665633a3a63617061636974795f6f766572666c6f773a3a6864633064336637363762393965623565353273725f73616e64626f783a3a696d703a3a64697370617463685f7468756e6b3a3a68363633623931323562396633663031383693017375627374726174655f7072696d6974697665733a3a73616e64626f783a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72207375627374726174655f7072696d6974697665733a3a73616e64626f783a3a547970656456616c75653e3a3a6465636f64653a3a68396161333862386637396661343365643796017375627374726174655f7072696d6974697665733a3a73616e64626f783a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72207375627374726174655f7072696d6974697665733a3a73616e64626f783a3a547970656456616c75653e3a3a656e636f64655f746f3a3a6863356562613332353462326262626636382e636f72653a3a726573756c743a3a756e777261705f6661696c65643a3a6863333565646638366661313235616461394264617277696e69615f6574685f6261636b696e673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68623166636133343337343564356330613a4464617277696e69615f6574685f6261636b696e673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68343336633463373761626431666637393b7a3c64617277696e69615f6574685f6261636b696e673a3a5f5f476574427974655374727563744b746f6e52656465656d416464726573733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68623637613035333832333433306461363c437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68663263373563633166656536383565333d633c64617277696e69615f6574685f6261636b696e673a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68623931343039303666663261343636393e437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68333435633333363534633735313133333f4373725f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726561643a3a6836393833393332333639396365373763404c64617277696e69615f6574685f6261636b696e673a3a4d6f64756c653c543e3a3a70617273655f746f6b656e5f72656465656d5f70726f6f663a3a6835306434303838353461663538386230418a013c7375627374726174655f72756e74696d655f696e746572666163653a3a706173735f62793a3a436f6465633c543e206173207375627374726174655f72756e74696d655f696e746572666163653a3a706173735f62793a3a506173734279496d706c3c543e3e3a3a66726f6d5f6666695f76616c75653a3a68353033393939353339363231636135644292013c64617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6465706f7369745f696e746f5f6578697374696e673a3a6836383337333130333835333566363032437773726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6d75746174653a3a6832383531623735663930643064626534444a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6836343232623038636534313466313038454073726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6576656e745f696e64657865643a3a683334343866346364666331323364323946463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6835303432663734353961306266613231473d64617277696e69615f6b746f6e3a3a4d6f64756c653c543e3a3a7365745f667265655f62616c616e63653a3a6835653833623438613139613465346562487773726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6d75746174653a3a6865646434653530346134376263653162496b3c64617277696e69615f6574685f72656c61793a3a4d6f64756c653c543e2061732064617277696e69615f6574685f72656c61793a3a56657269667945746852656365697074733e3a3a7665726966795f726563656970743a3a68653235363934313066653261663536384a326574686162693a3a6576656e743a3a4576656e743a3a7369676e61747572653a3a68373037303332633935346439663939624b36636f72653a3a70616e69636b696e673a3a70616e69635f626f756e64735f636865636b3a3a68356634396331393731373637333366324c326574686162693a3a6576656e743a3a4576656e743a3a70617273655f6c6f673a3a68383433393836643566663431313534324d30636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68306635656135653663313436393938394e4d3c6574686162693a3a746f6b656e3a3a746f6b656e3a3a546f6b656e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68653839363066663261396138643233644f376574686162693a3a746f6b656e3a3a746f6b656e3a3a546f6b656e3a3a746f5f75696e743a3a683032303163376333626565646230336250317072696d69746976655f74797065733a3a553235363a3a6469765f6d6f643a3a683264323765366662623961366531643651386574686162693a3a746f6b656e3a3a746f6b656e3a3a546f6b656e3a3a746f5f62797465733a3a6830386462383035633932656632353764523773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830363139626436373531623464613435533664617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a6c65646765723a3a6838303735636339326235623636306331543d64617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a7570646174655f6c65646765723a3a683131373033616162646438316561663255463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a686139353431613438623830323930636256643c636f72653a3a697465723a3a61646170746572733a3a436c6f6e65643c493e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a666f6c643a3a683333376439646461616531623133396257783c73726d6c5f696e64696365733a3a616464726573733a3a416464726573733c4163636f756e7449642c4163636f756e74496e6465783e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6836666162303432313962663331393433587b3c73726d6c5f696e64696365733a3a616464726573733a3a416464726573733c4163636f756e7449642c4163636f756e74496e6465783e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6835343830616538666661656238623462594273726d6c5f636f6e7472616374733a3a72656e743a3a7472795f65766963745f6f725f616e645f7061795f72656e743a3a68363831363630386331646262386238625a7273726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a68386163303438383735363961646332395b3773726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a626c6f636b5f6e756d6265723a3a68396461636366643433353633373136615c89013c64617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a667265655f62616c616e63653a3a68663465366264616231333039623733305d90013c64617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a656e737572655f63616e5f77697468647261773a3a68393566373033366532383639383034315e85013c64617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a77697468647261773a3a68613433653534653731313031346361635f7773726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6d75746174653a3a683831643763666634323263643563336560437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6835663366383630326664376232366636617573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6830643937303238616665633935353966627573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6865396264663431616630336637626135637e3c73726d6c5f7472616e73616374696f6e5f7061796d656e743a3a4368617267655472616e73616374696f6e5061796d656e743c543e2061732073725f7072696d6974697665733a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6863363863393338383937353236383034645573726d6c5f7472616e73616374696f6e5f7061796d656e743a3a4368617267655472616e73616374696f6e5061796d656e743c543e3a3a636f6d707574655f6665653a3a6833333162636430386639333164376637658d013c64617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6465706f7369745f6372656174696e673a3a6836636666666130366565663836663032663573726d6c5f617574686f72736869703a3a4d6f64756c653c543e3a3a617574686f723a3a6830326363656365663533623630663735674873726d6c5f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6865306265663134393662633333346663685173726d6c5f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6862636463376363333532613934386238693673726d6c5f626162653a3a4d6f64756c653c543e3a3a646f5f696e697469616c697a653a3a68306538303031323133626335616330356a3773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68363539303139326662613339646538356b543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68356563346433386133346162663731636cb5017375627374726174655f636f6e73656e7375735f626162655f7072696d6974697665733a3a6469676573743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72207375627374726174655f636f6e73656e7375735f626162655f7072696d6974697665733a3a6469676573743a3a526177426162655072654469676573743e3a3a6465636f64653a3a68643130616637336363653332356563656d543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68343462323734396234323064346430646e3773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68323835666235666230343961313534656f6c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6835336163323465356562366464626436704b3c5b543b205f5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6830303931646635333935356336643039713673726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6c6f673a3a6865366661343333306433666436336235727573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6834663630393866653766313836386265733973726d6c5f626162653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6836363864313232333135623038616535744273726d6c5f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68333234666530373937376534323039657597013c73726d6c5f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578706563746564426c6f636b54696d6544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68353537633639383330333065386362647693013c73726d6c5f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a45706f63684475726174696f6e44656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683966326566613766323630393862383077b00173725f7072696d6974697665733a3a7472616e73616374696f6e5f76616c69646974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073725f7072696d6974697665733a3a7472616e73616374696f6e5f76616c69646974793a3a5472616e73616374696f6e56616c69646974794572726f723e3a3a656e636f64655f746f3a3a6838303265633339663131663632363365784b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6862613438653034366662636562626538797d7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c205230293e3a3a6465636f64653a3a68396337643562303964363336396530377a135f5f727573745f616c6c6f635f7a65726f65647b36636f72653a3a736c6963653a3a736c6963655f696e6465785f6f726465725f6661696c3a3a68336237363234366631623838313634367c2d616c6c6f633a3a7665633a3a5665633c543e3a3a726573697a653a3a68396261613862626632663164366131637d443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68363833626666626164326534326365347e463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68383731303835393437653663623066327f30636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68343766663637633063343232313562358001543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68333838363330383762623865373663668101543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68336635383530636231646433373735648201543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68346264353031663035396661393663658301483c5b543b205f5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68333565353936636630656565336639618401543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68393662666431666339623165353831388501543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68356363383033653365373262666438398601543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68363037366463353939356464613636328701543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683630666133646465383563343765343288016b6e6f64655f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72206e6f64655f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a68623832393364646530363464376664388901543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68366436353839383134653661376532338a01543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68616635306532353365663632366430398b01543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68663464656330626566653238323666638c01513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68323035666563383666383435353438348d01513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68393232303534336564363762333666628e01513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68623434666462303363633338643265358f013973726d6c5f636f6e7472616374733a3a7761736d3a3a636f64655f63616368653a3a6c6f61643a3a686461383230393962383537316665386690014273726d6c5f636f6e7472616374733a3a7761736d3a3a707265706172653a3a707265706172655f636f6e74726163743a3a68363035393761623138376530613433629101713c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68306532386138383965343631646332619201303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683333636536643631346262373635643493013a636f72653a3a666d743a3a6275696c646572733a3a44656275675374727563743a3a6669656c643a3a68326661313230313939366638633031309401303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683834663130616336356336336437636195013c73726d6c5f74696d657374616d703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a686234373965313636643932326135653796013e73726d6c5f74696d657374616d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a683335386234306462343966303437386497014773726d6c5f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6862623165366530643363393163653334980198013c73726d6c5f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d506572696f6444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686464656333393033343462353762343399013173726d6c5f74696d657374616d703a3a4d6f64756c653c543e3a3a6e6f773a3a68393734623236316234326639393534389a013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68313962653261366136333166626635649b013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68633166636232633731666439656437389c013773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68333033303030663366383336613464649d013773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68613931316530666164353135363762339e013773726d6c5f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68633830366233643461626437366236389f0130636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6831356632613661343762656639396333a001fe01616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a496e7465726e616c3e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3a3a696e736572743a3a6861666466386265636332353738393237a1014e6d65726b6c655f70617472696369615f747269653a3a747269653a3a4d65726b6c655061747269636961547269653a3a6465636f64655f6e6f64653a3a6839373436636435616663633435656365a20130726c703a3a726c70696e3a3a5061796c6f6164496e666f3a3a66726f6d3a3a6861336363333262653839343961323430a30132726c703a3a726c70696e3a3a526c703a3a61745f776974685f6f66667365743a3a6835613339623363363633623039303764a40129636f72653a3a70616e69636b696e673a3a70616e69633a3a6864626266646633326363383133353830a50130636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6833343963343839663962393534346136a601443c616c6c6f633a3a72633a3a52633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6839343837653132373564333230346236a70130636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6864376664633539343066656634366133a801443c616c6c6f633a3a72633a3a52633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6837643962636533383636376566316231a901496d65726b6c655f70617472696369615f747269653a3a747269653a3a4d65726b6c655061747269636961547269653a3a6765745f61743a3a6864343937393164383263663565336562aa013a6d65726b6c655f70617472696369615f747269653a3a64623a3a4d656d6f727944423a3a6765743a3a6864626137643563373762333434373663ab014173725f7072696d6974697665733a3a67656e657269633a3a656e636f64655f776974685f7665635f7072656669783a3a6832376264313835653361323236623565ac01723c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6866306234616338373738636535663262ad016e6e6f64655f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206e6f64655f72756e74696d653a3a43616c6c3e3a3a656e636f64655f746f3a3a6831356566396162666330636264643335ae016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6834366663333363616464626532316333af016c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6862323933666335333965336237313530b001713c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6833376661396563393364633433666461b101443c636f72653a3a666d743a3a417267756d656e747320617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6862373564353733326361656337663239b201303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6839623432393231623131346234326565b3012d636f72653a3a70616e69636b696e673a3a70616e69635f666d743a3a6835633130653033306535323763353830b401303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838656233323032653936356165383236b501703c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6838376361613434623761343666326131b60134636f72653a3a736c6963653a3a736c6963655f696e6465785f6c656e5f6661696c3a3a6833666361313033643935396566636366b701303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835343062336537383031356135353730b80130636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6830633430316436316539396430383939b9013773726d6c5f7375646f3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6830636163663332636138303032643862ba013973726d6c5f7375646f3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6834636638303966303433336264396431bb01613c73726d6c5f7375646f3a3a5f5f476574427974655374727563744b65793c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838363639326264656263613766306561bc0184013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f63616c6c65723a3a6834633565363838326531366437643137bd0184013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f72616e646f6d3a3a6837663635613864313663363736616331be018c013c73726d6c5f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e2061732073726d6c5f737570706f72743a3a7472616974733a3a52616e646f6d6e6573733c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a486173683e3e3a3a72616e646f6d3a3a6837326533373130643365653535326236bf012e636f72653a3a6f7074696f6e3a3a6578706563745f6661696c65643a3a6862623931376662653634356538646638c00184013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f72657475726e3a3a6861316534613939653731613937613035c10185013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f616464726573733a3a6832356263636639326230393865613862c20185013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f62616c616e63653a3a6838333534313364626139316638333663c30185013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f7072696e746c6e3a3a6833333539616565383261626661636237c40127636f72653a3a7374723a3a66726f6d5f757466383a3a6864333031653535393566316361363736c50186013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6761735f6c6566743a3a6830613930356364353839343164646330c60187013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6761735f70726963653a3a6830373563383931653835306432623339c70188013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f726573746f72655f746f3a3a6864666665363833366330666664323362c80189013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6765745f73746f726167653a3a6837383931316139333966653039383139c9017d3c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f73746f726167653a3a6830626238646136333364383664623839ca0189013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f696e7374616e74696174653a3a6862316461643831353033333034656365cb014d73726d6c5f636f6e7472616374733a3a657865633a3a457865637574696f6e436f6e746578743c542c562c4c3e3a3a696e7374616e74696174653a3a6832653034376231323532656235623638cc0189013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f7365745f73746f726167653a3a6832336565653261353330623164643436cd014b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6835353966383265663639636137326234ce01613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6831306332353439396131356564643636cf0148616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6866346133336538653831313836373162d0018a013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f626c6f636b5f6e756d6265723a3a6837656663383566656236666333326663d1018a013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f736372617463685f726561643a3a6862653831323664613431346466383832d2018a013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f736372617463685f73697a653a3a6865323738373232393132633334613130d3018b013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6465706f7369745f6576656e743a3a6835396433353032353538306133363530d4012d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6835356164613730633663613738303035d5018b013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f64697370617463685f63616c6c3a3a6837313336393365633866386232646337d60130636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6864393134343761663135303635653432d7018b013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f736372617463685f77726974653a3a6865376333313639376435313938343238d8017d3c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6761733a3a6836323235316562643964643533653166d90182013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f63616c6c3a3a6834313532636539353134356162306366da014673726d6c5f636f6e7472616374733a3a657865633a3a457865637574696f6e436f6e746578743c542c562c4c3e3a3a63616c6c3a3a6861656563656239623964393235396636db018f013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f76616c75655f7472616e736665727265643a3a6836646334363466653833653463396431dc0181013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6e6f773a3a6836363663353934323364633631623361dd018d013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f6d696e696d756d5f62616c616e63653a3a6865396333633065333336366336343130de0190013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f7365745f72656e745f616c6c6f77616e63653a3a6832326162313865643233306330383631df018c013c73726d6c5f636f6e7472616374733a3a7761736d3a3a72756e74696d653a3a456e762061732073726d6c5f636f6e7472616374733a3a7761736d3a3a656e765f6465663a3a46756e6374696f6e496d706c50726f76696465723c453e3e3a3a696d706c733a3a6578745f72656e745f616c6c6f77616e63653a3a6833633439653264303263646630666665e00184013c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f72656e745f616c6c6f77616e63653a3a6834373839663339616337663334333437e1013c73726d6c5f696e64696365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6836613566633536326134363562613963e20130636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6830356431656330366466323732613064e3013473726d6c5f696e64696365733a3a4d6f64756c653c543e3a3a656e756d5f7365743a3a6839313739363966366632643938343865e4017f3c73726d6c5f696e64696365733a3a4d6f64756c653c543e2061732073726d6c5f73797374656d3a3a4f6e4e65774163636f756e743c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6f6e5f6e65775f6163636f756e743a3a6861373933646561376161353366653463e5017573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6866313333363438613335313238623430e6012d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6832373131363665326531376163323763e70134636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6833306162353366303166656464636164e8012e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6862666462383462643265623762303330e9013c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6836343632313564363063323064386233ea0134636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6832303865396665653739333662343863eb012e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6831626665663735363839666534643532ec013c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6863656366663363333136623535656365ed0141616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365617263683a3a7365617263685f747265653a3a6833383565633063373738313733643130ee01b60173726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4c696e6b6167653c4b65793e3e3a3a656e636f64655f746f3a3a6861343861666561633031653237316134ef01ca0173726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e636f64654c696b654c696e6b6167653c504b65792c4e4b65792c4b65793e3e3a3a656e636f64655f746f3a3a6866306666396333353763653231366639f00184013c73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c473e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6835366461353064303061373935666335f1017d7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c205230293e3a3a6465636f64653a3a6863323337623930663162323935313839f2016e3c73726d6c5f636f6e7472616374733a3a436865636b426c6f636b4761734c696d69743c543e2061732073725f7072696d6974697665733a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6866643337383666656630376665373161f301323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6830643134323838313038383630343261f4017a73726d6c5f636f6e7472616374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073726d6c5f636f6e7472616374733a3a436f6e7472616374496e666f3c543e3e3a3a6465636f64653a3a6831623666343830663363626235396130f501a00173726d6c5f636f6e7472616374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073726d6c5f636f6e7472616374733a3a526177416c697665436f6e7472616374496e666f3c436f6465486173682c42616c616e63652c426c6f636b4e756d6265723e3e3a3a656e636f64655f746f3a3a6863353736623736636234396130386565f6017573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6865643861396437663364646234393565f7017773726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6d75746174653a3a6862343032653135613266626161623532f8013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6836623465326338346134656265633839f9013e73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6838306430666534393038636437313966fa016b3c73726d6c5f636f6e7472616374733a3a5f5f4765744279746553747275637447617350726963653c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838393065323635396636333063373033fb01713c73726d6c5f636f6e7472616374733a3a5f5f476574427974655374727563744163636f756e74436f756e7465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864643465303333303563303134633630fc01723c73726d6c5f636f6e7472616374733a3a5f5f4765744279746553747275637443757272656e745363686564756c653c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863373066646233396530373234653065fd017673726d6c5f636f6e7472616374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073726d6c5f636f6e7472616374733a3a5363686564756c653e3a3a656e636f64655f746f3a3a6864373136303361383961393261356262fe014773726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861663132633737343433326637386638ff0198013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b4761734c696d697444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863383661376231623836303938336265800297013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d617856616c756553697a6544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835346562346630666636333366626163810293013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6178446570746844656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833373031666661326636393836366631820296013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a43616c6c4261736546656544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862356634633838313361313931346136830296013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a436f6e747261637446656544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686130353839613431636536626437613984029d013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5472616e73616374696f6e4279746546656544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686636646335353838366163383239626585029a013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53757263686172676552657761726444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686430366634653834626637376537363686029c013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a52656e744465706f7369744f666673657444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835396638656566623537636461663634870296013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a52656e744279746546656544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683538656231303162333933396134326688029c013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53746f7261676553697a654f666673657444656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683239633936373739623133303030306489029e013c73726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5369676e6564436c61696d48616e646963617044656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68343061366532353865303536386561668a023773726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a626172655f63616c6c3a3a68373962616131396664366535396232668b023773726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a6761735f70726963653a3a68633864353234343538336163646162638c027373726d6c5f636f6e7472616374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073726d6c5f636f6e7472616374733a3a5363686564756c653e3a3a6465636f64653a3a68336437626236363262366232643033398d02743c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6d6d69743a3a68653632396337306430663837316534658e02583c6e6f64655f72756e74696d653a3a43616c6c2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68373362353431643639303938646362308f023873726d6c5f636f6e7472616374733a3a4d6f64756c653c543e3a3a726573746f72655f746f3a3a68353061303461373133616465356637639002613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6837613138313437323262316430613566910291013c64617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6d616b655f667265655f62616c616e63655f62653a3a6864316663356438343634653930336535920291013c73726d6c5f636f6e7472616374733a3a54726965496446726f6d506172656e74436f756e7465723c543e2061732073726d6c5f636f6e7472616374733a3a54726965496447656e657261746f723c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a747269655f69643a3a686432633733306563323866333334383693025d3c73726d6c5f636f6e7472616374733a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68626435323633636235313635636363309402437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6832336265393665613765386362613935950235636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a683530623231643261366666346639316196022f636f72653a3a666d743a3a6e756d3a3a696d703a3a666d745f7536343a3a683764306161366134626566616563383297024364617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e3a3a7365745f667265655f62616c616e63653a3a686562633637666539656437663465386598023a64617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a6b696c6c5f73746173683a3a686330333835663033646565356434396699026f73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68393162326330336137653131373132349a026f73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68306332643435376135363939396465349b027573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a68636466666535316661616661323364659c027573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a68366366323138373832376665616364379d023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68633933653639373164633835323931329e023864617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6c6f636b733a3a68323837343161373861333034323939329f024764617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e3a3a7365745f72657365727665645f62616c616e63653a3a6835343361313161326266353431333034a0024164617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6830323238613264356530396535343266a1024364617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6830323962613166303133663333363339a2026f3c64617277696e69615f62616c616e6365733a3a5f5f4765744279746553747275637456657374696e673c542c493e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833393932653139353362396130653034a3024c64617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861353234616638663430613265383930a40285013c64617277696e69615f62616c616e6365733a3a4d6f64756c653c542c493e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7472616e736665723a3a6863393938316337653534343835613061a5026f3c73726d6c5f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e2061732073726d6c5f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6863323337346132316637306162633238a602723c285475706c65456c656d656e74302c205475706c65456c656d656e7431292061732073725f7072696d6974697665733a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a6836326633353536326466326233626636a7023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6863646438653430383566393066353538a8023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6839303863386361613438366334343339a9023f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6831363039623264333135613731303361aa024f73726d6c5f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6830393062303464623462643631333337ab02303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838353637633663633639643630616239ac0223636f72653a3a666d743a3a77726974653a3a6835323233333030346531613737326232ad023a73726d6c5f7574696c6974793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6831666564636561313535396662396634ae02437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6832323538306264643830613765646339af02437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6836643639316539343134326339323332b0024a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6837346131653364663836633165353666b102463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6865306130613363373465653862656363b2024b3c5b543b205f5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6836373563646634656530316232613965b30281013c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6e74726163745f6578697374733a3a6861643561623163336132326231306561b4023173726d6c5f636f6e7472616374733a3a657865633a3a7472616e736665723a3a6865343337633231346538613539393262b502593c73726d6c5f636f6e7472616374733a3a7761736d3a3a5761736d566d2061732073726d6c5f636f6e7472616374733a3a657865633a3a566d3c543e3e3a3a657865637574653a3a6833643263313862333266633961323434b602783c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6d6d69743a3a6832356536393066356631656436356533b7024f73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e3a3a7365745f62616c616e63653a3a6862383464383461656136363531313263b80230636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6830663939663531323939383461663063b902437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6834663765383063393064326334353632ba02723c73725f7072696d6974697665733a3a67656e657269633a3a6469676573743a3a4469676573744974656d3c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6831343539613836333334353231383334bb0238636f72653a3a697465723a3a61646170746572733a3a70726f636573735f726573756c74733a3a6839303531363839373664323964646530bc029f0173725f6574685f7072696d6974697665733a3a726563656970743a3a5f494d504c5f524c505f4445434f4441424c455f464f525f4c6f67456e7472793a3a3c696d706c20726c703a3a7472616974733a3a4465636f6461626c6520666f722073725f6574685f7072696d6974697665733a3a726563656970743a3a4c6f67456e7472793e3a3a6465636f64653a3a6864373261656132306162666536626237bd028d0173725f6574685f7072696d6974697665733a3a6865616465723a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073725f6574685f7072696d6974697665733a3a6865616465723a3a4574684865616465723e3a3a656e636f64655f746f3a3a6864336434323464396238396366643737be026f6e6f64655f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206e6f64655f72756e74696d653a3a4576656e743e3a3a656e636f64655f746f3a3a6864366533356634616332386437643637bf028a0173725f6574685f7072696d6974697665733a3a6865616465723a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073725f6574685f7072696d6974697665733a3a6865616465723a3a4574684865616465723e3a3a6465636f64653a3a6838326531393035633438353939353834c002820164617277696e69615f6574685f72656c61793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722064617277696e69615f6574685f72656c61793a3a4574685265636569707450726f6f663e3a3a6465636f64653a3a6861643530623365323030353539313565c102820173726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654c696e6b65644d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6865646539666239623537323537316164c202820173726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654c696e6b65644d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6861363934383039393730313736623262c302437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6865363936306131316464396230646235c4023d64617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a7265776172645f62795f6964733a3a6864343132336365623864613465643030c5028a013c64617277696e69615f7374616b696e673a3a4d6f64756c653c543e2061732073726d6c5f73657373696f6e3a3a4f6e53657373696f6e456e64696e673c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6f6e5f73657373696f6e5f656e64696e673a3a6862336334326235643263396636303030c6023764617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a7374616b6572733a3a6830376532373435643063636236366234c7023b64617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a6d616b655f7061796f75743a3a6833626639393031653032376338303862c8023864617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a706f7765725f6f663a3a6866636361643032353964386237356236c902613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6834616530333833643234623330346539ca024673725f61726974686d657469633a3a68656c706572735f3132386269743a3a6d756c7469706c795f62795f726174696f6e616c3a3a6835663932626530343839623462616262cb023d73725f61726974686d657469633a3a68656c706572735f3132386269743a3a746f5f6269675f75696e743a3a6866353863323531313166633930663561cc023773725f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6d756c3a3a6838663463386330643733653233343530cd024b3c73725f61726974686d657469633a3a62696775696e743a3a42696755696e7420617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a6833383637313739383933393932303635ce02723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6865643430613331346132646164396235cf02880164617277696e69615f7374616b696e673a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722064617277696e69615f7374616b696e673a3a4578706f737572653c4163636f756e7449642c506f7765723e3e3a3a6465636f64653a3a6832616164646237313761316263623537d0023664617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a626f6e6465643a3a6833333739393736386339393830623662d102a60164617277696e69615f7374616b696e673a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722064617277696e69615f7374616b696e673a3a5374616b696e674c65646765723c4163636f756e7449642c52696e6742616c616e63652c4b746f6e42616c616e63652c4d6f6d656e743e3e3a3a6465636f64653a3a6832316563396536623062363230366537d2023264617277696e69615f6b746f6e3a3a4d6f64756c653c543e3a3a6c6f636b733a3a6833626566616131366630333732643930d3027573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6863366530643330646537376361613131d4023e64617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6837333866326165323464383335366534d5024064617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6831656635623236396532383764383138d6027b3c64617277696e69615f7374616b696e673a3a5f5f4765744279746553747275637443757272656e74457261506f696e74734561726e65643c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838646464323838626264343765393837d7026c3c64617277696e69615f7374616b696e673a3a5f5f476574427974655374727563745374616b6572733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838383137396362633865316461646163d8026f3c64617277696e69615f7374616b696e673a3a5f5f4765744279746553747275637456616c696461746f72733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861326533356235633361623963626266d9027a3c64617277696e69615f7374616b696e673a3a5f5f476574427974655374727563744d696e696d756d56616c696461746f72436f756e743c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864653966346563663564396261333766da024964617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6837353730396333333766376437316363db02a1013c64617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426f6e64696e674475726174696f6e496e45726144656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833333734643530633336323832323465dc029c013c64617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426f6e64696e674475726174696f6e44656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830663962623031353362663932646661dd029b013c64617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53657373696f6e7350657245726144656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835393063393136666338613164363539de024064617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a736c6173685f696e646976696475616c3a3a6835643364646265613937373334653030df027c3c64617277696e69615f6b746f6e3a3a4d6f64756c653c543e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a736c6173683a3a6865313430323039313737313932396538e0024a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6866343730353836393465633532316466e1025f3c64617277696e69615f7374616b696e673a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6830616435393632326535613330316266e2024364617277696e69615f7374616b696e673a3a4d6f64756c653c543e3a3a626f6e645f68656c7065725f696e5f72696e673a3a6866303232386331666431666532336338e30283013c64617277696e69615f6b746f6e3a3a4d6f64756c653c543e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a667265655f62616c616e63653a3a6861646466303761623163373239623132e4024364617277696e69615f7374616b696e673a3a696e666c6174696f6e3a3a636f6d707574655f6b746f6e5f72657475726e3a3a6861346462333562613534653032303732e5028a013c64617277696e69615f6b746f6e3a3a4d6f64756c653c543e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a656e737572655f63616e5f77697468647261773a3a6839666638393538653166386635346262e6027773726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6d75746174653a3a6862313264643436373139386332623366e7022e636f72653a3a736c6963653a3a6d656d6368723a3a6d656d6368723a3a6836373266616132383162643134646166e8027573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6836643932383030646163613130616661e9026b3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6862333832373832383762396436306436ea0287013c64617277696e69615f6b746f6e3a3a4d6f64756c653c543e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6465706f7369745f6372656174696e673a3a6836303336633336613961396233383562eb0230636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6830363461333261623261626634343230ec024373726d6c5f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6831346562386332343730653834353239ed024e73726d6c5f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861663363636132326461373439363666ee029f013c73726d6c5f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5265706f72744c6174656e637944656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832653636313461353535373030396165ef029c013c73726d6c5f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a57696e646f7753697a6544656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831313930353766653632316665396534f002523c73725f6574685f7072696d6974697665733a3a6572726f723a3a426c6f636b4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6864386635376261303337363834393931f10239636f72653a3a666d743a3a6275696c646572733a3a44656275675475706c653a3a6669656c643a3a6839646266353563626538306263666234f2024573726d6c5f636f6e7472616374733a3a7761736d3a3a707265706172653a3a436f6e74726163744d6f64756c653a3a6e65773a3a6864643562376637643537616233356436f302467061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a436f646553656374696f6e3a3a626f646965733a3a6836353233663735323330666236613134f40248616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6861653965626333346439376235313537f5023c7061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a66726f6d5f6d6f64756c653a3a6836373233383331363661653536393735f602537061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a4d6f64756c654275696c6465723c463e3a3a7265736f6c76655f747970655f7265663a3a6833626161343534633730646239333863f702a9017061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c7061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a4d6f64756c6553636166666f6c643e20666f72207061726974795f7761736d3a3a656c656d656e74733a3a6d6f64756c653a3a4d6f64756c653e3a3a66726f6d3a3a6838333738303434383733353337336535f80244707761736d5f7574696c733a3a6761733a3a436f756e7465723a3a66696e616c697a655f6d6574657265645f626c6f636b3a3a6865633061626239646638356339366335f9022d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6832623334646563633364343261613062fa02507061726974795f7761736d3a3a6275696c6465723a3a6d6f64756c653a3a4d6f64756c654275696c6465723c463e3a3a707573685f66756e6374696f6e3a3a6864323134336539333462336233313935fb0230636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6830313864623034353264346239656234fc023c707761736d5f7574696c733a3a737461636b5f6865696768743a3a696e6a6563745f6c696d697465723a3a6862343536393330393764663065346331fd026b3c7061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a53656374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6839333936633164333531386166356634fe023e6861736862726f776e3a3a7261773a3a5261775461626c653c543e3a3a726573657276655f7265686173683a3a6836666230346438316636643732646639ff024b636f72653a3a686173683a3a696d706c733a3a3c696d706c20636f72653a3a686173683a3a4861736820666f72205b545d3e3a3a686173683a3a68373363323737623831303531613863348003687072696d69746976655f74797065733a3a726c703a3a3c696d706c20726c703a3a7472616974733a3a4465636f6461626c6520666f72207072696d69746976655f74797065733a3a483235363e3a3a6465636f64653a3a683732383762656139623564366431356381035c726c703a3a696d706c733a3a3c696d706c20726c703a3a7472616974733a3a4465636f6461626c6520666f7220616c6c6f633a3a7665633a3a5665633c75383e3e3a3a6465636f64653a3a68323334316334666135396438663231388203303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68343161383933666164653930396431658303313c73747220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683332303861363539643762303131333584030a5f5f72675f616c6c6f6385030c5f5f72675f6465616c6c6f6386030c5f5f72675f7265616c6c6f638703115f5f72675f616c6c6f635f7a65726f6564880330636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a686332613562653833393839663234656389034573725f6574685f7072696d6974697665733a3a706f773a3a646966666963756c74795f746f5f626f756e646172795f6175783a3a68663032316665396263626238343530658a03663c73726d6c5f636f6e7472616374733a3a7761736d3a3a5761736d566d2061732073726d6c5f636f6e7472616374733a3a657865633a3a566d3c543e3e3a3a657865637574653a3a7b7b636c6f737572657d7d3a3a68653030353335343638396435376263668b034373725f6574685f7072696d6974697665733a3a6865616465723a3a4574684865616465723a3a73747265616d5f726c703a3a68623031306239623933363036353734328c0338726c703a3a73747265616d3a3a526c7053747265616d3a3a6e6f74655f617070656e6465643a3a68393262373363333064666638323937388d033a726c703a3a73747265616d3a3a4261736963456e636f6465723a3a656e636f64655f76616c75653a3a68316465303536623764386463666533658e034873725f6574685f7072696d6974697665733a3a6865616465723a3a4574684865616465723a3a72655f636f6d707574655f686173683a3a68333336303562346238323538373833388f034f3c74696e795f6b656363616b3a3a6b656363616b3a3a4b656363616b2061732074696e795f6b656363616b3a3a4861736865723e3a3a7570646174653a3a68376335326633376234356133626637369003513c74696e795f6b656363616b3a3a6b656363616b3a3a4b656363616b2061732074696e795f6b656363616b3a3a4861736865723e3a3a66696e616c697a653a3a683437323133393263343762393534393791033d73725f6574685f7072696d6974697665733a3a6865616465723a3a4574684865616465723a3a686173683a3a683062363433613337613164646338666592034273725f6574685f7072696d6974697665733a3a6865616465723a3a4574684865616465723a3a626172655f686173683a3a68616366366136643361346466613432379303303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686137356432653836613731346131363194030c436f72655f76657273696f6e950312436f72655f657865637574655f626c6f636b96037173726d6c5f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a696e697469616c697a655f626c6f636b3a3a683637396434383766623466323636636697033573726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a626c6f636b5f686173683a3a683635663462303763396639633838323498035b73725f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3235365f6f7264657265645f747269655f726f6f743a3a683934343534333663646631633764636299037973726d6c5f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a6170706c795f65787472696e7369635f776974685f6c656e3a3a68633931343235316134363466623739339a03363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a68663335373930366137663561336662329b034373726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a6e6f74655f66696e69736865645f65787472696e736963733a3a68373764343734396363643364613365309c033373726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a66696e616c697a653a3a68316563336334363565356432373263659d0315436f72655f696e697469616c697a655f626c6f636b9e03114d657461646174615f6d657461646174619f03483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6864373061656139333035373737626633a003683c73726d6c5f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6834336538333537616633653962643835a103683c73726d6c5f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6831316265663132653464316662346234a2031c426c6f636b4275696c6465725f6170706c795f65787472696e736963a3031b426c6f636b4275696c6465725f66696e616c697a655f626c6f636ba40320426c6f636b4275696c6465725f696e686572656e745f65787472696e73696373a5036f3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a6865613638366331343664386665643531a603613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6861376232623133396363363333346536a7033873726d6c5f74696d657374616d703a3a657874726163745f696e686572656e745f646174613a3a6866633763303330623136323965383732a8031c426c6f636b4275696c6465725f636865636b5f696e686572656e7473a9034b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6837663739336136303337336363623538aa0318426c6f636b4275696c6465725f72616e646f6d5f73656564ab032b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6eac03a5013c73725f7072696d6974697665733a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e2061732073725f7072696d6974697665733a3a7472616974733a3a436865636b61626c653c4c6f6f6b75703e3e3a3a636865636b3a3a6835636532623937636535313130393736ad03653c6e6f64655f72756e74696d653a3a43616c6c2061732073725f7072696d6974697665733a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6834346261313031663561626439653230ae035673725f7072696d6974697665733a3a7472616e73616374696f6e5f76616c69646974793a3a56616c69645472616e73616374696f6e3a3a636f6d62696e655f776974683a3a6830666565636231616532386665343363af034273726d6c5f73797374656d3a3a436865636b5765696768743c543e3a3a636865636b5f626c6f636b5f6c656e6774683a3a6837616361666261333239346463303166b0036c3c73726d6c5f696d5f6f6e6c696e653a3a4d6f64756c653c543e2061732073725f7072696d6974697665733a3a7472616974733a3a56616c6964617465556e7369676e65643e3a3a76616c69646174655f756e7369676e65643a3a6833653131343864643238623963643132b103214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b6572b2035173725f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7075626c69635f6b6579733a3a6837613530646261306265633666616163b3033b73726d6c5f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a69735f6f6e6c696e655f6175783a3a6839323237313231666161373861636264b4034d73725f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6574776f726b5f73746174653a3a6865633665653939306163383039386233b5033973726d6c5f73657373696f6e3a3a4d6f64756c653c543e3a3a63757272656e745f696e6465783a3a6866333133636137623331653265623035b6034a73725f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7369676e3a3a6862303639386132383766343761346364b70347636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207533323e3a3a666d743a3a6837306465663066386634306634383861b8035273725f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7375626d69745f7472616e73616374696f6e3a3a6834346562323432313965383133323133b9031e4772616e6470614170695f6772616e6470615f617574686f726974696573ba0315426162654170695f636f6e66696775726174696f6ebb031d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e6365bc0311436f6e7472616374734170695f63616c6cbd0318436f6e7472616374734170695f6765745f73746f72616765be03205472616e73616374696f6e5061796d656e744170695f71756572795f696e666fbf032153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b657973c003ad017375627374726174655f6170706c69636174696f6e5f63727970746f3a3a737232353531393a3a3c696d706c207375627374726174655f6170706c69636174696f6e5f63727970746f3a3a7472616974733a3a52756e74696d655075626c696320666f72207375627374726174655f7072696d6974697665733a3a737232353531393a3a5075626c69633e3a3a67656e65726174655f706169723a3a6832306661376636393531626433663539c1032d7072696d69746976655f74797065733a3a553235363a3a706f773a3a6830343031366563633336366561306361c203317072696d69746976655f74797065733a3a553235363a3a6469765f6d6f643a3a6866636334643535323030653038343533c303483c7072696d69746976655f74797065733a3a5532353620617320636f72653a3a6f70733a3a61726974683a3a4d756c3e3a3a6d756c3a3a6832343330653533356362373233383563c403633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a666f6c643a3a6866336261356365643133616131663534c503497061726974795f7363616c655f636f6465633a3a656e636f64655f617070656e643a3a657874726163745f6c656e6774685f646174613a3a6837306463343364633336613139393137c603463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6832333363383865346536393534633365c70330636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6837666333323132626332336137313338c8033973726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6836613839313264666364343735613339c9033b73726d6c5f73797374656d3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6833656337353463393039376135656432ca03663c73726d6c5f73797374656d3a3a5f5f476574427974655374727563744576656e74733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830633164343838393962393631363035cb034b73725f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6368616e6765735f726f6f743a3a6838353565623430626433366461383564cc035b3c73726d6c5f73797374656d3a3a4d6f64756c653c543e2061732073726d6c5f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6836336433363466363835326134353762cd033c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6861356432353565636134353837643639ce033d73726d6c5f617574686f72736869703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6835306362363539343065633465363634cf033f73726d6c5f617574686f72736869703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6865343462663030333032653762366434d003703c73726d6c5f617574686f72736869703a3a5f5f47657442797465537472756374446964536574556e636c65733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835623334353336356634656334366132d1033c73726d6c5f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6837323939646336396438633038333638d2033d73726d6c5f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a6e6f74655f617574686f72736869703a3a6836623166636637393066366661303138d3033e73726d6c5f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6835643866376566363138333034653137d403713c73726d6c5f696d5f6f6e6c696e653a3a5f5f47657442797465537472756374417574686f726564426c6f636b733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861653834376466393037376562626138d503753c73726d6c5f696d5f6f6e6c696e653a3a5f5f476574427974655374727563745265636569766564486561727462656174733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831333931646132636436323566383834d60348616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6865323539383330363733333863373738d7033a73726d6c5f73657373696f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6866343164613365613534643132313232d8033c73726d6c5f73657373696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6833626366613563343161666565393836d9034573726d6c5f73657373696f6e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6863366531616439353838313662396331da0399013c73726d6c5f73657373696f6e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a44454455505f4b45595f50524546495844656661756c74427974654765747465723c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834373863666533396333663438616533db03603c73726d6c5f737570706f72743a3a686173683a3a54776f783634436f6e6361742061732073726d6c5f737570706f72743a3a686173683a3a53746f726167654861736865723e3a3a686173683a3a6838303439656531343161353931343534dc038a013c73726d6c5f73657373696f6e3a3a4d6f64756c653c543e2061732073725f7072696d6974697665733a3a7472616974733a3a4f6e496e697469616c697a653c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6834666666363437653964306436393662dd03c7013c73726d6c5f6f6666656e6365733a3a4d6f64756c653c543e2061732073725f7374616b696e675f7072696d6974697665733a3a6f6666656e63653a3a5265706f72744f6666656e63653c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c542061732073726d6c5f6f6666656e6365733a3a54726169743e3a3a4964656e74696669636174696f6e5475706c652c4f3e3e3a3a7265706f72745f6f6666656e63653a3a6865666466363738313937373034613861de037573726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c2073726d6c5f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6831363663393734353539636236663461df03633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6832623638666332326335336636366461e0033b73726d6c5f6772616e6470613a3a4d6f64756c653c543e3a3a7363686564756c655f6368616e67653a3a6861313534623530393763326432303639e103633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6830363631353335366135366135663836e2034c73725f6574685f7072696d6974697665733a3a706f773a3a4574686173685061727469616c3a3a7665726966795f626c6f636b5f62617369633a3a6838663635353236343433303133353464e3034e73725f6574685f7072696d6974697665733a3a706f773a3a4574686173685061727469616c3a3a63616c63756c6174655f646966666963756c74793a3a6834613261653032346535663634343339e403483c7072696d69746976655f74797065733a3a5532353620617320636f72653a3a6f70733a3a61726974683a3a4d756c3e3a3a6d756c3a3a6838313561373561626638303832623361e5034164617277696e69615f6b746f6e3a3a4d6f64756c653c543e3a3a7365745f72657365727665645f62616c616e63653a3a6833666463663063643131346339306133e6033b64617277696e69615f6b746f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6864623164336261323866343864323532e7033d64617277696e69615f6b746f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6866643330653761396131333761343033e803713c64617277696e69615f6b746f6e3a3a5f5f47657442797465537472756374526573657276656442616c616e63653c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837613434336232663335653261636232e9037f3c64617277696e69615f6b746f6e3a3a4d6f64756c653c543e2061732073726d6c5f737570706f72743a3a7472616974733a3a43757272656e63793c3c542061732073726d6c5f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7472616e736665723a3a6830666461623931646164393539643533ea0309686173685f74657374eb0325616c6c6f633a3a666d743a3a666f726d61743a3a6833386338396239313961633066613366ec033a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6837353335393239643365316265303263ed033b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6863646432383536623235376538356663ee033a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a6863323531646635303263363738653135ef035b3c73725f7072696d6974697665733a3a4d756c74695369676e61747572652061732073725f7072696d6974697665733a3a7472616974733a3a5665726966793e3a3a7665726966793a3a6831663464656336633633393961363361f0036073725f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a736563703235366b315f65636473615f7265636f7665725f636f6d707265737365643a3a6864333561366263343635393132313339f1034e636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f72207533323e3a3a666d743a3a6865313862313762386433363932353363f20311727573745f626567696e5f756e77696e64f303313c5420617320636f72653a3a616e793a3a416e793e3a3a747970655f69643a3a6835383562613165383837356266653032f40343636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a77726974655f7072656669783a3a6835356339613633313639326430653163f5032c636f72653a3a666d743a3a466f726d61747465723a3a7061643a3a6831316464343631363466363566646663f6032e636f72653a3a7374723a3a736c6963655f6572726f725f6661696c3a3a6832633461363433363831366238646466f7034a3c636f72653a3a6f70733a3a72616e67653a3a52616e67653c4964783e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833336565626439343536326366333331f803323c6368617220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838313830613363643737663463643231f9033d636f72653a3a756e69636f64653a3a626f6f6c5f747269653a3a426f6f6c547269653a3a6c6f6f6b75703a3a6830323835336635666131626330373632fa034d636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207573697a653e3a3a666d743a3a68643436383733653535643534623265622e393436fb0334636f72653a3a666d743a3a417267756d656e7456313a3a73686f775f7573697a653a3a6864343231336330373035643638623632fc03453c636f72653a3a63656c6c3a3a426f72726f774572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833313065626135633066316663663632fd03483c636f72653a3a63656c6c3a3a426f72726f774d75744572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834656661613635666637306266383637fe03303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835643838336233343138366461646530ff03323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68393061633835336434313866383965388004323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68616638666364656434663864646631368104533c636f72653a3a666d743a3a6275696c646572733a3a5061644164617074657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6834633931643062303734623363623831820430636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a683735666139653130303132616230353383042f636f72653a3a666d743a3a57726974653a3a77726974655f636861723a3a686534386635626538346335643532343184042e636f72653a3a666d743a3a57726974653a3a77726974655f666d743a3a683238626362633366633365316638613385043a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a683332643038313232396165396564393386043b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a686263633333363538643066666364613887043a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a686338323132666639316431323535333688048001636f72653a3a7374723a3a7472616974733a3a3c696d706c20636f72653a3a736c6963653a3a536c696365496e6465783c7374723e20666f7220636f72653a3a6f70733a3a72616e67653a3a52616e67653c7573697a653e3e3a3a696e6465783a3a7b7b636c6f737572657d7d3a3a686634386561393131316632643930636489043e3c636f72653a3a666d743a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68343933616537346434343037363132668a04463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68383638393063623062666131666363348b0430636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68306435656261383633356430616530388c0430636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68626162663730343638666263356464348d044b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68626562316137346232313862636538338e04513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68366330643364636434663435353638628f045b3c6574686162693a3a706172616d5f747970653a3a706172616d5f747970653a3a506172616d5479706520617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6830626331646433343733383935393937900430636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a683762626232326561396335613764313291042b6574686162693a3a7574696c3a3a736c6963655f646174613a3a6835646136373066373131333166366634920468636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a683037646633356433663462643831643493042a6574686162693a3a6465636f6465723a3a6465636f64653a3a68373530613838306435343835613333649404306574686162693a3a6465636f6465723a3a6465636f64655f706172616d3a3a683765306137393965386234383738393595042e6574686162693a3a6465636f6465723a3a74616b655f62797465733a3a686438623133626365376562313333313596044d3c6574686162693a3a746f6b656e3a3a746f6b656e3a3a546f6b656e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a686538393630666632613961386432336497043c6574686162693a3a706172616d5f747970653a3a7772697465723a3a5772697465723a3a77726974653a3a686336366338323930616132643364653198044a3c616c6c6f633a3a737472696e673a3a537472696e6720617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68323437643231303532633135636633322e313130399904346574686162693a3a7369676e61747572653a3a66696c6c5f7369676e61747572653a3a68663139393734343132663730343537329a042f74696e795f6b656363616b3a3a6b656363616b3a3a6b656363616b663a3a68303365626639373561306166623036649b04463c657468626c6f6f6d3a3a426c6f6f6d20617320726c703a3a7472616974733a3a4465636f6461626c653e3a3a6465636f64653a3a68393730333131626362363361373366349c043d73726d6c5f6f6666656e6365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68383631353764326561393062346265349d04743c73726d6c5f6f6666656e6365733a3a5f5f476574427974655374727563745265706f72747342794b696e64496e6465783c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68643761313138353139623762653931649e046f73726d6c5f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68356439376463353163363063643763639f04613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6834363835626631356133616362633235a00468636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6831383235613165623564653664633561a104383c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a6863613739313934336533623237626161a204343c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a6866653762313161623633646163613534a304363c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a666c7573683a3a6836663735396261656232343133393737a404553c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833316131633662373930356430343361a504457061726974795f7761736d3a3a656c656d656e74733a3a7365676d656e743a3a446174615365676d656e743a3a76616c75653a3a6832613837386266356664323435323366a604303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831303933383764353636656565623664a704303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6839393439323037316463386536363636a804553c7061726974795f7761736d3a3a656c656d656e74733a3a74797065733a3a56616c75655479706520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6863633266383338646365316166363066a904553c7061726974795f7761736d3a3a656c656d656e74733a3a74797065733a3a426c6f636b5479706520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834373837383461636433343661323132aa04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832323037613462663464623930386438ab04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832343161643431366461643936396330ac04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835316361646335396463646665663662ad04443c7061726974795f7761736d3a3a696f3a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837376538393237316665353537376266ae04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833353362663638626533323965363937af04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834303036653564303630616264303734b004443c7072696d69746976655f74797065733a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6865363230633830616430363162373337b104687072696d69746976655f74797065733a3a726c703a3a3c696d706c20726c703a3a7472616974733a3a4465636f6461626c6520666f72207072696d69746976655f74797065733a3a553235363e3a3a6465636f64653a3a6838316334363432356237336135613234b204303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862383832663037326334653661373935b30433636f72653a3a6f7074696f6e3a3a4f7074696f6e3c26543e3a3a636c6f6e65643a3a6834386461636362396561396134376363b404453c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833336164656664313036323438643733b50440707761736d5f7574696c733a3a737461636b5f6865696768743a3a636f6d707574655f737461636b5f636f73743a3a6863343264343164356333306230623066b604533c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a737065635f657874656e643a3a6836646465616137363965343366626135b704323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6839323337643661326537366166373739b804593c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6866313639373236636435653135323339b90430636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6863633964316538386338396330363966ba043f707761736d5f7574696c733a3a737461636b5f6865696768743a3a7265736f6c76655f66756e635f747970653a3a6861386334633833363935343833363363bb0430636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6837356261343031366162333833623239bc0441707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a636f6d707574653a3a6835373561323837323836646134373830bd04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6866383932316433663062323133316233be045a3c707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a4672616d6520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6864306461643439653533313238356537bf04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835393831396135336639616164666532c0044b707761736d5f7574696c733a3a737461636b5f6865696768743a3a6d61785f6865696768743a3a537461636b3a3a706f705f76616c7565733a3a6834613962653235316638363162663962c10434636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6830626331343165333264313036646130c2042e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6837316330326435656332656435663463c3043c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6839353634303363316361656430313335c404406e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f73797374656d3a3a6861373939343034373338386232356532c504426e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f62616c616e6365733a3a6862313732303839346539366239373736c604416e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f696e64696365733a3a6832663135643464366630333831653061c7043e6e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6b746f6e3a3a6837333965356437633637326135356136c804416e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6772616e6470613a3a6835336134343861643766323537616632c904436e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f696d5f6f6e6c696e653a3a6830646233376661303964346532666636ca04426e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6f6666656e6365733a3a6863613563383231323962376266363638cb04416e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f73657373696f6e3a3a6832356630323561643036626530356337cc04416e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7374616b696e673a3a6838393837623265666631643633356530cd04436e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f636f6e7472616374733a3a6831383332373664623830366638656135ce043e6e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7375646f3a3a6863316532336636323065653834373239cf04416e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7574696c6974793a3a6838623666623561313735363134366233d004436e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6574685f72656c61793a3a6838343163386631336434303137326235d104456e6f64655f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6574685f6261636b696e673a3a6864323161623961653964373531623866d204613c64617277696e69615f6574685f72656c61793a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6831366663666334653139353030643537d30430636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6835656461303330386132336361386166d40435636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68306334303164363165393964303839392e32303237d5044064617277696e69615f6574685f72656c61793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6835373663363438343564316531333239d6044264617277696e69615f6574685f72656c61793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6862333934316533633131363035303766d704723c64617277696e69615f6574685f72656c61793a3a5f5f47657442797465537472756374417574686f7269746965733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832653563303239666466396636373536d804773c64617277696e69615f6574685f72656c61793a3a5f5f47657442797465537472756374436865636b417574686f7269746965733c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838626334643062643737636532343935d904753c64617277696e69615f6574685f72656c61793a3a5f5f4765744279746553747275637442657374486561646572486173683c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836383034363562313435616232646336da047f64617277696e69615f6574685f72656c61793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722064617277696e69615f6574685f72656c61793a3a426c6f636b44657461696c733e3a3a6465636f64653a3a6830326430303862633137383039633839db044a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6862653334326538303331616433363865dc043b64617277696e69615f6574685f72656c61793a3a4d6f64756c653c543e3a3a6865616465725f6f663a3a6833613266393233386533623065393530dd04613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6830343966643933336365386537353136de0432636f72653a3a736c6963653a3a726f746174653a3a7074725f726f746174653a3a6839623132633461333064376537393531df043a73725f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6c73747269703a3a6838316362626332633263346664363339e0043773725f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6164643a3a6835343134613335323564373736356362e1044473725f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6469763a3a7b7b636c6f737572657d7d3a3a6833373366636662626264306564373664e204303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832386664663333653065333463633862e304513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6864373837356362626365616234323930e4044673725f696f3a3a6d6973633a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7072696e745f757466383a3a6865373964303337353232313130636433e504323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6834316131663931336633633230356162e604683c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e697445787072206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6837623234363239356262666133643164e7046b3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6839353136613261323939323866613762e8047d3c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a436f756e7465644c6973745772697465723c492c543e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6839623036396233303130633331653563e9046f3c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a566172496e743332206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6833306230336431616633356261646563ea046f3c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a566172496e743634206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6836643932393430313536333233656261eb046c3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e697445787072206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6838353664323965666364616130376164ec046f3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6865313939653535623361623132626137ed04793c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a436f756e7465644c6973743c543e206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6863666663383663383131323663353838ee046b3c7061726974795f7761736d3a3a656c656d656e74733a3a6f70733a3a496e737472756374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6836353566666536393633386533646366ef0482017061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a3c696d706c207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a6520666f7220616c6c6f633a3a737472696e673a3a537472696e673e3a3a73657269616c697a653a3a6838333636653661303234323931376261f00486017061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a3c696d706c207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a6520666f7220616c6c6f633a3a737472696e673a3a537472696e673e3a3a646573657269616c697a653a3a6861313666633861363039336563623662f104323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6865646330646538303465646437363236f204783c7061726974795f7761736d3a3a656c656d656e74733a3a696d706f72745f656e7472793a3a526573697a61626c654c696d697473206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6833656161663234666537333732326466f3047c3c7061726974795f7761736d3a3a656c656d656e74733a3a696d706f72745f656e7472793a3a526573697a61626c654c696d697473206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6862383430643234353334393935613838f4046f3c7061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a53656374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6834643666313063303733336263616164f504397761736d695f76616c69646174696f6e3a3a76616c69646174655f6d656d6f72795f747970653a3a6835393166333466363536303438666162f604347761736d695f76616c69646174696f6e3a3a657870725f636f6e73745f747970653a3a6837626130333034636437613539363265f7044a7761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a737465703a3a6865623738336665303239653831643064f804473c7761736d695f76616c69646174696f6e3a3a4572726f7220617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6834393564643361653736353534393364f9042d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6833353536653234386131653761316634fa04743c7061726974795f7761736d3a3a656c656d656e74733a3a7072696d6974697665733a3a56617255696e743332206173207061726974795f7761736d3a3a656c656d656e74733a3a446573657269616c697a653e3a3a646573657269616c697a653a3a6834353534376634306366623731616131fb04713c7061726974795f7761736d3a3a656c656d656e74733a3a696e6465785f6d61703a3a496e6465784d61703c543e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6837626439353138653439613039353163fc04713c7061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a437573746f6d53656374696f6e206173207061726974795f7761736d3a3a656c656d656e74733a3a53657269616c697a653e3a3a73657269616c697a653a3a6866366330633632613536303064323965fd044b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6865306230623963383235653731356334fe044b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6865333338653331636132383033323137ff044b3c616c6c6f633a3a7665633a3a496e746f497465723c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68613039356530386565613464373939398005463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68383032356639393734303966626631628105457061726974795f7761736d3a3a656c656d656e74733a3a73656374696f6e3a3a53656374696f6e5265616465723a3a6e65773a3a683134343739656138363037323939333582052e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a686631316534346534393434343431336283053c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a686561363335303162633138646135656384053b636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a7b7b636c6f737572657d7d3a3a686532346530373563643831616231326385054c3c73726d6c5f737570706f72743a3a64656275673a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a68373839646234393261313332613537328605483c73726d6c5f737570706f72743a3a64656275673a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a686636613336373038366461663138303587053a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a686639663134636466653933626164616688053b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a686538386535343764333232323032343789053a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68396464376530316464336533333731628a05683c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a73697a655f68696e743a3a68303333313762653234646136393465368b05633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68323464393435313036643237306661628c053e636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723a3a6e74683a3a68396530646466383066336636353332368d053a73726d6c5f6772616e6470613a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68313034626564383032366339623932388e053c73726d6c5f6772616e6470613a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68633861313235353334653262313761308f05663c73726d6c5f6772616e6470613a3a5f5f4765744279746553747275637453746174653c543e2061732073726d6c5f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68363561366536373837346434626136359005483c7375627374726174655f696e686572656e74733a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68363862643038376532333839376636309105793c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f62616c616e63653a3a68316530326439613937383638396661399205793c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f73746f726167653a3a683936636530313033363832613031636393057b3c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f636f64655f686173683a3a686463313238313363373837353662346294057d3c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a636f6e74726163745f6578697374733a3a6839393533363333326533636230356363950580013c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4469726563744163636f756e7444622061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f72656e745f616c6c6f77616e63653a3a68626536396335333361653035313235349605723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68353066396136613031653334663532669705723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a683631613537383361643838646266646398057d3c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f62616c616e63653a3a686263386131633134353964333962633999057f3c73726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4f7665726c61794163636f756e7444623c543e2061732073726d6c5f636f6e7472616374733a3a6163636f756e745f64623a3a4163636f756e7444623c543e3e3a3a6765745f636f64655f686173683a3a68633332663962363539623233653931349a0537616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68336337643538383839626431356436369b053b636f72653a3a736c6963653a3a3c696d706c205b545d3e3a3a636f70795f66726f6d5f736c6963653a3a68303335363161363035333330376134659c05347761736d695f76616c69646174696f6e3a3a66756e633a3a706f705f76616c75653a3a68653363306137383837623136313035659d05347761736d695f76616c69646174696f6e3a3a66756e633a3a706f705f6c6162656c3a3a68636164656438616433343761353936339e05407761736d695f76616c69646174696f6e3a3a7574696c3a3a4c6f63616c733a3a747970655f6f665f6c6f63616c3a3a68343165343334383138666366663038329f05543c7761736d695f76616c69646174696f6e3a3a66756e633a3a537461636b56616c75655479706520617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862346631666362633637393438643934a005537761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f6c6f61643a3a6864663531353932353539393134623436a105547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f73746f72653a3a6865303936643831303930656261663463a205557761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f746573746f703a3a6835303437383136616337666530343539a305547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f72656c6f703a3a6832613965323562316130623364613531a405537761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f756e6f703a3a6835653965373661343630336535336431a505547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f62696e6f703a3a6866303333663033363963313964396639a605547761736d695f76616c69646174696f6e3a3a66756e633a3a46756e6374696f6e56616c69646174696f6e436f6e746578743a3a76616c69646174655f6376746f703a3a6832666335333238626436616265303764a70530636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6863633133613930653434346632386638a805303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6864326431623734353933336566633463a9054c3c7761736d695f76616c69646174696f6e3a3a737461636b3a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838646437383638376662663030306633aa05066d656d736574ab05066d656d637079ac05076d656d6d6f7665ad050462636d70ae05095f5f6173686c746933af05095f5f6c736872746933b005085f5f6d756c746933b105095f5f75646976746933b205095f5f756d6f64746933b3050c5f5f756469766d6f6474693400550970726f64756365727302086c616e6775616765010452757374000c70726f6365737365642d62790105727573746325312e34322e302d6e696768746c79202864613336323962303520323031392d31322d323929" - }, - "babe": { - "authorities": [] - }, - "balances": { - "balances": [ - [ - "5FpQFHfKd1xQ9HLZLQoG1JAQSCJoUEVBELnKsKNcuRLZejJR", - 20000000000000000 - ], - [ - "5HYm8iYoChXgmuJQNCNx6s7pFAG49QCNrYas4g1qxfTXGesG", - 20000000000000000 - ], - [ - "5CSU3LGFYvMvrGjxr6i47SKxCeMgW9aGMb11BRxCcFb2zFUQ", - 20000000000000000 - ], - [ - "5HYS2HXw1JPPFB6eGd2neWmpm3jFVnWXa65enT5hfQATqed6", - 20000000000000000 - ], - [ - "5FLa3kbhWMhCjeoEPFABmTNaZHtbQPYaQqr8Md8ZjT3GERUx", - 20000000000000000 - ], - [ - "5DoCYAGxUdBV8RfPDRKFAxRhV8dXRhUHyLvNCrc3ucrwky5r", - 20000000000000000 - ], - [ - "5HBiKfekeepHcBsn2xQ5LMQy6YwXzrdiXBv5BYdwm2hHoyvn", - 20000000000000000 - ], - [ - "5Copc6dgpCWNuVYGNc1hbDkzyuqoTuQpQCMktu3gBY4F5Ggn", - 20000000000000000 - ], - [ - "5FevDwdvhZjYkFt7TehCvBN62TLK1GZ9AfbyaUvAqrkcyYQ9", - 20000000000000000 - ], - [ - "5FX8P4VigxWQEVzBycVtqnx7DLsCGVKzVxeDWvMi6VNpRrhS", - 20000000000000000 - ], - [ - "5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY", - 1000000000000 - ], - [ - "5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc", - 1000000000000 - ] - ], - "vesting": [] - }, - "indices": { - "ids": [ - "5FpQFHfKd1xQ9HLZLQoG1JAQSCJoUEVBELnKsKNcuRLZejJR", - "5HYm8iYoChXgmuJQNCNx6s7pFAG49QCNrYas4g1qxfTXGesG", - "5CSU3LGFYvMvrGjxr6i47SKxCeMgW9aGMb11BRxCcFb2zFUQ", - "5HYS2HXw1JPPFB6eGd2neWmpm3jFVnWXa65enT5hfQATqed6", - "5FLa3kbhWMhCjeoEPFABmTNaZHtbQPYaQqr8Md8ZjT3GERUx", - "5DoCYAGxUdBV8RfPDRKFAxRhV8dXRhUHyLvNCrc3ucrwky5r", - "5HBiKfekeepHcBsn2xQ5LMQy6YwXzrdiXBv5BYdwm2hHoyvn", - "5Copc6dgpCWNuVYGNc1hbDkzyuqoTuQpQCMktu3gBY4F5Ggn", - "5FevDwdvhZjYkFt7TehCvBN62TLK1GZ9AfbyaUvAqrkcyYQ9", - "5FX8P4VigxWQEVzBycVtqnx7DLsCGVKzVxeDWvMi6VNpRrhS", - "5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY", - "5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc" - ] - }, - "kton": { - "balances": [ - [ - "5FpQFHfKd1xQ9HLZLQoG1JAQSCJoUEVBELnKsKNcuRLZejJR", - 10000000000 - ], - [ - "5HYm8iYoChXgmuJQNCNx6s7pFAG49QCNrYas4g1qxfTXGesG", - 10000000000 - ], - [ - "5CSU3LGFYvMvrGjxr6i47SKxCeMgW9aGMb11BRxCcFb2zFUQ", - 10000000000 - ], - [ - "5HYS2HXw1JPPFB6eGd2neWmpm3jFVnWXa65enT5hfQATqed6", - 10000000000 - ], - [ - "5FLa3kbhWMhCjeoEPFABmTNaZHtbQPYaQqr8Md8ZjT3GERUx", - 10000000000 - ], - [ - "5DoCYAGxUdBV8RfPDRKFAxRhV8dXRhUHyLvNCrc3ucrwky5r", - 10000000000 - ], - [ - "5HBiKfekeepHcBsn2xQ5LMQy6YwXzrdiXBv5BYdwm2hHoyvn", - 10000000000 - ], - [ - "5Copc6dgpCWNuVYGNc1hbDkzyuqoTuQpQCMktu3gBY4F5Ggn", - 10000000000 - ], - [ - "5FevDwdvhZjYkFt7TehCvBN62TLK1GZ9AfbyaUvAqrkcyYQ9", - 10000000000 - ], - [ - "5FX8P4VigxWQEVzBycVtqnx7DLsCGVKzVxeDWvMi6VNpRrhS", - 10000000000 - ], - [ - "5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY", - 1000000000000 - ], - [ - "5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc", - 1000000000000 - ] - ], - "vesting": [] - }, - "grandpa": { - "authorities": [] - }, - "imOnline": { - "keys": [] - }, - "session": { - "keys": [ - [ - "5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY", - { - "grandpa": "5FA9nQDVg267DEd8m1ZypXLBnvN7SFxYwV7ndqSYGiN9TTpu", - "babe": "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY", - "im_online": "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY" - } - ], - [ - "5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc", - { - "grandpa": "5GoNkf6WdbxCFnPdAnYYQyCjAKPJgLNxXwPjwTh6DGg6gN3E", - "babe": "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty", - "im_online": "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty" - } - ] - ] - }, - "staking": { - "validatorCount": 7, - "minimumValidatorCount": 2, - "invulnerables": [ - "5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY", - "5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc" - ], - "currentEra": 0, - "forceEra": "NotForcing", - "slashRewardFraction": 100000000, - "payoutFraction": 500000000, - "stakers": [ - [ - "5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY", - "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY", - 1000000000000, - "Validator" - ], - [ - "5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc", - "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty", - 1000000000000, - "Validator" - ] - ] - }, - "contracts": { - "currentSchedule": { - "version": 0, - "put_code_per_byte_cost": 1, - "grow_mem_cost": 1, - "regular_op_cost": 1, - "return_data_per_byte_cost": 1, - "event_data_per_byte_cost": 1, - "event_per_topic_cost": 1, - "event_base_cost": 1, - "call_base_cost": 135, - "instantiate_base_cost": 175, - "sandbox_data_read_cost": 1, - "sandbox_data_write_cost": 1, - "max_event_topics": 4, - "max_stack_height": 65536, - "max_memory_pages": 16, - "max_table_size": 16384, - "enable_println": true, - "max_subject_len": 32 - }, - "gasPrice": 1000 - }, - "sudo": { - "key": "5FpQFHfKd1xQ9HLZLQoG1JAQSCJoUEVBELnKsKNcuRLZejJR" - }, - "ethRelay": { - "checkAuthorities": true, - "authorities": [ - "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY", - "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty" - ], - "header": null, - "genesisDifficulty": 0 - }, - "ethBacking": { - "ringLocked": 2000000000000000000, - "ringRedeemAddress": "0xdbc888d701167cbfb86486c516aafbefc3a4de6e", - "ktonLocked": 50000000000000, - "ktonRedeemAddress": "0xdbc888d701167cbfb86486c516aafbefc3a4de6e", - "depositRedeemAddress": "0x6ef538314829efa8386fc43386cb13b4e0a67d1e" - } - } - } -} \ No newline at end of file diff --git a/node/cli/src/chain_spec.rs b/node/cli/src/chain_spec.rs deleted file mode 100644 index 511ca659e..000000000 --- a/node/cli/src/chain_spec.rs +++ /dev/null @@ -1,357 +0,0 @@ -// Copyright 2018-2019 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 . - -//! Substrate chain configurations. -pub use node_primitives::{AccountId, Balance, Signature}; -pub use node_runtime::GenesisConfig; - -use babe_primitives::AuthorityId as BabeId; -use chain_spec::ChainSpecExtension; -use grandpa_primitives::AuthorityId as GrandpaId; -use hex_literal::hex; -use im_online::sr25519::AuthorityId as ImOnlineId; -use node_runtime::{ - constants::currency::*, BalancesConfig, Block, ContractsConfig, EthBackingConfig, EthRelayConfig, IndicesConfig, - KtonConfig, SessionConfig, SessionKeys, StakerStatus, StakingConfig, SudoConfig, SystemConfig, WASM_BINARY, -}; -use primitives::{crypto::UncheckedInto, sr25519, Pair, Public}; -use serde::{Deserialize, Serialize}; -use sr_primitives::{ - traits::{IdentifyAccount, Verify}, - Perbill, -}; -use substrate_service::Properties; -use substrate_telemetry::TelemetryEndpoints; - -type AccountPublic = ::Signer; - -const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; - -/// Node `ChainSpec` extensions. -/// -/// Additional parameters for some Substrate core modules, -/// customizable from the chain spec. -#[derive(Default, Clone, Serialize, Deserialize, ChainSpecExtension)] -pub struct Extensions { - /// Block numbers with known hashes. - pub fork_blocks: client::ForkBlocks, -} - -/// Specialized `ChainSpec`. -pub type ChainSpec = substrate_service::ChainSpec; - -/// IceFrog testnet generator -pub fn icefrog_testnet_config() -> Result { - ChainSpec::from_json_bytes(&include_bytes!("../res/icefrog.json")[..]) -} - -fn session_keys(grandpa: GrandpaId, babe: BabeId, im_online: ImOnlineId) -> SessionKeys { - SessionKeys { - grandpa, - babe, - im_online, - } -} - -fn staging_testnet_config_genesis() -> GenesisConfig { - // stash, controller, session-key - // generated with secret: - // for i in 1 2 3 4 ; do for j in stash controller; do subkey inspect "$secret"/fir/$j/$i; done; done - // and - // for i in 1 2 3 4 ; do for j in session; do subkey --ed25519 inspect "$secret"//fir//$j//$i; done; done - - let initial_authorities: Vec<(AccountId, AccountId, GrandpaId, BabeId, ImOnlineId)> = vec![ - ( - // 5Fbsd6WXDGiLTxunqeK5BATNiocfCqu9bS1yArVjCgeBLkVy - hex!["9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12"].into(), - // 5EnCiV7wSHeNhjW3FSUwiJNkcc2SBkPLn5Nj93FmbLtBjQUq - hex!["781ead1e2fa9ccb74b44c19d29cb2a7a4b5be3972927ae98cd3877523976a276"].into(), - // 5Fb9ayurnxnaXj56CjmyQLBiadfRCqUbL2VWNbbe1nZU6wiC - hex!["9becad03e6dcac03cee07edebca5475314861492cdfc96a2144a67bbe9699332"].unchecked_into(), - // 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8 - hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(), - // 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8 - hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(), - ), - ( - // 5ERawXCzCWkjVq3xz1W5KGNtVx2VdefvZ62Bw1FEuZW4Vny2 - hex!["68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78"].into(), - // 5Gc4vr42hH1uDZc93Nayk5G7i687bAQdHHc9unLuyeawHipF - hex!["c8dc79e36b29395413399edaec3e20fcca7205fb19776ed8ddb25d6f427ec40e"].into(), - // 5EockCXN6YkiNCDjpqqnbcqd4ad35nU4RmA1ikM4YeRN4WcE - hex!["7932cff431e748892fa48e10c63c17d30f80ca42e4de3921e641249cd7fa3c2f"].unchecked_into(), - // 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ - hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(), - // 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ - hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(), - ), - ( - // 5DyVtKWPidondEu8iHZgi6Ffv9yrJJ1NDNLom3X9cTDi98qp - hex!["547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65"].into(), - // 5FeD54vGVNpFX3PndHPXJ2MDakc462vBCD5mgtWRnWYCpZU9 - hex!["9e42241d7cd91d001773b0b616d523dd80e13c6c2cab860b1234ef1b9ffc1526"].into(), - // 5E1jLYfLdUQKrFrtqoKgFrRvxM3oQPMbf6DfcsrugZZ5Bn8d - hex!["5633b70b80a6c8bb16270f82cca6d56b27ed7b76c8fd5af2986a25a4788ce440"].unchecked_into(), - // 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH - hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(), - // 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH - hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(), - ), - ( - // 5HYZnKWe5FVZQ33ZRJK1rG3WaLMztxWrrNDb1JRwaHHVWyP9 - hex!["f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663"].into(), - // 5EPQdAQ39WQNLCRjWsCk5jErsCitHiY5ZmjfWzzbXDoAoYbn - hex!["66bc1e5d275da50b72b15de072a2468a5ad414919ca9054d2695767cf650012f"].into(), - // 5DMa31Hd5u1dwoRKgC4uvqyrdK45RHv3CpwvpUC1EzuwDit4 - hex!["3919132b851ef0fd2dae42a7e734fe547af5a6b809006100f48944d7fae8e8ef"].unchecked_into(), - // 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x - hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(), - // 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x - hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(), - ), - ]; - - // generated with secret: subkey inspect "$secret"/fir - let root_key: AccountId = hex![ - // 5Ff3iXP75ruzroPWRP2FYBHWnmGGBSb63857BgnzCoXNxfPo - "9ee5e5bdc0ec239eb164f865ecc345ce4c88e76ee002e0f7e318097347471809" - ] - .into(); - - let endowed_accounts: Vec = vec![root_key.clone()]; - - darwinia_genesis(initial_authorities, root_key, Some(endowed_accounts), false) -} - -/// Staging testnet config. -pub fn staging_testnet_config() -> ChainSpec { - let boot_nodes = vec![]; - ChainSpec::from_genesis( - "Staging Testnet", - "staging_testnet", - staging_testnet_config_genesis, - boot_nodes, - Some(TelemetryEndpoints::new(vec![(STAGING_TELEMETRY_URL.to_string(), 0)])), - None, - None, - Default::default(), - ) -} -/// Helper function to generate a crypto pair from seed -pub fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -/// Helper function to generate an account ID from seed -pub fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} - -/// Helper function to generate stash, controller and session key from seed -pub fn get_authority_keys_from_seed(seed: &str) -> (AccountId, AccountId, GrandpaId, BabeId, ImOnlineId) { - ( - get_account_id_from_seed::(&format!("{}//stash", seed)), - get_account_id_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - ) -} - -/// Helper function to create GenesisConfig for darwinia -pub fn darwinia_genesis( - initial_authorities: Vec<(AccountId, AccountId, GrandpaId, BabeId, ImOnlineId)>, - root_key: AccountId, - endowed_accounts: Option>, - enable_println: bool, -) -> GenesisConfig { - let endowed_accounts: Vec = endowed_accounts.unwrap_or_else(|| { - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - ] - }); - - let eth_relay_authorities: Vec = vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - ]; - - const RING_ENDOWMENT: Balance = 20_000_000 * COIN; - const KTON_ENDOWMENT: Balance = 10 * COIN; - const STASH: Balance = 1000 * COIN; - - GenesisConfig { - babe: Some(Default::default()), - contracts: Some(ContractsConfig { - current_schedule: contracts::Schedule { - enable_println, // this should only be enabled on development chains - ..Default::default() - }, - gas_price: 1 * MICRO, - }), - grandpa: Some(Default::default()), - im_online: Some(Default::default()), - indices: Some(IndicesConfig { - ids: endowed_accounts - .iter() - .cloned() - .chain(initial_authorities.iter().map(|x| x.0.clone())) - .collect::>(), - }), - session: Some(SessionConfig { - keys: initial_authorities - .iter() - .map(|x| (x.0.clone(), session_keys(x.2.clone(), x.3.clone(), x.4.clone()))) - .collect::>(), - }), - sudo: Some(SudoConfig { key: root_key }), - system: Some(SystemConfig { - code: WASM_BINARY.to_vec(), - changes_trie_config: Default::default(), - }), - - balances: Some(BalancesConfig { - balances: endowed_accounts - .iter() - .cloned() - .map(|k| (k, RING_ENDOWMENT)) - .chain(initial_authorities.iter().map(|x| (x.0.clone(), STASH))) - .collect(), - vesting: vec![], - }), - kton: Some(KtonConfig { - balances: endowed_accounts - .iter() - .cloned() - .map(|k| (k, KTON_ENDOWMENT)) - .chain(initial_authorities.iter().map(|x| (x.0.clone(), STASH))) - .collect(), - vesting: vec![], - }), - staking: Some(StakingConfig { - current_era: 0, - validator_count: 7, - minimum_validator_count: 2, - stakers: initial_authorities - .iter() - .map(|x| (x.0.clone(), x.1.clone(), STASH, StakerStatus::Validator)) - .collect(), - invulnerables: initial_authorities.iter().map(|x| x.0.clone()).collect(), - slash_reward_fraction: Perbill::from_percent(10), - payout_fraction: Perbill::from_percent(50), - ..Default::default() - }), - eth_relay: Some(EthRelayConfig { - authorities: eth_relay_authorities, - ..Default::default() - }), - eth_backing: Some(EthBackingConfig { - ring_redeem_address: hex!["dbc888d701167cbfb86486c516aafbefc3a4de6e"].into(), - kton_redeem_address: hex!["dbc888d701167cbfb86486c516aafbefc3a4de6e"].into(), - deposit_redeem_address: hex!["6ef538314829efa8386fc43386cb13b4e0a67d1e"].into(), - ring_locked: 2_000_000_000 * COIN, - kton_locked: 50_000 * COIN, - ..Default::default() - }), - } -} - -/// Development config (single validator Alice) -pub fn development_config() -> ChainSpec { - fn development_config_genesis() -> GenesisConfig { - darwinia_genesis( - vec![get_authority_keys_from_seed("Alice")], - get_account_id_from_seed::("Alice"), - None, - true, - ) - } - - ChainSpec::from_genesis( - "Development", - "dev", - development_config_genesis, - vec![], - None, - None, - None, - Default::default(), - ) -} - -/// IceFrog local testnet config (multivalidator Alice + Bob) -pub fn local_testnet_config() -> ChainSpec { - fn icefrog_config_genesis() -> GenesisConfig { - darwinia_genesis( - vec![ - get_authority_keys_from_seed("Alice"), - get_authority_keys_from_seed("Bob"), - ], - hex!["a60837b2782f7ffd23e95cd26d1aa8d493b8badc6636234ccd44db03c41fcc6c"].into(), // 5FpQFHfKd1xQ9HLZLQoG1JAQSCJoUEVBELnKsKNcuRLZejJR - Some(vec![ - hex!["a60837b2782f7ffd23e95cd26d1aa8d493b8badc6636234ccd44db03c41fcc6c"].into(), - hex!["f29311a581558ded67b8bfd097e614ce8135f777e29777d07ec501adb0ddab08"].into(), - hex!["1098e3bf7b351d6210c61b05edefb3a2b88c9611db26fbed2c7136b6d8f9c90f"].into(), - hex!["f252bc67e45acc9b3852a0ef84ddfce6c9cef25193617ef1421c460ecc2c746f"].into(), - hex!["90ce56f84328b180fc55146709aa7038c18efd58f1f247410be0b1ddc612df27"].into(), - hex!["4ca516c4b95488d0e6e9810a429a010b5716168d777c6b1399d3ed61cce1715c"].into(), - hex!["e28573bb4d9233c799defe8f85fa80a66b43d47f4c1aef64bb8fffde1ecf8606"].into(), - hex!["20e2455350cbe36631e82ce9b12152f98a3738cb763e46e65d1a253806a26d1a"].into(), - hex!["9eccaca8a35f0659aed4df45455a855bcb3e7bff7bfc9d672b676bbb78988f0d"].into(), - hex!["98dba2d3252825f4cd1141ca4f41ea201a22b4e129a6c7253cea546dbb20e442"].into(), - ]), - true, - ) - } - - ChainSpec::from_genesis( - "Darwinia IceFrog Testnet", - "icefrog_testnet", - icefrog_config_genesis, - vec![], - Some(TelemetryEndpoints::new(vec![(STAGING_TELEMETRY_URL.to_string(), 0)])), - Some("DAR"), - { - let mut properties = Properties::new(); - - properties.insert("ss58Format".into(), 42.into()); - - properties.insert("tokenDecimals".into(), 9.into()); - properties.insert("tokenSymbol".into(), "IRING".into()); - properties.insert("ktonTokenDecimals".into(), 9.into()); - properties.insert("ktonTokenSymbol".into(), "IKTON".into()); - - Some(properties) - }, - Default::default(), - ) -} diff --git a/node/cli/src/cli.rs b/node/cli/src/cli.rs deleted file mode 100644 index 253dba8eb..000000000 --- a/node/cli/src/cli.rs +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright 2018-2019 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 darwinia_cli::{error, ExecutionStrategyParam, IntoExit, NoCustom, SharedParams, VersionInfo}; - -use client::ExecutionStrategies; -use darwinia_cli::{parse_and_prepare, AugmentClap, GetLogFilter, ParseAndPrepare}; -use log::info; -use structopt::{clap::App, StructOpt}; -use substrate_service::{AbstractService, Configuration, Roles as ServiceRoles}; -use tokio::{ - prelude::Future, - runtime::{Builder as RuntimeBuilder, Runtime}, -}; -use transaction_factory::RuntimeAdapter; - -use crate::{factory_impl::FactoryState, load_spec, service, ChainSpec}; - -/// Custom subcommands. -#[derive(Clone, Debug, StructOpt)] -pub enum CustomSubcommands { - /// The custom factory subcommmand for manufacturing transactions. - #[structopt( - name = "factory", - about = "Manufactures num transactions from Alice to random accounts. \ - Only supported for development or local testnet." - )] - Factory(FactoryCmd), -} - -impl GetLogFilter for CustomSubcommands { - fn get_log_filter(&self) -> Option { - None - } -} - -/// The `factory` command used to generate transactions. -/// Please note: this command currently only works on an empty database! -#[derive(Debug, StructOpt, Clone)] -pub struct FactoryCmd { - /// How often to repeat. This option only has an effect in mode `MasterToNToM`. - #[structopt(long = "rounds", default_value = "1")] - pub rounds: u64, - - /// MasterToN: Manufacture `num` transactions from the master account - /// to `num` randomly created accounts, one each. - /// - /// MasterTo1: Manufacture `num` transactions from the master account - /// to exactly one other randomly created account. - /// - /// MasterToNToM: Manufacture `num` transactions from the master account - /// to `num` randomly created accounts. - /// From each of these randomly created accounts manufacture - /// a transaction to another randomly created account. - /// Repeat this `rounds` times. If `rounds` = 1 the behavior - /// is the same as `MasterToN`.{n} - /// A -> B, A -> C, A -> D, ... x `num`{n} - /// B -> E, C -> F, D -> G, ...{n} - /// ... x `rounds` - /// - /// These three modes control manufacturing. - #[structopt(long = "mode", default_value = "MasterToN")] - pub mode: transaction_factory::Mode, - - /// Number of transactions to generate. In mode `MasterNToNToM` this is - /// the number of transactions per round. - #[structopt(long = "num", default_value = "8")] - pub num: u64, - - #[allow(missing_docs)] - #[structopt(flatten)] - pub shared_params: SharedParams, - - /// The means of execution used when calling into the runtime while importing blocks. - #[structopt( - long = "execution", - value_name = "STRATEGY", - possible_values = &ExecutionStrategyParam::variants(), - case_insensitive = true, - default_value = "NativeElseWasm" - )] - pub execution: ExecutionStrategyParam, -} - -impl AugmentClap for FactoryCmd { - fn augment_clap<'a, 'b>(app: App<'a, 'b>) -> App<'a, 'b> { - FactoryCmd::augment_clap(app) - } -} - -/// Parse command line arguments into service configuration. -pub fn run(args: I, exit: E, version: darwinia_cli::VersionInfo) -> error::Result<()> -where - I: IntoIterator, - T: Into + Clone, - E: IntoExit, -{ - type Config = Configuration<(), A, B>; - - match parse_and_prepare::(&version, "darwinia-node", args) { - ParseAndPrepare::Run(cmd) => cmd.run( - load_spec, - exit, - |exit, _cli_args, _custom_args, config: Config<_, _>| { - info!("{}", version.name); - info!("Version: {}", config.full_version()); - info!(" _____ _ _ "); - info!(" | __ \\ (_) (_) "); - info!(" | | | | __ _ _ ____ ___ _ __ _ __ _ "); - info!(" | | | |/ _` | '__\\ \\ /\\ / / | '_ \\| |/ _` |"); - info!(" | |__| | (_| | | \\ V V /| | | | | | (_| |"); - info!(" |_____/ \\__,_|_| \\_/\\_/ |_|_| |_|_|\\__,_|"); - info!("Chain specification: {}", config.chain_spec.name()); - info!("Node name: {}", config.name); - info!("Roles: {:?}", darwinia_cli::display_role(&config)); - let runtime = RuntimeBuilder::new() - .name_prefix("main-tokio-") - .build() - .map_err(|e| format!("{:?}", e))?; - match config.roles { - ServiceRoles::LIGHT => run_until_exit(runtime, service::new_light(config)?, exit), - _ => run_until_exit(runtime, service::new_full(config)?, exit), - } - }, - ), - - ParseAndPrepare::BuildSpec(cmd) => cmd.run::(load_spec), - ParseAndPrepare::ExportBlocks(cmd) => { - cmd.run_with_builder(|config: Config<_, _>| Ok(new_full_start!(config).0), load_spec, exit) - } - ParseAndPrepare::ImportBlocks(cmd) => { - cmd.run_with_builder(|config: Config<_, _>| Ok(new_full_start!(config).0), load_spec, exit) - } - ParseAndPrepare::PurgeChain(cmd) => cmd.run(load_spec), - ParseAndPrepare::RevertChain(cmd) => { - cmd.run_with_builder(|config: Config<_, _>| Ok(new_full_start!(config).0), load_spec) - } - ParseAndPrepare::CustomCommand(CustomSubcommands::Factory(cli_args)) => { - let mut config: Config<_, _> = - darwinia_cli::create_config_with_db_path(load_spec, &cli_args.shared_params, &version)?; - config.execution_strategies = ExecutionStrategies { - importing: cli_args.execution.into(), - block_construction: cli_args.execution.into(), - other: cli_args.execution.into(), - ..Default::default() - }; - - match ChainSpec::from(config.chain_spec.id()) { - Some(ref c) if c == &ChainSpec::Development || c == &ChainSpec::LocalTestnet => {} - _ => panic!("Factory is only supported for development and local testnet."), - } - - let factory_state = FactoryState::new(cli_args.mode.clone(), cli_args.num, cli_args.rounds); - - let service_builder = new_full_start!(config).0; - transaction_factory::factory::, _, _, _, _, _>( - factory_state, - service_builder.client(), - service_builder - .select_chain() - .expect("The select_chain is always initialized by new_full_start!; QED"), - ) - .map_err(|e| format!("Error in transaction factory: {}", e))?; - - Ok(()) - } - } -} - -fn run_until_exit(mut runtime: Runtime, service: T, e: E) -> error::Result<()> -where - T: AbstractService, - E: IntoExit, -{ - let (exit_send, exit) = exit_future::signal(); - - let informant = darwinia_cli::informant::build(&service); - runtime.executor().spawn(exit.until(informant).map(|_| ())); - - // we eagerly drop the service so that the internal exit future is fired, - // but we need to keep holding a reference to the global telemetry guard - let _telemetry = service.telemetry(); - - let service_res = { - let exit = e - .into_exit() - .map_err(|_| error::Error::Other("Exit future failed.".into())); - let service = service.map_err(|err| error::Error::Service(err)); - let select = service.select(exit).map(|_| ()).map_err(|(err, _)| err); - runtime.block_on(select) - }; - - exit_send.fire(); - - // TODO [andre]: timeout this future #1318 - let _ = runtime.shutdown_on_idle().wait(); - - service_res -} diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs deleted file mode 100644 index 7bf554096..000000000 --- a/node/cli/src/service.rs +++ /dev/null @@ -1,321 +0,0 @@ -// Copyright 2018-2019 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 . - -#![warn(unused_extern_crates)] - -//! Service implementation. Specialized wrapper over substrate service. - -use std::sync::Arc; - -use babe; -use client::{self, LongestChain}; -use grandpa::{self, FinalityProofProvider as GrandpaFinalityProofProvider}; -use inherents::InherentDataProviders; -use network::construct_simple_protocol; -use node_executor; -use node_primitives::Block; -use node_runtime::{GenesisConfig, RuntimeApi}; -use substrate_service::{config::Configuration, error::Error as ServiceError, AbstractService, ServiceBuilder}; -use transaction_pool::{self, txpool::Pool as TransactionPool}; - -use client::{Client, LocalCallExecutor}; -use client_db::Backend; -use network::NetworkService; -use node_executor::NativeExecutor; -use offchain::OffchainWorkers; -use primitives::Blake2Hasher; -use sr_primitives::traits::Block as BlockT; -use substrate_service::{NetworkStatus, Service}; - -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 -/// be able to perform chain operations. -macro_rules! new_full_start { - ($config:expr) => {{ - type RpcExtension = jsonrpc_core::IoHandler; - let mut import_setup = None; - let inherent_data_providers = inherents::InherentDataProviders::new(); - - let builder = substrate_service::ServiceBuilder::new_full::< - node_primitives::Block, - node_runtime::RuntimeApi, - node_executor::Executor, - >($config)? - .with_select_chain(|_config, backend| Ok(client::LongestChain::new(backend.clone())))? - .with_transaction_pool(|config, client| { - Ok(transaction_pool::txpool::Pool::new( - config, - transaction_pool::FullChainApi::new(client), - )) - })? - .with_import_queue(|_config, client, mut select_chain, _transaction_pool| { - let select_chain = select_chain - .take() - .ok_or_else(|| substrate_service::Error::SelectChainRequired)?; - let (grandpa_block_import, grandpa_link) = grandpa::block_import(client.clone(), &*client, select_chain)?; - let justification_import = grandpa_block_import.clone(); - - let (block_import, babe_link) = babe::block_import( - babe::Config::get_or_compute(&*client)?, - grandpa_block_import, - client.clone(), - client.clone(), - )?; - - let import_queue = babe::import_queue( - babe_link.clone(), - block_import.clone(), - Some(Box::new(justification_import)), - None, - client.clone(), - client, - inherent_data_providers.clone(), - )?; - - import_setup = Some((block_import, grandpa_link, babe_link)); - Ok(import_queue) - })? - .with_rpc_extensions(|client, pool, _backend| -> RpcExtension { node_rpc::create(client, pool) })?; - - (builder, import_setup, inherent_data_providers) - }}; -} - -/// Creates a full service from the configuration. -/// -/// We need to use a macro because the test suit doesn't work with an opaque service. It expects -/// concrete types instead. -macro_rules! new_full { - ($config:expr, $with_startup_data: expr) => {{ - use futures::sync::mpsc; - use network::DhtEvent; - - let (is_authority, force_authoring, name, disable_grandpa) = ( - $config.roles.is_authority(), - $config.force_authoring, - $config.name.clone(), - $config.disable_grandpa, - ); - - // sentry nodes announce themselves as authorities to the network - // and should run the same protocols authorities do, but it should - // never actively participate in any consensus process. - let participates_in_consensus = is_authority && !$config.sentry_mode; - - let (builder, mut import_setup, inherent_data_providers) = new_full_start!($config); - - // Dht event channel from the network to the authority discovery module. Use bounded channel to ensure - // back-pressure. Authority discovery is triggering one event per authority within the current authority set. - // This estimates the authority set size to be somewhere below 10 000 thereby setting the channel buffer size to - // 10 000. - let (dht_event_tx, _dht_event_rx) = mpsc::channel::(10_000); - - let service = builder - .with_network_protocol(|_| Ok(crate::service::NodeProtocol::new()))? - .with_finality_proof_provider(|client, backend| { - Ok(Arc::new(grandpa::FinalityProofProvider::new(backend, client)) as _) - })? - .with_dht_event_tx(dht_event_tx)? - .build()?; - - let (block_import, grandpa_link, babe_link) = import_setup - .take() - .expect("Link Half and Block Import are present for Full Services or setup failed before. qed"); - - ($with_startup_data)(&block_import, &babe_link); - - if participates_in_consensus { - let proposer = substrate_basic_authorship::ProposerFactory { - client: service.client(), - transaction_pool: service.transaction_pool(), - }; - - let client = service.client(); - let select_chain = service - .select_chain() - .ok_or(substrate_service::Error::SelectChainRequired)?; - - let babe_config = babe::BabeParams { - keystore: service.keystore(), - client, - select_chain, - env: proposer, - block_import, - sync_oracle: service.network(), - inherent_data_providers: inherent_data_providers.clone(), - force_authoring, - babe_link, - }; - - let babe = babe::start_babe(babe_config)?; - service.spawn_essential_task(babe); - } - - // if the node isn't actively participating in consensus then it doesn't - // need a keystore, regardless of which protocol we use below. - let keystore = if participates_in_consensus { - Some(service.keystore()) - } else { - None - }; - - let config = grandpa::Config { - // FIXME #1578 make this available through chainspec - gossip_duration: std::time::Duration::from_millis(333), - justification_period: 512, - name: Some(name), - observer_enabled: true, - keystore, - is_authority, - }; - - match (is_authority, disable_grandpa) { - (false, false) => { - // start the lightweight GRANDPA observer - service.spawn_task(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, - 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::run_grandpa_voter(grandpa_config)?); - } - (_, true) => { - grandpa::setup_disabled_grandpa(service.client(), &inherent_data_providers, service.network())?; - } - } - - Ok((service, inherent_data_providers)) - }}; - ($config:expr) => {{ - new_full!($config, |_, _| {}) - }}; -} - -#[allow(dead_code)] -type ConcreteBlock = node_primitives::Block; -#[allow(dead_code)] -type ConcreteClient = Client< - Backend, - LocalCallExecutor, NativeExecutor>, - ConcreteBlock, - node_runtime::RuntimeApi, ->; -#[allow(dead_code)] -type ConcreteBackend = Backend; - -/// A specialized configuration object for setting up the node.. -pub type NodeConfiguration = Configuration; - -/// Builds a new service for a full client. -pub fn new_full( - config: NodeConfiguration, -) -> Result< - Service< - ConcreteBlock, - ConcreteClient, - LongestChain, - NetworkStatus, - NetworkService::Hash>, - TransactionPool>, - OffchainWorkers< - ConcreteClient, - >::OffchainStorage, - ConcreteBlock, - >, - >, - ServiceError, -> { - new_full!(config).map(|(service, _)| service) -} - -/// Builds a new service for a light client. -pub fn new_light( - config: NodeConfiguration, -) -> Result { - type RpcExtension = jsonrpc_core::IoHandler; - let inherent_data_providers = InherentDataProviders::new(); - - let service = ServiceBuilder::new_light::(config)? - .with_select_chain(|_config, backend| Ok(LongestChain::new(backend.clone())))? - .with_transaction_pool(|config, client| { - Ok(TransactionPool::new( - config, - transaction_pool::FullChainApi::new(client), - )) - })? - .with_import_queue_and_fprb(|_config, client, backend, fetcher, _select_chain, _tx_pool| { - 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>( - client.clone(), - backend, - &*client, - Arc::new(fetch_checker), - )?; - - let finality_proof_import = grandpa_block_import.clone(); - let finality_proof_request_builder = finality_proof_import.create_finality_proof_request_builder(); - - let (babe_block_import, babe_link) = babe::block_import( - babe::Config::get_or_compute(&*client)?, - grandpa_block_import, - client.clone(), - client.clone(), - )?; - - let import_queue = babe::import_queue( - babe_link, - babe_block_import, - None, - Some(Box::new(finality_proof_import)), - client.clone(), - client, - inherent_data_providers.clone(), - )?; - - 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 _) - })? - .with_rpc_extensions(|client, pool, _backend| -> RpcExtension { node_rpc::create(client, pool) })? - .build()?; - - Ok(service) -} diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml deleted file mode 100644 index 2d87acf84..000000000 --- a/node/executor/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "node-executor" -version = "2.0.0" -authors = ["Parity Technologies "] -description = "Substrate node implementation in Rust." -edition = "2018" - -[dependencies] -substrate-executor = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -node-runtime = { path = "../runtime" } - - -[features] -wasmtime = [ - "substrate-executor/wasmtime", -] diff --git a/node/executor/src/lib.rs b/node/executor/src/lib.rs deleted file mode 100644 index fdb01beab..000000000 --- a/node/executor/src/lib.rs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2018-2019 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 `CodeExecutor` specialization which uses natively compiled runtime when the wasm to be -//! executed is equivalent to the natively compiled code. - -pub use substrate_executor::NativeExecutor; - -use substrate_executor::native_executor_instance; - -// Declare an instance of the native executor named `Executor`. Include the wasm binary as the -// equivalent wasm code. -native_executor_instance!( - pub Executor, - node_runtime::api::dispatch, - node_runtime::native_version -); diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml deleted file mode 100644 index 6ab380ded..000000000 --- a/node/primitives/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "node-primitives" -version = "2.0.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -primitives = { package = "substrate-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sr-primitives = { package = "sr-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } - -[dev-dependencies] -substrate-serializer = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -pretty_assertions = "0.6.1" - -[features] -default = ["std"] -std = [ - "primitives/std", - "sr-primitives/std", -] diff --git a/node/primitives/src/lib.rs b/node/primitives/src/lib.rs deleted file mode 100644 index 885ba72c4..000000000 --- a/node/primitives/src/lib.rs +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2018-2019 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 . - -//! Low-level types used throughout the Substrate code. - -#![warn(missing_docs)] -#![cfg_attr(not(feature = "std"), no_std)] - -use sr_primitives::{ - generic, - traits::{BlakeTwo256, IdentifyAccount, Verify}, - MultiSignature, OpaqueExtrinsic, -}; - -/// An index to a block. -pub type BlockNumber = u32; - -/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. -pub type Signature = MultiSignature; - -/// Some way of identifying an account on the chain. We intentionally make it equivalent -/// to the public key of our transaction signing scheme. -pub type AccountId = <::Signer as IdentifyAccount>::AccountId; - -/// The type for looking up accounts. We don't expect more than 4 billion of them, but you -/// never know... -pub type AccountIndex = u32; - -/// Balance of an account. -pub type Balance = u128; - -/// Type used for expressing timestamp. -pub type Moment = u64; - -/// Index of a transaction in the chain. -pub type Index = u32; - -/// A hash of some data used by the chain. -pub type Hash = primitives::H256; - -/// A timestamp: milliseconds since the unix epoch. -/// `u64` is enough to represent a duration of half a billion years, when the -/// time scale is milliseconds. -pub type Timestamp = u64; - -/// Digest item type. -pub type DigestItem = generic::DigestItem; -/// Header type. -pub type Header = generic::Header; -/// Block type. -pub type Block = generic::Block; -/// Block ID. -pub type BlockId = generic::BlockId; diff --git a/node/rpc-client/Cargo.toml b/node/rpc-client/Cargo.toml deleted file mode 100644 index f61e89646..000000000 --- a/node/rpc-client/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "node-rpc-client" -version = "2.0.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -env_logger = "0.7.0" -futures = "0.1.29" -hyper = "0.12.35" -jsonrpc-core-client = { version = "14.0.3", features = ["http", "ws"] } -log = "0.4.8" - -substrate-rpc = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", version = "2.0.0" } - -node-primitives = { path = "../primitives" } diff --git a/node/rpc-client/src/main.rs b/node/rpc-client/src/main.rs deleted file mode 100644 index 555b2412c..000000000 --- a/node/rpc-client/src/main.rs +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2019 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 . - -#![warn(missing_docs)] - -//! Example substrate RPC client code. -//! -//! This module shows how you can write a Rust RPC client that connects to a running -//! substrate node and use staticly typed RPC wrappers. - -use futures::Future; -use hyper::rt; -use jsonrpc_core_client::{transports::http, RpcError}; -use node_primitives::Hash; -use substrate_rpc::author::{hash::ExtrinsicOrHash, AuthorClient}; - -fn main() { - env_logger::init(); - - rt::run(rt::lazy(|| { - let uri = "http://localhost:9933"; - - http::connect(uri) - .and_then(|client: AuthorClient| remove_all_extrinsics(client)) - .map_err(|e| { - println!("Error: {:?}", e); - }) - })) -} - -/// Remove all pending extrinsics from the node. -/// -/// The example code takes `AuthorClient` and first: -/// 1. Calls the `pending_extrinsics` method to get all extrinsics in the pool. -/// 2. Then calls `remove_extrinsic` passing the obtained raw extrinsics. -/// -/// As the resul of running the code the entire content of the transaction pool is going -/// to be removed and the extrinsics are going to be temporarily banned. -fn remove_all_extrinsics(client: AuthorClient) -> impl Future { - client - .pending_extrinsics() - .and_then(move |pending| { - client.remove_extrinsic( - pending - .into_iter() - .map(|tx| ExtrinsicOrHash::Extrinsic(tx.into())) - .collect(), - ) - }) - .map(|removed| { - println!("Removed extrinsics: {:?}", removed); - }) -} diff --git a/node/rpc/Cargo.toml b/node/rpc/Cargo.toml deleted file mode 100644 index 907b46dbc..000000000 --- a/node/rpc/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "node-rpc" -version = "2.0.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -jsonrpc-core = "14.0.3" - -client = { package = "substrate-client", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -sr-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -srml-contracts-rpc = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -srml-transaction-payment-rpc = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -srml-system-rpc = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -transaction_pool = { package = "substrate-transaction-pool", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -node-primitives = { path = "../primitives" } -node-runtime = { path = "../runtime" } diff --git a/node/rpc/src/lib.rs b/node/rpc/src/lib.rs deleted file mode 100644 index 814e8f134..000000000 --- a/node/rpc/src/lib.rs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2019 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 collection of node-specific RPC methods. -//! -//! Since `substrate` core functionality makes no assumptions -//! about the modules used inside the runtime, so do -//! RPC methods defined in `substrate-rpc` crate. -//! It means that `core/rpc` can't have any methods that -//! need some strong assumptions about the particular runtime. -//! -//! The RPCs available in this crate however can make some assumptions -//! about how the runtime is constructed and what `SRML` modules -//! are part of it. Therefore all node-runtime-specific RPCs can -//! be placed here or imported from corresponding `SRML` RPC definitions. - -#![warn(missing_docs)] - -use std::sync::Arc; - -use node_primitives::{AccountId, Balance, Block, Index}; -use node_runtime::UncheckedExtrinsic; - -use sr_primitives::traits::ProvideRuntimeApi; -use transaction_pool::txpool::{ChainApi, Pool}; - -/// Instantiate all RPC extensions. -pub fn create(client: Arc, pool: Arc>) -> jsonrpc_core::IoHandler -where - C: ProvideRuntimeApi, - C: client::blockchain::HeaderBackend, - C: Send + Sync + 'static, - C::Api: srml_system_rpc::AccountNonceApi, - C::Api: srml_contracts_rpc::ContractsRuntimeApi, - C::Api: srml_transaction_payment_rpc::TransactionPaymentRuntimeApi, - P: ChainApi + Sync + Send + 'static, - M: jsonrpc_core::Metadata + Default, -{ - use srml_contracts_rpc::{Contracts, ContractsApi}; - use srml_system_rpc::{System, SystemApi}; - use srml_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; - - let mut io = jsonrpc_core::IoHandler::default(); - io.extend_with(SystemApi::to_delegate(System::new(client.clone(), pool))); - io.extend_with(ContractsApi::to_delegate(Contracts::new(client.clone()))); - io.extend_with(TransactionPaymentApi::to_delegate(TransactionPayment::new(client))); - io -} diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml deleted file mode 100644 index dab317113..000000000 --- a/node/runtime/Cargo.toml +++ /dev/null @@ -1,116 +0,0 @@ -[package] -name = "node-runtime" -version = "0.2.0" -authors = ["Darwinia Network "] -edition = "2018" - -[dependencies] -# crates.io -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -integer-sqrt = { version = "0.1.2" } -rustc-hex = { version = "2.0", optional = true } -safe-mix = { version = "1.0", default-features = false } -serde = { version = "1.0.101", optional = true } - -# github.com -authorship = { package = "srml-authorship", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -authority-discovery-primitives = { package = "substrate-authority-discovery-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } # staking tests needed -authority-discovery = { package = "srml-authority-discovery", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -babe = { package = "srml-babe", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -babe-primitives = { package = "substrate-consensus-babe-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -block-builder-api = { package = "substrate-block-builder-runtime-api", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -contracts = { package = "srml-contracts", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -contracts-rpc-runtime-api = { package = "srml-contracts-rpc-runtime-api", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -executive = { package = "srml-executive", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -finality-tracker = { package = "srml-finality-tracker", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -grandpa = { package = "srml-grandpa", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -indices = { package = "srml-indices", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -inherents = { package = "substrate-inherents", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -offchain-primitives = { package = "substrate-offchain-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -offences = { package = "srml-offences", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -randomness-collective-flip = { package = "srml-randomness-collective-flip", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -rstd = { package = "sr-std", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -session = { package = "srml-session", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false, features = ["historical"] } -sr-api = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default_features = false } -sr-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sr-staking-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -substrate-keyring = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", optional = true } -substrate-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -substrate-session = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sudo = { package = "srml-sudo", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -support = { package = "srml-support", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -system = { package = "srml-system", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -system-rpc-runtime-api = { package = "srml-system-rpc-runtime-api", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -timestamp = { package = "srml-timestamp", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -transaction-payment = { package = "srml-transaction-payment", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -transaction-payment-rpc-runtime-api = { package = "srml-transaction-payment-rpc-runtime-api", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -tx-pool-api = { package = "substrate-transaction-pool-runtime-api", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -utility = { package = "srml-utility", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -version = { package = "sr-version", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } - -# darwinia -balances = { package = "darwinia-balances", path = '../../srml/balances', default-features = false } -eth-relay = { package = "darwinia-eth-relay", path = "../../srml/eth-relay", default-features = false } -eth-backing = { package = "darwinia-eth-backing", path = "../../srml/eth-backing", default-features = false } -im-online = { package = "srml-im-online", path = "../../srml/im-online", default-features = false } -kton = { package = "darwinia-kton", path = '../../srml/kton', default-features = false } -node-primitives = { path = "../primitives", default-features = false } -staking = { package = "darwinia-staking", path = "../../srml/staking", default-features = false } - -[build-dependencies] -wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.2", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -[features] -default = ["std"] -std = [ - # crates.io - "codec/std", - "rustc-hex", - "safe-mix/std", - "serde", - - # github.com - "authorship/std", - "authority-discovery/std", - "authority-discovery-primitives/std", - "babe/std", - "babe-primitives/std", - "block-builder-api/std", - "contracts/std", - "contracts-rpc-runtime-api/std", - "executive/std", - "finality-tracker/std", - "grandpa/std", - "indices/std", - "inherents/std", - "offchain-primitives/std", - "offences/std", - "randomness-collective-flip/std", - "rstd/std", - "session/std", - "sr-api/std", - "sr-primitives/std", - "sr-staking-primitives/std", - "substrate-keyring", - "substrate-primitives/std", - "substrate-session/std", - "sudo/std", - "support/std", - "system/std", - "system-rpc-runtime-api/std", - "timestamp/std", - "transaction-payment/std", - "transaction-payment-rpc-runtime-api/std", - "tx-pool-api/std", - "utility/std", - "version/std", - - # darwinia - "balances/std", - "eth-relay/std", - "eth-backing/std", - "im-online/std", - "kton/std", - "node-primitives/std", - "staking/std", -] diff --git a/node/runtime/src/impls.rs b/node/runtime/src/impls.rs deleted file mode 100644 index dd847e772..000000000 --- a/node/runtime/src/impls.rs +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright 2019 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 . - -//! Some configurable implementations as associated type for the substrate runtime. - -use node_primitives::Balance; -use sr_primitives::{ - traits::{Convert, Saturating}, - weights::Weight, - Fixed64, Perbill, -}; -use support::traits::{Currency, Get, OnUnbalanced}; - -use crate::{Authorship, Balances, MaximumBlockWeight, NegativeImbalance, System}; - -pub struct Author; -impl OnUnbalanced for Author { - fn on_unbalanced(amount: NegativeImbalance) { - Balances::resolve_creating(&Authorship::author(), amount); - } -} - -/// Struct that handles the conversion of Balance -> `u64`. This is used for staking's election -/// calculation. -pub struct CurrencyToVoteHandler; - -impl CurrencyToVoteHandler { - fn factor() -> Balance { - //(Balances::total_issuance() / u64::max_value() as Balance).max(1) - 1 - } -} - -impl Convert for CurrencyToVoteHandler { - fn convert(x: Balance) -> u64 { - (x / Self::factor()) as u64 - } -} - -impl Convert for CurrencyToVoteHandler { - fn convert(x: u128) -> Balance { - x * Self::factor() - } -} - -/// Convert from weight to balance via a simple coefficient multiplication -/// The associated type C encapsulates a constant in units of balance per weight -pub struct LinearWeightToFee(rstd::marker::PhantomData); - -impl> Convert for LinearWeightToFee { - fn convert(w: Weight) -> Balance { - // substrate-node a weight of 10_000 (smallest non-zero weight) to be mapped to 10^7 units of - // fees, hence: - let coefficient = C::get(); - Balance::from(w).saturating_mul(coefficient) - } -} - -/// Update the given multiplier based on the following formula -/// -/// diff = (previous_block_weight - target_weight) -/// v = 0.00004 -/// next_weight = weight * (1 + (v . diff) + (v . diff)^2 / 2) -/// -/// Where `target_weight` must be given as the `Get` implementation of the `T` generic type. -/// https://research.web3.foundation/en/latest/polkadot/Token%20Economics/#relay-chain-transaction-fees -pub struct TargetedFeeAdjustment(rstd::marker::PhantomData); - -impl> Convert for TargetedFeeAdjustment { - fn convert(multiplier: Fixed64) -> Fixed64 { - let block_weight = System::all_extrinsics_weight(); - let max_weight = MaximumBlockWeight::get(); - let target_weight = (T::get() * max_weight) as u128; - let block_weight = block_weight as u128; - - // determines if the first_term is positive - let positive = block_weight >= target_weight; - let diff_abs = block_weight.max(target_weight) - block_weight.min(target_weight); - // diff is within u32, safe. - let diff = Fixed64::from_rational(diff_abs as i64, max_weight as u64); - let diff_squared = diff.saturating_mul(diff); - - // 0.00004 = 4/100_000 = 40_000/10^9 - let v = Fixed64::from_rational(4, 100_000); - // 0.00004^2 = 16/10^10 ~= 2/10^9. Taking the future /2 into account, then it is just 1 - // parts from a billionth. - let v_squared_2 = Fixed64::from_rational(1, 1_000_000_000); - - let first_term = v.saturating_mul(diff); - // It is very unlikely that this will exist (in our poor perbill estimate) but we are giving - // it a shot. - let second_term = v_squared_2.saturating_mul(diff_squared); - - if positive { - // Note: this is merely bounded by how big the multiplier and the inner value can go, - // not by any economical reasoning. - let excess = first_term.saturating_add(second_term); - multiplier.saturating_add(excess) - } else { - // Proof: first_term > second_term. Safe subtraction. - let negative = first_term - second_term; - multiplier - .saturating_sub(negative) - // despite the fact that apply_to saturates weight (final fee cannot go below 0) - // it is crucially important to stop here and don't further reduce the weight fee - // multiplier. While at -1, it means that the network is so un-congested that all - // transactions have no weight fee. We stop here and only increase if the network - // became more busy. - .max(Fixed64::from_rational(-1, 1)) - } - } -} diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs deleted file mode 100644 index 67cc5286f..000000000 --- a/node/runtime/src/lib.rs +++ /dev/null @@ -1,629 +0,0 @@ -// Copyright 2018-2019 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 . - -//! The Substrate runtime. This can be compiled with ``#[no_std]`, ready for Wasm. - -#![cfg_attr(not(feature = "std"), no_std)] -#![recursion_limit = "256"] - -/// Constant values used within the runtime. -pub mod constants; -/// Implementations of some helper traits passed into runtime modules as associated types. -pub mod impls; - -pub use contracts::Gas; -pub use timestamp::Call as TimestampCall; - -pub use balances::Call as BalancesCall; -pub use staking::StakerStatus; - -use grandpa::{fg_primitives, AuthorityList as GrandpaAuthorityList}; -use im_online::sr25519::AuthorityId as ImOnlineId; -use inherents::{CheckInherentsResult, InherentData}; -use node_primitives::{AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, Moment, Signature}; -use rstd::prelude::*; -use sr_api::impl_runtime_apis; -use sr_primitives::{ - create_runtime_str, generic, impl_opaque_keys, - traits::{self, BlakeTwo256, Block as BlockT, NumberFor, OpaqueKeys, SaturatedConversion, StaticLookup}, - transaction_validity::TransactionValidity, - weights::Weight, - ApplyResult, Perbill, -}; -use substrate_primitives::{ - u32_trait::{_1, _4}, - OpaqueMetadata, -}; -use support::{ - construct_runtime, parameter_types, - traits::{Currency, OnUnbalanced, Randomness, SplitTwoWays}, -}; -use system::offchain::TransactionSubmitter; -use transaction_payment_rpc_runtime_api::RuntimeDispatchInfo; -#[cfg(any(feature = "std", test))] -use version::NativeVersion; -use version::RuntimeVersion; - -use constants::{currency::*, time::*}; -use impls::{Author, CurrencyToVoteHandler, LinearWeightToFee, TargetedFeeAdjustment}; - -// Make the WASM binary available. -#[cfg(feature = "std")] -include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); -/// Runtime version. -pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("node"), - impl_name: create_runtime_str!("darwinia-node"), - authoring_version: 3, - spec_version: 83, - impl_version: 83, - apis: RUNTIME_API_VERSIONS, -}; - -/// Native version. -#[cfg(any(feature = "std", test))] -pub fn native_version() -> NativeVersion { - NativeVersion { - runtime_version: VERSION, - can_author_with: Default::default(), - } -} - -type NegativeImbalance = >::NegativeImbalance; -type DealWithFees = SplitTwoWays< - Balance, - NegativeImbalance, - _4, - MockTreasury, // 4 parts (80%) goes to the treasury. - _1, - Author, // 1 part (20%) goes to the block author. ->; - -pub struct MockTreasury; -impl OnUnbalanced for MockTreasury { - fn on_unbalanced(amount: NegativeImbalance) { - Balances::resolve_creating(&Sudo::key(), amount); - } -} - -parameter_types! { - pub const BlockHashCount: BlockNumber = 250; - 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; -} -impl system::Trait for Runtime { - type Origin = Origin; - type Call = Call; - type Index = Index; - type BlockNumber = BlockNumber; - type Hash = Hash; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = Indices; - type Header = generic::Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type MaximumBlockWeight = MaximumBlockWeight; - type MaximumBlockLength = MaximumBlockLength; - type AvailableBlockRatio = AvailableBlockRatio; - type Version = Version; -} - -impl utility::Trait for Runtime { - type Event = Event; - type Call = Call; -} - -parameter_types! { - pub const EpochDuration: u64 = EPOCH_DURATION_IN_SLOTS; - pub const ExpectedBlockTime: Moment = MILLISECS_PER_BLOCK; -} -impl babe::Trait for Runtime { - type EpochDuration = EpochDuration; - type ExpectedBlockTime = ExpectedBlockTime; - type EpochChangeTrigger = babe::ExternalTrigger; -} - -impl indices::Trait for Runtime { - type AccountIndex = AccountIndex; - type IsDeadAccount = Balances; - type ResolveHint = indices::SimpleResolveHint; - type Event = Event; -} - -parameter_types! { - // Develop - // pub const TransactionBaseFee: Balance = MICRO; - // pub const TransactionByteFee: Balance = MICRO; - // setting this to zero will disable the weight fee. - // pub const WeightFeeCoefficient: Balance = MICRO; - - // Production - pub const TransactionBaseFee: Balance = 1 * MICRO; - pub const TransactionByteFee: Balance = 10 * MICRO; - // setting this to zero will disable the weight fee. - pub const WeightFeeCoefficient: Balance = 50 * NANO; - - // for a sane configuration, this should always be less than `AvailableBlockRatio`. - pub const TargetBlockFullness: Perbill = Perbill::from_percent(25); -} -impl transaction_payment::Trait for Runtime { - type Currency = Balances; - type OnTransactionPayment = DealWithFees; - type TransactionBaseFee = TransactionBaseFee; - type TransactionByteFee = TransactionByteFee; - type WeightToFee = LinearWeightToFee; - type FeeMultiplierUpdate = TargetedFeeAdjustment; -} - -parameter_types! { - pub const MinimumPeriod: Moment = SLOT_DURATION / 2; -} -impl timestamp::Trait for Runtime { - type Moment = Moment; - type OnTimestampSet = Babe; - type MinimumPeriod = MinimumPeriod; -} - -impl_opaque_keys! { - pub struct SessionKeys { - pub grandpa: Grandpa, - pub babe: Babe, - pub im_online: ImOnline, - } -} - -parameter_types! { - pub const UncleGenerations: BlockNumber = 5; -} -impl authorship::Trait for Runtime { - type FindAuthor = session::FindAccountFromAuthorIndex; - type UncleGenerations = UncleGenerations; - type FilterUncle = (); - type EventHandler = (Staking, ImOnline); -} - -// NOTE: `SessionHandler` and `SessionKeys` are co-dependent: One key will be used for each handler. -// The number and order of items in `SessionHandler` *MUST* be the same number and order of keys in -// `SessionKeys`. -// TODO: Introduce some structure to tie these together to make it a bit less of a footgun. This -// should be easy, since OneSessionHandler trait provides the `Key` as an associated type. #2858 - -parameter_types! { - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(17); -} -impl session::Trait for Runtime { - type Event = Event; - type ValidatorId = ::AccountId; - type ValidatorIdOf = staking::StashOf; - type ShouldEndSession = Babe; - type OnSessionEnding = Staking; - type SessionHandler = ::KeyTypeIdProviders; - type Keys = SessionKeys; - type DisabledValidatorsThreshold = DisabledValidatorsThreshold; - type SelectInitialValidators = Staking; -} - -impl session::historical::Trait for Runtime { - type FullIdentification = staking::Exposure; - type FullIdentificationOf = staking::ExposureOf; -} - -parameter_types! { - // Develop - // pub const ContractTransferFee: Balance = MICRO; - // pub const ContractCreationFee: Balance = MICRO; - // pub const ContractTransactionBaseFee: Balance = MICRO; - // pub const ContractTransactionByteFee: Balance = MICRO; - // pub const ContractFee: Balance = MICRO; - // pub const TombstoneDeposit: Balance = MICRO; - // pub const RentByteFee: Balance = MICRO; - // pub const RentDepositOffset: Balance = MICRO; - // pub const SurchargeReward: Balance = MICRO; - - // Production - pub const ContractTransferFee: Balance = 1 * MICRO; - pub const ContractCreationFee: Balance = 1 * MICRO; - pub const ContractTransactionBaseFee: Balance = 1 * MICRO; - pub const ContractTransactionByteFee: Balance = 10 * MICRO; - pub const ContractFee: Balance = 1 * MICRO; - pub const TombstoneDeposit: Balance = 1 * COIN; - pub const RentByteFee: Balance = 1 * COIN; - pub const RentDepositOffset: Balance = 1000 * COIN; - pub const SurchargeReward: Balance = 150 * COIN; -} -impl contracts::Trait for Runtime { - type Currency = Balances; - type Time = Timestamp; - type Randomness = RandomnessCollectiveFlip; - type Call = Call; - type Event = Event; - type DetermineContractAddress = contracts::SimpleAddressDeterminator; - type ComputeDispatchFee = contracts::DefaultDispatchFeeComputor; - type TrieIdGenerator = contracts::TrieIdFromParentCounter; - type GasPayment = (); - type RentPayment = (); - type SignedClaimHandicap = contracts::DefaultSignedClaimHandicap; - type TombstoneDeposit = TombstoneDeposit; - type StorageSizeOffset = contracts::DefaultStorageSizeOffset; - type RentByteFee = RentByteFee; - type RentDepositOffset = RentDepositOffset; - type SurchargeReward = SurchargeReward; - type TransferFee = ContractTransferFee; - type CreationFee = ContractCreationFee; - type TransactionBaseFee = ContractTransactionBaseFee; - type TransactionByteFee = ContractTransactionByteFee; - type ContractFee = ContractFee; - type CallBaseFee = contracts::DefaultCallBaseFee; - type InstantiateBaseFee = contracts::DefaultInstantiateBaseFee; - type MaxDepth = contracts::DefaultMaxDepth; - type MaxValueSize = contracts::DefaultMaxValueSize; - type BlockGasLimit = contracts::DefaultBlockGasLimit; -} - -impl sudo::Trait for Runtime { - type Event = Event; - type Proposal = Call; -} - -type SubmitTransaction = TransactionSubmitter; -parameter_types! { - pub const SessionDuration: BlockNumber = SESSION_DURATION; -} -impl im_online::Trait for Runtime { - type AuthorityId = ImOnlineId; - type Event = Event; - type Call = Call; - type SubmitTransaction = SubmitTransaction; - type SessionDuration = SessionDuration; - type ReportUnresponsiveness = Offences; -} - -impl offences::Trait for Runtime { - type Event = Event; - type IdentificationTuple = session::historical::IdentificationTuple; - type OnOffenceHandler = Staking; -} - -impl grandpa::Trait for Runtime { - type Event = Event; -} - -parameter_types! { - pub const WindowSize: BlockNumber = 101; - pub const ReportLatency: BlockNumber = 1000; -} -impl finality_tracker::Trait for Runtime { - type OnFinalizationStalled = Grandpa; - type WindowSize = WindowSize; - type ReportLatency = ReportLatency; -} - -impl system::offchain::CreateTransaction for Runtime { - type Public = ::Signer; - type Signature = Signature; - - fn create_transaction>( - call: Call, - public: Self::Public, - account: AccountId, - index: Index, - ) -> Option<(Call, ::SignaturePayload)> { - let period = 1 << 8; - let current_block = System::block_number().saturated_into::(); - let tip = 0; - let extra: SignedExtra = ( - system::CheckVersion::::new(), - system::CheckGenesis::::new(), - system::CheckEra::::from(generic::Era::mortal(period, current_block)), - system::CheckNonce::::from(index), - system::CheckWeight::::new(), - transaction_payment::ChargeTransactionPayment::::from(tip), - Default::default(), - ); - let raw_payload = SignedPayload::new(call, extra).ok()?; - let signature = F::sign(public, &raw_payload)?; - let address = Indices::unlookup(account); - let (call, extra, _) = raw_payload.deconstruct(); - Some((call, (address, signature, extra))) - } -} - -parameter_types! { - pub const ExistentialDeposit: Balance = COIN; - pub const TransferFee: Balance = MICRO; - pub const CreationFee: Balance = MICRO; -} -impl balances::Trait for Runtime { - type Balance = Balance; - type OnFreeBalanceZero = ((Staking, Contracts), Session); - type OnNewAccount = Indices; - type TransferPayment = (); - type DustRemoval = (); - type Event = Event; - type ExistentialDeposit = ExistentialDeposit; - type TransferFee = TransferFee; - type CreationFee = CreationFee; -} -impl kton::Trait for Runtime { - type Event = Event; -} - -parameter_types! { - pub const SessionsPerEra: sr_staking_primitives::SessionIndex = SESSION_PER_ERA; - // about 14 days = 14 * 24 * 60 * 60 * 1000 - pub const BondingDuration: Moment = 1_209_600_000; - pub const BondingDurationInEra: staking::EraIndex = 4032; - // decimal 9 - pub const HardCap: Balance = 1_000_000_000 * COIN; - // Date in Los Angeles*: 12/25/2019, 10:58:29 PM - // Date in Berlin* :12/26/2019, 1:58:29 PM - // Date in Beijing*: 12/26/2019, 12:58:29 PM - // Date in New York* :12/26/2019, 12:58:29 AM - pub const GenesisTime: Moment = 1_577_339_909_000; -} -impl staking::Trait for Runtime { - type Time = Timestamp; - type CurrencyToVote = CurrencyToVoteHandler; - type Event = Event; - type SessionsPerEra = SessionsPerEra; - type BondingDuration = BondingDuration; - type BondingDurationInEra = BondingDurationInEra; - type SessionInterface = Self; - type Ring = Balances; - type RingRewardRemainder = (); - type RingSlash = (); - type RingReward = (); - type Kton = Kton; - type KtonSlash = (); - type KtonReward = (); - - type Cap = HardCap; - type GenesisTime = GenesisTime; -} - -parameter_types! { - pub const EthMainet: u64 = 0; - pub const EthRopsten: u64 = 1; -} - -impl eth_relay::Trait for Runtime { - type Event = Event; - type EthNetwork = EthRopsten; -} - -impl eth_backing::Trait for Runtime { - type Event = Event; - type EthRelay = EthRelay; - type Ring = Balances; - type Kton = Kton; - type OnDepositRedeem = Staking; - type DetermineAccountId = eth_backing::AccountIdDeterminator; - type RingReward = (); - type KtonReward = (); -} - -construct_runtime!( - pub enum Runtime where - Block = Block, - NodeBlock = node_primitives::Block, - UncheckedExtrinsic = UncheckedExtrinsic - { - // Basic stuff; balances is uncallable initially. - RandomnessCollectiveFlip: randomness_collective_flip::{Module, Call, Storage}, - System: system::{Module, Call, Storage, Event, Config}, - - // Must be before session. - Babe: babe::{Module, Call, Storage, Config, Inherent(Timestamp)}, - - Balances: balances::{default, Error}, - Indices: indices, - Kton: kton, - Timestamp: timestamp::{Module, Call, Storage, Inherent}, - TransactionPayment: transaction_payment::{Module, Storage}, - - // Consensus support. - Authorship: authorship::{Module, Call, Storage, Inherent}, - Grandpa: grandpa::{Module, Call, Storage, Event, Config}, - ImOnline: im_online::{default, ValidateUnsigned}, - FinalityTracker: finality_tracker::{Module, Call, Inherent}, - Offences: offences::{Module, Call, Storage, Event}, - Session: session::{Module, Call, Storage, Event, Config}, - Staking: staking::{default, OfflineWorker}, - - Contracts: contracts, - Sudo: sudo, - Utility: utility::{Module, Call, Event}, - - EthRelay: eth_relay::{Module, Call, Storage, Event, Config}, - EthBacking: eth_backing, - } -); - -/// The address format for describing accounts. -pub type Address = ::Source; -/// Block header type as expected by this runtime. -pub type Header = generic::Header; -/// Block type as expected by this runtime. -pub type Block = generic::Block; -/// A Block signed with a Justification -pub type SignedBlock = generic::SignedBlock; -/// BlockId type as expected by this runtime. -pub type BlockId = generic::BlockId; -/// The SignedExtension to the basic transaction logic. -pub type SignedExtra = ( - system::CheckVersion, - system::CheckGenesis, - system::CheckEra, - system::CheckNonce, - system::CheckWeight, - transaction_payment::ChargeTransactionPayment, - contracts::CheckBlockGasLimit, -); -/// Unchecked extrinsic type as expected by this runtime. -pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; -/// The payload being signed in transactions. -pub type SignedPayload = generic::SignedPayload; -/// Extrinsic type that has already been checked. -pub type CheckedExtrinsic = generic::CheckedExtrinsic; -/// Executive: handles dispatch to the various modules. -pub type Executive = executive::Executive, Runtime, AllModules>; - -impl_runtime_apis! { - impl sr_api::Core for Runtime { - fn version() -> RuntimeVersion { - VERSION - } - - fn execute_block(block: Block) { - Executive::execute_block(block) - } - - fn initialize_block(header: &::Header) { - Executive::initialize_block(header) - } - } - - impl sr_api::Metadata for Runtime { - fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() - } - } - - impl block_builder_api::BlockBuilder for Runtime { - fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult { - Executive::apply_extrinsic(extrinsic) - } - - fn finalize_block() -> ::Header { - Executive::finalize_block() - } - - fn inherent_extrinsics(data: InherentData) -> Vec<::Extrinsic> { - data.create_extrinsics() - } - - fn check_inherents(block: Block, data: InherentData) -> CheckInherentsResult { - data.check_extrinsics(&block) - } - - fn random_seed() -> ::Hash { - RandomnessCollectiveFlip::random_seed() - } - } - - impl tx_pool_api::TaggedTransactionQueue for Runtime { - fn validate_transaction(tx: ::Extrinsic) -> TransactionValidity { - Executive::validate_transaction(tx) - } - } - - impl offchain_primitives::OffchainWorkerApi for Runtime { - fn offchain_worker(number: NumberFor) { - Executive::offchain_worker(number) - } - } - - impl fg_primitives::GrandpaApi for Runtime { - fn grandpa_authorities() -> GrandpaAuthorityList { - Grandpa::grandpa_authorities() - } - } - - impl babe_primitives::BabeApi for Runtime { - fn configuration() -> babe_primitives::BabeConfiguration { - // The choice of `c` parameter (where `1 - c` represents the - // probability of a slot being empty), is done in accordance to the - // slot duration and expected target block time, for safely - // resisting network delays of maximum two seconds. - // - babe_primitives::BabeConfiguration { - slot_duration: Babe::slot_duration(), - epoch_length: EpochDuration::get(), - c: PRIMARY_PROBABILITY, - genesis_authorities: Babe::authorities(), - randomness: Babe::randomness(), - secondary_slots: true, - } - } - } - - impl system_rpc_runtime_api::AccountNonceApi for Runtime { - fn account_nonce(account: AccountId) -> Index { - System::account_nonce(account) - } - } - - impl contracts_rpc_runtime_api::ContractsApi for Runtime { - fn call( - origin: AccountId, - dest: AccountId, - value: Balance, - gas_limit: u64, - input_data: Vec, - ) -> contracts_rpc_runtime_api::ContractExecResult { - use contracts_rpc_runtime_api::ContractExecResult; - - let exec_result = Contracts::bare_call( - origin, - dest.into(), - value, - gas_limit, - input_data, - ); - match exec_result { - Ok(v) => ContractExecResult::Success { - status: v.status, - data: v.data, - }, - Err(_) => ContractExecResult::Error, - } - } - - fn get_storage( - address: AccountId, - key: [u8; 32], - ) -> contracts_rpc_runtime_api::GetStorageResult { - Contracts::get_storage(address, key).map_err(|rpc_err| { - use contracts::GetStorageError; - use contracts_rpc_runtime_api::{GetStorageError as RpcGetStorageError}; - /// Map the contract error into the RPC layer error. - match rpc_err { - GetStorageError::ContractDoesntExist => RpcGetStorageError::ContractDoesntExist, - GetStorageError::IsTombstone => RpcGetStorageError::IsTombstone, - } - }) - } - } - - impl transaction_payment_rpc_runtime_api::TransactionPaymentApi< - Block, - Balance, - UncheckedExtrinsic, - > for Runtime { - fn query_info(uxt: UncheckedExtrinsic, len: u32) -> RuntimeDispatchInfo { - TransactionPayment::query_info(uxt, len) - } - } - - impl substrate_session::SessionKeys for Runtime { - fn generate_session_keys(seed: Option>) -> Vec { - SessionKeys::generate(seed) - } - } -} diff --git a/scripts/build-only-wasm.sh b/scripts/build-only-wasm.sh deleted file mode 100755 index b6da3319c..000000000 --- a/scripts/build-only-wasm.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env sh - -# Script for building only the WASM binary of the given project. - -set -e - -PROJECT_ROOT=`git rev-parse --show-toplevel` - -if [ "$#" -lt 1 ]; then - echo "You need to pass the name of the crate you want to compile!" - exit 1 -fi - -WASM_BUILDER_RUNNER="$PROJECT_ROOT/target/release/wbuild-runner/$1" - -if [ -z "$2" ]; then - export WASM_TARGET_DIRECTORY=$(pwd) -else - export WASM_TARGET_DIRECTORY=$2 -fi - -if [ -d $WASM_BUILDER_RUNNER ]; then - export DEBUG=false - export OUT_DIR="$PROJECT_ROOT/target/release/build" - cargo run --release --manifest-path="$WASM_BUILDER_RUNNER/Cargo.toml" \ - | grep -vE "cargo:rerun-if-|Executing build command" -else - cargo build --release -p $1 -fi diff --git a/scripts/docker/build_image.sh b/scripts/docker/build_image.sh deleted file mode 100755 index 80a93a905..000000000 --- a/scripts/docker/build_image.sh +++ /dev/null @@ -1,141 +0,0 @@ -#!/bin/bash -# =============================================================================== -# -# FILE: build_images.sh -# -# USAGE: build_images.sh [version] [branch] -# -# DESCRIPTION: -# -# OPTIONS: version: default git hash -# branch: default master -# REQUIREMENTS: --- -# BUGS: --- -# NOTES: --- -# AUTHOR: YOUR NAME (), -# COMPANY: -# VERSION: 1.0 -# CREATED: -# REVISION: --- -# =============================================================================== - -# version=${1:-"none"} -# branch=${2:-"master"} -bin_git=$(which git) -bin_docker=$(which docker) -src=$(pwd)"/../" -version='none' -branch='master' -startup_cmd='-dev' -docker_volume='' -docker_ports='' -container_name='darwinia' -start_docker=0 - -usage() { - echo "Usage: $0 [-v version] [-b branch] [-s startup docker] [-h]" - echo "version: default git version" - echo "branch: default master" - echo "start docker: default start -dev" - exit 1 -} - -while getopts 'v:b:sh' flag -do - case "${flag}" in - v) - if [ $(echo $OPTARG | grep -E '^[0-9a-zA-Z_\-\s\.]+$' -c) -eq 1 ] - then - version=${OPTARG} - fi - ;; - b) - if [ $(echo $OPTARG | grep -E '^[0-9a-zA-Z_\-\s\.]+$' -c) -eq 1 ] - then - branch=${OPTARG} - fi - ;; - s) - start_docker=1 - ;; - ?) usage;; - esac -done - - -usage() { - echo "$0 [-v version] [-b branch] [-h]" - exit 1 -} - -check_branch() { - [ $(${bin_git} branch | grep -E "^(\*)?\s+${branch}$" -c) -eq 0 ] && echo "Branch ${branch} not find" && exit 1 -} - -check_env() { - [ "${bin_git}x" == "x" ] && echo "git not find" && exit 1 - [ "${bin_docker}x" == "x" ] && echo "docker not find" && exit 1 -} - -main() { - check_env - check_branch - cd $src - current_branch=$(git symbolic-ref --short -q HEAD 2>/dev/null) - if [ $current_branch != $branch ] - then - $bin_git check $branch - fi - if [ $version == "none" ] - then - version=$(git rev-parse HEAD 2>/dev/null) - fi - # 开始build - echo "Starting build ${branch}-${version}" - $bin_docker build . -t darwinia:${branch}-${version} - # build 成功判断 - rt=$? - if [ $rt -ne 0 ] - then - echo "$bin_docker build . -t ${branch}-${version} failed, return $rt" - exit $rt - fi - [ $start_docker -eq 0 ] && exit 0 - - # 成功,检查镜像是否启动过,启动过就干掉 - # $bin_docker ps -a --filter "name=${container_name}" --format "{{.Names}}-{{.Image}}" - # 启动镜像,传递进参数 - container_status=$($bin_docker ps -a --filter "name=${container_name}" --format "{{.Names}}-{{.Image}}") - if [ "${container_status}x" != "x" ]: - then - c_n = $(echo $container_status | cut -d "-" -f 1) - c_i = $(echo $container_status | cut -d "-" -f 2) - echo "Stop and remove ${container_name}" - $bin_docker stop ${container_name} - rt=$? - if [ $rt -ne 0 ] - then - echo "$bin_docker stop ${container_name} failed, return $rt" - exit $rt - fi - $bin_docker rm ${container_name} - rt=$? - if [ $rt -ne 0 ] - then - echo "$bin_docker rm ${container_name} failed, return $rt" - exit $rt - fi - fi - $bin_docker run -d --name=${container_name} -P darwinia:${branch}-${version} $startup_cmd - rt=$? - if [ $rt -ne 0 ] - then - echo "$bin_docker rm ${container_name} failed, return $rt" - exit $rt - fi - echo "Start ${container_name} done, enjoy." - exit 0 -} - -main - diff --git a/scripts/docker/builder/init.Dockerfile b/scripts/docker/builder/init.Dockerfile deleted file mode 100644 index c92a441b4..000000000 --- a/scripts/docker/builder/init.Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM debian:stable-slim -MAINTAINER Darwinia hello@darwinia.network - -RUN apt-get update && apt-get -y install curl cmake pkg-config libssl-dev git clang libclang-dev && apt-get clean -RUN curl https://sh.rustup.rs -sSf | bash -s -- -y -ENV PATH="/root/.cargo/bin:${PATH}" -RUN rustup default nightly -RUN rustup update -RUN rustup target add wasm32-unknown-unknown diff --git a/scripts/init.sh b/scripts/init.sh deleted file mode 100755 index eace75cee..000000000 --- a/scripts/init.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -set -e - -echo "*** Initializing WASM build environment" - -if [ -z $CI_PROJECT_NAME ] ; then - rustup default nightly - rustup update nightly -fi - -rustup target add wasm32-unknown-unknown diff --git a/srml/balances/Cargo.toml b/srml/balances/Cargo.toml deleted file mode 100644 index 304942ff6..000000000 --- a/srml/balances/Cargo.toml +++ /dev/null @@ -1,40 +0,0 @@ -[package] -name = "darwinia-balances" -version = "0.2.0" -authors = ["Darwinia Network "] -edition = "2018" - -[dependencies] -# crates.io -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.101", optional = true } - -# github.com -rstd = { package = "sr-std", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sr-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -support = { package = "srml-support", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -system = { package = "srml-system", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -timestamp = { package = "srml-timestamp", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } - -# darwinia -darwinia-support = { path = "../support", default-features = false } - -[dev-dependencies] -runtime-io = { package = "sr-io", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop"} -primitives = { package = "substrate-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -transaction-payment = { package = "srml-transaction-payment", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -[features] -default = ["std"] -std = [ - "codec/std", - "serde", - - "rstd/std", - "sr-primitives/std", - "support/std", - "system/std", - "timestamp/std", - - "darwinia-support/std", -] diff --git a/srml/eth-backing/Cargo.toml b/srml/eth-backing/Cargo.toml deleted file mode 100644 index b86d9bd29..000000000 --- a/srml/eth-backing/Cargo.toml +++ /dev/null @@ -1,60 +0,0 @@ -[package] -name = "darwinia-eth-backing" -version = "0.2.0" -authors = ["Darwinia Network "] -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -# crates.io -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -#hex = { version = "0.4", default-features = false } -serde = { version = "1.0.101", optional = true } - -# github.com -rstd = { package = "sr-std", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -support = { package = "srml-support", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -system = { package = "srml-system", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -timestamp = { package = "srml-timestamp", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sr-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -primitives = { package = "substrate-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -ethabi = { git = "https://github.com/darwinia-network/ethabi.git", branch = "with_no_std", default-features = false } - -# darwinia -darwinia-support = { package = "darwinia-support", path = "../support", default-features = false } -darwinia-eth-relay = { package = "darwinia-eth-relay", path = "../eth-relay", default-features = false } -sr-eth-primitives = { path = "../../core/sr-eth-primitives", default-features = false } - -[dev-dependencies] -hex-literal = "0.2.1" -rustc-hex = "2.0" - -phragmen = { package = "substrate-phragmen", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop"} -rlp = { package = "rlp", git = "https://github.com/darwinia-network/parity-common.git" } -runtime-io = { package = "sr-io", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -session = { package = "srml-session",git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop"} -sr-staking-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop"} - -kton = { package = "darwinia-kton", path = "../kton" } -ring = { package = "darwinia-balances", path = '../balances' } -staking = { package = "darwinia-staking", path = "../staking" } - -[features] -default = ["std"] -std = [ - "codec/std", -# "hex/std", - "serde/std", - - "ethabi/std", - "rstd/std", - "sr-primitives/std", - "support/std", - "system/std", - "timestamp/std", - - "darwinia-support/std", - "darwinia-eth-relay/std", - "sr-eth-primitives/std", -] diff --git a/srml/eth-backing/src/lib.rs b/srml/eth-backing/src/lib.rs deleted file mode 100644 index d7b649b3e..000000000 --- a/srml/eth-backing/src/lib.rs +++ /dev/null @@ -1,350 +0,0 @@ -//! prototype module for cross chain assets backing - -#![recursion_limit = "128"] -#![cfg_attr(not(feature = "std"), no_std)] - -#[cfg(all(feature = "std", test))] -mod mock; -#[cfg(all(feature = "std", test))] -mod tests; - -use ethabi::{Event as EthEvent, EventParam as EthEventParam, ParamType, RawLog}; -#[cfg(not(feature = "std"))] -use rstd::borrow::ToOwned; -use rstd::{convert::TryFrom, marker::PhantomData, result, vec}; -use sr_primitives::traits::{CheckedSub, SaturatedConversion}; -use support::{decl_event, decl_module, decl_storage, ensure, traits::Currency, traits::OnUnbalanced}; -use system::ensure_signed; - -use darwinia_eth_relay::{EthReceiptProof, VerifyEthReceipts}; -use darwinia_support::{LockableCurrency, OnDepositRedeem}; -use sr_eth_primitives::{EthAddress, H256, U256}; - -type Balance = u128; - -type RingBalance = <::Ring as Currency<::AccountId>>::Balance; -type RingPositiveImbalance = <::Ring as Currency<::AccountId>>::PositiveImbalance; - -type KtonBalance = <::Kton as Currency<::AccountId>>::Balance; -type KtonPositiveImbalance = <::Kton as Currency<::AccountId>>::PositiveImbalance; - -type EthTransactionIndex = (H256, u64); - -pub trait Trait: timestamp::Trait { - type Event: From> + Into<::Event>; - type EthRelay: VerifyEthReceipts; - type Ring: LockableCurrency; - type Kton: LockableCurrency; - type OnDepositRedeem: OnDepositRedeem; - type DetermineAccountId: AccountIdFor; - type RingReward: OnUnbalanced>; - type KtonReward: OnUnbalanced>; -} - -decl_storage! { - trait Store for Module as EthBacking { - pub RingLocked get(fn ring_locked) config(): RingBalance; - pub RingProofVerified get(fn ring_proof_verfied): map EthTransactionIndex => Option; - pub RingRedeemAddress get(fn ring_redeem_address) config(): EthAddress; - - pub KtonLocked get(fn kton_locked) config(): KtonBalance; - pub KtonProofVerified get(fn kton_proof_verfied): map EthTransactionIndex => Option; - pub KtonRedeemAddress get(fn kton_redeem_address) config(): EthAddress; - - pub DepositProofVerified get(fn deposit_proof_verfied): map EthTransactionIndex => Option; - pub DepositRedeemAddress get(fn deposit_redeem_address) config(): EthAddress; - } -} - -decl_event! { - pub enum Event - where - ::AccountId - { - RedeemRing(AccountId, Balance, EthTransactionIndex), - RedeemKton(AccountId, Balance, EthTransactionIndex), - RedeemDeposit(AccountId, Balance, EthTransactionIndex), - } -} - -decl_module! { - pub struct Module for enum Call - where - origin: T::Origin - { - fn deposit_event() = default; - - // event RingBurndropTokens(address indexed token, address indexed owner, uint amount, bytes data) - // https://ropsten.etherscan.io/tx/0x81f699c93b00ab0b7db701f87b6f6045c1e0692862fcaaf8f06755abb0536800 - pub fn redeem_ring(origin, proof_record: EthReceiptProof) { - let _relayer = ensure_signed(origin)?; - - ensure!( - !RingProofVerified::exists((proof_record.header_hash, proof_record.index)), - "Ring For This Proof - ALREADY BEEN REDEEMED", - ); - - let (darwinia_account, redeemed_amount) = Self::parse_token_redeem_proof(&proof_record, "RingBurndropTokens")?; - - let redeemed_ring = >::saturated_from(redeemed_amount); - - let new_ring_locked = Self::ring_locked() - .checked_sub(&redeemed_ring) - .ok_or("RING Locked - NO SUFFICIENT BACKING ASSETS")?; - let redeemed_positive_imbalance_ring = T::Ring::deposit_into_existing(&darwinia_account, redeemed_ring)?; - - T::RingReward::on_unbalanced(redeemed_positive_imbalance_ring); - - RingProofVerified::insert((proof_record.header_hash, proof_record.index), &proof_record); - - >::mutate(|l| { - *l = new_ring_locked; - }); - - >::deposit_event(RawEvent::RedeemRing( - darwinia_account, - redeemed_amount, - (proof_record.header_hash, proof_record.index), - )); - } - - // event KtonBurndropTokens(address indexed token, address indexed owner, uint amount, bytes data) - pub fn redeem_kton(origin, proof_record: EthReceiptProof) { - let _relayer = ensure_signed(origin)?; - - ensure!( - !KtonProofVerified::exists((proof_record.header_hash, proof_record.index)), - "Kton For This Proof - ALREADY BEEN REDEEMED", - ); - - let (darwinia_account, redeemed_amount) = Self::parse_token_redeem_proof(&proof_record, "KtonBurndropTokens")?; - - let redeemed_kton = >::saturated_from(redeemed_amount); - let new_kton_locked = Self::kton_locked() - .checked_sub(&redeemed_kton) - .ok_or("KTON Locked - NO SUFFICIENT BACKING ASSETS")?; - - let redeemed_positive_imbalance_kton = T::Kton::deposit_into_existing(&darwinia_account, redeemed_kton)?; - T::KtonReward::on_unbalanced(redeemed_positive_imbalance_kton); - - KtonProofVerified::insert((proof_record.header_hash, proof_record.index), &proof_record); - - >::mutate(|l| { - *l = new_kton_locked; - }); - - >::deposit_event(RawEvent::RedeemKton( - darwinia_account, - redeemed_amount, - (proof_record.header_hash, proof_record.index), - )); - } - - // https://github.com/evolutionlandorg/bank - // event Burndrop(uint256 indexed _depositID, address _depositor, uint48 _months, uint48 _startAt, uint64 _unitInterest, uint128 _value, bytes _data) - // https://ropsten.etherscan.io/tx/0xfd2cac791bb0c0bee7c5711f17ef93401061d314f4eb84e1bc91f32b73134ca1 - pub fn redeem_deposit(origin, proof_record: EthReceiptProof) { - let _relayer = ensure_signed(origin)?; - - ensure!( - !DepositProofVerified::exists((proof_record.header_hash, proof_record.index)), - "Deposit For This Proof - ALREADY BEEN REDEEMED", - ); - - let result = { - let verified_receipt = T::EthRelay::verify_receipt(&proof_record)?; - let eth_event = EthEvent { - name: "Burndrop".to_owned(), - inputs: vec![ - EthEventParam { name: "_depositID".to_owned(), kind: ParamType::Uint(256), indexed: true }, - EthEventParam { name: "_depositor".to_owned(), kind: ParamType::Address, indexed: false }, - EthEventParam { name: "_months".to_owned(), kind: ParamType::Uint(48), indexed: false }, - EthEventParam { name: "_startAt".to_owned(), kind: ParamType::Uint(48), indexed: false }, - EthEventParam { name: "_unitInterest".to_owned(), kind: ParamType::Uint(64), indexed: false }, - EthEventParam { name: "_value".to_owned(), kind: ParamType::Uint(128), indexed: false }, - EthEventParam { name: "_data".to_owned(), kind: ParamType::Bytes, indexed: false } - ], - anonymous: false, - }; - let log_entry = verified_receipt - .logs - .iter() - .find(|&x| x.address == Self::deposit_redeem_address() && x.topics[0] == eth_event.signature()) - .ok_or("Log Entry - NOT FOUND")?; - let log = RawLog { - topics: vec![log_entry.topics[0],log_entry.topics[1]], - data: log_entry.data.clone() - }; - - eth_event.parse_log(log).map_err(|_| "Parse Eth Log - FAILED")? - }; - // TODO: unused - // let _deposit_id = result - // .params[0] - // .value - // .clone() - // .to_uint() - // .ok_or("Convert to Int - FAILED")?; - let month = result - .params[2] - .value - .clone() - .to_uint() - .ok_or("Convert to Int - FAILED")?; - // TODO: Check the time unit in seconds or milliseconds - let start_at = result - .params[3] - .value - .clone() - .to_uint() - .ok_or("Convert to Int - FAILED")?; - let redeemed_amount = { - // TODO: div 10**18 and mul 10**9 - let amount = result.params[5] - .value - .clone() - .to_uint() - .map(|x| x / U256::from(1_000_000_000u64)) - .ok_or("Convert to Int - FAILED")?; - - Balance::try_from(amount)? - }; - let darwinia_account = { - let raw_sub_key = result.params[6] - .value - .clone() - .to_bytes() - .ok_or("Convert to Bytes - FAILED")?; -// let decoded_sub_key = hex::decode(&raw_sub_key).map_err(|_| "Decode Address - FAILED")?; - - T::DetermineAccountId::account_id_for(&raw_sub_key)? - }; - let redeemed_ring = >::saturated_from(redeemed_amount); - let new_ring_locked = Self::ring_locked() - .checked_sub(&redeemed_ring) - .ok_or("RING Locked - NO SUFFICIENT BACKING ASSETS")?; - - T::OnDepositRedeem::on_deposit_redeem( - month.saturated_into(), - start_at.saturated_into(), - redeemed_amount, - &darwinia_account, - )?; - - // TODO: check deposit_id duplication - - // TODO: Ignore Unit Interest for now - - DepositProofVerified::insert((proof_record.header_hash, proof_record.index), &proof_record); - - >::mutate(|l| { - *l = new_ring_locked; - }); - - >::deposit_event(RawEvent::RedeemDeposit( - darwinia_account, - redeemed_amount, - (proof_record.header_hash, proof_record.index), - )); - } - } -} - -impl Module { - fn parse_token_redeem_proof( - proof: &EthReceiptProof, - event_name: &str, - ) -> result::Result<(T::AccountId, Balance), &'static str> { - let result = { - let verified_receipt = T::EthRelay::verify_receipt(proof)?; - let eth_event = EthEvent { - name: event_name.to_owned(), - inputs: vec![ - EthEventParam { - name: "token".to_owned(), - kind: ParamType::Address, - indexed: true, - }, - EthEventParam { - name: "owner".to_owned(), - kind: ParamType::Address, - indexed: true, - }, - EthEventParam { - name: "amount".to_owned(), - kind: ParamType::Uint(256), - indexed: false, - }, - EthEventParam { - name: "data".to_owned(), - kind: ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - }; - let log_entry = verified_receipt - .logs - .into_iter() - .find(|x| x.address == Self::ring_redeem_address() && x.topics[0] == eth_event.signature()) - .ok_or("Log Entry - NOT FOUND")?; - let log = RawLog { - topics: vec![log_entry.topics[0], log_entry.topics[1], log_entry.topics[2]], - data: log_entry.data.clone(), - }; - - eth_event.parse_log(log).map_err(|_| "Parse Eth Log - FAILED")? - }; - let redeemed_amount = { - // TODO: div 10**18 and mul 10**9 - let amount = result.params[2] - .value - .clone() - .to_uint() - .map(|x| x / U256::from(1_000_000_000u64)) - .ok_or("Convert to Int - FAILED")?; - - Balance::try_from(amount)? - }; - let darwinia_account = { - let raw_sub_key = result.params[3] - .value - .clone() - .to_bytes() - .ok_or("Convert to Bytes - FAILED")?; - - // let decoded_sub_key = hex::decode(&raw_sub_key).map_err(|_| "Decode Address - FAILED")?; - - T::DetermineAccountId::account_id_for(&raw_sub_key)? - }; - - Ok((darwinia_account, redeemed_amount)) - } -} - -pub trait AccountIdFor { - fn account_id_for(decoded_sub_key: &[u8]) -> result::Result; -} - -pub struct AccountIdDeterminator(PhantomData); - -impl AccountIdFor for AccountIdDeterminator -where - T::AccountId: rstd::convert::From<[u8; 32]> + AsRef<[u8]>, -{ - fn account_id_for(decoded_sub_key: &[u8]) -> result::Result { - ensure!(decoded_sub_key.len() == 33, "Address Length - MISMATCHED"); - ensure!(decoded_sub_key[0] == 42, "Pubkey Prefix - MISMATCHED"); - - let mut raw_account = [0u8; 32]; - raw_account.copy_from_slice(&decoded_sub_key[1..]); - - Ok(raw_account.into()) - } -} - -impl Module { - pub fn adjust_deposit_value() { - unimplemented!() - } -} diff --git a/srml/eth-backing/src/mock.rs b/srml/eth-backing/src/mock.rs deleted file mode 100644 index 4bfc27ba3..000000000 --- a/srml/eth-backing/src/mock.rs +++ /dev/null @@ -1,208 +0,0 @@ -//! Test utilities - -use hex_literal::hex; -use phragmen::ExtendedBalance as Power; -use primitives::{crypto::key_types, H256}; -use sr_primitives::{ - testing::{Header, UintAuthorityId}, - traits::{IdentifyAccount, IdentityLookup, OpaqueKeys, Verify}, - weights::Weight, - KeyTypeId, MultiSignature, Perbill, -}; -use sr_staking_primitives::SessionIndex; -use support::{impl_outer_origin, parameter_types}; - -use crate::*; -use staking::EraIndex; - -pub type Balance = u128; -pub type BlockNumber = u64; -pub type Moment = u64; - -/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. -pub type Signature = MultiSignature; -/// Some way of identifying an account on the chain. We intentionally make it equivalent -/// to the public key of our transaction signing scheme. -pub type AccountId = <::Signer as IdentifyAccount>::AccountId; - -pub type Timestamp = timestamp::Module; - -pub type EthBacking = Module; -pub type EthRelay = darwinia_eth_relay::Module; -pub type Kton = kton::Module; -pub type Ring = ring::Module; -pub type Staking = staking::Module; - -pub const NANO: Balance = 1; -pub const MICRO: Balance = 1_000 * NANO; -pub const MILLI: Balance = 1_000 * MICRO; -pub const COIN: Balance = 1_000 * MILLI; - -impl_outer_origin! { - pub enum Origin for Test {} -} - -pub struct TestSessionHandler; -impl session::SessionHandler for TestSessionHandler { - const KEY_TYPE_IDS: &'static [KeyTypeId] = &[key_types::DUMMY]; - - fn on_genesis_session(_validators: &[(AccountId, Ks)]) {} - - fn on_new_session( - _changed: bool, - _validators: &[(AccountId, Ks)], - _queued_validators: &[(AccountId, Ks)], - ) { - } - - fn on_disabled(_validator_index: usize) {} -} - -// Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. -#[derive(Clone, PartialEq, Eq, Debug)] -pub struct Test; -parameter_types! { - pub const BlockHashCount: BlockNumber = 250; - pub const MaximumBlockWeight: Weight = 1024; - pub const MaximumBlockLength: u32 = 2 * 1024; - pub const AvailableBlockRatio: Perbill = Perbill::one(); -} -impl system::Trait for Test { - type Origin = Origin; - type Call = (); - type Index = u64; - type BlockNumber = BlockNumber; - type Hash = H256; - type Hashing = ::sr_primitives::traits::BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = Header; - type Event = (); - type BlockHashCount = BlockHashCount; - type MaximumBlockWeight = MaximumBlockWeight; - type MaximumBlockLength = MaximumBlockLength; - type AvailableBlockRatio = AvailableBlockRatio; - type Version = (); -} - -parameter_types! { - pub const Period: BlockNumber = 1; - pub const Offset: BlockNumber = 0; - pub const UncleGenerations: u64 = 0; - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(25); -} -impl session::Trait for Test { - type Event = (); - type ValidatorId = AccountId; - type ValidatorIdOf = staking::StashOf; - type ShouldEndSession = session::PeriodicSessions; - type OnSessionEnding = session::historical::NoteHistoricalRoot; - type SessionHandler = TestSessionHandler; - type Keys = UintAuthorityId; - type DisabledValidatorsThreshold = DisabledValidatorsThreshold; - type SelectInitialValidators = Staking; -} - -impl session::historical::Trait for Test { - type FullIdentification = staking::Exposure; - type FullIdentificationOf = staking::ExposureOf; -} - -parameter_types! { - pub const MinimumPeriod: Moment = 5; -} -impl timestamp::Trait for Test { - type Moment = u64; - type OnTimestampSet = (); - type MinimumPeriod = MinimumPeriod; -} - -parameter_types! { - pub const TransferFee: Balance = 0; - pub const CreationFee: Balance = 0; -} -impl ring::Trait for Test { - type Balance = Balance; - type OnFreeBalanceZero = Staking; - type OnNewAccount = (); - type TransferPayment = (); - type DustRemoval = (); - type Event = (); - type ExistentialDeposit = (); - type TransferFee = TransferFee; - type CreationFee = CreationFee; -} -impl kton::Trait for Test { - type Event = (); -} - -parameter_types! { - pub const SessionsPerEra: SessionIndex = 3; - pub const BondingDuration: Moment = 60; - pub const BondingDurationInEra: EraIndex = 60; - pub const CAP: Balance = 10_000_000_000 * COIN; - pub const GenesisTime: Moment = 0; -} -impl staking::Trait for Test { - type Time = Timestamp; - type CurrencyToVote = (); - type Event = (); - type SessionsPerEra = (); - type BondingDuration = (); - type BondingDurationInEra = (); - type SessionInterface = Self; - type Ring = Ring; - type RingRewardRemainder = (); - type RingSlash = (); - type RingReward = (); - type Kton = Kton; - type KtonSlash = (); - type KtonReward = (); - - type Cap = CAP; - type GenesisTime = GenesisTime; -} - -parameter_types! { - pub const EthRopsten: u64 = 1; -} - -impl darwinia_eth_relay::Trait for Test { - type Event = (); - type EthNetwork = EthRopsten; -} - -impl Trait for Test { - type Event = (); - type EthRelay = EthRelay; - type Ring = Ring; - type Kton = Kton; - type OnDepositRedeem = Staking; - type DetermineAccountId = AccountIdDeterminator; - type RingReward = (); - type KtonReward = (); -} - -pub struct ExtBuilder; -impl ExtBuilder { - pub fn build(self) -> runtime_io::TestExternalities { - let mut t = system::GenesisConfig::default().build_storage::().unwrap(); - - let _ = GenesisConfig:: { - ring_redeem_address: hex!["dbc888d701167cbfb86486c516aafbefc3a4de6e"].into(), - kton_redeem_address: hex!["dbc888d701167cbfb86486c516aafbefc3a4de6e"].into(), - deposit_redeem_address: hex!["6ef538314829efa8386fc43386cb13b4e0a67d1e"].into(), - ring_locked: 20000000000000, - kton_locked: 5000000000000, - } - .assimilate_storage(&mut t) - .unwrap(); - - t.into() - } -} -impl Default for ExtBuilder { - fn default() -> Self { - Self - } -} diff --git a/srml/eth-backing/src/tests.rs b/srml/eth-backing/src/tests.rs deleted file mode 100644 index d4c02f13a..000000000 --- a/srml/eth-backing/src/tests.rs +++ /dev/null @@ -1,277 +0,0 @@ -//! Tests for the module. - -use std::str::FromStr; - -use hex_literal::hex; -use rustc_hex::FromHex; -use sr_primitives::{traits::Dispatchable, AccountId32}; -use support::{assert_err, assert_ok}; - -use crate::{mock::*, *}; -use darwinia_support::StakingLock; -use sr_eth_primitives::{header::EthHeader, Bloom, EthAddress, H64}; -use staking::{RewardDestination, StakingBalances, StakingLedger, TimeDepositItem}; - -#[test] -fn verify_parse_token_redeem_proof() { - ExtBuilder::default() - .build() - .execute_with(|| { -// System::inc_account_nonce(&2); - - // https://ropsten.etherscan.io/tx/0x59c6758bd2b93b2f060e471df8d6f4d901c453d2c2c012ba28088acfb94f8216 - let proof_record = EthReceiptProof { - index: 0x3a, - proof: "f9085df9085ab90134f90131a05025d4155f73dc935fad82cc20a3fed5f6b940410da6ba1b730adfbd37d7e85ba09798863f04d85164553dec68189123664236df2a85429c69c8a98354db7fc70da0d4b1679cc2d369b9a3962ef22a7afb1dc8e1a5661429932256859e8e15109748a004f24c135084c8a77ce3ad483660bd99f86360003918ce4b5b491ab4869f8a00a035a5a21a02ae973b4006546f5f34cd491071f9a18f21d9c460ab9a352b5c9733a0997761170ed2834dd6424bf1b98e2189ba85d34d294b5c23e958e4550c4f034fa0a646256c9e897a3a4661de2012e89be0770617a30c761ac754c12ea0eee94d14a0f52a9a98c2b63a4ac0252dd7717a9f4165c7e1bd1a89b43356fe04319d917242a049b57bb5f70e9e5704746e07a2110902997a05d4d1c4d1f39191ca0e922f0fff8080808080808080b90214f90211a032cb337a5224bccf679c4bdb238b2a7adee325e97c84353c9694a8ddc93055b1a0b2f970e1b411cd7f96a1b0680b2cba0d005769df0cf40101eb99da894b738d0fa0bd9d15e4fa218ea894a0c8dc662e65f425dd3167d82422dbce97ddb309f1d6b8a0c5d36981f04881b885760a5454f26f12d01c4b3639e625cbcde97d21ce5f004fa0ccc76ec80500cc1eeb0dec7a5447db075f1c1ae6b4a40e697b2027b5c7fdd196a09862edb220bb1d6a80e4160907713b75b5d488394e91ddedc178b581bc420db9a007be230afa07ab6aa6163cb77d638ddb164a83c7334401a1debbbb0d237293a9a051eaeb16c0c107598c61f879a6e76eefd3e50684738fe93c7ab8f8755a3deb3ba0530d6340c3a3ef031bfc2c44f0ef99301638205554eedfc20a4c88e50b57063fa05162fab7a5598c4ef0c513c343e7861ddbf5351893e5f30903427c21799d63bea0fb84c07954cea6a8c379ceda59dc23506046d0ca1fdd80bbea27dbae65a86e2ca0595b2ab4a2845ebd85ede7fb0f13067800f44b88a4f5de5a15f384e2c6672cd1a07e1b535113d54afb651f5ebef05d09cb8877f7a53749430f28330afd12020bb3a0a9a46015245a41686190c0344235f5bd934057cb59d1f4af51c855a7e06c45e9a0d500f6ef7c8bd97685aa3f767549d29a30c1e94b9cb5518a65f44736d95a742aa0a9288d76cf48f260ba8a779a9779359598a82925dcf6df126f06b82dacbcbeb380b90509f9050620b90502f904ff0183404e24b9010000000000000000000000002000000000400000000000001008000020000000000040000000000002000000000000000000000000000080400000080000000000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000000000804080000000000000000000010000000000000000000000001000000000000000000000000004000000000000020200000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000140000000001000000000800200000000060000000000000000000000000000000000000000000000000020000000000000000f903f4f89b94b52fbe2b925ab79a821b261c82c5ba0814aaa5e0f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000735182c782cb8e7806f8903de7913e6880cbf82ea0000000000000000000000000dbc888d701167cbfb86486c516aafbefc3a4de6ea0000000000000000000000000000000000000000000000000112210f4c023b6d3f87a94b52fbe2b925ab79a821b261c82c5ba0814aaa5e0f842a0cc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5a0000000000000000000000000dbc888d701167cbfb86486c516aafbefc3a4de6ea0000000000000000000000000000000000000000000000000112210f4c023b6d3f89b94b52fbe2b925ab79a821b261c82c5ba0814aaa5e0f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000dbc888d701167cbfb86486c516aafbefc3a4de6ea00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000112210f4c023b6d3f9011c94dbc888d701167cbfb86486c516aafbefc3a4de6ef863a038045eaef0a21b74ff176350f18df02d9041a25d6694b5f63e9474b7b6cd6b94a0000000000000000000000000b52fbe2b925ab79a821b261c82c5ba0814aaa5e0a0000000000000000000000000735182c782cb8e7806f8903de7913e6880cbf82eb8a0000000000000000000000000000000000000000000000000112210f4c023b6d3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000212a92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb4454600000000000000000000000000000000000000000000000000000000000000f9011c94b52fbe2b925ab79a821b261c82c5ba0814aaa5e0f863a09bfafdc2ae8835972d7b64ef3f8f307165ac22ceffde4a742c52da5487f45fd1a0000000000000000000000000735182c782cb8e7806f8903de7913e6880cbf82ea0000000000000000000000000dbc888d701167cbfb86486c516aafbefc3a4de6eb8a0000000000000000000000000000000000000000000000000112210f4c023b6d3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000212a92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb4454600000000000000000000000000000000000000000000000000000000000000" - .from_hex().unwrap(), - header_hash: H256::from(hex!("f3cc3fab1b6cae48660a36839630c350bace54156d57ee3c62c6113d4b7d82b1")) - }; - - let mixh = H256::from(hex!("7afe3c56ba983149cc5690df75110c5b8bd108d99ffb3203ea94d1bb0811389f")); - let nonce = H64::from(hex!("7775c8bc9f155252")); - - let header = EthHeader { - parent_hash: H256::from(hex!("e81c2b775e2fe499fc108626ac8fdb427eca0ef4073c4737ab85e4ad77245d2f")), - timestamp: 0x5df8dc97, - number: 6983947, - author: EthAddress::from(hex!("d34912efb0e7fedaedb9390990d7ef623e01f4fa")), - transactions_root: H256::from(hex!("2c1a476b3bb42bccd51f3df35c25cb1167de017f13c086b9d58dc56f2366614f")), - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "706f6f6c696e2e636f6d".from_hex().unwrap(), - state_root: H256::from(hex!("aa6b1f9de1b3acf0939928b09aed7177bb81ea3bc102d05ce6fdada0fb8ca11c")), - receipts_root: H256::from(hex!("162102c848b94ffb7e3768f9df5df461da28f63d8f9240484246c037bb8f7460")), - log_bloom: Bloom::from_str("242800210084001820600020041104044004018450430c10081080a01224000920e434b1082288020100080042400028802504000208884d041009203036121019c0004117072068c1020088006a004401420421091400088120375400642008218030c8228102041410100000308a9c090804292800880049008111010280250900180869208025160238400000a04040630730c0d184004042440120ac0000220a000000c811810202010440040211d020c60140a8021a040824040110416000a0682300800010001980000094081846d221130428800803a3830c4420603206d0000c040014920402080008009020840f6e4c608d41420420080000000142").unwrap(), - gas_used: 0x78bd9a.into(), - gas_limit: 0x79d4fe.into(), - difficulty: 0x75e5a3ef_u64.into(), - seal: vec![rlp::encode(&mixh), rlp::encode(&nonce)], - hash: Some(H256::from(hex!("f3cc3fab1b6cae48660a36839630c350bace54156d57ee3c62c6113d4b7d82b1"))), - }; - - assert_ok!(EthRelay::init_genesis_header(&header, 0x68de130d2c02a8_u64)); - - let expect_account_id = ::DetermineAccountId::account_id_for(&hex!("2a92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb44546")).unwrap(); - - assert_eq!(EthBacking::parse_token_redeem_proof(&proof_record, "RingBurndropTokens"), Ok((expect_account_id, 1234567891))); - }); -} - -#[test] -fn verify_redeem_ring() { - ExtBuilder::default() - .build() - .execute_with(|| { -// System::inc_account_nonce(&2); - - // https://ropsten.etherscan.io/tx/0x59c6758bd2b93b2f060e471df8d6f4d901c453d2c2c012ba28088acfb94f8216 - let proof_record = EthReceiptProof { - index: 0x3a, - proof: "f9085df9085ab90134f90131a05025d4155f73dc935fad82cc20a3fed5f6b940410da6ba1b730adfbd37d7e85ba09798863f04d85164553dec68189123664236df2a85429c69c8a98354db7fc70da0d4b1679cc2d369b9a3962ef22a7afb1dc8e1a5661429932256859e8e15109748a004f24c135084c8a77ce3ad483660bd99f86360003918ce4b5b491ab4869f8a00a035a5a21a02ae973b4006546f5f34cd491071f9a18f21d9c460ab9a352b5c9733a0997761170ed2834dd6424bf1b98e2189ba85d34d294b5c23e958e4550c4f034fa0a646256c9e897a3a4661de2012e89be0770617a30c761ac754c12ea0eee94d14a0f52a9a98c2b63a4ac0252dd7717a9f4165c7e1bd1a89b43356fe04319d917242a049b57bb5f70e9e5704746e07a2110902997a05d4d1c4d1f39191ca0e922f0fff8080808080808080b90214f90211a032cb337a5224bccf679c4bdb238b2a7adee325e97c84353c9694a8ddc93055b1a0b2f970e1b411cd7f96a1b0680b2cba0d005769df0cf40101eb99da894b738d0fa0bd9d15e4fa218ea894a0c8dc662e65f425dd3167d82422dbce97ddb309f1d6b8a0c5d36981f04881b885760a5454f26f12d01c4b3639e625cbcde97d21ce5f004fa0ccc76ec80500cc1eeb0dec7a5447db075f1c1ae6b4a40e697b2027b5c7fdd196a09862edb220bb1d6a80e4160907713b75b5d488394e91ddedc178b581bc420db9a007be230afa07ab6aa6163cb77d638ddb164a83c7334401a1debbbb0d237293a9a051eaeb16c0c107598c61f879a6e76eefd3e50684738fe93c7ab8f8755a3deb3ba0530d6340c3a3ef031bfc2c44f0ef99301638205554eedfc20a4c88e50b57063fa05162fab7a5598c4ef0c513c343e7861ddbf5351893e5f30903427c21799d63bea0fb84c07954cea6a8c379ceda59dc23506046d0ca1fdd80bbea27dbae65a86e2ca0595b2ab4a2845ebd85ede7fb0f13067800f44b88a4f5de5a15f384e2c6672cd1a07e1b535113d54afb651f5ebef05d09cb8877f7a53749430f28330afd12020bb3a0a9a46015245a41686190c0344235f5bd934057cb59d1f4af51c855a7e06c45e9a0d500f6ef7c8bd97685aa3f767549d29a30c1e94b9cb5518a65f44736d95a742aa0a9288d76cf48f260ba8a779a9779359598a82925dcf6df126f06b82dacbcbeb380b90509f9050620b90502f904ff0183404e24b9010000000000000000000000002000000000400000000000001008000020000000000040000000000002000000000000000000000000000080400000080000000000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000000000804080000000000000000000010000000000000000000000001000000000000000000000000004000000000000020200000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000140000000001000000000800200000000060000000000000000000000000000000000000000000000000020000000000000000f903f4f89b94b52fbe2b925ab79a821b261c82c5ba0814aaa5e0f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000735182c782cb8e7806f8903de7913e6880cbf82ea0000000000000000000000000dbc888d701167cbfb86486c516aafbefc3a4de6ea0000000000000000000000000000000000000000000000000112210f4c023b6d3f87a94b52fbe2b925ab79a821b261c82c5ba0814aaa5e0f842a0cc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5a0000000000000000000000000dbc888d701167cbfb86486c516aafbefc3a4de6ea0000000000000000000000000000000000000000000000000112210f4c023b6d3f89b94b52fbe2b925ab79a821b261c82c5ba0814aaa5e0f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000dbc888d701167cbfb86486c516aafbefc3a4de6ea00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000112210f4c023b6d3f9011c94dbc888d701167cbfb86486c516aafbefc3a4de6ef863a038045eaef0a21b74ff176350f18df02d9041a25d6694b5f63e9474b7b6cd6b94a0000000000000000000000000b52fbe2b925ab79a821b261c82c5ba0814aaa5e0a0000000000000000000000000735182c782cb8e7806f8903de7913e6880cbf82eb8a0000000000000000000000000000000000000000000000000112210f4c023b6d3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000212a92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb4454600000000000000000000000000000000000000000000000000000000000000f9011c94b52fbe2b925ab79a821b261c82c5ba0814aaa5e0f863a09bfafdc2ae8835972d7b64ef3f8f307165ac22ceffde4a742c52da5487f45fd1a0000000000000000000000000735182c782cb8e7806f8903de7913e6880cbf82ea0000000000000000000000000dbc888d701167cbfb86486c516aafbefc3a4de6eb8a0000000000000000000000000000000000000000000000000112210f4c023b6d3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000212a92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb4454600000000000000000000000000000000000000000000000000000000000000" - .from_hex().unwrap(), - header_hash: H256::from(hex!("f3cc3fab1b6cae48660a36839630c350bace54156d57ee3c62c6113d4b7d82b1")) - }; - - let mixh = H256::from(hex!("7afe3c56ba983149cc5690df75110c5b8bd108d99ffb3203ea94d1bb0811389f")); - let nonce = H64::from(hex!("7775c8bc9f155252")); - - let header = EthHeader { - parent_hash: H256::from(hex!("e81c2b775e2fe499fc108626ac8fdb427eca0ef4073c4737ab85e4ad77245d2f")), - timestamp: 0x5df8dc97, - number: 6983947, - author: EthAddress::from(hex!("d34912efb0e7fedaedb9390990d7ef623e01f4fa")), - transactions_root: H256::from(hex!("2c1a476b3bb42bccd51f3df35c25cb1167de017f13c086b9d58dc56f2366614f")), - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "706f6f6c696e2e636f6d".from_hex().unwrap(), - state_root: H256::from(hex!("aa6b1f9de1b3acf0939928b09aed7177bb81ea3bc102d05ce6fdada0fb8ca11c")), - receipts_root: H256::from(hex!("162102c848b94ffb7e3768f9df5df461da28f63d8f9240484246c037bb8f7460")), - log_bloom: Bloom::from_str("242800210084001820600020041104044004018450430c10081080a01224000920e434b1082288020100080042400028802504000208884d041009203036121019c0004117072068c1020088006a004401420421091400088120375400642008218030c8228102041410100000308a9c090804292800880049008111010280250900180869208025160238400000a04040630730c0d184004042440120ac0000220a000000c811810202010440040211d020c60140a8021a040824040110416000a0682300800010001980000094081846d221130428800803a3830c4420603206d0000c040014920402080008009020840f6e4c608d41420420080000000142").unwrap(), - gas_used: 0x78bd9a.into(), - gas_limit: 0x79d4fe.into(), - difficulty: 0x75e5a3ef_u64.into(), - seal: vec![rlp::encode(&mixh), rlp::encode(&nonce)], - hash: Some(H256::from(hex!("f3cc3fab1b6cae48660a36839630c350bace54156d57ee3c62c6113d4b7d82b1"))), - }; - - assert_ok!(EthRelay::init_genesis_header(&header, 0x68de130d2c02a8_u64)); - - let expect_account_id = ::DetermineAccountId::account_id_for(&hex!("2a92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb44546")).unwrap(); - - let id1 = AccountId32::from([0; 32]); - // If expect_account_id doesn't exist, redeem should fail - assert_err!(EthBacking::redeem_ring(Origin::signed(id1.clone()), proof_record.clone()), "beneficiary account must pre-exist"); - - let ring_locked_before = EthBacking::ring_locked(); - - let _ = Ring::deposit_creating(&expect_account_id, 1); - assert_ok!(EthBacking::redeem_ring(Origin::signed(id1.clone()), proof_record.clone())); - - assert_eq!(Ring::free_balance(&expect_account_id), 1234567891 + 1); - - let ring_locked_after = EthBacking::ring_locked(); - - assert_eq!(ring_locked_after + 1234567891, ring_locked_before); - - // shouldn't redeem twice - assert_err!(EthBacking::redeem_ring(Origin::signed(id1.clone()), proof_record.clone()), "Ring For This Proof - ALREADY BEEN REDEEMED"); - }); -} - -#[test] -fn verify_redeem_kton() { - ExtBuilder::default() - .build() - .execute_with(|| { -// System::inc_account_nonce(&2); - - // https://ropsten.etherscan.io/tx/0xc878562085dd8b68ad81adf0820aa0380f1f81b0ea7c012be122937b74020f96 - // darwinia: 5FP2eFNSVxJzSrE3N2NEVFPhUU34VzYFD6DDtRXbYzTdwPn8 - // hex: 0x92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb44546 - // amount: 0.123456789123456789 KTON - let proof_record = EthReceiptProof { - index: 0xe, - proof: "f907bbf907b8b8b3f8b1a0adc9c2f1773854b67d199fe4ab9cf09a5acd076dc67dd90d2467bdc057109892a074db6124fd385d9fdd64a8911d65149935456f06208e6544512a15767b85dc47a085c757ed14e68ebbb710356211d00673922763d9c58726662fd25be97f132302a051caa42d7eda931122489032d3a88de12ecb7ebfd5788440a6a7eb7cd8b9498d80808080a069b207da947563a4195edc459548caf5646c4d814f84b4c516dae98490436b228080808080808080b901f4f901f180a0e437cbd8baff37825bac07ad32e0852b9c52b07c6de1fcca79e203f10d19c421a084f99876f06059390e9feccc9a18447dc64e0f3e45ab427784d4b75e367f5043a01b7421ceff091a6c1127f47f8921ea2abdf836e5115cf426183804fa7af5ceeea0fa81586ff394840f08796afa04efe89183542fc27396466e1a6900aa8cf61c8da080667dd8f2715f1abfa0dee483fc02eea840ac912628bc649161a0faaddb7d78a0ef064944ebcc178acfdfe6f255a21e0988f1c87da330a7bb59a5b7c2299c33f4a0e002f10d1424019ef731f1cfadcc6d8d037c5788437b9db7ab61c42c9bbb30a9a077794de8aa4dc428511ee88025b58c273a83f362efa37c771961afc82236be06a0610d647dd29aeb3a9703f9b29f3774aa3bb5453814350576482c7ec434c4f39da0f0f19cc201f05c9b5bc7c39efe9fa931c7c314b008d8bfbcd0aa38ad43f4d91ca010005704956fb1735705accb3a3936c9253a9f4ff243a3b9003854f2085b6206a017c40900dcaed002dc6e87aa8e6a73efd671ef3663dcce4609f468aefcf81171a079715ab8793135007503ee61146392fff91fd78ba90b788391b4f8034da5dd23a09157fc0b584fedb79d9cd0e535bb2face3b8a52455ef4282ad529ff74244b1fca014c862f02f3d871220c706c7a6fa2756086fe5e0d7a289858f717e38b546c72a80b90509f9050620b90502f904ff01830dbb87b9010000000000000000000000000000000000400000000000001008000020000000000040000000000002000000000000000000000000000080400000000000000800000000000000400000200008000000000000000000000000000000040000000000000000020000000000000000000804080000000000000000000010000000000000000000000000000000000000004000000000004000000020000020200000000000000000000000000000000000000000000000000002000000000000000000000002000000000000000000100000000000000000000000000000000020000000000000000000000040010000000000000000000000020000000000000000f903f4f89b941994100c58753793d52c6f457f189aa3ce9cee94f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000735182c782cb8e7806f8903de7913e6880cbf82ea0000000000000000000000000dbc888d701167cbfb86486c516aafbefc3a4de6ea000000000000000000000000000000000000000000000000001b69b4bacd05f15f87a941994100c58753793d52c6f457f189aa3ce9cee94f842a0cc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5a0000000000000000000000000dbc888d701167cbfb86486c516aafbefc3a4de6ea000000000000000000000000000000000000000000000000001b69b4bacd05f15f89b941994100c58753793d52c6f457f189aa3ce9cee94f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000dbc888d701167cbfb86486c516aafbefc3a4de6ea00000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000001b69b4bacd05f15f9011c94dbc888d701167cbfb86486c516aafbefc3a4de6ef863a07c6ab7280253e73a918d8297bd1601093f0e50b0e0af1ad4e40a73179d621a74a00000000000000000000000001994100c58753793d52c6f457f189aa3ce9cee94a0000000000000000000000000735182c782cb8e7806f8903de7913e6880cbf82eb8a000000000000000000000000000000000000000000000000001b69b4bacd05f15000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000212a92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb4454600000000000000000000000000000000000000000000000000000000000000f9011c941994100c58753793d52c6f457f189aa3ce9cee94f863a09bfafdc2ae8835972d7b64ef3f8f307165ac22ceffde4a742c52da5487f45fd1a0000000000000000000000000735182c782cb8e7806f8903de7913e6880cbf82ea0000000000000000000000000dbc888d701167cbfb86486c516aafbefc3a4de6eb8a000000000000000000000000000000000000000000000000001b69b4bacd05f15000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000212a92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb4454600000000000000000000000000000000000000000000000000000000000000" - .from_hex().unwrap(), - header_hash: H256::from(hex!("32abfdd1cd066853540af65bd7cc2246e38f134608b3998d32d05a4330bc183c")) - }; - - let mixh = H256::from(hex!("f1208c3da083aee3c37dd9510de03bcbe86a5ee0d5db1b8e75b4767de3b25473")); - let nonce = H64::from(hex!("44f14ec003488a81")); - - let header = EthHeader { - parent_hash: H256::from(hex!("312f10d1fc890bf1cde54b76791fd327a1ddcd20d9dea5e667389a4b7d75547b")), - timestamp: 0x5df9f1c0, - number: 6988603, - author: EthAddress::from(hex!("4ccfb3039b78d3938588157564c9ad559bafab94")), - transactions_root: H256::from(hex!("329f6a0e711a5227039edf8210a7fd82bc69eb2943b1b6b11ff959d729766d43")), - // sha3Uncles - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "d983010906846765746889676f312e31312e3133856c696e7578".from_hex().unwrap(), - state_root: H256::from(hex!("f9be8e50805b32ba79e172d046e2ebb1baa5f207805fa0060007f5637b29abb9")), - receipts_root: H256::from(hex!("1c433422c5c4b5567820ba6c9c37b3a93d11213bdf211f00ad251944d3365801")), - log_bloom: Bloom::from_str("0400000040008000000010000080140048000100808000100800002080040002006010a100000002000000005240008000000000120280c00020080000360c00000010000400600001200009000202402000100000040000400000040020210100004100120a2100260010000200080408000001000080880401001000008000010048000000802004001a000000a04400020c80214000080020000030240000020400040040000000022100001208008080020400c00002000000404001514122090002000000000000001000100808002020000000000006000000100060001010000000000000000040858100000004008040009400020000000000200002").unwrap(), - gas_used: 0x325fb8.into(), - gas_limit: 0x79f34d.into(), - difficulty: 0x66196b6a_u64.into(), - seal: vec![rlp::encode(&mixh), rlp::encode(&nonce)], - hash: Some(H256::from(hex!("32abfdd1cd066853540af65bd7cc2246e38f134608b3998d32d05a4330bc183c"))), - }; - - // totalDifficulty - assert_ok!(EthRelay::init_genesis_header(&header, 0x68e4ea361f7a78_u64)); - - let expect_account_id = ::DetermineAccountId::account_id_for(&hex!("2a92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb44546")).unwrap(); - - // 0.123456789123456789 KTON - assert_eq!(EthBacking::parse_token_redeem_proof(&proof_record, "KtonBurndropTokens"), Ok((expect_account_id.clone(), 123456789))); - - let id1 = AccountId32::from([0; 32]); - // If expect_account_id doesn't exist, redeem should fail - assert_err!(EthBacking::redeem_kton(Origin::signed(id1.clone()), proof_record.clone()), "beneficiary account must pre-exist"); - - let kton_locked_before = EthBacking::kton_locked(); - - let _ = Kton::deposit_creating(&expect_account_id, 1); - assert_ok!(EthBacking::redeem_kton(Origin::signed(id1.clone()), proof_record.clone())); - - assert_eq!(Kton::free_balance(&expect_account_id), 123456789 + 1); - - let kton_locked_after = EthBacking::kton_locked(); - assert_eq!(kton_locked_after + 123456789, kton_locked_before); - - // shouldn't redeem twice - assert_err!(EthBacking::redeem_kton(Origin::signed(id1.clone()), proof_record.clone()), "Kton For This Proof - ALREADY BEEN REDEEMED"); - }); -} - -#[test] -fn verify_redeem_deposit() { - ExtBuilder::default() - .build() - .execute_with(|| { -// System::inc_account_nonce(&2); - - // 1234ring -> 0.1234kton - - // _depositID 2 - // 0: address: 0x735182c782CB8e7806F8903dE7913e6880CbF82E _depositor - // 1: uint128: 1234000000000000000000 _value - // 2: uint128: 12 _months - // 3: uint256: 1576664555 _startAt - // 4: uint256: 1000 _unitInterest - // 5: bool: false - // _data 0x2a92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb44546 - - // transfer:https://ropsten.etherscan.io/tx/0x4343443642cafe19e06d61047286c5ec5964b1483d5e8cf61e89892c09dc5209 - let proof_record = EthReceiptProof { - index: 0xe, - proof: "f9061ff9061cb873f871a00a6e86ba1ddb6ae5288f534e4d017c15d5d36e00de0f86962b1d22bb0ffe32cfa057cf58af3ecf32d2d81c2ef3417bfe98f38ff72edda617501416689d398ae5d1808080808080a0ace1570bcb9c5273ce1b6e176ff808d88092472b5e436d2c388494ca6f87e27c8080808080808080b901f4f901f180a01d97bd87c78056c3a86ebb1ba172f5f2e84d7ba632d33166cb09e7fdf44e7d19a045b6d434614db44568dc155b87d39de5241f59bed0886d8edfdf672952ae3a74a07375aa73af1f3c2f50707886678c020f128b015bfbf4bef2c9be4cabb084585ea06c3fe02b9db7ace4662886534ee3f4ff0946582d29883822a9f1c5f306a08232a064efdaae98eb58798d04513ff0e48cacaa6e0700cfa5a0bb47fdbc6d4dc453c5a03bc7225b5f7d9e8d47623355f8a76358f5eb7ec3435bed8129563418a11abc7ea0591e855c8785ed8f3de76ed2cf09094d19d5a8dea34c481282f34509e1d6bbdda0a0d4e9d7ebcb32c492fbb3b950c0a27ffe324c46f2b4fa80b50fda12e406295ea0ae735a45af8e3fffba292ab13a9d8e5271dcb1eff61a1fba1d2bcc5da8376efca00457b813f021a853505f32f5d3aa0f1a9fdb08edb7569a7753506045049aa50ca0f836c2b241f5c96094295ed8a013b68abdc78a1dab8fc35504d8d59388f1e177a08c96ece23b48480e91cf66241fabfbe28825c1a7a547ab4df651ad6134e74d97a07dbbb649a1a42ae6d34a3a1e8232d400523aec47be9540aec14cca50bd3673a1a0430672447c3458ccab73889beeb310357728351ac5516068e6c398aa345b838da005f4bca21b205248daefe170261ba8fc3f616d3d6c08140e6ca6eaee4463142580b903adf903aa20b903a6f903a301830d0c10b9010004000000000000400000000000000000000000000000001000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000080000000000000020200000000000000000800080000000000000000000010000000001000000000000000000000000000000000000000000400000000000000200000000000000000000000000100000000000800008000000200000000000000000000000002000000000000000000040000000001000000000000000000020020000000000000000000000000000000000000000000008000000000000000000000f90298f87a94b52fbe2b925ab79a821b261c82c5ba0814aaa5e0f842a0cc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5a00000000000000000000000006ef538314829efa8386fc43386cb13b4e0a67d1ea0000000000000000000000000000000000000000000000042e530adfce0080000f89b94b52fbe2b925ab79a821b261c82c5ba0814aaa5e0f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000006ef538314829efa8386fc43386cb13b4e0a67d1ea00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000042e530adfce0080000f9017c946ef538314829efa8386fc43386cb13b4e0a67d1ef842a0455d5fda67197daa1239477da37301be9abb7771027186e589d8c341c609d285a00000000000000000000000000000000000000000000000000000000000000002b90120000000000000000000000000735182c782cb8e7806f8903de7913e6880cbf82e000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000005df9fdeb00000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000000000000000000000000042e530adfce008000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000212a92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb4454600000000000000000000000000000000000000000000000000000000000000".from_hex().unwrap(), - header_hash: H256::from(hex!("14bf4b76a25a23ca1d625ff89673813548e138f84b511059695d801c0a7be578")) - }; - - let mixh = H256::from(hex!("3f3b1e56a051f395e9ee297a8bcd307ed7e328891d61eeb46b224dbdf710634a")); - let nonce = H64::from(hex!("87cce326ad070e33")); - - let header = EthHeader { - parent_hash: H256::from(hex!("6ff4be9ac4f39a5e3886874bb939437b752e0c6f27803f9050b32c27f925a214")), - timestamp: 0x5df9feec, - number: 6988980, - author: EthAddress::from(hex!("635b4764d1939dfacd3a8014726159abc277becc")), - transactions_root: H256::from(hex!("3126f8c7133dff518b1d7dee4885a7179c9e68b37f792b2192663cd033961385")), - // sha3Uncles - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "de8302050a8f5061726974792d457468657265756d86312e33382e30826c69".from_hex().unwrap(), - state_root: H256::from(hex!("d90785981dfb161936c9d6cd5388da2ad98cf31717a0dfc7fce8b7dace0c8d07")), - receipts_root: H256::from(hex!("73f38c8ee57395ba8c46d856e33e3042738143d7db02f61881b714069b58982a")), - log_bloom: Bloom::from_str("04000008000000401000000080002000000011000001001000000000025000000000000100000000000000000000000000000000000000000800000000002000000000000000000010000048000000a40000000020400000000020000080800000000000420200020000000000000800080000000000080001008010000000001000000400000000000000000000001000000420000400000041000000300000008000001000000000000100000000000801008000000200000000000000000012000002000000000000800000848000000481000100000000000100420020001210004000040080004000000000100000400000018000004000040000000000").unwrap(), - gas_used: 0x141bd0.into(), - gas_limit: 0x7a121d.into(), - difficulty: 0x745523c7_u64.into(), - seal: vec![rlp::encode(&mixh), rlp::encode(&nonce)], - hash: Some(H256::from(hex!("14bf4b76a25a23ca1d625ff89673813548e138f84b511059695d801c0a7be578"))), - }; - - // totalDifficulty - assert_ok!(EthRelay::init_genesis_header(&header, 0x68e58ae1c31caf_u64)); - - let ring_locked_before = EthBacking::ring_locked(); - - let expect_account_id = ::DetermineAccountId::account_id_for(&hex!("2a92ae5b41feba5ee68a61449c557efa9e3b894a6461c058ec2de45429adb44546")).unwrap(); - - let id1 = AccountId32::from([0; 32]); - - let controller = AccountId32::from([1; 32]); - - let _ = Ring::deposit_creating(&expect_account_id, 1); - assert_ok!(staking::Call::::bond( - controller.clone(), - StakingBalances::RingBalance(1), - RewardDestination::Controller, - 0, - ).dispatch(Origin::signed(expect_account_id.clone()))); - assert_ok!(EthBacking::redeem_deposit(Origin::signed(id1.clone()), proof_record.clone())); - - assert_eq!(Ring::free_balance(&expect_account_id), 1234000000000 + 1); - - let ring_locked_after = EthBacking::ring_locked(); - assert_eq!(ring_locked_after + 1234000000000, ring_locked_before); - - let staking_ledger = Staking::ledger(&controller); - - assert_eq!(staking_ledger, Some(StakingLedger { - stash: expect_account_id, - active_ring: 1234000000001, - active_deposit_ring: 1234000000000, - deposit_items: vec![TimeDepositItem { value: 1234000000000, start_time: 1576664555000, expire_time: 1607768555000 }], - ring_staking_lock: StakingLock { staking_amount: 1234000000001, unbondings: vec![] }, - ..Default::default() - })); - - // shouldn't redeem twice - assert_err!(EthBacking::redeem_deposit(Origin::signed(id1.clone()), proof_record.clone()), "Deposit For This Proof - ALREADY BEEN REDEEMED"); - }); -} - -#[test] -fn verify_insufficient_backing_assets() { - // TODO -} diff --git a/srml/eth-relay/Cargo.toml b/srml/eth-relay/Cargo.toml deleted file mode 100644 index dd19cb2ec..000000000 --- a/srml/eth-relay/Cargo.toml +++ /dev/null @@ -1,49 +0,0 @@ -[package] -name = "darwinia-eth-relay" -version = "0.2.0" -authors = ["Darwinia Network "] -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -# crates.io -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.101", optional = true } - -# github.com -rlp = { package = "rlp", git = "https://github.com/darwinia-network/parity-common.git", default-features = false } -rstd = { package = "sr-std", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sr-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -support = { package = "srml-support", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -system = { package = "srml-system", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } - -# darwinia -ethash = { path = "../../core/ethash", default-features = false } -merkle-patricia-trie = { path = "../../core/merkle-patricia-trie", default-features = false } -sr-eth-primitives = { path = "../../core/sr-eth-primitives", default-features = false } - -[dev-dependencies] -hex-literal = "0.2.1" -keccak-hasher = "0.15.2" -rustc-hex = "2.0" - -primitives = { package = "substrate-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -runtime-io = { package = "sr-io", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -[features] -default = ["std"] -std = [ - "codec/std", - "serde/std", - - "rlp/std", - "rstd/std", - "sr-primitives/std", - "support/std", - "system/std", - - "ethash/std", - "merkle-patricia-trie/std", - "sr-eth-primitives/std", -] diff --git a/srml/eth-relay/src/lib.rs b/srml/eth-relay/src/lib.rs deleted file mode 100644 index 2fcc138f7..000000000 --- a/srml/eth-relay/src/lib.rs +++ /dev/null @@ -1,336 +0,0 @@ -//! prototype module for bridging in ethereum pow blockchain, including mainet and ropsten - -#![recursion_limit = "128"] -#![cfg_attr(not(feature = "std"), no_std)] - -use codec::{Decode, Encode}; -use rstd::{result, vec::Vec}; -use sr_primitives::RuntimeDebug; -use support::{decl_event, decl_module, decl_storage, dispatch::Result, ensure, traits::Get}; -use system::{ensure_root, ensure_signed}; - -use ethash::{EthereumPatch, LightDAG}; -use merkle_patricia_trie::{trie::Trie, MerklePatriciaTrie, Proof}; -use sr_eth_primitives::{ - header::EthHeader, pow::EthashPartial, pow::EthashSeal, receipt::Receipt, EthBlockNumber, H256, U256, -}; - -type DAG = LightDAG; - -#[cfg(all(feature = "std", test))] -mod mock; -#[cfg(all(feature = "std", test))] -mod tests; - -pub trait Trait: system::Trait { - type Event: From> + Into<::Event>; - - type EthNetwork: Get; -} - -/// Familial details concerning a block -#[derive(Default, Clone, Copy, Eq, PartialEq, Encode, Decode)] -pub struct BlockDetails { - /// Block number - pub height: EthBlockNumber, - pub hash: H256, - /// Total difficulty of the block and all its parents - pub total_difficulty: U256, - // /// Parent block hash - // pub parent: H256, - // /// List of children block hashes - // pub children: Vec, - // /// Whether the block is considered finalized - // pub is_finalized: bool, -} - -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub struct EthReceiptProof { - pub index: u64, - pub proof: Vec, - pub header_hash: H256, -} - -decl_storage! { - trait Store for Module as EthRelay { - /// Anchor block that works as genesis block - pub BeginHeader get(fn begin_header): Option; - - /// Info of the best block header for now - pub BestHeaderHash get(fn best_header_hash): H256; - - pub HeaderOf get(header_of): map H256 => Option; - - pub HeaderDetailsOf get(header_details_of): map H256 => Option; - - /// Block delay for verify transaction - pub FinalizeNumber get(finalize_number): Option; - -// pub BestHashOf get(best_hash_of): map u64 => Option; - -// pub HashsOf get(hashs_of): map u64 => Vec; - -// pub HeaderForIndex get(header_for_index): map H256 => Vec<(u64, T::Hash)>; -// pub UnverifiedHeader get(unverified_header): map PrevHash => Vec

; - - pub CheckAuthorities get(fn check_authorities) config(): bool = true; - pub Authorities get(fn authorities) config(): Vec; - } - add_extra_genesis { - config(header): Option>; - config(genesis_difficulty): u64; - build(|config| { - if let Some(h) = &config.header { - let header: EthHeader = rlp::decode(&h).expect("Deserialize Genesis Header - FAILED"); - - // Discard the result even it fail. - let _ = >::init_genesis_header(&header,config.genesis_difficulty); - - // TODO: initialize other parameters. - } - }); - } -} - -decl_module! { - pub struct Module for enum Call - where - origin: T::Origin - { - fn deposit_event() = default; - - pub fn reset_genesis_header(origin, header: EthHeader, genesis_difficulty: u64) { - let relayer = ensure_signed(origin)?; - if Self::check_authorities() { - ensure!(Self::authorities().contains(&relayer), "Your account is not on the authorities!"); - } - - // TODO: Just for easy testing. - Self::init_genesis_header(&header, genesis_difficulty)?; - - >::deposit_event(RawEvent::SetGenesisHeader(relayer, header, genesis_difficulty)); - } - - pub fn relay_header(origin, header: EthHeader) { - let relayer = ensure_signed(origin)?; - if Self::check_authorities() { - ensure!(Self::authorities().contains(&relayer), "Your account is not on the authorities!"); - } - // 1. There must be a corresponding parent hash - // 2. Update best hash if the current block number is larger than current best block's number (Chain reorg) - - Self::verify_header(&header)?; - - Self::store_header(&header)?; - - >::deposit_event(RawEvent::RelayHeader(relayer, header)); - } - - pub fn check_receipt(origin, proof_record: EthReceiptProof) { - let relayer = ensure_signed(origin)?; - if Self::check_authorities() { - ensure!(Self::authorities().contains(&relayer), "Your account is not on the authorities!"); - } - - let verified_receipt = Self::verify_receipt(&proof_record)?; - - >::deposit_event(RawEvent::VerifyProof(relayer, verified_receipt, proof_record)); - } - - // Assuming that there are at least one honest worker submiting headers - // This method may be merged together with relay_header - pub fn challenge_header(origin, _header: EthHeader) { - let _relayer = ensure_signed(origin)?; - // if header confirmed then return - // if header in unverified header then challenge - } - - pub fn add_authority(origin, who: T::AccountId) -> Result { - let _me = ensure_root(origin)?; - - if !Self::authorities().contains(&who) { - >::mutate(|l| l.push(who)); - } - - Ok(()) - } - - pub fn remove_authority(origin, who: T::AccountId) -> Result { - let _me = ensure_root(origin)?; - - if let Some(i) = Self::authorities() - .into_iter() - .position(|who_| who_ == who) { - >::mutate(|l| l.remove(i)); - } - - Ok(()) - } - - pub fn toggle_check_authorities(origin) -> Result { - let _me = ensure_root(origin)?; - - CheckAuthorities::put(!Self::check_authorities()); - - Ok(()) - } - } -} - -decl_event! { - pub enum Event - where - ::AccountId - { - SetGenesisHeader(AccountId, EthHeader, u64), - RelayHeader(AccountId, EthHeader), - VerifyProof(AccountId, Receipt, EthReceiptProof), - - // Develop - // Print(u64), - } -} - -/// Handler for selecting the genesis validator set. -pub trait VerifyEthReceipts { - fn verify_receipt(proof_record: &EthReceiptProof) -> result::Result; -} - -impl Module { - // TOOD: what is the total difficulty for genesis/begin header - pub fn init_genesis_header(header: &EthHeader, genesis_difficulty: u64) -> result::Result<(), &'static str> { - let header_hash = header.hash(); - - ensure!(header_hash == header.re_compute_hash(), "Header Hash - MISMATCHED"); - - let block_number = header.number(); - - HeaderOf::insert(&header_hash, header); - - // initialize the header details, including total difficulty. - HeaderDetailsOf::insert( - &header_hash, - BlockDetails { - height: block_number, - hash: header_hash, - total_difficulty: genesis_difficulty.into(), - }, - ); - - // Initialize the the best hash. - BestHeaderHash::mutate(|hash| { - *hash = header_hash; - }); - - // Initialize the header. - BeginHeader::put(header.clone()); - - Ok(()) - } - - /// 1. proof of difficulty - /// 2. proof of pow (mixhash) - /// 3. challenge - fn verify_header(header: &EthHeader) -> Result { - ensure!(header.hash() == header.re_compute_hash(), "Header Hash - MISMATCHED"); - - let parent_hash = header.parent_hash(); - - let number = header.number(); - - ensure!( - number >= Self::begin_header().ok_or("Begin Header - NOT EXISTED")?.number(), - "Block Number - TOO SMALL", - ); - - // TODO: check parent hash is the last header, ignore or reorg - let prev_header = Self::header_of(parent_hash).ok_or("Previous Header - NOT EXISTED")?; - ensure!((prev_header.number() + 1) == number, "Block Number - MISMATCHED"); - - // check difficulty - let ethash_params = match T::EthNetwork::get() { - 0 => EthashPartial::production(), - 1 => EthashPartial::ropsten_testnet(), - _ => EthashPartial::production(), // others - }; - ethash_params.verify_block_basic(header)?; - - // verify difficulty - let difficulty = ethash_params.calculate_difficulty(header, &prev_header); - ensure!(difficulty == *header.difficulty(), "Difficulty Verification - FAILED"); - - // verify mixhash - match T::EthNetwork::get() { - 1 => { - // TODO: Ropsten have issues, do not verify mixhash - } - _ => { - let seal = EthashSeal::parse_seal(header.seal())?; - - let light_dag = DAG::new(number.into()); - let partial_header_hash = header.bare_hash(); - let mix_hash = light_dag.hashimoto(partial_header_hash, seal.nonce).0; - - if mix_hash != seal.mix_hash { - return Err("Mixhash - MISMATCHED"); - } - } - }; - - Ok(()) - } - - fn store_header(header: &EthHeader) -> Result { - let header_hash = header.hash(); - let block_number = header.number(); - - let prev_total_difficulty = Self::header_details_of(header.parent_hash()) - .ok_or("Previous Header Detail - NOT EXISTED")? - .total_difficulty; - let best_header_hash = Self::best_header_hash(); - // let best_header = Self::header_of(best_header_hash).ok_or("Can not find best header."); - let best_header_details = - Self::header_details_of(best_header_hash).ok_or("Best Header Detail - NOT EXISTED")?; - - HeaderOf::insert(header_hash, header); - - HeaderDetailsOf::insert( - header_hash, - BlockDetails { - height: block_number, - hash: header_hash, - total_difficulty: prev_total_difficulty + header.difficulty(), - }, - ); - - // TODO: Check total difficulty and reorg if necessary. - if prev_total_difficulty + header.difficulty() > best_header_details.total_difficulty { - BestHeaderHash::mutate(|hash| { - *hash = header_hash; - }); - } - - Ok(()) - } - - fn _punish(_who: &T::AccountId) -> Result { - unimplemented!() - } -} - -impl VerifyEthReceipts for Module { - fn verify_receipt(proof_record: &EthReceiptProof) -> result::Result { - let header = Self::header_of(&proof_record.header_hash).ok_or("Header - NOT EXISTED")?; - let proof: Proof = rlp::decode(&proof_record.proof).map_err(|_| "Rlp Decode - FAILED")?; - let key = rlp::encode(&proof_record.index); - let value = MerklePatriciaTrie::verify_proof(header.receipts_root().0.to_vec(), &key, proof) - .map_err(|_| "Verify Proof - FAILED")? - .ok_or("Trie Key - NOT EXISTED")?; - let receipt = rlp::decode(&value).map_err(|_| "Deserialize Receipt - FAILED")?; - - Ok(receipt) - // confirm that the block hash is right - // get the receipt MPT trie root from the block header - // Using receipt MPT trie root to verify the proof and index etc. - } -} diff --git a/srml/eth-relay/src/mock.rs b/srml/eth-relay/src/mock.rs deleted file mode 100644 index 2ea7fb7ae..000000000 --- a/srml/eth-relay/src/mock.rs +++ /dev/null @@ -1,70 +0,0 @@ -//! Test utilities - -use primitives::H256; -use sr_primitives::{testing::Header, traits::IdentityLookup, weights::Weight, Perbill}; -use support::{impl_outer_origin, parameter_types}; - -use crate::*; - -/// The AccountId alias in this test module. -pub type AccountId = u64; -pub type BlockNumber = u64; - -pub type System = system::Module; - -pub type EthRelay = Module; - -impl_outer_origin! { - pub enum Origin for Test {} -} - -// Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. -#[derive(Clone, PartialEq, Eq, Debug)] -pub struct Test; -parameter_types! { - pub const BlockHashCount: BlockNumber = 250; - pub const MaximumBlockWeight: Weight = 1024; - pub const MaximumBlockLength: u32 = 2 * 1024; - pub const AvailableBlockRatio: Perbill = Perbill::one(); -} -impl system::Trait for Test { - type Origin = Origin; - type Call = (); - type Index = u64; - type BlockNumber = BlockNumber; - type Hash = H256; - type Hashing = ::sr_primitives::traits::BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = Header; - type Event = (); - type BlockHashCount = BlockHashCount; - type MaximumBlockWeight = MaximumBlockWeight; - type MaximumBlockLength = MaximumBlockLength; - type AvailableBlockRatio = AvailableBlockRatio; - type Version = (); -} - -parameter_types! { -// pub const EthMainet: u64 = 0; - pub const EthRopsten: u64 = 1; -} - -impl Trait for Test { - type Event = (); - type EthNetwork = EthRopsten; -} - -pub struct ExtBuilder; -impl Default for ExtBuilder { - fn default() -> Self { - Self - } -} -impl ExtBuilder { - pub fn build(self) -> runtime_io::TestExternalities { - let t = system::GenesisConfig::default().build_storage::().unwrap(); - - t.into() - } -} diff --git a/srml/eth-relay/src/tests.rs b/srml/eth-relay/src/tests.rs deleted file mode 100644 index cf6b2fe3d..000000000 --- a/srml/eth-relay/src/tests.rs +++ /dev/null @@ -1,173 +0,0 @@ -//! Tests for the module. -use std::str::FromStr; - -use hex_literal::hex; -use rustc_hex::FromHex; -use sr_eth_primitives::{ - receipt::{LogEntry, TransactionOutcome}, - Bloom, EthAddress, H64, U128, -}; -use support::assert_ok; - -use crate::{mock::*, *}; - -#[test] -fn verify_receipt_proof() { - ExtBuilder::default() - .build() - .execute_with(|| { - System::inc_account_nonce(&2); - - // https://ropsten.etherscan.io/tx/0xce62c3d1d2a43cfcc39707b98de53e61a7ef7b7f8853e943d85e511b3451aa7e#eventlog - let log_entries = vec![LogEntry { - address: EthAddress::from_str("ad52e0f67b6f44cd5b9a6f4fbc7c0f78f37e094b").unwrap(), - topics: vec![ - H256::from(hex!("6775ce244ff81f0a82f87d6fd2cf885affb38416e3a04355f713c6f008dd126a")), - H256::from(hex!("0000000000000000000000000000000000000000000000000000000000000006")), - H256::from(hex!("0000000000000000000000000000000000000000000000000000000000000000")), - ], - data: "00000000000000000000000074241db5f3ebaeecf9506e4ae9881860933416048eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48000000000000000000000000000000000000000000000000002386f26fc10000".from_hex().unwrap(), - }]; - - let receipt = Receipt::new( - TransactionOutcome::StatusCode(1), -// TransactionOutcome::StateRoot(H256::from(hex!("a21cdf375ebef58f606c298d6211f4edee58f2dd6430edbdd0ed3cd886a16863"))), - U256::from(U128::from(1123401)), - log_entries - ); - - - let proof_record = EthReceiptProof { - index: 25, - proof: "f904c4f904c1b8b3f8b1a0c75e4fe93609c5f088e180e294577ba0f991fcad25e6163523adba4bfc65cfa8a008d8d33daaf581590c70f28317e5a48c33786ee092d7d9a9b4faae64fd05339ba0562b932c3332c149c7449d68be351f41c947c5f4b6d336906970f361dc905c67a0da77a1e9b271dcaaf156d5528be7e6c586930feab5d0e644208c0b8e54eed21780808080a0e58215be848c1293dd381210359d84485553000a82b67410406d183b42adbbdd8080808080808080b90214f90211a08fd1196d29f53e148b7cd38b1143b132d8f9bd4a9c5a2ad51244de514b5b5f19a0a6d91f439a4b87ec5861732d4900baa7df91c8b2f0f02eb9c0e640269adcae3da00cbe602772266b03258721442dd7327eb996fb2eef54b4fbe77c9b57053dd3f5a0e412c05734ae17fa87154402c9737bfd800f44aa3df0ef32fe56092214868b87a0a60ac628f42d20e1dee3d479c192b74ceacbb7d571a93750132c536328b031a6a03518806a81c734f33fe971a22721c12f2f3cc60d7f9b3bc89403d7cfdb5d0895a0d130ed44f0def9f86a53d3e3720615cec6f6f0aedecd4fc0cb2649c766ca1a17a0d421bfc8d9f46e123e432b8582c49629a969547a8ef40b231659b8385c7c1b81a09a62e4ae73121a710ba5353172874f248df38f39ceaef351522c4a9b1cffb1c3a09f4604347f9ba2c30703cce323c9f9705e0edecf5c1061e634a792de9a854e00a015421788d874414ca073e71d99c5fab4acd350b46551a48aa29891d322651071a0a1f624aded3a70996b4117dc609e5fbdd1bbdc819935be31a395904a1f85982aa0a69eb11de6f2d70d0ab095da5ba88f38cd9a60569839ecf35103360603d9aa2da02564a45d7661a773b13f984a47c63017fcea8599b39f42df99d1132d9cf2c159a0ff8b9f7b23ffe706af9188e74da6ad7ead36ba7d75c47ef915541689cc025194a094974e354978838330aeefefe0e29fa2e86cab1f4503b1b895f889514f48aa0e80b901f2f901ef20b901ebf901e80183112449b9010000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000820000000000000020000000000000000000800000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000200000000020000000000000000000000000000080000000000000800000000000000000000000f8def8dc94ad52e0f67b6f44cd5b9a6f4fbc7c0f78f37e094bf863a06775ce244ff81f0a82f87d6fd2cf885affb38416e3a04355f713c6f008dd126aa00000000000000000000000000000000000000000000000000000000000000006a00000000000000000000000000000000000000000000000000000000000000000b86000000000000000000000000074241db5f3ebaeecf9506e4ae9881860933416048eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48000000000000000000000000000000000000000000000000002386f26fc10000".from_hex().unwrap(), - header_hash: H256::from(hex!("f1a5bc27877e219b859b0bb1f2f440134553019f9bb5a2eca7a4703263e736c9")) - }; - -// let proof: Proof = rlp::decode(&proof_record.proof).unwrap(); - - let mixh = H256::from(hex!("1e2fc5a540b8f1cdaf50de52c388b1f53856cc61eb3ad20d91b9fcc2de3e3e2a")); - let nonce = H64::from(hex!("339140bca72c49cd")); - - let header = EthHeader { - parent_hash: H256::from(hex!("91553997d11a1d978f2ea363f230f5f525aee914a726d01e1deb4ea51de315cd")), - timestamp: 1573560715, - number: 6760579, - author: EthAddress::from(hex!("d7a15baeb7ea05c9660cbe03fb7999c2c2e57625")), - transactions_root: H256::from(hex!("c2b9e612bdac9d73d53ab38cafa959e5703dc078a9d5b184c65ee38bc471b5bf")), - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "41746c616e7469632043727970746f".from_hex().unwrap(), - state_root: H256::from(hex!("a21cdf375ebef58f606c298d6211f4edee58f2dd6430edbdd0ed3cd886a16863")), - receipts_root: H256::from(hex!("4c573edd96da310fefc3ced2d70831173e4684728c963330d990cf360aed8550")), - log_bloom: Bloom::from_str("040000411080018200400100100020100808080020130000004000000a80040000001000000400004010800004811000000000800604002004000000002300820008181000000a820142010c0000010418030040080010080010280018200408000020800208120100000000001828000000000200000800000080511508c0008004100482000800040080000411409000000d20400000056000000802400006420002801000108140202100000804109008000150800140000020290028404000040102800000002000020000811004020080008000100411300100422420060210100100110124080000800084022021000200808005500000000000012000").unwrap(), - gas_used: 0x220d13.into(), - gas_limit: 0x7a121d.into(), - difficulty: 0x269921540_u64.into(), - seal: vec![rlp::encode(&mixh), rlp::encode(&nonce)], - hash: Some(H256::from(hex!("f1a5bc27877e219b859b0bb1f2f440134553019f9bb5a2eca7a4703263e736c9"))), - }; - - assert_ok!(EthRelay::init_genesis_header(&header, 0x624c22d93f8e59_u64)); - - assert_eq!(EthRelay::verify_receipt(&proof_record), Ok(receipt)); - }); -} - -#[test] -fn relay_header() { - ExtBuilder::default().build().execute_with(|| { - // 6760579 - let mixh1 = H256::from(hex!("1e2fc5a540b8f1cdaf50de52c388b1f53856cc61eb3ad20d91b9fcc2de3e3e2a")); - let nonce1 = H64::from(hex!("339140bca72c49cd")); - - let header1 = EthHeader { - parent_hash: H256::from(hex!("91553997d11a1d978f2ea363f230f5f525aee914a726d01e1deb4ea51de315cd")), - timestamp: 1573560715, - number: 6760579, - author: EthAddress::from(hex!("d7a15baeb7ea05c9660cbe03fb7999c2c2e57625")), - transactions_root: H256::from(hex!("c2b9e612bdac9d73d53ab38cafa959e5703dc078a9d5b184c65ee38bc471b5bf")), - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "41746c616e7469632043727970746f".from_hex().unwrap(), - state_root: H256::from(hex!("a21cdf375ebef58f606c298d6211f4edee58f2dd6430edbdd0ed3cd886a16863")), - receipts_root: H256::from(hex!("4c573edd96da310fefc3ced2d70831173e4684728c963330d990cf360aed8550")), - log_bloom: Bloom::from_str("040000411080018200400100100020100808080020130000004000000a80040000001000000400004010800004811000000000800604002004000000002300820008181000000a820142010c0000010418030040080010080010280018200408000020800208120100000000001828000000000200000800000080511508c0008004100482000800040080000411409000000d20400000056000000802400006420002801000108140202100000804109008000150800140000020290028404000040102800000002000020000811004020080008000100411300100422420060210100100110124080000800084022021000200808005500000000000012000").unwrap(), - gas_used: 0x220d13.into(), - gas_limit: 0x7a121d.into(), - difficulty: 0x269921540_u64.into(), - seal: vec![rlp::encode(&mixh1), rlp::encode(&nonce1)], - hash: Some(H256::from(hex!("f1a5bc27877e219b859b0bb1f2f440134553019f9bb5a2eca7a4703263e736c9"))), - }; - - // #6890091 - // https://api-ropsten.etherscan.io/api?module=proxy&action=eth_getBlockByNumber&tag=0x69226b&boolean=true&apikey=YourApiKeyToken - // https://jsoneditoronline.org/ - - // 6760580 - let mixh2 = H256::from(hex!("e06f0c107dcc91e9e82de0b42d0e22d5c2cfae5209422fda88cff4f810f4bffb")); - let nonce2 = H64::from(hex!("9348d06003756cff")); - - let header2 = EthHeader { - parent_hash: H256::from(hex!("f1a5bc27877e219b859b0bb1f2f440134553019f9bb5a2eca7a4703263e736c9")), - timestamp: 0x5dcaa1a3, - number: 6760580, - author: EthAddress::from(hex!("4ccfb3039b78d3938588157564c9ad559bafab94")), - transactions_root: H256::from(hex!("bd4f8075fcdf01d3be2b8ae4a0a7195107429f34361e278e8760cc0f08e35d7a")), - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "d983010906846765746889676f312e31312e3133856c696e7578".from_hex().unwrap(), - state_root: H256::from(hex!("694af9f7dc9866ec99dd83ef846778552cb60659e9cbd6e77e800816da83c3c9")), - receipts_root: H256::from(hex!("729394331d204a175e4c1938ae19cc905107d8fd5562ee5283c323cde6b82e23")), - log_bloom: Bloom::from_str("0400000000000100001000100000040000000100000000000000000002040080002004000000000200000000000210000080000002000080000000040014000000000000040020000000000800020040080110000004008800000000000000000100000002000000000000000000080040000000000004000010801101000000000000000000000000000000020060000000001000020000200002000000100000000000000000001000010000000000000001000080000000011000002040401000001280000000000021000800000800000000000010000000000040006000000400200000000000000000000000000000000000c000100000400000800100").unwrap(), - gas_used: 0x17231e.into(), - gas_limit: 0x7a1200.into(), - difficulty: 0x2694562fe_u64.into(), - seal: vec![rlp::encode(&mixh2), rlp::encode(&nonce2)], - hash: Some(H256::from(hex!("12734378d3e4ad7050f7baf629d6eda161e911865d77c10e44c1f7e8e31fd7a7"))), - }; - - - assert_ok!(EthRelay::init_genesis_header(&header1, 0x624c22d93f8e59_u64)); - -// let light_dag2 = DAG::new(header2.number().into()); -// let partial_header_hash2 = header2.bare_hash(); -// -// println!("partial_header_hash2: {:?}", partial_header_hash2); -// -// let mixhash2 = light_dag2 -// .hashimoto(partial_header_hash2, nonce2) -// .0; -// assert_eq!( -// mixhash2, -// mixh2 -// ); - - assert_ok!(EthRelay::verify_header(&header2)); - - assert_ok!(EthRelay::store_header(&header2)); - - - // 6760581 - let mixh3 = H256::from(hex!("019b6a52120a8769d34fe6348bdfa400ab4886576287f5ef11d9105875280c7e")); - let nonce3 = H64::from(hex!("f43d6b58a23b7065")); - - let header3 = EthHeader { - parent_hash: H256::from(hex!("12734378d3e4ad7050f7baf629d6eda161e911865d77c10e44c1f7e8e31fd7a7")), - timestamp: 0x5dcaa1ae, - number: 6760581, - author: EthAddress::from(hex!("d7a15baeb7ea05c9660cbe03fb7999c2c2e57625")), - transactions_root: H256::from(hex!("aaccb1d4b2dc847eefa50681d3096522a41f7c27031ead7a0ad51b50632218dc")), - uncles_hash: H256::from(hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")), - extra_data: "41746c616e7469632043727970746f".from_hex().unwrap(), - state_root: H256::from(hex!("8106951604cc1305eedb3b7df1c2cf9c2d0ba9e792f645386d3a2fdffd2e9d96")), - receipts_root: H256::from(hex!("e39a6c035914d6544db6d3653101740625e7608c747ea87b9784261e5d94a7ea")), - log_bloom: Bloom::from_str("00000000000001000000000000000000000000000000000000000000000000000000000000000020000000000000000000200020400000000000000000000000000000000000000000000008000000000000080000000000000000000200000000000000000000000000000000008100000000000000000000000010010000000000020000000000000000000000040000000010040000002000204000000000000000000000000000000100000000000000000000000050002000000000000000800002800000000400000000000000000040000000100000000200000000080000000400002000000000000000000000002000000000000000000002020000").unwrap(), - gas_used: 0x3ea15.into(), - gas_limit: 0x7a121d.into(), - difficulty: 0x26945e2fe_u64.into(), - seal: vec![rlp::encode(&mixh3), rlp::encode(&nonce3)], - hash: Some(H256::from(hex!("c86b090d12fa61c34f075530618e40a89654d8d85ac6aaa26149fb56b596a15a"))), - }; - - assert_ok!(EthRelay::verify_header(&header3)); - - assert_ok!(EthRelay::store_header(&header3)); - }); -} diff --git a/srml/im-online/Cargo.toml b/srml/im-online/Cargo.toml deleted file mode 100644 index 0fa001d3b..000000000 --- a/srml/im-online/Cargo.toml +++ /dev/null @@ -1,43 +0,0 @@ -[package] -name = "srml-im-online" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -# crates.io -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.101", optional = true } - -# github.com -app-crypto = { package = "substrate-application-crypto", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -authorship = { package = "srml-authorship", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -primitives = { package="substrate-primitives", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -rstd = { package = "sr-std", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -runtime-io = { package = "sr-io", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -session = { package = "srml-session", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sr-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sr-staking-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -support = { package = "srml-support", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -system = { package = "srml-system", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } - -[dev-dependencies] -offchain = { package = "substrate-offchain", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -[features] -default = ["std", "session/historical"] -std = [ - "codec/std", - "serde", - - "app-crypto/std", - "authorship/std", - "primitives/std", - "rstd/std", - "runtime-io/std", - "session/std", - "sr-primitives/std", - "sr-staking-primitives/std", - "support/std", - "system/std", -] diff --git a/srml/im-online/src/lib.rs b/srml/im-online/src/lib.rs deleted file mode 100644 index 84bd47e3d..000000000 --- a/srml/im-online/src/lib.rs +++ /dev/null @@ -1,634 +0,0 @@ -// Copyright 2019 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 . - -//! # I'm online Module -//! -//! If the local node is a validator (i.e. contains an authority key), this module -//! gossips a heartbeat transaction with each new session. The heartbeat functions -//! as a simple mechanism to signal that the node is online in the current era. -//! -//! Received heartbeats are tracked for one era and reset with each new era. The -//! module exposes two public functions to query if a heartbeat has been received -//! in the current era or session. -//! -//! The heartbeat is a signed transaction, which was signed using the session key -//! and includes the recent best block number of the local validators chain as well -//! as the [NetworkState](../../core/offchain/struct.NetworkState.html). -//! It is submitted as an Unsigned Transaction via off-chain workers. -//! -//! - [`im_online::Trait`](./trait.Trait.html) -//! - [`Call`](./enum.Call.html) -//! - [`Module`](./struct.Module.html) -//! -//! ## Interface -//! -//! ### Public Functions -//! -//! - `is_online` - True if the validator sent a heartbeat in the current session. -//! -//! ## Usage -//! -//! ``` -//! use support::{decl_module, dispatch::Result}; -//! use system::ensure_signed; -//! use srml_im_online::{self as im_online}; -//! -//! pub trait Trait: im_online::Trait {} -//! -//! decl_module! { -//! pub struct Module for enum Call where origin: T::Origin { -//! pub fn is_online(origin, authority_index: u32) -> Result { -//! let _sender = ensure_signed(origin)?; -//! let _is_online = >::is_online(authority_index); -//! Ok(()) -//! } -//! } -//! } -//! # fn main() { } -//! ``` -//! -//! ## Dependencies -//! -//! This module depends on the [Session module](../srml_session/index.html). - -// Ensure we're `no_std` when compiling for Wasm. -#![cfg_attr(not(feature = "std"), no_std)] - -mod mock; -mod tests; - -use app_crypto::RuntimeAppPublic; -use codec::{Decode, Encode}; -use primitives::offchain::{OpaqueNetworkState, StorageKind}; -use rstd::convert::TryInto; -use rstd::prelude::*; -use session::historical::IdentificationTuple; -use sr_primitives::{ - traits::{Convert, Member, Printable, Saturating}, - transaction_validity::{InvalidTransaction, TransactionPriority, TransactionValidity, ValidTransaction}, - Perbill, RuntimeDebug, -}; -use sr_staking_primitives::{ - offence::{Kind, Offence, ReportOffence}, - SessionIndex, -}; -use support::{debug, decl_event, decl_module, decl_storage, print, traits::Get, Parameter}; -use system::ensure_none; -use system::offchain::SubmitUnsignedTransaction; - -pub mod sr25519 { - mod app_sr25519 { - use app_crypto::{app_crypto, key_types::IM_ONLINE, sr25519}; - app_crypto!(sr25519, IM_ONLINE); - } - - /// An i'm online keypair using sr25519 as its crypto. - #[cfg(feature = "std")] - pub type AuthorityPair = app_sr25519::Pair; - - /// An i'm online signature using sr25519 as its crypto. - pub type AuthoritySignature = app_sr25519::Signature; - - /// An i'm online identifier using sr25519 as its crypto. - pub type AuthorityId = app_sr25519::Public; -} - -pub mod ed25519 { - mod app_ed25519 { - use app_crypto::{app_crypto, ed25519, key_types::IM_ONLINE}; - app_crypto!(ed25519, IM_ONLINE); - } - - /// An i'm online keypair using ed25519 as its crypto. - #[cfg(feature = "std")] - pub type AuthorityPair = app_ed25519::Pair; - - /// An i'm online signature using ed25519 as its crypto. - pub type AuthoritySignature = app_ed25519::Signature; - - /// An i'm online identifier using ed25519 as its crypto. - pub type AuthorityId = app_ed25519::Public; -} - -/// The local storage database key under which the worker progress status -/// is tracked. -const DB_KEY: &[u8] = b"srml/im-online-worker-status"; - -/// It's important to persist the worker state, since e.g. the -/// server could be restarted while starting the gossip process, but before -/// finishing it. With every execution of the off-chain worker we check -/// if we need to recover and resume gossipping or if there is already -/// another off-chain worker in the process of gossipping. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] -struct WorkerStatus { - done: bool, - gossipping_at: BlockNumber, -} - -/// Error which may occur while executing the off-chain code. -#[derive(RuntimeDebug)] -enum OffchainErr { - DecodeWorkerStatus, - FailedSigning, - NetworkState, - SubmitTransaction, -} - -impl Printable for OffchainErr { - fn print(&self) { - match self { - OffchainErr::DecodeWorkerStatus => print("Offchain error: decoding WorkerStatus failed!"), - OffchainErr::FailedSigning => print("Offchain error: signing failed!"), - OffchainErr::NetworkState => print("Offchain error: fetching network state failed!"), - OffchainErr::SubmitTransaction => print("Offchain error: submitting transaction failed!"), - } - } -} - -pub type AuthIndex = u32; - -/// Heartbeat which is sent/received. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] -pub struct Heartbeat -where - BlockNumber: PartialEq + Eq + Decode + Encode, -{ - block_number: BlockNumber, - network_state: OpaqueNetworkState, - session_index: SessionIndex, - authority_index: AuthIndex, -} - -pub trait Trait: system::Trait + session::historical::Trait { - /// The identifier type for an authority. - type AuthorityId: Member + Parameter + RuntimeAppPublic + Default + Ord; - - /// The overarching event type. - type Event: From> + Into<::Event>; - - /// A dispatchable call type. - type Call: From>; - - /// A transaction submitter. - type SubmitTransaction: SubmitUnsignedTransaction::Call>; - - /// An expected duration of the session. - /// - /// This parameter is used to determine the longevity of `heartbeat` transaction - /// and a rough time when the heartbeat should be sent. - type SessionDuration: Get; - - /// A type that gives us the ability to submit unresponsiveness offence reports. - type ReportUnresponsiveness: ReportOffence< - Self::AccountId, - IdentificationTuple, - UnresponsivenessOffence>, - >; -} - -decl_event!( - pub enum Event where - ::AuthorityId, - IdentificationTuple = IdentificationTuple, - { - /// A new heartbeat was received from `AuthorityId` - HeartbeatReceived(AuthorityId), - /// At the end of the session, no offence was committed. - AllGood, - /// At the end of the session, at least once validator was found to be offline. - SomeOffline(Vec), - } -); - -decl_storage! { - trait Store for Module as ImOnline { - /// The block number when we should gossip. - GossipAt get(fn gossip_at): T::BlockNumber; - - /// The current set of keys that may issue a heartbeat. - Keys get(fn keys): Vec; - - /// For each session index, we keep a mapping of `AuthIndex` - /// to `offchain::OpaqueNetworkState`. - ReceivedHeartbeats get(fn received_heartbeats): double_map SessionIndex, - blake2_256(AuthIndex) => Option>; - - /// For each session index, we keep a mapping of `T::ValidatorId` to the - /// number of blocks authored by the given authority. - AuthoredBlocks get(fn authored_blocks): double_map SessionIndex, - blake2_256(T::ValidatorId) => u32; - } - add_extra_genesis { - config(keys): Vec; - build(|config| Module::::initialize_keys(&config.keys)) - } -} - -decl_module! { - pub struct Module for enum Call where origin: T::Origin { - fn deposit_event() = default; - - fn heartbeat( - origin, - heartbeat: Heartbeat, - // since signature verification is done in `validate_unsigned` - // we can skip doing it here again. - _signature: ::Signature - ) { - ensure_none(origin)?; - - let current_session = >::current_index(); - let exists = ::exists( - ¤t_session, - &heartbeat.authority_index - ); - let keys = Keys::::get(); - let public = keys.get(heartbeat.authority_index as usize); - if let (false, Some(public)) = (exists, public) { - Self::deposit_event(Event::::HeartbeatReceived(public.clone())); - - let network_state = heartbeat.network_state.encode(); - ::insert( - ¤t_session, - &heartbeat.authority_index, - &network_state - ); - } else if exists { - Err("Duplicated heartbeat.")? - } else { - Err("Non existent public key.")? - } - } - - // Runs after every block. - fn offchain_worker(now: T::BlockNumber) { - debug::RuntimeLogger::init(); - - // Only send messages if we are a potential validator. - if runtime_io::offchain::is_validator() { - Self::offchain(now); - } - } - } -} - -/// Keep track of number of authored blocks per authority, uncles are counted as -/// well since they're a valid proof of onlineness. -impl authorship::EventHandler for Module { - fn note_author(author: T::ValidatorId) { - Self::note_authorship(author); - } - - fn note_uncle(author: T::ValidatorId, _age: T::BlockNumber) { - Self::note_authorship(author); - } -} - -impl Module { - /// Returns `true` if a heartbeat has been received for the authority at - /// `authority_index` in the authorities series or if the authority has - /// authored at least one block, during the current session. Otherwise - /// `false`. - pub fn is_online(authority_index: AuthIndex) -> bool { - let current_validators = >::validators(); - - if authority_index >= current_validators.len() as u32 { - return false; - } - - let authority = ¤t_validators[authority_index as usize]; - - Self::is_online_aux(authority_index, authority) - } - - fn is_online_aux(authority_index: AuthIndex, authority: &T::ValidatorId) -> bool { - let current_session = >::current_index(); - - ::exists(¤t_session, &authority_index) - || >::get(¤t_session, authority) != 0 - } - - /// Returns `true` if a heartbeat has been received for the authority at `authority_index` in - /// the authorities series, during the current session. Otherwise `false`. - pub fn received_heartbeat_in_current_session(authority_index: AuthIndex) -> bool { - let current_session = >::current_index(); - ::exists(¤t_session, &authority_index) - } - - /// Note that the given authority has authored a block in the current session. - fn note_authorship(author: T::ValidatorId) { - let current_session = >::current_index(); - - >::mutate(¤t_session, author, |authored| *authored += 1); - } - - pub(crate) fn offchain(now: T::BlockNumber) { - let next_gossip = >::get(); - let check = Self::check_not_yet_gossipped(now, next_gossip); - let (curr_worker_status, not_yet_gossipped) = match check { - Ok((s, v)) => (s, v), - Err(err) => { - print(err); - return; - } - }; - if next_gossip < now && not_yet_gossipped { - let value_set = Self::compare_and_set_worker_status(now, false, curr_worker_status); - if !value_set { - // value could not be set in local storage, since the value was - // different from `curr_worker_status`. this indicates that - // another worker was running in parallel. - return; - } - - match Self::do_gossip_at(now) { - Ok(_) => {} - Err(err) => print(err), - } - } else { - debug::native::debug!( - target: "imonline", - "Skipping gossip at: {:?} >= {:?} || {:?}", - next_gossip, - now, - if not_yet_gossipped { "not gossipped" } else { "gossipped" } - ); - } - } - - fn do_gossip_at(block_number: T::BlockNumber) -> Result<(), OffchainErr> { - // we run only when a local authority key is configured - let authorities = Keys::::get(); - let mut results = Vec::new(); - let mut local_keys = T::AuthorityId::all(); - local_keys.sort(); - - for (authority_index, key) in authorities.into_iter().enumerate().filter_map(|(index, authority)| { - local_keys - .binary_search(&authority) - .ok() - .map(|location| (index as u32, &local_keys[location])) - }) { - if Self::is_online(authority_index) { - debug::native::info!( - target: "imonline", - "[index: {:?}] Skipping sending heartbeat at block: {:?}. Already online.", - authority_index, - block_number - ); - continue; - } - - let network_state = runtime_io::offchain::network_state().map_err(|_| OffchainErr::NetworkState)?; - let heartbeat_data = Heartbeat { - block_number, - network_state, - session_index: >::current_index(), - authority_index, - }; - - let signature = key.sign(&heartbeat_data.encode()).ok_or(OffchainErr::FailedSigning)?; - let call = Call::heartbeat(heartbeat_data, signature); - - debug::info!( - target: "imonline", - "[index: {:?}] Reporting im-online at block: {:?}", - authority_index, - block_number - ); - - results.push(T::SubmitTransaction::submit_unsigned(call).map_err(|_| OffchainErr::SubmitTransaction)); - } - - // fail only after trying all keys. - results.into_iter().collect::, OffchainErr>>()?; - - // once finished we set the worker status without comparing - // if the existing value changed in the meantime. this is - // because at this point the heartbeat was definitely submitted. - Self::set_worker_status(block_number, true); - - Ok(()) - } - - fn compare_and_set_worker_status( - gossipping_at: T::BlockNumber, - done: bool, - curr_worker_status: Option>, - ) -> bool { - let enc = WorkerStatus { done, gossipping_at }; - runtime_io::offchain::local_storage_compare_and_set( - StorageKind::PERSISTENT, - DB_KEY, - curr_worker_status, - &enc.encode(), - ) - } - - fn set_worker_status(gossipping_at: T::BlockNumber, done: bool) { - let enc = WorkerStatus { done, gossipping_at }; - runtime_io::offchain::local_storage_set(StorageKind::PERSISTENT, DB_KEY, &enc.encode()); - } - - // Checks if a heartbeat gossip already occurred at this block number. - // Returns a tuple of `(current worker status, bool)`, whereby the bool - // is true if not yet gossipped. - fn check_not_yet_gossipped( - now: T::BlockNumber, - next_gossip: T::BlockNumber, - ) -> Result<(Option>, bool), OffchainErr> { - let last_gossip = runtime_io::offchain::local_storage_get(StorageKind::PERSISTENT, DB_KEY); - match last_gossip { - Some(last) => { - let worker_status: WorkerStatus = - Decode::decode(&mut &last[..]).map_err(|_| OffchainErr::DecodeWorkerStatus)?; - - let was_aborted = !worker_status.done && worker_status.gossipping_at < now; - - // another off-chain worker is currently in the process of submitting - let already_submitting = !worker_status.done && worker_status.gossipping_at == now; - - let not_yet_gossipped = worker_status.done && worker_status.gossipping_at < next_gossip; - - let ret = (was_aborted && !already_submitting) || not_yet_gossipped; - Ok((Some(last), ret)) - } - None => Ok((None, true)), - } - } - - fn initialize_keys(keys: &[T::AuthorityId]) { - if !keys.is_empty() { - assert!(Keys::::get().is_empty(), "Keys are already initialized!"); - Keys::::put(keys); - } - } -} - -impl sr_primitives::BoundToRuntimeAppPublic for Module { - type Public = T::AuthorityId; -} - -impl session::OneSessionHandler for Module { - type Key = T::AuthorityId; - - fn on_genesis_session<'a, I: 'a>(validators: I) - where - I: Iterator, - { - let keys = validators.map(|x| x.1).collect::>(); - Self::initialize_keys(&keys); - } - - fn on_new_session<'a, I: 'a>(_changed: bool, validators: I, _queued_validators: I) - where - I: Iterator, - { - // Tell the offchain worker to start making the next session's heartbeats. - // Since we consider producing blocks as being online, - // the hearbeat is defered a bit to prevent spaming. - let block_number = >::block_number(); - let half_session = T::SessionDuration::get() / 2.into(); - >::put(block_number + half_session); - - // Remember who the authorities are for the new session. - Keys::::put(validators.map(|x| x.1).collect::>()); - } - - fn on_before_session_ending() { - let session_index = >::current_index(); - let keys = Keys::::get(); - let current_validators = >::validators(); - - let offenders = current_validators - .into_iter() - .enumerate() - .filter(|(index, id)| !Self::is_online_aux(*index as u32, id)) - .filter_map(|(_, id)| T::FullIdentificationOf::convert(id.clone()).map(|full_id| (id, full_id))) - .collect::>>(); - - // Remove all received heartbeats and number of authored blocks from the - // current session, they have already been processed and won't be needed - // anymore. - ::remove_prefix(&>::current_index()); - >::remove_prefix(&>::current_index()); - - if offenders.is_empty() { - Self::deposit_event(RawEvent::AllGood); - } else { - Self::deposit_event(RawEvent::SomeOffline(offenders.clone())); - - let validator_set_count = keys.len() as u32; - let offence = UnresponsivenessOffence { - session_index, - validator_set_count, - offenders, - }; - T::ReportUnresponsiveness::report_offence(vec![], offence); - } - } - - fn on_disabled(_i: usize) { - // ignore - } -} - -#[allow(deprecated)] -impl support::unsigned::ValidateUnsigned for Module { - type Call = Call; - - fn validate_unsigned(call: &Self::Call) -> TransactionValidity { - if let Call::heartbeat(heartbeat, signature) = call { - if >::is_online(heartbeat.authority_index) { - // we already received a heartbeat for this authority - return InvalidTransaction::Stale.into(); - } - - // check if session index from heartbeat is recent - let current_session = >::current_index(); - if heartbeat.session_index != current_session { - return InvalidTransaction::Stale.into(); - } - - // verify that the incoming (unverified) pubkey is actually an authority id - let keys = Keys::::get(); - let authority_id = match keys.get(heartbeat.authority_index as usize) { - Some(id) => id, - None => return InvalidTransaction::BadProof.into(), - }; - - // check signature (this is expensive so we do it last). - let signature_valid = - heartbeat.using_encoded(|encoded_heartbeat| authority_id.verify(&encoded_heartbeat, &signature)); - - if !signature_valid { - return InvalidTransaction::BadProof.into(); - } - - Ok(ValidTransaction { - priority: TransactionPriority::max_value(), - requires: vec![], - provides: vec![(current_session, authority_id).encode()], - longevity: TryInto::::try_into(T::SessionDuration::get() / 2.into()).unwrap_or(64_u64), - propagate: true, - }) - } else { - InvalidTransaction::Call.into() - } - } -} - -/// An offence that is filed if a validator didn't send a heartbeat message. -#[derive(RuntimeDebug)] -#[cfg_attr(feature = "std", derive(Clone, PartialEq, Eq))] -pub struct UnresponsivenessOffence { - /// The current session index in which we report the unresponsive validators. - /// - /// It acts as a time measure for unresponsiveness reports and effectively will always point - /// at the end of the session. - session_index: SessionIndex, - /// The size of the validator set in current session/era. - validator_set_count: u32, - /// Authorities that were unresponsive during the current era. - offenders: Vec, -} - -impl Offence for UnresponsivenessOffence { - const ID: Kind = *b"im-online:offlin"; - type TimeSlot = SessionIndex; - - fn offenders(&self) -> Vec { - self.offenders.clone() - } - - fn session_index(&self) -> SessionIndex { - self.session_index - } - - fn validator_set_count(&self) -> u32 { - self.validator_set_count - } - - fn time_slot(&self) -> Self::TimeSlot { - self.session_index - } - - fn slash_fraction(offenders: u32, validator_set_count: u32) -> Perbill { - // the formula is min((3 * max((k - 1), 1)) / n, 1) * 0.05 - let x = Perbill::from_rational_approximation(3 * (offenders - 1).max(1), validator_set_count); - x.saturating_mul(Perbill::from_percent(5)) - } -} diff --git a/srml/im-online/src/mock.rs b/srml/im-online/src/mock.rs deleted file mode 100644 index 23e60dbb9..000000000 --- a/srml/im-online/src/mock.rs +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2019 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 . - -//! Test utilities - -#![cfg(test)] - -use std::cell::RefCell; - -use crate::{Module, Trait}; -use primitives::H256; -use sr_primitives::testing::{Header, TestXt, UintAuthorityId}; -use sr_primitives::traits::{BlakeTwo256, ConvertInto, IdentityLookup}; -use sr_primitives::Perbill; -use sr_staking_primitives::{offence::ReportOffence, SessionIndex}; -use support::{impl_outer_dispatch, impl_outer_origin, parameter_types}; -use {runtime_io, system}; - -impl_outer_origin! { - pub enum Origin for Runtime {} -} - -impl_outer_dispatch! { - pub enum Call for Runtime where origin: Origin { - imonline::ImOnline, - } -} - -thread_local! { - pub static VALIDATORS: RefCell>> = RefCell::new(Some(vec![1, 2, 3])); -} - -pub struct TestOnSessionEnding; -impl session::OnSessionEnding for TestOnSessionEnding { - fn on_session_ending(_ending_index: SessionIndex, _will_apply_at: SessionIndex) -> Option> { - VALIDATORS.with(|l| l.borrow_mut().take()) - } -} - -impl session::historical::OnSessionEnding for TestOnSessionEnding { - fn on_session_ending( - _ending_index: SessionIndex, - _will_apply_at: SessionIndex, - ) -> Option<(Vec, Vec<(u64, u64)>)> { - VALIDATORS.with(|l| { - l.borrow_mut().take().map(|validators| { - let full_identification = validators.iter().map(|v| (*v, *v)).collect(); - (validators, full_identification) - }) - }) - } -} - -/// An extrinsic type used for tests. -pub type Extrinsic = TestXt; -type SubmitTransaction = system::offchain::TransactionSubmitter<(), Call, Extrinsic>; -type IdentificationTuple = (u64, u64); -type Offence = crate::UnresponsivenessOffence; - -thread_local! { - pub static OFFENCES: RefCell, Offence)>> = RefCell::new(vec![]); -} - -/// A mock offence report handler. -pub struct OffenceHandler; -impl ReportOffence for OffenceHandler { - fn report_offence(reporters: Vec, offence: Offence) { - OFFENCES.with(|l| l.borrow_mut().push((reporters, offence))); - } -} - -pub fn new_test_ext() -> runtime_io::TestExternalities { - let t = system::GenesisConfig::default().build_storage::().unwrap(); - t.into() -} - -#[derive(Clone, PartialEq, Eq, Debug)] -pub struct Runtime; - -parameter_types! { - pub const BlockHashCount: u64 = 250; - pub const MaximumBlockWeight: u32 = 1024; - pub const MaximumBlockLength: u32 = 2 * 1024; - pub const AvailableBlockRatio: Perbill = Perbill::one(); -} - -impl system::Trait for Runtime { - type Origin = Origin; - type Index = u64; - type BlockNumber = u64; - type Call = Call; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = u64; - type Lookup = IdentityLookup; - type Header = Header; - type Event = (); - type BlockHashCount = BlockHashCount; - type MaximumBlockWeight = MaximumBlockWeight; - type MaximumBlockLength = MaximumBlockLength; - type AvailableBlockRatio = AvailableBlockRatio; - type Version = (); -} - -parameter_types! { - pub const Period: u64 = 1; - pub const Offset: u64 = 0; -} - -parameter_types! { - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(33); -} - -impl session::Trait for Runtime { - type ShouldEndSession = session::PeriodicSessions; - type OnSessionEnding = session::historical::NoteHistoricalRoot; - type SessionHandler = (ImOnline,); - type ValidatorId = u64; - type ValidatorIdOf = ConvertInto; - type Keys = UintAuthorityId; - type Event = (); - type SelectInitialValidators = (); - type DisabledValidatorsThreshold = DisabledValidatorsThreshold; -} - -impl session::historical::Trait for Runtime { - type FullIdentification = u64; - type FullIdentificationOf = ConvertInto; -} - -parameter_types! { - pub const UncleGenerations: u32 = 5; -} - -impl authorship::Trait for Runtime { - type FindAuthor = (); - type UncleGenerations = UncleGenerations; - type FilterUncle = (); - type EventHandler = ImOnline; -} - -impl Trait for Runtime { - type AuthorityId = UintAuthorityId; - type Event = (); - type Call = Call; - type SubmitTransaction = SubmitTransaction; - type ReportUnresponsiveness = OffenceHandler; - type SessionDuration = Period; -} - -/// Im Online module. -pub type ImOnline = Module; -pub type System = system::Module; -pub type Session = session::Module; - -pub fn advance_session() { - let now = System::block_number(); - System::set_block_number(now + 1); - Session::rotate_session(); - assert_eq!(Session::current_index(), (now / Period::get()) as u32); -} diff --git a/srml/im-online/src/tests.rs b/srml/im-online/src/tests.rs deleted file mode 100644 index 609cd4c51..000000000 --- a/srml/im-online/src/tests.rs +++ /dev/null @@ -1,326 +0,0 @@ -// Copyright 2019 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 im-online module. - -#![cfg(test)] - -use super::*; -use crate::mock::*; -use offchain::testing::TestOffchainExt; -use primitives::offchain::{OffchainExt, OpaquePeerId}; -use sr_primitives::testing::UintAuthorityId; -use support::{assert_noop, dispatch}; - -#[test] -fn test_unresponsiveness_slash_fraction() { - // 1 ~ 2 offline should be punished 0.3%. - assert_eq!( - UnresponsivenessOffence::<()>::slash_fraction(1, 50), - Perbill::from_parts(3000000), // 0.3% - ); - assert_eq!( - UnresponsivenessOffence::<()>::slash_fraction(2, 50), - Perbill::from_parts(3000000), // 0.3% - ); - - assert_eq!( - UnresponsivenessOffence::<()>::slash_fraction(3, 50), - Perbill::from_parts(6000000), // 0.6% - ); - - // One third offline should be punished around 5%. - assert_eq!( - UnresponsivenessOffence::<()>::slash_fraction(17, 50), - Perbill::from_parts(48000000), // 4.8% - ); -} - -#[test] -fn should_report_offline_validators() { - new_test_ext().execute_with(|| { - // given - let block = 1; - System::set_block_number(block); - // buffer new validators - Session::rotate_session(); - // enact the change and buffer another one - let validators = vec![1, 2, 3, 4, 5, 6]; - VALIDATORS.with(|l| *l.borrow_mut() = Some(validators.clone())); - Session::rotate_session(); - - // when - // we end current session and start the next one - Session::rotate_session(); - - // then - let offences = OFFENCES.with(|l| l.replace(vec![])); - assert_eq!( - offences, - vec![( - vec![], - UnresponsivenessOffence { - session_index: 2, - validator_set_count: 3, - offenders: vec![(1, 1), (2, 2), (3, 3)], - } - )] - ); - - // should not report when heartbeat is sent - for (idx, v) in validators.into_iter().take(4).enumerate() { - let _ = heartbeat(block, 3, idx as u32, v.into()).unwrap(); - } - Session::rotate_session(); - - // then - let offences = OFFENCES.with(|l| l.replace(vec![])); - assert_eq!( - offences, - vec![( - vec![], - UnresponsivenessOffence { - session_index: 3, - validator_set_count: 6, - offenders: vec![(5, 5), (6, 6)], - } - )] - ); - }); -} - -fn heartbeat(block_number: u64, session_index: u32, authority_index: u32, id: UintAuthorityId) -> dispatch::Result { - #[allow(deprecated)] - use support::unsigned::ValidateUnsigned; - - let heartbeat = Heartbeat { - block_number, - network_state: OpaqueNetworkState { - peer_id: OpaquePeerId(vec![1]), - external_addresses: vec![], - }, - session_index, - authority_index, - }; - let signature = id.sign(&heartbeat.encode()).unwrap(); - - #[allow(deprecated)] // Allow ValidateUnsigned - ImOnline::pre_dispatch(&crate::Call::heartbeat(heartbeat.clone(), signature.clone()))?; - ImOnline::heartbeat(Origin::system(system::RawOrigin::None), heartbeat, signature) -} - -#[test] -fn should_mark_online_validator_when_heartbeat_is_received() { - new_test_ext().execute_with(|| { - advance_session(); - // given - VALIDATORS.with(|l| *l.borrow_mut() = Some(vec![1, 2, 3, 4, 5, 6])); - assert_eq!(Session::validators(), Vec::::new()); - // enact the change and buffer another one - advance_session(); - - assert_eq!(Session::current_index(), 2); - assert_eq!(Session::validators(), vec![1, 2, 3]); - - assert!(!ImOnline::is_online(0)); - assert!(!ImOnline::is_online(1)); - assert!(!ImOnline::is_online(2)); - - // when - let _ = heartbeat(1, 2, 0, 1.into()).unwrap(); - - // then - assert!(ImOnline::is_online(0)); - assert!(!ImOnline::is_online(1)); - assert!(!ImOnline::is_online(2)); - - // and when - let _ = heartbeat(1, 2, 2, 3.into()).unwrap(); - - // then - assert!(ImOnline::is_online(0)); - assert!(!ImOnline::is_online(1)); - assert!(ImOnline::is_online(2)); - }); -} - -#[test] -fn late_heartbeat_should_fail() { - new_test_ext().execute_with(|| { - advance_session(); - // given - VALIDATORS.with(|l| *l.borrow_mut() = Some(vec![1, 2, 4, 4, 5, 6])); - assert_eq!(Session::validators(), Vec::::new()); - // enact the change and buffer another one - advance_session(); - - assert_eq!(Session::current_index(), 2); - assert_eq!(Session::validators(), vec![1, 2, 3]); - - // when - assert_noop!(heartbeat(1, 3, 0, 1.into()), "Transaction is outdated"); - assert_noop!(heartbeat(1, 1, 0, 1.into()), "Transaction is outdated"); - }); -} - -#[test] -fn should_generate_heartbeats() { - let mut ext = new_test_ext(); - let (offchain, state) = TestOffchainExt::new(); - ext.register_extension(OffchainExt::new(offchain)); - - ext.execute_with(|| { - // given - let block = 1; - System::set_block_number(block); - // buffer new validators - Session::rotate_session(); - // enact the change and buffer another one - VALIDATORS.with(|l| *l.borrow_mut() = Some(vec![1, 2, 3, 4, 5, 6])); - Session::rotate_session(); - - // when - UintAuthorityId::set_all_keys(vec![0, 1, 2]); - ImOnline::offchain(2); - - // then - let transaction = state.write().transactions.pop().unwrap(); - // All validators have `0` as their session key, so we generate 3 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.1 { - crate::mock::Call::ImOnline(crate::Call::heartbeat(h, _)) => h, - e => panic!("Unexpected call: {:?}", e), - }; - - assert_eq!( - heartbeat, - Heartbeat { - block_number: 2, - network_state: runtime_io::offchain::network_state().unwrap(), - session_index: 2, - authority_index: 2, - } - ); - }); -} - -#[test] -fn should_cleanup_received_heartbeats_on_session_end() { - new_test_ext().execute_with(|| { - advance_session(); - - VALIDATORS.with(|l| *l.borrow_mut() = Some(vec![1, 2, 3])); - assert_eq!(Session::validators(), Vec::::new()); - - // enact the change and buffer another one - advance_session(); - - assert_eq!(Session::current_index(), 2); - assert_eq!(Session::validators(), vec![1, 2, 3]); - - // send an heartbeat from authority id 0 at session 2 - let _ = heartbeat(1, 2, 0, 1.into()).unwrap(); - - // the heartbeat is stored - assert!(!ImOnline::received_heartbeats(&2, &0).is_none()); - - advance_session(); - - // after the session has ended we have already processed the heartbeat - // message, so any messages received on the previous session should have - // been pruned. - assert!(ImOnline::received_heartbeats(&2, &0).is_none()); - }); -} - -#[test] -fn should_mark_online_validator_when_block_is_authored() { - use authorship::EventHandler; - - new_test_ext().execute_with(|| { - advance_session(); - // given - VALIDATORS.with(|l| *l.borrow_mut() = Some(vec![1, 2, 3, 4, 5, 6])); - assert_eq!(Session::validators(), Vec::::new()); - // enact the change and buffer another one - advance_session(); - - assert_eq!(Session::current_index(), 2); - assert_eq!(Session::validators(), vec![1, 2, 3]); - - for i in 0..3 { - assert!(!ImOnline::is_online(i)); - } - - // when - ImOnline::note_author(1); - ImOnline::note_uncle(2, 0); - - // then - assert!(ImOnline::is_online(0)); - assert!(ImOnline::is_online(1)); - assert!(!ImOnline::is_online(2)); - }); -} - -#[test] -fn should_not_send_a_report_if_already_online() { - use authorship::EventHandler; - - let mut ext = new_test_ext(); - let (offchain, state) = TestOffchainExt::new(); - ext.register_extension(OffchainExt::new(offchain)); - - ext.execute_with(|| { - advance_session(); - // given - VALIDATORS.with(|l| *l.borrow_mut() = Some(vec![1, 2, 3, 4, 5, 6])); - assert_eq!(Session::validators(), Vec::::new()); - // enact the change and buffer another one - advance_session(); - assert_eq!(Session::current_index(), 2); - assert_eq!(Session::validators(), vec![1, 2, 3]); - ImOnline::note_author(2); - ImOnline::note_uncle(3, 0); - - // when - UintAuthorityId::set_all_keys(vec![0]); // all authorities use session key 0 - ImOnline::offchain(4); - - // then - let transaction = state.write().transactions.pop().unwrap(); - // All validators have `0` as their session key, but we should only produce 1 hearbeat. - assert_eq!(state.read().transactions.len(), 0); - // check stuff about the transaction. - let ex: Extrinsic = Decode::decode(&mut &*transaction).unwrap(); - let heartbeat = match ex.1 { - crate::mock::Call::ImOnline(crate::Call::heartbeat(h, _)) => h, - e => panic!("Unexpected call: {:?}", e), - }; - - assert_eq!( - heartbeat, - Heartbeat { - block_number: 4, - network_state: runtime_io::offchain::network_state().unwrap(), - session_index: 2, - authority_index: 0, - } - ); - }); -} diff --git a/srml/kton/Cargo.toml b/srml/kton/Cargo.toml deleted file mode 100644 index e9868caf1..000000000 --- a/srml/kton/Cargo.toml +++ /dev/null @@ -1,44 +0,0 @@ -[package] -name = "darwinia-kton" -version = "0.2.0" -authors = ["Darwinia Network "] -edition = "2018" - -[dependencies] -# crates.io -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.101", optional = true } - -# github.com -rstd = { package = "sr-std", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -support = { package = "srml-support", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sr-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -system = { package = "srml-system", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -timestamp = { package = "srml-timestamp", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } - -# darwinia -darwinia-support = { path = "../support", default-features = false } -ring = { package = "darwinia-balances", path = "../balances", default-features = false } - -[dev-dependencies] -runtime-io = { package = "sr-io", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -substrate-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -[features] -default = ["std"] -std = [ - "codec/std", - "serde", - - "rstd/std", - "sr-primitives/std", - "support/std", - "system/std", - "timestamp/std", - - "darwinia-support/std", - "ring/std", -] - -# test -transfer-fee = ["std"] diff --git a/srml/kton/src/lib.rs b/srml/kton/src/lib.rs deleted file mode 100644 index 5c00f8eed..000000000 --- a/srml/kton/src/lib.rs +++ /dev/null @@ -1,628 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std)] - -#[allow(unused)] -#[cfg(all(feature = "std", test))] -mod mock; -#[cfg(all(feature = "std", test))] -mod tests; - -#[cfg(not(feature = "std"))] -use rstd::borrow::ToOwned; -use rstd::{cmp, fmt::Debug, mem, prelude::*, result}; -use sr_primitives::{ - traits::{ - Bounded, CheckedAdd, CheckedSub, MaybeSerializeDeserialize, SaturatedConversion, Saturating, StaticLookup, Zero, - }, - weights::SimpleDispatchInfo, -}; -use support::{ - decl_event, decl_module, decl_storage, - dispatch::Result, - traits::{Currency, ExistenceRequirement, Get, Imbalance, OnUnbalanced, SignedImbalance, UpdateBalanceOutcome}, - StorageMap, StorageValue, -}; -use system::{ensure_root, ensure_signed}; - -use darwinia_support::{BalanceLock, LockIdentifier, LockableCurrency, WithdrawLock, WithdrawReason, WithdrawReasons}; -use imbalances::{NegativeImbalance, PositiveImbalance}; -use ring::{imbalances::NegativeImbalance as NegativeImbalanceRing, Balance, VestingSchedule}; - -pub trait Trait: ring::Trait { - /// The overarching event type. - type Event: From> + Into<::Event>; -} - -decl_event!( - pub enum Event where - ::AccountId, - { - /// Transfer succeeded (from, to, value, fees). - Transfer(AccountId, AccountId, Balance, Balance), - } -); - -decl_storage! { - trait Store for Module as Kton { - /// The total units issued in the system. - pub TotalIssuance get(fn total_issuance) build(|config: &GenesisConfig| { - config.balances.iter().fold(Zero::zero(), |acc: T::Balance, &(_, n)| acc + n) - }): T::Balance; - - /// Information regarding the vesting of a given account. - pub Vesting get(fn vesting) build(|config: &GenesisConfig| { - // Generate initial vesting configuration - // * who - Account which we are generating vesting configuration for - // * begin - Block when the account will start to vest - // * length - Number of blocks from `begin` until fully vested - // * liquid - Number of units which can be spent before vesting begins - config.vesting.iter().filter_map(|&(ref who, begin, length, liquid)| { - let length = >::from(length); - - config.balances.iter() - .find(|&&(ref w, _)| w == who) - .map(|&(_, balance)| { - // Total genesis `balance` minus `liquid` equals funds locked for vesting - let locked = balance.saturating_sub(liquid); - // Number of units unlocked per block after `begin` - let per_block = locked / length.max(sr_primitives::traits::One::one()); - - (who.clone(), VestingSchedule { - locked: locked, - per_block: per_block, - starting_block: begin - }) - }) - }).collect::>() - }): map T::AccountId => Option>; - - /// The 'free' balance of a given account. - /// - /// This is the only balance that matters in terms of most operations on tokens. It - /// alone is used to determine the balance when in the contract execution environment. When this - /// balance falls below the value of `ExistentialDeposit`, then the 'current account' is - /// deleted: specifically `FreeBalance`. Further, the `OnFreeBalanceZero` callback - /// is invoked, giving a chance to external modules to clean up data associated with - /// the deleted account. - /// - /// `system::AccountNonce` is also deleted if `ReservedBalance` is also zero (it also gets - /// collapsed to zero if it ever becomes less than `ExistentialDeposit`. - pub FreeBalance get(fn free_balance) build(|config: &GenesisConfig| config.balances.clone()): - map T::AccountId => T::Balance; - - /// The amount of the balance of a given account that is externally reserved; this can still get - /// slashed, but gets slashed last of all. - /// - /// This balance is a 'reserve' balance that other subsystems use in order to set aside tokens - /// that are still 'owned' by the account holder, but which are suspendable. - /// - /// When this balance falls below the value of `ExistentialDeposit`, then this 'reserve account' - /// is deleted: specifically, `ReservedBalance`. - /// - /// `system::AccountNonce` is also deleted if `FreeBalance` is also zero (it also gets - /// collapsed to zero if it ever becomes less than `ExistentialDeposit`.) - pub ReservedBalance get(fn reserved_balance): map T::AccountId => T::Balance; - - pub Locks get(fn locks): map T::AccountId => Vec>; - } - add_extra_genesis { - config(balances): Vec<(T::AccountId, T::Balance)>; - config(vesting): Vec<(T::AccountId, T::BlockNumber, T::BlockNumber, T::Balance)>; - // ^^ begin, length, amount liquid at genesis - } -} - -decl_module! { - pub struct Module for enum Call where origin: T::Origin { - fn deposit_event() = default; - - /// Transfer some liquid free balance to another account. - /// - /// `transfer` will set the `FreeBalance` of the sender and receiver. - /// It will decrease the total issuance of the system by the `TransferFee`. - /// If the sender's account is below the existential deposit as a result - /// of the transfer, the account will be reaped. - /// - /// The dispatch origin for this call must be `Signed` by the transactor. - /// - /// # - /// - Dependent on arguments but not critical, given proper implementations for - /// input config types. See related functions below. - /// - It contains a limited number of reads and writes internally and no complex computation. - /// - /// Related functions: - /// - /// - `ensure_can_withdraw` is always called internally but has a bounded complexity. - /// - Transferring balances to accounts that did not exist before will cause - /// `T::OnNewAccount::on_new_account` to be called. - /// - Removing enough funds from an account will trigger - /// `T::DustRemoval::on_unbalanced` and `T::OnFreeBalanceZero::on_free_balance_zero`. - /// - `transfer_keep_alive` works the same way as `transfer`, but has an additional - /// check that the transfer will not kill the origin account. - /// - /// # - #[weight = SimpleDispatchInfo::FixedNormal(1_000_000)] - pub fn transfer( - origin, - dest: ::Source, - #[compact] value: T::Balance - ) { - let transactor = ensure_signed(origin)?; - let dest = T::Lookup::lookup(dest)?; - >::transfer(&transactor, &dest, value, ExistenceRequirement::AllowDeath)?; - } - - /// Set the balances of a given account. - /// - /// This will alter `FreeBalance` and `ReservedBalance` in storage. it will - /// also decrease the total issuance of the system (`TotalIssuance`). - /// If the new free or reserved balance is below the existential deposit, - /// it will reset the account nonce (`system::AccountNonce`). - /// - /// The dispatch origin for this call is `root`. - /// - /// # - /// - Independent of the arguments. - /// - Contains a limited number of reads and writes. - /// # - #[weight = SimpleDispatchInfo::FixedOperational(50_000)] - fn set_balance( - origin, - who: ::Source, - #[compact] new_free: T::Balance, - #[compact] new_reserved: T::Balance - ) { - ensure_root(origin)?; - let who = T::Lookup::lookup(who)?; - - let current_free = >::get(&who); - if new_free > current_free { - mem::drop(PositiveImbalance::::new(new_free - current_free)); - } else if new_free < current_free { - mem::drop(NegativeImbalance::::new(current_free - new_free)); - } - Self::set_free_balance(&who, new_free); - - let current_reserved = >::get(&who); - if new_reserved > current_reserved { - mem::drop(PositiveImbalance::::new(new_reserved - current_reserved)); - } else if new_reserved < current_reserved { - mem::drop(NegativeImbalance::::new(current_reserved - new_reserved)); - } - Self::set_reserved_balance(&who, new_reserved); - } - - /// Exactly as `transfer`, except the origin must be root and the source account may be - /// specified. - #[weight = SimpleDispatchInfo::FixedNormal(1_000_000)] - pub fn force_transfer( - origin, - source: ::Source, - dest: ::Source, - #[compact] value: T::Balance - ) { - ensure_root(origin)?; - let source = T::Lookup::lookup(source)?; - let dest = T::Lookup::lookup(dest)?; - >::transfer(&source, &dest, value, ExistenceRequirement::AllowDeath)?; - } - } -} - -impl Module { - // PUBLIC IMMUTABLES - - /// Get the amount that is currently being vested and cannot be transferred out of this account. - pub fn vesting_balance(who: &T::AccountId) -> T::Balance { - if let Some(v) = Self::vesting(who) { - Self::free_balance(who).min(v.locked_at(>::block_number())) - } else { - Zero::zero() - } - } - - // PRIVATE MUTABLES - - /// Set the reserved balance of an account to some new value. Will enforce `ExistentialDeposit` - /// law, annulling the account as needed. - /// - /// Doesn't do any preparatory work for creating a new account, so should only be used when it - /// is known that the account already exists. - /// - /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that - /// the caller will do this. - fn set_reserved_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { - >::insert(who, balance); - UpdateBalanceOutcome::Updated - } - - /// Set the free balance of an account to some new value. Will enforce `ExistentialDeposit` - /// law, annulling the account as needed. - /// - /// Doesn't do any preparatory work for creating a new account, so should only be used when it - /// is known that the account already exists. - /// - /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that - /// the caller will do this. - fn set_free_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { - // Commented out for now - but consider it instructive. - // assert!(!Self::total_balance(who).is_zero()); - >::insert(who, balance); - UpdateBalanceOutcome::Updated - } -} - -// wrapping these imbalances in a private module is necessary to ensure absolute privacy -// of the inner member. -mod imbalances { - use rstd::mem; - - use crate::{result, Imbalance, Saturating, StorageValue, Trait, Zero}; - - /// Opaque, move-only struct with private fields that serves as a token denoting that - /// funds have been created without any equal and opposite accounting. - #[must_use] - pub struct PositiveImbalance(T::Balance); - - impl PositiveImbalance { - /// Create a new positive imbalance from a balance. - pub fn new(amount: T::Balance) -> Self { - PositiveImbalance(amount) - } - } - - /// Opaque, move-only struct with private fields that serves as a token denoting that - /// funds have been destroyed without any equal and opposite accounting. - #[must_use] - pub struct NegativeImbalance(T::Balance); - - impl NegativeImbalance { - /// Create a new negative imbalance from a balance. - pub fn new(amount: T::Balance) -> Self { - NegativeImbalance(amount) - } - } - - impl Imbalance for PositiveImbalance { - type Opposite = NegativeImbalance; - - fn zero() -> Self { - Self(Zero::zero()) - } - fn drop_zero(self) -> result::Result<(), Self> { - if self.0.is_zero() { - Ok(()) - } else { - Err(self) - } - } - fn split(self, amount: T::Balance) -> (Self, Self) { - let first = self.0.min(amount); - let second = self.0 - first; - - mem::forget(self); - (Self(first), Self(second)) - } - fn merge(mut self, other: Self) -> Self { - self.0 = self.0.saturating_add(other.0); - mem::forget(other); - - self - } - fn subsume(&mut self, other: Self) { - self.0 = self.0.saturating_add(other.0); - mem::forget(other); - } - fn offset(self, other: Self::Opposite) -> result::Result { - let (a, b) = (self.0, other.0); - mem::forget((self, other)); - - if a >= b { - Ok(Self(a - b)) - } else { - Err(NegativeImbalance::new(b - a)) - } - } - fn peek(&self) -> T::Balance { - self.0 - } - } - - impl Imbalance for NegativeImbalance { - type Opposite = PositiveImbalance; - - fn zero() -> Self { - Self(Zero::zero()) - } - fn drop_zero(self) -> result::Result<(), Self> { - if self.0.is_zero() { - Ok(()) - } else { - Err(self) - } - } - fn split(self, amount: T::Balance) -> (Self, Self) { - let first = self.0.min(amount); - let second = self.0 - first; - - mem::forget(self); - (Self(first), Self(second)) - } - fn merge(mut self, other: Self) -> Self { - self.0 = self.0.saturating_add(other.0); - mem::forget(other); - - self - } - fn subsume(&mut self, other: Self) { - self.0 = self.0.saturating_add(other.0); - mem::forget(other); - } - fn offset(self, other: Self::Opposite) -> result::Result { - let (a, b) = (self.0, other.0); - mem::forget((self, other)); - - if a >= b { - Ok(Self(a - b)) - } else { - Err(PositiveImbalance::new(b - a)) - } - } - fn peek(&self) -> T::Balance { - self.0 - } - } - - impl Drop for PositiveImbalance { - /// Basic drop handler will just square up the total issuance. - fn drop(&mut self) { - >::mutate(|v| *v = v.saturating_add(self.0)); - } - } - - impl Drop for NegativeImbalance { - /// Basic drop handler will just square up the total issuance. - fn drop(&mut self) { - >::mutate(|v| *v = v.saturating_sub(self.0)); - } - } -} - -impl Currency for Module -where - T::Balance: MaybeSerializeDeserialize + Debug, -{ - type Balance = T::Balance; - type PositiveImbalance = PositiveImbalance; - type NegativeImbalance = NegativeImbalance; - - fn total_balance(who: &T::AccountId) -> Self::Balance { - Self::free_balance(who) + Self::reserved_balance(who) - } - - fn can_slash(who: &T::AccountId, value: Self::Balance) -> bool { - Self::free_balance(who) >= value - } - - fn total_issuance() -> Self::Balance { - >::get() - } - - fn minimum_balance() -> Self::Balance { - Zero::zero() - } - - fn burn(mut amount: Self::Balance) -> Self::PositiveImbalance { - >::mutate(|issued| { - *issued = issued.checked_sub(&amount).unwrap_or_else(|| { - amount = *issued; - Zero::zero() - }); - }); - PositiveImbalance::new(amount) - } - - fn issue(mut amount: Self::Balance) -> Self::NegativeImbalance { - >::mutate(|issued| { - *issued = issued.checked_add(&amount).unwrap_or_else(|| { - amount = Self::Balance::max_value() - *issued; - Self::Balance::max_value() - }) - }); - NegativeImbalance::new(amount) - } - - fn free_balance(who: &T::AccountId) -> Self::Balance { - >::get(who) - } - - // # - // Despite iterating over a list of locks, they are limited by the number of - // lock IDs, which means the number of runtime modules that intend to use and create locks. - // # - fn ensure_can_withdraw( - who: &T::AccountId, - _amount: T::Balance, - reasons: WithdrawReasons, - new_balance: T::Balance, - ) -> Result { - if reasons.intersects(WithdrawReason::Reserve | WithdrawReason::Transfer) - && Self::vesting_balance(who) > new_balance - { - return Err("vesting balance too high to send value"); - } - let locks = Self::locks(who); - if locks.is_empty() { - return Ok(()); - } - - let now = >::now(); - if locks - .into_iter() - .all(|l| l.withdraw_lock.can_withdraw(now, new_balance) || !l.reasons.intersects(reasons)) - { - Ok(()) - } else { - Err("account liquidity restrictions prevent withdrawal") - } - } - - fn transfer( - transactor: &T::AccountId, - dest: &T::AccountId, - value: Self::Balance, - _existence_requirement: ExistenceRequirement, - ) -> Result { - let fee = ::TransferFee::get(); - - let new_from_ring = >::get(transactor) - .checked_sub(&fee) - .ok_or("Transfer Fee - NOT ENOUGH RING")?; - >::ensure_can_withdraw(transactor, fee, WithdrawReason::Fee.into(), new_from_ring)?; - - let new_from_kton = Self::free_balance(transactor) - .checked_sub(&value) - .ok_or("balance too low to send value")?; - Self::ensure_can_withdraw(transactor, value, WithdrawReason::Transfer.into(), new_from_kton)?; - - let new_to_kton = Self::free_balance(dest) - .checked_add(&value) - .ok_or("destination balance too high to receive value")?; - - if transactor != dest { - if new_from_ring < as Currency<::AccountId>>::minimum_balance() { - return Err("transfer would kill account"); - } - - >::set_free_balance(transactor, new_from_ring); - Self::set_free_balance(transactor, new_from_kton); - Self::set_free_balance(dest, new_to_kton); - - ::TransferPayment::on_unbalanced(NegativeImbalanceRing::new(fee)); - - Self::deposit_event(RawEvent::Transfer( - transactor.to_owned(), - dest.to_owned(), - value.saturated_into(), - fee.saturated_into(), - )); - } - - Ok(()) - } - - fn slash(who: &T::AccountId, value: Self::Balance) -> (Self::NegativeImbalance, Self::Balance) { - let free_balance = Self::free_balance(who); - let free_slash = cmp::min(free_balance, value); - Self::set_free_balance(who, free_balance - free_slash); - let remaining_slash = value - free_slash; - // NOTE: `slash()` prefers free balance, but assumes that reserve balance can be drawn - // from in extreme circumstances. `can_slash()` should be used prior to `slash()` to avoid having - // to draw from reserved funds, however we err on the side of punishment if things are inconsistent - // or `can_slash` wasn't used appropriately. - if !remaining_slash.is_zero() { - let reserved_balance = Self::reserved_balance(who); - let reserved_slash = cmp::min(reserved_balance, remaining_slash); - Self::set_reserved_balance(who, reserved_balance - reserved_slash); - ( - NegativeImbalance::new(free_slash + reserved_slash), - remaining_slash - reserved_slash, - ) - } else { - (NegativeImbalance::new(value), Zero::zero()) - } - } - - fn deposit_into_existing( - who: &T::AccountId, - value: Self::Balance, - ) -> result::Result { - if Self::total_balance(who).is_zero() { - return Err("beneficiary account must pre-exist"); - } - Self::set_free_balance(who, Self::free_balance(who) + value); - Ok(PositiveImbalance::new(value)) - } - - fn deposit_creating(who: &T::AccountId, value: Self::Balance) -> Self::PositiveImbalance { - let (imbalance, _) = Self::make_free_balance_be(who, Self::free_balance(who) + value); - if let SignedImbalance::Positive(p) = imbalance { - p - } else { - // Impossible, but be defensive. - Self::PositiveImbalance::zero() - } - } - - fn withdraw( - who: &T::AccountId, - value: Self::Balance, - reasons: WithdrawReasons, - _liveness: ExistenceRequirement, - ) -> result::Result { - let old_balance = Self::free_balance(who); - if let Some(new_balance) = old_balance.checked_sub(&value) { - Self::ensure_can_withdraw(who, value, reasons, new_balance)?; - Self::set_free_balance(who, new_balance); - Ok(NegativeImbalance::new(value)) - } else { - Err("too few free funds in account") - } - } - - fn make_free_balance_be( - who: &T::AccountId, - balance: Self::Balance, - ) -> ( - SignedImbalance, - UpdateBalanceOutcome, - ) { - let original = Self::free_balance(who); - let imbalance = if original <= balance { - SignedImbalance::Positive(PositiveImbalance::new(balance - original)) - } else { - SignedImbalance::Negative(NegativeImbalance::new(original - balance)) - }; - let outcome = { - Self::set_free_balance(who, balance); - UpdateBalanceOutcome::Updated - }; - - (imbalance, outcome) - } -} - -impl LockableCurrency for Module -where - T::Balance: MaybeSerializeDeserialize + Debug, -{ - type Moment = T::Moment; - - fn set_lock( - id: LockIdentifier, - who: &T::AccountId, - withdraw_lock: WithdrawLock, - reasons: WithdrawReasons, - ) { - let mut new_lock = Some(BalanceLock { - id, - withdraw_lock, - reasons, - }); - let mut locks = Self::locks(who) - .into_iter() - .filter_map(|l| if l.id == id { new_lock.take() } else { Some(l) }) - .collect::>(); - if let Some(lock) = new_lock { - locks.push(lock) - } - >::insert(who, locks); - } - - fn remove_lock(id: LockIdentifier, who: &T::AccountId) { - let locks = Self::locks(who) - .into_iter() - .filter_map(|l| if l.id != id { Some(l) } else { None }) - .collect::>(); - >::insert(who, locks); - } -} diff --git a/srml/kton/src/mock.rs b/srml/kton/src/mock.rs deleted file mode 100644 index e74f68c9d..000000000 --- a/srml/kton/src/mock.rs +++ /dev/null @@ -1,149 +0,0 @@ -use sr_primitives::{ - testing::Header, - traits::{BlakeTwo256, IdentityLookup}, - weights::Weight, - Perbill, -}; -use substrate_primitives::H256; -use support::{impl_outer_origin, parameter_types}; - -use crate::*; - -/// The AccountId alias in this test module. -pub type AccountId = u64; -pub type BlockNumber = u64; -pub type Moment = u64; - -pub type System = system::Module; -pub type Timestamp = timestamp::Module; - -#[cfg(feature = "transfer-fee")] -pub type Ring = ring::Module; -pub type Kton = Module; - -pub const NANO: Balance = 1; -pub const MICRO: Balance = 1_000 * NANO; -pub const MILLI: Balance = 1_000 * MICRO; -pub const COIN: Balance = 1_000 * MILLI; - -impl_outer_origin! { - pub enum Origin for Test {} -} - -// Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. -#[derive(Clone, PartialEq, Eq, Debug)] -pub struct Test; -parameter_types! { - pub const BlockHashCount: BlockNumber = 250; - pub const MaximumBlockWeight: Weight = 1024; - pub const MaximumBlockLength: u32 = 2 * 1024; - pub const AvailableBlockRatio: Perbill = Perbill::one(); -} -impl system::Trait for Test { - type Origin = Origin; - type Call = (); - type Index = u64; - type BlockNumber = BlockNumber; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = Header; - type Event = (); - type BlockHashCount = BlockHashCount; - type MaximumBlockWeight = MaximumBlockWeight; - type MaximumBlockLength = MaximumBlockLength; - type AvailableBlockRatio = AvailableBlockRatio; - type Version = (); -} - -parameter_types! { - pub const MinimumPeriod: Moment = 5; -} -impl timestamp::Trait for Test { - type Moment = u64; - type OnTimestampSet = (); - type MinimumPeriod = MinimumPeriod; -} - -#[cfg(feature = "transfer-fee")] -parameter_types! { - pub const TransferFee: Balance = 1 * MICRO; -} -#[cfg(not(feature = "transfer-fee"))] -parameter_types! { - pub const TransferFee: Balance = 0; -} -impl ring::Trait for Test { - type Balance = Balance; - type OnFreeBalanceZero = (); - type OnNewAccount = (); - type TransferPayment = (); - type DustRemoval = (); - type Event = (); - type ExistentialDeposit = (); - type TransferFee = TransferFee; - type CreationFee = (); -} - -impl Trait for Test { - type Event = (); -} - -pub struct ExtBuilder { - balance_factor: Balance, - vesting: bool, -} - -impl Default for ExtBuilder { - fn default() -> Self { - Self { - balance_factor: COIN, - vesting: false, - } - } -} - -impl ExtBuilder { - pub fn balance_factor(mut self, balance_factor: Balance) -> Self { - self.balance_factor = balance_factor; - self - } - pub fn vesting(mut self, vesting: bool) -> Self { - self.vesting = vesting; - self - } - pub fn build(self) -> runtime_io::TestExternalities { - let mut t = system::GenesisConfig::default().build_storage::().unwrap(); - GenesisConfig:: { - balances: vec![ - (1, 10 * self.balance_factor), - (2, 20 * self.balance_factor), - (3, 300 * self.balance_factor), - (4, 400 * self.balance_factor), - (10, self.balance_factor), - (11, 1000 * self.balance_factor), - (20, self.balance_factor), - (21, 2000 * self.balance_factor), - (30, self.balance_factor), - (31, 2000 * self.balance_factor), - (40, self.balance_factor), - (41, 2000 * self.balance_factor), - (100, 2000 * self.balance_factor), - (101, 2000 * self.balance_factor), - ], - vesting: if self.vesting { - vec![ - (1, 0, 10, 5 * self.balance_factor), - (2, 10, 20, 0), - (12, 10, 20, 5 * self.balance_factor), - ] - } else { - vec![] - }, - } - .assimilate_storage(&mut t) - .unwrap(); - t.into() - } -} diff --git a/srml/kton/src/tests.rs b/srml/kton/src/tests.rs deleted file mode 100644 index 6980abd76..000000000 --- a/srml/kton/src/tests.rs +++ /dev/null @@ -1,262 +0,0 @@ -use support::{assert_err, assert_ok, traits::Currency}; - -use crate::{mock::*, *}; -use darwinia_support::{LockIdentifier, NormalLock, WithdrawLock, WithdrawReasons}; - -const ID_1: LockIdentifier = *b"1 "; -const ID_2: LockIdentifier = *b"2 "; -const ID_3: LockIdentifier = *b"3 "; - -#[cfg(feature = "transfer-fee")] -mod with_transfer_fee { - use super::*; - - #[test] - fn transfer_should_work() { - ExtBuilder::default().build().execute_with(|| { - let _ = Kton::deposit_creating(&666, 100); - - assert_err!( - Kton::transfer(Origin::signed(666), 777, 50), - "Transfer Fee - NOT ENOUGH RING", - ); - - let _ = Ring::deposit_creating(&666, 1 * MICRO); - assert_ok!(Kton::transfer(Origin::signed(666), 777, 50)); - assert_eq!(Kton::total_balance(&666), 50); - assert_eq!(Kton::total_balance(&777), 50); - - assert_err!( - Kton::transfer(Origin::signed(666), 777, 50), - "Transfer Fee - NOT ENOUGH RING", - ); - - let _ = Ring::deposit_creating(&666, 1 * MICRO); - assert_ok!(Kton::transfer(Origin::signed(666), 777, 50)); - assert_eq!(Kton::total_balance(&666), 0); - assert_eq!(Kton::total_balance(&777), 100); - }); - } -} - -#[cfg(not(feature = "transfer-fee"))] -mod without_transfer_fee { - use super::*; - - #[test] - fn transfer_should_work() { - ExtBuilder::default().build().execute_with(|| { - let _ = Kton::deposit_creating(&666, 100); - - assert_ok!(Kton::transfer(Origin::signed(666), 777, 50)); - assert_eq!(Kton::total_balance(&666), 50); - assert_eq!(Kton::total_balance(&777), 50); - - assert_ok!(Kton::transfer(Origin::signed(666), 777, 50)); - assert_eq!(Kton::total_balance(&666), 0); - assert_eq!(Kton::total_balance(&777), 100); - - assert_ok!(Kton::transfer(Origin::signed(666), 777, 0)); - }); - } - - // TODO - #[test] - fn transfer_should_fail() { - ExtBuilder::default().vesting(true).build().execute_with(|| { - let _ = Kton::deposit_creating(&777, 1); - assert_err!( - Kton::transfer(Origin::signed(666), 777, 50), - "balance too low to send value", - ); - - let _ = Kton::deposit_creating(&666, Balance::max_value()); - assert_err!( - Kton::transfer(Origin::signed(777), 666, 1), - "destination balance too high to receive value", - ); - - assert_err!( - Kton::transfer(Origin::signed(2), 777, Kton::vesting_balance(&2)), - "vesting balance too high to send value", - ); - Kton::set_lock( - ID_1, - &777, - WithdrawLock::Normal(NormalLock { - amount: Balance::max_value(), - until: Moment::max_value(), - }), - WithdrawReasons::all(), - ); - assert_err!( - Kton::transfer(Origin::signed(777), 1, 1), - "account liquidity restrictions prevent withdrawal", - ); - }); - } - - #[test] - fn set_lock_should_work() { - ExtBuilder::default().build().execute_with(|| { - let lock_ids = [[0; 8], [1; 8], [2; 8], [3; 8]]; - let balance_per_lock = Kton::free_balance(&1) / (lock_ids.len() as Balance); - - // account `1`'s vesting length - System::set_block_number(4); - - { - let mut locks = vec![]; - for lock_id in lock_ids.iter() { - Kton::set_lock( - *lock_id, - &1, - WithdrawLock::Normal(NormalLock { - amount: balance_per_lock, - until: Moment::max_value(), - }), - WithdrawReasons::all(), - ); - locks.push(BalanceLock { - id: *lock_id, - withdraw_lock: WithdrawLock::Normal(NormalLock { - amount: balance_per_lock, - until: Moment::max_value(), - }), - reasons: WithdrawReasons::all(), - }); - assert_eq!(Kton::locks(&1), locks); - } - } - - for _ in 0..lock_ids.len() - 1 { - assert_ok!(Kton::transfer(Origin::signed(1), 2, balance_per_lock)); - } - assert_err!( - Kton::transfer(Origin::signed(1), 2, balance_per_lock), - "account liquidity restrictions prevent withdrawal" - ); - }); - } - - #[test] - fn remove_lock_should_work() { - ExtBuilder::default().build().execute_with(|| { - Timestamp::set_timestamp(0); - let ts: u64 = Timestamp::now().into(); - Kton::set_lock( - ID_1, - &2, - WithdrawLock::Normal(NormalLock { - amount: Balance::max_value(), - until: Moment::max_value(), - }), - WithdrawReasons::all(), - ); - assert_err!( - Kton::transfer(Origin::signed(2), 1, 1), - "account liquidity restrictions prevent withdrawal" - ); - - // unexpired - Kton::set_lock( - ID_2, - &2, - WithdrawLock::Normal(NormalLock { - amount: Balance::max_value(), - until: ts + 1, - }), - WithdrawReasons::all(), - ); - Kton::remove_lock(ID_1, &2); - Timestamp::set_timestamp(ts); - assert_err!( - Kton::transfer(Origin::signed(2), 1, 1), - "account liquidity restrictions prevent withdrawal" - ); - Kton::remove_lock(ID_2, &2); - assert_ok!(Kton::transfer(Origin::signed(2), 1, 1)); - - // expired - Kton::set_lock( - ID_3, - &2, - WithdrawLock::Normal(NormalLock { - amount: Balance::max_value(), - until: ts, - }), - WithdrawReasons::all(), - ); - assert_ok!(Kton::transfer(Origin::signed(2), 1, 1)); - }); - } - - #[test] - fn update_lock_should_work() { - ExtBuilder::default().build().execute_with(|| { - let mut locks = vec![]; - for id in 0..10 { - // until > 1 - locks.push(BalanceLock { - id: [id; 8], - withdraw_lock: WithdrawLock::Normal(NormalLock { amount: 1, until: 2 }), - reasons: WithdrawReasons::none(), - }); - Kton::set_lock( - [id; 8], - &1, - WithdrawLock::Normal(NormalLock { amount: 1, until: 2 }), - WithdrawReasons::none(), - ); - } - let update_id = 4; - for amount in 32767..65535 { - let until = amount as Moment + 1; - locks[update_id as usize] = BalanceLock { - id: [update_id; 8], - withdraw_lock: WithdrawLock::Normal(NormalLock { amount, until }), - reasons: WithdrawReasons::all(), - }; - Kton::set_lock( - [update_id; 8], - &1, - WithdrawLock::Normal(NormalLock { amount, until }), - WithdrawReasons::all(), - ); - assert_eq!(Kton::locks(&1), locks); - } - }); - } - - #[test] - fn combination_locking_should_work() { - ExtBuilder::default().build().execute_with(|| { - let _ = Kton::deposit_creating(&1001, 10); - Kton::set_lock( - ID_1, - &1001, - WithdrawLock::Normal(NormalLock { - amount: Balance::max_value(), - until: 0, - }), - WithdrawReasons::none(), - ); - Kton::set_lock( - ID_2, - &1001, - WithdrawLock::Normal(NormalLock { - amount: 0, - until: Moment::max_value(), - }), - WithdrawReasons::none(), - ); - Kton::set_lock( - ID_3, - &1001, - WithdrawLock::Normal(NormalLock { amount: 0, until: 0 }), - WithdrawReasons::all(), - ); - assert_ok!(Kton::transfer(Origin::signed(1001), 1002, 1)); - }); - } -} diff --git a/srml/staking/Cargo.toml b/srml/staking/Cargo.toml deleted file mode 100644 index 2faa44ba2..000000000 --- a/srml/staking/Cargo.toml +++ /dev/null @@ -1,54 +0,0 @@ -[package] -name = "darwinia-staking" -version = "0.3.0" -authors = ["darwinia "] -edition = "2018" - -[dependencies] -# crates.io -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -regex = { version = "1.3.1", optional = true } -serde = { version = "1.0.101", optional = true } - -# github.com -authorship = { package = "srml-authorship", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -phragmen = { package = "substrate-phragmen", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -rstd = { package = "sr-std", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -session = { package = "srml-session",git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false, features = ["historical"] } -srml-support = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sr-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sr-staking-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -substrate-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -system = { package = "srml-system", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -timestamp = { package = "srml-timestamp", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } - -# darwinia -darwinia-support = { package = "darwinia-support", path = "../support", default-features = false } - -[dev-dependencies] -runtime-io = { package = "sr-io", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } - -balances = { package = "darwinia-balances", path = '../balances' } -kton = { package = "darwinia-kton", path = "../kton" } - -[features] -equalize = [] -default = ["std", "equalize"] -std = [ - "codec/std", - "regex/std", - "serde", - - "authorship/std", - "phragmen/std", - "rstd/std", - "session/std", - "srml-support/std", - "sr-primitives/std", - "sr-staking-primitives/std", - "substrate-primitives/std", - "system/std", - "timestamp/std", - - "darwinia-support/std", -] diff --git a/srml/staking/src/inflation.rs b/srml/staking/src/inflation.rs deleted file mode 100644 index 64a08f2c9..000000000 --- a/srml/staking/src/inflation.rs +++ /dev/null @@ -1,50 +0,0 @@ -use rstd::convert::TryInto; -use sr_primitives::{ - traits::{IntegerSquareRoot, SaturatedConversion}, - Perbill, Perquintill, -}; -use substrate_primitives::U256; - -use crate::{KtonBalance, Moment, RingBalance, Trait}; - -// 1 - (99 / 100) ^ sqrt(year) -// () -> RingBalance -pub fn compute_total_payout( - era_duration: Moment, - living_time: Moment, - total_left: u128, - payout_fraction: Perbill, -) -> (RingBalance, RingBalance) { - // Milliseconds per year for the Julian year (365.25 days). - const MILLISECONDS_PER_YEAR: Moment = ((36525 * 24 * 60 * 60) / 100) * 1000; - - let year: u32 = (living_time / MILLISECONDS_PER_YEAR + 1).saturated_into::(); - - let portion = Perquintill::from_rational_approximation(era_duration, MILLISECONDS_PER_YEAR); - - let maximum = portion * total_left; - - let maximum = maximum - maximum * 99_u128.pow(year.integer_sqrt()) / 100_u128.pow(year.integer_sqrt()); - - let payout = payout_fraction * maximum; - - let payout: RingBalance = >::saturated_from::(payout); - - let maximum: RingBalance = >::saturated_from::(maximum); - - (payout, maximum) -} - -// consistent with the formula in smart contract in evolution land which can be found in -// https://github.com/evolutionlandorg/bank/blob/master/contracts/GringottsBank.sol#L280 -pub fn compute_kton_return(value: RingBalance, months: u64) -> KtonBalance { - let value = value.saturated_into::(); - let no = U256::from(67).pow(U256::from(months)); - let de = U256::from(66).pow(U256::from(months)); - - let quotient = no / de; - let remainder = no % de; - let res = U256::from(value) * (U256::from(1000) * (quotient - 1) + U256::from(1000) * remainder / de) - / U256::from(1_970_000); - res.as_u128().try_into().unwrap_or_default() -} diff --git a/srml/staking/src/lib.rs b/srml/staking/src/lib.rs deleted file mode 100644 index ef4fcbd7c..000000000 --- a/srml/staking/src/lib.rs +++ /dev/null @@ -1,2032 +0,0 @@ -// Copyright 2017-2019 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 . - -#![recursion_limit = "128"] -#![cfg_attr(not(feature = "std"), no_std)] -#![feature(drain_filter)] - -pub mod inflation; - -mod err { - pub const CONTROLLER_INVALID: &'static str = "Controller Account - INVALID"; - pub const CONTROLLER_ALREADY_PAIRED: &'static str = "Controller Account - ALREADY PAIRED"; - - pub const STASH_INVALID: &'static str = "Stash Account - INVALID"; - pub const STASH_ALREADY_BONDED: &'static str = "Stash Account - ALREADY BONDED"; - - pub const UNLOCK_CHUNKS_REACH_MAX: &'static str = "Unlock Chunks - REACH MAX VALUE 32"; - - pub const CLAIM_DEPOSITS_EXPIRE_TIME_INVALID: &'static str = - "Claim Deposits With Punish - NOTHING TO CLAIM AT THIS TIME"; - pub const TARGETS_INVALID: &'static str = "Targets - CAN NOT BE EMPTY"; - - pub const NODE_NAME_REACH_MAX: &'static str = "Node Name - REACH MAX LENGTH 32"; - pub const NODE_NAME_CONTAINS_INVALID_CHARS: &'static str = "Node Name - CONTAINS INVALID CHARS SUCH AS '.' AND '@'"; - pub const NODE_NAME_CONTAINS_URLS: &'static str = "Node Name - CONTAINS URLS"; -} - -#[allow(unused)] -#[cfg(all(feature = "std", test))] -mod mock; -#[cfg(all(feature = "std", test))] -mod tests; - -use codec::{Decode, Encode, HasCompact}; -use phragmen::{build_support_map, elect, equalize, ExtendedBalance as Power, PhragmenStakedAssignment}; -#[cfg(feature = "std")] -use regex::bytes::Regex; -#[cfg(not(feature = "std"))] -use rstd::borrow::ToOwned; -use rstd::{prelude::*, result}; -use session::{historical::OnSessionEnding, SelectInitialValidators}; -use sr_primitives::{ - traits::{Bounded, CheckedSub, Convert, One, SaturatedConversion, Saturating, StaticLookup, Zero}, - weights::SimpleDispatchInfo, - Perbill, Perquintill, RuntimeDebug, -}; -#[cfg(feature = "std")] -use sr_primitives::{Deserialize, Serialize}; -use sr_staking_primitives::{ - offence::{Offence, OffenceDetails, OnOffenceHandler, ReportOffence}, - SessionIndex, -}; -use srml_support::{ - decl_event, decl_module, decl_storage, ensure, - traits::{Currency, Get, Imbalance, OnFreeBalanceZero, OnUnbalanced, Time}, -}; -use system::{ensure_root, ensure_signed}; - -use darwinia_support::{ - LockIdentifier, LockableCurrency, NormalLock, OnDepositRedeem, StakingLock, WithdrawLock, WithdrawReason, - WithdrawReasons, -}; - -pub type Balance = u128; -pub type Moment = u64; - -/// 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 Points = u32; - -type RingBalance = <::Ring as Currency<::AccountId>>::Balance; -type RingPositiveImbalance = <::Ring as Currency<::AccountId>>::PositiveImbalance; -type RingNegativeImbalance = <::Ring as Currency<::AccountId>>::NegativeImbalance; - -type KtonBalance = <::Kton as Currency<::AccountId>>::Balance; -type KtonPositiveImbalance = <::Kton as Currency<::AccountId>>::PositiveImbalance; -type KtonNegativeImbalance = <::Kton as Currency<::AccountId>>::NegativeImbalance; - -type MomentOf = <::Time as Time>::Moment; - -const DEFAULT_MINIMUM_VALIDATOR_COUNT: u32 = 4; -const MAX_NOMINATIONS: usize = 16; -const MAX_UNLOCKING_CHUNKS: u32 = 32; -const MONTH_IN_MILLISECONDS: Moment = 30 * 24 * 60 * 60 * 1000; -const NODE_NAME_MAX_LENGTH: usize = 32; -const STAKING_ID: LockIdentifier = *b"staking "; - -/// 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. - 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: Points) { - 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 - } - } -} - -/// Indicates the initial status of the staker. -#[derive(RuntimeDebug)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub enum StakerStatus { - /// Chilling. - Idle, - /// Declared desire in validating or already participating in it. - Validator, - /// Nominating for a group of other stakers. - Nominator(Vec), -} - -/// A destination account for payment. -#[derive(PartialEq, Eq, Copy, Clone, Encode, Decode, RuntimeDebug)] -pub enum RewardDestination { - /// Pay into the stash account, increasing the amount at stake accordingly. - /// for now, we don't use this. - // DeprecatedStaked, - /// Pay into the stash account, not increasing the amount at stake. - Stash, - /// Pay into the controller account. - Controller, -} - -impl Default for RewardDestination { - fn default() -> Self { - RewardDestination::Stash - } -} - -/// Preference of what happens on a slash event. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub struct ValidatorPrefs { - pub node_name: Vec, - /// percent of Reward that validator takes up-front; only the rest is split between themselves and - /// nominators. - #[codec(compact)] - pub validator_payment_ratio: u32, -} - -impl ValidatorPrefs { - /// Check whether a node name is considered as valid - fn check_node_name(&self) -> result::Result<(), &'static str> { - let name = self.node_name.as_slice(); - - { - if name.len() >= NODE_NAME_MAX_LENGTH { - return Err(err::NODE_NAME_REACH_MAX); - } - } - - #[cfg(not(feature = "std"))] - { - if name.contains(&b'.') || name.contains(&b'@') { - return Err(err::NODE_NAME_CONTAINS_INVALID_CHARS); - } - - if name.starts_with("http".as_bytes()) - || name.starts_with("https".as_bytes()) - || name.starts_with("www".as_bytes()) - || name.ends_with("com".as_bytes()) - || name.ends_with("cn".as_bytes()) - || name.ends_with("io".as_bytes()) - || name.ends_with("org".as_bytes()) - || name.ends_with("xyz".as_bytes()) - { - return Err(err::NODE_NAME_CONTAINS_URLS); - } - } - - // TODO: https://github.com/rust-lang/regex/issues/476 - #[cfg(feature = "std")] - { - let invalid_chars = r"[\\.@]"; - let re = Regex::new(invalid_chars).unwrap(); - if re.is_match(&name) { - return Err(err::NODE_NAME_CONTAINS_INVALID_CHARS); - } - - let invalid_patterns = r"^(https?|www)"; - let re = Regex::new(invalid_patterns).unwrap(); - if re.is_match(&name) { - return Err(err::NODE_NAME_CONTAINS_URLS); - } - - let invalid_patterns = r"(com|cn|io|org|xyz)$"; - let re = Regex::new(invalid_patterns).unwrap(); - if re.is_match(&name) { - return Err(err::NODE_NAME_CONTAINS_URLS); - } - } - - Ok(()) - } -} - -impl Default for ValidatorPrefs { - fn default() -> Self { - ValidatorPrefs { - node_name: vec![], - validator_payment_ratio: 0, - } - } -} - -/// To unify *Ring* and *Kton* balances. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub enum StakingBalances -where - RingBalance: HasCompact, - KtonBalance: HasCompact, -{ - RingBalance(RingBalance), - KtonBalance(KtonBalance), -} - -impl Default for StakingBalances -where - RingBalance: Default + HasCompact, - KtonBalance: Default + HasCompact, -{ - fn default() -> Self { - StakingBalances::RingBalance(Default::default()) - } -} - -/// The *Ring* under deposit. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub struct TimeDepositItem { - #[codec(compact)] - pub value: RingBalance, - #[codec(compact)] - pub start_time: Moment, - #[codec(compact)] - pub expire_time: Moment, -} - -/// The ledger of a (bonded) stash. -#[derive(PartialEq, Eq, Default, Clone, Encode, Decode, RuntimeDebug)] -pub struct StakingLedger { - /// The stash account whose balance is actually locked and at stake. - pub stash: AccountId, - - /// The total amount of the stash's balance that will be at stake in any forthcoming - /// rounds. - #[codec(compact)] - pub active_ring: RingBalance, - // active time-deposit ring - #[codec(compact)] - pub active_deposit_ring: RingBalance, - - /// The total amount of the stash's balance that will be at stake in any forthcoming - /// rounds. - #[codec(compact)] - pub active_kton: KtonBalance, - // time-deposit items: - // if you deposit ring for a minimum period, - // you can get KTON as bonus - // which can also be used for staking - pub deposit_items: Vec>, - - pub ring_staking_lock: StakingLock, - pub kton_staking_lock: StakingLock, -} - -/// The amount of exposure (to slashing) than an individual nominator has. -#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, RuntimeDebug)] -pub struct IndividualExposure { - /// The stash account of the nominator in question. - who: AccountId, - /// Amount of funds exposed. - #[codec(compact)] - value: Power, -} - -/// A snapshot of the stake backing a single validator in the system. -#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, Default, RuntimeDebug)] -pub struct Exposure { - /// The total balance backing this validator. - #[codec(compact)] - pub total: Power, - /// The validator's own stash that is exposed. - #[codec(compact)] - pub own: Power, - /// The portions of nominators stashes that are exposed. - pub others: Vec>, -} - -// TODO: doc -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub struct ValidatorReward { - who: AccountId, - #[codec(compact)] - amount: RingBalance, - nominators_reward: Vec>, -} - -// TODO: doc -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub struct NominatorReward { - who: AccountId, - #[codec(compact)] - amount: RingBalance, -} - -/// A slashing event occurred, slashing a validator for a given amount of balance. -#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, Default, RuntimeDebug)] -pub struct SlashJournalEntry { - who: AccountId, - #[codec(compact)] - amount: Power, - // the amount of `who`'s own exposure that was slashed - #[codec(compact)] - own_slash: Power, -} - -/// Means for interacting with a specialized version of the `session` trait. -/// -/// This is needed because `Staking` sets the `ValidatorIdOf` of the `session::Trait` -pub trait SessionInterface: system::Trait { - /// Disable a given validator by stash ID. - /// - /// Returns `true` if new era should be forced at the end of this session. - /// This allows preventing a situation where there is too many validators - /// disabled and block production stalls. - fn disable_validator(validator: &AccountId) -> Result; - /// Get the validators from session. - fn validators() -> Vec; - /// Prune historical session tries up to but not including the given index. - fn prune_historical_up_to(up_to: SessionIndex); -} - -impl SessionInterface<::AccountId> for T -where - T: session::Trait::AccountId>, - T: session::historical::Trait< - FullIdentification = Exposure<::AccountId, Power>, - FullIdentificationOf = ExposureOf, - >, - T::SessionHandler: session::SessionHandler<::AccountId>, - T::OnSessionEnding: session::OnSessionEnding<::AccountId>, - T::SelectInitialValidators: session::SelectInitialValidators<::AccountId>, - T::ValidatorIdOf: Convert<::AccountId, Option<::AccountId>>, -{ - fn disable_validator(validator: &::AccountId) -> Result { - >::disable(validator) - } - - fn validators() -> Vec<::AccountId> { - >::validators() - } - - fn prune_historical_up_to(up_to: SessionIndex) { - >::prune_up_to(up_to); - } -} - -pub trait Trait: timestamp::Trait + session::Trait { - /// Time used for computing era duration. - type Time: Time; - - /// Convert a balance into a number used for election calculation. - /// This must fit into a `u64` but is allowed to be sensibly lossy. - /// TODO: #1377 - /// The backward convert should be removed as the new Phragmen API returns ratio. - /// The post-processing needs it but will be moved to off-chain. TODO: #2908 - type CurrencyToVote: Convert + Convert; - - /// The overarching event type. - type Event: From> + Into<::Event>; - - /// Number of sessions per era. - type SessionsPerEra: Get; - - /// Number of `Moment` that staked funds must remain bonded for. - type BondingDuration: Get; - /// Number of eras that staked funds must remain bonded for. - type BondingDurationInEra: Get; - - /// Interface for interacting with a session module. - type SessionInterface: self::SessionInterface; - - /// The staking balances. - type Ring: LockableCurrency; - /// Tokens have been minted and are unused for validator-reward. - type RingRewardRemainder: OnUnbalanced>; - /// Handler for the unbalanced reduction when slashing a staker. - type RingSlash: OnUnbalanced>; - /// Handler for the unbalanced increment when rewarding a staker. - type RingReward: OnUnbalanced>; - - /// The staking balances. - type Kton: LockableCurrency; - /// Handler for the unbalanced reduction when slashing a staker. - type KtonSlash: OnUnbalanced>; - /// Handler for the unbalanced increment when rewarding a staker. - type KtonReward: OnUnbalanced>; - - // TODO: doc - type Cap: Get<>::Balance>; - // TODO: doc - type GenesisTime: Get>; -} - -/// Mode of era-forcing. -#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub enum Forcing { - /// Not forcing anything - just let whatever happen. - NotForcing, - /// Force a new era, then reset to `NotForcing` as soon as it is done. - ForceNew, - /// Avoid a new era indefinitely. - ForceNone, - /// Force a new era at the end of all sessions indefinitely. - ForceAlways, -} - -impl Default for Forcing { - fn default() -> Self { - Forcing::NotForcing - } -} - -decl_storage! { - trait Store for Module as Staking { - /// 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; - - /// Any validators that may never be slashed or forcibly kicked. It's a Vec since they're - /// easy to initialize and the performance hit is minimal (we expect no more than four - /// invulnerables) and restricted to testnets. - pub Invulnerables get(fn invulnerables) config(): Vec; - - /// Map from all locked "stash" accounts to the controller account. - pub Bonded get(fn bonded): map T::AccountId => Option; - - /// Map from all (unlocked) "controller" accounts to the info regarding the staking. - pub Ledger get(fn ledger): map T::AccountId => Option, KtonBalance, T::Moment>>; - - /// Where the reward payment should be made. Keyed by stash. - pub Payee get(fn payee): map T::AccountId => RewardDestination; - - /// The map from (wannabe) validator stash key to the preferences of that validator. - pub Validators get(fn validators): linked_map T::AccountId => ValidatorPrefs; - - /// The map from nominator stash key to the set of stash keys of all validators to nominate. - pub Nominators get(fn nominators): linked_map T::AccountId => Vec; - - /// 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 get(fn stakers): map T::AccountId => Exposure; - - /// The currently elected validator set keyed by stash account ID. - pub CurrentElected get(fn current_elected): Vec; - - /// The current era index. - pub CurrentEra get(fn current_era) config(): EraIndex; - - /// The start of the current era. - pub CurrentEraStart get(fn current_era_start): MomentOf; - - /// The session index at which the current era started. - pub CurrentEraStartSessionIndex get(fn current_era_start_session_index): SessionIndex; - - /// Rewards for the current era. Using indices of current elected set. - CurrentEraPointsEarned get(fn current_era_reward): EraPoints; - - /// The amount of balance actively at stake for each validator slot, currently. - /// - /// This is used to derive rewards and punishments. - pub SlotStake get(fn slot_stake) build(|config: &GenesisConfig| { - config.stakers.iter().map(|&(_, _, value, _)| value.saturated_into()).min().unwrap_or_default() - }): Power; - - /// True if the next session change will be a new era regardless of index. - pub ForceEra get(fn force_era) config(): Forcing; - - /// The percentage of the slash that is distributed to reporters. - /// - /// The rest of the slashed value is handled by the `Slash`. - pub SlashRewardFraction get(fn slash_reward_fraction) config(): Perbill; - - /// The percentage of the total payout that is distributed to validators and nominators - /// - /// The reset might go to Treasury or something else. - pub PayoutFraction get(fn payout_fraction) config(): Perbill; - - /// Total *Ring* in pool. - pub RingPool get(fn ring_pool): RingBalance; - /// Total *Kton* in pool. - pub KtonPool get(fn kton_pool): KtonBalance; - - /// A mapping from still-bonded eras to the first session index of that era. - BondedEras: Vec<(EraIndex, SessionIndex)>; - - /// All slashes that have occurred in a given era. - EraSlashJournal get(fn era_slash_journal): map EraIndex => Vec>; - } - - add_extra_genesis { - config(stakers): Vec<(T::AccountId, T::AccountId, RingBalance, StakerStatus)>; - build(|config: &GenesisConfig| { - for &(ref stash, ref controller, ring, ref status) in &config.stakers { - assert!(T::Ring::free_balance(&stash) >= ring); - let _ = >::bond( - T::Origin::from(Some(stash.clone()).into()), - T::Lookup::unlookup(controller.clone()), - StakingBalances::RingBalance(ring), - RewardDestination::Stash, - 0, - ); - let _ = match status { - StakerStatus::Validator => { - >::validate( - T::Origin::from(Some(controller.clone()).into()), - ValidatorPrefs { - node_name: "Darwinia Node".into(), - ..Default::default() - }, - ) - }, - StakerStatus::Nominator(votes) => { - >::nominate( - T::Origin::from(Some(controller.clone()).into()), - votes.iter().map(|l| {T::Lookup::unlookup(l.clone())}).collect(), - ) - }, - _ => Ok(()) - }; - } - }); - } -} - -decl_event!( - pub enum Event - where - ::AccountId - { - /// All validators have been rewarded by the first balance; the second is the remainder - /// from the maximum amount of reward; the third is validator and nominators' reward. - Reward(Balance, Balance, Vec>), - - // TODO: refactor to Balance later? - /// One validator (and its nominators) has been slashed by the given amount. - Slash(AccountId, Power), - /// An old slashing report from a prior era was discarded because it could - /// not be processed. - OldSlashingReportDiscarded(SessionIndex), - - /// NodeName changed. - NodeNameUpdated, - - /// Bond succeed. - /// `amount`, `now`, `duration` in month - Bond(StakingBalances, Moment, Moment), - - /// Unbond succeed. - /// `amount`, `now` - Unbond(StakingBalances, Moment), - - // Develop - // Print(u128), - } -); - -decl_module! { - pub struct Module for enum Call where origin: T::Origin { - /// Number of sessions per era. - const SessionsPerEra: SessionIndex = T::SessionsPerEra::get(); - - /// Number of `Moment` that staked funds must remain bonded for. - const BondingDuration: T::Moment = T::BondingDuration::get(); - - /// Number of eras that staked funds must remain bonded for. - const BondingDurationInEra: EraIndex = T::BondingDurationInEra::get(); - - fn deposit_event() = default; - - fn on_finalize() { - // Set the start of the first era. - if !>::exists() { - >::put(T::Time::now()); - } - } - - /// Take the origin account as a stash and lock up `value` of its balance. `controller` will - /// be the account that controls it. - /// - /// `value` must be more than the `minimum_balance` specified by `T::Currency`. - /// - /// The dispatch origin for this call must be _Signed_ by the stash account. - /// - /// # - /// - Independent of the arguments. Moderate complexity. - /// - O(1). - /// - Three extra DB entries. - /// - /// NOTE: Two of the storage writes (`Self::bonded`, `Self::payee`) are _never_ cleaned unless - /// the `origin` falls below _existential deposit_ and gets removed as dust. - /// # - #[weight = SimpleDispatchInfo::FixedNormal(500_000)] - fn bond( - origin, - controller: ::Source, - value: StakingBalances, KtonBalance>, - payee: RewardDestination, - promise_month: Moment - ) { - let stash = ensure_signed(origin)?; - ensure!(!>::exists(&stash), err::STASH_ALREADY_BONDED); - - let controller = T::Lookup::lookup(controller)?; - ensure!(!>::exists(&controller), err::CONTROLLER_ALREADY_PAIRED); - - // You're auto-bonded forever, here. We might improve this by only bonding when - // you actually validate/nominate and remove once you unbond __everything__. - >::insert(&stash, &controller); - >::insert(&stash, payee); - - let ledger = StakingLedger { - stash: stash.clone(), - ..Default::default() - }; - let now = >::now().saturated_into::(); - let promise_month = promise_month.min(36); - - match value { - StakingBalances::RingBalance(r) => { - let stash_balance = T::Ring::free_balance(&stash); - let value = r.min(stash_balance); - - Self::bond_helper_in_ring(&stash, &controller, value, promise_month, ledger); - - >::mutate(|r| *r += value); - >::deposit_event(RawEvent::Bond( - StakingBalances::RingBalance(value.saturated_into()), - now, - promise_month, - )); - }, - StakingBalances::KtonBalance(k) => { - let stash_balance = T::Kton::free_balance(&stash); - let value = k.min(stash_balance); - - Self::bond_helper_in_kton(&controller, value, ledger); - - >::mutate(|k| *k += value); - >::deposit_event(RawEvent::Bond( - StakingBalances::KtonBalance(value.saturated_into()), - now, - promise_month, - )); - }, - } - } - - /// Add some extra amount that have appeared in the stash `free_balance` into the balance up - /// for staking. - /// - /// Use this if there are additional funds in your stash account that you wish to bond. - /// Unlike [`bond`] or [`unbond`] this function does not impose any limitation on the amount - /// that can be added. - /// - /// The dispatch origin for this call must be _Signed_ by the stash, not the controller. - /// - /// # - /// - Independent of the arguments. Insignificant complexity. - /// - O(1). - /// - One DB entry. - /// # - #[weight = SimpleDispatchInfo::FixedNormal(500_000)] - fn bond_extra( - origin, - value: StakingBalances, KtonBalance>, - promise_month: Moment - ) { - let stash = ensure_signed(origin)?; - let controller = Self::bonded(&stash).ok_or(err::STASH_INVALID)?; - let ledger = Self::ledger(&controller).ok_or(err::CONTROLLER_INVALID)?; - let now = >::now().saturated_into::(); - let promise_month = promise_month.min(36); - - match value { - StakingBalances::RingBalance(r) => { - let stash_balance = T::Ring::free_balance(&stash); - if let Some(extra) = stash_balance.checked_sub(&ledger.active_ring) { - let extra = extra.min(r); - - Self::bond_helper_in_ring(&stash, &controller, extra, promise_month, ledger); - - >::mutate(|r| *r += extra); - >::deposit_event(RawEvent::Bond( - StakingBalances::RingBalance(extra.saturated_into()), - now, - promise_month, - )); - } - }, - StakingBalances::KtonBalance(k) => { - let stash_balance = T::Kton::free_balance(&stash); - if let Some(extra) = stash_balance.checked_sub(&ledger.active_kton) { - let extra = extra.min(k); - - Self::bond_helper_in_kton(&controller, extra, ledger); - - >::mutate(|k| *k += extra); - >::deposit_event(RawEvent::Bond( - StakingBalances::KtonBalance(extra.saturated_into()), - now, - promise_month, - )); - } - }, - } - } - - // TODO: doc - fn deposit_extra(origin, value: RingBalance, promise_month: Moment) { - let controller = ensure_signed(origin)?; - let ledger = Self::ledger(&controller).ok_or(err::CONTROLLER_INVALID)?; - let promise_month = promise_month.max(3).min(36); - - let now = >::now(); - let mut ledger = Self::clear_mature_deposits(ledger); - let StakingLedger { - stash, - active_ring, - active_deposit_ring, - deposit_items, - .. - } = &mut ledger; - let value = value.min(*active_ring - *active_deposit_ring); - // for now, kton_return is free - // mint kton - let kton_return = inflation::compute_kton_return::(value, promise_month); - let kton_positive_imbalance = T::Kton::deposit_creating(stash, kton_return); - - T::KtonReward::on_unbalanced(kton_positive_imbalance); - *active_deposit_ring += value; - deposit_items.push(TimeDepositItem { - value, - start_time: now, - expire_time: now + T::Moment::saturated_from((promise_month * MONTH_IN_MILLISECONDS).into()), - }); - - >::insert(&controller, ledger); - >::deposit_event(RawEvent::Bond( - StakingBalances::RingBalance(value.saturated_into()), - now.saturated_into::(), - promise_month, - )); - } - - /// for normal_ring or normal_kton, follow the original substrate pattern - /// for time_deposit_ring, transform it into normal_ring first - /// modify time_deposit_items and time_deposit_ring amount - - /// Schedule a portion of the stash to be unlocked ready for transfer out after the bond - /// period ends. If this leaves an amount actively bonded less than - /// T::Currency::minimum_balance(), then it is increased to the full amount. - /// - /// Once the unlock period is done, the funds will be withdrew automatically and ready for transfer. - /// - /// No more than a limited number of unlocking chunks (see `MAX_UNLOCKING_CHUNKS`) - /// can co-exists at the same time. In that case, [`StakingLock::shrink`] need - /// to be called first to remove some of the chunks (if possible). - /// - /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. - /// - /// # - /// - Independent of the arguments. Limited but potentially exploitable complexity. - /// - 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 (`StakingLock.unbondings`) kept in storage. - /// - One DB entry. - /// - #[weight = SimpleDispatchInfo::FixedNormal(400_000)] - fn unbond(origin, value: StakingBalances, KtonBalance>) { - let controller = ensure_signed(origin)?; - let mut ledger = Self::clear_mature_deposits(Self::ledger(&controller).ok_or(err::CONTROLLER_INVALID)?); - let StakingLedger { - active_ring, - active_deposit_ring, - active_kton, - ring_staking_lock, - kton_staking_lock, - .. - } = &mut ledger; - let now = >::now(); - - ring_staking_lock.shrink(now); - kton_staking_lock.shrink(now); - - // due to the macro parser, we've to add a bracket - // actually, this's totally wrong: - // `a as u32 + b as u32 < c` - // workaround: - // 1. `(a as u32 + b as u32) < c` - // 2. `let c_ = a as u32 + b as u32; c_ < c` - ensure!( - (ring_staking_lock.unbondings.len() as u32 + kton_staking_lock.unbondings.len() as u32) < MAX_UNLOCKING_CHUNKS, - err::UNLOCK_CHUNKS_REACH_MAX, - ); - - match value { - StakingBalances::RingBalance(r) => { - // only active normal ring can be unbond - // active_ring = active_normal_ring + active_deposit_ring - let active_normal_ring = *active_ring - *active_deposit_ring; - let available_unbond_ring = r.min(active_normal_ring); - - if !available_unbond_ring.is_zero() { - *active_ring -= available_unbond_ring; - ring_staking_lock.unbondings.push(NormalLock { - amount: available_unbond_ring, - until: now + T::BondingDuration::get(), - }); - - Self::update_ledger(&controller, &mut ledger, value); - - >::mutate(|r| *r -= available_unbond_ring); - >::deposit_event(RawEvent::Unbond( - StakingBalances::RingBalance(available_unbond_ring.saturated_into()), - now.saturated_into::(), - )); - } - }, - StakingBalances::KtonBalance(k) => { - let unbond_kton = k.min(*active_kton); - - if !unbond_kton.is_zero() { - *active_kton -= unbond_kton; - kton_staking_lock.unbondings.push(NormalLock { - amount: unbond_kton, - until: now + T::BondingDuration::get(), - }); - - Self::update_ledger(&controller, &mut ledger, value); - - >::mutate(|k| *k -= unbond_kton); - >::deposit_event(RawEvent::Unbond( - StakingBalances::KtonBalance(unbond_kton.saturated_into()), - now.saturated_into::(), - )); - } - }, - } - } - - // TODO: doc - fn claim_mature_deposits(origin) { - let controller = ensure_signed(origin)?; - let ledger = Self::clear_mature_deposits(Self::ledger(&controller).ok_or(err::CONTROLLER_INVALID)?); - - >::insert(controller, ledger); - } - - // TODO: doc - fn try_claim_deposits_with_punish(origin, expire_time: T::Moment) { - let controller = ensure_signed(origin)?; - let mut ledger = Self::ledger(&controller).ok_or(err::CONTROLLER_INVALID)?; - let now = >::now(); - - ensure!(expire_time > now, err::CLAIM_DEPOSITS_EXPIRE_TIME_INVALID); - - let StakingLedger { - stash, - active_deposit_ring, - deposit_items, - .. - } = &mut ledger; - - deposit_items.retain(|item| { - if item.expire_time != expire_time { - return true; - } - - let kton_slash = { - let passed_duration = (now - item.start_time).saturated_into::() / MONTH_IN_MILLISECONDS; - let plan_duration = (item.expire_time - item.start_time).saturated_into::() / MONTH_IN_MILLISECONDS; - - ( - inflation::compute_kton_return::(item.value, plan_duration) - - - inflation::compute_kton_return::(item.value, passed_duration) - ).max(1.into()) * 3.into() - }; - - // check total free balance and locked one - // strict on punishing in kton - if T::Kton::free_balance(stash) - .checked_sub(&kton_slash) - .and_then(|new_balance| { - T::Kton::ensure_can_withdraw( - stash, - kton_slash, - WithdrawReason::Transfer.into(), - new_balance - ).ok() - }) - .is_some() - { - *active_deposit_ring = active_deposit_ring.saturating_sub(item.value); - - let (imbalance, _) = T::Kton::slash(stash, kton_slash); - T::KtonSlash::on_unbalanced(imbalance); - - false - } else { - true - } - }); - - >::insert(&controller, ledger); - } - - /// Declare the desire to validate for the origin controller. - /// - /// Effects will be felt at the beginning of the next era. - /// - /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. - /// - /// # - /// - Independent of the arguments. Insignificant complexity. - /// - Contains a limited number of reads. - /// - Writes are limited to the `origin` account key. - /// # - #[weight = SimpleDispatchInfo::FixedNormal(750_000)] - fn validate(origin, prefs: ValidatorPrefs) { - let controller = ensure_signed(origin)?; - let ledger = Self::ledger(&controller).ok_or(err::CONTROLLER_INVALID)?; - - prefs.check_node_name()?; - - let stash = &ledger.stash; - let mut prefs = prefs; - // at most 100% - prefs.validator_payment_ratio = prefs.validator_payment_ratio.min(100); - - >::remove(stash); - >::mutate(stash, |prefs_| { - let exists = !prefs_.node_name.is_empty(); - *prefs_ = prefs; - if exists { - Self::deposit_event(RawEvent::NodeNameUpdated); - } - }); - } - - /// Declare the desire to nominate `targets` for the origin controller. - /// - /// Effects will be felt at the beginning of the next era. - /// - /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. - /// - /// # - /// - The transaction's complexity is proportional to the size of `targets`, - /// which is capped at `MAX_NOMINATIONS`. - /// - Both the reads and writes follow a similar pattern. - /// # - #[weight = SimpleDispatchInfo::FixedNormal(750_000)] - fn nominate(origin, targets: Vec<::Source>) { - let controller = ensure_signed(origin)?; - let ledger = Self::ledger(&controller).ok_or(err::CONTROLLER_INVALID)?; - let stash = &ledger.stash; - - ensure!(!targets.is_empty(), err::TARGETS_INVALID); - - let targets = targets.into_iter() - .take(MAX_NOMINATIONS) - .map(T::Lookup::lookup) - .collect::, _>>()?; - - >::remove(stash); - >::insert(stash, targets); - } - - /// Declare no desire to either validate or nominate. - /// - /// Effects will be felt at the beginning of the next era.、 - /// - /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. - /// - /// # - /// - Independent of the arguments. Insignificant complexity. - /// - Contains one read. - /// - Writes are limited to the `origin` account key. - /// # - #[weight = SimpleDispatchInfo::FixedNormal(500_000)] - fn chill(origin) { - let controller = ensure_signed(origin)?; - let ledger = Self::ledger(&controller).ok_or(err::CONTROLLER_INVALID)?; - let stash = &ledger.stash; - - >::remove(stash); - >::remove(stash); - } - - /// (Re-)set the payment target for a controller. - /// - /// Effects will be felt at the beginning of the next era. - /// - /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. - /// - /// # - /// - Independent of the arguments. Insignificant complexity. - /// - Contains a limited number of reads. - /// - Writes are limited to the `origin` account key. - /// # - #[weight = SimpleDispatchInfo::FixedNormal(500_000)] - fn set_payee(origin, payee: RewardDestination) { - let controller = ensure_signed(origin)?; - let ledger = Self::ledger(&controller).ok_or(err::CONTROLLER_INVALID)?; - let stash = &ledger.stash; - - >::insert(stash, payee); - } - - /// (Re-)set the controller of a stash. - /// - /// Effects will be felt at the beginning of the next era. - /// - /// The dispatch origin for this call must be _Signed_ by the stash, not the controller. - /// - /// # - /// - Independent of the arguments. Insignificant complexity. - /// - Contains a limited number of reads. - /// - Writes are limited to the `origin` account key. - /// # - #[weight = SimpleDispatchInfo::FixedNormal(750_000)] - fn set_controller(origin, controller: ::Source) { - let stash = ensure_signed(origin)?; - let old_controller = Self::bonded(&stash).ok_or(err::STASH_INVALID)?; - let controller = T::Lookup::lookup(controller)?; - - ensure!(!>::exists(&controller), err::CONTROLLER_ALREADY_PAIRED); - - if controller != old_controller { - >::insert(&stash, &controller); - if let Some(l) = >::take(&old_controller) { - >::insert(&controller, l); - } - } - } - - /// The ideal number of validators. - fn set_validator_count(origin, #[compact] new: u32) { - ensure_root(origin)?; - ValidatorCount::put(new); - } - - // ----- Root calls. - - /// Force there to be no new eras indefinitely. - /// - /// # - /// - No arguments. - /// # - #[weight = SimpleDispatchInfo::FreeOperational] - fn force_no_eras(origin) { - ensure_root(origin)?; - ForceEra::put(Forcing::ForceNone); - } - - /// Force there to be a new era at the end of the next session. After this, it will be - /// reset to normal (non-forced) behaviour. - /// - /// # - /// - No arguments. - /// # - #[weight = SimpleDispatchInfo::FreeOperational] - fn force_new_era(origin) { - ensure_root(origin)?; - ForceEra::put(Forcing::ForceNone); - } - - /// Set the validators who cannot be slashed (if any). - fn set_invulnerables(origin, validators: Vec) { - ensure_root(origin)?; - >::put(validators); - } - - /// Force a current staker to become completely unstaked, immediately. - #[weight = SimpleDispatchInfo::FreeOperational] - fn force_unstake(origin, stash: T::AccountId) { - ensure_root(origin)?; - - // remove the lock. - T::Ring::remove_lock(STAKING_ID, &stash); - T::Kton::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. - /// - /// # - /// - One storage write - /// # - #[weight = SimpleDispatchInfo::FreeOperational] - fn force_new_era_always(origin) { - ensure_root(origin)?; - ForceEra::put(Forcing::ForceAlways); - } - } -} - -impl Module { - // PUBLIC IMMUTABLES - - // TODO: doc - pub fn clear_mature_deposits( - mut ledger: StakingLedger, KtonBalance, T::Moment>, - ) -> StakingLedger, KtonBalance, T::Moment> { - let now = >::now(); - let StakingLedger { - active_deposit_ring, - deposit_items, - .. - } = &mut ledger; - - deposit_items.retain(|item| { - if item.expire_time > now { - true - } else { - *active_deposit_ring = active_deposit_ring.saturating_sub(item.value); - false - } - }); - - ledger - } - - // TODO: doc - fn bond_helper_in_ring( - stash: &T::AccountId, - controller: &T::AccountId, - value: RingBalance, - promise_month: Moment, - mut ledger: StakingLedger, KtonBalance, T::Moment>, - ) { - // if stash promise to a extra-lock - // there will be extra reward, kton, which - // can also be use to stake. - if promise_month >= 3 { - ledger.active_deposit_ring += value; - // for now, kton_return is free - // mint kton - let kton_return = inflation::compute_kton_return::(value, promise_month); - let kton_positive_imbalance = T::Kton::deposit_creating(&stash, kton_return); - T::KtonReward::on_unbalanced(kton_positive_imbalance); - let now = >::now(); - ledger.deposit_items.push(TimeDepositItem { - value, - start_time: now, - expire_time: now + T::Moment::saturated_from((promise_month * MONTH_IN_MILLISECONDS).into()), - }); - } - ledger.active_ring = ledger.active_ring.saturating_add(value); - - Self::update_ledger(&controller, &mut ledger, StakingBalances::RingBalance(value)); - } - - fn bond_helper_in_ring_for_deposit_redeem( - _stash: &T::AccountId, // TODO: Not used - controller: &T::AccountId, - value: RingBalance, - start: Moment, - promise_month: Moment, - mut ledger: StakingLedger, KtonBalance, T::Moment>, - ) { - ledger.active_deposit_ring += value; - - // NO KTON Reward. - - ledger.deposit_items.push(TimeDepositItem { - value, - start_time: T::Moment::saturated_from(start.into()), - expire_time: T::Moment::saturated_from(start.into()) - + T::Moment::saturated_from((promise_month * MONTH_IN_MILLISECONDS).into()), - }); - - ledger.active_ring = ledger.active_ring.saturating_add(value); - - Self::update_ledger(&controller, &mut ledger, StakingBalances::RingBalance(value)); - } - - // TODO: doc - fn bond_helper_in_kton( - controller: &T::AccountId, - value: KtonBalance, - mut ledger: StakingLedger, KtonBalance, T::Moment>, - ) { - ledger.active_kton += value; - - Self::update_ledger(&controller, &mut ledger, StakingBalances::KtonBalance(value)); - } - - // TODO: there is reserve balance in Balance.Slash, we assuming it is zero for now. - fn slash_individual( - stash: &T::AccountId, - slash_ratio: Perbill, - ) -> (RingNegativeImbalance, KtonNegativeImbalance, Power) { - let controller = Self::bonded(stash).unwrap(); - let mut ledger = Self::ledger(&controller).unwrap(); - - let (ring_imbalance, _) = if !ledger.active_ring.is_zero() { - let slashable_ring = slash_ratio * ledger.active_ring; - let value_slashed = - Self::slash_helper(&controller, &mut ledger, StakingBalances::RingBalance(slashable_ring)); - T::Ring::slash(stash, value_slashed.0) - } else { - (>::zero(), Zero::zero()) - }; - let (kton_imbalance, _) = if !ledger.active_kton.is_zero() { - let slashable_kton = slash_ratio * ledger.active_kton; - let value_slashed = - Self::slash_helper(&controller, &mut ledger, StakingBalances::KtonBalance(slashable_kton)); - T::Kton::slash(stash, value_slashed.1) - } else { - (>::zero(), Zero::zero()) - }; - - (ring_imbalance, kton_imbalance, 0) - } - - // TODO: doc - fn power_of(stash: &T::AccountId) -> Power { - // power is a mixture of ring and kton - // power = ring_ratio * POWER_COUNT / 2 + kton_ratio * POWER_COUNT / 2 - fn calc_power>(active: S, pool: S) -> Power { - const HALF_POWER_COUNT: u128 = 1_000_000_000 / 2; - - Perquintill::from_rational_approximation( - active.saturated_into::(), - pool.saturated_into::().max(1), - ) * HALF_POWER_COUNT - } - - Self::bonded(stash) - .and_then(Self::ledger) - .map(|l| calc_power(l.active_ring, Self::ring_pool()) + calc_power(l.active_kton, Self::kton_pool())) - .unwrap_or_default() - } - - // MUTABLES (DANGEROUS) - - /// 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( - controller: &T::AccountId, - ledger: &mut StakingLedger, KtonBalance, T::Moment>, - staking_balance: StakingBalances, KtonBalance>, - ) { - match staking_balance { - StakingBalances::RingBalance(_r) => { - ledger.ring_staking_lock.staking_amount = ledger.active_ring; - - T::Ring::set_lock( - STAKING_ID, - &ledger.stash, - WithdrawLock::WithStaking(ledger.ring_staking_lock.clone()), - WithdrawReasons::all(), - ); - } - StakingBalances::KtonBalance(_k) => { - ledger.kton_staking_lock.staking_amount = ledger.active_kton; - - T::Kton::set_lock( - STAKING_ID, - &ledger.stash, - WithdrawLock::WithStaking(ledger.kton_staking_lock.clone()), - WithdrawReasons::all(), - ); - } - } - - >::insert(controller, ledger); - } - - /// Slash a given validator by a specific amount with given (historical) exposure. - /// - /// Removes the slash from the validator's balance by preference, - /// and reduces the nominators' balance if needed. - /// - /// Returns the resulting `NegativeImbalance` to allow distributing the slashed amount and - /// pushes an entry onto the slash journal. - fn slash_validator( - stash: &T::AccountId, - slash: Power, - exposure: &Exposure, - journal: &mut Vec>, - ) -> (RingNegativeImbalance, KtonNegativeImbalance) { - // The amount we are actually going to slash (can't be bigger than the validator's total - // exposure) - let slash = slash.min(exposure.total); - - // limit what we'll slash of the stash's own to only what's in - // the exposure. - // - // note: this is fine only because we limit reports of the current era. - // otherwise, these funds may have already been slashed due to something - // reported from a prior era. - let already_slashed_own = journal - .iter() - .filter(|entry| &entry.who == stash) - .map(|entry| entry.own_slash) - .fold(Power::zero(), |a, c| a.saturating_add(c)); - - let own_remaining = exposure.own.saturating_sub(already_slashed_own); - - // The amount we'll slash from the validator's stash directly. - let own_slash = own_remaining.min(slash); - let (mut ring_imbalance, mut kton_imbalance, missing) = - Self::slash_individual(stash, Perbill::from_rational_approximation(own_slash, exposure.own)); - let own_slash = own_slash - missing; - // The amount remaining that we can't slash from the validator, - // that must be taken from the nominators. - let rest_slash = slash - own_slash; - if !rest_slash.is_zero() { - // The total to be slashed from the nominators. - let total = exposure.total - exposure.own; - if !total.is_zero() { - for i in exposure.others.iter() { - let per_u64 = Perbill::from_rational_approximation(i.value, total); - // best effort - not much that can be done on fail. - // imbalance.subsume(T::Currency::slash(&i.who, per_u64 * rest_slash).0) - let (r, k, _) = Self::slash_individual( - &i.who, - Perbill::from_rational_approximation(per_u64 * rest_slash, i.value), - ); - - ring_imbalance.subsume(r); - kton_imbalance.subsume(k); - } - } - } - - journal.push(SlashJournalEntry { - who: stash.to_owned(), - own_slash, - amount: slash, - }); - - // trigger the event - Self::deposit_event(RawEvent::Slash(stash.to_owned(), slash)); - - (ring_imbalance, kton_imbalance) - } - - // TODO: doc - fn slash_helper( - controller: &T::AccountId, - ledger: &mut StakingLedger, KtonBalance, T::Moment>, - value: StakingBalances, KtonBalance>, - ) -> (RingBalance, KtonBalance) { - match value { - StakingBalances::RingBalance(r) => { - let StakingLedger { - active_ring, - active_deposit_ring, - deposit_items, - .. - } = ledger; - - // if slashing ring, first slashing normal ring - // then, slashing time-deposit ring - // TODO: check one more time (may be removed later) - let total_value = r.min(*active_ring); - let normal_active_value = total_value.min(*active_ring - *active_deposit_ring); - - // to prevent overflow - // first slash normal bonded ring - >::mutate(|r| *r -= normal_active_value); - *active_ring -= normal_active_value; - - // bonded + unbondings - // first slash active normal ring - let mut value_left = total_value - normal_active_value; - // then slash active time-promise ring - // from the nearest expire time - if !value_left.is_zero() { - // sorted by expire_time from far to near - deposit_items.sort_unstable_by_key(|item| T::Moment::max_value() - item.expire_time); - deposit_items.drain_filter(|item| { - if value_left.is_zero() { - return false; - } - - let value_removed = value_left.min(item.value); - - *active_ring -= value_removed; - *active_deposit_ring -= value_removed; - - item.value -= value_removed; - value_left -= value_removed; - - >::mutate(|ring| *ring -= value_removed); - - item.value.is_zero() - }); - } - - Self::update_ledger(controller, ledger, StakingBalances::RingBalance(0.into())); - (total_value, 0.into()) - } - StakingBalances::KtonBalance(k) => { - // check one more time - // TODO: may be removed later - let active_value = k.min(ledger.active_kton); - // first slash active kton - ledger.active_kton -= active_value; - - >::mutate(|k| *k -= active_value); - - Self::update_ledger(controller, ledger, StakingBalances::KtonBalance(0.into())); - (0.into(), active_value) - } - } - } - - /// 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: RingBalance) -> Option> { - let dest = Self::payee(stash); - match dest { - RewardDestination::Controller => { - Self::bonded(stash).and_then(|controller| T::Ring::deposit_into_existing(&controller, amount).ok()) - } - RewardDestination::Stash => T::Ring::deposit_into_existing(stash, amount).ok(), - } - } - - /// 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: RingBalance, - ) -> ( - RingPositiveImbalance, - (Balance, Vec>), - ) { - let off_the_table = Perbill::from_percent(Self::validators(stash).validator_payment_ratio) * reward; - let reward = reward - off_the_table; - let mut imbalance = >::zero(); - let mut nominators_reward = vec![]; - let validator_cut = if reward.is_zero() { - Zero::zero() - } else { - let exposures = Self::stakers(stash); - let total = exposures.total.max(One::one()); - - for i in &exposures.others { - let per_u64 = Perbill::from_rational_approximation(i.value, total); - let nominator_reward = per_u64 * reward; - - imbalance.maybe_subsume(Self::make_payout(&i.who, nominator_reward)); - nominators_reward.push(NominatorReward { - who: i.who.to_owned(), - amount: nominator_reward.saturated_into(), - }); - } - - let per_u64 = Perbill::from_rational_approximation(exposures.own, total); - per_u64 * reward - }; - let validator_reward = validator_cut + off_the_table; - imbalance.maybe_subsume(Self::make_payout(stash, validator_reward)); - - (imbalance, (validator_reward.saturated_into(), nominators_reward)) - } - - /// Session has just ended. Provide the validator set for the next session if it's an era-end, along - /// with the exposure of the prior validator set. - fn new_session( - session_index: SessionIndex, - ) -> Option<(Vec, Vec<(T::AccountId, Exposure)>)> { - 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, - } - let validators = T::SessionInterface::validators(); - let prior = validators - .into_iter() - .map(|v| { - let e = Self::stakers(&v); - (v, e) - }) - .collect(); - - Self::new_era(session_index).map(move |new| (new, prior)) - } - - /// 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| rstd::mem::replace(v, now)); - let era_duration = now - previous_era_start; - if !era_duration.is_zero() { - let validators = Self::current_elected(); - - // TODO: All reward will give to payouts. - // let validator_len: ExtendedBalance = (validators.len() as u32).into(); - // let total_rewarded_stake = Self::slot_stake() * validator_len; - - // Self::deposit_event(RawEvent::Print(era_duration.saturated_into::())); - // Self::deposit_event(RawEvent::Print((T::Time::now() - T::GenesisTime::get()).saturated_into::())); - // Self::deposit_event(RawEvent::Print((T::Cap::get() - T::Ring::total_issuance()).saturated_into::())); - - let (total_payout, max_payout) = inflation::compute_total_payout::( - era_duration.saturated_into::(), - (T::Time::now() - T::GenesisTime::get()).saturated_into::(), - (T::Cap::get() - T::Ring::total_issuance()).saturated_into::(), - PayoutFraction::get(), - ); - - let mut total_imbalance = >::zero(); - let mut validators_reward = vec![]; - 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; - let (imbalance, (validator_reward, nominators_reward)) = Self::reward_validator(v, reward); - - total_imbalance.subsume(imbalance); - validators_reward.push(ValidatorReward { - who: v.to_owned(), - amount: validator_reward, - nominators_reward, - }); - } - } - - // 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.saturated_into(), - rest.saturated_into(), - validators_reward, - )); - - T::RingReward::on_unbalanced(total_imbalance); - T::RingRewardRemainder::on_unbalanced(T::Ring::issue(rest)); - } - - // Increment current era. - let current_era = CurrentEra::mutate(|s| { - *s += 1; - *s - }); - - // prune journal for last era. - >::remove(current_era - 1); - - CurrentEraStartSessionIndex::mutate(|v| { - *v = start_session_index; - }); - let bonding_era = T::BondingDurationInEra::get(); - - if current_era > bonding_era { - let first_kept = current_era - bonding_era; - BondedEras::mutate(|bonded| { - bonded.push((current_era, start_session_index)); - - // prune out everything that's from before the first-kept index. - let n_to_prune = bonded.iter().take_while(|&&(era_idx, _)| era_idx < first_kept).count(); - - bonded.drain(..n_to_prune); - - if let Some(&(_, first_session)) = bonded.first() { - T::SessionInterface::prune_historical_up_to(first_session); - } - }) - } - - // Reassign all Stakers. - let (_slot_stake, maybe_new_validators) = Self::select_validators(); - - maybe_new_validators - } - - /// Select a new validator set from the assembled stakers and their role preferences. - /// - /// Returns the new `SlotStake` value. - fn select_validators() -> (Power, 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()]); - all_nominators.push(self_vote); - who - }) - .collect::>(); - all_nominators.extend(>::enumerate()); - - let maybe_phragmen_result = elect::<_, _, _, T::CurrencyToVote>( - Self::validator_count() as usize, - Self::minimum_validator_count().max(1) as usize, - all_validators, - all_nominators, - Self::power_of, - ); - - if let Some(phragmen_result) = maybe_phragmen_result { - let elected_stashes = phragmen_result - .winners - .iter() - .map(|(s, _)| s.clone()) - .collect::>(); - let assignments = phragmen_result.assignments; - - let to_votes = |b: Power| >::convert(b) as Power; - let to_balance = |e: Power| >::convert(e); - - let mut supports = - build_support_map::<_, _, _, T::CurrencyToVote>(&elected_stashes, &assignments, Self::power_of); - - if cfg!(feature = "equalize") { - let mut staked_assignments: Vec<(T::AccountId, Vec>)> = - Vec::with_capacity(assignments.len()); - for (n, assignment) in assignments.iter() { - let mut staked_assignment: Vec> = - Vec::with_capacity(assignment.len()); - - // If this is a self vote, then we don't need to equalise it at all. While the - // staking system does not allow nomination and validation at the same time, - // this must always be 100% support. - if assignment.len() == 1 && assignment[0].0 == *n { - continue; - } - for (c, per_thing) in assignment.iter() { - let nominator_stake = to_votes(Self::power_of(n)); - let other_stake = *per_thing * nominator_stake; - staked_assignment.push((c.clone(), other_stake)); - } - staked_assignments.push((n.clone(), staked_assignment)); - } - - let tolerance = 0_u128; - let iterations = 2_usize; - equalize::<_, _, T::CurrencyToVote, _>( - staked_assignments, - &mut supports, - tolerance, - iterations, - Self::power_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 = Power::max_value(); - for (c, s) in supports.into_iter() { - // build `struct exposure` from `support` - let exposure = Exposure { - own: to_balance(s.own), - // 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: to_balance(s.total), - others: s - .others - .into_iter() - .map(|(who, value)| IndividualExposure { - who, - value: to_balance(value), - }) - .collect::>>(), - }; - slot_stake = slot_stake.min(exposure.total); - - >::insert(&c, exposure); - } - - // Update slot stake. - ::put(&slot_stake); - - // Set the new validator set in sessions. - >::put(&elected_stashes); - - // 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)) - } else { - // There were not enough candidates for even our minimal level of functionality. - // This is bad. - // We should probably disable all functionality except for block production - // and let the chain keep producing blocks until we can decide on a sufficiently - // substantial set. - // TODO: #2494 - (Self::slot_stake(), None) - } - } - - /// Remove all associated data of a stash account from the staking system. - /// - /// This is called: - /// - Immediately when an account's balance falls below existential deposit. - /// - 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); - } - >::remove(stash); - >::remove(stash); - >::remove(stash); - } - - /// Add reward points to validators using their stash account ID. - /// - /// Validators are keyed by stash account ID and must be in the current elected set. - /// - /// For each element in the iterator the given number of points in u32 is added to the - /// validator, thus duplicates are handled. - /// - /// At the end of the era each the total payout will be distributed among validator - /// relatively to their points. - /// - /// 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); - } - } - }); - } - - /// Add reward points to validators using their validator index. - /// - /// 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) { - // TODO: This can be optimised once #3302 is implemented. - let current_elected_len = >::current_elected().len() as u32; - - 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); - } - } - }); - } - - /// 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), - } - } -} - -impl session::OnSessionEnding for Module { - fn on_session_ending(_ending: SessionIndex, start_session: SessionIndex) -> Option> { - Self::new_session(start_session - 1).map(|(new, _old)| new) - } -} - -impl OnSessionEnding> for Module { - fn on_session_ending( - _ending: SessionIndex, - start_session: SessionIndex, - ) -> Option<(Vec, Vec<(T::AccountId, Exposure)>)> { - Self::new_session(start_session - 1) - } -} - -impl OnFreeBalanceZero for Module { - fn on_free_balance_zero(stash: &T::AccountId) { - 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 -/// * 1 point to the producer of each referenced uncle block. -impl authorship::EventHandler for Module { - fn note_author(author: T::AccountId) { - Self::reward_by_ids(vec![(author, 20)]); - } - fn note_uncle(author: T::AccountId, _age: T::BlockNumber) { - Self::reward_by_ids(vec![(>::author(), 2), (author, 1)]) - } -} - -pub struct StashOf(rstd::marker::PhantomData); - -impl Convert> for StashOf { - fn convert(controller: T::AccountId) -> Option { - >::ledger(&controller).map(|l| l.stash) - } -} - -/// A typed conversion from stash account ID to the current exposure of nominators -/// on that account. -pub struct ExposureOf(rstd::marker::PhantomData); - -impl Convert>> for ExposureOf { - fn convert(validator: T::AccountId) -> Option> { - Some(>::stakers(&validator)) - } -} - -impl SelectInitialValidators for Module { - fn select_initial_validators() -> Option> { - >::select_validators().1 - } -} - -/// This is intended to be used with `FilterHistoricalOffences`. -impl OnOffenceHandler> for Module -where - T: session::Trait::AccountId>, - T: session::historical::Trait< - FullIdentification = Exposure<::AccountId, Power>, - FullIdentificationOf = ExposureOf, - >, - T::SessionHandler: session::SessionHandler<::AccountId>, - T::OnSessionEnding: session::OnSessionEnding<::AccountId>, - T::SelectInitialValidators: session::SelectInitialValidators<::AccountId>, - T::ValidatorIdOf: Convert<::AccountId, Option<::AccountId>>, -{ - fn on_offence( - offenders: &[OffenceDetails>], - slash_fraction: &[Perbill], - ) { - let mut ring_remaining_imbalance = >::zero(); - let mut kton_remaining_imbalance = >::zero(); - let slash_reward_fraction = SlashRewardFraction::get(); - - let era_now = Self::current_era(); - let mut journal = Self::era_slash_journal(era_now); - for (details, slash_fraction) in offenders.iter().zip(slash_fraction) { - let stash = &details.offender.0; - let exposure = &details.offender.1; - - // Skip if the validator is invulnerable. - if Self::invulnerables().contains(stash) { - continue; - } - - // Auto deselect validator on any offence and force a new era if they haven't previously - // been deselected. - if >::exists(stash) { - >::remove(stash); - Self::ensure_new_era(); - } - - // calculate the amount to slash - let slash_exposure = exposure.total; - let amount = *slash_fraction * slash_exposure; - // in some cases `slash_fraction` can be just `0`, - // which means we are not slashing this time. - if amount.is_zero() { - continue; - } - - // make sure to disable validator till the end of this session - if T::SessionInterface::disable_validator(stash).unwrap_or(false) { - // force a new era, to select a new validator set - Self::ensure_new_era(); - } - // actually slash the validator - let (ring_slashed_amount, kton_slash_amount) = Self::slash_validator(stash, amount, exposure, &mut journal); - - // distribute the rewards according to the slash - // RING part - let ring_slash_reward = slash_reward_fraction * ring_slashed_amount.peek(); - if !ring_slash_reward.is_zero() && !details.reporters.is_empty() { - let (mut reward, rest) = ring_slashed_amount.split(ring_slash_reward); - // split the reward between reporters equally. Division cannot fail because - // we guarded against it in the enclosing if. - let per_reporter = reward.peek() / (details.reporters.len() as u32).into(); - for reporter in &details.reporters { - let (reporter_reward, rest) = reward.split(per_reporter); - reward = rest; - T::Ring::resolve_creating(reporter, reporter_reward); - } - // The rest goes to the treasury. - ring_remaining_imbalance.subsume(reward); - ring_remaining_imbalance.subsume(rest); - } else { - ring_remaining_imbalance.subsume(ring_slashed_amount); - } - - // distribute the rewards according to the slash - // KTON part - let kton_slash_reward = slash_reward_fraction * kton_slash_amount.peek(); - if !kton_slash_reward.is_zero() && !details.reporters.is_empty() { - let (mut reward, rest) = kton_slash_amount.split(kton_slash_reward); - // split the reward between reporters equally. Division cannot fail because - // we guarded against it in the enclosing if. - let per_reporter = reward.peek() / (details.reporters.len() as u32).into(); - for reporter in &details.reporters { - let (reporter_reward, rest) = reward.split(per_reporter); - reward = rest; - T::Kton::resolve_creating(reporter, reporter_reward); - } - // The rest goes to the treasury. - kton_remaining_imbalance.subsume(reward); - kton_remaining_imbalance.subsume(rest); - } else { - kton_remaining_imbalance.subsume(kton_slash_amount); - } - } - >::insert(era_now, journal); - - // Handle the rest of imbalances - T::RingSlash::on_unbalanced(ring_remaining_imbalance); - T::KtonSlash::on_unbalanced(kton_remaining_imbalance); - } -} - -/// Filter historical offences out and only allow those from the current era. -pub struct FilterHistoricalOffences { - _inner: rstd::marker::PhantomData<(T, R)>, -} - -impl ReportOffence for FilterHistoricalOffences, R> -where - T: Trait, - R: ReportOffence, - O: Offence, -{ - fn report_offence(reporters: Vec, offence: O) { - // disallow any slashing from before the current era. - let offence_session = offence.session_index(); - if offence_session >= >::current_era_start_session_index() { - R::report_offence(reporters, offence) - } else { - >::deposit_event(RawEvent::OldSlashingReportDiscarded(offence_session)) - } - } -} - -impl OnDepositRedeem for Module { - type Moment = T::Moment; - - fn on_deposit_redeem( - months: u64, - start_at: u64, - amount: u128, - stash: &T::AccountId, - ) -> result::Result<(), &'static str> { - let controller = Self::bonded(&stash).ok_or(err::STASH_INVALID)?; - let ledger = Self::ledger(&controller).ok_or(err::CONTROLLER_INVALID)?; - - // TODO: Issue #169, checking the timestamp unit difference between Ethereum and Darwinia - let start = start_at * 1000; - let promise_month = months.min(36); - - // let stash_balance = T::Ring::free_balance(&stash); - let value = amount.saturated_into(); - - // TODO: Lock but no kton reward because this is a deposit redeem - // let extra = extra.min(r); - - let redeemed_positive_imbalance_ring = T::Ring::deposit_into_existing(&stash, value)?; - - T::RingReward::on_unbalanced(redeemed_positive_imbalance_ring); - - Self::bond_helper_in_ring_for_deposit_redeem(&stash, &controller, value, start, promise_month, ledger); - - >::mutate(|r| *r += value); - // TODO: Should we deposit an different event? - >::deposit_event(RawEvent::Bond( - StakingBalances::RingBalance(value.saturated_into()), - start, - promise_month, - )); - - Ok(()) - } -} diff --git a/srml/staking/src/tests.rs b/srml/staking/src/tests.rs deleted file mode 100644 index bd62d293c..000000000 --- a/srml/staking/src/tests.rs +++ /dev/null @@ -1,4135 +0,0 @@ -use sr_primitives::{assert_eq_error_rate, traits::OnInitialize}; -use srml_support::{ - assert_eq_uvec, assert_err, assert_noop, assert_ok, - traits::{Currency, ReservableCurrency}, -}; - -use crate::{ - // Explicit import `Kton` and `Ring` to overwrite same name in crate. - mock::{Kton, Ring, *}, - *, -}; -use darwinia_support::{BalanceLock, NormalLock, StakingLock, WithdrawLock, WithdrawReasons}; - -/// gen_paired_account!(a(1), b(2), m(12)); -/// will create stash `a` and controller `b` -/// `a` has 100 Ring and 100 Kton -/// promise for `m` month with 50 Ring and 50 Kton -/// -/// `m` can be ignore, this won't create variable `m` -/// ```rust -/// gen_parired_account!(a(1), b(2), 12); -/// ``` -/// -/// `m(12)` can be ignore, and it won't perform `bond` action -/// ```rust -/// gen_paired_account!(a(1), b(2)); -/// ``` -macro_rules! gen_paired_account { - ($stash:ident($stash_id:expr), $controller:ident($controller_id:expr), $promise_month:ident($how_long:expr)) => { - #[allow(non_snake_case, unused)] - let $stash = $stash_id; - let _ = Ring::deposit_creating(&$stash, 100 * COIN); - let _ = Kton::deposit_creating(&$stash, 100 * COIN); - #[allow(non_snake_case, unused)] - let $controller = $controller_id; - let _ = Ring::deposit_creating(&$controller, COIN); - #[allow(non_snake_case, unused)] - let $promise_month = $how_long; - assert_ok!(Staking::bond( - Origin::signed($stash), - $controller, - StakingBalances::RingBalance(50 * COIN), - RewardDestination::Stash, - $how_long, - )); - assert_ok!(Staking::bond_extra( - Origin::signed($stash), - StakingBalances::KtonBalance(50 * COIN), - $how_long - )); - }; - ($stash:ident($stash_id:expr), $controller:ident($controller_id:expr), $how_long:expr) => { - #[allow(non_snake_case, unused)] - let $stash = $stash_id; - let _ = Ring::deposit_creating(&$stash, 100 * COIN); - let _ = Kton::deposit_creating(&$stash, 100 * COIN); - #[allow(non_snake_case, unused)] - let $controller = $controller_id; - let _ = Ring::deposit_creating(&$controller, COIN); - assert_ok!(Staking::bond( - Origin::signed($stash), - $controller, - StakingBalances::RingBalance(50 * COIN), - RewardDestination::Stash, - $how_long, - )); - assert_ok!(Staking::bond_extra( - Origin::signed($stash), - StakingBalances::KtonBalance(50 * COIN), - $how_long, - )); - }; - ($stash:ident($stash_id:expr), $controller:ident($controller_id:expr)) => { - #[allow(non_snake_case, unused)] - let $stash = $stash_id; - let _ = Ring::deposit_creating(&$stash, 100 * COIN); - let _ = Kton::deposit_creating(&$stash, 100 * COIN); - #[allow(non_snake_case, unused)] - let $controller = $controller_id; - let _ = Ring::deposit_creating(&$controller, COIN); - }; -} - -#[test] -fn force_unstake_works() { - // Verifies initial conditions of mock. - ExtBuilder::default().build().execute_with(|| { - // Account 11 is stashed and locked, and account 10 is the controller. - assert_eq!(Staking::bonded(&11), Some(10)); - // Cant transfer. - assert_noop!( - Ring::transfer(Origin::signed(11), 1, 10), - "account liquidity restrictions prevent withdrawal", - ); - // Force unstake requires root. - assert_noop!(Staking::force_unstake(Origin::signed(11), 11), "RequireRootOrigin"); - // We now force them to unstake. - assert_ok!(Staking::force_unstake(Origin::ROOT, 11)); - // No longer bonded. - assert_eq!(Staking::bonded(&11), None); - // Transfer works. - assert_ok!(Ring::transfer(Origin::signed(11), 1, 10)); - }); -} - -#[test] -fn basic_setup_works() { - // Verifies initial conditions of mock. - ExtBuilder::default().build().execute_with(|| { - // Account 11 is stashed and locked, and account 10 is the controller. - assert_eq!(Staking::bonded(&11), Some(10)); - // Account 21 is stashed and locked, and account 20 is the controller. - assert_eq!(Staking::bonded(&21), Some(20)); - // Account 1 is not a stashed. - assert_eq!(Staking::bonded(&1), None); - - // Account 10 controls the stash from account 11, which is 100 * balance_factor units. - assert_eq!( - Staking::ledger(&10), - Some(StakingLedger { - stash: 11, - active_ring: 1000, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: StakingLock { - staking_amount: 1000, - unbondings: vec![], - }, - kton_staking_lock: Default::default(), - }) - ); - // Account 20 controls the stash from account 21, which is 200 * balance_factor units. - assert_eq!( - Staking::ledger(&20), - Some(StakingLedger { - stash: 21, - active_ring: 1000, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: StakingLock { - staking_amount: 1000, - unbondings: vec![], - }, - kton_staking_lock: Default::default(), - }) - ); - // Account 1 does not control any stash. - assert_eq!(Staking::ledger(&1), None); - - // ValidatorPrefs are default. - { - let validator_prefs = ValidatorPrefs { - node_name: "Darwinia Node".into(), - ..Default::default() - }; - assert_eq!( - >::enumerate().collect::>(), - vec![ - (31, validator_prefs.clone()), - (21, validator_prefs.clone()), - (11, validator_prefs.clone()), - ] - ); - } - - assert_eq!( - Staking::ledger(100), - Some(StakingLedger { - stash: 101, - active_ring: 500, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: StakingLock { - staking_amount: 500, - unbondings: vec![], - }, - kton_staking_lock: Default::default(), - }) - ); - assert_eq!(Staking::nominators(101), vec![11, 21]); - - if cfg!(feature = "equalize") { - let vote_form_101_per_validator = Staking::power_of(&101) / 2; - - let exposure_own_of_11 = Staking::power_of(&11); - let exposure_total_of_11 = exposure_own_of_11 + vote_form_101_per_validator; - - let exposure_own_of_21 = Staking::power_of(&21); - let exposure_total_of_21 = exposure_own_of_21 + vote_form_101_per_validator; - - assert_eq!( - Staking::stakers(11), - Exposure { - total: exposure_total_of_11, - own: exposure_own_of_11, - others: vec![IndividualExposure { - who: 101, - value: vote_form_101_per_validator, - }], - } - ); - assert_eq!( - Staking::stakers(21), - Exposure { - total: exposure_total_of_21, - own: exposure_own_of_21, - others: vec![IndividualExposure { - who: 101, - value: vote_form_101_per_validator, - }], - } - ); - // initial slot_stake. - assert_eq!(exposure_total_of_11, exposure_total_of_21); - assert_eq!(Staking::slot_stake(), exposure_total_of_11); - } else { - let vote_of_101 = Staking::power_of(&101); - - let exposure_own_of_11 = Staking::power_of(&11); - let exposure_others_of_11 = vote_of_101 * 4 / 1; - let exposure_total_of_11 = exposure_own_of_11 + exposure_others_of_11; - - assert_eq!( - Staking::stakers(11), - Exposure { - total: exposure_total_of_11, - own: exposure_own_of_11, - others: vec![IndividualExposure { - who: 101, - value: exposure_others_of_11, - }], - } - ); - assert_eq!( - Staking::stakers(21), - Exposure { - total: Staking::power_of(&21), - own: 1000, - others: vec![IndividualExposure { - who: 101, - value: vote_of_101 * 4 / 3, - }], - } - ); - // initial slot_stake. - assert_eq!(Staking::slot_stake(), exposure_total_of_11); - } - - // The number of validators required. - assert_eq!(Staking::validator_count(), 2); - - // Initial Era and session. - assert_eq!(Staking::current_era(), 0); - - // Account 10 has `balance_factor` free balance. - assert_eq!(Ring::free_balance(&10), 1); - assert_eq!(Ring::free_balance(&10), 1); - - // New era is not being forced. - assert_eq!(Staking::force_era(), Forcing::NotForcing); - - // All exposures must be correct. - check_exposure_all(); - check_nominator_all(); - }); -} - -#[test] -fn change_controller_works() { - ExtBuilder::default().build().execute_with(|| { - assert_eq!(Staking::bonded(&11), Some(10)); - - assert!(>::enumerate() - .map(|(c, _)| c) - .collect::>() - .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_ok!(Staking::set_controller(Origin::signed(11), 5)); - - start_era(1); - - assert_noop!( - Staking::validate( - Origin::signed(10), - ValidatorPrefs { - node_name: "Darwinia Node".into(), - ..Default::default() - } - ), - err::CONTROLLER_INVALID, - ); - assert_ok!(Staking::validate( - Origin::signed(5), - ValidatorPrefs { - node_name: "Darwinia Node".into(), - ..Default::default() - } - )); - }) -} - -// TODO: https://github.com/darwinia-network/darwinia/issues/191 need discuss -#[test] -fn rewards_should_work() { - // should check that: - // * 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 _ = Ring::make_free_balance_be(&2, 500); - - let delay = 1000; - let init_balance_2 = Ring::total_balance(&2); - let init_balance_10 = Ring::total_balance(&10); - let init_balance_11 = Ring::total_balance(&11); - - // 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); - - // 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!(Ring::total_balance(&2), init_balance_2); - assert_eq!(Ring::total_balance(&10), init_balance_10); - assert_eq!(Ring::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); - - 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); - - // 11 validator has 2/3 of the total rewards and half half for it and its nominator. (should fix) - assert_eq_error_rate!(Ring::total_balance(&2), init_balance_2 + total_payout / 3, 100); - assert_eq_error_rate!(Ring::total_balance(&10), init_balance_10 + total_payout / 3, 100); - assert_eq!(Ring::total_balance(&11), init_balance_11); - }); -} - -// TODO -#[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 = Ring::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 meaningfull if reward something - >::reward_by_ids(vec![(11, 1)]); - - start_session(0); - start_session(1); - start_session(2); - start_session(3); - - assert_eq!(Staking::current_era(), 1); - assert_eq!(Ring::total_balance(&10), init_balance_10 + total_payout_0); - - start_session(4); - - let total_payout_1 = current_total_payout_for_duration(3000); - assert!(total_payout_1 > 10); // Test is meaningfull if reward something - >::reward_by_ids(vec![(11, 101)]); - - // New era is triggered here. - start_session(5); - - // Pay time. - assert_eq!( - Ring::total_balance(&10), - init_balance_10 + total_payout_0 + total_payout_1 - ); - }); -} - -#[test] -fn staking_should_work() { - // should test: - // * new validators can be added to the default set - // * new ones will be chosen per era - // * either one can unlock the stash and back-down from being a validator via `chill`ing. - ExtBuilder::default() - .nominate(false) - .fair(false) // to give 20 more staked value - .build() - .execute_with(|| { - Timestamp::set_timestamp(1); // Initialize time. - - // remember + compare this along with the test. - assert_eq_uvec!(validator_controllers(), vec![20, 10]); - - // Put some money in account that we'll use. - for i in 1..5 { - let _ = Ring::make_free_balance_be(&i, 2000); - } - - // --- Block 1: - start_session(1); - // Add a new candidate for being a validator. account 3 controlled by 4. - assert_ok!(Staking::bond( - Origin::signed(3), - 4, - StakingBalances::RingBalance(1500), - RewardDestination::Controller, - 0, - )); - assert_ok!(Staking::validate( - Origin::signed(4), - ValidatorPrefs { - node_name: "Darwinia Node".into(), - ..Default::default() - }, - )); - - // No effects will be seen so far. - assert_eq_uvec!(validator_controllers(), vec![20, 10]); - - // --- Block 2: - start_session(2); - - // 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. - start_session(4); - - assert_eq_uvec!(validator_controllers(), vec![20, 4]); - // --- Block 4: 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); - assert_eq_uvec!(validator_controllers(), vec![20, 4]); - - // --- Block 6: 4 will not be a validator. - start_session(7); - assert_eq_uvec!(validator_controllers(), vec![20, 10]); - - // Note: the stashed value of 4 is still lock. - assert_eq!( - Staking::ledger(&4).unwrap(), - StakingLedger { - stash: 3, - active_ring: 1500, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: StakingLock { - staking_amount: 1500, - unbondings: vec![], - }, - kton_staking_lock: Default::default(), - }, - ); - // e.g. It cannot spend more than 500 that it has free from the total 2000. - assert_noop!( - Ring::reserve(&3, 501), - "account liquidity restrictions prevent withdrawal", - ); - assert_ok!(Ring::reserve(&3, 409)); - }); -} - -#[test] -fn less_than_needed_candidates_works() { - ExtBuilder::default() - .minimum_validator_count(1) - .validator_count(4) - .nominate(false) - .num_validators(3) - .build() - .execute_with(|| { - assert_eq!(Staking::validator_count(), 4); - assert_eq!(Staking::minimum_validator_count(), 1); - assert_eq_uvec!(validator_controllers(), vec![30, 20, 10]); - - start_era(1); - - // Previous set is selected. NO election algorithm is even executed. - assert_eq_uvec!(validator_controllers(), vec![30, 20, 10]); - - // 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(); - }); -} - -#[test] -fn no_candidate_emergency_condition() { - ExtBuilder::default() - .minimum_validator_count(10) - .validator_count(15) - .num_validators(4) - .validator_pool(true) - .nominate(false) - .build() - .execute_with(|| { - // Initial validators. - assert_eq_uvec!(validator_controllers(), vec![10, 20, 30, 40]); - - // Set the minimum validator count. - ::MinimumValidatorCount::put(10); - ::ValidatorCount::put(15); - assert_eq!(Staking::validator_count(), 15); - - let _ = Staking::chill(Origin::signed(10)); - - // Trigger era. - System::set_block_number(1); - Session::on_initialize(System::block_number()); - - // Previous ones are elected. chill is invalidates. TODO: #2494 - assert_eq_uvec!(validator_controllers(), vec![10, 20, 30, 40]); - assert_eq!(Staking::current_elected().len(), 0); - }); -} - -// TODO -// #[test] -// fn nominating_and_rewards_should_work() { -// // PHRAGMEN OUTPUT: running this test with the reference impl gives: -// // -// // Sequential Phragmén gives -// // 10 is elected with stake 2200.0 and score 0.0003333333333333333 -// // 20 is elected with stake 1800.0 and score 0.0005555555555555556 - -// // 10 has load 0.0003333333333333333 and supported -// // 10 with stake 1000.0 -// // 20 has load 0.0005555555555555556 and supported -// // 20 with stake 1000.0 -// // 30 has load 0 and supported -// // 30 with stake 0 -// // 40 has load 0 and supported -// // 40 with stake 0 -// // 2 has load 0.0005555555555555556 and supported -// // 10 with stake 600.0 20 with stake 400.0 30 with stake 0.0 -// // 4 has load 0.0005555555555555556 and supported -// // 10 with stake 600.0 20 with stake 400.0 40 with stake 0.0 - -// // Sequential Phragmén with post processing gives -// // 10 is elected with stake 2000.0 and score 0.0003333333333333333 -// // 20 is elected with stake 2000.0 and score 0.0005555555555555556 - -// // 10 has load 0.0003333333333333333 and supported -// // 10 with stake 1000.0 -// // 20 has load 0.0005555555555555556 and supported -// // 20 with stake 1000.0 -// // 30 has load 0 and supported -// // 30 with stake 0 -// // 40 has load 0 and supported -// // 40 with stake 0 -// // 2 has load 0.0005555555555555556 and supported -// // 10 with stake 400.0 20 with stake 600.0 30 with stake 0 -// // 4 has load 0.0005555555555555556 and supported -// // 10 with stake 600.0 20 with stake 400.0 40 with stake 0.0 -// ExtBuilder::default() -// .nominate(false) -// .validator_pool(true) -// .build() -// .execute_with(|| { -// // initial validators -- everyone is actually even. -// assert_eq_uvec!(validator_controllers(), vec![40, 30]); - -// // Set payee to controller -// assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); -// assert_ok!(Staking::set_payee(Origin::signed(20), RewardDestination::Controller)); -// assert_ok!(Staking::set_payee(Origin::signed(30), RewardDestination::Controller)); -// assert_ok!(Staking::set_payee(Origin::signed(40), RewardDestination::Controller)); - -// // give the man some money -// let initial_balance = 1000; -// for i in [1, 2, 3, 4, 5, 10, 11, 20, 21].iter() { -// let _ = Ring::make_free_balance_be(i, initial_balance); -// } - -// // bond two account pairs and state interest in nomination. -// // 2 will nominate for 10, 20, 30 -// assert_ok!(Staking::bond( -// Origin::signed(1), -// 2, -// StakingBalances::Ring(1000), -// RewardDestination::Controller, -// 0 -// )); -// assert_ok!(Staking::nominate(Origin::signed(2), vec![11, 21, 31])); -// // 4 will nominate for 10, 20, 40 -// assert_ok!(Staking::bond( -// Origin::signed(3), -// 4, -// StakingBalances::Ring(1000), -// RewardDestination::Controller, -// 0 -// )); -// assert_ok!(Staking::nominate(Origin::signed(4), vec![11, 21, 41])); - -// // the total reward for era 0 -// let total_payout_0 = current_total_payout_for_duration(3000); -// assert!(total_payout_0 > 100); // Test is meaningfull 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); - -// // 10 and 20 have more votes, they will be chosen by phragmen. -// assert_eq_uvec!(validator_controllers(), vec![20, 10]); - -// // OLD validators must have already received some rewards. -// assert_eq!(Ring::total_balance(&40), 1 + total_payout_0 / 2); -// assert_eq!(Ring::total_balance(&30), 1 + total_payout_0 / 2); - -// // ------ check the staked value of all parties. - -// if cfg!(feature = "equalize") { -// // total expo of 10, with 1200 coming from nominators (externals), according to phragmen. -// assert_eq!(Staking::stakers(11).own, 1000); // test failed here (TODO) -// assert_eq_error_rate!(Staking::stakers(11).total, 1000 + 1000, 2); -// // 2 and 4 supported 10, each with stake 600, according to phragmen. (TODO) -// // assert_eq!( -// // Staking::stakers(11).others.iter().map(|e| e.value).collect::>>(), -// // vec![600, 400] -// // ); -// 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 + 1000, 2); -// // 2 and 4 supported 20, each with stake 250, according to phragmen. (TODO) -// // assert_eq!( -// // Staking::stakers(21).others.iter().map(|e| e.value).collect::>>(), -// // vec![400, 600] -// // ); -// assert_eq!( -// Staking::stakers(21).others.iter().map(|e| e.who).collect::>(), -// vec![3, 1] -// ); -// } else { -// // 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. (TODO) -// // assert_eq!( -// // Staking::stakers(11).others.iter().map(|e| e.value).collect::>>(), -// // vec![400, 400] -// // ); -// 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. (TODO) -// // assert_eq!( -// // Staking::stakers(21).others.iter().map(|e| e.value).collect::>>(), -// // vec![600, 600] -// // ); -// assert_eq!( -// Staking::stakers(21).others.iter().map(|e| e.who).collect::>(), -// vec![3, 1] -// ); -// } - -// // 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 meaningfull 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)]); - -// start_era(2); - -// // nothing else will happen, era ends and rewards are paid again, -// // it is expected that nominators will also be paid. See below - -// let payout_for_10 = total_payout_1 / 3; -// let payout_for_20 = 2 * total_payout_1 / 3; -// if cfg!(feature = "equalize") { -// // Nominator 2: has [400 / 2000 ~ 1 / 5 from 10] + [600 / 2000 ~ 3 / 10 from 20]'s reward. -// assert_eq_error_rate!( -// Ring::total_balance(&2), -// initial_balance + payout_for_10 / 5 + payout_for_20 * 3 / 10, -// 2, -// ); -// // Nominator 4: has [400 / 2000 ~ 1 / 5 from 20] + [600 / 2000 ~ 3 / 10 from 10]'s reward. -// assert_eq_error_rate!( -// Ring::total_balance(&4), -// initial_balance + payout_for_20 / 5 + payout_for_10 * 3 / 10, -// 2, -// ); - -// // Validator 10: got 1000 / 2000 external stake. -// assert_eq_error_rate!(Ring::total_balance(&10), initial_balance + payout_for_10 / 2, 1,); -// // Validator 20: got 1000 / 2000 external stake. -// assert_eq_error_rate!(Ring::total_balance(&20), initial_balance + payout_for_20 / 2, 1,); -// } else { -// // Nominator 2: has [400/1800 ~ 2/9 from 10] + [600/2200 ~ 3/11 from 20]'s reward. ==> 2/9 + 3/11 -// assert_eq_error_rate!( -// Ring::total_balance(&2), -// initial_balance + (2 * payout_for_10 / 9 + 3 * payout_for_20 / 11), -// 1, -// ); -// // Nominator 4: has [400/1800 ~ 2/9 from 10] + [600/2200 ~ 3/11 from 20]'s reward. ==> 2/9 + 3/11 -// assert_eq_error_rate!( -// Ring::total_balance(&4), -// initial_balance + (2 * payout_for_10 / 9 + 3 * payout_for_20 / 11), -// 1, -// ); - -// // Validator 10: got 800 / 1800 external stake => 8/18 =? 4/9 => Validator's share = 5/9 -// assert_eq_error_rate!(Ring::total_balance(&10), initial_balance + 5 * payout_for_10 / 9, 1,); -// // Validator 20: got 1200 / 2200 external stake => 12/22 =? 6/11 => Validator's share = 5/11 -// assert_eq_error_rate!(Ring::total_balance(&20), initial_balance + 5 * payout_for_20 / 11, 1,); -// } - -// check_exposure_all(); -// check_nominator_all(); -// }); -// } - -// TODO -//#[test] -//fn nominators_also_get_slashed() { -// // A nominator should be slashed if the validator they nominated is slashed -// // Here is the breakdown of roles: -// // 10 - is the controller of 11 -// // 11 - is the stash. -// // 2 - is the nominator of 20, 10 -// ExtBuilder::default().nominate(false).build().execute_with(|| { -// assert_eq!(Staking::validator_count(), 2); -// -// // Set payee to controller -// assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); -// -// // give the man some money. -// let initial_balance = 1000; -// for i in [1, 2, 3, 10].iter() { -// let _ = Balances::make_free_balance_be(i, initial_balance); -// } -// -// // 2 will nominate for 10, 20 -// let nominator_stake = 500; -// assert_ok!(Staking::bond(Origin::signed(1), 2, nominator_stake, RewardDestination::default())); -// assert_ok!(Staking::nominate(Origin::signed(2), vec![20, 10])); -// -// let total_payout = current_total_payout_for_duration(3000); -// assert!(total_payout > 100); // Test is meaningfull if reward something -// >::reward_by_ids(vec![(11, 1)]); -// -// // new era, pay rewards, -// start_era(1); -// -// // Nominator stash didn't collect any. -// assert_eq!(Balances::total_balance(&2), initial_balance); -// -// // 10 goes offline -// Staking::on_offence( -// &[OffenceDetails { -// offender: ( -// 11, -// Staking::stakers(&11), -// ), -// reporters: vec![], -// }], -// &[Perbill::from_percent(5)], -// ); -// let expo = Staking::stakers(11); -// let slash_value = 50; -// let total_slash = expo.total.min(slash_value); -// let validator_slash = expo.own.min(total_slash); -// let nominator_slash = nominator_stake.min(total_slash - validator_slash); -// -// // 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(); -// // Because slashing happened. -// assert!(is_disabled(10)); -// }); -//} - -#[test] -fn double_staking_should_fail() { - // should test (in the same order): - // * an account already bonded as stash cannot be be stashed again. - // * an account already bonded as stash cannot nominate. - // * an account already bonded as controller can nominate. - ExtBuilder::default().build().execute_with(|| { - let arbitrary_value = 5; - // 2 = controller, 1 stashed => ok - assert_ok!(Staking::bond( - Origin::signed(1), - 2, - StakingBalances::RingBalance(arbitrary_value), - RewardDestination::default(), - 0, - )); - // 4 = not used so far, 1 stashed => not allowed. - assert_noop!( - Staking::bond( - Origin::signed(1), - 4, - StakingBalances::RingBalance(arbitrary_value), - RewardDestination::default(), - 0, - ), - err::STASH_ALREADY_BONDED, - ); - // 1 = stashed => attempting to nominate should fail. - assert_noop!(Staking::nominate(Origin::signed(1), vec![1]), err::CONTROLLER_INVALID); - // 2 = controller => nominating should work. - assert_ok!(Staking::nominate(Origin::signed(2), vec![1])); - }); -} - -#[test] -fn double_controlling_should_fail() { - // should test (in the same order): - // * an account already bonded as controller CANNOT be reused as the controller of another account. - ExtBuilder::default().build().execute_with(|| { - let arbitrary_value = 5; - // 2 = controller, 1 stashed => ok - assert_ok!(Staking::bond( - Origin::signed(1), - 2, - StakingBalances::RingBalance(arbitrary_value), - RewardDestination::default(), - 0, - )); - // 2 = controller, 3 stashed (Note that 2 is reused.) => no-op - assert_noop!( - Staking::bond( - Origin::signed(3), - 2, - StakingBalances::RingBalance(arbitrary_value), - RewardDestination::default(), - 0, - ), - err::CONTROLLER_ALREADY_PAIRED, - ); - }); -} - -#[test] -fn session_and_eras_work() { - ExtBuilder::default().build().execute_with(|| { - assert_eq!(Staking::current_era(), 0); - - // Block 1: No change. - start_session(0); - assert_eq!(Session::current_index(), 1); - assert_eq!(Staking::current_era(), 0); - - // Block 2: Simple era change. - start_session(2); - assert_eq!(Session::current_index(), 3); - assert_eq!(Staking::current_era(), 1); - - // Block 3: Schedule an era length change; no visible changes. - start_session(3); - assert_eq!(Session::current_index(), 4); - assert_eq!(Staking::current_era(), 1); - - // Block 4: Era change kicks in. - start_session(5); - assert_eq!(Session::current_index(), 6); - assert_eq!(Staking::current_era(), 2); - - // Block 5: No change. - start_session(6); - assert_eq!(Session::current_index(), 7); - assert_eq!(Staking::current_era(), 2); - - // Block 6: No change. - start_session(7); - assert_eq!(Session::current_index(), 8); - assert_eq!(Staking::current_era(), 2); - - // Block 7: Era increment. - start_session(8); - assert_eq!(Session::current_index(), 9); - assert_eq!(Staking::current_era(), 3); - }); -} - -#[test] -fn forcing_new_era_works() { - ExtBuilder::default().build().execute_with(|| { - // normal flow of session. - assert_eq!(Staking::current_era(), 0); - start_session(0); - assert_eq!(Staking::current_era(), 0); - start_session(1); - assert_eq!(Staking::current_era(), 0); - start_session(2); - assert_eq!(Staking::current_era(), 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); - start_session(5); - assert_eq!(Staking::current_era(), 1); - start_session(6); - assert_eq!(Staking::current_era(), 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); - - // forceful change - ForceEra::put(Forcing::ForceAlways); - start_session(9); - assert_eq!(Staking::current_era(), 3); - start_session(10); - assert_eq!(Staking::current_era(), 4); - start_session(11); - assert_eq!(Staking::current_era(), 5); - - // 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); - }); -} - -#[test] -fn cannot_transfer_staked_balance() { - // Tests that a stash account cannot transfer funds - ExtBuilder::default().nominate(false).build().execute_with(|| { - // Confirm account 11 is stashed - assert_eq!(Staking::bonded(&11), Some(10)); - // Confirm account 11 has some free balance - assert_eq!(Ring::free_balance(&11), 1000); - // Confirm account 11 (via controller 10) is totally staked - assert_eq!(Staking::stakers(&11).total, Staking::power_of(&11)); - // Confirm account 11 cannot transfer as a result - assert_noop!( - Ring::transfer(Origin::signed(11), 20, 1), - "account liquidity restrictions prevent withdrawal", - ); - - // Give account 11 extra free balance - let _ = Ring::make_free_balance_be(&11, 10000); - // Confirm that account 11 can now transfer some balance - assert_ok!(Ring::transfer(Origin::signed(11), 20, 1)); - }); -} - -#[test] -fn cannot_transfer_staked_balance_2() { - // Tests that a stash account cannot transfer funds - // Same test as above but with 20, and more accurate. - // 21 has 2000 free balance but 1000 at stake - ExtBuilder::default() - .nominate(false) - .fair(true) - .build() - .execute_with(|| { - // Confirm account 21 is stashed - assert_eq!(Staking::bonded(&21), Some(20)); - // Confirm account 21 has some free balance - assert_eq!(Ring::free_balance(&21), 2000); - // Confirm account 21 (via controller 20) is totally staked - assert_eq!(Staking::stakers(&21).total, Staking::power_of(&11)); - // Confirm account 21 can transfer at most 1000 - assert_noop!( - Ring::transfer(Origin::signed(21), 20, 1001), - "account liquidity restrictions prevent withdrawal", - ); - assert_ok!(Ring::transfer(Origin::signed(21), 20, 1000)); - }); -} - -#[test] -fn cannot_reserve_staked_balance() { - // Checks that a bonded account cannot reserve balance from free balance - ExtBuilder::default().build().execute_with(|| { - // Confirm account 11 is stashed - assert_eq!(Staking::bonded(&11), Some(10)); - // Confirm account 11 has some free balance - assert_eq!(Ring::free_balance(&11), 1000); - // Confirm account 11 (via controller 10) is totally staked - assert_eq!(Staking::stakers(&11).own, Staking::power_of(&11)); - // Confirm account 11 cannot transfer as a result - assert_noop!( - Ring::reserve(&11, 1), - "account liquidity restrictions prevent withdrawal" - ); - - // Give account 11 extra free balance - let _ = Ring::make_free_balance_be(&11, 10000); - // Confirm account 11 can now reserve balance - assert_ok!(Ring::reserve(&11, 1)); - }); -} - -// TODO -//#[test] -//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)); -// // Check the balance of the validator account -// assert_eq!(Balances::free_balance(&10), 1); -// // Check the balance of the stash account -// assert_eq!(Balances::free_balance(&11), 1000); -// // Check how much is at stake -// assert_eq!( -// Staking::ledger(&10), -// Some(StakingLedger { -// stash: 11, -// total: 1000, -// active: 1000, -// unlocking: vec![], -// }) -// ); -// -// // 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 meaningfull if reward something -// >::reward_by_ids(vec![(11, 1)]); -// -// start_era(1); -// -// // Check that RewardDestination is Staked (default) -// assert_eq!(Staking::payee(&11), RewardDestination::Staked); -// // Check that reward went to the stash account of validator -// assert_eq!(Balances::free_balance(&11), 1000 + total_payout_0); -// // Check that amount at stake increased accordingly -// assert_eq!( -// Staking::ledger(&10), -// Some(StakingLedger { -// stash: 11, -// total: 1000 + total_payout_0, -// active: 1000 + total_payout_0, -// unlocking: vec![], -// }) -// ); -// -// //Change RewardDestination to Stash -// >::insert(&11, RewardDestination::Stash); -// -// // 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 > 100); // Test is meaningfull if reward something -// >::reward_by_ids(vec![(11, 1)]); -// -// start_era(2); -// -// // Check that RewardDestination is Stash -// assert_eq!(Staking::payee(&11), RewardDestination::Stash); -// // Check that reward went to the stash account -// assert_eq!(Balances::free_balance(&11), 1000 + total_payout_0 + total_payout_1); -// // Record this value -// let recorded_stash_balance = 1000 + total_payout_0 + total_payout_1; -// // Check that amount at stake is NOT increased -// assert_eq!( -// Staking::ledger(&10), -// Some(StakingLedger { -// stash: 11, -// total: 1000 + total_payout_0, -// active: 1000 + total_payout_0, -// unlocking: vec![], -// }) -// ); -// -// // Change RewardDestination to Controller -// >::insert(&11, RewardDestination::Controller); -// -// // Check controller balance -// assert_eq!(Balances::free_balance(&10), 1); -// -// // 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 > 100); // Test is meaningfull if reward something -// >::reward_by_ids(vec![(11, 1)]); -// -// start_era(3); -// -// // Check that RewardDestination is Controller -// assert_eq!(Staking::payee(&11), RewardDestination::Controller); -// // Check that reward went to the controller account -// assert_eq!(Balances::free_balance(&10), 1 + total_payout_2); -// // Check that amount at stake is NOT increased -// assert_eq!( -// Staking::ledger(&10), -// Some(StakingLedger { -// stash: 11, -// total: 1000 + total_payout_0, -// active: 1000 + total_payout_0, -// unlocking: vec![], -// }) -// ); -// // Check that amount in staked account is NOT increased. -// assert_eq!(Balances::free_balance(&11), recorded_stash_balance); -// }); -//} - -// TODO -//#[test] -//fn validator_payment_prefs_work() { -// // Test that validator preferences are correctly honored -// // 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 validator_cut = 5; -// 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); -// >::insert( -// &11, -// ValidatorPrefs { -// validator_payment: validator_cut, -// }, -// ); -// -// // 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 meaningfull if reward something -// >::reward_by_ids(vec![(11, 1)]); -// -// start_era(1); -// -// // whats left to be shared is the sum of 3 rounds minus the validator's cut. -// let shared_cut = total_payout_0 - validator_cut; -// // Validator's payee is Staked account, 11, reward will be paid here. -// assert_eq!( -// Balances::total_balance(&11), -// stash_initial_balance + shared_cut / 2 + validator_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); -// -// check_exposure_all(); -// check_nominator_all(); -// }); -//} - -#[test] -fn bond_extra_works() { - // Tests that extra `free_balance` in the stash can be added to stake - // NOTE: this tests only verifies `StakingLedger` for correct updates - // See `bond_extra_and_withdraw_unbonded_works` for more details and updates on `Exposure`. - ExtBuilder::default().build().execute_with(|| { - // Check that account 10 is a validator - assert!(>::exists(11)); - // Check that account 10 is bonded to account 11 - assert_eq!(Staking::bonded(&11), Some(10)); - // Check how much is at stake - assert_eq!( - Staking::ledger(&10).unwrap(), - StakingLedger { - stash: 11, - active_ring: 1000, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: StakingLock { - staking_amount: 1000, - unbondings: vec![], - }, - kton_staking_lock: Default::default(), - }, - ); - - // Give account 11 some large free balance greater than total - let _ = Ring::make_free_balance_be(&11, 1000000); - - // Call the bond_extra function from controller, add only 100 - assert_ok!(Staking::bond_extra( - Origin::signed(11), - StakingBalances::RingBalance(100), - 12 - )); - // There should be 100 more `total` and `active` in the ledger - assert_eq!( - Staking::ledger(&10).unwrap(), - StakingLedger { - stash: 11, - active_ring: 1000 + 100, - active_deposit_ring: 100, - active_kton: 0, - deposit_items: vec![TimeDepositItem { - value: 100, - start_time: 0, - expire_time: 31104000000, - }], - ring_staking_lock: StakingLock { - staking_amount: 1000 + 100, - unbondings: vec![], - }, - kton_staking_lock: Default::default(), - }, - ); - - // Call the bond_extra function with a large number, should handle it - assert_ok!(Staking::bond_extra( - Origin::signed(11), - StakingBalances::RingBalance(Balance::max_value()), - 0, - )); - // The full amount of the funds should now be in the total and active - assert_eq!( - Staking::ledger(&10).unwrap(), - StakingLedger { - stash: 11, - active_ring: 1000000, - active_deposit_ring: 100, - active_kton: 0, - deposit_items: vec![TimeDepositItem { - value: 100, - start_time: 0, - expire_time: 31104000000, - }], - ring_staking_lock: StakingLock { - staking_amount: 1000000, - unbondings: vec![], - }, - kton_staking_lock: Default::default(), - }, - ); - }); -} - -// TODO -//#[test] -//fn bond_extra_and_withdraw_unbonded_automatically_works() { -// // * Should test -// // * Given an account being bonded [and chosen as a validator](not mandatory) -// // * It can add extra funds to the bonded account. -// // * it can unbond a portion of its funds from the stash account. -// // * Once the unbonding period is done, it can actually take the funds out of the stash. -// ExtBuilder::default().nominate(false).build().execute_with(|| { -// // Set payee to controller. avoids confusion -// assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); -// -// // Give account 11 some large free balance greater than total -// let _ = Balances::make_free_balance_be(&11, 1000000); -// -// // Initial config should be correct -// assert_eq!(Staking::current_era(), 0); -// assert_eq!(Session::current_index(), 0); -// -// // check the balance of a validator accounts. -// assert_eq!(Balances::total_balance(&10), 1); -// -// // confirm that 10 is a normal validator and gets paid at the end of the era. -// start_era(1); -// -// // Initial state of 10 -// assert_eq!( -// Staking::ledger(&10), -// Some(StakingLedger { -// stash: 11, -// total: 1000, -// active: 1000, -// unlocking: vec![], -// }) -// ); -// assert_eq!( -// Staking::stakers(&11), -// Exposure { -// total: 1000, -// own: 1000, -// others: vec![] -// } -// ); -// -// // deposit the extra 100 units -// Staking::bond_extra(Origin::signed(11), 100).unwrap(); -// -// assert_eq!( -// Staking::ledger(&10), -// Some(StakingLedger { -// stash: 11, -// total: 1000 + 100, -// active: 1000 + 100, -// unlocking: vec![], -// }) -// ); -// // 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![] -// } -// ); -// -// // trigger next era. -// Timestamp::set_timestamp(10); -// start_era(2); -// assert_eq!(Staking::current_era(), 2); -// -// // ledger should be the same. -// assert_eq!( -// Staking::ledger(&10), -// Some(StakingLedger { -// stash: 11, -// total: 1000 + 100, -// active: 1000 + 100, -// unlocking: vec![], -// }) -// ); -// // Exposure is now updated. -// assert_eq!( -// Staking::stakers(&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 -// }] -// }) -// ); -// -// // 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 -// }] -// }) -// ); -// -// // trigger next era. -// start_era(3); -// -// // 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 -// }] -// }) -// ); -// -// // trigger next era. -// start_era(5); -// -// 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![] -// }) -// ); -// }) -//} - -#[test] -fn too_many_unbond_calls_should_not_work() { - ExtBuilder::default().build().execute_with(|| { - // Locked at Moment(60). - for _ in 0..MAX_UNLOCKING_CHUNKS - 1 { - assert_ok!(Staking::unbond(Origin::signed(10), StakingBalances::RingBalance(1))); - } - - Timestamp::set_timestamp(1); - - // Locked at MomentT(61). - assert_ok!(Staking::unbond(Origin::signed(10), StakingBalances::RingBalance(1))); - - // Can't do more. - assert_noop!( - Staking::unbond(Origin::signed(10), StakingBalances::RingBalance(1)), - err::UNLOCK_CHUNKS_REACH_MAX, - ); - - // Free up automatically. - Timestamp::set_timestamp(BondingDuration::get()); - - // Can add again. - assert_ok!(Staking::unbond(Origin::signed(10), StakingBalances::RingBalance(1))); - assert_eq!(Staking::ledger(&10).unwrap().ring_staking_lock.unbondings.len(), 2); - }) -} - -// TODO -//#[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 -// 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!(>::exists(&11) && >::exists(&21)); -// -// assert_eq!(Staking::stakers(&11).total, 1000); -// assert_eq!(Staking::stakers(&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); -// -// // 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![], -// }, -// ); -// -// // 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 meaningfull if reward something -// >::reward_by_ids(vec![(11, 1)]); -// >::reward_by_ids(vec![(21, 1)]); -// -// // New era --> rewards are paid --> stakes are changed -// start_era(1); -// -// // -- 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); -// -// 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); -// -// check_exposure_all(); -// check_nominator_all(); -// }); -//} - -#[test] -fn on_free_balance_zero_stash_removes_validator() { - // Tests that validator storage items are cleaned up when stash is empty - // Tests that storage items are untouched when controller is empty - ExtBuilder::default().existential_deposit(10).build().execute_with(|| { - // Check the balance of the validator account - assert_eq!(Ring::free_balance(&10), 256); - // Check the balance of the stash account - assert_eq!(Ring::free_balance(&11), 256000); - // Check these two accounts are bonded - assert_eq!(Staking::bonded(&11), Some(10)); - - // Set some storage items which we expect to be cleaned up - // Set payee information - assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Stash)); - - // Check storage items that should be cleaned up - assert!(>::exists(&10)); - assert!(>::exists(&11)); - assert!(>::exists(&11)); - assert!(>::exists(&11)); - - // Reduce free_balance of controller to 0 - let _ = Ring::slash(&10, Balance::max_value()); - - // Check the balance of the stash account has not been touched - assert_eq!(Ring::free_balance(&11), 256000); - // Check these two accounts are still bonded - assert_eq!(Staking::bonded(&11), Some(10)); - - // Check storage items have not changed - assert!(>::exists(&10)); - assert!(>::exists(&11)); - assert!(>::exists(&11)); - assert!(>::exists(&11)); - - // Reduce free_balance of stash to 0 - let _ = Ring::slash(&11, Balance::max_value()); - // Check total balance of stash - assert_eq!(Ring::total_balance(&11), 0); - - // Check storage items do not exist - assert!(!>::exists(&10)); - assert!(!>::exists(&11)); - assert!(!>::exists(&11)); - assert!(!>::exists(&11)); - assert!(!>::exists(&11)); - }); -} - -#[test] -fn on_free_balance_zero_stash_removes_nominator() { - // Tests that nominator storage items are cleaned up when stash is empty - // Tests that storage items are untouched when controller is empty - ExtBuilder::default().existential_deposit(10).build().execute_with(|| { - // Make 10 a nominator - assert_ok!(Staking::nominate(Origin::signed(10), vec![20])); - // Check that account 10 is a nominator - assert!(>::exists(11)); - // Check the balance of the nominator account - assert_eq!(Ring::free_balance(&10), 256); - // Check the balance of the stash account - assert_eq!(Ring::free_balance(&11), 256000); - - // Set payee information - assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Stash)); - - // Check storage items that should be cleaned up - assert!(>::exists(&10)); - assert!(>::exists(&11)); - assert!(>::exists(&11)); - assert!(>::exists(&11)); - - // Reduce free_balance of controller to 0 - let _ = Ring::slash(&10, Balance::max_value()); - // Check total balance of account 10 - assert_eq!(Ring::total_balance(&10), 0); - - // Check the balance of the stash account has not been touched - assert_eq!(Ring::free_balance(&11), 256000); - // Check these two accounts are still bonded - assert_eq!(Staking::bonded(&11), Some(10)); - - // Check storage items have not changed - assert!(>::exists(&10)); - assert!(>::exists(&11)); - assert!(>::exists(&11)); - assert!(>::exists(&11)); - - // Reduce free_balance of stash to 0 - let _ = Ring::slash(&11, Balance::max_value()); - // Check total balance of stash - assert_eq!(Ring::total_balance(&11), 0); - - // Check storage items do not exist - assert!(!>::exists(&10)); - assert!(!>::exists(&11)); - assert!(!>::exists(&11)); - assert!(!>::exists(&11)); - assert!(!>::exists(&11)); - }); -} - -#[test] -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(|| { - // Initialize time. - Timestamp::set_timestamp(1); - - // Reset reward destination. - for i in &[10, 20] { - assert_ok!(Staking::set_payee(Origin::signed(*i), RewardDestination::Controller)); - } - - assert_eq_uvec!(validator_controllers(), vec![20, 10]); - - // Put some money in account that we'll use. - for i in 1..7 { - let _ = Ring::deposit_creating(&i, 5000); - } - - // Add 2 nominators. - assert_ok!(Staking::bond( - Origin::signed(1), - 2, - StakingBalances::RingBalance(2000), - RewardDestination::Controller, - 0, - )); - assert_ok!(Staking::nominate(Origin::signed(2), vec![11, 5])); - - assert_ok!(Staking::bond( - Origin::signed(3), - 4, - StakingBalances::RingBalance(500), - RewardDestination::Controller, - 0, - )); - assert_ok!(Staking::nominate(Origin::signed(4), vec![21, 1])); - - // Add a new validator candidate. - assert_ok!(Staking::bond( - Origin::signed(5), - 6, - StakingBalances::RingBalance(1000), - RewardDestination::Controller, - 0, - )); - assert_ok!(Staking::validate( - Origin::signed(6), - ValidatorPrefs { - node_name: "Darwinia Node".into(), - ..Default::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); - - // With current nominators 10 and 5 have the most stake. - assert_eq_uvec!(validator_controllers(), vec![6, 10]); - - // 2 decides to be a validator. Consequences: - assert_ok!(Staking::validate( - Origin::signed(2), - ValidatorPrefs { - node_name: "Darwinia Node".into(), - ..Default::default() - }, - )); - // New stakes: - // 10: 1000 self vote - // 20: 1000 self vote + 250 vote - // 6 : 1000 self vote - // 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]); - - // ne era. - start_session(6); - assert_eq_uvec!(validator_controllers(), vec![2, 20]); - - check_exposure_all(); - check_nominator_all(); - }); -} - -#[test] -fn wrong_vote_is_null() { - ExtBuilder::default() - .nominate(false) - .validator_pool(true) - .build() - .execute_with(|| { - assert_eq_uvec!(validator_controllers(), vec![40, 30]); - - // Put some money in account that we'll use. - for i in 1..3 { - let _ = Ring::deposit_creating(&i, 5000); - } - - // Add 1 nominators - assert_ok!(Staking::bond( - Origin::signed(1), - 2, - StakingBalances::RingBalance(2000), - RewardDestination::default(), - 0, - )); - assert_ok!(Staking::nominate( - Origin::signed(2), - vec![ - 11, 21, // Good votes. - 1, 2, 15, 1000, 25 // Crap votes. No effect. - ], - )); - - // New block. - start_era(1); - - assert_eq_uvec!(validator_controllers(), vec![20, 10]); - }); -} - -#[test] -fn bond_with_no_staked_value() { - // Behavior when someone bonds with no staked value. - // Particularly when she votes and the candidate is elected. - ExtBuilder::default() - .validator_count(3) - .existential_deposit(5) - .nominate(false) - .minimum_validator_count(1) - .build() - .execute_with(|| { - // Bonded with absolute minimum value possible. - assert_ok!(Staking::bond( - Origin::signed(1), - 2, - StakingBalances::RingBalance(5), - RewardDestination::Controller, - 0, - )); - // assert_eq!(Ring::locks(&1)[0].amount, 5); - - assert_ok!(Staking::unbond(Origin::signed(2), StakingBalances::RingBalance(5))); - assert_eq!( - Staking::ledger(2), - Some(StakingLedger { - stash: 1, - active_ring: 0, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: StakingLock { - staking_amount: 0, - unbondings: vec![NormalLock { amount: 5, until: 60 }], - }, - kton_staking_lock: Default::default(), - }), - ); - - Timestamp::set_timestamp(BondingDuration::get() - 1); - - // Not yet removed. - assert!(Staking::ledger(2).is_some()); - // assert_eq!(Ring::locks(&1)[0].amount, 5); - - Timestamp::set_timestamp(BondingDuration::get()); - - // FIXME - // Poof. Account 1 is removed from the staking system. - // assert!(Staking::ledger(2).is_none()); - // assert_eq!(Ring::locks(&1).len(), 0); - }); -} - -// TODO -//#[test] -//fn bond_with_little_staked_value_bounded_by_slot_stake() { -// // Behavior when someone bonds with little staked value. -// // Particularly when she votes and the candidate is elected. -// ExtBuilder::default() -// .validator_count(3) -// .nominate(false) -// .minimum_validator_count(1) -// .build() -// .execute_with(|| { -// // setup -// assert_ok!(Staking::chill(Origin::signed(30))); -// assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); -// let init_balance_2 = Balances::free_balance(&2); -// let init_balance_10 = Balances::free_balance(&10); -// -// // Stingy validator. -// assert_ok!(Staking::bond(Origin::signed(1), 2, 1, RewardDestination::Controller)); -// assert_ok!(Staking::validate(Origin::signed(2), ValidatorPrefs::default())); -// -// let total_payout_0 = current_total_payout_for_duration(3000); -// assert!(total_payout_0 > 100); // Test is meaningfull if reward something -// reward_all_elected(); -// start_era(1); -// -// // 2 is elected. -// // and fucks up the slot stake. -// assert_eq_uvec!(validator_controllers(), vec![20, 10, 2]); -// assert_eq!(Staking::slot_stake(), 1); -// -// // 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); -// -// let total_payout_1 = current_total_payout_for_duration(3000); -// assert!(total_payout_1 > 100); // Test is meaningfull if reward something -// reward_all_elected(); -// start_era(2); -// -// assert_eq_uvec!(validator_controllers(), vec![20, 10, 2]); -// assert_eq!(Staking::slot_stake(), 1); -// -// 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(); -// }); -//} - -// TODO -//#[cfg(feature = "equalize")] -//#[test] -//fn phragmen_linear_worse_case_equalize() { -// ExtBuilder::default() -// .nominate(false) -// .validator_pool(true) -// .fair(true) -// .build() -// .execute_with(|| { -// bond_validator(50, 1000); -// bond_validator(60, 1000); -// bond_validator(70, 1000); -// -// bond_nominator(2, 2000, vec![11]); -// bond_nominator(4, 1000, vec![11, 21]); -// bond_nominator(6, 1000, vec![21, 31]); -// bond_nominator(8, 1000, vec![31, 41]); -// bond_nominator(110, 1000, vec![41, 51]); -// bond_nominator(120, 1000, vec![51, 61]); -// bond_nominator(130, 1000, vec![61, 71]); -// -// for i in &[10, 20, 30, 40, 50, 60, 70] { -// assert_ok!(Staking::set_payee(Origin::signed(*i), RewardDestination::Controller)); -// } -// -// assert_eq_uvec!(validator_controllers(), vec![40, 30]); -// assert_ok!(Staking::set_validator_count(Origin::ROOT, 7)); -// -// start_era(1); -// -// assert_eq_uvec!(validator_controllers(), vec![10, 60, 40, 20, 50, 30, 70]); -// -// assert_eq_error_rate!(Staking::stakers(11).total, 3000, 2); -// assert_eq_error_rate!(Staking::stakers(21).total, 2255, 2); -// assert_eq_error_rate!(Staking::stakers(31).total, 2255, 2); -// assert_eq_error_rate!(Staking::stakers(41).total, 1925, 2); -// assert_eq_error_rate!(Staking::stakers(51).total, 1870, 2); -// assert_eq_error_rate!(Staking::stakers(61).total, 1890, 2); -// assert_eq_error_rate!(Staking::stakers(71).total, 1800, 2); -// -// check_exposure_all(); -// check_nominator_all(); -// }) -//} - -#[test] -fn new_era_elects_correct_number_of_validators() { - ExtBuilder::default() - .nominate(true) - .validator_pool(true) - .fair(true) - .validator_count(1) - .build() - .execute_with(|| { - assert_eq!(Staking::validator_count(), 1); - assert_eq!(validator_controllers().len(), 1); - - System::set_block_number(1); - Session::on_initialize(System::block_number()); - - assert_eq!(validator_controllers().len(), 1); - check_exposure_all(); - check_nominator_all(); - }) -} - -#[test] -fn reward_from_authorship_event_handler_works() { - ExtBuilder::default().build().execute_with(|| { - use authorship::EventHandler; - - assert_eq!(>::author(), 11); - - >::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]); - - // 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); - }) -} - -#[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]); - - >::reward_by_indices(vec![(0, 1), (1, 1), (2, 1), (1, 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); - }) -} - -#[test] -fn unbonded_balance_is_not_slashable() { - ExtBuilder::default().build().execute_with(|| { - // Total amount staked is slashable. - assert_eq!(Staking::ledger(&10).unwrap().active_ring, 1000); - - assert_ok!(Staking::unbond(Origin::signed(10), StakingBalances::RingBalance(800))); - - // Only the active portion. - assert_eq!(Staking::ledger(&10).unwrap().active_ring, 200); - }) -} - -#[test] -fn era_is_always_same_length() { - // This ensures that the sessions is always of the same length if there is no forcing no - // session changes. - ExtBuilder::default().build().execute_with(|| { - start_era(1); - assert_eq!(Staking::current_era_start_session_index(), SessionsPerEra::get()); - - start_era(2); - assert_eq!(Staking::current_era_start_session_index(), 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); - - start_era(4); - assert_eq!( - Staking::current_era_start_session_index(), - session + SessionsPerEra::get() + 1 - ); - }); -} - -#[test] -fn offence_forces_new_era() { - ExtBuilder::default().build().execute_with(|| { - Staking::on_offence( - &[OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }], - &[Perbill::from_percent(5)], - ); - - assert_eq!(Staking::force_era(), Forcing::ForceNew); - }); -} - -#[test] -fn offence_ensures_new_era_without_clobbering() { - ExtBuilder::default().build().execute_with(|| { - assert_ok!(Staking::force_new_era_always(Origin::ROOT)); - - Staking::on_offence( - &[OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }], - &[Perbill::from_percent(5)], - ); - - assert_eq!(Staking::force_era(), Forcing::ForceAlways); - }); -} - -#[test] -fn offence_deselects_validator_when_slash_is_zero() { - ExtBuilder::default().build().execute_with(|| { - assert!(>::exists(11)); - Staking::on_offence( - &[OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }], - &[Perbill::from_percent(0)], - ); - assert_eq!(Staking::force_era(), Forcing::ForceNew); - assert!(!>::exists(11)); - }); -} - -// TODO -//#[test] -//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); -// -// // Handle an offence with a historical exposure. -// Staking::on_offence( -// &[OffenceDetails { -// offender: ( -// 11, -// Exposure { -// total: 500, -// own: 500, -// others: vec![], -// }, -// ), -// reporters: vec![], -// }], -// &[Perbill::from_percent(50)], -// ); -// -// // The stash account should be slashed for 250 (50% of 500). -// assert_eq!(Balances::free_balance(&11), 1000 - 250); -// }); -//} - -#[test] -fn reporters_receive_their_slice() { - // This test verifies that the reporters of the offence receive their slice from the slashed - // amount. - ExtBuilder::default().build().execute_with(|| { - // The reporters' reward is calculated from the total exposure. - #[cfg(feature = "equalize")] - let initial_balance = 1250; - #[cfg(not(feature = "equalize"))] - let initial_balance = 1125; - - Staking::on_offence( - &[OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![1, 2], - }], - &[Perbill::from_percent(50)], - ); - - // initial_balance x 50% (slash fraction) x 10% (rewards slice) - let reward = initial_balance / 20 / 2; - assert_eq!(Ring::free_balance(&1), 10 + reward); - assert_eq!(Ring::free_balance(&2), 20 + reward); - }); -} - -#[test] -fn invulnerables_are_not_slashed() { - // For invulnerable validators no slashing is performed. - ExtBuilder::default().invulnerables(vec![11]).build().execute_with(|| { - #[cfg(feature = "equalize")] - let initial_balance = 1250; - #[cfg(not(feature = "equalize"))] - let initial_balance = 1375; - - assert_eq!(Ring::free_balance(&11), 1000); - assert_eq!(Ring::free_balance(&21), 2000); - - Staking::on_offence( - &[ - OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }, - OffenceDetails { - offender: (21, Staking::stakers(&21)), - reporters: vec![], - }, - ], - &[Perbill::from_percent(50), Perbill::from_percent(20)], - ); - - // The validator 11 hasn't been slashed, but 21 has been. - assert_eq!(Ring::free_balance(&11), 1000); - // 2000 - (0.2 * initial_balance) - assert_eq!(Ring::free_balance(&21), 2000 - (2 * initial_balance / 10)); - }); -} - -#[test] -fn dont_slash_if_fraction_is_zero() { - // Don't slash if the fraction is zero. - ExtBuilder::default().build().execute_with(|| { - assert_eq!(Ring::free_balance(&11), 1000); - - Staking::on_offence( - &[OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }], - &[Perbill::from_percent(0)], - ); - - // The validator hasn't been slashed. The new era is not forced. - assert_eq!(Ring::free_balance(&11), 1000); - }); -} - -// custom tests - -#[test] -fn bond_zero_should_work() { - ExtBuilder::default().build().execute_with(|| { - let (stash, controller) = (123, 456); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::RingBalance(0), - RewardDestination::Stash, - 0, - )); - - let (stash, controller) = (234, 567); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::KtonBalance(0), - RewardDestination::Stash, - 0, - )); - }); -} - -#[test] -fn normal_kton_should_work() { - ExtBuilder::default().build().execute_with(|| { - { - let (stash, controller) = (1001, 1000); - - let _ = Kton::deposit_creating(&stash, 10 * COIN); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::KtonBalance(10 * COIN), - RewardDestination::Stash, - 0, - )); - assert_eq!( - Staking::ledger(controller).unwrap(), - StakingLedger { - stash, - active_ring: 0, - active_deposit_ring: 0, - active_kton: 10 * COIN, - deposit_items: vec![], - ring_staking_lock: Default::default(), - kton_staking_lock: StakingLock { - staking_amount: 10 * COIN, - unbondings: vec![], - }, - } - ); - assert_eq!( - Kton::locks(&stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 10 * COIN, - unbondings: vec![], - }), - reasons: WithdrawReasons::all(), - }] - ); - } - - { - let (stash, controller) = (2001, 2000); - - // promise_month should not work for kton - let _ = Kton::deposit_creating(&stash, 10 * COIN); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::KtonBalance(10 * COIN), - RewardDestination::Stash, - 12, - )); - assert_eq!( - Staking::ledger(controller).unwrap(), - StakingLedger { - stash, - active_ring: 0, - active_deposit_ring: 0, - active_kton: 10 * COIN, - deposit_items: vec![], - ring_staking_lock: Default::default(), - kton_staking_lock: StakingLock { - staking_amount: 10 * COIN, - unbondings: vec![], - }, - } - ); - } - }); -} - -#[test] -fn time_deposit_ring_unbond_and_withdraw_automatically_should_work() { - ExtBuilder::default().build().execute_with(|| { - let (stash, controller) = (11, 10); - - let unbond_value = 10; - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::RingBalance(unbond_value), - )); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 1000 - unbond_value, - unbondings: vec![NormalLock { - amount: unbond_value, - until: BondingDuration::get(), - }], - }), - reasons: WithdrawReasons::all(), - }], - ); - assert_eq!( - Staking::ledger(controller).unwrap(), - StakingLedger { - stash, - active_ring: 1000 - unbond_value, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: StakingLock { - staking_amount: 1000 - unbond_value, - unbondings: vec![NormalLock { - amount: unbond_value, - until: BondingDuration::get(), - }], - }, - kton_staking_lock: Default::default(), - }, - ); - - let unbond_start = 30; - Timestamp::set_timestamp(unbond_start); - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::RingBalance(COIN) - )); - - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 0, - unbondings: vec![ - NormalLock { - amount: unbond_value, - until: BondingDuration::get(), - }, - NormalLock { - amount: 1000 - unbond_value, - until: unbond_start + BondingDuration::get(), - }, - ], - }), - reasons: WithdrawReasons::all(), - }], - ); - assert_eq!( - Staking::ledger(controller).unwrap(), - StakingLedger { - stash, - active_ring: 0, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: StakingLock { - staking_amount: 0, - unbondings: vec![ - NormalLock { - amount: unbond_value, - until: BondingDuration::get(), - }, - NormalLock { - amount: 1000 - unbond_value, - until: unbond_start + BondingDuration::get(), - }, - ], - }, - kton_staking_lock: Default::default(), - }, - ); - - assert_err!( - Ring::transfer(Origin::signed(stash), controller, 1), - "account liquidity restrictions prevent withdrawal", - ); - - Timestamp::set_timestamp(BondingDuration::get()); - assert_ok!(Ring::transfer(Origin::signed(stash), controller, 1)); - }); -} - -#[test] -fn normal_unbond_should_work() { - ExtBuilder::default().build().execute_with(|| { - let (stash, controller) = (11, 10); - let value = 200 * COIN; - let promise_month = 12; - let _ = Ring::deposit_creating(&stash, 1000 * COIN); - - { - let kton_free_balance = Kton::free_balance(&stash); - let mut ledger = Staking::ledger(controller).unwrap(); - - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::RingBalance(value), - promise_month, - )); - assert_eq!( - Kton::free_balance(&stash), - kton_free_balance + inflation::compute_kton_return::(value, promise_month) - ); - ledger.active_ring += value; - ledger.active_deposit_ring += value; - ledger.deposit_items.push(TimeDepositItem { - value, - start_time: 0, - expire_time: promise_month * MONTH_IN_MILLISECONDS, - }); - ledger.ring_staking_lock.staking_amount += value; - assert_eq!(Staking::ledger(controller).unwrap(), ledger); - } - - { - let kton_free_balance = Kton::free_balance(&stash); - let mut ledger = Staking::ledger(controller).unwrap(); - - // We try to bond 1 kton, but stash only has 0.2 Kton. - // extra = COIN.min(20_000_000) - // bond += 20_000_000 - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::KtonBalance(COIN), - 0, - )); - ledger.active_kton += kton_free_balance; - ledger.kton_staking_lock.staking_amount += kton_free_balance; - assert_eq!(Staking::ledger(controller).unwrap(), ledger); - - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::KtonBalance(kton_free_balance) - )); - ledger.active_kton = 0; - ledger.kton_staking_lock.staking_amount = 0; - ledger.kton_staking_lock.unbondings.push(NormalLock { - amount: kton_free_balance, - until: BondingDuration::get(), - }); - assert_eq!(Staking::ledger(controller).unwrap(), ledger); - } - }); -} - -#[test] -fn punished_claim_should_work() { - ExtBuilder::default().build().execute_with(|| { - let (stash, controller) = (1001, 1000); - let promise_month = 36; - let bond_value = 10; - let _ = Ring::deposit_creating(&stash, 1000); - let mut ledger = StakingLedger { - stash, - active_ring: bond_value, - active_deposit_ring: bond_value, - active_kton: 0, - deposit_items: vec![TimeDepositItem { - value: bond_value, - start_time: 0, - expire_time: promise_month * MONTH_IN_MILLISECONDS, - }], - ring_staking_lock: StakingLock { - staking_amount: bond_value, - unbondings: vec![], - }, - kton_staking_lock: Default::default(), - }; - - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::RingBalance(bond_value), - RewardDestination::Stash, - promise_month, - )); - assert_eq!(Staking::ledger(controller).unwrap(), ledger); - // Kton is 0, skip `unbond_with_punish`. - assert_ok!(Staking::try_claim_deposits_with_punish( - Origin::signed(controller), - promise_month * MONTH_IN_MILLISECONDS, - )); - assert_eq!(Staking::ledger(controller).unwrap(), ledger); - - // Set more kton balance to make it work. - let _ = Kton::deposit_creating(&stash, COIN); - assert_ok!(Staking::try_claim_deposits_with_punish( - Origin::signed(controller), - promise_month * MONTH_IN_MILLISECONDS, - )); - ledger.active_deposit_ring -= bond_value; - ledger.deposit_items.clear(); - assert_eq!(Staking::ledger(controller).unwrap(), ledger); - assert_eq!(Kton::free_balance(&stash), COIN - 3); - }); -} - -#[test] -fn transform_to_deposited_ring_should_work() { - ExtBuilder::default().build().execute_with(|| { - let (stash, controller) = (1001, 1000); - let _ = Ring::deposit_creating(&stash, COIN); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::RingBalance(COIN), - RewardDestination::Stash, - 0, - )); - let kton_free_balance = Kton::free_balance(&stash); - let mut ledger = Staking::ledger(controller).unwrap(); - - assert_ok!(Staking::deposit_extra(Origin::signed(controller), COIN, 12)); - ledger.active_deposit_ring += COIN; - ledger.deposit_items.push(TimeDepositItem { - value: COIN, - start_time: 0, - expire_time: 12 * MONTH_IN_MILLISECONDS, - }); - assert_eq!(Staking::ledger(controller).unwrap(), ledger); - assert_eq!(Kton::free_balance(&stash), kton_free_balance + (COIN / 10000)); - }); -} - -#[test] -fn expired_ring_should_capable_to_promise_again() { - ExtBuilder::default().build().execute_with(|| { - let (stash, controller) = (1001, 1000); - let _ = Ring::deposit_creating(&stash, 10); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::RingBalance(10), - RewardDestination::Stash, - 12, - )); - let mut ledger = Staking::ledger(controller).unwrap(); - let ts = 13 * MONTH_IN_MILLISECONDS; - let promise_extra_value = 5; - - Timestamp::set_timestamp(ts); - assert_ok!(Staking::deposit_extra( - Origin::signed(controller), - promise_extra_value, - 13, - )); - ledger.active_deposit_ring = promise_extra_value; - // old deposit_item with 12 months promised removed - ledger.deposit_items = vec![TimeDepositItem { - value: promise_extra_value, - start_time: ts, - expire_time: 2 * ts, - }]; - assert_eq!(Staking::ledger(controller).unwrap(), ledger); - }); -} - -#[test] -fn inflation_should_be_correct() { - ExtBuilder::default().build().execute_with(|| { - let initial_issuance = 1_200_000_000 * COIN; - let surplus_needed = initial_issuance - Ring::total_issuance(); - let _ = Ring::deposit_into_existing(&11, surplus_needed); - - assert_eq!(Ring::total_issuance(), initial_issuance); - }); - - // // breakpoint test - // ExtBuilder::default().build().execute_with(|| { - // gen_paired_account!(validator_1_stash(123), validator_1_controller(456), 0); - // gen_paired_account!(validator_2_stash(234), validator_2_controller(567), 0); - // gen_paired_account!(nominator_stash(345), nominator_controller(678), 0); - // - // assert_ok!(Staking::validate( - // Origin::signed(validator_1_controller), - // ValidatorPrefs { - // node_name: vec![0; 8], - // ..Default::default() - // }, - // )); - // assert_ok!(Staking::validate( - // Origin::signed(validator_2_controller), - // ValidatorPrefs { - // node_name: vec![1; 8], - // ..Default::default() - // }, - // )); - // assert_ok!(Staking::nominate( - // Origin::signed(nominator_controller), - // vec![validator_1_stash, validator_2_stash], - // )); - // - // Timestamp::set_timestamp(1_575_448_345_000 - 12_000); - // // breakpoint here - // Staking::new_era(1); - // - // Timestamp::set_timestamp(1_575_448_345_000); - // // breakpoint here - // Staking::new_era(2); - // - // // breakpoint here - // inflation::compute_total_payout::(11_999, 1_295_225_000, 9_987_999_900_000_000_000); - // - // loop {} - // }); -} - -#[test] -fn validator_payment_ratio_should_work() { - ExtBuilder::default().build().execute_with(|| { - gen_paired_account!(validator_stash(123), validator_controller(456), 0); - gen_paired_account!(nominator_stash(345), nominator_controller(678), 0); - - assert_ok!(Staking::validate( - Origin::signed(validator_controller), - ValidatorPrefs { - node_name: vec![0; 8], - validator_payment_ratio: 0, - }, - )); - assert_ok!(Staking::nominate( - Origin::signed(nominator_controller), - vec![validator_stash], - )); - - assert_eq!(Staking::reward_validator(&validator_stash, COIN).0.peek(), 0); - - assert_ok!(Staking::chill(Origin::signed(validator_controller))); - assert_ok!(Staking::chill(Origin::signed(nominator_controller))); - - assert_ok!(Staking::validate( - Origin::signed(validator_controller), - ValidatorPrefs { - node_name: vec![0; 8], - validator_payment_ratio: 100, - }, - )); - assert_ok!(Staking::nominate( - Origin::signed(nominator_controller), - vec![validator_stash], - )); - - assert_eq!(Staking::reward_validator(&validator_stash, COIN).0.peek(), COIN); - }); -} - -#[test] -fn check_node_name_should_work() { - for node_name in [[0; 33].as_ref(), &[1; 34], &[2; 35]].iter() { - let validator_prefs = ValidatorPrefs { - node_name: (*node_name).to_vec(), - ..Default::default() - }; - assert_err!(validator_prefs.check_node_name(), err::NODE_NAME_REACH_MAX); - } - - for node_name in ["hello@darwinia.network"].iter() { - let validator_prefs = ValidatorPrefs { - node_name: (*node_name).into(), - ..Default::default() - }; - assert_err!(validator_prefs.check_node_name(), err::NODE_NAME_CONTAINS_INVALID_CHARS); - } - - for node_name in [ - "com", - "http", - "https", - "itering com", - "http darwinia", - "https darwinia", - "http darwinia network", - "https darwinia network", - ] - .iter() - { - let validator_prefs = ValidatorPrefs { - node_name: (*node_name).into(), - ..Default::default() - }; - assert_err!(validator_prefs.check_node_name(), err::NODE_NAME_CONTAINS_URLS); - } - - for node_name in ["Darwinia Node"].iter() { - let validator_prefs = ValidatorPrefs { - node_name: (*node_name).into(), - ..Default::default() - }; - assert_ok!(validator_prefs.check_node_name()); - } -} - -//#[test] -//fn reward_and_slash_should_work() { -// // ExtBuilder::default().build().execute_with(|| { -// // gen_paired_account!(stash_1(123), _c(456), 12); -// // gen_paired_account!(stash_2(234), _c(567), 12); -// // -// // >::insert( -// // &stash_1, -// // Exposure { -// // total: 1, -// // own: 1, -// // others: vec![], -// // }, -// // ); -// // assert_eq!(Ring::free_balance(&stash_1), 100 * COIN); -// // let _ = Staking::reward_validator(&stash_1, 20 * COIN); -// // assert_eq!(Ring::free_balance(&stash_1), 120 * COIN); -// // }); -// -// ExtBuilder::default().build().execute_with(|| { -// gen_paired_account!(validator_stash(123), validator_controller(456), 0); -// gen_paired_account!(nominator_stash(345), nominator_controller(678), 0); -// -// println!( -// "{}, {}", -// Ring::free_balance(&validator_stash), -// Kton::free_balance(&validator_stash) -// ); -// println!("{:#?}", Staking::ledger(&validator_controller)); -// println!( -// "{}, {}", -// Ring::free_balance(&nominator_stash), -// Kton::free_balance(&nominator_stash) -// ); -// println!("{:#?}", Staking::ledger(&nominator_controller)); -// -// assert_ok!(Staking::validate( -// Origin::signed(validator_controller), -// ValidatorPrefs { -// node_name: vec![0; 8], -// ..Default::default() -// }, -// )); -// assert_ok!(Staking::nominate( -// Origin::signed(nominator_controller), -// vec![validator_stash], -// )); -// -// println!("{:#?}", Staking::stakers(validator_stash)); -// start_era(1); -// println!("{:#?}", Staking::stakers(validator_stash)); -// }); -//} - -#[test] -fn slash_should_not_touch_unbondings() { - ExtBuilder::default().build().execute_with(|| { - let (stash, controller) = (11, 10); - - assert_ok!(Staking::deposit_extra(Origin::signed(controller), 1000, 12)); - let ledger = Staking::ledger(controller).unwrap(); - // Only deposit_ring, no normal_ring. - assert_eq!((ledger.active_ring, ledger.active_deposit_ring), (1000, 1000)); - - let _ = Ring::deposit_creating(&stash, 1000); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::RingBalance(1000), - 0, - )); - let _ = Kton::deposit_creating(&stash, 1000); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::KtonBalance(1000), - 0, - )); - - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::RingBalance(10) - )); - let ledger = Staking::ledger(controller).unwrap(); - let unbondings = ( - ledger.ring_staking_lock.unbondings.clone(), - ledger.kton_staking_lock.unbondings.clone(), - ); - assert_eq!( - (ledger.active_ring, ledger.active_deposit_ring), - (1000 + 1000 - 10, 1000), - ); - - >::insert( - &stash, - Exposure { - total: 1, - own: 1, - others: vec![], - }, - ); - // FIXME: slash strategy - let _ = Staking::slash_validator(&stash, Power::max_value(), &Staking::stakers(&stash), &mut vec![]); - let ledger = Staking::ledger(controller).unwrap(); - assert_eq!( - ( - ledger.ring_staking_lock.unbondings.clone(), - ledger.kton_staking_lock.unbondings.clone(), - ), - unbondings, - ); - assert_eq!((ledger.active_ring, ledger.active_deposit_ring), (0, 0)); - }); -} - -#[test] -fn check_stash_already_bonded_and_controller_already_paired() { - ExtBuilder::default().build().execute_with(|| { - gen_paired_account!(unpaired_stash(123), unpaired_controller(456)); - assert_err!( - Staking::bond( - Origin::signed(11), - unpaired_controller, - StakingBalances::RingBalance(COIN), - RewardDestination::Stash, - 0, - ), - err::STASH_ALREADY_BONDED, - ); - assert_err!( - Staking::bond( - Origin::signed(unpaired_stash), - 10, - StakingBalances::RingBalance(COIN), - RewardDestination::Stash, - 0, - ), - err::CONTROLLER_ALREADY_PAIRED, - ); - }); -} - -#[test] -fn pool_should_be_increased_and_decreased_correctly() { - ExtBuilder::default().build().execute_with(|| { - let mut ring_pool = Staking::ring_pool(); - let mut kton_pool = Staking::kton_pool(); - - // bond: 100COIN - gen_paired_account!(stash_1(111), controller_1(222), 0); - gen_paired_account!(stash_2(333), controller_2(444), promise_month(12)); - ring_pool += 100 * COIN; - kton_pool += 100 * COIN; - assert_eq!(Staking::ring_pool(), ring_pool); - assert_eq!(Staking::kton_pool(), kton_pool); - - // unbond: 50Ring 50Kton - assert_ok!(Staking::unbond( - Origin::signed(controller_1), - StakingBalances::RingBalance(50 * COIN) - )); - assert_ok!(Staking::unbond( - Origin::signed(controller_1), - StakingBalances::KtonBalance(25 * COIN) - )); - // not yet expired: promise for 12 months - assert_ok!(Staking::unbond( - Origin::signed(controller_2), - StakingBalances::RingBalance(50 * COIN) - )); - assert_ok!(Staking::unbond( - Origin::signed(controller_2), - StakingBalances::KtonBalance(25 * COIN) - )); - ring_pool -= 50 * COIN; - kton_pool -= 50 * COIN; - assert_eq!(Staking::ring_pool(), ring_pool); - assert_eq!(Staking::kton_pool(), kton_pool); - - // claim: 50Ring - assert_ok!(Staking::try_claim_deposits_with_punish( - Origin::signed(controller_2), - promise_month * MONTH_IN_MILLISECONDS, - )); - // unbond deposit items: 12.5Ring - Timestamp::set_timestamp(promise_month * MONTH_IN_MILLISECONDS); - assert_ok!(Staking::unbond( - Origin::signed(controller_2), - StakingBalances::RingBalance(125 * COIN / 10), - )); - ring_pool -= 125 * COIN / 10; - assert_eq!(Staking::ring_pool(), ring_pool); - - // slash: 37.5Ring 50Kton - >::insert( - &stash_1, - Exposure { - total: 1, - own: 1, - others: vec![], - }, - ); - >::insert( - &stash_2, - Exposure { - total: 1, - own: 1, - others: vec![], - }, - ); - // FIXME: slash strategy - let _ = Staking::slash_validator(&stash_1, Power::max_value(), &Staking::stakers(&stash_1), &mut vec![]); - // FIXME: slash strategy - let _ = Staking::slash_validator(&stash_2, Power::max_value(), &Staking::stakers(&stash_2), &mut vec![]); - ring_pool -= 375 * COIN / 10; - kton_pool -= 50 * COIN; - assert_eq!(Staking::ring_pool(), ring_pool); - assert_eq!(Staking::kton_pool(), kton_pool); - }); -} - -#[test] -fn unbond_over_max_unbondings_chunks_should_fail() { - ExtBuilder::default().build().execute_with(|| { - gen_paired_account!(stash(123), controller(456)); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::RingBalance(COIN), - RewardDestination::Stash, - 0, - )); - - for ts in 0..MAX_UNLOCKING_CHUNKS { - Timestamp::set_timestamp(ts as u64); - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::RingBalance(1) - )); - } - - assert_err!( - Staking::unbond(Origin::signed(controller), StakingBalances::RingBalance(1)), - err::UNLOCK_CHUNKS_REACH_MAX, - ); - }); -} - -#[test] -fn promise_extra_should_not_remove_unexpired_items() { - ExtBuilder::default().build().execute_with(|| { - gen_paired_account!(stash(123), controller(456), promise_month(12)); - let expired_items_len = 3; - let expiry_date = promise_month * MONTH_IN_MILLISECONDS; - - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::RingBalance(5 * COIN), - 0, - )); - for _ in 0..expired_items_len { - assert_ok!(Staking::deposit_extra(Origin::signed(controller), COIN, promise_month)); - } - - Timestamp::set_timestamp(expiry_date - 1); - assert_ok!(Staking::deposit_extra( - Origin::signed(controller), - 2 * COIN, - promise_month, - )); - assert_eq!( - Staking::ledger(controller).unwrap().deposit_items.len(), - 2 + expired_items_len, - ); - - Timestamp::set_timestamp(expiry_date); - assert_ok!(Staking::deposit_extra( - Origin::signed(controller), - 2 * COIN, - promise_month, - )); - assert_eq!(Staking::ledger(controller).unwrap().deposit_items.len(), 2); - }); -} - -#[test] -fn unbond_zero() { - ExtBuilder::default().build().execute_with(|| { - gen_paired_account!(stash(123), controller(456), promise_month(12)); - let ledger = Staking::ledger(controller).unwrap(); - - Timestamp::set_timestamp(promise_month * MONTH_IN_MILLISECONDS); - assert_ok!(Staking::unbond(Origin::signed(10), StakingBalances::RingBalance(0))); - assert_ok!(Staking::unbond(Origin::signed(10), StakingBalances::KtonBalance(0))); - assert_eq!(Staking::ledger(controller).unwrap(), ledger); - }); -} - -// bond 10_000 Ring for 12 months, gain 1 Kton -// bond extra 10_000 Ring for 36 months, gain 3 Kton -// bond extra 1 Kton -// nominate -// unlock the 12 months deposit item with punish -// lost 3 Kton and 10_000 Ring's power for nominate -#[test] -fn yakio_q1() { - ExtBuilder::default().build().execute_with(|| { - let (stash, controller) = (777, 888); - let _ = Ring::deposit_creating(&stash, 20_000); - - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::RingBalance(10_000), - RewardDestination::Stash, - 12, - )); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::RingBalance(10_000), - 36, - )); - assert_eq!(Kton::free_balance(&stash), 4); - - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::KtonBalance(1), - 36 - )); - assert_eq!(Staking::ledger(controller).unwrap().active_kton, 1); - - assert_ok!(Staking::nominate(Origin::signed(controller), vec![controller])); - - assert_ok!(Staking::try_claim_deposits_with_punish( - Origin::signed(controller), - 12 * MONTH_IN_MILLISECONDS, - )); - assert_eq!(Kton::free_balance(&stash), 1); - - let ledger = Staking::ledger(controller).unwrap(); - // not enough Kton to unbond - assert_ok!(Staking::try_claim_deposits_with_punish( - Origin::signed(controller), - 36 * MONTH_IN_MILLISECONDS, - )); - assert_eq!(Staking::ledger(controller).unwrap(), ledger); - }); -} - -// how to balance the power and calculate the reward if some validators have been chilled -#[test] -fn yakio_q2() { - fn run(with_new_era: bool) -> Balance { - let mut balance = 0; - ExtBuilder::default().build().execute_with(|| { - gen_paired_account!(validator_1_stash(123), validator_1_controller(456), 0); - gen_paired_account!(validator_2_stash(234), validator_2_controller(567), 0); - gen_paired_account!(nominator_stash(345), nominator_controller(678), 0); - - assert_ok!(Staking::validate( - Origin::signed(validator_1_controller), - ValidatorPrefs { - node_name: vec![0; 8], - ..Default::default() - }, - )); - assert_ok!(Staking::validate( - Origin::signed(validator_2_controller), - ValidatorPrefs { - node_name: vec![1; 8], - ..Default::default() - }, - )); - assert_ok!(Staking::nominate( - Origin::signed(nominator_controller), - vec![validator_1_stash, validator_2_stash], - )); - - start_era(1); - assert_ok!(Staking::chill(Origin::signed(validator_1_controller))); - // assert_ok!(Staking::chill(Origin::signed(validator_2_controller))); - if with_new_era { - start_era(2); - } - let _ = Staking::reward_validator(&validator_1_stash, 1000 * COIN); - let _ = Staking::reward_validator(&validator_2_stash, 1000 * COIN); - - balance = Ring::free_balance(&nominator_stash); - }); - - balance - } - - let free_balance = run(false); - let free_balance_with_new_era = run(true); - - assert_ne!(free_balance, 0); - assert_ne!(free_balance_with_new_era, 0); - assert!(free_balance > free_balance_with_new_era); -} - -#[test] -fn xavier_q1() { - ExtBuilder::default().build().execute_with(|| { - let stash = 123; - let controller = 456; - let _ = Kton::deposit_creating(&stash, 10); - - Timestamp::set_timestamp(0); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::KtonBalance(5), - RewardDestination::Stash, - 0, - )); - assert_eq!(Timestamp::get(), 0); - assert_eq!(Kton::free_balance(stash), 10); - assert_eq!( - Kton::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 5, - unbondings: vec![], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Init - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Ok Init - Kton Locks: {:#?}", Kton::locks(stash)); - // println!(); - - Timestamp::set_timestamp(1); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::KtonBalance(5), - 0 - )); - assert_eq!(Timestamp::get(), 1); - assert_eq!(Kton::free_balance(stash), 10); - assert_eq!( - Kton::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 10, - unbondings: vec![], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Bond Extra - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Ok Bond Extra - Kton Locks: {:#?}", Kton::locks(stash)); - // println!(); - - let unbond_start = 2; - Timestamp::set_timestamp(unbond_start); - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::KtonBalance(9) - )); - assert_eq!(Timestamp::get(), 2); - assert_eq!(Kton::free_balance(stash), 10); - assert_eq!( - Kton::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 1, - unbondings: vec![NormalLock { - amount: 9, - until: BondingDuration::get() + unbond_start, - }], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Unbond - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Ok Unbond - Kton Locks: {:#?}", Kton::locks(stash)); - // println!(); - - assert_err!( - Kton::transfer(Origin::signed(stash), controller, 1), - "account liquidity restrictions prevent withdrawal", - ); - // println!("Locking Transfer - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Locking Transfer - Kton Locks: {:#?}", Kton::locks(stash)); - // println!(); - - Timestamp::set_timestamp(BondingDuration::get() + unbond_start); - assert_ok!(Kton::transfer(Origin::signed(stash), controller, 1)); - // println!("Unlocking Transfer - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Unlocking Transfer - Kton Locks: {:#?}", Kton::locks(stash)); - // println!( - // "Unlocking Transfer - Kton StakingLedger: {:#?}", - // Staking::ledger(controller) - // ); - // println!(); - assert_eq!(Timestamp::get(), BondingDuration::get() + unbond_start); - assert_eq!(Kton::free_balance(stash), 9); - assert_eq!( - Kton::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 1, - unbondings: vec![NormalLock { - amount: 9, - until: BondingDuration::get() + unbond_start, - }], - }), - reasons: WithdrawReasons::all(), - }] - ); - - let _ = Kton::deposit_creating(&stash, 20); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::KtonBalance(19), - 0 - )); - assert_eq!(Kton::free_balance(stash), 29); - assert_eq!( - Kton::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 20, - unbondings: vec![NormalLock { - amount: 9, - until: BondingDuration::get() + unbond_start, - }], - }), - reasons: WithdrawReasons::all(), - }] - ); - assert_eq!( - Staking::ledger(controller).unwrap(), - StakingLedger { - stash: 123, - active_ring: 0, - active_deposit_ring: 0, - active_kton: 20, - deposit_items: vec![], - ring_staking_lock: Default::default(), - kton_staking_lock: StakingLock { - staking_amount: 20, - unbondings: vec![NormalLock { - amount: 9, - until: BondingDuration::get() + unbond_start, - }], - }, - } - ); - // println!("Unlocking Transfer - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Unlocking Transfer - Kton Locks: {:#?}", Kton::locks(stash)); - // println!( - // "Unlocking Transfer - Kton StakingLedger: {:#?}", - // Staking::ledger(controller) - // ); - // println!(); - }); - - ExtBuilder::default().build().execute_with(|| { - let stash = 123; - let controller = 456; - let _ = Ring::deposit_creating(&stash, 10); - - Timestamp::set_timestamp(0); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::RingBalance(5), - RewardDestination::Stash, - 0, - )); - assert_eq!(Timestamp::get(), 0); - assert_eq!(Ring::free_balance(stash), 10); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 5, - unbondings: vec![], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Init - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Ok Init - Ring Locks: {:#?}", Ring::locks(stash)); - // println!(); - - Timestamp::set_timestamp(1); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::RingBalance(5), - 0 - )); - assert_eq!(Timestamp::get(), 1); - assert_eq!(Ring::free_balance(stash), 10); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 10, - unbondings: vec![], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Bond Extra - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Ok Bond Extra - Ring Locks: {:#?}", Ring::locks(stash)); - // println!(); - - let unbond_start = 2; - Timestamp::set_timestamp(unbond_start); - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::RingBalance(9) - )); - assert_eq!(Timestamp::get(), 2); - assert_eq!(Ring::free_balance(stash), 10); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 1, - unbondings: vec![NormalLock { - amount: 9, - until: BondingDuration::get() + unbond_start, - }], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Unbond - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Ok Unbond - Ring Locks: {:#?}", Ring::locks(stash)); - // println!(); - - assert_err!( - Ring::transfer(Origin::signed(stash), controller, 1), - "account liquidity restrictions prevent withdrawal", - ); - // println!("Locking Transfer - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Locking Transfer - Ring Locks: {:#?}", Ring::locks(stash)); - // println!(); - - Timestamp::set_timestamp(BondingDuration::get() + unbond_start); - assert_ok!(Ring::transfer(Origin::signed(stash), controller, 1)); - // println!("Unlocking Transfer - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Unlocking Transfer - Ring Locks: {:#?}", Ring::locks(stash)); - // println!( - // "Unlocking Transfer - Ring StakingLedger: {:#?}", - // Staking::ledger(controller) - // ); - // println!(); - assert_eq!(Timestamp::get(), BondingDuration::get() + unbond_start); - assert_eq!(Ring::free_balance(stash), 9); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 1, - unbondings: vec![NormalLock { - amount: 9, - until: BondingDuration::get() + unbond_start, - }], - }), - reasons: WithdrawReasons::all(), - }] - ); - - let _ = Ring::deposit_creating(&stash, 20); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::RingBalance(19), - 0 - )); - assert_eq!(Ring::free_balance(stash), 29); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 20, - unbondings: vec![NormalLock { - amount: 9, - until: BondingDuration::get() + unbond_start, - }], - }), - reasons: WithdrawReasons::all(), - }] - ); - assert_eq!( - Staking::ledger(controller).unwrap(), - StakingLedger { - stash: 123, - active_ring: 20, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: StakingLock { - staking_amount: 20, - unbondings: vec![NormalLock { - amount: 9, - until: BondingDuration::get() + unbond_start, - }], - }, - kton_staking_lock: Default::default(), - } - ); - // println!("Unlocking Transfer - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Unlocking Transfer - Ring Locks: {:#?}", Ring::locks(stash)); - // println!( - // "Unlocking Transfer - Ring StakingLedger: {:#?}", - // Staking::ledger(controller) - // ); - // println!(); - }); -} - -#[test] -fn xavier_q2() { - ExtBuilder::default().build().execute_with(|| { - let stash = 123; - let controller = 456; - let _ = Kton::deposit_creating(&stash, 10); - - Timestamp::set_timestamp(1); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::KtonBalance(5), - RewardDestination::Stash, - 0, - )); - assert_eq!(Kton::free_balance(stash), 10); - assert_eq!( - Kton::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 5, - unbondings: vec![], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Init - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Ok Init - Kton Locks: {:#?}", Kton::locks(stash)); - // println!(); - - Timestamp::set_timestamp(1); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::KtonBalance(4), - 0 - )); - assert_eq!(Timestamp::get(), 1); - assert_eq!(Kton::free_balance(stash), 10); - assert_eq!( - Kton::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 9, - unbondings: vec![], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Bond Extra - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Ok Bond Extra - Kton Locks: {:#?}", Kton::locks(stash)); - // println!(); - - let (unbond_start_1, unbond_value_1) = (2, 2); - Timestamp::set_timestamp(unbond_start_1); - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::KtonBalance(unbond_value_1), - )); - assert_eq!(Timestamp::get(), unbond_start_1); - assert_eq!(Kton::free_balance(stash), 10); - assert_eq!( - Kton::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 7, - unbondings: vec![NormalLock { - amount: 2, - until: BondingDuration::get() + unbond_start_1, - }], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Unbond - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Ok Unbond - Kton Locks: {:#?}", Kton::locks(stash)); - // println!(); - - let (unbond_start_2, unbond_value_2) = (3, 6); - Timestamp::set_timestamp(unbond_start_2); - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::KtonBalance(6) - )); - assert_eq!(Timestamp::get(), unbond_start_2); - assert_eq!(Kton::free_balance(stash), 10); - assert_eq!( - Kton::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 1, - unbondings: vec![ - NormalLock { - amount: 2, - until: BondingDuration::get() + unbond_start_1, - }, - NormalLock { - amount: 6, - until: BondingDuration::get() + unbond_start_2, - } - ], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Unbond - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Ok Unbond - Kton Locks: {:#?}", Kton::locks(stash)); - // println!(); - - assert_err!( - Kton::transfer(Origin::signed(stash), controller, unbond_value_1), - "account liquidity restrictions prevent withdrawal", - ); - // println!("Locking Transfer - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Locking Transfer - Kton Locks: {:#?}", Kton::locks(stash)); - // println!(); - - assert_ok!(Kton::transfer(Origin::signed(stash), controller, unbond_value_1 - 1)); - assert_eq!(Kton::free_balance(stash), 9); - // println!("Normal Transfer - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Normal Transfer - Kton Locks: {:#?}", Kton::locks(stash)); - - Timestamp::set_timestamp(BondingDuration::get() + unbond_start_1); - assert_err!( - Kton::transfer(Origin::signed(stash), controller, unbond_value_1 + 1), - "account liquidity restrictions prevent withdrawal", - ); - // println!("Locking Transfer - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Locking Transfer - Kton Locks: {:#?}", Kton::locks(stash)); - // println!(); - assert_ok!(Kton::transfer(Origin::signed(stash), controller, unbond_value_1)); - assert_eq!(Timestamp::get(), BondingDuration::get() + unbond_start_1); - assert_eq!(Kton::free_balance(stash), 7); - assert_eq!( - Kton::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 1, - unbondings: vec![ - NormalLock { - amount: 2, - until: BondingDuration::get() + unbond_start_1, - }, - NormalLock { - amount: 6, - until: BondingDuration::get() + unbond_start_2, - } - ], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Unlocking Transfer - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Unlocking Transfer - Kton Locks: {:#?}", Kton::locks(stash)); - - Timestamp::set_timestamp(BondingDuration::get() + unbond_start_2); - assert_ok!(Kton::transfer(Origin::signed(stash), controller, unbond_value_2)); - assert_eq!(Timestamp::get(), BondingDuration::get() + unbond_start_2); - assert_eq!(Kton::free_balance(stash), 1); - assert_eq!( - Kton::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 1, - unbondings: vec![ - NormalLock { - amount: 2, - until: BondingDuration::get() + unbond_start_1, - }, - NormalLock { - amount: 6, - until: BondingDuration::get() + unbond_start_2, - } - ], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Unlocking Transfer - Kton Balance: {:?}", Kton::free_balance(stash)); - // println!("Unlocking Transfer - Kton Locks: {:#?}", Kton::locks(stash)); - - let _ = Kton::deposit_creating(&stash, 1); - // println!("Staking Ledger: {:#?}", Staking::ledger(controller).unwrap()); - assert_eq!(Kton::free_balance(stash), 2); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::KtonBalance(1), - 0 - )); - assert_eq!( - Kton::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 2, - unbondings: vec![ - NormalLock { - amount: 2, - until: BondingDuration::get() + unbond_start_1, - }, - NormalLock { - amount: 6, - until: BondingDuration::get() + unbond_start_2, - } - ], - }), - reasons: WithdrawReasons::all(), - }] - ); - }); - - ExtBuilder::default().build().execute_with(|| { - let stash = 123; - let controller = 456; - let _ = Ring::deposit_creating(&stash, 10); - - Timestamp::set_timestamp(1); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::RingBalance(5), - RewardDestination::Stash, - 0, - )); - assert_eq!(Ring::free_balance(stash), 10); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 5, - unbondings: vec![], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Init - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Ok Init - Ring Locks: {:#?}", Ring::locks(stash)); - // println!(); - - Timestamp::set_timestamp(1); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::RingBalance(4), - 0 - )); - assert_eq!(Timestamp::get(), 1); - assert_eq!(Ring::free_balance(stash), 10); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 9, - unbondings: vec![], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Bond Extra - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Ok Bond Extra - Ring Locks: {:#?}", Ring::locks(stash)); - // println!(); - - let (unbond_start_1, unbond_value_1) = (2, 2); - Timestamp::set_timestamp(unbond_start_1); - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::RingBalance(unbond_value_1) - )); - assert_eq!(Timestamp::get(), unbond_start_1); - assert_eq!(Ring::free_balance(stash), 10); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 7, - unbondings: vec![NormalLock { - amount: 2, - until: BondingDuration::get() + unbond_start_1, - }], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Unbond - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Ok Unbond - Ring Locks: {:#?}", Ring::locks(stash)); - // println!(); - - let (unbond_start_2, unbond_value_2) = (3, 6); - Timestamp::set_timestamp(unbond_start_2); - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::RingBalance(6) - )); - assert_eq!(Timestamp::get(), unbond_start_2); - assert_eq!(Ring::free_balance(stash), 10); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 1, - unbondings: vec![ - NormalLock { - amount: 2, - until: BondingDuration::get() + unbond_start_1, - }, - NormalLock { - amount: 6, - until: BondingDuration::get() + unbond_start_2, - } - ], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Ok Unbond - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Ok Unbond - Ring Locks: {:#?}", Ring::locks(stash)); - // println!(); - - assert_err!( - Ring::transfer(Origin::signed(stash), controller, unbond_value_1), - "account liquidity restrictions prevent withdrawal", - ); - // println!("Locking Transfer - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Locking Transfer - Ring Locks: {:#?}", Ring::locks(stash)); - // println!(); - - assert_ok!(Ring::transfer(Origin::signed(stash), controller, unbond_value_1 - 1)); - assert_eq!(Ring::free_balance(stash), 9); - // println!("Normal Transfer - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Normal Transfer - Ring Locks: {:#?}", Ring::locks(stash)); - - Timestamp::set_timestamp(BondingDuration::get() + unbond_start_1); - assert_err!( - Ring::transfer(Origin::signed(stash), controller, unbond_value_1 + 1), - "account liquidity restrictions prevent withdrawal", - ); - // println!("Locking Transfer - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Locking Transfer - Ring Locks: {:#?}", Ring::locks(stash)); - // println!(); - assert_ok!(Ring::transfer(Origin::signed(stash), controller, unbond_value_1)); - assert_eq!(Timestamp::get(), BondingDuration::get() + unbond_start_1); - assert_eq!(Ring::free_balance(stash), 7); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 1, - unbondings: vec![ - NormalLock { - amount: 2, - until: BondingDuration::get() + unbond_start_1, - }, - NormalLock { - amount: 6, - until: BondingDuration::get() + unbond_start_2, - } - ], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Unlocking Transfer - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Unlocking Transfer - Ring Locks: {:#?}", Ring::locks(stash)); - - Timestamp::set_timestamp(BondingDuration::get() + unbond_start_2); - assert_ok!(Ring::transfer(Origin::signed(stash), controller, unbond_value_2)); - assert_eq!(Timestamp::get(), BondingDuration::get() + unbond_start_2); - assert_eq!(Ring::free_balance(stash), 1); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 1, - unbondings: vec![ - NormalLock { - amount: 2, - until: BondingDuration::get() + unbond_start_1, - }, - NormalLock { - amount: 6, - until: BondingDuration::get() + unbond_start_2, - } - ], - }), - reasons: WithdrawReasons::all(), - }] - ); - // println!("Unlocking Transfer - Ring Balance: {:?}", Ring::free_balance(stash)); - // println!("Unlocking Transfer - Ring Locks: {:#?}", Ring::locks(stash)); - - let _ = Ring::deposit_creating(&stash, 1); - // println!("Staking Ledger: {:#?}", Staking::ledger(controller).unwrap()); - assert_eq!(Ring::free_balance(stash), 2); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::RingBalance(1), - 0 - )); - assert_eq!( - Ring::locks(stash), - vec![BalanceLock { - id: STAKING_ID, - withdraw_lock: WithdrawLock::WithStaking(StakingLock { - staking_amount: 2, - unbondings: vec![ - NormalLock { - amount: 2, - until: BondingDuration::get() + unbond_start_1, - }, - NormalLock { - amount: 6, - until: BondingDuration::get() + unbond_start_2, - } - ], - }), - reasons: WithdrawReasons::all(), - }] - ); - }); -} - -#[test] -fn xavier_q3() { - ExtBuilder::default().build().execute_with(|| { - let stash = 123; - let controller = 456; - let _ = Kton::deposit_creating(&stash, 10); - - Timestamp::set_timestamp(1); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::KtonBalance(5), - RewardDestination::Stash, - 0, - )); - assert_eq!(Timestamp::get(), 1); - assert_eq!( - Staking::ledger(controller).unwrap(), - StakingLedger { - stash: 123, - active_ring: 0, - active_deposit_ring: 0, - active_kton: 5, - deposit_items: vec![], - ring_staking_lock: Default::default(), - kton_staking_lock: StakingLock { - staking_amount: 5, - unbondings: vec![], - }, - } - ); - // println!("Locks: {:#?}", Kton::locks(stash)); - // println!("StakingLedger: {:#?}", Staking::ledger(controller)); - // println!(); - - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::KtonBalance(5) - )); - assert_eq!( - Staking::ledger(controller).unwrap(), - StakingLedger { - stash: 123, - active_ring: 0, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: Default::default(), - kton_staking_lock: StakingLock { - staking_amount: 0, - unbondings: vec![NormalLock { amount: 5, until: 61 }], - }, - } - ); - // println!("Locks: {:#?}", Kton::locks(stash)); - // println!("StakingLedger: {:#?}", Staking::ledger(controller)); - // println!(); - - Timestamp::set_timestamp(61); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::KtonBalance(1), - 0 - )); - assert_eq!(Timestamp::get(), 61); - assert_eq!( - Staking::ledger(controller).unwrap(), - StakingLedger { - stash: 123, - active_ring: 0, - active_deposit_ring: 0, - active_kton: 1, - deposit_items: vec![], - ring_staking_lock: Default::default(), - kton_staking_lock: StakingLock { - staking_amount: 1, - unbondings: vec![NormalLock { amount: 5, until: 61 }], - }, - } - ); - // println!("Locks: {:#?}", Kton::locks(stash)); - // println!("StakingLedger: {:#?}", Staking::ledger(controller)); - // println!(); - }); - - ExtBuilder::default().build().execute_with(|| { - let stash = 123; - let controller = 456; - let _ = Ring::deposit_creating(&stash, 10); - - Timestamp::set_timestamp(1); - assert_ok!(Staking::bond( - Origin::signed(stash), - controller, - StakingBalances::RingBalance(5), - RewardDestination::Stash, - 0, - )); - assert_eq!(Timestamp::get(), 1); - assert_eq!( - Staking::ledger(controller).unwrap(), - StakingLedger { - stash: 123, - active_ring: 5, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: StakingLock { - staking_amount: 5, - unbondings: vec![], - }, - kton_staking_lock: Default::default(), - } - ); - // println!("Locks: {:#?}", Ring::locks(stash)); - // println!("StakingLedger: {:#?}", Staking::ledger(controller)); - // println!(); - - assert_ok!(Staking::unbond( - Origin::signed(controller), - StakingBalances::RingBalance(5), - )); - assert_eq!( - Staking::ledger(controller).unwrap(), - StakingLedger { - stash: 123, - active_ring: 0, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: StakingLock { - staking_amount: 0, - unbondings: vec![NormalLock { amount: 5, until: 61 }], - }, - kton_staking_lock: Default::default(), - } - ); - // println!("Locks: {:#?}", Ring::locks(stash)); - // println!("StakingLedger: {:#?}", Staking::ledger(controller)); - // println!(); - - Timestamp::set_timestamp(61); - assert_ok!(Staking::bond_extra( - Origin::signed(stash), - StakingBalances::RingBalance(1), - 0 - )); - assert_eq!(Timestamp::get(), 61); - assert_eq!( - Staking::ledger(controller).unwrap(), - StakingLedger { - stash: 123, - active_ring: 1, - active_deposit_ring: 0, - active_kton: 0, - deposit_items: vec![], - ring_staking_lock: StakingLock { - staking_amount: 1, - unbondings: vec![NormalLock { amount: 5, until: 61 }], - }, - kton_staking_lock: Default::default(), - } - ); - // println!("Locks: {:#?}", Ring::locks(stash)); - // println!("StakingLedger: {:#?}", Staking::ledger(controller)); - // println!(); - }); -} - -#[test] -fn test_payout() { - ExtBuilder::default().build().execute_with(|| { - // Set payee to controller - assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); - - assert_eq!(Ring::total_issuance(), - Ring::total_balance(&1) + Ring::total_balance(&2) + Ring::total_balance(&3) + Ring::total_balance(&4) - + Ring::total_balance(&10) + Ring::total_balance(&11) - + Ring::total_balance(&20) + Ring::total_balance(&21) - + Ring::total_balance(&30) + Ring::total_balance(&31) - + Ring::total_balance(&40) + Ring::total_balance(&41) - + Ring::total_balance(&100) + Ring::total_balance(&101) - + Ring::total_balance(&999) - ); - let left = 2000_000_000 * COIN - (Ring::total_balance(&1) + Ring::total_balance(&2) + Ring::total_balance(&3) + Ring::total_balance(&4) - + Ring::total_balance(&10) + Ring::total_balance(&11) - + Ring::total_balance(&20) + Ring::total_balance(&21) - + Ring::total_balance(&30) + Ring::total_balance(&31) - + Ring::total_balance(&40) + Ring::total_balance(&41) - + Ring::total_balance(&100) + Ring::total_balance(&101) - + Ring::total_balance(&999)); - let _ = Ring::deposit_creating(&9999, left); - assert_eq!(Ring::total_issuance(), 2000_000_000 * COIN); - - assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); - - let total_pay_out_now = current_total_payout_for_duration(180 * 1000); - assert_eq!(total_pay_out_now, 456308464522 / 2); - - // // for one year, Note: this test will take over 60s - // for i in 0..175319 { - // start_session(i); - // >::reward_by_ids(vec![(11, 101)]); - // } - // assert_eq!(current_total_payout_for_duration(1000 * 3600 * 24 * 36525 / 100), 79601332265494830 / 2); - }); -} -// breakpoint test -//#[test] -//fn xavier_q4() { -// ExtBuilder::default().build().execute_with(|| { -// let (stash, _controller) = (11, 10); -// let _ = Kton::deposit_creating(&stash, 1000); -// assert_ok!(Staking::bond_extra( -// Origin::signed(stash), -// StakingBalances::KtonBalance(1000), -// 0, -// )); -// -// let power = Staking::power_of(&11); -// >::insert( -// &stash, -// Exposure { -// total: power, -// own: power, -// others: vec![], -// }, -// ); -// let _ = Staking::slash_validator(&stash, power / 2, &Staking::stakers(&stash), &mut vec![]); -// }); -//} diff --git a/srml/support/Cargo.toml b/srml/support/Cargo.toml deleted file mode 100644 index ef7869097..000000000 --- a/srml/support/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "darwinia-support" -version = "0.2.0" -authors = ["darwinia "] -edition = "2018" - -[dependencies] -# crates.io -codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } - -# github.com -rstd = { package = "sr-std", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -srml-support = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } -sr-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop", default-features = false } - -[features] -default = ["std"] -std = [ - "codec/std", - - "rstd/std", - "srml-support/std", - "sr-primitives/std", -] \ No newline at end of file diff --git a/types/icefrog.json b/types/icefrog.json deleted file mode 100644 index 22a2600a0..000000000 --- a/types/icefrog.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "EpochDuration": "u64", - "BalanceLock": { - "id": "LockIdentifier", - "withdraw_lock": "WithdrawLock", - "reasons": "WithdrawReasons" - }, - "NormalLock": { - "amount": "Balance", - "until": "Moment" - }, - "StakingLock": { - "staking_amount": "Balance", - "unbondings": "Vec" - }, - "WithdrawLock": { - "_enum": { - "Normal": "NormalLock", - "WithStaking": "StakingLock" - } - }, - "EthReceiptProof": { - "index": "u64", - "proof": "Bytes", - "header_hash": "H256" - }, - "BestBlock": { - "height": "EthBlockNumber", - "hash": "H256", - "total_difficulty": "U256" - }, - "BlockDetails": { - "height": "EthBlockNumber", - "hash": "H256", - "total_difficulty": "U256" - }, - "Bloom": { - "_struct": "[u8; 256]" - }, - "EthAddress": "H160", - "EthBlockNumber": "u64", - "EthHeader": { - "parent_hash": "H256", - "timestamp": "u64", - "number": "EthBlockNumber", - "auth": "EthAddress", - "transaction_root": "H256", - "uncles_hash": "H256", - "extra_data": "Bytes", - "state_root": "H256", - "receipts_root": "H256", - "log_bloom": "Bloom", - "gas_used": "U256", - "gas_limit": "U256", - "difficulty": "U256", - "seal": "Vec", - "hash": "Option" - }, - "EthTransactionIndex": "(H256, u64)", - "H64": { - "_struct": "[u8; 8]" - }, - "LogEntry": { - "address": "EthAddress", - "topics": "Vec", - "data": "Bytes" - }, - "Receipt": { - "gas_used": "U256", - "log_bloom": "Bloom", - "logs": "Vec", - "outcome": "TransactionOutcome" - }, - "TransactionOutcome": { - "_enum": { - "Unknown": null, - "StateRoot": "H256", - "StatusCode": "u8" - } - }, - "EraIndex": "u32", - "Exposure": { - "total": "Compact", - "own": "Compact", - "others": "Vec" - }, - "IndividualExposure": { - "who": "AccountId", - "value": "Compact" - }, - "KtonBalance": "Balance", - "NominatorReward": { - "who": "AccountId", - "amount": "Compact" - }, - "Power": "u128", - "RingBalance": "Balance", - "SlashJournalEntry": { - "who": "AccountId", - "amount": "Compact", - "own_slash": "Compact" - }, - "StakingBalances": { - "_enum": { - "RingBalance": "Balance", - "KtonBalance": "Balance" - } - }, - "StakingLedger": { - "stash": "AccountId", - "active_ring": "Compact", - "active_deposit_ring": "Compact", - "active_kton": "Compact", - "deposit_items": "Vec", - "ring_staking_lock": "StakingLock", - "kton_staking_lock": "StakingLock" - }, - "TimeDepositItem": { - "value": "Compact", - "start_time": "Compact", - "expire_time": "Compact" - }, - "ValidatorPrefs": { - "node_name": "Bytes", - "validator_payment_ratio": "Compact" - }, - "ValidatorReward": { - "who": "AccountId", - "amount": "Compact", - "nominators_reward": "Vec" - } -} \ No newline at end of file From 0e4fee090793582421ec22c7311db582cbf35c2d Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Thu, 2 Jan 2020 21:32:06 +0800 Subject: [PATCH 02/17] =?UTF-8?q?try:=20kton=20-=20compile=20=E2=9C=94?= =?UTF-8?q?=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 307 ++++++++++++++++-- Cargo.toml | 1 + frame/balances/Cargo.toml | 27 +- frame/balances/src/lib.rs | 20 +- frame/kton/Cargo.toml | 45 +++ frame/kton/src/lib.rs | 634 ++++++++++++++++++++++++++++++++++++++ frame/kton/src/mock.rs | 149 +++++++++ frame/kton/src/tests.rs | 262 ++++++++++++++++ frame/staking/Cargo.toml | 9 +- 9 files changed, 1406 insertions(+), 48 deletions(-) create mode 100644 frame/kton/Cargo.toml create mode 100644 frame/kton/src/lib.rs create mode 100644 frame/kton/src/mock.rs create mode 100644 frame/kton/src/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 9bb92b0b0..7b9dc2480 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -837,7 +837,7 @@ dependencies = [ [[package]] name = "darwinia-balances" -version = "0.3.0" +version = "0.4.0" dependencies = [ "darwinia-support", "frame-support", @@ -853,15 +853,33 @@ dependencies = [ "sp-std", ] +[[package]] +name = "darwinia-kton" +version = "0.3.0" +dependencies = [ + "darwinia-balances", + "darwinia-support", + "frame-support", + "frame-system", + "pallet-timestamp", + "parity-scale-codec", + "safe-mix", + "serde", + "sp-runtime", + "sp-std", + "sr-io", + "substrate-primitives", +] + [[package]] name = "darwinia-staking" -version = "2.0.0" +version = "0.3.0" dependencies = [ + "darwinia-balances", "darwinia-support", "frame-support", "frame-system", "pallet-authorship", - "pallet-balances", "pallet-session", "pallet-staking-reward-curve", "pallet-timestamp", @@ -952,6 +970,18 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "923dea538cea0aa3025e8685b20d6ee21ef99c4f77e954a30febbaac5ec73a97" +[[package]] +name = "ed25519-dalek" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d07e8b8a8386c3b89a7a4b329fdfa4cb545de2545e9e2ebbc3dd3929253e426" +dependencies = [ + "clear_on_drop", + "curve25519-dalek 1.2.3", + "failure", + "rand 0.6.5", +] + [[package]] name = "ed25519-dalek" version = "1.0.0-pre.3" @@ -2250,7 +2280,7 @@ dependencies = [ "asn1_der", "bs58 0.3.0", "bytes 0.4.12", - "ed25519-dalek", + "ed25519-dalek 1.0.0-pre.3", "failure", "fnv", "futures 0.1.29", @@ -3361,7 +3391,7 @@ dependencies = [ "frame-support", "frame-system", "parity-scale-codec", - "parity-wasm", + "parity-wasm 0.41.0", "pwasm-utils", "serde", "sp-core", @@ -3369,7 +3399,7 @@ dependencies = [ "sp-runtime", "sp-sandbox", "sp-std", - "wasmi-validation", + "wasmi-validation 0.3.0", ] [[package]] @@ -3820,6 +3850,12 @@ dependencies = [ "winapi 0.3.8", ] +[[package]] +name = "parity-wasm" +version = "0.40.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e39faaa292a687ea15120b1ac31899b13586446521df6c149e46f1584671e0f" + [[package]] name = "parity-wasm" version = "0.41.0" @@ -4165,7 +4201,7 @@ checksum = "4f7a12f176deee919f4ba55326ee17491c8b707d0987aed822682c821b660192" dependencies = [ "byteorder 1.3.2", "log", - "parity-wasm", + "parity-wasm 0.41.0", ] [[package]] @@ -4873,7 +4909,7 @@ dependencies = [ "libsecp256k1", "log", "parity-scale-codec", - "parity-wasm", + "parity-wasm 0.41.0", "parking_lot 0.9.0", "sc-executor-common", "sc-executor-wasmi", @@ -4887,7 +4923,7 @@ dependencies = [ "sp-trie", "sp-version", "sp-wasm-interface", - "wasmi", + "wasmi 0.6.2", ] [[package]] @@ -4902,7 +4938,7 @@ dependencies = [ "sp-runtime-interface", "sp-serializer", "sp-wasm-interface", - "wasmi", + "wasmi 0.6.2", ] [[package]] @@ -4912,13 +4948,13 @@ source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc dependencies = [ "log", "parity-scale-codec", - "parity-wasm", + "parity-wasm 0.41.0", "sc-executor-common", "sp-core", "sp-externalities", "sp-runtime-interface", "sp-wasm-interface", - "wasmi", + "wasmi 0.6.2", ] [[package]] @@ -4933,13 +4969,13 @@ dependencies = [ "cranelift-wasm", "log", "parity-scale-codec", - "parity-wasm", + "parity-wasm 0.41.0", "sc-executor-common", "sp-core", "sp-externalities", "sp-runtime-interface", "sp-wasm-interface", - "wasmi", + "wasmi 0.6.2", "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", @@ -5725,7 +5761,7 @@ dependencies = [ "base58", "blake2-rfc", "byteorder 1.3.2", - "ed25519-dalek", + "ed25519-dalek 1.0.0-pre.3", "hash-db", "hash256-std-hasher", "hex", @@ -5750,9 +5786,9 @@ dependencies = [ "sp-storage", "substrate-bip39", "tiny-bip39", - "tiny-keccak", + "tiny-keccak 2.0.1", "twox-hash", - "wasmi", + "wasmi 0.6.2", "zeroize 1.1.0", ] @@ -5931,7 +5967,7 @@ dependencies = [ "sp-core", "sp-io", "sp-std", - "wasmi", + "wasmi 0.6.2", ] [[package]] @@ -5978,7 +6014,7 @@ dependencies = [ "sp-externalities", "sp-panic-handler", "sp-trie", - "trie-db", + "trie-db 0.16.0", "trie-root", ] @@ -6035,7 +6071,7 @@ dependencies = [ "parity-scale-codec", "sp-core", "sp-std", - "trie-db", + "trie-db 0.16.0", "trie-root", ] @@ -6057,7 +6093,7 @@ version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ "impl-trait-for-tuples", - "wasmi", + "wasmi 0.6.2", ] [[package]] @@ -6066,6 +6102,29 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +[[package]] +name = "sr-io" +version = "2.0.0" +source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +dependencies = [ + "hash-db", + "libsecp256k1", + "log", + "parity-scale-codec", + "sr-std", + "substrate-externalities", + "substrate-primitives", + "substrate-runtime-interface", + "substrate-state-machine", + "substrate-trie", + "tiny-keccak 1.5.0", +] + +[[package]] +name = "sr-std" +version = "2.0.0" +source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" + [[package]] name = "stable_deref_trait" version = "1.1.1" @@ -6172,6 +6231,27 @@ name = "substrate-build-script-utils" version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +[[package]] +name = "substrate-debug-derive" +version = "2.0.0" +source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +dependencies = [ + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", +] + +[[package]] +name = "substrate-externalities" +version = "2.0.0" +source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +dependencies = [ + "environmental", + "primitive-types", + "sr-std", + "substrate-primitives-storage", +] + [[package]] name = "substrate-frame-rpc-system" version = "2.0.0" @@ -6192,16 +6272,144 @@ dependencies = [ "sp-transaction-pool", ] +[[package]] +name = "substrate-panic-handler" +version = "2.0.0" +source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +dependencies = [ + "backtrace", + "log", +] + +[[package]] +name = "substrate-primitives" +version = "2.0.0" +source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +dependencies = [ + "base58", + "blake2-rfc", + "byteorder 1.3.2", + "ed25519-dalek 0.9.1", + "hash-db", + "hash256-std-hasher", + "hex", + "impl-serde", + "lazy_static", + "libsecp256k1", + "log", + "num-traits", + "parity-scale-codec", + "parking_lot 0.9.0", + "primitive-types", + "rand 0.7.2", + "regex", + "rustc-hex", + "schnorrkel", + "serde", + "sha2", + "sr-std", + "substrate-bip39", + "substrate-debug-derive", + "substrate-externalities", + "substrate-primitives-storage", + "substrate-runtime-interface", + "tiny-bip39", + "tiny-keccak 1.5.0", + "twox-hash", + "wasmi 0.5.1", + "zeroize 0.10.1", +] + +[[package]] +name = "substrate-primitives-storage" +version = "2.0.0" +source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +dependencies = [ + "impl-serde", + "serde", + "sr-std", + "substrate-debug-derive", +] + +[[package]] +name = "substrate-runtime-interface" +version = "2.0.0" +source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +dependencies = [ + "environmental", + "parity-scale-codec", + "primitive-types", + "sr-std", + "static_assertions", + "substrate-externalities", + "substrate-runtime-interface-proc-macro", + "substrate-wasm-interface", +] + +[[package]] +name = "substrate-runtime-interface-proc-macro" +version = "2.0.0" +source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +dependencies = [ + "Inflector", + "proc-macro-crate", + "proc-macro2 1.0.6", + "quote 1.0.2", + "syn 1.0.11", +] + +[[package]] +name = "substrate-state-machine" +version = "2.0.0" +source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +dependencies = [ + "hash-db", + "log", + "num-traits", + "parity-scale-codec", + "parking_lot 0.9.0", + "rand 0.7.2", + "substrate-externalities", + "substrate-panic-handler", + "substrate-primitives", + "substrate-trie", + "trie-db 0.15.2", + "trie-root", +] + [[package]] name = "substrate-test-utils" version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +[[package]] +name = "substrate-trie" +version = "2.0.0" +source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +dependencies = [ + "hash-db", + "memory-db", + "parity-scale-codec", + "sr-std", + "substrate-primitives", + "trie-db 0.15.2", + "trie-root", +] + [[package]] name = "substrate-wasm-builder-runner" version = "1.0.4" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" +[[package]] +name = "substrate-wasm-interface" +version = "2.0.0" +source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" +dependencies = [ + "impl-trait-for-tuples", + "wasmi 0.5.1", +] + [[package]] name = "subtle" version = "1.0.0" @@ -6386,6 +6594,15 @@ dependencies = [ "sha2", ] +[[package]] +name = "tiny-keccak" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" +dependencies = [ + "crunchy", +] + [[package]] name = "tiny-keccak" version = "2.0.1" @@ -6707,6 +6924,19 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "trie-db" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0b62d27e8aa1c07414549ac872480ac82380bab39e730242ab08d82d7cc098a" +dependencies = [ + "elastic-array", + "hash-db", + "hashbrown 0.6.3", + "log", + "rand 0.6.5", +] + [[package]] name = "trie-db" version = "0.16.0" @@ -7027,6 +7257,20 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasmi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31d26deb2d9a37e6cfed420edce3ed604eab49735ba89035e13c98f9a528313" +dependencies = [ + "libc", + "memory_units", + "num-rational", + "num-traits", + "parity-wasm 0.40.3", + "wasmi-validation 0.2.0", +] + [[package]] name = "wasmi" version = "0.6.2" @@ -7038,8 +7282,17 @@ dependencies = [ "memory_units", "num-rational", "num-traits", - "parity-wasm", - "wasmi-validation", + "parity-wasm 0.41.0", + "wasmi-validation 0.3.0", +] + +[[package]] +name = "wasmi-validation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bc0356e3df56e639fc7f7d8a99741915531e27ed735d911ed83d7e1339c8188" +dependencies = [ + "parity-wasm 0.40.3", ] [[package]] @@ -7048,7 +7301,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea78c597064ba73596099281e2f4cfc019075122a65cdda3205af94f0b264d93" dependencies = [ - "parity-wasm", + "parity-wasm 0.41.0", ] [[package]] @@ -7330,6 +7583,12 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45af6a010d13e4cf5b54c94ba5a2b2eba5596b9e46bf5875612d332a1f2b3f86" +[[package]] +name = "zeroize" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4090487fa66630f7b166fba2bbb525e247a5449f41c468cc1d98f8ae6ac03120" + [[package]] name = "zeroize" version = "1.1.0" diff --git a/Cargo.toml b/Cargo.toml index c8668d9f1..8d1061a84 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,7 @@ members = [ "bin/node/cli", "bin/node/runtime", "frame/balances", + "frame/kton", "frame/staking", "frame/support", ] diff --git a/frame/balances/Cargo.toml b/frame/balances/Cargo.toml index e8bfea87d..e143c1870 100644 --- a/frame/balances/Cargo.toml +++ b/frame/balances/Cargo.toml @@ -1,19 +1,23 @@ [package] name = "darwinia-balances" -version = "0.3.0" +version = "0.4.0" authors = ["Darwinia Network "] edition = "2018" [dependencies] -serde = { version = "1.0.101", optional = true } -safe-mix = { version = "1.0.0", default-features = false } +# crates.io codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } -sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -sp-runtime = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +safe-mix = { version = "1.0.0", default-features = false } +serde = { version = "1.0.101", optional = true } + +# github.com frame-support = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } frame-system = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -timestamp = { package = "pallet-timestamp", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-timestamp = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-runtime = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +# darwinia darwinia-support = { path = "../support", default-features = false } [dev-dependencies] @@ -24,14 +28,15 @@ pallet-transaction-payment = { version = "2.0.0", git = "https://github.com/pari [features] default = ["std"] std = [ - "serde", - "safe-mix/std", "codec/std", - "sp-std/std", + "safe-mix/std", + "serde", + "frame-support/std", + "frame-system/std", + "pallet-timestamp/std", "sp-runtime/std", - "frame-system/std", - "timestamp/std", + "sp-std/std", "darwinia-support/std", ] diff --git a/frame/balances/src/lib.rs b/frame/balances/src/lib.rs index 0ff583eb3..e212a4abd 100644 --- a/frame/balances/src/lib.rs +++ b/frame/balances/src/lib.rs @@ -172,8 +172,8 @@ use frame_support::{ use frame_system::{self as system, ensure_root, ensure_signed, IsDeadAccount, OnNewAccount}; use sp_runtime::{ traits::{ - Bounded, CheckedAdd, CheckedSub, MaybeSerializeDeserialize, Member, Saturating, SimpleArithmetic, StaticLookup, - Zero, + Bounded, CheckedAdd, CheckedSub, MaybeSerializeDeserialize, Member, One, Saturating, SimpleArithmetic, + StaticLookup, Zero, }, DispatchError, DispatchResult, RuntimeDebug, }; @@ -188,7 +188,7 @@ mod tests; pub use self::imbalances::{NegativeImbalance, PositiveImbalance}; use darwinia_support::{BalanceLock, LockIdentifier, LockableCurrency, WithdrawLock, WithdrawReason, WithdrawReasons}; -pub trait Subtrait: frame_system::Trait + timestamp::Trait { +pub trait Subtrait: frame_system::Trait + pallet_timestamp::Trait { /// The balance of an account. type Balance: Parameter + Member @@ -219,7 +219,7 @@ pub trait Subtrait: frame_system::Trait + timesta type CreationFee: Get; } -pub trait Trait: frame_system::Trait + timestamp::Trait { +pub trait Trait: frame_system::Trait + pallet_timestamp::Trait { /// The balance of an account. type Balance: Parameter + Member @@ -360,12 +360,12 @@ decl_storage! { // Total genesis `balance` minus `liquid` equals funds locked for vesting let locked = balance.saturating_sub(liquid); // Number of units unlocked per block after `begin` - let per_block = locked / length.max(sp_runtime::traits::One::one()); + let per_block = locked / length.max(One::one()); (who.clone(), VestingSchedule { locked: locked, per_block: per_block, - starting_block: begin + starting_block: begin, }) }) }).collect::>() @@ -579,7 +579,7 @@ impl, I: Instance> Module { /// /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that /// the caller will do this. - fn set_free_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { + pub fn set_free_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { // Commented out for now - but consider it instructive. // assert!(!Self::total_balance(who).is_zero()); // assert!(Self::free_balance(who) > T::ExistentialDeposit::get()); @@ -665,7 +665,7 @@ impl, I: Instance> Module { // wrapping these imbalances in a private module is necessary to ensure absolute privacy // of the inner member. -mod imbalances { +pub mod imbalances { use super::{ result, DefaultInstance, Imbalance, Instance, Saturating, StorageValue, Subtrait, Trait, TryDrop, Zero, }; @@ -854,7 +854,7 @@ impl, I: Instance> frame_system::Trait for ElevatedTrait { type Version = T::Version; type ModuleToIndex = T::ModuleToIndex; } -impl, I: Instance> timestamp::Trait for ElevatedTrait { +impl, I: Instance> pallet_timestamp::Trait for ElevatedTrait { type Moment = T::Moment; type OnTimestampSet = (); type MinimumPeriod = T::MinimumPeriod; @@ -939,7 +939,7 @@ where return Ok(()); } - let now = >::now(); + let now = >::now(); if locks .into_iter() .all(|l| l.withdraw_lock.can_withdraw(now, new_balance) || !l.reasons.intersects(reasons)) diff --git a/frame/kton/Cargo.toml b/frame/kton/Cargo.toml new file mode 100644 index 000000000..36aa409db --- /dev/null +++ b/frame/kton/Cargo.toml @@ -0,0 +1,45 @@ +[package] +name = "darwinia-kton" +version = "0.3.0" +authors = ["Darwinia Network "] +edition = "2018" + +[dependencies] +# crates.io +codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } +safe-mix = { version = "1.0.0", default-features = false } +serde = { version = "1.0.101", optional = true } + +# github.com +frame-support = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +frame-system = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-timestamp = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-runtime = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +# darwinia +darwinia-support = { default-features = false, path = "../support" } +ring = { package = "darwinia-balances", default-features = false, path = "../balances" } + +[dev-dependencies] +runtime-io = { package = "sr-io", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } +substrate-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } + +[features] +default = ["std"] +std = [ + "codec/std", + "safe-mix/std", + "serde", + + "frame-support/std", + "frame-system/std", + "pallet-timestamp/std", + "sp-runtime/std", + "sp-std/std", + + "darwinia-support/std", + "ring/std", +] +# test +transfer-fee = ["std"] diff --git a/frame/kton/src/lib.rs b/frame/kton/src/lib.rs new file mode 100644 index 000000000..88928b782 --- /dev/null +++ b/frame/kton/src/lib.rs @@ -0,0 +1,634 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +#[allow(unused)] +#[cfg(all(feature = "std", test))] +mod mock; +#[cfg(all(feature = "std", test))] +mod tests; + +use frame_support::{ + decl_module, decl_storage, + traits::{ + Currency, ExistenceRequirement, Get, Imbalance, OnUnbalanced, SignedImbalance, TryDrop, UpdateBalanceOutcome, + }, + weights::SimpleDispatchInfo, + StorageMap, StorageValue, +}; +use frame_system::{ensure_root, ensure_signed}; +use sp_runtime::{ + traits::{ + Bounded, CheckedAdd, CheckedSub, MaybeSerializeDeserialize, One, SaturatedConversion, Saturating, StaticLookup, + Zero, + }, + DispatchResult, +}; +#[cfg(not(feature = "std"))] +use sp_std::borrow::ToOwned; +use sp_std::{cmp, fmt::Debug, mem, vec::Vec}; + +use darwinia_support::{BalanceLock, LockIdentifier, LockableCurrency, WithdrawLock, WithdrawReason, WithdrawReasons}; +//use imbalances::{NegativeImbalance, PositiveImbalance}; +use ring::{imbalances::NegativeImbalance as RingNegativeImbalance, VestingSchedule}; + +pub trait Trait: ring::Trait {} + +decl_storage! { + trait Store for Module as Kton { + /// The total units issued in the system. + pub TotalIssuance get(fn total_issuance) build(|config: &GenesisConfig| { + config.balances.iter().fold(Zero::zero(), |acc: T::Balance, &(_, n)| acc + n) + }): T::Balance; + + /// Information regarding the vesting of a given account. + pub Vesting get(fn vesting) build(|config: &GenesisConfig| { + // Generate initial vesting configuration + // * who - Account which we are generating vesting configuration for + // * begin - Block when the account will start to vest + // * length - Number of blocks from `begin` until fully vested + // * liquid - Number of units which can be spent before vesting begins + config.vesting.iter().filter_map(|&(ref who, begin, length, liquid)| { + let length = >::from(length); + + config.balances.iter() + .find(|&&(ref w, _)| w == who) + .map(|&(_, balance)| { + // Total genesis `balance` minus `liquid` equals funds locked for vesting + let locked = balance.saturating_sub(liquid); + // Number of units unlocked per block after `begin` + let per_block = locked / length.max(One::one()); + + (who.clone(), VestingSchedule { + locked: locked, + per_block: per_block, + starting_block: begin, + }) + }) + }).collect::>() + }): map T::AccountId => Option>; + + /// The 'free' balance of a given account. + /// + /// This is the only balance that matters in terms of most operations on tokens. It + /// alone is used to determine the balance when in the contract execution environment. When this + /// balance falls below the value of `ExistentialDeposit`, then the 'current account' is + /// deleted: specifically `FreeBalance`. Further, the `OnFreeBalanceZero` callback + /// is invoked, giving a chance to external modules to clean up data associated with + /// the deleted account. + /// + /// `frame_system::AccountNonce` is also deleted if `ReservedBalance` is also zero (it also gets + /// collapsed to zero if it ever becomes less than `ExistentialDeposit`. + pub FreeBalance get(fn free_balance) build(|config: &GenesisConfig| config.balances.clone()): + map T::AccountId => T::Balance; + + /// The amount of the balance of a given account that is externally reserved; this can still get + /// slashed, but gets slashed last of all. + /// + /// This balance is a 'reserve' balance that other subsystems use in order to set aside tokens + /// that are still 'owned' by the account holder, but which are suspendable. + /// + /// When this balance falls below the value of `ExistentialDeposit`, then this 'reserve account' + /// is deleted: specifically, `ReservedBalance`. + /// + /// `frame_system::AccountNonce` is also deleted if `FreeBalance` is also zero (it also gets + /// collapsed to zero if it ever becomes less than `ExistentialDeposit`.) + pub ReservedBalance get(fn reserved_balance): map T::AccountId => T::Balance; + + /// Any liquidity locks on some account balances. + pub Locks get(fn locks): map T::AccountId => Vec>; + } + add_extra_genesis { + config(balances): Vec<(T::AccountId, T::Balance)>; + config(vesting): Vec<(T::AccountId, T::BlockNumber, T::BlockNumber, T::Balance)>; + // ^^ begin, length, amount liquid at genesis + } +} + +decl_module! { + pub struct Module for enum Call where origin: T::Origin { +// type Error = ::Error; + +// fn deposit_event() = default; + + /// Transfer some liquid free balance to another account. + /// + /// `transfer` will set the `FreeBalance` of the sender and receiver. + /// It will decrease the total issuance of the system by the `TransferFee`. + /// If the sender's account is below the existential deposit as a result + /// of the transfer, the account will be reaped. + /// + /// The dispatch origin for this call must be `Signed` by the transactor. + /// + /// # + /// - Dependent on arguments but not critical, given proper implementations for + /// input config types. See related functions below. + /// - It contains a limited number of reads and writes internally and no complex computation. + /// + /// Related functions: + /// + /// - `ensure_can_withdraw` is always called internally but has a bounded complexity. + /// - Transferring balances to accounts that did not exist before will cause + /// `T::OnNewAccount::on_new_account` to be called. + /// - Removing enough funds from an account will trigger + /// `T::DustRemoval::on_unbalanced` and `T::OnFreeBalanceZero::on_free_balance_zero`. + /// - `transfer_keep_alive` works the same way as `transfer`, but has an additional + /// check that the transfer will not kill the origin account. + /// + /// # + #[weight = SimpleDispatchInfo::FixedNormal(1_000_000)] + pub fn transfer( + origin, + dest: ::Source, + #[compact] value: T::Balance + ) { +// let transactor = ensure_signed(origin)?; +// let dest = T::Lookup::lookup(dest)?; +// >::transfer(&transactor, &dest, value, ExistenceRequirement::AllowDeath)?; + } + + /// Set the balances of a given account. + /// + /// This will alter `FreeBalance` and `ReservedBalance` in storage. it will + /// also decrease the total issuance of the system (`TotalIssuance`). + /// If the new free or reserved balance is below the existential deposit, + /// it will reset the account nonce (`frame_system::AccountNonce`). + /// + /// The dispatch origin for this call is `root`. + /// + /// # + /// - Independent of the arguments. + /// - Contains a limited number of reads and writes. + /// # + #[weight = SimpleDispatchInfo::FixedOperational(50_000)] + fn set_balance( + origin, + who: ::Source, + #[compact] new_free: T::Balance, + #[compact] new_reserved: T::Balance + ) { +// ensure_root(origin)?; +// let who = T::Lookup::lookup(who)?; +// +// let current_free = >::get(&who); +// if new_free > current_free { +// mem::drop(PositiveImbalance::::new(new_free - current_free)); +// } else if new_free < current_free { +// mem::drop(NegativeImbalance::::new(current_free - new_free)); +// } +// Self::set_free_balance(&who, new_free); +// +// let current_reserved = >::get(&who); +// if new_reserved > current_reserved { +// mem::drop(PositiveImbalance::::new(new_reserved - current_reserved)); +// } else if new_reserved < current_reserved { +// mem::drop(NegativeImbalance::::new(current_reserved - new_reserved)); +// } +// Self::set_reserved_balance(&who, new_reserved); + } + + /// Exactly as `transfer`, except the origin must be root and the source account may be + /// specified. + #[weight = SimpleDispatchInfo::FixedNormal(1_000_000)] + pub fn force_transfer( + origin, + source: ::Source, + dest: ::Source, + #[compact] value: T::Balance + ) { +// ensure_root(origin)?; +// let source = T::Lookup::lookup(source)?; +// let dest = T::Lookup::lookup(dest)?; +// >::transfer(&source, &dest, value, ExistenceRequirement::AllowDeath)?; + } + } +} + +//impl Module { +// // PUBLIC IMMUTABLES +// +// /// Get the amount that is currently being vested and cannot be transferred out of this account. +// pub fn vesting_balance(who: &T::AccountId) -> T::Balance { +// if let Some(v) = Self::vesting(who) { +// Self::free_balance(who).min(v.locked_at(>::block_number())) +// } else { +// Zero::zero() +// } +// } +// +// // PRIVATE MUTABLES +// +// /// Set the reserved balance of an account to some new value. Will enforce `ExistentialDeposit` +// /// law, annulling the account as needed. +// /// +// /// Doesn't do any preparatory work for creating a new account, so should only be used when it +// /// is known that the account already exists. +// /// +// /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that +// /// the caller will do this. +// fn set_reserved_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { +// >::insert(who, balance); +// UpdateBalanceOutcome::Updated +// } +// +// /// Set the free balance of an account to some new value. Will enforce `ExistentialDeposit` +// /// law, annulling the account as needed. +// /// +// /// Doesn't do any preparatory work for creating a new account, so should only be used when it +// /// is known that the account already exists. +// /// +// /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that +// /// the caller will do this. +// fn set_free_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { +// // Commented out for now - but consider it instructive. +// // assert!(!Self::total_balance(who).is_zero()); +// >::insert(who, balance); +// UpdateBalanceOutcome::Updated +// } +//} +// +//// wrapping these imbalances in a private module is necessary to ensure absolute privacy +//// of the inner member. +//mod imbalances { +// use sp_std::mem; +// +// use crate::{Imbalance, Saturating, StorageValue, Trait, TryDrop, Zero}; +// +// /// Opaque, move-only struct with private fields that serves as a token denoting that +// /// funds have been created without any equal and opposite accounting. +// #[must_use] +// pub struct PositiveImbalance(T::Balance); +// +// impl PositiveImbalance { +// /// Create a new positive imbalance from a balance. +// pub fn new(amount: T::Balance) -> Self { +// PositiveImbalance(amount) +// } +// } +// +// /// Opaque, move-only struct with private fields that serves as a token denoting that +// /// funds have been destroyed without any equal and opposite accounting. +// #[must_use] +// pub struct NegativeImbalance(T::Balance); +// +// impl NegativeImbalance { +// /// Create a new negative imbalance from a balance. +// pub fn new(amount: T::Balance) -> Self { +// NegativeImbalance(amount) +// } +// } +// +// impl TryDrop for PositiveImbalance { +// fn try_drop(self) -> Result<(), Self> { +// self.drop_zero() +// } +// } +// +// impl Imbalance for PositiveImbalance { +// type Opposite = NegativeImbalance; +// +// fn zero() -> Self { +// Self(Zero::zero()) +// } +// fn drop_zero(self) -> Result<(), Self> { +// if self.0.is_zero() { +// Ok(()) +// } else { +// Err(self) +// } +// } +// fn split(self, amount: T::Balance) -> (Self, Self) { +// let first = self.0.min(amount); +// let second = self.0 - first; +// +// mem::forget(self); +// (Self(first), Self(second)) +// } +// fn merge(mut self, other: Self) -> Self { +// self.0 = self.0.saturating_add(other.0); +// mem::forget(other); +// +// self +// } +// fn subsume(&mut self, other: Self) { +// self.0 = self.0.saturating_add(other.0); +// mem::forget(other); +// } +// fn offset(self, other: Self::Opposite) -> Result { +// let (a, b) = (self.0, other.0); +// mem::forget((self, other)); +// +// if a >= b { +// Ok(Self(a - b)) +// } else { +// Err(NegativeImbalance::new(b - a)) +// } +// } +// fn peek(&self) -> T::Balance { +// self.0.clone() +// } +// } +// +// impl TryDrop for NegativeImbalance { +// fn try_drop(self) -> Result<(), Self> { +// self.drop_zero() +// } +// } +// +// impl Imbalance for NegativeImbalance { +// type Opposite = PositiveImbalance; +// +// fn zero() -> Self { +// Self(Zero::zero()) +// } +// fn drop_zero(self) -> Result<(), Self> { +// if self.0.is_zero() { +// Ok(()) +// } else { +// Err(self) +// } +// } +// fn split(self, amount: T::Balance) -> (Self, Self) { +// let first = self.0.min(amount); +// let second = self.0 - first; +// +// mem::forget(self); +// (Self(first), Self(second)) +// } +// fn merge(mut self, other: Self) -> Self { +// self.0 = self.0.saturating_add(other.0); +// mem::forget(other); +// +// self +// } +// fn subsume(&mut self, other: Self) { +// self.0 = self.0.saturating_add(other.0); +// mem::forget(other); +// } +// fn offset(self, other: Self::Opposite) -> Result { +// let (a, b) = (self.0, other.0); +// mem::forget((self, other)); +// +// if a >= b { +// Ok(Self(a - b)) +// } else { +// Err(PositiveImbalance::new(b - a)) +// } +// } +// fn peek(&self) -> T::Balance { +// self.0.clone() +// } +// } +// +// impl Drop for PositiveImbalance { +// /// Basic drop handler will just square up the total issuance. +// fn drop(&mut self) { +// >::mutate(|v| *v = v.saturating_add(self.0)); +// } +// } +// +// impl Drop for NegativeImbalance { +// /// Basic drop handler will just square up the total issuance. +// fn drop(&mut self) { +// >::mutate(|v| *v = v.saturating_sub(self.0)); +// } +// } +//} +// +//impl Currency for Module +//where +// T::Balance: MaybeSerializeDeserialize + Debug, +//{ +// type Balance = T::Balance; +// type PositiveImbalance = PositiveImbalance; +// type NegativeImbalance = NegativeImbalance; +// +// fn total_balance(who: &T::AccountId) -> Self::Balance { +// Self::free_balance(who) + Self::reserved_balance(who) +// } +// +// fn can_slash(who: &T::AccountId, value: Self::Balance) -> bool { +// Self::free_balance(who) >= value +// } +// +// fn total_issuance() -> Self::Balance { +// >::get() +// } +// +// fn minimum_balance() -> Self::Balance { +// Zero::zero() +// } +// +// fn burn(mut amount: Self::Balance) -> Self::PositiveImbalance { +// >::mutate(|issued| { +// *issued = issued.checked_sub(&amount).unwrap_or_else(|| { +// amount = *issued; +// Zero::zero() +// }); +// }); +// PositiveImbalance::new(amount) +// } +// +// fn issue(mut amount: Self::Balance) -> Self::NegativeImbalance { +// >::mutate(|issued| { +// *issued = issued.checked_add(&amount).unwrap_or_else(|| { +// amount = Self::Balance::max_value() - *issued; +// Self::Balance::max_value() +// }) +// }); +// NegativeImbalance::new(amount) +// } +// +// fn free_balance(who: &T::AccountId) -> Self::Balance { +// >::get(who) +// } +// +// // # +// // Despite iterating over a list of locks, they are limited by the number of +// // lock IDs, which means the number of runtime modules that intend to use and create locks. +// // # +// fn ensure_can_withdraw( +// who: &T::AccountId, +// _amount: T::Balance, +// reasons: WithdrawReasons, +// new_balance: T::Balance, +// ) -> DispatchResult { +// if reasons.intersects(WithdrawReason::Reserve | WithdrawReason::Transfer) +// && Self::vesting_balance(who) > new_balance +// { +// Err(Error::::VestingBalance)? +// } +// let locks = Self::locks(who); +// if locks.is_empty() { +// return Ok(()); +// } +// +// let now = >::now(); +// if locks +// .into_iter() +// .all(|l| l.withdraw_lock.can_withdraw(now, new_balance) || !l.reasons.intersects(reasons)) +// { +// Ok(()) +// } else { +// Err(Error::::LiquidityRestrictions.into()) +// } +// } +// +// fn transfer( +// transactor: &T::AccountId, +// dest: &T::AccountId, +// value: Self::Balance, +// _existence_requirement: ExistenceRequirement, +// ) -> DispatchResult { +// let fee = ::TransferFee::get(); +// +// let new_from_ring = >::get(transactor) +// .checked_sub(&fee) +// .ok_or("Transfer Fee - NOT ENOUGH RING")?; +// >::ensure_can_withdraw(transactor, fee, WithdrawReason::Fee.into(), new_from_ring)?; +// +// let new_from_kton = Self::free_balance(transactor) +// .checked_sub(&value) +// .ok_or("balance too low to send value")?; +// Self::ensure_can_withdraw(transactor, value, WithdrawReason::Transfer.into(), new_from_kton)?; +// +// let new_to_kton = Self::free_balance(dest) +// .checked_add(&value) +// .ok_or("destination balance too high to receive value")?; +// +// if transactor != dest { +// if new_from_ring < as Currency<::AccountId>>::minimum_balance() { +// Err(Error::::KeepAlive)? +// } +// +// >::set_free_balance(transactor, new_from_ring); +// Self::set_free_balance(transactor, new_from_kton); +// Self::set_free_balance(dest, new_to_kton); +// +// ::TransferPayment::on_unbalanced(RingNegativeImbalance::new(fee)); +// +// Self::deposit_event(RawEvent::Transfer( +// transactor.to_owned(), +// dest.to_owned(), +// value.saturated_into(), +// fee.saturated_into(), +// )); +// } +// +// Ok(()) +// } +// +// fn slash(who: &T::AccountId, value: Self::Balance) -> (Self::NegativeImbalance, Self::Balance) { +// let free_balance = Self::free_balance(who); +// let free_slash = cmp::min(free_balance, value); +// Self::set_free_balance(who, free_balance - free_slash); +// let remaining_slash = value - free_slash; +// // NOTE: `slash()` prefers free balance, but assumes that reserve balance can be drawn +// // from in extreme circumstances. `can_slash()` should be used prior to `slash()` to avoid having +// // to draw from reserved funds, however we err on the side of punishment if things are inconsistent +// // or `can_slash` wasn't used appropriately. +// if !remaining_slash.is_zero() { +// let reserved_balance = Self::reserved_balance(who); +// let reserved_slash = cmp::min(reserved_balance, remaining_slash); +// Self::set_reserved_balance(who, reserved_balance - reserved_slash); +// ( +// NegativeImbalance::new(free_slash + reserved_slash), +// remaining_slash - reserved_slash, +// ) +// } else { +// (NegativeImbalance::new(value), Zero::zero()) +// } +// } +// +// fn deposit_into_existing( +// who: &T::AccountId, +// value: Self::Balance, +// ) -> Result { +// if Self::total_balance(who).is_zero() { +// return Err("beneficiary account must pre-exist"); +// } +// Self::set_free_balance(who, Self::free_balance(who) + value); +// Ok(PositiveImbalance::new(value)) +// } +// +// fn deposit_creating(who: &T::AccountId, value: Self::Balance) -> Self::PositiveImbalance { +// let (imbalance, _) = Self::make_free_balance_be(who, Self::free_balance(who) + value); +// if let SignedImbalance::Positive(p) = imbalance { +// p +// } else { +// // Impossible, but be defensive. +// Self::PositiveImbalance::zero() +// } +// } +// +// fn withdraw( +// who: &T::AccountId, +// value: Self::Balance, +// reasons: WithdrawReasons, +// _liveness: ExistenceRequirement, +// ) -> Result { +// let old_balance = Self::free_balance(who); +// if let Some(new_balance) = old_balance.checked_sub(&value) { +// Self::ensure_can_withdraw(who, value, reasons, new_balance)?; +// Self::set_free_balance(who, new_balance); +// Ok(NegativeImbalance::new(value)) +// } else { +// Err("too few free funds in account") +// } +// } +// +// fn make_free_balance_be( +// who: &T::AccountId, +// balance: Self::Balance, +// ) -> ( +// SignedImbalance, +// UpdateBalanceOutcome, +// ) { +// let original = Self::free_balance(who); +// let imbalance = if original <= balance { +// SignedImbalance::Positive(PositiveImbalance::new(balance - original)) +// } else { +// SignedImbalance::Negative(NegativeImbalance::new(original - balance)) +// }; +// let outcome = { +// Self::set_free_balance(who, balance); +// UpdateBalanceOutcome::Updated +// }; +// +// (imbalance, outcome) +// } +//} +// +//impl LockableCurrency for Module +//where +// T::Balance: MaybeSerializeDeserialize + Debug, +//{ +// type Moment = T::Moment; +// +// fn set_lock( +// id: LockIdentifier, +// who: &T::AccountId, +// withdraw_lock: WithdrawLock, +// reasons: WithdrawReasons, +// ) { +// let mut new_lock = Some(BalanceLock { +// id, +// withdraw_lock, +// reasons, +// }); +// let mut locks = Self::locks(who) +// .into_iter() +// .filter_map(|l| if l.id == id { new_lock.take() } else { Some(l) }) +// .collect::>(); +// if let Some(lock) = new_lock { +// locks.push(lock) +// } +// >::insert(who, locks); +// } +// +// fn remove_lock(id: LockIdentifier, who: &T::AccountId) { +// let locks = Self::locks(who) +// .into_iter() +// .filter_map(|l| if l.id != id { Some(l) } else { None }) +// .collect::>(); +// >::insert(who, locks); +// } +//} diff --git a/frame/kton/src/mock.rs b/frame/kton/src/mock.rs new file mode 100644 index 000000000..e74f68c9d --- /dev/null +++ b/frame/kton/src/mock.rs @@ -0,0 +1,149 @@ +use sr_primitives::{ + testing::Header, + traits::{BlakeTwo256, IdentityLookup}, + weights::Weight, + Perbill, +}; +use substrate_primitives::H256; +use support::{impl_outer_origin, parameter_types}; + +use crate::*; + +/// The AccountId alias in this test module. +pub type AccountId = u64; +pub type BlockNumber = u64; +pub type Moment = u64; + +pub type System = system::Module; +pub type Timestamp = timestamp::Module; + +#[cfg(feature = "transfer-fee")] +pub type Ring = ring::Module; +pub type Kton = Module; + +pub const NANO: Balance = 1; +pub const MICRO: Balance = 1_000 * NANO; +pub const MILLI: Balance = 1_000 * MICRO; +pub const COIN: Balance = 1_000 * MILLI; + +impl_outer_origin! { + pub enum Origin for Test {} +} + +// Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. +#[derive(Clone, PartialEq, Eq, Debug)] +pub struct Test; +parameter_types! { + pub const BlockHashCount: BlockNumber = 250; + pub const MaximumBlockWeight: Weight = 1024; + pub const MaximumBlockLength: u32 = 2 * 1024; + pub const AvailableBlockRatio: Perbill = Perbill::one(); +} +impl system::Trait for Test { + type Origin = Origin; + type Call = (); + type Index = u64; + type BlockNumber = BlockNumber; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = AccountId; + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = BlockHashCount; + type MaximumBlockWeight = MaximumBlockWeight; + type MaximumBlockLength = MaximumBlockLength; + type AvailableBlockRatio = AvailableBlockRatio; + type Version = (); +} + +parameter_types! { + pub const MinimumPeriod: Moment = 5; +} +impl timestamp::Trait for Test { + type Moment = u64; + type OnTimestampSet = (); + type MinimumPeriod = MinimumPeriod; +} + +#[cfg(feature = "transfer-fee")] +parameter_types! { + pub const TransferFee: Balance = 1 * MICRO; +} +#[cfg(not(feature = "transfer-fee"))] +parameter_types! { + pub const TransferFee: Balance = 0; +} +impl ring::Trait for Test { + type Balance = Balance; + type OnFreeBalanceZero = (); + type OnNewAccount = (); + type TransferPayment = (); + type DustRemoval = (); + type Event = (); + type ExistentialDeposit = (); + type TransferFee = TransferFee; + type CreationFee = (); +} + +impl Trait for Test { + type Event = (); +} + +pub struct ExtBuilder { + balance_factor: Balance, + vesting: bool, +} + +impl Default for ExtBuilder { + fn default() -> Self { + Self { + balance_factor: COIN, + vesting: false, + } + } +} + +impl ExtBuilder { + pub fn balance_factor(mut self, balance_factor: Balance) -> Self { + self.balance_factor = balance_factor; + self + } + pub fn vesting(mut self, vesting: bool) -> Self { + self.vesting = vesting; + self + } + pub fn build(self) -> runtime_io::TestExternalities { + let mut t = system::GenesisConfig::default().build_storage::().unwrap(); + GenesisConfig:: { + balances: vec![ + (1, 10 * self.balance_factor), + (2, 20 * self.balance_factor), + (3, 300 * self.balance_factor), + (4, 400 * self.balance_factor), + (10, self.balance_factor), + (11, 1000 * self.balance_factor), + (20, self.balance_factor), + (21, 2000 * self.balance_factor), + (30, self.balance_factor), + (31, 2000 * self.balance_factor), + (40, self.balance_factor), + (41, 2000 * self.balance_factor), + (100, 2000 * self.balance_factor), + (101, 2000 * self.balance_factor), + ], + vesting: if self.vesting { + vec![ + (1, 0, 10, 5 * self.balance_factor), + (2, 10, 20, 0), + (12, 10, 20, 5 * self.balance_factor), + ] + } else { + vec![] + }, + } + .assimilate_storage(&mut t) + .unwrap(); + t.into() + } +} diff --git a/frame/kton/src/tests.rs b/frame/kton/src/tests.rs new file mode 100644 index 000000000..6980abd76 --- /dev/null +++ b/frame/kton/src/tests.rs @@ -0,0 +1,262 @@ +use support::{assert_err, assert_ok, traits::Currency}; + +use crate::{mock::*, *}; +use darwinia_support::{LockIdentifier, NormalLock, WithdrawLock, WithdrawReasons}; + +const ID_1: LockIdentifier = *b"1 "; +const ID_2: LockIdentifier = *b"2 "; +const ID_3: LockIdentifier = *b"3 "; + +#[cfg(feature = "transfer-fee")] +mod with_transfer_fee { + use super::*; + + #[test] + fn transfer_should_work() { + ExtBuilder::default().build().execute_with(|| { + let _ = Kton::deposit_creating(&666, 100); + + assert_err!( + Kton::transfer(Origin::signed(666), 777, 50), + "Transfer Fee - NOT ENOUGH RING", + ); + + let _ = Ring::deposit_creating(&666, 1 * MICRO); + assert_ok!(Kton::transfer(Origin::signed(666), 777, 50)); + assert_eq!(Kton::total_balance(&666), 50); + assert_eq!(Kton::total_balance(&777), 50); + + assert_err!( + Kton::transfer(Origin::signed(666), 777, 50), + "Transfer Fee - NOT ENOUGH RING", + ); + + let _ = Ring::deposit_creating(&666, 1 * MICRO); + assert_ok!(Kton::transfer(Origin::signed(666), 777, 50)); + assert_eq!(Kton::total_balance(&666), 0); + assert_eq!(Kton::total_balance(&777), 100); + }); + } +} + +#[cfg(not(feature = "transfer-fee"))] +mod without_transfer_fee { + use super::*; + + #[test] + fn transfer_should_work() { + ExtBuilder::default().build().execute_with(|| { + let _ = Kton::deposit_creating(&666, 100); + + assert_ok!(Kton::transfer(Origin::signed(666), 777, 50)); + assert_eq!(Kton::total_balance(&666), 50); + assert_eq!(Kton::total_balance(&777), 50); + + assert_ok!(Kton::transfer(Origin::signed(666), 777, 50)); + assert_eq!(Kton::total_balance(&666), 0); + assert_eq!(Kton::total_balance(&777), 100); + + assert_ok!(Kton::transfer(Origin::signed(666), 777, 0)); + }); + } + + // TODO + #[test] + fn transfer_should_fail() { + ExtBuilder::default().vesting(true).build().execute_with(|| { + let _ = Kton::deposit_creating(&777, 1); + assert_err!( + Kton::transfer(Origin::signed(666), 777, 50), + "balance too low to send value", + ); + + let _ = Kton::deposit_creating(&666, Balance::max_value()); + assert_err!( + Kton::transfer(Origin::signed(777), 666, 1), + "destination balance too high to receive value", + ); + + assert_err!( + Kton::transfer(Origin::signed(2), 777, Kton::vesting_balance(&2)), + "vesting balance too high to send value", + ); + Kton::set_lock( + ID_1, + &777, + WithdrawLock::Normal(NormalLock { + amount: Balance::max_value(), + until: Moment::max_value(), + }), + WithdrawReasons::all(), + ); + assert_err!( + Kton::transfer(Origin::signed(777), 1, 1), + "account liquidity restrictions prevent withdrawal", + ); + }); + } + + #[test] + fn set_lock_should_work() { + ExtBuilder::default().build().execute_with(|| { + let lock_ids = [[0; 8], [1; 8], [2; 8], [3; 8]]; + let balance_per_lock = Kton::free_balance(&1) / (lock_ids.len() as Balance); + + // account `1`'s vesting length + System::set_block_number(4); + + { + let mut locks = vec![]; + for lock_id in lock_ids.iter() { + Kton::set_lock( + *lock_id, + &1, + WithdrawLock::Normal(NormalLock { + amount: balance_per_lock, + until: Moment::max_value(), + }), + WithdrawReasons::all(), + ); + locks.push(BalanceLock { + id: *lock_id, + withdraw_lock: WithdrawLock::Normal(NormalLock { + amount: balance_per_lock, + until: Moment::max_value(), + }), + reasons: WithdrawReasons::all(), + }); + assert_eq!(Kton::locks(&1), locks); + } + } + + for _ in 0..lock_ids.len() - 1 { + assert_ok!(Kton::transfer(Origin::signed(1), 2, balance_per_lock)); + } + assert_err!( + Kton::transfer(Origin::signed(1), 2, balance_per_lock), + "account liquidity restrictions prevent withdrawal" + ); + }); + } + + #[test] + fn remove_lock_should_work() { + ExtBuilder::default().build().execute_with(|| { + Timestamp::set_timestamp(0); + let ts: u64 = Timestamp::now().into(); + Kton::set_lock( + ID_1, + &2, + WithdrawLock::Normal(NormalLock { + amount: Balance::max_value(), + until: Moment::max_value(), + }), + WithdrawReasons::all(), + ); + assert_err!( + Kton::transfer(Origin::signed(2), 1, 1), + "account liquidity restrictions prevent withdrawal" + ); + + // unexpired + Kton::set_lock( + ID_2, + &2, + WithdrawLock::Normal(NormalLock { + amount: Balance::max_value(), + until: ts + 1, + }), + WithdrawReasons::all(), + ); + Kton::remove_lock(ID_1, &2); + Timestamp::set_timestamp(ts); + assert_err!( + Kton::transfer(Origin::signed(2), 1, 1), + "account liquidity restrictions prevent withdrawal" + ); + Kton::remove_lock(ID_2, &2); + assert_ok!(Kton::transfer(Origin::signed(2), 1, 1)); + + // expired + Kton::set_lock( + ID_3, + &2, + WithdrawLock::Normal(NormalLock { + amount: Balance::max_value(), + until: ts, + }), + WithdrawReasons::all(), + ); + assert_ok!(Kton::transfer(Origin::signed(2), 1, 1)); + }); + } + + #[test] + fn update_lock_should_work() { + ExtBuilder::default().build().execute_with(|| { + let mut locks = vec![]; + for id in 0..10 { + // until > 1 + locks.push(BalanceLock { + id: [id; 8], + withdraw_lock: WithdrawLock::Normal(NormalLock { amount: 1, until: 2 }), + reasons: WithdrawReasons::none(), + }); + Kton::set_lock( + [id; 8], + &1, + WithdrawLock::Normal(NormalLock { amount: 1, until: 2 }), + WithdrawReasons::none(), + ); + } + let update_id = 4; + for amount in 32767..65535 { + let until = amount as Moment + 1; + locks[update_id as usize] = BalanceLock { + id: [update_id; 8], + withdraw_lock: WithdrawLock::Normal(NormalLock { amount, until }), + reasons: WithdrawReasons::all(), + }; + Kton::set_lock( + [update_id; 8], + &1, + WithdrawLock::Normal(NormalLock { amount, until }), + WithdrawReasons::all(), + ); + assert_eq!(Kton::locks(&1), locks); + } + }); + } + + #[test] + fn combination_locking_should_work() { + ExtBuilder::default().build().execute_with(|| { + let _ = Kton::deposit_creating(&1001, 10); + Kton::set_lock( + ID_1, + &1001, + WithdrawLock::Normal(NormalLock { + amount: Balance::max_value(), + until: 0, + }), + WithdrawReasons::none(), + ); + Kton::set_lock( + ID_2, + &1001, + WithdrawLock::Normal(NormalLock { + amount: 0, + until: Moment::max_value(), + }), + WithdrawReasons::none(), + ); + Kton::set_lock( + ID_3, + &1001, + WithdrawLock::Normal(NormalLock { amount: 0, until: 0 }), + WithdrawReasons::all(), + ); + assert_ok!(Kton::transfer(Origin::signed(1001), 1002, 1)); + }); + } +} diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml index 68ff8ad43..3fa659175 100644 --- a/frame/staking/Cargo.toml +++ b/frame/staking/Cargo.toml @@ -1,14 +1,16 @@ [package] name = "darwinia-staking" -version = "2.0.0" -authors = ["Parity Technologies "] +version = "0.3.0" +authors = ["Darwinia Network "] edition = "2018" [dependencies] +# crates.io codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] } safe-mix = { version = "1.0.0", default-features = false } serde = { version = "1.0.101", optional = true } +# github.com frame-support = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } frame-system = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-authorship = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } @@ -22,10 +24,11 @@ sp-runtime = { version = "2.0.0", default-features = false, git = "https://githu sp-staking = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +# darwinia darwinia-support = { path = "../support", default-features = false } [dev-dependencies] -pallet-balances = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-balances = { package = "darwinia-balances", path = "../../frame/balances" } pallet-staking-reward-curve = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } substrate-test-utils = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } From eb0827db410c6a9c5384603be0418d21e2b7cdf5 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Mon, 6 Jan 2020 11:43:24 +0800 Subject: [PATCH 03/17] =?UTF-8?q?update:=20kton=20and=20ring=20-=20compile?= =?UTF-8?q?=20=E2=9C=94=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 304 +-------- Cargo.toml | 4 +- bin/node/runtime/Cargo.toml | 13 +- bin/node/runtime/src/impls.rs | 76 ++- bin/node/runtime/src/lib.rs | 139 ++--- frame/{ => balances}/kton/Cargo.toml | 11 +- frame/balances/kton/src/lib.rs | 822 +++++++++++++++++++++++++ frame/{ => balances}/kton/src/mock.rs | 0 frame/{ => balances}/kton/src/tests.rs | 0 frame/balances/{ => ring}/Cargo.toml | 6 +- frame/balances/{ => ring}/src/lib.rs | 138 +++-- frame/balances/{ => ring}/src/mock.rs | 0 frame/balances/{ => ring}/src/tests.rs | 0 frame/kton/src/lib.rs | 634 ------------------- frame/staking/Cargo.toml | 2 +- frame/staking/src/lib.rs | 2 +- frame/staking/src/slashing.rs | 273 +++++--- frame/support/src/lib.rs | 27 +- 18 files changed, 1235 insertions(+), 1216 deletions(-) rename frame/{ => balances}/kton/Cargo.toml (68%) create mode 100644 frame/balances/kton/src/lib.rs rename frame/{ => balances}/kton/src/mock.rs (100%) rename frame/{ => balances}/kton/src/tests.rs (100%) rename frame/balances/{ => ring}/Cargo.toml (84%) rename frame/balances/{ => ring}/src/lib.rs (96%) rename frame/balances/{ => ring}/src/mock.rs (100%) rename frame/balances/{ => ring}/src/tests.rs (100%) delete mode 100644 frame/kton/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 7b9dc2480..61fa047eb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -836,13 +836,12 @@ dependencies = [ ] [[package]] -name = "darwinia-balances" -version = "0.4.0" +name = "darwinia-kton" +version = "0.3.0" dependencies = [ "darwinia-support", "frame-support", "frame-system", - "pallet-timestamp", "pallet-transaction-payment", "parity-scale-codec", "safe-mix", @@ -854,28 +853,27 @@ dependencies = [ ] [[package]] -name = "darwinia-kton" -version = "0.3.0" +name = "darwinia-ring" +version = "0.4.0" dependencies = [ - "darwinia-balances", "darwinia-support", "frame-support", "frame-system", - "pallet-timestamp", + "pallet-transaction-payment", "parity-scale-codec", "safe-mix", "serde", + "sp-core", + "sp-io", "sp-runtime", "sp-std", - "sr-io", - "substrate-primitives", ] [[package]] name = "darwinia-staking" version = "0.3.0" dependencies = [ - "darwinia-balances", + "darwinia-ring", "darwinia-support", "frame-support", "frame-system", @@ -970,18 +968,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "923dea538cea0aa3025e8685b20d6ee21ef99c4f77e954a30febbaac5ec73a97" -[[package]] -name = "ed25519-dalek" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d07e8b8a8386c3b89a7a4b329fdfa4cb545de2545e9e2ebbc3dd3929253e426" -dependencies = [ - "clear_on_drop", - "curve25519-dalek 1.2.3", - "failure", - "rand 0.6.5", -] - [[package]] name = "ed25519-dalek" version = "1.0.0-pre.3" @@ -2280,7 +2266,7 @@ dependencies = [ "asn1_der", "bs58 0.3.0", "bytes 0.4.12", - "ed25519-dalek 1.0.0-pre.3", + "ed25519-dalek", "failure", "fnv", "futures 0.1.29", @@ -3106,7 +3092,8 @@ dependencies = [ name = "node-runtime" version = "2.0.0" dependencies = [ - "darwinia-balances", + "darwinia-kton", + "darwinia-ring", "darwinia-staking", "frame-executive", "frame-support", @@ -3391,7 +3378,7 @@ dependencies = [ "frame-support", "frame-system", "parity-scale-codec", - "parity-wasm 0.41.0", + "parity-wasm", "pwasm-utils", "serde", "sp-core", @@ -3399,7 +3386,7 @@ dependencies = [ "sp-runtime", "sp-sandbox", "sp-std", - "wasmi-validation 0.3.0", + "wasmi-validation", ] [[package]] @@ -3850,12 +3837,6 @@ dependencies = [ "winapi 0.3.8", ] -[[package]] -name = "parity-wasm" -version = "0.40.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e39faaa292a687ea15120b1ac31899b13586446521df6c149e46f1584671e0f" - [[package]] name = "parity-wasm" version = "0.41.0" @@ -4201,7 +4182,7 @@ checksum = "4f7a12f176deee919f4ba55326ee17491c8b707d0987aed822682c821b660192" dependencies = [ "byteorder 1.3.2", "log", - "parity-wasm 0.41.0", + "parity-wasm", ] [[package]] @@ -4909,7 +4890,7 @@ dependencies = [ "libsecp256k1", "log", "parity-scale-codec", - "parity-wasm 0.41.0", + "parity-wasm", "parking_lot 0.9.0", "sc-executor-common", "sc-executor-wasmi", @@ -4923,7 +4904,7 @@ dependencies = [ "sp-trie", "sp-version", "sp-wasm-interface", - "wasmi 0.6.2", + "wasmi", ] [[package]] @@ -4938,7 +4919,7 @@ dependencies = [ "sp-runtime-interface", "sp-serializer", "sp-wasm-interface", - "wasmi 0.6.2", + "wasmi", ] [[package]] @@ -4948,13 +4929,13 @@ source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc dependencies = [ "log", "parity-scale-codec", - "parity-wasm 0.41.0", + "parity-wasm", "sc-executor-common", "sp-core", "sp-externalities", "sp-runtime-interface", "sp-wasm-interface", - "wasmi 0.6.2", + "wasmi", ] [[package]] @@ -4969,13 +4950,13 @@ dependencies = [ "cranelift-wasm", "log", "parity-scale-codec", - "parity-wasm 0.41.0", + "parity-wasm", "sc-executor-common", "sp-core", "sp-externalities", "sp-runtime-interface", "sp-wasm-interface", - "wasmi 0.6.2", + "wasmi", "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", @@ -5761,7 +5742,7 @@ dependencies = [ "base58", "blake2-rfc", "byteorder 1.3.2", - "ed25519-dalek 1.0.0-pre.3", + "ed25519-dalek", "hash-db", "hash256-std-hasher", "hex", @@ -5786,9 +5767,9 @@ dependencies = [ "sp-storage", "substrate-bip39", "tiny-bip39", - "tiny-keccak 2.0.1", + "tiny-keccak", "twox-hash", - "wasmi 0.6.2", + "wasmi", "zeroize 1.1.0", ] @@ -5967,7 +5948,7 @@ dependencies = [ "sp-core", "sp-io", "sp-std", - "wasmi 0.6.2", + "wasmi", ] [[package]] @@ -6014,7 +5995,7 @@ dependencies = [ "sp-externalities", "sp-panic-handler", "sp-trie", - "trie-db 0.16.0", + "trie-db", "trie-root", ] @@ -6071,7 +6052,7 @@ dependencies = [ "parity-scale-codec", "sp-core", "sp-std", - "trie-db 0.16.0", + "trie-db", "trie-root", ] @@ -6093,7 +6074,7 @@ version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ "impl-trait-for-tuples", - "wasmi 0.6.2", + "wasmi", ] [[package]] @@ -6102,29 +6083,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" -[[package]] -name = "sr-io" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "hash-db", - "libsecp256k1", - "log", - "parity-scale-codec", - "sr-std", - "substrate-externalities", - "substrate-primitives", - "substrate-runtime-interface", - "substrate-state-machine", - "substrate-trie", - "tiny-keccak 1.5.0", -] - -[[package]] -name = "sr-std" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" - [[package]] name = "stable_deref_trait" version = "1.1.1" @@ -6231,27 +6189,6 @@ name = "substrate-build-script-utils" version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" -[[package]] -name = "substrate-debug-derive" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "proc-macro2 1.0.6", - "quote 1.0.2", - "syn 1.0.11", -] - -[[package]] -name = "substrate-externalities" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "environmental", - "primitive-types", - "sr-std", - "substrate-primitives-storage", -] - [[package]] name = "substrate-frame-rpc-system" version = "2.0.0" @@ -6272,144 +6209,16 @@ dependencies = [ "sp-transaction-pool", ] -[[package]] -name = "substrate-panic-handler" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "backtrace", - "log", -] - -[[package]] -name = "substrate-primitives" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "base58", - "blake2-rfc", - "byteorder 1.3.2", - "ed25519-dalek 0.9.1", - "hash-db", - "hash256-std-hasher", - "hex", - "impl-serde", - "lazy_static", - "libsecp256k1", - "log", - "num-traits", - "parity-scale-codec", - "parking_lot 0.9.0", - "primitive-types", - "rand 0.7.2", - "regex", - "rustc-hex", - "schnorrkel", - "serde", - "sha2", - "sr-std", - "substrate-bip39", - "substrate-debug-derive", - "substrate-externalities", - "substrate-primitives-storage", - "substrate-runtime-interface", - "tiny-bip39", - "tiny-keccak 1.5.0", - "twox-hash", - "wasmi 0.5.1", - "zeroize 0.10.1", -] - -[[package]] -name = "substrate-primitives-storage" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "impl-serde", - "serde", - "sr-std", - "substrate-debug-derive", -] - -[[package]] -name = "substrate-runtime-interface" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "environmental", - "parity-scale-codec", - "primitive-types", - "sr-std", - "static_assertions", - "substrate-externalities", - "substrate-runtime-interface-proc-macro", - "substrate-wasm-interface", -] - -[[package]] -name = "substrate-runtime-interface-proc-macro" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "Inflector", - "proc-macro-crate", - "proc-macro2 1.0.6", - "quote 1.0.2", - "syn 1.0.11", -] - -[[package]] -name = "substrate-state-machine" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "hash-db", - "log", - "num-traits", - "parity-scale-codec", - "parking_lot 0.9.0", - "rand 0.7.2", - "substrate-externalities", - "substrate-panic-handler", - "substrate-primitives", - "substrate-trie", - "trie-db 0.15.2", - "trie-root", -] - [[package]] name = "substrate-test-utils" version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" -[[package]] -name = "substrate-trie" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "hash-db", - "memory-db", - "parity-scale-codec", - "sr-std", - "substrate-primitives", - "trie-db 0.15.2", - "trie-root", -] - [[package]] name = "substrate-wasm-builder-runner" version = "1.0.4" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" -[[package]] -name = "substrate-wasm-interface" -version = "2.0.0" -source = "git+https://github.com/darwinia-network/substrate.git?branch=darwinia-develop#d2c4b0dbd89d9588adcbe97320e27f49ee251411" -dependencies = [ - "impl-trait-for-tuples", - "wasmi 0.5.1", -] - [[package]] name = "subtle" version = "1.0.0" @@ -6594,15 +6403,6 @@ dependencies = [ "sha2", ] -[[package]] -name = "tiny-keccak" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" -dependencies = [ - "crunchy", -] - [[package]] name = "tiny-keccak" version = "2.0.1" @@ -6924,19 +6724,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "trie-db" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0b62d27e8aa1c07414549ac872480ac82380bab39e730242ab08d82d7cc098a" -dependencies = [ - "elastic-array", - "hash-db", - "hashbrown 0.6.3", - "log", - "rand 0.6.5", -] - [[package]] name = "trie-db" version = "0.16.0" @@ -7257,20 +7044,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wasmi" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31d26deb2d9a37e6cfed420edce3ed604eab49735ba89035e13c98f9a528313" -dependencies = [ - "libc", - "memory_units", - "num-rational", - "num-traits", - "parity-wasm 0.40.3", - "wasmi-validation 0.2.0", -] - [[package]] name = "wasmi" version = "0.6.2" @@ -7282,17 +7055,8 @@ dependencies = [ "memory_units", "num-rational", "num-traits", - "parity-wasm 0.41.0", - "wasmi-validation 0.3.0", -] - -[[package]] -name = "wasmi-validation" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bc0356e3df56e639fc7f7d8a99741915531e27ed735d911ed83d7e1339c8188" -dependencies = [ - "parity-wasm 0.40.3", + "parity-wasm", + "wasmi-validation", ] [[package]] @@ -7301,7 +7065,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea78c597064ba73596099281e2f4cfc019075122a65cdda3205af94f0b264d93" dependencies = [ - "parity-wasm 0.41.0", + "parity-wasm", ] [[package]] @@ -7583,12 +7347,6 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45af6a010d13e4cf5b54c94ba5a2b2eba5596b9e46bf5875612d332a1f2b3f86" -[[package]] -name = "zeroize" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4090487fa66630f7b166fba2bbb525e247a5449f41c468cc1d98f8ae6ac03120" - [[package]] name = "zeroize" version = "1.1.0" diff --git a/Cargo.toml b/Cargo.toml index 8d1061a84..62127d7d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,8 +2,8 @@ members = [ "bin/node/cli", "bin/node/runtime", - "frame/balances", - "frame/kton", + "frame/balances/kton", + "frame/balances/ring", "frame/staking", "frame/support", ] diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml index 748d6a980..fdeda50b7 100644 --- a/bin/node/runtime/Cargo.toml +++ b/bin/node/runtime/Cargo.toml @@ -60,7 +60,8 @@ pallet-utility = { version = "2.0.0", default-features = false, git = "https://g pallet-transaction-payment = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -pallet-balances = { package = "darwinia-balances", default-features = false, path = "../../../frame/balances" } +pallet-kton = { package = "darwinia-kton", default-features = false, path = "../../../frame/balances/kton" } +pallet-ring = { package = "darwinia-ring", default-features = false, path = "../../../frame/balances/ring" } pallet-staking = { package = "darwinia-staking", default-features = false, features = ["migrate"], path = "../../../frame/staking" } [build-dependencies] @@ -77,16 +78,11 @@ std = [ "pallet-authorship/std", "sp-consensus-babe/std", "pallet-babe/std", - "pallet-balances/std", "sp-block-builder/std", "codec/std", "pallet-collective/std", "pallet-contracts-rpc-runtime-api/std", "pallet-contracts/std", - -# "pallet-democracy/std", -# "pallet-elections-phragmen/std", - "frame-executive/std", "pallet-finality-tracker/std", "pallet-grandpa/std", @@ -108,7 +104,6 @@ std = [ "sp-api/std", "sp-runtime/std", "sp-staking/std", - "pallet-staking/std", "sp-keyring", "sp-session/std", "pallet-sudo/std", @@ -122,4 +117,8 @@ std = [ "sp-transaction-pool/std", "pallet-utility/std", "sp-version/std", + + "pallet-kton/std", + "pallet-ring/std", + "pallet-staking/std", ] diff --git a/bin/node/runtime/src/impls.rs b/bin/node/runtime/src/impls.rs index 75aba8b70..5ed897748 100644 --- a/bin/node/runtime/src/impls.rs +++ b/bin/node/runtime/src/impls.rs @@ -16,11 +16,14 @@ //! Some configurable implementations as associated type for the substrate runtime. +use crate::{Authorship, Balances, MaximumBlockWeight, NegativeImbalance, System}; +use frame_support::{ + traits::{Currency, Get, OnUnbalanced}, + weights::Weight, +}; use node_primitives::Balance; use sp_runtime::traits::{Convert, Saturating}; use sp_runtime::{Fixed64, Perbill}; -use frame_support::{traits::{OnUnbalanced, Currency, Get}, weights::Weight}; -use crate::{Balances, System, Authorship, MaximumBlockWeight, NegativeImbalance}; pub struct Author; impl OnUnbalanced for Author { @@ -34,15 +37,21 @@ impl OnUnbalanced for Author { pub struct CurrencyToVoteHandler; impl CurrencyToVoteHandler { - fn factor() -> Balance { (Balances::total_issuance() / u64::max_value() as Balance).max(1) } + fn factor() -> Balance { + (Balances::total_issuance() / u64::max_value() as Balance).max(1) + } } impl Convert for CurrencyToVoteHandler { - fn convert(x: Balance) -> u64 { (x / Self::factor()) as u64 } + fn convert(x: Balance) -> u64 { + (x / Self::factor()) as u64 + } } impl Convert for CurrencyToVoteHandler { - fn convert(x: u128) -> Balance { x * Self::factor() } + fn convert(x: u128) -> Balance { + x * Self::factor() + } } /// Convert from weight to balance via a simple coefficient multiplication @@ -101,7 +110,8 @@ impl> Convert for TargetedFeeAdjustment { } else { // Proof: first_term > second_term. Safe subtraction. let negative = first_term - second_term; - multiplier.saturating_sub(negative) + multiplier + .saturating_sub(negative) // despite the fact that apply_to saturates weight (final fee cannot go below 0) // it is crucially important to stop here and don't further reduce the weight fee // multiplier. While at -1, it means that the network is so un-congested that all @@ -115,10 +125,10 @@ impl> Convert for TargetedFeeAdjustment { #[cfg(test)] mod tests { use super::*; - use sp_runtime::assert_eq_error_rate; - use crate::{MaximumBlockWeight, AvailableBlockRatio, Runtime}; - use crate::{constants::currency::*, TransactionPayment, TargetBlockFullness}; + use crate::{constants::currency::*, TargetBlockFullness, TransactionPayment}; + use crate::{AvailableBlockRatio, MaximumBlockWeight, Runtime}; use frame_support::weights::Weight; + use sp_runtime::assert_eq_error_rate; fn max() -> Weight { MaximumBlockWeight::get() @@ -129,7 +139,7 @@ mod tests { } // poc reference implementation. - fn fee_multiplier_update(block_weight: Weight, previous: Fixed64) -> Fixed64 { + fn fee_multiplier_update(block_weight: Weight, previous: Fixed64) -> Fixed64 { let block_weight = block_weight as f32; let v: f32 = 0.00004; @@ -140,7 +150,7 @@ mod tests { // Current saturation in terms of weight let s = block_weight; - let fm = v * (s/m - ss/m) + v.powi(2) * (s/m - ss/m).powi(2) / 2.0; + let fm = v * (s / m - ss / m) + v.powi(2) * (s / m - ss / m).powi(2) / 2.0; let addition_fm = Fixed64::from_parts((fm * 1_000_000_000_f32).round() as i64); previous.saturating_add(addition_fm) } @@ -149,9 +159,14 @@ mod tests { Fixed64::from_parts(parts) } - fn run_with_system_weight(w: Weight, assertions: F) where F: Fn() -> () { - let mut t: sp_io::TestExternalities = - frame_system::GenesisConfig::default().build_storage::().unwrap().into(); + fn run_with_system_weight(w: Weight, assertions: F) + where + F: Fn() -> (), + { + let mut t: sp_io::TestExternalities = frame_system::GenesisConfig::default() + .build_storage::() + .unwrap() + .into(); t.execute_with(|| { System::set_block_limits(w, 0); assertions() @@ -189,11 +204,15 @@ mod tests { loop { let next = TargetedFeeAdjustment::::convert(fm); fm = next; - if fm == Fixed64::from_rational(-1, 1) { break; } + if fm == Fixed64::from_rational(-1, 1) { + break; + } iterations += 1; } println!("iteration {}, new fm = {:?}. Weight fee is now zero", iterations, fm); - assert!(iterations > 50_000, "This assertion is just a warning; Don't panic. \ + assert!( + iterations > 50_000, + "This assertion is just a warning; Don't panic. \ Current substrate/polkadot node are configured with a _slow adjusting fee_ \ mechanism. Hence, it is really unlikely that fees collapse to zero even on an \ empty chain in less than at least of couple of thousands of empty blocks. But this \ @@ -224,7 +243,9 @@ mod tests { loop { let next = TargetedFeeAdjustment::::convert(fm); // if no change, panic. This should never happen in this case. - if fm == next { panic!("The fee should ever increase"); } + if fm == next { + panic!("The fee should ever increase"); + } fm = next; iterations += 1; let fee = ::WeightToFee::convert(tx_weight); @@ -258,7 +279,6 @@ mod tests { TargetedFeeAdjustment::::convert(Fixed64::default()), feemul(-5000), ); - }); run_with_system_weight(target(), || { // ideal. Original fee. No changes. @@ -341,7 +361,9 @@ mod tests { 10 * mb, Weight::max_value() / 2, Weight::max_value(), - ].into_iter().for_each(|i| { + ] + .into_iter() + .for_each(|i| { run_with_system_weight(i, || { let next = TargetedFeeAdjustment::::convert(Fixed64::default()); let truth = fee_multiplier_update(i, Fixed64::default()); @@ -351,14 +373,12 @@ mod tests { // Some values that are all above the target and will cause an increase. let t = target(); - vec![t + 100, t * 2, t * 4] - .into_iter() - .for_each(|i| { - run_with_system_weight(i, || { - let fm = TargetedFeeAdjustment::::convert(max_fm); - // won't grow. The convert saturates everything. - assert_eq!(fm, max_fm); - }) - }); + vec![t + 100, t * 2, t * 4].into_iter().for_each(|i| { + run_with_system_weight(i, || { + let fm = TargetedFeeAdjustment::::convert(max_fm); + // won't grow. The convert saturates everything. + assert_eq!(fm, max_fm); + }) + }); } } diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index e56180ce9..39137b92f 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -20,6 +20,22 @@ // `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. #![recursion_limit = "256"] +/// Implementations of some helper traits passed into runtime modules as associated types. +pub mod impls; +use impls::{Author, CurrencyToVoteHandler, LinearWeightToFee, TargetedFeeAdjustment}; +/// Constant values used within the runtime. +pub mod constants; +use constants::{currency::*, time::*}; + +pub use frame_support::StorageValue; +pub use pallet_contracts::Gas; +pub use pallet_timestamp::Call as TimestampCall; +#[cfg(any(feature = "std", test))] +pub use sp_runtime::BuildStorage; + +pub use pallet_ring::Call as BalancesCall; +pub use pallet_staking::StakerStatus; + use frame_support::{ construct_runtime, parameter_types, traits::{Currency, Randomness, SplitTwoWays}, @@ -28,42 +44,29 @@ use frame_support::{ use frame_system::offchain::TransactionSubmitter; use node_primitives::{AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, Moment, Signature}; use pallet_contracts_rpc_runtime_api::ContractExecResult; -use pallet_grandpa::fg_primitives; -use pallet_grandpa::AuthorityList as GrandpaAuthorityList; +use pallet_grandpa::{fg_primitives, AuthorityList as GrandpaAuthorityList}; use pallet_im_online::sr25519::AuthorityId as ImOnlineId; use pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo; use sp_api::impl_runtime_apis; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; -use sp_core::u32_trait::{_1, _2, _3, _4}; -use sp_core::OpaqueMetadata; -use sp_inherents::{CheckInherentsResult, InherentData}; -use sp_runtime::curve::PiecewiseLinear; -use sp_runtime::traits::{ - self, BlakeTwo256, Block as BlockT, NumberFor, OpaqueKeys, SaturatedConversion, StaticLookup, +use sp_core::{ + u32_trait::{_1, _2, _3, _4}, + OpaqueMetadata, }; +use sp_inherents::{CheckInherentsResult, InherentData}; use sp_runtime::transaction_validity::TransactionValidity; -use sp_runtime::{create_runtime_str, generic, impl_opaque_keys, ApplyExtrinsicResult, Perbill, Permill}; -use sp_std::prelude::*; +use sp_runtime::{ + create_runtime_str, + curve::PiecewiseLinear, + generic, impl_opaque_keys, + traits::{self, BlakeTwo256, Block as BlockT, NumberFor, OpaqueKeys, SaturatedConversion, StaticLookup}, + ApplyExtrinsicResult, Perbill, Permill, +}; +use sp_std::vec::Vec; #[cfg(any(feature = "std", test))] use sp_version::NativeVersion; use sp_version::RuntimeVersion; -pub use frame_support::StorageValue; -pub use pallet_balances::Call as BalancesCall; -pub use pallet_contracts::Gas; -pub use pallet_staking::StakerStatus; -pub use pallet_timestamp::Call as TimestampCall; -#[cfg(any(feature = "std", test))] -pub use sp_runtime::BuildStorage; - -/// Implementations of some helper traits passed into runtime modules as associated types. -pub mod impls; -use impls::{Author, CurrencyToVoteHandler, LinearWeightToFee, TargetedFeeAdjustment}; - -/// Constant values used within the runtime. -pub mod constants; -use constants::{currency::*, time::*}; - // Make the WASM binary available. #[cfg(feature = "std")] include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); @@ -170,7 +173,7 @@ parameter_types! { pub const CreationFee: Balance = 1 * CENTS; } -impl pallet_balances::Trait for Runtime { +impl pallet_ring::Trait for Runtime { type Balance = Balance; type OnFreeBalanceZero = ((Staking, Contracts), Session); type OnNewAccount = Indices; @@ -180,6 +183,17 @@ impl pallet_balances::Trait for Runtime { type ExistentialDeposit = ExistentialDeposit; type TransferFee = TransferFee; type CreationFee = CreationFee; + + type Time = Timestamp; +} +impl pallet_kton::Trait for Runtime { + type Balance = Balance; + type Event = Event; + type RingCurrency = Balances; + type TransferPayment = Balances; + type TransferFee = TransferFee; + + type Time = Timestamp; } parameter_types! { @@ -283,46 +297,6 @@ impl pallet_staking::Trait for Runtime { type SessionInterface = Self; } -//parameter_types! { -// pub const LaunchPeriod: BlockNumber = 28 * 24 * 60 * MINUTES; -// pub const VotingPeriod: BlockNumber = 28 * 24 * 60 * MINUTES; -// pub const EmergencyVotingPeriod: BlockNumber = 3 * 24 * 60 * MINUTES; -// pub const MinimumDeposit: Balance = 100 * DOLLARS; -// pub const EnactmentPeriod: BlockNumber = 30 * 24 * 60 * MINUTES; -// pub const CooloffPeriod: BlockNumber = 28 * 24 * 60 * MINUTES; -// // One cent: $10,000 / MB -// pub const PreimageByteDeposit: Balance = 1 * CENTS; -//} -// -//impl pallet_democracy::Trait for Runtime { -// type Proposal = Call; -// type Event = Event; -// type Currency = Balances; -// type EnactmentPeriod = EnactmentPeriod; -// type LaunchPeriod = LaunchPeriod; -// type VotingPeriod = VotingPeriod; -// type MinimumDeposit = MinimumDeposit; -// /// A straight majority of the council can decide what their next motion is. -// type ExternalOrigin = pallet_collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective>; -// /// A super-majority can have the next scheduled referendum be a straight majority-carries vote. -// type ExternalMajorityOrigin = pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>; -// /// A unanimous council can have the next scheduled referendum be a straight default-carries -// /// (NTB) vote. -// type ExternalDefaultOrigin = pallet_collective::EnsureProportionAtLeast<_1, _1, AccountId, CouncilCollective>; -// /// Two thirds of the technical committee can have an ExternalMajority/ExternalDefault vote -// /// be tabled immediately and with a shorter voting/enactment period. -// type FastTrackOrigin = pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, TechnicalCollective>; -// type EmergencyVotingPeriod = EmergencyVotingPeriod; -// // To cancel a proposal which has been passed, 2/3 of the council must agree to it. -// type CancellationOrigin = pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>; -// // Any single technical committee member may veto a coming council proposal, however they can -// // only do it once and it lasts only for the cooloff period. -// type VetoOrigin = pallet_collective::EnsureMember; -// type CooloffPeriod = CooloffPeriod; -// type PreimageByteDeposit = PreimageByteDeposit; -// type Slash = Treasury; -//} - type CouncilCollective = pallet_collective::Instance1; impl pallet_collective::Trait for Runtime { type Origin = Origin; @@ -330,29 +304,6 @@ impl pallet_collective::Trait for Runtime { type Event = Event; } -//parameter_types! { -// pub const CandidacyBond: Balance = 10 * DOLLARS; -// pub const VotingBond: Balance = 1 * DOLLARS; -// pub const TermDuration: BlockNumber = 7 * DAYS; -// pub const DesiredMembers: u32 = 13; -// pub const DesiredRunnersUp: u32 = 7; -//} -// -//impl pallet_elections_phragmen::Trait for Runtime { -// type Event = Event; -// type Currency = Balances; -// type ChangeMembers = Council; -// type CurrencyToVote = CurrencyToVoteHandler; -// type CandidacyBond = CandidacyBond; -// type VotingBond = VotingBond; -// type LoserCandidate = (); -// type BadReport = (); -// type KickedMember = (); -// type DesiredMembers = DesiredMembers; -// type DesiredRunnersUp = DesiredRunnersUp; -// type TermDuration = TermDuration; -//} - type TechnicalCollective = pallet_collective::Instance2; impl pallet_collective::Trait for Runtime { type Origin = Origin; @@ -531,14 +482,10 @@ construct_runtime!( Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent}, Authorship: pallet_authorship::{Module, Call, Storage, Inherent}, Indices: pallet_indices, - Balances: pallet_balances::{default, Error}, TransactionPayment: pallet_transaction_payment::{Module, Storage}, - Staking: pallet_staking::{default, OfflineWorker}, Session: pallet_session::{Module, Call, Storage, Event, Config}, -// Democracy: pallet_democracy::{Module, Call, Storage, Config, Event}, Council: pallet_collective::::{Module, Call, Storage, Origin, Event, Config}, TechnicalCommittee: pallet_collective::::{Module, Call, Storage, Origin, Event, Config}, -// Elections: pallet_elections_phragmen::{Module, Call, Storage, Event}, TechnicalMembership: pallet_membership::::{Module, Call, Storage, Event, Config}, FinalityTracker: pallet_finality_tracker::{Module, Call, Inherent}, Grandpa: pallet_grandpa::{Module, Call, Storage, Config, Event}, @@ -550,6 +497,10 @@ construct_runtime!( Offences: pallet_offences::{Module, Call, Storage, Event}, RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage}, Nicks: pallet_nicks::{Module, Call, Storage, Event}, + + Balances: pallet_ring::{default, Error}, + Kton: pallet_kton::{default, Error}, + Staking: pallet_staking::{default, OfflineWorker}, } ); diff --git a/frame/kton/Cargo.toml b/frame/balances/kton/Cargo.toml similarity index 68% rename from frame/kton/Cargo.toml rename to frame/balances/kton/Cargo.toml index 36aa409db..c66763920 100644 --- a/frame/kton/Cargo.toml +++ b/frame/balances/kton/Cargo.toml @@ -13,17 +13,16 @@ serde = { version = "1.0.101", optional = true } # github.com frame-support = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } frame-system = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -pallet-timestamp = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-runtime = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } # darwinia -darwinia-support = { default-features = false, path = "../support" } -ring = { package = "darwinia-balances", default-features = false, path = "../balances" } +darwinia-support = { default-features = false, path = "../../support" } [dev-dependencies] -runtime-io = { package = "sr-io", git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } -substrate-primitives = { git = "https://github.com/darwinia-network/substrate.git", branch = "darwinia-develop" } +sp-io = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-core = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-transaction-payment = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } [features] default = ["std"] @@ -34,12 +33,10 @@ std = [ "frame-support/std", "frame-system/std", - "pallet-timestamp/std", "sp-runtime/std", "sp-std/std", "darwinia-support/std", - "ring/std", ] # test transfer-fee = ["std"] diff --git a/frame/balances/kton/src/lib.rs b/frame/balances/kton/src/lib.rs new file mode 100644 index 000000000..f3876ef66 --- /dev/null +++ b/frame/balances/kton/src/lib.rs @@ -0,0 +1,822 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +#[cfg(test)] +mod mock; +#[cfg(test)] +mod tests; + +use codec::{Codec, Decode, Encode}; +use frame_support::{ + decl_error, decl_event, decl_module, decl_storage, + traits::{ + Currency, ExistenceRequirement, Get, Imbalance, ReservableCurrency, SignedImbalance, Time, TryDrop, + UpdateBalanceOutcome, VestingCurrency, + }, + weights::SimpleDispatchInfo, + Parameter, StorageValue, +}; +use frame_system::{self as system, ensure_root, ensure_signed, IsDeadAccount}; +use sp_runtime::{ + traits::{ + Bounded, CheckedAdd, CheckedSub, MaybeSerializeDeserialize, Member, One, Saturating, SimpleArithmetic, + StaticLookup, Zero, + }, + DispatchError, DispatchResult, RuntimeDebug, +}; +use sp_std::{cmp, fmt::Debug, mem, vec::Vec}; + +use self::imbalances::{NegativeImbalance, PositiveImbalance}; +use darwinia_support::{ + BalanceLock, Fee, LockIdentifier, LockableCurrency, WithdrawLock, WithdrawReason, WithdrawReasons, +}; + +type MomentOf = <::Time as Time>::Moment; +type RingBalance = <::RingCurrency as Currency<::AccountId>>::Balance; + +/// Struct to encode the vesting schedule of an individual account. +#[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, RuntimeDebug)] +pub struct VestingSchedule { + /// Locked amount at genesis. + pub locked: Balance, + /// Amount that gets unlocked every block after `starting_block`. + pub per_block: Balance, + /// Starting block for unlocking(vesting). + pub starting_block: BlockNumber, +} + +impl VestingSchedule { + /// Amount locked at block `n`. + pub fn locked_at(&self, n: BlockNumber) -> Balance + where + Balance: From, + { + // Number of blocks that count toward vesting + // Saturating to 0 when n < starting_block + let vested_block_count = n.saturating_sub(self.starting_block); + // Return amount that is still locked in vesting + if let Some(x) = Balance::from(vested_block_count).checked_mul(&self.per_block) { + self.locked.max(x) - x + } else { + Zero::zero() + } + } +} + +pub trait Trait: frame_system::Trait { + /// The balance of an account. + type Balance: Parameter + + Member + + SimpleArithmetic + + Codec + + Default + + Copy + + MaybeSerializeDeserialize + + Debug + + From; + + /// The overarching event type. + type Event: From> + Into<::Event>; + + // TODO doc + type RingCurrency: Currency; + // TODO doc + type TransferPayment: Fee>; + /// The fee required to make a transfer. + type TransferFee: Get>; + // TODO doc + type Time: Time; +} + +decl_event!( + pub enum Event where + ::AccountId, + ::Balance, + RingBalance = RingBalance + { + /// Transfer succeeded (from, to, value, fees). + Transfer(AccountId, AccountId, Balance, RingBalance), + /// A balance was set by root (who, free, reserved). + BalanceSet(AccountId, Balance, Balance), + } +); + +decl_error! { + pub enum Error for Module { + /// Vesting balance too high to send value + VestingBalance, + /// Account liquidity restrictions prevent withdrawal + LiquidityRestrictions, + /// Got an overflow after adding + Overflow, + /// Balance too low to send value + InsufficientBalance, + /// A vesting schedule already exists for this account + ExistingVestingSchedule, + /// Beneficiary account must pre-exist + DeadAccount, + } +} + +decl_storage! { + trait Store for Module as Balances { + /// The total units issued in the system. + pub TotalIssuance get(fn total_issuance) build(|config: &GenesisConfig| { + config.balances.iter().fold(Zero::zero(), |acc: T::Balance, &(_, n)| acc + n) + }): T::Balance; + + /// Information regarding the vesting of a given account. + pub Vesting get(fn vesting) build(|config: &GenesisConfig| { + // Generate initial vesting configuration + // * who - Account which we are generating vesting configuration for + // * begin - Block when the account will start to vest + // * length - Number of blocks from `begin` until fully vested + // * liquid - Number of units which can be spent before vesting begins + config.vesting.iter().filter_map(|&(ref who, begin, length, liquid)| { + let length = >::from(length); + + config.balances.iter() + .find(|&&(ref w, _)| w == who) + .map(|&(_, balance)| { + // Total genesis `balance` minus `liquid` equals funds locked for vesting + let locked = balance.saturating_sub(liquid); + // Number of units unlocked per block after `begin` + let per_block = locked / length.max(One::one()); + + (who.to_owned(), VestingSchedule { + locked: locked, + per_block: per_block, + starting_block: begin, + }) + }) + }).collect::>() + }): map T::AccountId => Option>; + + /// The 'free' balance of a given account. + /// + /// This is the only balance that matters in terms of most operations on tokens. It + /// alone is used to determine the balance when in the contract execution environment. When this + /// balance falls below the value of `ExistentialDeposit`, then the 'current account' is + /// deleted: specifically `FreeBalance`. Further, the `OnFreeBalanceZero` callback + /// is invoked, giving a chance to external modules to clean up data associated with + /// the deleted account. + /// + /// `frame_system::AccountNonce` is also deleted if `ReservedBalance` is also zero (it also gets + /// collapsed to zero if it ever becomes less than `ExistentialDeposit`. + pub FreeBalance get(fn free_balance) + build(|config: &GenesisConfig| config.balances.clone()): + map T::AccountId => T::Balance; + + /// The amount of the balance of a given account that is externally reserved; this can still get + /// slashed, but gets slashed last of all. + /// + /// This balance is a 'reserve' balance that other subsystems use in order to set aside tokens + /// that are still 'owned' by the account holder, but which are suspendable. + /// + /// When this balance falls below the value of `ExistentialDeposit`, then this 'reserve account' + /// is deleted: specifically, `ReservedBalance`. + /// + /// `frame_system::AccountNonce` is also deleted if `FreeBalance` is also zero (it also gets + /// collapsed to zero if it ever becomes less than `ExistentialDeposit`.) + pub ReservedBalance get(fn reserved_balance): map T::AccountId => T::Balance; + + /// Any liquidity locks on some account balances. + pub Locks get(fn locks): map T::AccountId => Vec>>; + } + add_extra_genesis { + config(balances): Vec<(T::AccountId, T::Balance)>; + config(vesting): Vec<(T::AccountId, T::BlockNumber, T::BlockNumber, T::Balance)>; + // ^^ begin, length, amount liquid at genesis + } +} + +decl_module! { + pub struct Module for enum Call where origin: T::Origin { + type Error = Error; + + /// The fee required to make a transfer. + const TransferFee: RingBalance = T::TransferFee::get(); + + fn deposit_event() = default; + + /// Transfer some liquid free balance to another account. + /// + /// `transfer` will set the `FreeBalance` of the sender and receiver. + /// It will decrease the total issuance of the system by the `TransferFee`. + /// If the sender's account is below the existential deposit as a result + /// of the transfer, the account will be reaped. + /// + /// The dispatch origin for this call must be `Signed` by the transactor. + /// + /// # + /// - Dependent on arguments but not critical, given proper implementations for + /// input config types. See related functions below. + /// - It contains a limited number of reads and writes internally and no complex computation. + /// + /// Related functions: + /// + /// - `ensure_can_withdraw` is always called internally but has a bounded complexity. + /// - Transferring balances to accounts that did not exist before will cause + /// `T::OnNewAccount::on_new_account` to be called. + /// - Removing enough funds from an account will trigger + /// `T::DustRemoval::on_unbalanced` and `T::OnFreeBalanceZero::on_free_balance_zero`. + /// - `transfer_keep_alive` works the same way as `transfer`, but has an additional + /// check that the transfer will not kill the origin account. + /// + /// # + #[weight = SimpleDispatchInfo::FixedNormal(1_000_000)] + pub fn transfer( + origin, + dest: ::Source, + #[compact] value: T::Balance + ) { + let transactor = ensure_signed(origin)?; + let dest = T::Lookup::lookup(dest)?; + >::transfer(&transactor, &dest, value, ExistenceRequirement::AllowDeath)?; + } + + /// Set the balances of a given account. + /// + /// This will alter `FreeBalance` and `ReservedBalance` in storage. it will + /// also decrease the total issuance of the system (`TotalIssuance`). + /// If the new free or reserved balance is below the existential deposit, + /// it will reset the account nonce (`frame_system::AccountNonce`). + /// + /// The dispatch origin for this call is `root`. + /// + /// # + /// - Independent of the arguments. + /// - Contains a limited number of reads and writes. + /// # + #[weight = SimpleDispatchInfo::FixedOperational(50_000)] + fn set_balance( + origin, + who: ::Source, + #[compact] new_free: T::Balance, + #[compact] new_reserved: T::Balance + ) { + ensure_root(origin)?; + let who = T::Lookup::lookup(who)?; + + let current_free = >::get(&who); + if new_free > current_free { + mem::drop(PositiveImbalance::::new(new_free - current_free)); + } else if new_free < current_free { + mem::drop(NegativeImbalance::::new(current_free - new_free)); + } + Self::set_free_balance(&who, new_free); + + let current_reserved = >::get(&who); + if new_reserved > current_reserved { + mem::drop(PositiveImbalance::::new(new_reserved - current_reserved)); + } else if new_reserved < current_reserved { + mem::drop(NegativeImbalance::::new(current_reserved - new_reserved)); + } + Self::set_reserved_balance(&who, new_reserved); + + Self::deposit_event(RawEvent::BalanceSet(who, new_free, new_reserved)); + } + + /// Exactly as `transfer`, except the origin must be root and the source account may be + /// specified. + #[weight = SimpleDispatchInfo::FixedNormal(1_000_000)] + pub fn force_transfer( + origin, + source: ::Source, + dest: ::Source, + #[compact] value: T::Balance + ) { + ensure_root(origin)?; + let source = T::Lookup::lookup(source)?; + let dest = T::Lookup::lookup(dest)?; + >::transfer(&source, &dest, value, ExistenceRequirement::AllowDeath)?; + } + } +} + +impl Module { + // PRIVATE MUTABLES + + /// Set the reserved balance of an account to some new value. Will enforce `ExistentialDeposit` + /// law, annulling the account as needed. + /// + /// Doesn't do any preparatory work for creating a new account, so should only be used when it + /// is known that the account already exists. + /// + /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that + /// the caller will do this. + fn set_reserved_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { + >::insert(who, balance); + UpdateBalanceOutcome::Updated + } + + /// Set the free balance of an account to some new value. Will enforce `ExistentialDeposit` + /// law, annulling the account as needed. + /// + /// Doesn't do any preparatory work for creating a new account, so should only be used when it + /// is known that the account already exists. + /// + /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that + /// the caller will do this. + fn set_free_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { + // Commented out for now - but consider it instructive. + // assert!(!Self::total_balance(who).is_zero()); + // assert!(Self::free_balance(who) > T::ExistentialDeposit::get()); + >::insert(who, balance); + UpdateBalanceOutcome::Updated + } +} + +// wrapping these imbalances in a private module is necessary to ensure absolute privacy +// of the inner member. +mod imbalances { + use sp_std::mem; + + use super::{Imbalance, Saturating, StorageValue, Trait, TryDrop, Zero}; + + /// Opaque, move-only struct with private fields that serves as a token denoting that + /// funds have been created without any equal and opposite accounting. + #[must_use] + pub struct PositiveImbalance(T::Balance); + + impl PositiveImbalance { + /// Create a new positive imbalance from a balance. + pub fn new(amount: T::Balance) -> Self { + PositiveImbalance(amount) + } + } + + /// Opaque, move-only struct with private fields that serves as a token denoting that + /// funds have been destroyed without any equal and opposite accounting. + #[must_use] + pub struct NegativeImbalance(T::Balance); + + impl NegativeImbalance { + /// Create a new negative imbalance from a balance. + pub fn new(amount: T::Balance) -> Self { + NegativeImbalance(amount) + } + } + + impl TryDrop for PositiveImbalance { + fn try_drop(self) -> Result<(), Self> { + self.drop_zero() + } + } + + impl Imbalance for PositiveImbalance { + type Opposite = NegativeImbalance; + + fn zero() -> Self { + Self(Zero::zero()) + } + fn drop_zero(self) -> Result<(), Self> { + if self.0.is_zero() { + Ok(()) + } else { + Err(self) + } + } + fn split(self, amount: T::Balance) -> (Self, Self) { + let first = self.0.min(amount); + let second = self.0 - first; + + mem::forget(self); + (Self(first), Self(second)) + } + fn merge(mut self, other: Self) -> Self { + self.0 = self.0.saturating_add(other.0); + mem::forget(other); + + self + } + fn subsume(&mut self, other: Self) { + self.0 = self.0.saturating_add(other.0); + mem::forget(other); + } + fn offset(self, other: Self::Opposite) -> Result { + let (a, b) = (self.0, other.0); + mem::forget((self, other)); + + if a >= b { + Ok(Self(a - b)) + } else { + Err(NegativeImbalance::new(b - a)) + } + } + fn peek(&self) -> T::Balance { + self.0.clone() + } + } + + impl TryDrop for NegativeImbalance { + fn try_drop(self) -> Result<(), Self> { + self.drop_zero() + } + } + + impl Imbalance for NegativeImbalance { + type Opposite = PositiveImbalance; + + fn zero() -> Self { + Self(Zero::zero()) + } + fn drop_zero(self) -> Result<(), Self> { + if self.0.is_zero() { + Ok(()) + } else { + Err(self) + } + } + fn split(self, amount: T::Balance) -> (Self, Self) { + let first = self.0.min(amount); + let second = self.0 - first; + + mem::forget(self); + (Self(first), Self(second)) + } + fn merge(mut self, other: Self) -> Self { + self.0 = self.0.saturating_add(other.0); + mem::forget(other); + + self + } + fn subsume(&mut self, other: Self) { + self.0 = self.0.saturating_add(other.0); + mem::forget(other); + } + fn offset(self, other: Self::Opposite) -> Result { + let (a, b) = (self.0, other.0); + mem::forget((self, other)); + + if a >= b { + Ok(Self(a - b)) + } else { + Err(PositiveImbalance::new(b - a)) + } + } + fn peek(&self) -> T::Balance { + self.0.clone() + } + } + + impl Drop for PositiveImbalance { + /// Basic drop handler will just square up the total issuance. + fn drop(&mut self) { + >::mutate(|v| *v = v.saturating_add(self.0)); + } + } + + impl Drop for NegativeImbalance { + /// Basic drop handler will just square up the total issuance. + fn drop(&mut self) { + >::mutate(|v| *v = v.saturating_sub(self.0)); + } + } +} + +impl Currency for Module +where + T::Balance: MaybeSerializeDeserialize + Debug, +{ + type Balance = T::Balance; + type PositiveImbalance = PositiveImbalance; + type NegativeImbalance = NegativeImbalance; + + fn total_balance(who: &T::AccountId) -> Self::Balance { + Self::free_balance(who) + Self::reserved_balance(who) + } + + fn can_slash(who: &T::AccountId, value: Self::Balance) -> bool { + Self::free_balance(who) >= value + } + + fn total_issuance() -> Self::Balance { + >::get() + } + + fn minimum_balance() -> Self::Balance { + Zero::zero() + } + + fn burn(mut amount: Self::Balance) -> Self::PositiveImbalance { + >::mutate(|issued| { + *issued = issued.checked_sub(&amount).unwrap_or_else(|| { + amount = *issued; + Zero::zero() + }); + }); + PositiveImbalance::new(amount) + } + + fn issue(mut amount: Self::Balance) -> Self::NegativeImbalance { + >::mutate(|issued| { + *issued = issued.checked_add(&amount).unwrap_or_else(|| { + amount = Self::Balance::max_value() - *issued; + Self::Balance::max_value() + }) + }); + NegativeImbalance::new(amount) + } + + fn free_balance(who: &T::AccountId) -> Self::Balance { + >::get(who) + } + + // # + // Despite iterating over a list of locks, they are limited by the number of + // lock IDs, which means the number of runtime modules that intend to use and create locks. + // # + fn ensure_can_withdraw( + who: &T::AccountId, + _amount: T::Balance, + reasons: WithdrawReasons, + new_balance: T::Balance, + ) -> DispatchResult { + if reasons.intersects(WithdrawReason::Reserve | WithdrawReason::Transfer) + && Self::vesting_balance(who) > new_balance + { + Err(Error::::VestingBalance)? + } + let locks = Self::locks(who); + if locks.is_empty() { + return Ok(()); + } + + let now = T::Time::now(); + if locks + .into_iter() + .all(|l| l.withdraw_lock.can_withdraw(now, new_balance) || !l.reasons.intersects(reasons)) + { + Ok(()) + } else { + Err(Error::::LiquidityRestrictions.into()) + } + } + + fn transfer( + transactor: &T::AccountId, + dest: &T::AccountId, + value: Self::Balance, + existence_requirement: ExistenceRequirement, + ) -> DispatchResult { + if transactor == dest { + return Ok(()); + } + + let transfer_fee = T::TransferFee::get(); + + let new_from_kton = Self::free_balance(transactor) + .checked_sub(&value) + .ok_or(Error::::InsufficientBalance)?; + Self::ensure_can_withdraw(transactor, value, WithdrawReason::Transfer.into(), new_from_kton)?; + + let new_to_kton = Self::free_balance(dest) + .checked_add(&value) + .ok_or(Error::::Overflow)?; + + T::TransferPayment::pay_transfer_fee(transactor, transfer_fee, existence_requirement)?; + Self::set_free_balance(transactor, new_from_kton); + // Take action on the set_free_balance call. + // This will emit events that _resulted_ from the transfer. + Self::set_free_balance(dest, new_to_kton); + + // Emit transfer event. + Self::deposit_event(RawEvent::Transfer( + transactor.to_owned(), + dest.to_owned(), + value, + transfer_fee, + )); + + Ok(()) + } + + fn slash(who: &T::AccountId, value: Self::Balance) -> (Self::NegativeImbalance, Self::Balance) { + let free_balance = Self::free_balance(who); + let free_slash = cmp::min(free_balance, value); + + Self::set_free_balance(who, free_balance - free_slash); + let remaining_slash = value - free_slash; + // NOTE: `slash()` prefers free balance, but assumes that reserve balance can be drawn + // from in extreme circumstances. `can_slash()` should be used prior to `slash()` to avoid having + // to draw from reserved funds, however we err on the side of punishment if things are inconsistent + // or `can_slash` wasn't used appropriately. + if !remaining_slash.is_zero() { + let reserved_balance = Self::reserved_balance(who); + let reserved_slash = cmp::min(reserved_balance, remaining_slash); + Self::set_reserved_balance(who, reserved_balance - reserved_slash); + ( + NegativeImbalance::new(free_slash + reserved_slash), + remaining_slash - reserved_slash, + ) + } else { + (NegativeImbalance::new(value), Zero::zero()) + } + } + + fn deposit_into_existing( + who: &T::AccountId, + value: Self::Balance, + ) -> Result { + if Self::total_balance(who).is_zero() { + Err(Error::::DeadAccount)? + } + Self::set_free_balance(who, Self::free_balance(who) + value); + Ok(PositiveImbalance::new(value)) + } + + fn deposit_creating(who: &T::AccountId, value: Self::Balance) -> Self::PositiveImbalance { + let (imbalance, _) = Self::make_free_balance_be(who, Self::free_balance(who) + value); + if let SignedImbalance::Positive(p) = imbalance { + p + } else { + // Impossible, but be defensive. + Self::PositiveImbalance::zero() + } + } + + fn withdraw( + who: &T::AccountId, + value: Self::Balance, + reasons: WithdrawReasons, + _liveness: ExistenceRequirement, + ) -> Result { + let old_balance = Self::free_balance(who); + if let Some(new_balance) = old_balance.checked_sub(&value) { + Self::ensure_can_withdraw(who, value, reasons, new_balance)?; + Self::set_free_balance(who, new_balance); + Ok(NegativeImbalance::new(value)) + } else { + Err(Error::::InsufficientBalance)? + } + } + + fn make_free_balance_be( + who: &T::AccountId, + balance: Self::Balance, + ) -> ( + SignedImbalance, + UpdateBalanceOutcome, + ) { + let original = Self::free_balance(who); + let imbalance = if original <= balance { + SignedImbalance::Positive(PositiveImbalance::new(balance - original)) + } else { + SignedImbalance::Negative(NegativeImbalance::new(original - balance)) + }; + let outcome = { + Self::set_free_balance(who, balance); + UpdateBalanceOutcome::Updated + }; + + (imbalance, outcome) + } +} + +impl ReservableCurrency for Module +where + T::Balance: MaybeSerializeDeserialize + Debug, +{ + fn can_reserve(who: &T::AccountId, value: Self::Balance) -> bool { + Self::free_balance(who) + .checked_sub(&value) + .map_or(false, |new_balance| { + Self::ensure_can_withdraw(who, value, WithdrawReason::Reserve.into(), new_balance).is_ok() + }) + } + + fn slash_reserved(who: &T::AccountId, value: Self::Balance) -> (Self::NegativeImbalance, Self::Balance) { + let b = Self::reserved_balance(who); + let slash = cmp::min(b, value); + // underflow should never happen, but it if does, there's nothing to be done here. + Self::set_reserved_balance(who, b - slash); + (NegativeImbalance::new(slash), value - slash) + } + + fn reserved_balance(who: &T::AccountId) -> Self::Balance { + >::get(who) + } + + fn reserve(who: &T::AccountId, value: Self::Balance) -> Result<(), DispatchError> { + let b = Self::free_balance(who); + if b < value { + Err(Error::::InsufficientBalance)? + } + let new_balance = b - value; + Self::ensure_can_withdraw(who, value, WithdrawReason::Reserve.into(), new_balance)?; + Self::set_reserved_balance(who, Self::reserved_balance(who) + value); + Self::set_free_balance(who, new_balance); + Ok(()) + } + + fn unreserve(who: &T::AccountId, value: Self::Balance) -> Self::Balance { + let b = Self::reserved_balance(who); + let actual = cmp::min(b, value); + Self::set_free_balance(who, Self::free_balance(who) + actual); + Self::set_reserved_balance(who, b - actual); + value - actual + } + + fn repatriate_reserved( + slashed: &T::AccountId, + beneficiary: &T::AccountId, + value: Self::Balance, + ) -> Result { + if Self::total_balance(beneficiary).is_zero() { + Err(Error::::DeadAccount)? + } + let b = Self::reserved_balance(slashed); + let slash = cmp::min(b, value); + Self::set_free_balance(beneficiary, Self::free_balance(beneficiary) + slash); + Self::set_reserved_balance(slashed, b - slash); + Ok(value - slash) + } +} + +impl LockableCurrency for Module +where + T::Balance: MaybeSerializeDeserialize + Debug, +{ + type Moment = MomentOf; + + fn set_lock( + id: LockIdentifier, + who: &T::AccountId, + withdraw_lock: WithdrawLock, + reasons: WithdrawReasons, + ) { + let mut new_lock = Some(BalanceLock { + id, + withdraw_lock, + reasons, + }); + let mut locks = Self::locks(who) + .into_iter() + .filter_map(|l| if l.id == id { new_lock.take() } else { Some(l) }) + .collect::>(); + if let Some(lock) = new_lock { + locks.push(lock) + } + >::insert(who, locks); + } + + fn remove_lock(id: LockIdentifier, who: &T::AccountId) { + let locks = Self::locks(who) + .into_iter() + .filter_map(|l| if l.id != id { Some(l) } else { None }) + .collect::>(); + >::insert(who, locks); + } +} + +impl VestingCurrency for Module +where + T::Balance: MaybeSerializeDeserialize + Debug, +{ + type Moment = T::BlockNumber; + + /// Get the amount that is currently being vested and cannot be transferred out of this account. + fn vesting_balance(who: &T::AccountId) -> T::Balance { + if let Some(v) = Self::vesting(who) { + Self::free_balance(who).min(v.locked_at(>::block_number())) + } else { + Zero::zero() + } + } + + /// Adds a vesting schedule to a given account. + /// + /// If there already exists a vesting schedule for the given account, an `Err` is returned + /// and nothing is updated. + fn add_vesting_schedule( + who: &T::AccountId, + locked: T::Balance, + per_block: T::Balance, + starting_block: T::BlockNumber, + ) -> DispatchResult { + if >::exists(who) { + Err(Error::::ExistingVestingSchedule)? + } + let vesting_schedule = VestingSchedule { + locked, + per_block, + starting_block, + }; + >::insert(who, vesting_schedule); + Ok(()) + } + + /// Remove a vesting schedule for a given account. + fn remove_vesting_schedule(who: &T::AccountId) { + >::remove(who); + } +} + +impl IsDeadAccount for Module +where + T::Balance: MaybeSerializeDeserialize + Debug, +{ + fn is_dead_account(who: &T::AccountId) -> bool { + T::RingCurrency::total_balance(who).is_zero() + } +} diff --git a/frame/kton/src/mock.rs b/frame/balances/kton/src/mock.rs similarity index 100% rename from frame/kton/src/mock.rs rename to frame/balances/kton/src/mock.rs diff --git a/frame/kton/src/tests.rs b/frame/balances/kton/src/tests.rs similarity index 100% rename from frame/kton/src/tests.rs rename to frame/balances/kton/src/tests.rs diff --git a/frame/balances/Cargo.toml b/frame/balances/ring/Cargo.toml similarity index 84% rename from frame/balances/Cargo.toml rename to frame/balances/ring/Cargo.toml index e143c1870..fc6ee57b5 100644 --- a/frame/balances/Cargo.toml +++ b/frame/balances/ring/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "darwinia-balances" +name = "darwinia-ring" version = "0.4.0" authors = ["Darwinia Network "] edition = "2018" @@ -13,12 +13,11 @@ serde = { version = "1.0.101", optional = true } # github.com frame-support = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } frame-system = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -pallet-timestamp = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-runtime = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } # darwinia -darwinia-support = { path = "../support", default-features = false } +darwinia-support = { default-features = false, path = "../../support" } [dev-dependencies] sp-io = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } @@ -34,7 +33,6 @@ std = [ "frame-support/std", "frame-system/std", - "pallet-timestamp/std", "sp-runtime/std", "sp-std/std", diff --git a/frame/balances/src/lib.rs b/frame/balances/ring/src/lib.rs similarity index 96% rename from frame/balances/src/lib.rs rename to frame/balances/ring/src/lib.rs index e212a4abd..206308c68 100644 --- a/frame/balances/src/lib.rs +++ b/frame/balances/ring/src/lib.rs @@ -159,12 +159,17 @@ #![cfg_attr(not(feature = "std"), no_std)] +#[cfg(test)] +mod mock; +#[cfg(test)] +mod tests; + use codec::{Codec, Decode, Encode}; use frame_support::{ decl_error, decl_event, decl_module, decl_storage, traits::{ Currency, ExistenceRequirement, Get, Imbalance, OnFreeBalanceZero, OnUnbalanced, ReservableCurrency, - SignedImbalance, TryDrop, UpdateBalanceOutcome, VestingCurrency, + SignedImbalance, Time, TryDrop, UpdateBalanceOutcome, VestingCurrency, }, weights::SimpleDispatchInfo, Parameter, StorageValue, @@ -177,18 +182,45 @@ use sp_runtime::{ }, DispatchError, DispatchResult, RuntimeDebug, }; -use sp_std::prelude::*; -use sp_std::{cmp, fmt::Debug, mem, result}; +use sp_std::{cmp, fmt::Debug, mem, prelude::*, result}; -#[cfg(test)] -mod mock; -#[cfg(test)] -mod tests; +use self::imbalances::{NegativeImbalance, PositiveImbalance}; +use darwinia_support::{ + BalanceLock, Fee, LockIdentifier, LockableCurrency, WithdrawLock, WithdrawReason, WithdrawReasons, +}; + +type MomentOf = <>::Time as Time>::Moment; -pub use self::imbalances::{NegativeImbalance, PositiveImbalance}; -use darwinia_support::{BalanceLock, LockIdentifier, LockableCurrency, WithdrawLock, WithdrawReason, WithdrawReasons}; +/// Struct to encode the vesting schedule of an individual account. +#[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, RuntimeDebug)] +pub struct VestingSchedule { + /// Locked amount at genesis. + pub locked: Balance, + /// Amount that gets unlocked every block after `starting_block`. + pub per_block: Balance, + /// Starting block for unlocking(vesting). + pub starting_block: BlockNumber, +} -pub trait Subtrait: frame_system::Trait + pallet_timestamp::Trait { +impl VestingSchedule { + /// Amount locked at block `n`. + pub fn locked_at(&self, n: BlockNumber) -> Balance + where + Balance: From, + { + // Number of blocks that count toward vesting + // Saturating to 0 when n < starting_block + let vested_block_count = n.saturating_sub(self.starting_block); + // Return amount that is still locked in vesting + if let Some(x) = Balance::from(vested_block_count).checked_mul(&self.per_block) { + self.locked.max(x) - x + } else { + Zero::zero() + } + } +} + +pub trait Subtrait: frame_system::Trait { /// The balance of an account. type Balance: Parameter + Member @@ -217,9 +249,12 @@ pub trait Subtrait: frame_system::Trait + pallet_ /// The fee required to create an account. type CreationFee: Get; + + // TODO doc + type Time: Time; } -pub trait Trait: frame_system::Trait + pallet_timestamp::Trait { +pub trait Trait: frame_system::Trait { /// The balance of an account. type Balance: Parameter + Member @@ -258,6 +293,9 @@ pub trait Trait: frame_system::Trait + pallet_tim /// The fee required to create an account. type CreationFee: Get; + + // TODO doc + type Time: Time; } impl, I: Instance> Subtrait for T { @@ -267,6 +305,8 @@ impl, I: Instance> Subtrait for T { type ExistentialDeposit = T::ExistentialDeposit; type TransferFee = T::TransferFee; type CreationFee = T::CreationFee; + + type Time = T::Time; } decl_event!( @@ -308,35 +348,6 @@ decl_error! { } } -/// Struct to encode the vesting schedule of an individual account. -#[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, RuntimeDebug)] -pub struct VestingSchedule { - /// Locked amount at genesis. - pub locked: Balance, - /// Amount that gets unlocked every block after `starting_block`. - pub per_block: Balance, - /// Starting block for unlocking(vesting). - pub starting_block: BlockNumber, -} - -impl VestingSchedule { - /// Amount locked at block `n`. - pub fn locked_at(&self, n: BlockNumber) -> Balance - where - Balance: From, - { - // Number of blocks that count toward vesting - // Saturating to 0 when n < starting_block - let vested_block_count = n.saturating_sub(self.starting_block); - // Return amount that is still locked in vesting - if let Some(x) = Balance::from(vested_block_count).checked_mul(&self.per_block) { - self.locked.max(x) - x - } else { - Zero::zero() - } - } -} - decl_storage! { trait Store for Module, I: Instance=DefaultInstance> as Balances { /// The total units issued in the system. @@ -362,7 +373,7 @@ decl_storage! { // Number of units unlocked per block after `begin` let per_block = locked / length.max(One::one()); - (who.clone(), VestingSchedule { + (who.to_owned(), VestingSchedule { locked: locked, per_block: per_block, starting_block: begin, @@ -400,7 +411,7 @@ decl_storage! { pub ReservedBalance get(fn reserved_balance): map T::AccountId => T::Balance; /// Any liquidity locks on some account balances. - pub Locks get(fn locks): map T::AccountId => Vec>; + pub Locks get(fn locks): map T::AccountId => Vec>>; } add_extra_genesis { config(balances): Vec<(T::AccountId, T::Balance)>; @@ -579,7 +590,7 @@ impl, I: Instance> Module { /// /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that /// the caller will do this. - pub fn set_free_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { + fn set_free_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { // Commented out for now - but consider it instructive. // assert!(!Self::total_balance(who).is_zero()); // assert!(Self::free_balance(who) > T::ExistentialDeposit::get()); @@ -598,7 +609,7 @@ impl, I: Instance> Module { /// This just calls appropriate hooks. It doesn't (necessarily) make any state changes. fn new_account(who: &T::AccountId, balance: T::Balance) { T::OnNewAccount::on_new_account(&who); - Self::deposit_event(RawEvent::NewAccount(who.clone(), balance.clone())); + Self::deposit_event(RawEvent::NewAccount(who.to_owned(), balance)); } /// Unregister an account. @@ -606,7 +617,7 @@ impl, I: Instance> Module { /// This just removes the nonce and leaves an event. fn reap_account(who: &T::AccountId, dust: T::Balance) { >::remove(who); - Self::deposit_event(RawEvent::ReapedAccount(who.clone(), dust)); + Self::deposit_event(RawEvent::ReapedAccount(who.to_owned(), dust)); } /// Account's free balance has dropped below existential deposit. Kill its @@ -665,7 +676,7 @@ impl, I: Instance> Module { // wrapping these imbalances in a private module is necessary to ensure absolute privacy // of the inner member. -pub mod imbalances { +mod imbalances { use super::{ result, DefaultInstance, Imbalance, Instance, Saturating, StorageValue, Subtrait, Trait, TryDrop, Zero, }; @@ -854,11 +865,6 @@ impl, I: Instance> frame_system::Trait for ElevatedTrait { type Version = T::Version; type ModuleToIndex = T::ModuleToIndex; } -impl, I: Instance> pallet_timestamp::Trait for ElevatedTrait { - type Moment = T::Moment; - type OnTimestampSet = (); - type MinimumPeriod = T::MinimumPeriod; -} impl, I: Instance> Trait for ElevatedTrait { type Balance = T::Balance; type OnFreeBalanceZero = T::OnFreeBalanceZero; @@ -869,6 +875,8 @@ impl, I: Instance> Trait for ElevatedTrait { type ExistentialDeposit = T::ExistentialDeposit; type TransferFee = T::TransferFee; type CreationFee = T::CreationFee; + + type Time = T::Time; } impl, I: Instance> Currency for Module @@ -939,7 +947,7 @@ where return Ok(()); } - let now = >::now(); + let now = T::Time::now(); if locks .into_iter() .all(|l| l.withdraw_lock.can_withdraw(now, new_balance) || !l.reasons.intersects(reasons)) @@ -991,7 +999,7 @@ where } // Emit transfer event. - Self::deposit_event(RawEvent::Transfer(transactor.clone(), dest.clone(), value, fee)); + Self::deposit_event(RawEvent::Transfer(transactor.to_owned(), dest.to_owned(), value, fee)); // Take action on the set_free_balance call. // This will emit events that _resulted_ from the transfer. @@ -1183,7 +1191,7 @@ impl, I: Instance> LockableCurrency for Module where T::Balance: MaybeSerializeDeserialize + Debug, { - type Moment = T::Moment; + type Moment = MomentOf; fn set_lock( id: LockIdentifier, @@ -1266,3 +1274,25 @@ where Self::total_balance(who).is_zero() } } + +impl, I: Instance> Fee for Module { + fn pay_transfer_fee( + transactor: &T::AccountId, + transfer_fee: T::Balance, + existence_requirement: ExistenceRequirement, + ) -> DispatchResult { + let new_balance = Self::free_balance(transactor) + .checked_sub(&transfer_fee) + .ok_or(Error::::InsufficientBalance)?; + + if existence_requirement == ExistenceRequirement::KeepAlive && new_balance < T::ExistentialDeposit::get() { + Err(Error::::KeepAlive)?; + } + Self::ensure_can_withdraw(transactor, transfer_fee, WithdrawReason::Fee.into(), new_balance)?; + + Self::set_free_balance(transactor, new_balance); + T::TransferPayment::on_unbalanced(NegativeImbalance::new(transfer_fee)); + + Ok(()) + } +} diff --git a/frame/balances/src/mock.rs b/frame/balances/ring/src/mock.rs similarity index 100% rename from frame/balances/src/mock.rs rename to frame/balances/ring/src/mock.rs diff --git a/frame/balances/src/tests.rs b/frame/balances/ring/src/tests.rs similarity index 100% rename from frame/balances/src/tests.rs rename to frame/balances/ring/src/tests.rs diff --git a/frame/kton/src/lib.rs b/frame/kton/src/lib.rs deleted file mode 100644 index 88928b782..000000000 --- a/frame/kton/src/lib.rs +++ /dev/null @@ -1,634 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std)] - -#[allow(unused)] -#[cfg(all(feature = "std", test))] -mod mock; -#[cfg(all(feature = "std", test))] -mod tests; - -use frame_support::{ - decl_module, decl_storage, - traits::{ - Currency, ExistenceRequirement, Get, Imbalance, OnUnbalanced, SignedImbalance, TryDrop, UpdateBalanceOutcome, - }, - weights::SimpleDispatchInfo, - StorageMap, StorageValue, -}; -use frame_system::{ensure_root, ensure_signed}; -use sp_runtime::{ - traits::{ - Bounded, CheckedAdd, CheckedSub, MaybeSerializeDeserialize, One, SaturatedConversion, Saturating, StaticLookup, - Zero, - }, - DispatchResult, -}; -#[cfg(not(feature = "std"))] -use sp_std::borrow::ToOwned; -use sp_std::{cmp, fmt::Debug, mem, vec::Vec}; - -use darwinia_support::{BalanceLock, LockIdentifier, LockableCurrency, WithdrawLock, WithdrawReason, WithdrawReasons}; -//use imbalances::{NegativeImbalance, PositiveImbalance}; -use ring::{imbalances::NegativeImbalance as RingNegativeImbalance, VestingSchedule}; - -pub trait Trait: ring::Trait {} - -decl_storage! { - trait Store for Module as Kton { - /// The total units issued in the system. - pub TotalIssuance get(fn total_issuance) build(|config: &GenesisConfig| { - config.balances.iter().fold(Zero::zero(), |acc: T::Balance, &(_, n)| acc + n) - }): T::Balance; - - /// Information regarding the vesting of a given account. - pub Vesting get(fn vesting) build(|config: &GenesisConfig| { - // Generate initial vesting configuration - // * who - Account which we are generating vesting configuration for - // * begin - Block when the account will start to vest - // * length - Number of blocks from `begin` until fully vested - // * liquid - Number of units which can be spent before vesting begins - config.vesting.iter().filter_map(|&(ref who, begin, length, liquid)| { - let length = >::from(length); - - config.balances.iter() - .find(|&&(ref w, _)| w == who) - .map(|&(_, balance)| { - // Total genesis `balance` minus `liquid` equals funds locked for vesting - let locked = balance.saturating_sub(liquid); - // Number of units unlocked per block after `begin` - let per_block = locked / length.max(One::one()); - - (who.clone(), VestingSchedule { - locked: locked, - per_block: per_block, - starting_block: begin, - }) - }) - }).collect::>() - }): map T::AccountId => Option>; - - /// The 'free' balance of a given account. - /// - /// This is the only balance that matters in terms of most operations on tokens. It - /// alone is used to determine the balance when in the contract execution environment. When this - /// balance falls below the value of `ExistentialDeposit`, then the 'current account' is - /// deleted: specifically `FreeBalance`. Further, the `OnFreeBalanceZero` callback - /// is invoked, giving a chance to external modules to clean up data associated with - /// the deleted account. - /// - /// `frame_system::AccountNonce` is also deleted if `ReservedBalance` is also zero (it also gets - /// collapsed to zero if it ever becomes less than `ExistentialDeposit`. - pub FreeBalance get(fn free_balance) build(|config: &GenesisConfig| config.balances.clone()): - map T::AccountId => T::Balance; - - /// The amount of the balance of a given account that is externally reserved; this can still get - /// slashed, but gets slashed last of all. - /// - /// This balance is a 'reserve' balance that other subsystems use in order to set aside tokens - /// that are still 'owned' by the account holder, but which are suspendable. - /// - /// When this balance falls below the value of `ExistentialDeposit`, then this 'reserve account' - /// is deleted: specifically, `ReservedBalance`. - /// - /// `frame_system::AccountNonce` is also deleted if `FreeBalance` is also zero (it also gets - /// collapsed to zero if it ever becomes less than `ExistentialDeposit`.) - pub ReservedBalance get(fn reserved_balance): map T::AccountId => T::Balance; - - /// Any liquidity locks on some account balances. - pub Locks get(fn locks): map T::AccountId => Vec>; - } - add_extra_genesis { - config(balances): Vec<(T::AccountId, T::Balance)>; - config(vesting): Vec<(T::AccountId, T::BlockNumber, T::BlockNumber, T::Balance)>; - // ^^ begin, length, amount liquid at genesis - } -} - -decl_module! { - pub struct Module for enum Call where origin: T::Origin { -// type Error = ::Error; - -// fn deposit_event() = default; - - /// Transfer some liquid free balance to another account. - /// - /// `transfer` will set the `FreeBalance` of the sender and receiver. - /// It will decrease the total issuance of the system by the `TransferFee`. - /// If the sender's account is below the existential deposit as a result - /// of the transfer, the account will be reaped. - /// - /// The dispatch origin for this call must be `Signed` by the transactor. - /// - /// # - /// - Dependent on arguments but not critical, given proper implementations for - /// input config types. See related functions below. - /// - It contains a limited number of reads and writes internally and no complex computation. - /// - /// Related functions: - /// - /// - `ensure_can_withdraw` is always called internally but has a bounded complexity. - /// - Transferring balances to accounts that did not exist before will cause - /// `T::OnNewAccount::on_new_account` to be called. - /// - Removing enough funds from an account will trigger - /// `T::DustRemoval::on_unbalanced` and `T::OnFreeBalanceZero::on_free_balance_zero`. - /// - `transfer_keep_alive` works the same way as `transfer`, but has an additional - /// check that the transfer will not kill the origin account. - /// - /// # - #[weight = SimpleDispatchInfo::FixedNormal(1_000_000)] - pub fn transfer( - origin, - dest: ::Source, - #[compact] value: T::Balance - ) { -// let transactor = ensure_signed(origin)?; -// let dest = T::Lookup::lookup(dest)?; -// >::transfer(&transactor, &dest, value, ExistenceRequirement::AllowDeath)?; - } - - /// Set the balances of a given account. - /// - /// This will alter `FreeBalance` and `ReservedBalance` in storage. it will - /// also decrease the total issuance of the system (`TotalIssuance`). - /// If the new free or reserved balance is below the existential deposit, - /// it will reset the account nonce (`frame_system::AccountNonce`). - /// - /// The dispatch origin for this call is `root`. - /// - /// # - /// - Independent of the arguments. - /// - Contains a limited number of reads and writes. - /// # - #[weight = SimpleDispatchInfo::FixedOperational(50_000)] - fn set_balance( - origin, - who: ::Source, - #[compact] new_free: T::Balance, - #[compact] new_reserved: T::Balance - ) { -// ensure_root(origin)?; -// let who = T::Lookup::lookup(who)?; -// -// let current_free = >::get(&who); -// if new_free > current_free { -// mem::drop(PositiveImbalance::::new(new_free - current_free)); -// } else if new_free < current_free { -// mem::drop(NegativeImbalance::::new(current_free - new_free)); -// } -// Self::set_free_balance(&who, new_free); -// -// let current_reserved = >::get(&who); -// if new_reserved > current_reserved { -// mem::drop(PositiveImbalance::::new(new_reserved - current_reserved)); -// } else if new_reserved < current_reserved { -// mem::drop(NegativeImbalance::::new(current_reserved - new_reserved)); -// } -// Self::set_reserved_balance(&who, new_reserved); - } - - /// Exactly as `transfer`, except the origin must be root and the source account may be - /// specified. - #[weight = SimpleDispatchInfo::FixedNormal(1_000_000)] - pub fn force_transfer( - origin, - source: ::Source, - dest: ::Source, - #[compact] value: T::Balance - ) { -// ensure_root(origin)?; -// let source = T::Lookup::lookup(source)?; -// let dest = T::Lookup::lookup(dest)?; -// >::transfer(&source, &dest, value, ExistenceRequirement::AllowDeath)?; - } - } -} - -//impl Module { -// // PUBLIC IMMUTABLES -// -// /// Get the amount that is currently being vested and cannot be transferred out of this account. -// pub fn vesting_balance(who: &T::AccountId) -> T::Balance { -// if let Some(v) = Self::vesting(who) { -// Self::free_balance(who).min(v.locked_at(>::block_number())) -// } else { -// Zero::zero() -// } -// } -// -// // PRIVATE MUTABLES -// -// /// Set the reserved balance of an account to some new value. Will enforce `ExistentialDeposit` -// /// law, annulling the account as needed. -// /// -// /// Doesn't do any preparatory work for creating a new account, so should only be used when it -// /// is known that the account already exists. -// /// -// /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that -// /// the caller will do this. -// fn set_reserved_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { -// >::insert(who, balance); -// UpdateBalanceOutcome::Updated -// } -// -// /// Set the free balance of an account to some new value. Will enforce `ExistentialDeposit` -// /// law, annulling the account as needed. -// /// -// /// Doesn't do any preparatory work for creating a new account, so should only be used when it -// /// is known that the account already exists. -// /// -// /// NOTE: LOW-LEVEL: This will not attempt to maintain total issuance. It is expected that -// /// the caller will do this. -// fn set_free_balance(who: &T::AccountId, balance: T::Balance) -> UpdateBalanceOutcome { -// // Commented out for now - but consider it instructive. -// // assert!(!Self::total_balance(who).is_zero()); -// >::insert(who, balance); -// UpdateBalanceOutcome::Updated -// } -//} -// -//// wrapping these imbalances in a private module is necessary to ensure absolute privacy -//// of the inner member. -//mod imbalances { -// use sp_std::mem; -// -// use crate::{Imbalance, Saturating, StorageValue, Trait, TryDrop, Zero}; -// -// /// Opaque, move-only struct with private fields that serves as a token denoting that -// /// funds have been created without any equal and opposite accounting. -// #[must_use] -// pub struct PositiveImbalance(T::Balance); -// -// impl PositiveImbalance { -// /// Create a new positive imbalance from a balance. -// pub fn new(amount: T::Balance) -> Self { -// PositiveImbalance(amount) -// } -// } -// -// /// Opaque, move-only struct with private fields that serves as a token denoting that -// /// funds have been destroyed without any equal and opposite accounting. -// #[must_use] -// pub struct NegativeImbalance(T::Balance); -// -// impl NegativeImbalance { -// /// Create a new negative imbalance from a balance. -// pub fn new(amount: T::Balance) -> Self { -// NegativeImbalance(amount) -// } -// } -// -// impl TryDrop for PositiveImbalance { -// fn try_drop(self) -> Result<(), Self> { -// self.drop_zero() -// } -// } -// -// impl Imbalance for PositiveImbalance { -// type Opposite = NegativeImbalance; -// -// fn zero() -> Self { -// Self(Zero::zero()) -// } -// fn drop_zero(self) -> Result<(), Self> { -// if self.0.is_zero() { -// Ok(()) -// } else { -// Err(self) -// } -// } -// fn split(self, amount: T::Balance) -> (Self, Self) { -// let first = self.0.min(amount); -// let second = self.0 - first; -// -// mem::forget(self); -// (Self(first), Self(second)) -// } -// fn merge(mut self, other: Self) -> Self { -// self.0 = self.0.saturating_add(other.0); -// mem::forget(other); -// -// self -// } -// fn subsume(&mut self, other: Self) { -// self.0 = self.0.saturating_add(other.0); -// mem::forget(other); -// } -// fn offset(self, other: Self::Opposite) -> Result { -// let (a, b) = (self.0, other.0); -// mem::forget((self, other)); -// -// if a >= b { -// Ok(Self(a - b)) -// } else { -// Err(NegativeImbalance::new(b - a)) -// } -// } -// fn peek(&self) -> T::Balance { -// self.0.clone() -// } -// } -// -// impl TryDrop for NegativeImbalance { -// fn try_drop(self) -> Result<(), Self> { -// self.drop_zero() -// } -// } -// -// impl Imbalance for NegativeImbalance { -// type Opposite = PositiveImbalance; -// -// fn zero() -> Self { -// Self(Zero::zero()) -// } -// fn drop_zero(self) -> Result<(), Self> { -// if self.0.is_zero() { -// Ok(()) -// } else { -// Err(self) -// } -// } -// fn split(self, amount: T::Balance) -> (Self, Self) { -// let first = self.0.min(amount); -// let second = self.0 - first; -// -// mem::forget(self); -// (Self(first), Self(second)) -// } -// fn merge(mut self, other: Self) -> Self { -// self.0 = self.0.saturating_add(other.0); -// mem::forget(other); -// -// self -// } -// fn subsume(&mut self, other: Self) { -// self.0 = self.0.saturating_add(other.0); -// mem::forget(other); -// } -// fn offset(self, other: Self::Opposite) -> Result { -// let (a, b) = (self.0, other.0); -// mem::forget((self, other)); -// -// if a >= b { -// Ok(Self(a - b)) -// } else { -// Err(PositiveImbalance::new(b - a)) -// } -// } -// fn peek(&self) -> T::Balance { -// self.0.clone() -// } -// } -// -// impl Drop for PositiveImbalance { -// /// Basic drop handler will just square up the total issuance. -// fn drop(&mut self) { -// >::mutate(|v| *v = v.saturating_add(self.0)); -// } -// } -// -// impl Drop for NegativeImbalance { -// /// Basic drop handler will just square up the total issuance. -// fn drop(&mut self) { -// >::mutate(|v| *v = v.saturating_sub(self.0)); -// } -// } -//} -// -//impl Currency for Module -//where -// T::Balance: MaybeSerializeDeserialize + Debug, -//{ -// type Balance = T::Balance; -// type PositiveImbalance = PositiveImbalance; -// type NegativeImbalance = NegativeImbalance; -// -// fn total_balance(who: &T::AccountId) -> Self::Balance { -// Self::free_balance(who) + Self::reserved_balance(who) -// } -// -// fn can_slash(who: &T::AccountId, value: Self::Balance) -> bool { -// Self::free_balance(who) >= value -// } -// -// fn total_issuance() -> Self::Balance { -// >::get() -// } -// -// fn minimum_balance() -> Self::Balance { -// Zero::zero() -// } -// -// fn burn(mut amount: Self::Balance) -> Self::PositiveImbalance { -// >::mutate(|issued| { -// *issued = issued.checked_sub(&amount).unwrap_or_else(|| { -// amount = *issued; -// Zero::zero() -// }); -// }); -// PositiveImbalance::new(amount) -// } -// -// fn issue(mut amount: Self::Balance) -> Self::NegativeImbalance { -// >::mutate(|issued| { -// *issued = issued.checked_add(&amount).unwrap_or_else(|| { -// amount = Self::Balance::max_value() - *issued; -// Self::Balance::max_value() -// }) -// }); -// NegativeImbalance::new(amount) -// } -// -// fn free_balance(who: &T::AccountId) -> Self::Balance { -// >::get(who) -// } -// -// // # -// // Despite iterating over a list of locks, they are limited by the number of -// // lock IDs, which means the number of runtime modules that intend to use and create locks. -// // # -// fn ensure_can_withdraw( -// who: &T::AccountId, -// _amount: T::Balance, -// reasons: WithdrawReasons, -// new_balance: T::Balance, -// ) -> DispatchResult { -// if reasons.intersects(WithdrawReason::Reserve | WithdrawReason::Transfer) -// && Self::vesting_balance(who) > new_balance -// { -// Err(Error::::VestingBalance)? -// } -// let locks = Self::locks(who); -// if locks.is_empty() { -// return Ok(()); -// } -// -// let now = >::now(); -// if locks -// .into_iter() -// .all(|l| l.withdraw_lock.can_withdraw(now, new_balance) || !l.reasons.intersects(reasons)) -// { -// Ok(()) -// } else { -// Err(Error::::LiquidityRestrictions.into()) -// } -// } -// -// fn transfer( -// transactor: &T::AccountId, -// dest: &T::AccountId, -// value: Self::Balance, -// _existence_requirement: ExistenceRequirement, -// ) -> DispatchResult { -// let fee = ::TransferFee::get(); -// -// let new_from_ring = >::get(transactor) -// .checked_sub(&fee) -// .ok_or("Transfer Fee - NOT ENOUGH RING")?; -// >::ensure_can_withdraw(transactor, fee, WithdrawReason::Fee.into(), new_from_ring)?; -// -// let new_from_kton = Self::free_balance(transactor) -// .checked_sub(&value) -// .ok_or("balance too low to send value")?; -// Self::ensure_can_withdraw(transactor, value, WithdrawReason::Transfer.into(), new_from_kton)?; -// -// let new_to_kton = Self::free_balance(dest) -// .checked_add(&value) -// .ok_or("destination balance too high to receive value")?; -// -// if transactor != dest { -// if new_from_ring < as Currency<::AccountId>>::minimum_balance() { -// Err(Error::::KeepAlive)? -// } -// -// >::set_free_balance(transactor, new_from_ring); -// Self::set_free_balance(transactor, new_from_kton); -// Self::set_free_balance(dest, new_to_kton); -// -// ::TransferPayment::on_unbalanced(RingNegativeImbalance::new(fee)); -// -// Self::deposit_event(RawEvent::Transfer( -// transactor.to_owned(), -// dest.to_owned(), -// value.saturated_into(), -// fee.saturated_into(), -// )); -// } -// -// Ok(()) -// } -// -// fn slash(who: &T::AccountId, value: Self::Balance) -> (Self::NegativeImbalance, Self::Balance) { -// let free_balance = Self::free_balance(who); -// let free_slash = cmp::min(free_balance, value); -// Self::set_free_balance(who, free_balance - free_slash); -// let remaining_slash = value - free_slash; -// // NOTE: `slash()` prefers free balance, but assumes that reserve balance can be drawn -// // from in extreme circumstances. `can_slash()` should be used prior to `slash()` to avoid having -// // to draw from reserved funds, however we err on the side of punishment if things are inconsistent -// // or `can_slash` wasn't used appropriately. -// if !remaining_slash.is_zero() { -// let reserved_balance = Self::reserved_balance(who); -// let reserved_slash = cmp::min(reserved_balance, remaining_slash); -// Self::set_reserved_balance(who, reserved_balance - reserved_slash); -// ( -// NegativeImbalance::new(free_slash + reserved_slash), -// remaining_slash - reserved_slash, -// ) -// } else { -// (NegativeImbalance::new(value), Zero::zero()) -// } -// } -// -// fn deposit_into_existing( -// who: &T::AccountId, -// value: Self::Balance, -// ) -> Result { -// if Self::total_balance(who).is_zero() { -// return Err("beneficiary account must pre-exist"); -// } -// Self::set_free_balance(who, Self::free_balance(who) + value); -// Ok(PositiveImbalance::new(value)) -// } -// -// fn deposit_creating(who: &T::AccountId, value: Self::Balance) -> Self::PositiveImbalance { -// let (imbalance, _) = Self::make_free_balance_be(who, Self::free_balance(who) + value); -// if let SignedImbalance::Positive(p) = imbalance { -// p -// } else { -// // Impossible, but be defensive. -// Self::PositiveImbalance::zero() -// } -// } -// -// fn withdraw( -// who: &T::AccountId, -// value: Self::Balance, -// reasons: WithdrawReasons, -// _liveness: ExistenceRequirement, -// ) -> Result { -// let old_balance = Self::free_balance(who); -// if let Some(new_balance) = old_balance.checked_sub(&value) { -// Self::ensure_can_withdraw(who, value, reasons, new_balance)?; -// Self::set_free_balance(who, new_balance); -// Ok(NegativeImbalance::new(value)) -// } else { -// Err("too few free funds in account") -// } -// } -// -// fn make_free_balance_be( -// who: &T::AccountId, -// balance: Self::Balance, -// ) -> ( -// SignedImbalance, -// UpdateBalanceOutcome, -// ) { -// let original = Self::free_balance(who); -// let imbalance = if original <= balance { -// SignedImbalance::Positive(PositiveImbalance::new(balance - original)) -// } else { -// SignedImbalance::Negative(NegativeImbalance::new(original - balance)) -// }; -// let outcome = { -// Self::set_free_balance(who, balance); -// UpdateBalanceOutcome::Updated -// }; -// -// (imbalance, outcome) -// } -//} -// -//impl LockableCurrency for Module -//where -// T::Balance: MaybeSerializeDeserialize + Debug, -//{ -// type Moment = T::Moment; -// -// fn set_lock( -// id: LockIdentifier, -// who: &T::AccountId, -// withdraw_lock: WithdrawLock, -// reasons: WithdrawReasons, -// ) { -// let mut new_lock = Some(BalanceLock { -// id, -// withdraw_lock, -// reasons, -// }); -// let mut locks = Self::locks(who) -// .into_iter() -// .filter_map(|l| if l.id == id { new_lock.take() } else { Some(l) }) -// .collect::>(); -// if let Some(lock) = new_lock { -// locks.push(lock) -// } -// >::insert(who, locks); -// } -// -// fn remove_lock(id: LockIdentifier, who: &T::AccountId) { -// let locks = Self::locks(who) -// .into_iter() -// .filter_map(|l| if l.id != id { Some(l) } else { None }) -// .collect::>(); -// >::insert(who, locks); -// } -//} diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml index 3fa659175..af0de7376 100644 --- a/frame/staking/Cargo.toml +++ b/frame/staking/Cargo.toml @@ -28,7 +28,7 @@ sp-std = { version = "2.0.0", default-features = false, git = "https://github.co darwinia-support = { path = "../support", default-features = false } [dev-dependencies] -pallet-balances = { package = "darwinia-balances", path = "../../frame/balances" } +pallet-ring = { package = "darwinia-ring", path = "../../frame/balances/ring" } pallet-staking-reward-curve = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } substrate-test-utils = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 6d654f1ae..19f13b0a6 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -273,7 +273,7 @@ use sp_staking::{ offence::{Offence, OffenceDetails, OnOffenceHandler, ReportOffence}, SessionIndex, }; -use sp_std::{prelude::*, result}; +use sp_std::{result, vec::Vec}; use sp_phragmen::{ExtendedBalance, PhragmenStakedAssignment}; diff --git a/frame/staking/src/slashing.rs b/frame/staking/src/slashing.rs index b4ef364cb..466a9b03e 100644 --- a/frame/staking/src/slashing.rs +++ b/frame/staking/src/slashing.rs @@ -49,16 +49,15 @@ //! Based on research at https://research.web3.foundation/en/latest/polkadot/slashing/npos/ use super::{ - EraIndex, Trait, Module, Store, BalanceOf, Exposure, Perbill, SessionInterface, - NegativeImbalanceOf, UnappliedSlash, + BalanceOf, EraIndex, Exposure, Module, NegativeImbalanceOf, Perbill, SessionInterface, Store, Trait, UnappliedSlash, }; -use sp_runtime::traits::{Zero, Saturating}; +use codec::{Decode, Encode}; use frame_support::{ - StorageMap, StorageDoubleMap, - traits::{Currency, OnUnbalanced, Imbalance}, + traits::{Currency, Imbalance, OnUnbalanced}, + StorageDoubleMap, StorageMap, }; +use sp_runtime::traits::{Saturating, Zero}; use sp_std::vec::Vec; -use codec::{Encode, Decode}; /// The proportion of the slashing reward to be paid out on the first slashing detection. /// This is f_1 in the paper. @@ -111,7 +110,9 @@ impl SlashingSpans { // that internal state is unchanged. fn end_span(&mut self, now: EraIndex) -> bool { let next_start = now + 1; - if next_start <= self.last_start { return false } + if next_start <= self.last_start { + return false; + } let last_length = next_start - self.last_start; self.prior.insert(0, last_length); @@ -124,13 +125,21 @@ impl SlashingSpans { pub(crate) fn iter(&'_ self) -> impl Iterator + '_ { let mut last_start = self.last_start; let mut index = self.span_index; - let last = SlashingSpan { index, start: last_start, length: None }; + let last = SlashingSpan { + index, + start: last_start, + length: None, + }; let prior = self.prior.iter().cloned().map(move |length| { let start = last_start - length; last_start = start; index -= 1; - SlashingSpan { index, start, length: Some(length) } + SlashingSpan { + index, + start, + length: Some(length), + } }); sp_std::iter::once(last).chain(prior) @@ -146,7 +155,8 @@ impl SlashingSpans { // If this returns `Some`, then it includes a range start..end of all the span // indices which were pruned. fn prune(&mut self, window_start: EraIndex) -> Option<(SpanIndex, SpanIndex)> { - let old_idx = self.iter() + let old_idx = self + .iter() .skip(1) // skip ongoing span. .position(|span| span.length.map_or(false, |len| span.start + len <= window_start)); @@ -207,9 +217,7 @@ pub(crate) struct SlashParams<'a, T: 'a + Trait> { /// /// The pending slash record returned does not have initialized reporters. Those have /// to be set at a higher level, if any. -pub(crate) fn compute_slash(params: SlashParams) - -> Option>> -{ +pub(crate) fn compute_slash(params: SlashParams) -> Option>> { let SlashParams { stash, slash, @@ -232,19 +240,13 @@ pub(crate) fn compute_slash(params: SlashParams) return None; } - let (prior_slash_p, _era_slash) = as Store>::ValidatorSlashInEra::get( - &slash_era, - stash, - ).unwrap_or((Perbill::zero(), Zero::zero())); + let (prior_slash_p, _era_slash) = + as Store>::ValidatorSlashInEra::get(&slash_era, stash).unwrap_or((Perbill::zero(), Zero::zero())); // compare slash proportions rather than slash values to avoid issues due to rounding // error. if slash.deconstruct() > prior_slash_p.deconstruct() { - as Store>::ValidatorSlashInEra::insert( - &slash_era, - stash, - &(slash, own_slash), - ); + as Store>::ValidatorSlashInEra::insert(&slash_era, stash, &(slash, own_slash)); } else { // we slash based on the max in era - this new event is not the max, // so neither the validator or any nominators will need an update. @@ -266,10 +268,7 @@ pub(crate) fn compute_slash(params: SlashParams) reward_proportion, ); - let target_span = spans.compare_and_update_span_slash( - slash_era, - own_slash, - ); + let target_span = spans.compare_and_update_span_slash(slash_era, own_slash); if target_span == Some(spans.span_index()) { // misbehavior occurred within the current slashing span - take appropriate @@ -302,9 +301,7 @@ pub(crate) fn compute_slash(params: SlashParams) // doesn't apply any slash, but kicks out the validator if the misbehavior is from // the most recent slashing span. -fn kick_out_if_recent( - params: SlashParams, -) { +fn kick_out_if_recent(params: SlashParams) { // these are not updated by era-span or end-span. let mut reward_payout = Zero::zero(); let mut val_slashed = Zero::zero(); @@ -360,18 +357,12 @@ fn slash_nominators( let own_slash_by_validator = slash * nominator.value; let own_slash_difference = own_slash_by_validator.saturating_sub(own_slash_prior); - let mut era_slash = as Store>::NominatorSlashInEra::get( - &slash_era, - stash, - ).unwrap_or(Zero::zero()); + let mut era_slash = + as Store>::NominatorSlashInEra::get(&slash_era, stash).unwrap_or(Zero::zero()); era_slash += own_slash_difference; - as Store>::NominatorSlashInEra::insert( - &slash_era, - stash, - &era_slash, - ); + as Store>::NominatorSlashInEra::insert(&slash_era, stash, &era_slash); era_slash }; @@ -386,10 +377,7 @@ fn slash_nominators( reward_proportion, ); - let target_span = spans.compare_and_update_span_slash( - slash_era, - era_slash, - ); + let target_span = spans.compare_and_update_span_slash(slash_era, era_slash); if target_span == Some(spans.span_index()) { // Chill the nominator outright, ending the slashing span. @@ -470,11 +458,7 @@ impl<'a, T: 'a + Trait> InspectingSpans<'a, T> { // if it's higher, applies the difference of the slashes and then updates the span on disk. // // returns the span index of the era where the slash occurred, if any. - fn compare_and_update_span_slash( - &mut self, - slash_era: EraIndex, - slash: BalanceOf, - ) -> Option { + fn compare_and_update_span_slash(&mut self, slash_era: EraIndex, slash: BalanceOf) -> Option { let target_span = self.era_span(slash_era)?; let span_slash_key = (self.stash.clone(), target_span.index); let mut span_record = as Store>::SpanSlash::get(&span_slash_key); @@ -486,8 +470,7 @@ impl<'a, T: 'a + Trait> InspectingSpans<'a, T> { span_record.slashed = slash; // compute reward. - let reward = REWARD_F1 - * (self.reward_proportion * slash).saturating_sub(span_record.paid_out); + let reward = REWARD_F1 * (self.reward_proportion * slash).saturating_sub(span_record.paid_out); self.add_slash(difference); changed = true; @@ -518,7 +501,9 @@ impl<'a, T: 'a + Trait> InspectingSpans<'a, T> { impl<'a, T: 'a + Trait> Drop for InspectingSpans<'a, T> { fn drop(&mut self) { // only update on disk if we slashed this account. - if !self.dirty { return } + if !self.dirty { + return; + } if let Some((start, end)) = self.spans.prune(self.window_start) { for span_index in start..end { @@ -586,9 +571,7 @@ fn do_slash( >::update_ledger(&controller, &ledger); // trigger the event - >::deposit_event( - super::RawEvent::Slash(stash.clone(), value) - ); + >::deposit_event(super::RawEvent::Slash(stash.clone(), value)); } } @@ -605,18 +588,12 @@ pub(crate) fn apply_slash(unapplied_slash: UnappliedSlash( - &nominator, - nominator_slash, - &mut reward_payout, - &mut slashed_imbalance, - ); + do_slash::(&nominator, nominator_slash, &mut reward_payout, &mut slashed_imbalance); } pay_reporters::(reward_payout, slashed_imbalance, &unapplied_slash.reporters); } - /// Apply a reward payout to some reporters, paying the rewards out of the slashed imbalance. fn pay_reporters( reward_payout: BalanceOf, @@ -627,7 +604,7 @@ fn pay_reporters( // nobody to pay out to or nothing to pay; // just treat the whole value as slashed. T::Slash::on_unbalanced(slashed_imbalance); - return + return; } // take rewards out of the slashed imbalance. @@ -659,7 +636,11 @@ mod tests { #[test] fn span_contains_era() { // unbounded end - let span = SlashingSpan { index: 0, start: 1000, length: None }; + let span = SlashingSpan { + index: 0, + start: 1000, + length: None, + }; assert!(!span.contains_era(0)); assert!(!span.contains_era(999)); @@ -668,7 +649,11 @@ mod tests { assert!(span.contains_era(10000)); // bounded end - non-inclusive range. - let span = SlashingSpan { index: 0, start: 1000, length: Some(10) }; + let span = SlashingSpan { + index: 0, + start: 1000, + length: Some(10), + }; assert!(!span.contains_era(0)); assert!(!span.contains_era(999)); @@ -689,7 +674,11 @@ mod tests { assert_eq!( spans.iter().collect::>(), - vec![SlashingSpan { index: 0, start: 1000, length: None }], + vec![SlashingSpan { + index: 0, + start: 1000, + length: None + }], ); } @@ -704,11 +693,31 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 10, start: 1000, length: None }, - SlashingSpan { index: 9, start: 990, length: Some(10) }, - SlashingSpan { index: 8, start: 981, length: Some(9) }, - SlashingSpan { index: 7, start: 973, length: Some(8) }, - SlashingSpan { index: 6, start: 963, length: Some(10) }, + SlashingSpan { + index: 10, + start: 1000, + length: None + }, + SlashingSpan { + index: 9, + start: 990, + length: Some(10) + }, + SlashingSpan { + index: 8, + start: 981, + length: Some(9) + }, + SlashingSpan { + index: 7, + start: 973, + length: Some(8) + }, + SlashingSpan { + index: 6, + start: 963, + length: Some(10) + }, ], ) } @@ -725,9 +734,21 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 10, start: 1000, length: None }, - SlashingSpan { index: 9, start: 990, length: Some(10) }, - SlashingSpan { index: 8, start: 981, length: Some(9) }, + SlashingSpan { + index: 10, + start: 1000, + length: None + }, + SlashingSpan { + index: 9, + start: 990, + length: Some(10) + }, + SlashingSpan { + index: 8, + start: 981, + length: Some(9) + }, ], ); @@ -735,9 +756,21 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 10, start: 1000, length: None }, - SlashingSpan { index: 9, start: 990, length: Some(10) }, - SlashingSpan { index: 8, start: 981, length: Some(9) }, + SlashingSpan { + index: 10, + start: 1000, + length: None + }, + SlashingSpan { + index: 9, + start: 990, + length: Some(10) + }, + SlashingSpan { + index: 8, + start: 981, + length: Some(9) + }, ], ); @@ -745,26 +778,42 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 10, start: 1000, length: None }, - SlashingSpan { index: 9, start: 990, length: Some(10) }, - SlashingSpan { index: 8, start: 981, length: Some(9) }, + SlashingSpan { + index: 10, + start: 1000, + length: None + }, + SlashingSpan { + index: 9, + start: 990, + length: Some(10) + }, + SlashingSpan { + index: 8, + start: 981, + length: Some(9) + }, ], ); assert_eq!(spans.prune(1000), Some((8, 10))); assert_eq!( spans.iter().collect::>(), - vec![ - SlashingSpan { index: 10, start: 1000, length: None }, - ], + vec![SlashingSpan { + index: 10, + start: 1000, + length: None + },], ); assert_eq!(spans.prune(2000), None); assert_eq!( spans.iter().collect::>(), - vec![ - SlashingSpan { index: 10, start: 2000, length: None }, - ], + vec![SlashingSpan { + index: 10, + start: 2000, + length: None + },], ); // now all in one shot. @@ -776,9 +825,11 @@ mod tests { assert_eq!(spans.prune(2000), Some((6, 10))); assert_eq!( spans.iter().collect::>(), - vec![ - SlashingSpan { index: 10, start: 2000, length: None }, - ], + vec![SlashingSpan { + index: 10, + start: 2000, + length: None + },], ); } @@ -795,8 +846,16 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 2, start: 11, length: None }, - SlashingSpan { index: 1, start: 10, length: Some(1) }, + SlashingSpan { + index: 2, + start: 11, + length: None + }, + SlashingSpan { + index: 1, + start: 10, + length: Some(1) + }, ], ); @@ -804,9 +863,21 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 3, start: 16, length: None }, - SlashingSpan { index: 2, start: 11, length: Some(5) }, - SlashingSpan { index: 1, start: 10, length: Some(1) }, + SlashingSpan { + index: 3, + start: 16, + length: None + }, + SlashingSpan { + index: 2, + start: 11, + length: Some(5) + }, + SlashingSpan { + index: 1, + start: 10, + length: Some(1) + }, ], ); @@ -815,9 +886,21 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 3, start: 16, length: None }, - SlashingSpan { index: 2, start: 11, length: Some(5) }, - SlashingSpan { index: 1, start: 10, length: Some(1) }, + SlashingSpan { + index: 3, + start: 16, + length: None + }, + SlashingSpan { + index: 2, + start: 11, + length: Some(5) + }, + SlashingSpan { + index: 1, + start: 10, + length: Some(1) + }, ], ); } diff --git a/frame/support/src/lib.rs b/frame/support/src/lib.rs index f047b45a4..41f2c77a0 100644 --- a/frame/support/src/lib.rs +++ b/frame/support/src/lib.rs @@ -94,19 +94,11 @@ mod structs { } mod traits { - use frame_support::traits::Currency; - use sp_std::result; + use frame_support::traits::{Currency, ExistenceRequirement}; + use sp_runtime::DispatchResult; use crate::{LockIdentifier, WithdrawLock, WithdrawReasons}; - pub trait OnMinted { - fn on_minted(value: Balance); - } - - pub trait OnAccountBalanceChanged { - fn on_changed(who: &AccountId, old: Balance, new: Balance); - } - /// A currency whose accounts can have liquidity restrictions. pub trait LockableCurrency: Currency { /// The quantity used to denote time; usually just a `BlockNumber`. @@ -129,15 +121,18 @@ mod traits { fn remove_lock(id: LockIdentifier, who: &AccountId); } + pub trait Fee { + fn pay_transfer_fee( + transactor: &AccountId, + transfer_fee: Balance, + existence_requirement: ExistenceRequirement, + ) -> DispatchResult; + } + // callback on eth-backing module pub trait OnDepositRedeem { type Moment; - fn on_deposit_redeem( - months: u64, - start_at: u64, - amount: u128, - stash: &AccountId, - ) -> result::Result<(), &'static str>; + fn on_deposit_redeem(months: u64, start_at: u64, amount: u128, stash: &AccountId) -> Result<(), &'static str>; } } From adf1f33056a41a19eb81c66a3c8acfaf9f055795 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Tue, 7 Jan 2020 19:01:58 +0800 Subject: [PATCH 04/17] =?UTF-8?q?update:=20basic=20staking=20logic=20-=20c?= =?UTF-8?q?ompile=20=E2=9C=94=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frame/balances/kton/src/lib.rs | 2 +- frame/staking/src/inflation.rs | 29 + frame/staking/src/lib.rs | 1613 +++++++++++++++++++------------- 3 files changed, 1005 insertions(+), 639 deletions(-) diff --git a/frame/balances/kton/src/lib.rs b/frame/balances/kton/src/lib.rs index f3876ef66..2d61a1f49 100644 --- a/frame/balances/kton/src/lib.rs +++ b/frame/balances/kton/src/lib.rs @@ -495,7 +495,7 @@ where } fn minimum_balance() -> Self::Balance { - Zero::zero() + T::ExistentialDeposit::get() } fn burn(mut amount: Self::Balance) -> Self::PositiveImbalance { diff --git a/frame/staking/src/inflation.rs b/frame/staking/src/inflation.rs index 38c61161c..140ee65ed 100644 --- a/frame/staking/src/inflation.rs +++ b/frame/staking/src/inflation.rs @@ -1,3 +1,18 @@ +use sp_core::U256; +use sp_runtime::{traits::SaturatedConversion, Perquintill}; +use sp_std::convert::TryInto; + +use crate::{KtonBalance, Power, RingBalance, Trait, TS}; + +// power is a mixture of ring and kton +// power = ring_ratio * POWER_COUNT / 2 + kton_ratio * POWER_COUNT / 2 +pub fn compute_balance_power>(active: S, pool: S) -> Power { + const HALF_POWER_COUNT: Power = 1_000_000_000 / 2; + + Perquintill::from_rational_approximation(active.saturated_into::(), pool.saturated_into::().max(1)) + * HALF_POWER_COUNT +} + // TODO pub fn compute_total_payout() -> (N, N) where @@ -5,3 +20,17 @@ where { (Default::default(), Default::default()) } + +// consistent with the formula in smart contract in evolution land which can be found in +// https://github.com/evolutionlandorg/bank/blob/master/contracts/GringottsBank.sol#L280 +pub fn compute_kton_return(value: RingBalance, months: TS) -> KtonBalance { + let value = value.saturated_into::(); + let no = U256::from(67).pow(U256::from(months)); + let de = U256::from(66).pow(U256::from(months)); + + let quotient = no / de; + let remainder = no % de; + let res = U256::from(value) * (U256::from(1000) * (quotient - 1) + U256::from(1000) * remainder / de) + / U256::from(1_970_000); + res.as_u128().try_into().unwrap_or_default() +} diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 19f13b0a6..afc1bfc8b 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -246,15 +246,15 @@ #![recursion_limit = "128"] #![cfg_attr(not(feature = "std"), no_std)] +mod inflation; mod migration; +//mod slashing; + #[cfg(test)] mod mock; -mod slashing; #[cfg(test)] mod tests; -pub mod inflation; - use codec::{Decode, Encode, HasCompact}; use frame_support::{ decl_error, decl_event, decl_module, decl_storage, ensure, @@ -263,8 +263,12 @@ use frame_support::{ }; use frame_system::{self as system, ensure_root, ensure_signed}; use pallet_session::{historical::OnSessionEnding, SelectInitialValidators}; +use sp_phragmen::{ExtendedBalance as Power, PhragmenStakedAssignment}; use sp_runtime::{ - traits::{Bounded, CheckedSub, Convert, EnsureOrigin, One, Saturating, SimpleArithmetic, StaticLookup, Zero}, + traits::{ + Bounded, CheckedSub, Convert, EnsureOrigin, One, SaturatedConversion, Saturating, SimpleArithmetic, + StaticLookup, Zero, + }, Perbill, RuntimeDebug, }; #[cfg(feature = "std")] @@ -273,13 +277,14 @@ use sp_staking::{ offence::{Offence, OffenceDetails, OnOffenceHandler, ReportOffence}, SessionIndex, }; -use sp_std::{result, vec::Vec}; - -use sp_phragmen::{ExtendedBalance, PhragmenStakedAssignment}; +use sp_std::{marker::PhantomData, vec::Vec}; -use darwinia_support::{LockIdentifier, LockableCurrency}; +use darwinia_support::{ + LockIdentifier, LockableCurrency, NormalLock, StakingLock, WithdrawLock, WithdrawReason, WithdrawReasons, +}; const DEFAULT_MINIMUM_VALIDATOR_COUNT: u32 = 4; +const MONTH_IN_MILLISECONDS: TS = 30 * 24 * 60 * 60 * 1000; const MAX_NOMINATIONS: usize = 16; const MAX_UNLOCKING_CHUNKS: usize = 32; const STAKING_ID: LockIdentifier = *b"staking "; @@ -290,6 +295,21 @@ pub type EraIndex = u32; /// Counter for the number of "reward" points earned by a given validator. pub type Points = u32; +type RingBalance = <::RingCurrency as Currency<::AccountId>>::Balance; +type RingPositiveImbalance = + <::RingCurrency as Currency<::AccountId>>::PositiveImbalance; +type RingNegativeImbalance = + <::RingCurrency as Currency<::AccountId>>::NegativeImbalance; + +type KtonBalance = <::KtonCurrency as Currency<::AccountId>>::Balance; +type KtonPositiveImbalance = + <::KtonCurrency as Currency<::AccountId>>::PositiveImbalance; +type KtonNegativeImbalance = + <::KtonCurrency as Currency<::AccountId>>::NegativeImbalance; + +type MomentOf = <::Time as Time>::Moment; +type TS = u64; + /// Reward points of an era. Used to split era total payout between validators. #[derive(Encode, Decode, Default)] pub struct EraPoints { @@ -329,7 +349,7 @@ pub enum StakerStatus { #[derive(PartialEq, Eq, Copy, Clone, Encode, Decode, RuntimeDebug)] pub enum RewardDestination { /// Pay into the stash account, increasing the amount at stake accordingly. - Staked, + Staked { promise_month: TS }, /// Pay into the stash account, not increasing the amount at stake. Stash, /// Pay into the controller account. @@ -338,7 +358,7 @@ pub enum RewardDestination { impl Default for RewardDestination { fn default() -> Self { - RewardDestination::Staked + RewardDestination::Staked { promise_month: 0 } } } @@ -359,110 +379,123 @@ impl Default for ValidatorPrefs { } } -/// Just a Balance/BlockNumber tuple to encode when a chunk of funds will be unlocked. +/// To unify *Ring* and *Kton* balances. +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +pub enum StakingBalances +where + RingBalance: HasCompact, + KtonBalance: HasCompact, +{ + RingBalance(RingBalance), + KtonBalance(KtonBalance), +} + +impl Default for StakingBalances +where + RingBalance: Default + HasCompact, + KtonBalance: Default + HasCompact, +{ + fn default() -> Self { + StakingBalances::RingBalance(Default::default()) + } +} + +/// The *Ring* under deposit. #[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub struct UnlockChunk { - /// Amount of funds to be unlocked. +pub struct TimeDepositItem { + #[codec(compact)] + pub value: RingBalance, #[codec(compact)] - value: Balance, - /// Era number at which point it'll be unlocked. + pub start_time: Moment, #[codec(compact)] - era: EraIndex, + pub expire_time: Moment, } /// The ledger of a (bonded) stash. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub struct StakingLedger { +#[derive(PartialEq, Eq, Clone, Default, Encode, Decode, RuntimeDebug)] +pub struct StakingLedger +where + RingBalance: HasCompact, + KtonBalance: HasCompact, +{ /// The stash account whose balance is actually locked and at stake. pub stash: AccountId, - /// The total amount of the stash's balance that we are currently accounting for. - /// It's just `active` plus all the `unlocking` balances. - #[codec(compact)] - pub total: Balance, - /// The total amount of the stash's balance that will be at stake in any forthcoming + + /// The total amount of the stash's *RING* that will be at stake in any forthcoming /// rounds. #[codec(compact)] - pub active: Balance, - /// 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>, -} + pub active_ring: RingBalance, + // active time-deposit ring + #[codec(compact)] + pub active_deposit_ring: RingBalance, -impl StakingLedger { - /// Remove entries from `unlocking` that are sufficiently old and reduce the - /// total by the sum of their balances. - fn consolidate_unlocked(self, current_era: EraIndex) -> Self { - let mut total = self.total; - let unlocking = self - .unlocking - .into_iter() - .filter(|chunk| { - if chunk.era > current_era { - true - } else { - total = total.saturating_sub(chunk.value); - false - } - }) - .collect(); - Self { - total, - active: self.active, - stash: self.stash, - unlocking, - } - } + /// The total amount of the stash's *KTON* that will be at stake in any forthcoming + /// rounds. + #[codec(compact)] + pub active_kton: KtonBalance, + // time-deposit items: + // if you deposit ring for a minimum period, + // you can get *KTON* as bonus + // which can also be used for staking + pub deposit_items: Vec>, + + // TODO doc + pub ring_staking_lock: StakingLock, + // TODO doc + pub kton_staking_lock: StakingLock, } -impl StakingLedger +impl StakingLedger where - Balance: SimpleArithmetic + Saturating + Copy, + RingBalance: SimpleArithmetic + Saturating + Copy, + KtonBalance: SimpleArithmetic + Saturating + Copy, { - /// Slash the validator for a given amount of balance. This can grow the value - /// of the slash in the case that the validator has less than `minimum_balance` - /// active funds. Returns the amount of funds actually slashed. - /// - /// Slashes from `active` funds first, and then `unlocking`, starting with the - /// chunks that are closest to unlocking. - fn slash(&mut self, mut value: Balance, minimum_balance: Balance) -> Balance { - let pre_total = self.total; - let total = &mut self.total; - let active = &mut self.active; - - let slash_out_of = |total_remaining: &mut Balance, target: &mut Balance, value: &mut Balance| { - let mut slash_from_target = (*value).min(*target); - - if !slash_from_target.is_zero() { - *target -= slash_from_target; - - // don't leave a dust balance in the staking system. - if *target <= minimum_balance { - slash_from_target += *target; - *value += sp_std::mem::replace(target, Zero::zero()); - } - - *total_remaining = total_remaining.saturating_sub(slash_from_target); - *value -= slash_from_target; - } - }; - - slash_out_of(total, active, &mut value); - - let i = self - .unlocking - .iter_mut() - .map(|chunk| { - slash_out_of(total, &mut chunk.value, &mut value); - chunk.value - }) - .take_while(|value| value.is_zero()) // take all fully-consumed chunks out. - .count(); - - // kill all drained chunks. - let _ = self.unlocking.drain(..i); - - pre_total.saturating_sub(*total) - } + // FIXME + // /// Slash the validator for a given amount of balance. This can grow the value + // /// of the slash in the case that the validator has less than `minimum_balance` + // /// active funds. Returns the amount of funds actually slashed. + // /// + // /// Slashes from `active` funds first, and then `unlocking`, starting with the + // /// chunks that are closest to unlocking. + // fn slash(&mut self, mut value: Balance, minimum_balance: Balance) -> Balance { + // let pre_total = self.total; + // let total = &mut self.total; + // let active = &mut self.active; + // + // let slash_out_of = |total_remaining: &mut Balance, target: &mut Balance, value: &mut Balance| { + // let mut slash_from_target = (*value).min(*target); + // + // if !slash_from_target.is_zero() { + // *target -= slash_from_target; + // + // // don't leave a dust balance in the staking system. + // if *target <= minimum_balance { + // slash_from_target += *target; + // *value += sp_std::mem::replace(target, Zero::zero()); + // } + // + // *total_remaining = total_remaining.saturating_sub(slash_from_target); + // *value -= slash_from_target; + // } + // }; + // + // slash_out_of(total, active, &mut value); + // + // let i = self + // .unlocking + // .iter_mut() + // .map(|chunk| { + // slash_out_of(total, &mut chunk.value, &mut value); + // chunk.value + // }) + // .take_while(|value| value.is_zero()) // take all fully-consumed chunks out. + // .count(); + // + // // kill all drained chunks. + // let _ = self.unlocking.drain(..i); + // + // pre_total.saturating_sub(*total) + // } } /// A record of the nominations made by a specific account. @@ -478,50 +511,71 @@ pub struct Nominations { /// The amount of exposure (to slashing) than an individual nominator has. #[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, RuntimeDebug)] -pub struct IndividualExposure { +pub struct IndividualExposure { /// The stash account of the nominator in question. who: AccountId, /// Amount of funds exposed. #[codec(compact)] - value: Balance, + value: Power, } /// A snapshot of the stake backing a single validator in the system. #[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, Default, RuntimeDebug)] -pub struct Exposure { +pub struct Exposure { /// The total balance backing this validator. #[codec(compact)] - pub total: Balance, + pub total: Power, /// The validator's own stash that is exposed. #[codec(compact)] - pub own: Balance, + pub own: Power, /// The portions of nominators stashes that are exposed. - pub others: Vec>, + pub others: Vec>, +} + +/// A typed conversion from stash account ID to the current exposure of nominators +/// on that account. +pub struct ExposureOf(PhantomData); + +impl Convert>> for ExposureOf { + fn convert(validator: T::AccountId) -> Option> { + Some(>::stakers(&validator)) + } +} + +// FIXME: RingBalance: HasCompact +// TODO: doc +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +pub struct ValidatorReward { + who: AccountId, + #[codec(compact)] + amount: RingBalance, + nominators_reward: Vec>, +} + +// TODO: doc +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +pub struct NominatorReward { + who: AccountId, + #[codec(compact)] + amount: RingBalance, } /// A pending slash record. The value of the slash has been computed but not applied yet, /// rather deferred for several eras. #[derive(Encode, Decode, Default, RuntimeDebug)] -pub struct UnappliedSlash { +pub struct UnappliedSlash { /// The stash ID of the offending validator. validator: AccountId, /// The validator's own slash. - own: Balance, + own: Power, /// All other slashed stakers and amounts. - others: Vec<(AccountId, Balance)>, + others: Vec<(AccountId, Power)>, /// Reporters of the offence; bounty payout recipients. reporters: Vec, /// The amount of payout. - payout: Balance, + payout: Power, } -pub type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; -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` @@ -542,7 +596,7 @@ impl SessionInterface<::AccountId> for T where T: pallet_session::Trait::AccountId>, T: pallet_session::historical::Trait< - FullIdentification = Exposure<::AccountId, BalanceOf>, + FullIdentification = Exposure<::AccountId, Power>, FullIdentificationOf = ExposureOf, >, T::SessionHandler: pallet_session::SessionHandler<::AccountId>, @@ -563,10 +617,7 @@ where } } -pub trait Trait: frame_system::Trait + pallet_timestamp::Trait { - /// The staking balance. - type Currency: LockableCurrency; - +pub trait Trait: frame_system::Trait { /// Time used for computing era duration. type Time: Time; @@ -575,25 +626,16 @@ pub trait Trait: frame_system::Trait + pallet_timestamp::Trait { /// TODO: #1377 /// The backward convert should be removed as the new Phragmen API returns ratio. /// The post-processing needs it but will be moved to off-chain. TODO: #2908 - type CurrencyToVote: Convert, u64> + Convert>; - - /// Tokens have been minted and are unused for validator-reward. - type RewardRemainder: OnUnbalanced>; + type CurrencyToVote: Convert + Convert; /// The overarching event type. type Event: From> + Into<::Event>; - /// Handler for the unbalanced reduction when slashing a staker. - type Slash: OnUnbalanced>; - - /// Handler for the unbalanced increment when rewarding a staker. - type Reward: OnUnbalanced>; - /// Number of sessions per era. type SessionsPerEra: Get; - /// Number of eras that staked funds must remain bonded for. - type BondingDuration: Get; + /// Number of `Moment` that staked funds must remain bonded for. + type BondingDuration: Get>; /// Number of eras that slashes are deferred by, after computation. This /// should be less than the bonding duration. Set to 0 if slashes should be @@ -605,6 +647,27 @@ pub trait Trait: frame_system::Trait + pallet_timestamp::Trait { /// Interface for interacting with a session module. type SessionInterface: self::SessionInterface; + + /// The *RING* balance. + type RingCurrency: LockableCurrency>; + /// Tokens have been minted and are unused for validator-reward. + type RingRewardRemainder: OnUnbalanced>; + /// Handler for the unbalanced *RING* reduction when slashing a staker. + type RingSlash: OnUnbalanced>; + /// Handler for the unbalanced *RING* increment when rewarding a staker. + type RingReward: OnUnbalanced>; + + /// The *KTON* balance + type KtonCurrency: LockableCurrency>; + /// Handler for the unbalanced *KTON* reduction when slashing a staker. + type KtonSlash: OnUnbalanced>; + /// Handler for the unbalanced *KTON* increment when rewarding a staker. + type KtonReward: OnUnbalanced>; + + // TODO: doc + type Cap: Get<>::Balance>; + // TODO: doc + type GenesisTime: Get>; } /// Mode of era-forcing. @@ -629,12 +692,11 @@ impl Default for Forcing { decl_storage! { trait Store for Module as Staking { - /// 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; + pub MinimumValidatorCount get(fn minimum_validator_count) config(): u32 = DEFAULT_MINIMUM_VALIDATOR_COUNT; /// Any validators that may never be slashed or forcibly kicked. It's a Vec since they're /// easy to initialize and the performance hit is minimal (we expect no more than four @@ -643,9 +705,9 @@ decl_storage! { /// Map from all locked "stash" accounts to the controller account. pub Bonded get(fn bonded): map T::AccountId => Option; + /// Map from all (unlocked) "controller" accounts to the info regarding the staking. - pub Ledger get(fn ledger): - map T::AccountId => Option>>; + pub Ledger get(fn ledger): map T::AccountId => Option, KtonBalance, MomentOf>>; /// Where the reward payment should be made. Keyed by stash. pub Payee get(fn payee): map T::AccountId => RewardDestination; @@ -663,7 +725,7 @@ decl_storage! { /// through validators here, but you can find them in the Session module. /// /// This is keyed by the stash account. - pub Stakers get(fn stakers): map T::AccountId => Exposure>; + pub Stakers get(fn stakers): map T::AccountId => Exposure; /// The currently elected validator set keyed by stash account ID. pub CurrentElected get(fn current_elected): Vec; @@ -684,8 +746,13 @@ decl_storage! { /// /// 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; + config + .stakers + .iter() + .map(|&(_, _, r, _)| inflation::compute_balance_power(r, >::ring_pool())) + .min() + .unwrap_or_default() + }): Power; /// True if the next session change will be a new era regardless of index. pub ForceEra get(fn force_era) config(): Forcing; @@ -695,32 +762,34 @@ decl_storage! { /// The rest of the slashed value is handled by the `Slash`. pub SlashRewardFraction get(fn slash_reward_fraction) config(): Perbill; - /// The amount of currency given to reporters of a slash event which was - /// canceled by extraordinary circumstances (e.g. governance). - pub CanceledSlashPayout get(fn canceled_payout) config(): BalanceOf; +// /// The amount of currency given to reporters of a slash event which was +// /// canceled by extraordinary circumstances (e.g. governance). +// pub CanceledSlashPayout get(fn canceled_payout) config(): BalanceOf; +// +// /// All unapplied slashes that are queued for later. +// pub UnappliedSlashes: map EraIndex => Vec>>; - /// All unapplied slashes that are queued for later. - pub UnappliedSlashes: map EraIndex => Vec>>; + /// Total *Ring* in pool. + pub RingPool get(fn ring_pool): RingBalance; + /// Total *Kton* in pool. + pub KtonPool get(fn kton_pool): KtonBalance; /// A mapping from still-bonded eras to the first session index of that era. BondedEras: Vec<(EraIndex, SessionIndex)>; - /// All slashing events on validators, mapped by era to the highest slash proportion - /// and slash value of the era. - ValidatorSlashInEra: - double_map EraIndex, twox_128(T::AccountId) => Option<(Perbill, BalanceOf)>; - - /// All slashing events on nominators, mapped by era to the highest slash value of the era. - NominatorSlashInEra: - double_map EraIndex, twox_128(T::AccountId) => Option>; - - /// Slashing spans for stash accounts. - SlashingSpans: map T::AccountId => Option; - - /// Records information about the maximum slash of a stash within a slashing span, - /// as well as how much reward has been paid out. - SpanSlash: - map (T::AccountId, slashing::SpanIndex) => slashing::SpanRecord>; +// /// All slashing events on validators, mapped by era to the highest slash proportion +// /// and slash value of the era. +// ValidatorSlashInEra: double_map EraIndex, twox_128(T::AccountId) => Option<(Perbill, BalanceOf)>; +// +// /// All slashing events on nominators, mapped by era to the highest slash value of the era. +// NominatorSlashInEra: double_map EraIndex, twox_128(T::AccountId) => Option>; +// +// /// Slashing spans for stash accounts. +// SlashingSpans: map T::AccountId => Option; +// +// /// Records information about the maximum slash of a stash within a slashing span, +// /// as well as how much reward has been paid out. +// SpanSlash: map (T::AccountId, slashing::SpanIndex) => slashing::SpanRecord>; /// The earliest era for which we have a pending, unapplied slash. EarliestUnappliedSlash: Option; @@ -729,31 +798,31 @@ decl_storage! { StorageVersion: u32; } add_extra_genesis { - config(stakers): - Vec<(T::AccountId, T::AccountId, BalanceOf, StakerStatus)>; + config(stakers): Vec<(T::AccountId, T::AccountId, RingBalance, StakerStatus)>; build(|config: &GenesisConfig| { - for &(ref stash, ref controller, balance, ref status) in &config.stakers { + for &(ref stash, ref controller, r, ref status) in &config.stakers { assert!( - T::Currency::free_balance(&stash) >= balance, - "Stash does not have enough balance to bond." + T::RingCurrency::free_balance(&stash) >= r, + "Stash does not have enough balance to bond.", ); let _ = >::bond( - T::Origin::from(Some(stash.clone()).into()), - T::Lookup::unlookup(controller.clone()), - balance, - RewardDestination::Staked, + T::Origin::from(Some(stash.to_owned()).into()), + T::Lookup::unlookup(controller.to_owned()), + StakingBalances::RingBalance(r), + RewardDestination::Staked { promise_month: 0 }, + 0, ); let _ = match status { StakerStatus::Validator => { >::validate( - T::Origin::from(Some(controller.clone()).into()), + T::Origin::from(Some(controller.to_owned()).into()), Default::default(), ) }, StakerStatus::Nominator(votes) => { >::nominate( - T::Origin::from(Some(controller.clone()).into()), - votes.iter().map(|l| T::Lookup::unlookup(l.clone())).collect(), + T::Origin::from(Some(controller.to_owned()).into()), + votes.iter().map(|l| T::Lookup::unlookup(l.to_owned())).collect(), ) }, _ => Ok(()) }; @@ -765,12 +834,33 @@ decl_storage! { } decl_event!( - pub enum Event where Balance = BalanceOf, ::AccountId { + pub enum Event + where + ::AccountId, + RingBalance = RingBalance, + KtonBalance = KtonBalance, + Moment = MomentOf, + { + /// Bond succeed. + /// `amount`, `now`, `duration` in month + BondRing(RingBalance, Moment, TS), + /// Bond succeed. + /// `amount` + BondKton(KtonBalance), + + /// Unbond succeed. + /// `amount`, `now` + UnbondRing(RingBalance, Moment), + /// Unbond succeed. + /// `amount`, `now` + UnbondKton(KtonBalance, Moment), + /// All validators have been rewarded by the first balance; the second is the remainder - /// from the maximum amount of reward. - Reward(Balance, Balance), + /// from the maximum amount of reward; the third is validator and nominators' reward. + Reward(RingBalance, RingBalance, Vec>), + /// One validator (and its nominators) has been slashed by the given amount. - Slash(AccountId, Balance), + Slash(AccountId, Power), /// An old slashing report from a prior era was discarded because it could /// not be processed. OldSlashingReportDiscarded(SessionIndex), @@ -807,7 +897,7 @@ decl_module! { const SessionsPerEra: SessionIndex = T::SessionsPerEra::get(); /// Number of eras that staked funds must remain bonded for. - const BondingDuration: EraIndex = T::BondingDuration::get(); + const BondingDuration: MomentOf = T::BondingDuration::get(); type Error = Error; @@ -840,37 +930,63 @@ decl_module! { /// the `origin` falls below _existential deposit_ and gets removed as dust. /// # #[weight = SimpleDispatchInfo::FixedNormal(500_000)] - fn bond(origin, + fn bond( + origin, controller: ::Source, - #[compact] value: BalanceOf, - payee: RewardDestination + value: StakingBalances, KtonBalance>, + payee: RewardDestination, + promise_month: TS ) { let stash = ensure_signed(origin)?; - - if >::exists(&stash) { - Err(Error::::AlreadyBonded)? - } + ensure!(!>::exists(&stash), Error::::AlreadyBonded); let controller = T::Lookup::lookup(controller)?; + ensure!(!>::exists(&controller), Error::::AlreadyPaired); - if >::exists(&controller) { - Err(Error::::AlreadyPaired)? - } - - // reject a bond which is considered to be _dust_. - if value < T::Currency::minimum_balance() { - Err(Error::::InsufficientValue)? + let ledger = StakingLedger { + stash: stash.clone(), + ..Default::default() + }; + let now = T::Time::now(); + let promise_month = promise_month.min(36); + + match value { + StakingBalances::RingBalance(r) => { + // reject a bond which is considered to be _dust_. + ensure!( + r >= T::RingCurrency::minimum_balance(), + Error::::InsufficientValue, + ); + + let stash_balance = T::RingCurrency::free_balance(&stash); + let value = r.min(stash_balance); + + Self::bond_ring(&stash, &controller, value, promise_month, ledger); + + >::mutate(|r| *r += value); + Self::deposit_event(RawEvent::BondRing(value, now, promise_month)); + }, + StakingBalances::KtonBalance(k) => { + // reject a bond which is considered to be _dust_. + ensure!( + k >= T::KtonCurrency::minimum_balance(), + Error::::InsufficientValue, + ); + + let stash_balance = T::KtonCurrency::free_balance(&stash); + let value = k.min(stash_balance); + + Self::bond_kton(&controller, value, ledger); + + >::mutate(|k| *k += value); + Self::deposit_event(RawEvent::BondKton(value)); + }, } // You're auto-bonded forever, here. We might improve this by only bonding when // you actually validate/nominate and remove once you unbond __everything__. >::insert(&stash, &controller); >::insert(&stash, payee); - - let stash_balance = T::Currency::free_balance(&stash); - let value = value.min(stash_balance); - let item = StakingLedger { stash, total: value, active: value, unlocking: vec![] }; - Self::update_ledger(&controller, &item); } /// Add some extra amount that have appeared in the stash `free_balance` into the balance up @@ -888,106 +1004,230 @@ decl_module! { /// - One DB entry. /// # #[weight = SimpleDispatchInfo::FixedNormal(500_000)] - fn bond_extra(origin, #[compact] max_additional: BalanceOf) { + fn bond_extra( + origin, + max_additional: StakingBalances, KtonBalance>, + promise_month: TS + ) { let stash = ensure_signed(origin)?; - let controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; - let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + let now = T::Time::now(); + let promise_month = promise_month.min(36); + + match max_additional { + StakingBalances::RingBalance(r) => { + let stash_balance = T::RingCurrency::free_balance(&stash); + if let Some(extra) = stash_balance.checked_sub(&ledger.active_ring) { + let extra = extra.min(r); - let stash_balance = T::Currency::free_balance(&stash); + Self::bond_ring(&stash, &controller, extra, promise_month, ledger); - if let Some(extra) = stash_balance.checked_sub(&ledger.total) { - let extra = extra.min(max_additional); - ledger.total += extra; - ledger.active += extra; - Self::update_ledger(&controller, &ledger); + >::mutate(|r| *r += extra); + Self::deposit_event(RawEvent::BondRing(extra, now, promise_month)); + } + }, + StakingBalances::KtonBalance(k) => { + let stash_balance = T::KtonCurrency::free_balance(&stash); + if let Some(extra) = stash_balance.checked_sub(&ledger.active_kton) { + let extra = extra.min(k); + + Self::bond_kton(&controller, extra, ledger); + + >::mutate(|k| *k += extra); + Self::deposit_event(RawEvent::BondKton(extra)); + } + }, } } + // TODO: doc + fn deposit_extra(origin, value: RingBalance, promise_month: TS) { + let stash = ensure_signed(origin)?; + let controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; + let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + let now = T::Time::now(); + let promise_month = promise_month.max(3).min(36); + let mut ledger = Self::clear_mature_deposits(ledger); + let StakingLedger { + stash, + active_ring, + active_deposit_ring, + deposit_items, + .. + } = &mut ledger; + let value = value.min(*active_ring - *active_deposit_ring); + // for now, kton_return is free + // mint kton + let kton_return = inflation::compute_kton_return::(value, promise_month); + let kton_positive_imbalance = T::KtonCurrency::deposit_creating(stash, kton_return); + + T::KtonReward::on_unbalanced(kton_positive_imbalance); + *active_deposit_ring += value; + deposit_items.push(TimeDepositItem { + value, + start_time: now, + expire_time: now + >::saturated_from((promise_month * MONTH_IN_MILLISECONDS).into()), + }); + + >::insert(&controller, ledger); + Self::deposit_event(RawEvent::BondRing(value, now, promise_month)); + } + /// Schedule a portion of the stash to be unlocked ready for transfer out after the bond /// period ends. If this leaves an amount actively bonded less than /// T::Currency::minimum_balance(), then it is increased to the full amount. /// - /// Once the unlock period is done, you can call `withdraw_unbonded` to actually move - /// the funds out of management ready for transfer. + /// Once the unlock period is done, the funds will be withdrew automatically and ready for transfer. /// /// No more than a limited number of unlocking chunks (see `MAX_UNLOCKING_CHUNKS`) - /// can co-exists at the same time. In that case, [`Call::withdraw_unbonded`] need + /// can co-exists at the same time. In that case, [`StakingLock::shrink`] need /// to be called first to remove some of the chunks (if possible). /// /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. /// - /// See also [`Call::withdraw_unbonded`]. - /// /// # /// - Independent of the arguments. Limited but potentially exploitable complexity. /// - 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`. + /// will cause a new entry to be inserted into a vector (`StakingLock.unbondings`) kept in storage. /// - One DB entry. /// #[weight = SimpleDispatchInfo::FixedNormal(400_000)] - fn unbond(origin, #[compact] value: BalanceOf) { + fn unbond(origin, value: StakingBalances, KtonBalance>) { let controller = ensure_signed(origin)?; - let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + let mut ledger = Self::clear_mature_deposits(Self::ledger(&controller).ok_or(Error::::NotController)?); + let StakingLedger { + active_ring, + active_deposit_ring, + active_kton, + ring_staking_lock, + kton_staking_lock, + .. + } = &mut ledger; + let now = T::Time::now(); + + ring_staking_lock.shrink(now); + kton_staking_lock.shrink(now); + + // due to the macro parser, we've to add a bracket + // actually, this's totally wrong: + // `a as u32 + b as u32 < c` + // workaround: + // 1. `(a as u32 + b as u32) < c` + // 2. `let c_ = a as u32 + b as u32; c_ < c` ensure!( - ledger.unlocking.len() < MAX_UNLOCKING_CHUNKS, + (ring_staking_lock.unbondings.len() + kton_staking_lock.unbondings.len()) < MAX_UNLOCKING_CHUNKS, Error::::NoMoreChunks, ); - let mut value = value.min(ledger.active); + match value { + StakingBalances::RingBalance(r) => { + // only active normal ring can be unbond + // active_ring = active_normal_ring + active_deposit_ring + let active_normal_ring = *active_ring - *active_deposit_ring; + let available_unbond_ring = r.min(active_normal_ring); - if !value.is_zero() { - ledger.active -= value; + if !available_unbond_ring.is_zero() { + *active_ring -= available_unbond_ring; + ring_staking_lock.unbondings.push(NormalLock { + amount: available_unbond_ring, + until: now + T::BondingDuration::get(), + }); - // Avoid there being a dust balance left in the staking system. - if ledger.active < T::Currency::minimum_balance() { - value += ledger.active; - ledger.active = Zero::zero(); - } + Self::update_ledger(&controller, &mut ledger, value); + + >::mutate(|r| *r -= available_unbond_ring); + Self::deposit_event(RawEvent::UnbondRing(available_unbond_ring, now)); + } + }, + StakingBalances::KtonBalance(k) => { + let unbond_kton = k.min(*active_kton); + + if !unbond_kton.is_zero() { + *active_kton -= unbond_kton; + kton_staking_lock.unbondings.push(NormalLock { + amount: unbond_kton, + until: now + T::BondingDuration::get(), + }); - let era = Self::current_era() + T::BondingDuration::get(); - ledger.unlocking.push(UnlockChunk { value, era }); - Self::update_ledger(&controller, &ledger); + Self::update_ledger(&controller, &mut ledger, value); + + >::mutate(|k| *k -= unbond_kton); + Self::deposit_event(RawEvent::UnbondKton(unbond_kton, now)); + } + }, } } - /// Remove any unlocked chunks from the `unlocking` queue from our management. - /// - /// This essentially frees up that balance to be used by the stash account to do - /// whatever it wants. - /// - /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. - /// - /// See also [`Call::unbond`]. - /// - /// # - /// - Could be dependent on the `origin` argument and how much `unlocking` chunks exist. - /// It implies `consolidate_unlocked` which loops over `Ledger.unlocking`, which is - /// indirectly user-controlled. See [`unbond`] for more detail. - /// - Contains a limited number of reads, yet the size of which could be large based on `ledger`. - /// - Writes are limited to the `origin` account key. - /// # - #[weight = SimpleDispatchInfo::FixedNormal(400_000)] - fn withdraw_unbonded(origin) { + // TODO: doc + fn claim_mature_deposits(origin) { let controller = ensure_signed(origin)?; - let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - let ledger = ledger.consolidate_unlocked(Self::current_era()); - - if ledger.unlocking.is_empty() && ledger.active.is_zero() { - // This account must have called `unbond()` with some value that caused the active - // portion to fall below existential deposit + will have no more unlocking chunks - // left. We can now safely remove this. - let stash = ledger.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); + let ledger = Self::clear_mature_deposits(Self::ledger(&controller).ok_or(Error::::NotController)?); + + >::insert(controller, ledger); + } + + // TODO: doc + fn try_claim_deposits_with_punish(origin, expire_time: MomentOf) { + let controller = ensure_signed(origin)?; + let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + let now = T::Time::now(); + + if expire_time <= now { + return Ok(()); } + + let StakingLedger { + stash, + active_deposit_ring, + deposit_items, + .. + } = &mut ledger; + + deposit_items.retain(|item| { + if item.expire_time != expire_time { + return true; + } + + let kton_slash = { + let passed_duration = (now - item.start_time).saturated_into::() / MONTH_IN_MILLISECONDS; + let plan_duration = (item.expire_time - item.start_time).saturated_into::() / MONTH_IN_MILLISECONDS; + + ( + inflation::compute_kton_return::(item.value, plan_duration) + - + inflation::compute_kton_return::(item.value, passed_duration) + ).max(1.into()) * 3.into() + }; + + // FIXME + // check total free balance and locked one + // strict on punishing in kton + if T::KtonCurrency::free_balance(stash) + .checked_sub(&kton_slash) + .and_then(|new_balance| { + T::KtonCurrency::ensure_can_withdraw( + stash, + kton_slash, + WithdrawReason::Transfer.into(), + new_balance + ).ok() + }) + .is_some() + { + *active_deposit_ring = active_deposit_ring.saturating_sub(item.value); + + let (imbalance, _) = T::KtonCurrency::slash(stash, kton_slash); + T::KtonSlash::on_unbalanced(imbalance); + + false + } else { + true + } + }); + + >::insert(&controller, ledger); } /// Declare the desire to validate for the origin controller. @@ -1008,6 +1248,7 @@ decl_module! { let controller = ensure_signed(origin)?; let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; let stash = &ledger.stash; + >::remove(stash); >::insert(stash, prefs); } @@ -1030,12 +1271,13 @@ decl_module! { let controller = ensure_signed(origin)?; let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; let stash = &ledger.stash; + ensure!(!targets.is_empty(), Error::::EmptyTargets); + let targets = targets.into_iter() .take(MAX_NOMINATIONS) .map(|t| T::Lookup::lookup(t)) - .collect::, _>>()?; - + .collect::, _>>()?; let nominations = Nominations { targets, submitted_in: Self::current_era(), @@ -1061,6 +1303,7 @@ decl_module! { fn chill(origin) { let controller = ensure_signed(origin)?; let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + Self::chill_stash(&ledger.stash); } @@ -1080,6 +1323,7 @@ decl_module! { let controller = ensure_signed(origin)?; let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; let stash = &ledger.stash; + >::insert(stash, payee); } @@ -1099,9 +1343,9 @@ decl_module! { let stash = ensure_signed(origin)?; let old_controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; let controller = T::Lookup::lookup(controller)?; - if >::exists(&controller) { - Err(Error::::AlreadyPaired)? - } + + ensure!(!>::exists(&controller), Error::::AlreadyPaired); + if controller != old_controller { >::insert(&stash, &controller); if let Some(l) = >::take(&old_controller) { @@ -1110,6 +1354,8 @@ decl_module! { } } + // ----- Root calls. + /// The ideal number of validators. #[weight = SimpleDispatchInfo::FreeOperational] fn set_validator_count(origin, #[compact] new: u32) { @@ -1117,8 +1363,6 @@ decl_module! { ValidatorCount::put(new); } - // ----- Root calls. - /// Force there to be no new eras indefinitely. /// /// # @@ -1155,7 +1399,9 @@ decl_module! { ensure_root(origin)?; // remove the lock. - T::Currency::remove_lock(STAKING_ID, &stash); + T::RingCurrency::remove_lock(STAKING_ID, &stash); + T::KtonCurrency::remove_lock(STAKING_ID, &stash); + // remove all staking-related information. Self::kill_stash(&stash); } @@ -1180,29 +1426,30 @@ decl_module! { /// # #[weight = SimpleDispatchInfo::FreeOperational] fn cancel_deferred_slash(origin, era: EraIndex, slash_indices: Vec) { - T::SlashCancelOrigin::try_origin(origin) - .map(|_| ()) - .or_else(ensure_root)?; - - let mut slash_indices = slash_indices; - slash_indices.sort_unstable(); - let mut unapplied = ::UnappliedSlashes::get(&era); - - 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); - - unapplied.remove(index); - } - - ::UnappliedSlashes::insert(&era, &unapplied); +// T::SlashCancelOrigin::try_origin(origin) +// .map(|_| ()) +// .or_else(ensure_root)?; +// +// let mut slash_indices = slash_indices; +// slash_indices.sort_unstable(); +// let mut unapplied = ::UnappliedSlashes::get(&era); +// +// 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); +// +// unapplied.remove(index); +// } +// +// ::UnappliedSlashes::insert(&era, &unapplied); + unimplemented!() } } } @@ -1210,27 +1457,112 @@ decl_module! { impl Module { // PUBLIC IMMUTABLES + // FIXME /// The total balance that can be slashed from a stash account as of right now. - pub fn slashable_balance_of(stash: &T::AccountId) -> BalanceOf { - Self::bonded(stash) - .and_then(Self::ledger) - .map(|l| l.active) - .unwrap_or_default() + pub fn slashable_power_of(stash: &T::AccountId) -> Power { + // Self::bonded(stash) + // .and_then(Self::ledger) + // .map(|l| l.active) + // .unwrap_or_default() + unimplemented!() + } + + // TODO: doc + fn bond_ring( + stash: &T::AccountId, + controller: &T::AccountId, + value: RingBalance, + promise_month: TS, + mut ledger: StakingLedger, KtonBalance, MomentOf>, + ) { + ledger.active_ring = ledger.active_ring.saturating_add(value); + // if stash promise to a extra-lock + // there will be extra reward, kton, which + // can also be use to stake. + if promise_month >= 3 { + ledger.active_deposit_ring += value; + // for now, kton_return is free + // mint kton + let kton_return = inflation::compute_kton_return::(value, promise_month); + let kton_positive_imbalance = T::KtonCurrency::deposit_creating(&stash, kton_return); + let now = T::Time::now(); + + T::KtonReward::on_unbalanced(kton_positive_imbalance); + ledger.deposit_items.push(TimeDepositItem { + value, + start_time: now, + expire_time: now + >::saturated_from((promise_month * MONTH_IN_MILLISECONDS).into()), + }); + } + + Self::update_ledger(&controller, &mut ledger, StakingBalances::RingBalance(value)); + } + + // TODO: doc + fn bond_kton( + controller: &T::AccountId, + value: KtonBalance, + mut ledger: StakingLedger, KtonBalance, MomentOf>, + ) { + ledger.active_kton += value; + Self::update_ledger(&controller, &mut ledger, StakingBalances::KtonBalance(value)); + } + + // TODO: doc + pub fn clear_mature_deposits( + mut ledger: StakingLedger, KtonBalance, MomentOf>, + ) -> StakingLedger, KtonBalance, MomentOf> { + let now = T::Time::now(); + let StakingLedger { + active_deposit_ring, + deposit_items, + .. + } = &mut ledger; + + deposit_items.retain(|item| { + if item.expire_time > now { + true + } else { + *active_deposit_ring = active_deposit_ring.saturating_sub(item.value); + false + } + }); + + ledger } // MUTABLES (DANGEROUS) /// 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(controller: &T::AccountId, ledger: &StakingLedger>) { - // TODO - // T::Currency::set_lock( - // STAKING_ID, - // &ledger.stash, - // ledger.total, - // T::BlockNumber::max_value(), - // WithdrawReasons::all(), - // ); + fn update_ledger( + controller: &T::AccountId, + ledger: &mut StakingLedger, KtonBalance, MomentOf>, + staking_balance: StakingBalances, KtonBalance>, + ) { + match staking_balance { + StakingBalances::RingBalance(_) => { + ledger.ring_staking_lock.staking_amount = ledger.active_ring; + + T::RingCurrency::set_lock( + STAKING_ID, + &ledger.stash, + WithdrawLock::WithStaking(ledger.ring_staking_lock.clone()), + WithdrawReasons::all(), + ); + } + StakingBalances::KtonBalance(_) => { + ledger.kton_staking_lock.staking_amount = ledger.active_kton; + + T::KtonCurrency::set_lock( + STAKING_ID, + &ledger.stash, + WithdrawLock::WithStaking(ledger.kton_staking_lock.clone()), + WithdrawReasons::all(), + ); + } + } + >::insert(controller, ledger); } @@ -1247,32 +1579,41 @@ impl Module { /// 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> { + fn make_payout(stash: &T::AccountId, amount: RingBalance) -> Option> { let dest = Self::payee(stash); match dest { - RewardDestination::Controller => { - Self::bonded(stash).and_then(|controller| T::Currency::deposit_into_existing(&controller, amount).ok()) + RewardDestination::Controller => Self::bonded(stash) + .and_then(|controller| T::RingCurrency::deposit_into_existing(&controller, amount).ok()), + RewardDestination::Stash => T::RingCurrency::deposit_into_existing(stash, amount).ok(), + RewardDestination::Staked { promise_month } => { + // Self::bonded(stash) + // .and_then(|c| Self::ledger(&c).map(|l| (c, l))) + // .and_then(|(controller, mut l)| { + // l.active += amount; + // l.total += amount; + // let r = T::RingCurrency::deposit_into_existing(stash, amount).ok(); + // Self::update_ledger(&controller, &l); + // r + // }); + unimplemented!() } - RewardDestination::Stash => T::Currency::deposit_into_existing(stash, amount).ok(), - RewardDestination::Staked => Self::bonded(stash) - .and_then(|c| Self::ledger(&c).map(|l| (c, l))) - .and_then(|(controller, mut l)| { - l.active += amount; - l.total += amount; - let r = T::Currency::deposit_into_existing(stash, amount).ok(); - Self::update_ledger(&controller, &l); - r - }), } } /// 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 { + fn reward_validator( + stash: &T::AccountId, + reward: RingBalance, + ) -> ( + RingPositiveImbalance, + (RingBalance, Vec>>), + ) { let off_the_table = Self::validators(stash).commission * reward; let reward = reward.saturating_sub(off_the_table); - let mut imbalance = >::zero(); + let mut imbalance = >::zero(); + let mut nominators_reward = vec![]; let validator_cut = if reward.is_zero() { Zero::zero() } else { @@ -1281,35 +1622,41 @@ impl Module { 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)); + let nominator_reward = per_u64 * reward; + + imbalance.maybe_subsume(Self::make_payout(&i.who, nominator_reward)); + nominators_reward.push(NominatorReward { + who: i.who.to_owned(), + amount: nominator_reward, + }); } let per_u64 = Perbill::from_rational_approximation(exposure.own, total); per_u64 * reward }; + let validator_reward = validator_cut + off_the_table; - imbalance.maybe_subsume(Self::make_payout(stash, validator_cut + off_the_table)); + imbalance.maybe_subsume(Self::make_payout(stash, validator_reward)); - imbalance + (imbalance, (validator_reward, nominators_reward)) } /// Session has just ended. Provide the validator set for the next session if it's an era-end, along /// with the exposure of the prior validator set. fn new_session( session_index: SessionIndex, - ) -> Option<( - Vec, - Vec<(T::AccountId, Exposure>)>, - )> { + ) -> Option<(Vec, Vec<(T::AccountId, Exposure)>)> { 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, } + let validators = T::SessionInterface::validators(); let prior = validators .into_iter() @@ -1327,93 +1674,95 @@ impl Module { /// 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; - - // TODO - let (total_payout, max_payout) = inflation::compute_total_payout(); - - let mut total_imbalance = >::zero(); - - 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)); - } - } - - // 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; - }); - let bonding_duration = T::BondingDuration::get(); - - BondedEras::mutate(|bonded| { - bonded.push((current_era, start_session_index)); - - if current_era > bonding_duration { - let first_kept = current_era - bonding_duration; - - // prune out everything that's from before the first-kept index. - let n_to_prune = bonded.iter().take_while(|&&(era_idx, _)| era_idx < first_kept).count(); - - // kill slashing metadata. - for (pruned_era, _) in bonded.drain(..n_to_prune) { - slashing::clear_era_metadata::(pruned_era); - } - - if let Some(&(_, first_session)) = bonded.first() { - T::SessionInterface::prune_historical_up_to(first_session); - } - } - }); - - // Reassign all Stakers. - let (_slot_stake, maybe_new_validators) = Self::select_validators(); - Self::apply_unapplied_slashes(current_era); - - maybe_new_validators + // // 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; + // + // // FIXME + // let (total_payout, max_payout) = inflation::compute_total_payout(); + // + // let mut total_imbalance = >::zero(); + // + // 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)); + // } + // } + // + // // 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; + // }); + // let bonding_duration = T::BondingDuration::get(); + // + // BondedEras::mutate(|bonded| { + // bonded.push((current_era, start_session_index)); + // + // if current_era > bonding_duration { + // let first_kept = current_era - bonding_duration; + // + // // prune out everything that's from before the first-kept index. + // let n_to_prune = bonded.iter().take_while(|&&(era_idx, _)| era_idx < first_kept).count(); + // + // // kill slashing metadata. + // for (pruned_era, _) in bonded.drain(..n_to_prune) { + // slashing::clear_era_metadata::(pruned_era); + // } + // + // if let Some(&(_, first_session)) = bonded.first() { + // T::SessionInterface::prune_historical_up_to(first_session); + // } + // } + // }); + // + // // Reassign all Stakers. + // let (_slot_stake, maybe_new_validators) = Self::select_validators(); + // Self::apply_unapplied_slashes(current_era); + // + // maybe_new_validators + unimplemented!() } /// Apply previously-unapplied slashes on the beginning of a new era, after a delay. fn apply_unapplied_slashes(current_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); - for era in (*earliest)..keep_from { - let era_slashes = ::UnappliedSlashes::take(&era); - for slash in era_slashes { - slashing::apply_slash::(slash); - } - } - - *earliest = (*earliest).max(keep_from) - } - }) + // 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); + // for era in (*earliest)..keep_from { + // let era_slashes = ::UnappliedSlashes::take(&era); + // for slash in era_slashes { + // slashing::apply_slash::(slash); + // } + // } + // + // *earliest = (*earliest).max(keep_from) + // } + // }) + unimplemented!() } /// Select a new validator set from the assembled stakers and their role preferences. @@ -1421,144 +1770,143 @@ impl Module { /// Returns the new `SlotStake` value and a set of newly selected _stash_ IDs. /// /// Assumes storage is coherent with the declaration. - fn select_validators() -> (BalanceOf, 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()]); - all_nominators.push(self_vote); - who - }) - .collect::>(); - - let nominator_votes = >::enumerate().map(|(nominator, nominations)| { - let Nominations { - submitted_in, - mut targets, - suppressed: _, - } = nominations; - - // Filter out nomination targets which were nominated before the most recent - // slashing span. - targets.retain(|stash| { - ::SlashingSpans::get(&stash).map_or(true, |spans| submitted_in >= spans.last_start()) - }); - - (nominator, targets) - }); - all_nominators.extend(nominator_votes); - - let maybe_phragmen_result = sp_phragmen::elect::<_, _, _, T::CurrencyToVote>( - Self::validator_count() as usize, - Self::minimum_validator_count().max(1) as usize, - all_validators, - all_nominators, - Self::slashable_balance_of, - ); - - if let Some(phragmen_result) = maybe_phragmen_result { - let elected_stashes = phragmen_result - .winners - .iter() - .map(|(s, _)| s.clone()) - .collect::>(); - let assignments = phragmen_result.assignments; - - let to_votes = - |b: BalanceOf| , u64>>::convert(b) as ExtendedBalance; - let to_balance = - |e: ExtendedBalance| >>::convert(e); - - let mut supports = sp_phragmen::build_support_map::<_, _, _, T::CurrencyToVote>( - &elected_stashes, - &assignments, - Self::slashable_balance_of, - ); - - if cfg!(feature = "equalize") { - let mut staked_assignments: Vec<(T::AccountId, Vec>)> = - Vec::with_capacity(assignments.len()); - for (n, assignment) in assignments.iter() { - let mut staked_assignment: Vec> = - Vec::with_capacity(assignment.len()); - - // If this is a self vote, then we don't need to equalise it at all. While the - // staking system does not allow nomination and validation at the same time, - // this must always be 100% support. - if assignment.len() == 1 && assignment[0].0 == *n { - continue; - } - for (c, per_thing) in assignment.iter() { - let nominator_stake = to_votes(Self::slashable_balance_of(n)); - let other_stake = *per_thing * nominator_stake; - staked_assignment.push((c.clone(), other_stake)); - } - staked_assignments.push((n.clone(), staked_assignment)); - } - - let tolerance = 0_u128; - let iterations = 2_usize; - sp_phragmen::equalize::<_, _, T::CurrencyToVote, _>( - staked_assignments, - &mut supports, - tolerance, - iterations, - 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(); - for (c, s) in supports.into_iter() { - // build `struct exposure` from `support` - let exposure = Exposure { - own: to_balance(s.own), - // 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: to_balance(s.total), - others: s - .others - .into_iter() - .map(|(who, value)| IndividualExposure { - who, - value: to_balance(value), - }) - .collect::>>(), - }; - if exposure.total < slot_stake { - slot_stake = exposure.total; - } - >::insert(&c, exposure.clone()); - } - - // Update slot stake. - >::put(&slot_stake); - - // Set the new validator set in sessions. - >::put(&elected_stashes); - - // 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)) - } else { - // There were not enough candidates for even our minimal level of functionality. - // This is bad. - // We should probably disable all functionality except for block production - // and let the chain keep producing blocks until we can decide on a sufficiently - // substantial set. - // TODO: #2494 - (Self::slot_stake(), None) - } + fn select_validators() -> (Power, 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()]); + // all_nominators.push(self_vote); + // who + // }) + // .collect::>(); + // let nominator_votes = >::enumerate().map(|(nominator, nominations)| { + // let Nominations { + // submitted_in, + // mut targets, + // suppressed: _, + // } = nominations; + // + // // Filter out nomination targets which were nominated before the most recent + // // slashing span. + // targets.retain(|stash| { + // ::SlashingSpans::get(&stash).map_or(true, |spans| submitted_in >= spans.last_start()) + // }); + // + // (nominator, targets) + // }); + // + // all_nominators.extend(nominator_votes); + // + // let maybe_phragmen_result = sp_phragmen::elect::<_, _, _, T::CurrencyToVote>( + // Self::validator_count() as usize, + // Self::minimum_validator_count().max(1) as usize, + // all_validators, + // all_nominators, + // Self::slashable_balance_of, + // ); + // + // if let Some(phragmen_result) = maybe_phragmen_result { + // let elected_stashes = phragmen_result + // .winners + // .iter() + // .map(|(s, _)| s.clone()) + // .collect::>(); + // let assignments = phragmen_result.assignments; + // let to_votes = + // |b: BalanceOf| , u64>>::convert(b) as ExtendedBalance; + // let to_balance = + // |e: ExtendedBalance| >>::convert(e); + // let mut supports = sp_phragmen::build_support_map::<_, _, _, T::CurrencyToVote>( + // &elected_stashes, + // &assignments, + // Self::slashable_balance_of, + // ); + // + // if cfg!(feature = "equalize") { + // let mut staked_assignments: Vec<(T::AccountId, Vec>)> = + // Vec::with_capacity(assignments.len()); + // for (n, assignment) in assignments.iter() { + // let mut staked_assignment: Vec> = + // Vec::with_capacity(assignment.len()); + // + // // If this is a self vote, then we don't need to equalise it at all. While the + // // staking system does not allow nomination and validation at the same time, + // // this must always be 100% support. + // if assignment.len() == 1 && assignment[0].0 == *n { + // continue; + // } + // for (c, per_thing) in assignment.iter() { + // let nominator_stake = to_votes(Self::slashable_balance_of(n)); + // let other_stake = *per_thing * nominator_stake; + // staked_assignment.push((c.clone(), other_stake)); + // } + // staked_assignments.push((n.clone(), staked_assignment)); + // } + // + // let tolerance = 0_u128; + // let iterations = 2_usize; + // sp_phragmen::equalize::<_, _, T::CurrencyToVote, _>( + // staked_assignments, + // &mut supports, + // tolerance, + // iterations, + // 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(); + // for (c, s) in supports.into_iter() { + // // build `struct exposure` from `support` + // let exposure = Exposure { + // own: to_balance(s.own), + // // 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: to_balance(s.total), + // others: s + // .others + // .into_iter() + // .map(|(who, value)| IndividualExposure { + // who, + // value: to_balance(value), + // }) + // .collect::>>(), + // }; + // if exposure.total < slot_stake { + // slot_stake = exposure.total; + // } + // + // >::insert(&c, exposure.clone()); + // } + // + // // Update slot stake. + // >::put(&slot_stake); + // // Set the new validator set in sessions. + // >::put(&elected_stashes); + // + // // 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)) + // } else { + // // There were not enough candidates for even our minimal level of functionality. + // // This is bad. + // // We should probably disable all functionality except for block production + // // and let the chain keep producing blocks until we can decide on a sufficiently + // // substantial set. + // // TODO: #2494 + // (Self::slot_stake(), None) + // } + unimplemented!() } /// Remove all associated data of a stash account from the staking system. @@ -1569,14 +1917,14 @@ impl Module { /// - Immediately when an account's balance falls below existential deposit. /// - 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); - } >::remove(stash); >::remove(stash); >::remove(stash); + if let Some(controller) = >::take(stash) { + >::remove(&controller); + } - slashing::clear_stash_metadata::(stash); + // slashing::clear_stash_metadata::(stash); } /// Add reward points to validators using their stash account ID. @@ -1593,7 +1941,7 @@ impl Module { /// 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(); + let current_elected = Self::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); @@ -1608,7 +1956,7 @@ impl Module { /// validator, thus duplicates are handled. pub fn reward_by_indices(validators_points: impl IntoIterator) { // TODO: This can be optimised once #3302 is implemented. - let current_elected_len = >::current_elected().len() as u32; + let current_elected_len = Self::current_elected().len() as u32; CurrentEraPointsEarned::mutate(|rewards| { for (validator_index, points) in validators_points.into_iter() { @@ -1635,14 +1983,11 @@ impl pallet_session::OnSessionEnding for Module { } } -impl OnSessionEnding>> for Module { +impl OnSessionEnding> for Module { fn on_session_ending( _ending: SessionIndex, start_session: SessionIndex, - ) -> Option<( - Vec, - Vec<(T::AccountId, Exposure>)>, - )> { + ) -> Option<(Vec, Vec<(T::AccountId, Exposure)>)> { Self::ensure_storage_upgraded(); Self::new_session(start_session - 1) } @@ -1670,7 +2015,7 @@ impl pallet_authorship::EventHandler(sp_std::marker::PhantomData); +pub struct StashOf(PhantomData); impl Convert> for StashOf { fn convert(controller: T::AccountId) -> Option { @@ -1678,19 +2023,9 @@ impl Convert> for StashOf { } } -/// A typed conversion from stash account ID to the current exposure of nominators -/// on that account. -pub struct ExposureOf(sp_std::marker::PhantomData); - -impl Convert>>> for ExposureOf { - fn convert(validator: T::AccountId) -> Option>> { - Some(>::stakers(&validator)) - } -} - impl SelectInitialValidators for Module { fn select_initial_validators() -> Option> { - >::select_validators().1 + Self::select_validators().1 } } @@ -1699,7 +2034,7 @@ impl OnOffenceHandler::AccountId>, T: pallet_session::historical::Trait< - FullIdentification = Exposure<::AccountId, BalanceOf>, + FullIdentification = Exposure<::AccountId, Power>, FullIdentificationOf = ExposureOf, >, T::SessionHandler: pallet_session::SessionHandler<::AccountId>, @@ -1707,81 +2042,83 @@ where T::SelectInitialValidators: pallet_session::SelectInitialValidators<::AccountId>, T::ValidatorIdOf: Convert<::AccountId, Option<::AccountId>>, { + // FIXME fn on_offence( offenders: &[OffenceDetails>], slash_fraction: &[Perbill], slash_session: SessionIndex, ) { - >::ensure_storage_upgraded(); - - let reward_proportion = SlashRewardFraction::get(); - - let era_now = Self::current_era(); - let window_start = era_now.saturating_sub(T::BondingDuration::get()); - let current_era_start_session = CurrentEraStartSessionIndex::get(); - - // fast path for current-era report - most likely. - let slash_era = if slash_session >= current_era_start_session { - era_now - } else { - let eras = BondedEras::get(); - - // reverse because it's more likely to find reports from recent eras. - match eras - .iter() - .rev() - .filter(|&&(_, ref sesh)| sesh <= &slash_session) - .next() - { - None => return, // before bonding period. defensive - should be filtered out. - Some(&(ref slash_era, _)) => *slash_era, - } - }; - - ::EarliestUnappliedSlash::mutate(|earliest| { - if earliest.is_none() { - *earliest = Some(era_now) - } - }); - - let slash_defer_duration = T::SlashDeferDuration::get(); - - for (details, slash_fraction) in offenders.iter().zip(slash_fraction) { - let stash = &details.offender.0; - let exposure = &details.offender.1; - - // Skip if the validator is invulnerable. - if Self::invulnerables().contains(stash) { - continue; - } - - let unapplied = slashing::compute_slash::(slashing::SlashParams { - stash, - slash: *slash_fraction, - exposure, - slash_era, - window_start, - now: era_now, - reward_proportion, - }); - - if let Some(mut unapplied) = unapplied { - unapplied.reporters = details.reporters.clone(); - if slash_defer_duration == 0 { - // apply right away. - slashing::apply_slash::(unapplied); - } else { - // defer to end of some `slash_defer_duration` from now. - ::UnappliedSlashes::mutate(era_now, move |for_later| for_later.push(unapplied)); - } - } - } + Self::ensure_storage_upgraded(); + // + // let reward_proportion = SlashRewardFraction::get(); + // + // let era_now = Self::current_era(); + // let window_start = era_now.saturating_sub(T::BondingDuration::get()); + // let current_era_start_session = CurrentEraStartSessionIndex::get(); + // + // // fast path for current-era report - most likely. + // let slash_era = if slash_session >= current_era_start_session { + // era_now + // } else { + // let eras = BondedEras::get(); + // + // // reverse because it's more likely to find reports from recent eras. + // match eras + // .iter() + // .rev() + // .filter(|&&(_, ref sesh)| sesh <= &slash_session) + // .next() + // { + // None => return, // before bonding period. defensive - should be filtered out. + // Some(&(ref slash_era, _)) => *slash_era, + // } + // }; + // + // ::EarliestUnappliedSlash::mutate(|earliest| { + // if earliest.is_none() { + // *earliest = Some(era_now) + // } + // }); + // + // let slash_defer_duration = T::SlashDeferDuration::get(); + // + // for (details, slash_fraction) in offenders.iter().zip(slash_fraction) { + // let stash = &details.offender.0; + // let exposure = &details.offender.1; + // + // // Skip if the validator is invulnerable. + // if Self::invulnerables().contains(stash) { + // continue; + // } + // + // let unapplied = slashing::compute_slash::(slashing::SlashParams { + // stash, + // slash: *slash_fraction, + // exposure, + // slash_era, + // window_start, + // now: era_now, + // reward_proportion, + // }); + // + // if let Some(mut unapplied) = unapplied { + // unapplied.reporters = details.reporters.clone(); + // if slash_defer_duration == 0 { + // // apply right away. + // slashing::apply_slash::(unapplied); + // } else { + // // defer to end of some `slash_defer_duration` from now. + // ::UnappliedSlashes::mutate(era_now, move |for_later| for_later.push(unapplied)); + // } + // } + // } + unimplemented!() } } /// Filter historical offences out and only allow those from the bonding period. pub struct FilterHistoricalOffences { - _inner: sp_std::marker::PhantomData<(T, R)>, + _inner: PhantomData<(T, R)>, } impl ReportOffence for FilterHistoricalOffences, R> From 983c255ef61eb5229f6893ac0352a14a4463a102 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Tue, 7 Jan 2020 19:05:20 +0800 Subject: [PATCH 05/17] update: doc --- 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 afc1bfc8b..d061bab6e 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -1467,7 +1467,7 @@ impl Module { unimplemented!() } - // TODO: doc + // Update the ledger while bonding ring and compute the kton should return. fn bond_ring( stash: &T::AccountId, controller: &T::AccountId, @@ -1498,7 +1498,7 @@ impl Module { Self::update_ledger(&controller, &mut ledger, StakingBalances::RingBalance(value)); } - // TODO: doc + // Update the ledger while bonding controller with kton. fn bond_kton( controller: &T::AccountId, value: KtonBalance, From a2b3b14ae0fd2d6b169e4e115c87b6b956ac3022 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Thu, 9 Jan 2020 11:25:29 +0800 Subject: [PATCH 06/17] =?UTF-8?q?update:=20staking=20module,=20use=20times?= =?UTF-8?q?tamp=20for=20deposit=20lock,=20blocknumber=20for=20currency=20l?= =?UTF-8?q?ock=20-=20compile=20=E2=9C=94=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/node/runtime/src/constants.rs | 16 +- bin/node/runtime/src/lib.rs | 83 +++--- frame/balances/kton/src/lib.rs | 14 +- frame/balances/ring/src/lib.rs | 20 +- frame/staking/src/inflation.rs | 53 +++- frame/staking/src/lib.rs | 454 ++++++++++++++++-------------- 6 files changed, 355 insertions(+), 285 deletions(-) diff --git a/bin/node/runtime/src/constants.rs b/bin/node/runtime/src/constants.rs index fba4c7ac7..5ae17e336 100644 --- a/bin/node/runtime/src/constants.rs +++ b/bin/node/runtime/src/constants.rs @@ -20,14 +20,16 @@ pub mod currency { use node_primitives::Balance; - pub const MILLICENTS: Balance = 1_000_000_000; - pub const CENTS: Balance = 1_000 * MILLICENTS; // assume this is worth about a cent. - pub const DOLLARS: Balance = 100 * CENTS; + pub const NANO: Balance = 1; + pub const MICRO: Balance = 1_000 * NANO; + pub const MILLI: Balance = 1_000 * MICRO; + pub const COIN: Balance = 1_000 * MILLI; } /// Time. pub mod time { - use node_primitives::{Moment, BlockNumber}; + use node_primitives::{BlockNumber, Moment}; + use sp_staking::SessionIndex; /// Since BABE is probabilistic this is the average expected block time that /// we are targetting. Blocks will be produced at a minimum duration defined @@ -65,4 +67,10 @@ pub mod time { pub const MINUTES: BlockNumber = 60 / (SECS_PER_BLOCK as BlockNumber); pub const HOURS: BlockNumber = MINUTES * 60; pub const DAYS: BlockNumber = HOURS * 24; + + pub const SESSION_DURATION: BlockNumber = EPOCH_DURATION_IN_SLOTS as _; + // Develop + // pub const ERA_DURATION: SessionIndex = 3; + // Production + pub const ERA_DURATION: SessionIndex = 6; } diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 39137b92f..8d9fccfc3 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -46,6 +46,7 @@ use node_primitives::{AccountId, AccountIndex, Balance, BlockNumber, Hash, Index use pallet_contracts_rpc_runtime_api::ContractExecResult; use pallet_grandpa::{fg_primitives, AuthorityList as GrandpaAuthorityList}; use pallet_im_online::sr25519::AuthorityId as ImOnlineId; +use pallet_staking::{EraIndex, Exposure, ExposureOf, StashOf}; use pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo; use sp_api::impl_runtime_apis; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; @@ -62,6 +63,7 @@ use sp_runtime::{ traits::{self, BlakeTwo256, Block as BlockT, NumberFor, OpaqueKeys, SaturatedConversion, StaticLookup}, ApplyExtrinsicResult, Perbill, Permill, }; +use sp_staking::SessionIndex; use sp_std::vec::Vec; #[cfg(any(feature = "std", test))] use sp_version::NativeVersion; @@ -134,9 +136,9 @@ impl frame_system::Trait for Runtime { parameter_types! { // One storage item; value is size 4+4+16+32 bytes = 56 bytes. - pub const MultisigDepositBase: Balance = 30 * CENTS; + pub const MultisigDepositBase: Balance = 30 * MILLI; // Additional storage item size of 32 bytes. - pub const MultisigDepositFactor: Balance = 5 * CENTS; + pub const MultisigDepositFactor: Balance = 5 * MILLI; pub const MaxSignatories: u16 = 100; } @@ -168,9 +170,9 @@ impl pallet_indices::Trait for Runtime { } parameter_types! { - pub const ExistentialDeposit: Balance = 1 * DOLLARS; - pub const TransferFee: Balance = 1 * CENTS; - pub const CreationFee: Balance = 1 * CENTS; + pub const ExistentialDeposit: Balance = 1 * COIN; + pub const TransferFee: Balance = 1 * MILLI; + pub const CreationFee: Balance = 1 * MILLI; } impl pallet_ring::Trait for Runtime { @@ -183,22 +185,19 @@ impl pallet_ring::Trait for Runtime { type ExistentialDeposit = ExistentialDeposit; type TransferFee = TransferFee; type CreationFee = CreationFee; - - type Time = Timestamp; } impl pallet_kton::Trait for Runtime { type Balance = Balance; type Event = Event; type RingCurrency = Balances; type TransferPayment = Balances; + type ExistentialDeposit = ExistentialDeposit; type TransferFee = TransferFee; - - type Time = Timestamp; } parameter_types! { - pub const TransactionBaseFee: Balance = 1 * CENTS; - pub const TransactionByteFee: Balance = 10 * MILLICENTS; + pub const TransactionBaseFee: Balance = 1 * MILLI; + pub const TransactionByteFee: Balance = 10 * MICRO; // setting this to zero will disable the weight fee. pub const WeightFeeCoefficient: Balance = 1_000; // for a sane configuration, this should always be less than `AvailableBlockRatio`. @@ -250,7 +249,7 @@ parameter_types! { impl pallet_session::Trait for Runtime { type Event = Event; type ValidatorId = ::AccountId; - type ValidatorIdOf = pallet_staking::StashOf; + type ValidatorIdOf = StashOf; type ShouldEndSession = Babe; type OnSessionEnding = Staking; type SessionHandler = ::KeyTypeIdProviders; @@ -260,8 +259,8 @@ impl pallet_session::Trait for Runtime { } impl pallet_session::historical::Trait for Runtime { - type FullIdentification = pallet_staking::Exposure; - type FullIdentificationOf = pallet_staking::ExposureOf; + type FullIdentification = Exposure; + type FullIdentificationOf = ExposureOf; } pallet_staking_reward_curve::build! { @@ -276,25 +275,41 @@ pallet_staking_reward_curve::build! { } parameter_types! { - pub const SessionsPerEra: sp_staking::SessionIndex = 6; - pub const BondingDuration: pallet_staking::EraIndex = 24 * 28; - pub const SlashDeferDuration: pallet_staking::EraIndex = 24 * 7; // 1/4 the bonding duration. + pub const BlocksPerSession: BlockNumber = EPOCH_DURATION_IN_BLOCKS; + pub const SessionsPerEra: SessionIndex = ERA_DURATION; + pub const BondingDurationInEra: EraIndex = 24 * 28; + pub const BondingDurationInBlockNumber: BlockNumber = 24 * 28 * ERA_DURATION * EPOCH_DURATION_IN_BLOCKS; + pub const SlashDeferDuration: EraIndex = 24 * 7; // 1/4 the bonding duration. + + // decimal 9 + pub const Cap: Balance = 1_000_000_000 * COIN; + // Date in Los Angeles*: 12/25/2019, 10:58:29 PM + // Date in Berlin* :12/26/2019, 1:58:29 PM + // Date in Beijing*: 12/26/2019, 12:58:29 PM + // Date in New York* :12/26/2019, 12:58:29 AM + pub const GenesisTime: Moment = 1_577_339_909_000; } impl pallet_staking::Trait for Runtime { - type Currency = Balances; type Time = Timestamp; type CurrencyToVote = CurrencyToVoteHandler; - type RewardRemainder = Treasury; type Event = Event; - type Slash = Treasury; // send the slashed funds to the treasury. - type Reward = (); // rewards are minted from the void type SessionsPerEra = SessionsPerEra; - type BondingDuration = BondingDuration; + type BondingDurationInEra = BondingDurationInEra; + type BondingDurationInBlockNumber = BondingDurationInBlockNumber; type SlashDeferDuration = SlashDeferDuration; /// A super-majority of the council can cancel the slash. type SlashCancelOrigin = pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>; type SessionInterface = Self; + type RingCurrency = Balances; + type RingRewardRemainder = Treasury; + type RingSlash = (); + type RingReward = (); + type KtonCurrency = Kton; + type KtonSlash = (); + type KtonReward = (); + type Cap = Cap; + type GenesisTime = GenesisTime; } type CouncilCollective = pallet_collective::Instance1; @@ -323,7 +338,7 @@ impl pallet_membership::Trait for Runtime { parameter_types! { pub const ProposalBond: Permill = Permill::from_percent(5); - pub const ProposalBondMinimum: Balance = 1 * DOLLARS; + pub const ProposalBondMinimum: Balance = 1 * COIN; pub const SpendPeriod: BlockNumber = 1 * DAYS; pub const Burn: Permill = Permill::from_percent(50); } @@ -341,15 +356,15 @@ impl pallet_treasury::Trait for Runtime { } parameter_types! { - pub const ContractTransferFee: Balance = 1 * CENTS; - pub const ContractCreationFee: Balance = 1 * CENTS; - pub const ContractTransactionBaseFee: Balance = 1 * CENTS; - pub const ContractTransactionByteFee: Balance = 10 * MILLICENTS; - pub const ContractFee: Balance = 1 * CENTS; - pub const TombstoneDeposit: Balance = 1 * DOLLARS; - pub const RentByteFee: Balance = 1 * DOLLARS; - pub const RentDepositOffset: Balance = 1000 * DOLLARS; - pub const SurchargeReward: Balance = 150 * DOLLARS; + pub const ContractTransferFee: Balance = 1 * MILLI; + pub const ContractCreationFee: Balance = 1 * MILLI; + pub const ContractTransactionBaseFee: Balance = 1 * MILLI; + pub const ContractTransactionByteFee: Balance = 10 * MICRO; + pub const ContractFee: Balance = 1 * MILLI; + pub const TombstoneDeposit: Balance = 1 * COIN; + pub const RentByteFee: Balance = 1 * COIN; + pub const RentDepositOffset: Balance = 1000 * COIN; + pub const SurchargeReward: Balance = 150 * COIN; } impl pallet_contracts::Trait for Runtime { @@ -389,7 +404,7 @@ impl pallet_sudo::Trait for Runtime { type SubmitTransaction = TransactionSubmitter; parameter_types! { - pub const SessionDuration: BlockNumber = EPOCH_DURATION_IN_SLOTS as _; + pub const SessionDuration: BlockNumber = SESSION_DURATION; } impl pallet_im_online::Trait for Runtime { @@ -425,7 +440,7 @@ impl pallet_finality_tracker::Trait for Runtime { } parameter_types! { - pub const ReservationFee: Balance = 1 * DOLLARS; + pub const ReservationFee: Balance = 1 * COIN; pub const MinLength: usize = 3; pub const MaxLength: usize = 16; } diff --git a/frame/balances/kton/src/lib.rs b/frame/balances/kton/src/lib.rs index 2d61a1f49..f5775d66a 100644 --- a/frame/balances/kton/src/lib.rs +++ b/frame/balances/kton/src/lib.rs @@ -9,7 +9,7 @@ use codec::{Codec, Decode, Encode}; use frame_support::{ decl_error, decl_event, decl_module, decl_storage, traits::{ - Currency, ExistenceRequirement, Get, Imbalance, ReservableCurrency, SignedImbalance, Time, TryDrop, + Currency, ExistenceRequirement, Get, Imbalance, ReservableCurrency, SignedImbalance, TryDrop, UpdateBalanceOutcome, VestingCurrency, }, weights::SimpleDispatchInfo, @@ -30,7 +30,6 @@ use darwinia_support::{ BalanceLock, Fee, LockIdentifier, LockableCurrency, WithdrawLock, WithdrawReason, WithdrawReasons, }; -type MomentOf = <::Time as Time>::Moment; type RingBalance = <::RingCurrency as Currency<::AccountId>>::Balance; /// Struct to encode the vesting schedule of an individual account. @@ -81,10 +80,11 @@ pub trait Trait: frame_system::Trait { type RingCurrency: Currency; // TODO doc type TransferPayment: Fee>; + /// The minimum amount required to keep an account open. + type ExistentialDeposit: Get; + /// The fee required to make a transfer. type TransferFee: Get>; - // TODO doc - type Time: Time; } decl_event!( @@ -180,7 +180,7 @@ decl_storage! { pub ReservedBalance get(fn reserved_balance): map T::AccountId => T::Balance; /// Any liquidity locks on some account balances. - pub Locks get(fn locks): map T::AccountId => Vec>>; + pub Locks get(fn locks): map T::AccountId => Vec>; } add_extra_genesis { config(balances): Vec<(T::AccountId, T::Balance)>; @@ -542,7 +542,7 @@ where return Ok(()); } - let now = T::Time::now(); + let now = >::block_number(); if locks .into_iter() .all(|l| l.withdraw_lock.can_withdraw(now, new_balance) || !l.reasons.intersects(reasons)) @@ -737,7 +737,7 @@ impl LockableCurrency for Module where T::Balance: MaybeSerializeDeserialize + Debug, { - type Moment = MomentOf; + type Moment = T::BlockNumber; fn set_lock( id: LockIdentifier, diff --git a/frame/balances/ring/src/lib.rs b/frame/balances/ring/src/lib.rs index 206308c68..ae5fa60a9 100644 --- a/frame/balances/ring/src/lib.rs +++ b/frame/balances/ring/src/lib.rs @@ -169,7 +169,7 @@ use frame_support::{ decl_error, decl_event, decl_module, decl_storage, traits::{ Currency, ExistenceRequirement, Get, Imbalance, OnFreeBalanceZero, OnUnbalanced, ReservableCurrency, - SignedImbalance, Time, TryDrop, UpdateBalanceOutcome, VestingCurrency, + SignedImbalance, TryDrop, UpdateBalanceOutcome, VestingCurrency, }, weights::SimpleDispatchInfo, Parameter, StorageValue, @@ -189,8 +189,6 @@ use darwinia_support::{ BalanceLock, Fee, LockIdentifier, LockableCurrency, WithdrawLock, WithdrawReason, WithdrawReasons, }; -type MomentOf = <>::Time as Time>::Moment; - /// Struct to encode the vesting schedule of an individual account. #[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, RuntimeDebug)] pub struct VestingSchedule { @@ -249,9 +247,6 @@ pub trait Subtrait: frame_system::Trait { /// The fee required to create an account. type CreationFee: Get; - - // TODO doc - type Time: Time; } pub trait Trait: frame_system::Trait { @@ -293,9 +288,6 @@ pub trait Trait: frame_system::Trait { /// The fee required to create an account. type CreationFee: Get; - - // TODO doc - type Time: Time; } impl, I: Instance> Subtrait for T { @@ -305,8 +297,6 @@ impl, I: Instance> Subtrait for T { type ExistentialDeposit = T::ExistentialDeposit; type TransferFee = T::TransferFee; type CreationFee = T::CreationFee; - - type Time = T::Time; } decl_event!( @@ -411,7 +401,7 @@ decl_storage! { pub ReservedBalance get(fn reserved_balance): map T::AccountId => T::Balance; /// Any liquidity locks on some account balances. - pub Locks get(fn locks): map T::AccountId => Vec>>; + pub Locks get(fn locks): map T::AccountId => Vec>; } add_extra_genesis { config(balances): Vec<(T::AccountId, T::Balance)>; @@ -875,8 +865,6 @@ impl, I: Instance> Trait for ElevatedTrait { type ExistentialDeposit = T::ExistentialDeposit; type TransferFee = T::TransferFee; type CreationFee = T::CreationFee; - - type Time = T::Time; } impl, I: Instance> Currency for Module @@ -947,7 +935,7 @@ where return Ok(()); } - let now = T::Time::now(); + let now = >::block_number(); if locks .into_iter() .all(|l| l.withdraw_lock.can_withdraw(now, new_balance) || !l.reasons.intersects(reasons)) @@ -1191,7 +1179,7 @@ impl, I: Instance> LockableCurrency for Module where T::Balance: MaybeSerializeDeserialize + Debug, { - type Moment = MomentOf; + type Moment = T::BlockNumber; fn set_lock( id: LockIdentifier, diff --git a/frame/staking/src/inflation.rs b/frame/staking/src/inflation.rs index 140ee65ed..11e39b8ec 100644 --- a/frame/staking/src/inflation.rs +++ b/frame/staking/src/inflation.rs @@ -1,29 +1,62 @@ use sp_core::U256; -use sp_runtime::{traits::SaturatedConversion, Perquintill}; +use sp_runtime::{ + traits::{IntegerSquareRoot, SaturatedConversion}, + Perbill, Perquintill, +}; use sp_std::convert::TryInto; -use crate::{KtonBalance, Power, RingBalance, Trait, TS}; +use crate::{KtonBalance, MomentOf, Power, RingBalance, TimeStamp, Trait}; + +type Balance = u128; // power is a mixture of ring and kton // power = ring_ratio * POWER_COUNT / 2 + kton_ratio * POWER_COUNT / 2 -pub fn compute_balance_power>(active: S, pool: S) -> Power { +pub fn compute_balance_power>(active: S, pool: S) -> Power { const HALF_POWER_COUNT: Power = 1_000_000_000 / 2; Perquintill::from_rational_approximation(active.saturated_into::(), pool.saturated_into::().max(1)) * HALF_POWER_COUNT } -// TODO -pub fn compute_total_payout() -> (N, N) -where - N: Clone + Default, -{ - (Default::default(), Default::default()) +// 1 - (99 / 100) ^ sqrt(year) +// () -> RingBalance +pub fn compute_total_payout( + era_duration: MomentOf, + living_time: MomentOf, + total_left: RingBalance, + payout_fraction: Perbill, +) -> (RingBalance, RingBalance) { + // Milliseconds per year for the Julian year (365.25 days). + const MILLISECONDS_PER_YEAR: TimeStamp = ((36525 * 24 * 60 * 60) / 100) * 1000; + + let maximum = { + let maximum = { + let era_duration = era_duration.saturated_into::(); + let portion = Perquintill::from_rational_approximation(era_duration, MILLISECONDS_PER_YEAR); + let total_left = total_left.saturated_into::(); + + portion * total_left + }; + let year = { + let living_time = living_time.saturated_into::(); + let year = living_time / MILLISECONDS_PER_YEAR + 1; + + year.saturated_into::() + }; + + maximum - maximum * 99_u128.pow(year.integer_sqrt()) / 100_u128.pow(year.integer_sqrt()) + }; + let payout = payout_fraction * maximum; + + ( + >::saturated_from::(payout), + >::saturated_from::(maximum), + ) } // consistent with the formula in smart contract in evolution land which can be found in // https://github.com/evolutionlandorg/bank/blob/master/contracts/GringottsBank.sol#L280 -pub fn compute_kton_return(value: RingBalance, months: TS) -> KtonBalance { +pub fn compute_kton_return(value: RingBalance, months: TimeStamp) -> KtonBalance { let value = value.saturated_into::(); let no = U256::from(67).pow(U256::from(months)); let de = U256::from(66).pow(U256::from(months)); diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index d061bab6e..7fd591755 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -211,9 +211,9 @@ //! //! The controller account can free a portion (or all) of the funds using the //! [`unbond`](enum.Call.html#variant.unbond) call. Note that the funds are not immediately -//! accessible. Instead, a duration denoted by [`BondingDuration`](./struct.BondingDuration.html) +//! accessible. Instead, a duration denoted by [`BondingDurationInEra`](./struct.BondingDurationInEra.html) //! (in number of eras) must pass until the funds can actually be removed. Once the -//! `BondingDuration` is over, the [`withdraw_unbonded`](./enum.Call.html#variant.withdraw_unbonded) +//! `BondingDurationInEra` is over, the [`withdraw_unbonded`](./enum.Call.html#variant.withdraw_unbonded) //! call can be used to actually withdraw the funds. //! //! Note that there is a limitation to the number of fund-chunks that can be scheduled to be @@ -250,11 +250,46 @@ mod inflation; mod migration; //mod slashing; +mod types { + use crate::{system, Currency, NominatorReward, StakingBalance, StakingLedger, Time, Trait}; + + /// 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 Points = u32; + /// TODO: doc + pub type TimeStamp = u64; + + pub type RingBalance = as Currency>>::Balance; + pub type RingPositiveImbalance = as Currency>>::PositiveImbalance; + pub type RingNegativeImbalance = as Currency>>::NegativeImbalance; + + pub type KtonBalance = as Currency>>::Balance; + pub type KtonPositiveImbalance = as Currency>>::PositiveImbalance; + pub type KtonNegativeImbalance = as Currency>>::NegativeImbalance; + + pub type StakingLedgerT = + StakingLedger, RingBalance, KtonBalance, BlockNumber, MomentOf>; + pub type StakingBalanceT = StakingBalance, KtonBalance>; + + pub type MomentOf = as Time>::Moment; + + pub type Rewards = (RingBalance, Vec, RingBalance>>); + + type AccountId = ::AccountId; + type BlockNumber = ::BlockNumber; + type TimeT = ::Time; + type RingCurrency = ::RingCurrency; + type KtonCurrency = ::KtonCurrency; +} + #[cfg(test)] mod mock; #[cfg(test)] mod tests; +pub use types::{EraIndex, Points}; + use codec::{Decode, Encode, HasCompact}; use frame_support::{ decl_error, decl_event, decl_module, decl_storage, ensure, @@ -282,34 +317,15 @@ use sp_std::{marker::PhantomData, vec::Vec}; use darwinia_support::{ LockIdentifier, LockableCurrency, NormalLock, StakingLock, WithdrawLock, WithdrawReason, WithdrawReasons, }; +use types::*; const DEFAULT_MINIMUM_VALIDATOR_COUNT: u32 = 4; -const MONTH_IN_MILLISECONDS: TS = 30 * 24 * 60 * 60 * 1000; +const MONTH_IN_MINUTES: TimeStamp = 30 * 24 * 60; +const MONTH_IN_MILLISECONDS: TimeStamp = MONTH_IN_MINUTES * 60 * 1000; const MAX_NOMINATIONS: usize = 16; const MAX_UNLOCKING_CHUNKS: usize = 32; const STAKING_ID: LockIdentifier = *b"staking "; -/// 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 Points = u32; - -type RingBalance = <::RingCurrency as Currency<::AccountId>>::Balance; -type RingPositiveImbalance = - <::RingCurrency as Currency<::AccountId>>::PositiveImbalance; -type RingNegativeImbalance = - <::RingCurrency as Currency<::AccountId>>::NegativeImbalance; - -type KtonBalance = <::KtonCurrency as Currency<::AccountId>>::Balance; -type KtonPositiveImbalance = - <::KtonCurrency as Currency<::AccountId>>::PositiveImbalance; -type KtonNegativeImbalance = - <::KtonCurrency as Currency<::AccountId>>::NegativeImbalance; - -type MomentOf = <::Time as Time>::Moment; -type TS = u64; - /// Reward points of an era. Used to split era total payout between validators. #[derive(Encode, Decode, Default)] pub struct EraPoints { @@ -349,7 +365,7 @@ pub enum StakerStatus { #[derive(PartialEq, Eq, Copy, Clone, Encode, Decode, RuntimeDebug)] pub enum RewardDestination { /// Pay into the stash account, increasing the amount at stake accordingly. - Staked { promise_month: TS }, + Staked { promise_month: TimeStamp }, /// Pay into the stash account, not increasing the amount at stake. Stash, /// Pay into the controller account. @@ -381,7 +397,7 @@ impl Default for ValidatorPrefs { /// To unify *Ring* and *Kton* balances. #[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub enum StakingBalances +pub enum StakingBalance where RingBalance: HasCompact, KtonBalance: HasCompact, @@ -390,13 +406,13 @@ where KtonBalance(KtonBalance), } -impl Default for StakingBalances +impl Default for StakingBalance where RingBalance: Default + HasCompact, KtonBalance: Default + HasCompact, { fn default() -> Self { - StakingBalances::RingBalance(Default::default()) + StakingBalance::RingBalance(Default::default()) } } @@ -413,7 +429,7 @@ pub struct TimeDepositItem { /// The ledger of a (bonded) stash. #[derive(PartialEq, Eq, Clone, Default, Encode, Decode, RuntimeDebug)] -pub struct StakingLedger +pub struct StakingLedger where RingBalance: HasCompact, KtonBalance: HasCompact, @@ -433,19 +449,19 @@ where /// rounds. #[codec(compact)] pub active_kton: KtonBalance, - // time-deposit items: - // if you deposit ring for a minimum period, - // you can get *KTON* as bonus - // which can also be used for staking - pub deposit_items: Vec>, + + // If you deposit *RING* for a minimum period, + // you can get *KTON* as bonus which can also be used for staking. + pub deposit_items: Vec>, // TODO doc - pub ring_staking_lock: StakingLock, + pub ring_staking_lock: StakingLock, // TODO doc - pub kton_staking_lock: StakingLock, + pub kton_staking_lock: StakingLock, } -impl StakingLedger +impl + StakingLedger where RingBalance: SimpleArithmetic + Saturating + Copy, KtonBalance: SimpleArithmetic + Saturating + Copy, @@ -634,8 +650,10 @@ pub trait Trait: frame_system::Trait { /// Number of sessions per era. type SessionsPerEra: Get; - /// Number of `Moment` that staked funds must remain bonded for. - type BondingDuration: Get>; + /// Number of eras that staked funds must remain bonded for. + type BondingDurationInEra: Get; + /// Number of eras that staked funds must remain bonded for. + type BondingDurationInBlockNumber: Get; /// Number of eras that slashes are deferred by, after computation. This /// should be less than the bonding duration. Set to 0 if slashes should be @@ -649,7 +667,7 @@ pub trait Trait: frame_system::Trait { type SessionInterface: self::SessionInterface; /// The *RING* balance. - type RingCurrency: LockableCurrency>; + type RingCurrency: LockableCurrency; /// Tokens have been minted and are unused for validator-reward. type RingRewardRemainder: OnUnbalanced>; /// Handler for the unbalanced *RING* reduction when slashing a staker. @@ -658,14 +676,15 @@ pub trait Trait: frame_system::Trait { type RingReward: OnUnbalanced>; /// The *KTON* balance - type KtonCurrency: LockableCurrency>; + type KtonCurrency: LockableCurrency; /// Handler for the unbalanced *KTON* reduction when slashing a staker. type KtonSlash: OnUnbalanced>; /// Handler for the unbalanced *KTON* increment when rewarding a staker. type KtonReward: OnUnbalanced>; // TODO: doc - type Cap: Get<>::Balance>; + type Cap: Get>; + // TODO: doc type GenesisTime: Get>; } @@ -707,7 +726,7 @@ decl_storage! { pub Bonded get(fn bonded): map T::AccountId => Option; /// Map from all (unlocked) "controller" accounts to the info regarding the staking. - pub Ledger get(fn ledger): map T::AccountId => Option, KtonBalance, MomentOf>>; + pub Ledger get(fn ledger): map T::AccountId => Option>; /// Where the reward payment should be made. Keyed by stash. pub Payee get(fn payee): map T::AccountId => RewardDestination; @@ -762,28 +781,33 @@ decl_storage! { /// The rest of the slashed value is handled by the `Slash`. pub SlashRewardFraction get(fn slash_reward_fraction) config(): Perbill; -// /// The amount of currency given to reporters of a slash event which was -// /// canceled by extraordinary circumstances (e.g. governance). -// pub CanceledSlashPayout get(fn canceled_payout) config(): BalanceOf; -// -// /// All unapplied slashes that are queued for later. -// pub UnappliedSlashes: map EraIndex => Vec>>; + /// The amount of currency given to reporters of a slash event which was + /// canceled by extraordinary circumstances (e.g. governance). + pub CanceledSlashPayout get(fn canceled_payout) config(): Power; + + /// All unapplied slashes that are queued for later. + pub UnappliedSlashes: map EraIndex => Vec>; /// Total *Ring* in pool. pub RingPool get(fn ring_pool): RingBalance; /// Total *Kton* in pool. pub KtonPool get(fn kton_pool): KtonBalance; + /// The percentage of the total payout that is distributed to validators and nominators + /// + /// The reset might go to Treasury or something else. + pub PayoutFraction get(fn payout_fraction) config(): Perbill; + /// A mapping from still-bonded eras to the first session index of that era. BondedEras: Vec<(EraIndex, SessionIndex)>; -// /// All slashing events on validators, mapped by era to the highest slash proportion -// /// and slash value of the era. -// ValidatorSlashInEra: double_map EraIndex, twox_128(T::AccountId) => Option<(Perbill, BalanceOf)>; -// -// /// All slashing events on nominators, mapped by era to the highest slash value of the era. -// NominatorSlashInEra: double_map EraIndex, twox_128(T::AccountId) => Option>; -// + /// All slashing events on validators, mapped by era to the highest slash proportion + /// and slash value of the era. + ValidatorSlashInEra: double_map EraIndex, twox_128(T::AccountId) => Option<(Perbill, Power)>; + + /// All slashing events on nominators, mapped by era to the highest slash value of the era. + NominatorSlashInEra: double_map EraIndex, twox_128(T::AccountId) => Option; + // /// Slashing spans for stash accounts. // SlashingSpans: map T::AccountId => Option; // @@ -808,7 +832,7 @@ decl_storage! { let _ = >::bond( T::Origin::from(Some(stash.to_owned()).into()), T::Lookup::unlookup(controller.to_owned()), - StakingBalances::RingBalance(r), + StakingBalance::RingBalance(r), RewardDestination::Staked { promise_month: 0 }, 0, ); @@ -837,23 +861,24 @@ decl_event!( pub enum Event where ::AccountId, + ::BlockNumber, RingBalance = RingBalance, KtonBalance = KtonBalance, - Moment = MomentOf, + MomentOf = MomentOf, { /// Bond succeed. - /// `amount`, `now`, `duration` in month - BondRing(RingBalance, Moment, TS), + /// `amount` in `RingBalance`, `start_time` in `MomentOf`, `expired_time` in `MomentOf` + BondRing(RingBalance, MomentOf, MomentOf), /// Bond succeed. /// `amount` BondKton(KtonBalance), /// Unbond succeed. - /// `amount`, `now` - UnbondRing(RingBalance, Moment), + /// `amount` in `RingBalance`, `now` in `BlockNumber` + UnbondRing(RingBalance, BlockNumber), /// Unbond succeed. - /// `amount`, `now` - UnbondKton(KtonBalance, Moment), + /// `amount` om `KtonBalance`, `now` in `BlockNumber` + UnbondKton(KtonBalance, BlockNumber), /// All validators have been rewarded by the first balance; the second is the remainder /// from the maximum amount of reward; the third is validator and nominators' reward. @@ -897,7 +922,15 @@ decl_module! { const SessionsPerEra: SessionIndex = T::SessionsPerEra::get(); /// Number of eras that staked funds must remain bonded for. - const BondingDuration: MomentOf = T::BondingDuration::get(); + const BondingDurationInEra: EraIndex = T::BondingDurationInEra::get(); + /// Number of eras that staked funds must remain bonded for. + const BondingDurationInBlockNumber: T::BlockNumber = T::BondingDurationInBlockNumber::get(); + + // TODO: doc + const Cap: RingBalance = T::Cap::get(); + + // TODO: doc + const GenesisTime: MomentOf = T::GenesisTime::get(); type Error = Error; @@ -933,9 +966,9 @@ decl_module! { fn bond( origin, controller: ::Source, - value: StakingBalances, KtonBalance>, + value: StakingBalanceT, payee: RewardDestination, - promise_month: TS + promise_month: TimeStamp ) { let stash = ensure_signed(origin)?; ensure!(!>::exists(&stash), Error::::AlreadyBonded); @@ -947,11 +980,10 @@ decl_module! { stash: stash.clone(), ..Default::default() }; - let now = T::Time::now(); let promise_month = promise_month.min(36); match value { - StakingBalances::RingBalance(r) => { + StakingBalance::RingBalance(r) => { // reject a bond which is considered to be _dust_. ensure!( r >= T::RingCurrency::minimum_balance(), @@ -960,13 +992,18 @@ decl_module! { let stash_balance = T::RingCurrency::free_balance(&stash); let value = r.min(stash_balance); - - Self::bond_ring(&stash, &controller, value, promise_month, ledger); + let (start_time, expire_time) = Self::bond_ring( + &stash, + &controller, + value, + promise_month, + ledger, + ); >::mutate(|r| *r += value); - Self::deposit_event(RawEvent::BondRing(value, now, promise_month)); + Self::deposit_event(RawEvent::BondRing(value, start_time, expire_time)); }, - StakingBalances::KtonBalance(k) => { + StakingBalance::KtonBalance(k) => { // reject a bond which is considered to be _dust_. ensure!( k >= T::KtonCurrency::minimum_balance(), @@ -1004,30 +1041,30 @@ decl_module! { /// - One DB entry. /// # #[weight = SimpleDispatchInfo::FixedNormal(500_000)] - fn bond_extra( - origin, - max_additional: StakingBalances, KtonBalance>, - promise_month: TS - ) { + fn bond_extra(origin, max_additional: StakingBalanceT, promise_month: TimeStamp) { let stash = ensure_signed(origin)?; let controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - let now = T::Time::now(); let promise_month = promise_month.min(36); match max_additional { - StakingBalances::RingBalance(r) => { + StakingBalance::RingBalance(r) => { let stash_balance = T::RingCurrency::free_balance(&stash); if let Some(extra) = stash_balance.checked_sub(&ledger.active_ring) { let extra = extra.min(r); - - Self::bond_ring(&stash, &controller, extra, promise_month, ledger); + let (start_time, expire_time) = Self::bond_ring( + &stash, + &controller, + extra, + promise_month, + ledger, + ); >::mutate(|r| *r += extra); - Self::deposit_event(RawEvent::BondRing(extra, now, promise_month)); + Self::deposit_event(RawEvent::BondRing(extra, start_time, expire_time)); } }, - StakingBalances::KtonBalance(k) => { + StakingBalance::KtonBalance(k) => { let stash_balance = T::KtonCurrency::free_balance(&stash); if let Some(extra) = stash_balance.checked_sub(&ledger.active_kton) { let extra = extra.min(k); @@ -1042,11 +1079,12 @@ decl_module! { } // TODO: doc - fn deposit_extra(origin, value: RingBalance, promise_month: TS) { + fn deposit_extra(origin, value: RingBalance, promise_month: TimeStamp) { let stash = ensure_signed(origin)?; let controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - let now = T::Time::now(); + let start_time = T::Time::now(); + let expire_time = start_time + >::saturated_from((promise_month * MONTH_IN_MILLISECONDS).into()); let promise_month = promise_month.max(3).min(36); let mut ledger = Self::clear_mature_deposits(ledger); let StakingLedger { @@ -1057,8 +1095,6 @@ decl_module! { .. } = &mut ledger; let value = value.min(*active_ring - *active_deposit_ring); - // for now, kton_return is free - // mint kton let kton_return = inflation::compute_kton_return::(value, promise_month); let kton_positive_imbalance = T::KtonCurrency::deposit_creating(stash, kton_return); @@ -1066,12 +1102,12 @@ decl_module! { *active_deposit_ring += value; deposit_items.push(TimeDepositItem { value, - start_time: now, - expire_time: now + >::saturated_from((promise_month * MONTH_IN_MILLISECONDS).into()), + start_time, + expire_time, }); >::insert(&controller, ledger); - Self::deposit_event(RawEvent::BondRing(value, now, promise_month)); + Self::deposit_event(RawEvent::BondRing(value, start_time, expire_time)); } /// Schedule a portion of the stash to be unlocked ready for transfer out after the bond @@ -1094,7 +1130,7 @@ decl_module! { /// - One DB entry. /// #[weight = SimpleDispatchInfo::FixedNormal(400_000)] - fn unbond(origin, value: StakingBalances, KtonBalance>) { + fn unbond(origin, value: StakingBalanceT) { let controller = ensure_signed(origin)?; let mut ledger = Self::clear_mature_deposits(Self::ledger(&controller).ok_or(Error::::NotController)?); let StakingLedger { @@ -1105,15 +1141,15 @@ decl_module! { kton_staking_lock, .. } = &mut ledger; - let now = T::Time::now(); + let now = >::block_number(); ring_staking_lock.shrink(now); kton_staking_lock.shrink(now); - // due to the macro parser, we've to add a bracket - // actually, this's totally wrong: + // Due to the macro parser, we've to add a bracket. + // Actually, this's totally wrong: // `a as u32 + b as u32 < c` - // workaround: + // Workaround: // 1. `(a as u32 + b as u32) < c` // 2. `let c_ = a as u32 + b as u32; c_ < c` ensure!( @@ -1122,9 +1158,9 @@ decl_module! { ); match value { - StakingBalances::RingBalance(r) => { - // only active normal ring can be unbond - // active_ring = active_normal_ring + active_deposit_ring + StakingBalance::RingBalance(r) => { + // Only active normal ring can be unbond: + // `active_ring = active_normal_ring + active_deposit_ring` let active_normal_ring = *active_ring - *active_deposit_ring; let available_unbond_ring = r.min(active_normal_ring); @@ -1132,7 +1168,7 @@ decl_module! { *active_ring -= available_unbond_ring; ring_staking_lock.unbondings.push(NormalLock { amount: available_unbond_ring, - until: now + T::BondingDuration::get(), + until: now + T::BondingDurationInBlockNumber::get(), }); Self::update_ledger(&controller, &mut ledger, value); @@ -1141,14 +1177,14 @@ decl_module! { Self::deposit_event(RawEvent::UnbondRing(available_unbond_ring, now)); } }, - StakingBalances::KtonBalance(k) => { + StakingBalance::KtonBalance(k) => { let unbond_kton = k.min(*active_kton); if !unbond_kton.is_zero() { *active_kton -= unbond_kton; kton_staking_lock.unbondings.push(NormalLock { amount: unbond_kton, - until: now + T::BondingDuration::get(), + until: now + T::BondingDurationInBlockNumber::get(), }); Self::update_ledger(&controller, &mut ledger, value); @@ -1191,17 +1227,22 @@ decl_module! { } let kton_slash = { - let passed_duration = (now - item.start_time).saturated_into::() / MONTH_IN_MILLISECONDS; - let plan_duration = (item.expire_time - item.start_time).saturated_into::() / MONTH_IN_MILLISECONDS; + let plan_duration_in_months = { + let plan_duration_in_ts = (item.expire_time - item.start_time).saturated_into::(); + plan_duration_in_ts / MONTH_IN_MILLISECONDS + }; + let passed_duration_in_months = { + let passed_duration_in_ts = (now - item.start_time).saturated_into::(); + passed_duration_in_ts / MONTH_IN_MILLISECONDS + }; ( - inflation::compute_kton_return::(item.value, plan_duration) + inflation::compute_kton_return::(item.value, plan_duration_in_months) - - inflation::compute_kton_return::(item.value, passed_duration) + inflation::compute_kton_return::(item.value, passed_duration_in_months) ).max(1.into()) * 3.into() }; - // FIXME // check total free balance and locked one // strict on punishing in kton if T::KtonCurrency::free_balance(stash) @@ -1426,30 +1467,29 @@ decl_module! { /// # #[weight = SimpleDispatchInfo::FreeOperational] fn cancel_deferred_slash(origin, era: EraIndex, slash_indices: Vec) { -// T::SlashCancelOrigin::try_origin(origin) -// .map(|_| ()) -// .or_else(ensure_root)?; -// -// let mut slash_indices = slash_indices; -// slash_indices.sort_unstable(); -// let mut unapplied = ::UnappliedSlashes::get(&era); -// -// 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); -// -// unapplied.remove(index); -// } -// -// ::UnappliedSlashes::insert(&era, &unapplied); - unimplemented!() + T::SlashCancelOrigin::try_origin(origin) + .map(|_| ()) + .or_else(ensure_root)?; + + let mut slash_indices = slash_indices; + slash_indices.sort_unstable(); + let mut unapplied = ::UnappliedSlashes::get(&era); + + 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); + + unapplied.remove(index); + } + + ::UnappliedSlashes::insert(&era, &unapplied); } } } @@ -1472,46 +1512,45 @@ impl Module { stash: &T::AccountId, controller: &T::AccountId, value: RingBalance, - promise_month: TS, - mut ledger: StakingLedger, KtonBalance, MomentOf>, - ) { + promise_month: TimeStamp, + mut ledger: StakingLedgerT, + ) -> (MomentOf, MomentOf) { + let start_time = T::Time::now(); + let mut expire_time = start_time; + ledger.active_ring = ledger.active_ring.saturating_add(value); // if stash promise to a extra-lock // there will be extra reward, kton, which // can also be use to stake. if promise_month >= 3 { + expire_time += >::saturated_from((promise_month * MONTH_IN_MILLISECONDS).into()); ledger.active_deposit_ring += value; // for now, kton_return is free // mint kton let kton_return = inflation::compute_kton_return::(value, promise_month); let kton_positive_imbalance = T::KtonCurrency::deposit_creating(&stash, kton_return); - let now = T::Time::now(); T::KtonReward::on_unbalanced(kton_positive_imbalance); ledger.deposit_items.push(TimeDepositItem { value, - start_time: now, - expire_time: now + >::saturated_from((promise_month * MONTH_IN_MILLISECONDS).into()), + start_time, + expire_time, }); } - Self::update_ledger(&controller, &mut ledger, StakingBalances::RingBalance(value)); + Self::update_ledger(&controller, &mut ledger, StakingBalance::RingBalance(value)); + + (start_time, expire_time) } // Update the ledger while bonding controller with kton. - fn bond_kton( - controller: &T::AccountId, - value: KtonBalance, - mut ledger: StakingLedger, KtonBalance, MomentOf>, - ) { + fn bond_kton(controller: &T::AccountId, value: KtonBalance, mut ledger: StakingLedgerT) { ledger.active_kton += value; - Self::update_ledger(&controller, &mut ledger, StakingBalances::KtonBalance(value)); + Self::update_ledger(&controller, &mut ledger, StakingBalance::KtonBalance(value)); } // TODO: doc - pub fn clear_mature_deposits( - mut ledger: StakingLedger, KtonBalance, MomentOf>, - ) -> StakingLedger, KtonBalance, MomentOf> { + pub fn clear_mature_deposits(mut ledger: StakingLedgerT) -> StakingLedgerT { let now = T::Time::now(); let StakingLedger { active_deposit_ring, @@ -1535,13 +1574,9 @@ impl Module { /// 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( - controller: &T::AccountId, - ledger: &mut StakingLedger, KtonBalance, MomentOf>, - staking_balance: StakingBalances, KtonBalance>, - ) { + fn update_ledger(controller: &T::AccountId, ledger: &mut StakingLedgerT, staking_balance: StakingBalanceT) { match staking_balance { - StakingBalances::RingBalance(_) => { + StakingBalance::RingBalance(_) => { ledger.ring_staking_lock.staking_amount = ledger.active_ring; T::RingCurrency::set_lock( @@ -1551,7 +1586,7 @@ impl Module { WithdrawReasons::all(), ); } - StakingBalances::KtonBalance(_) => { + StakingBalance::KtonBalance(_) => { ledger.kton_staking_lock.staking_amount = ledger.active_kton; T::KtonCurrency::set_lock( @@ -1585,31 +1620,22 @@ impl Module { RewardDestination::Controller => Self::bonded(stash) .and_then(|controller| T::RingCurrency::deposit_into_existing(&controller, amount).ok()), RewardDestination::Stash => T::RingCurrency::deposit_into_existing(stash, amount).ok(), - RewardDestination::Staked { promise_month } => { - // Self::bonded(stash) - // .and_then(|c| Self::ledger(&c).map(|l| (c, l))) - // .and_then(|(controller, mut l)| { - // l.active += amount; - // l.total += amount; - // let r = T::RingCurrency::deposit_into_existing(stash, amount).ok(); - // Self::update_ledger(&controller, &l); - // r - // }); - unimplemented!() - } + RewardDestination::Staked { promise_month } => Self::bonded(stash) + .and_then(|c| Self::ledger(&c).map(|l| (c, l))) + .and_then(|(c, mut l)| { + l.active_ring += amount; + + let r = T::RingCurrency::deposit_into_existing(stash, amount).ok(); + Self::update_ledger(&c, &mut l, StakingBalance::RingBalance(amount)); + r + }), } } /// 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: RingBalance, - ) -> ( - RingPositiveImbalance, - (RingBalance, Vec>>), - ) { + fn reward_validator(stash: &T::AccountId, reward: RingBalance) -> (RingPositiveImbalance, Rewards) { let off_the_table = Self::validators(stash).commission * reward; let reward = reward.saturating_sub(off_the_table); let mut imbalance = >::zero(); @@ -1674,38 +1700,39 @@ impl Module { /// 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; - // - // // FIXME - // let (total_payout, max_payout) = inflation::compute_total_payout(); - // - // let mut total_imbalance = >::zero(); - // - // 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)); - // } - // } - // - // // 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)); - // } + // 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 (total_payout, max_payout) = inflation::compute_total_payout::( + era_duration, + T::Time::now() - T::GenesisTime::get(), + T::Cap::get() - T::RingCurrency::total_issuance(), + PayoutFraction::get(), + ); + + // let mut total_imbalance = >::zero(); + // + // 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)); + // } + // } + // + // // 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| { @@ -1716,7 +1743,7 @@ impl Module { // CurrentEraStartSessionIndex::mutate(|v| { // *v = start_session_index; // }); - // let bonding_duration = T::BondingDuration::get(); + // let bonding_duration = T::BondingDurationInEra::get(); // // BondedEras::mutate(|bonded| { // bonded.push((current_era, start_session_index)); @@ -2042,20 +2069,19 @@ where T::SelectInitialValidators: pallet_session::SelectInitialValidators<::AccountId>, T::ValidatorIdOf: Convert<::AccountId, Option<::AccountId>>, { - // FIXME fn on_offence( offenders: &[OffenceDetails>], slash_fraction: &[Perbill], slash_session: SessionIndex, ) { Self::ensure_storage_upgraded(); - // - // let reward_proportion = SlashRewardFraction::get(); - // - // let era_now = Self::current_era(); - // let window_start = era_now.saturating_sub(T::BondingDuration::get()); - // let current_era_start_session = CurrentEraStartSessionIndex::get(); - // + + let reward_proportion = SlashRewardFraction::get(); + + let era_now = Self::current_era(); + // let window_start = era_now.saturating_sub(T::BondingDurationInEra::get()); + let current_era_start_session = CurrentEraStartSessionIndex::get(); + // // fast path for current-era report - most likely. // let slash_era = if slash_session >= current_era_start_session { // era_now From 07c1c5f1f70b99bd79491fd3636c9fb62a2ac6c6 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Thu, 9 Jan 2020 18:58:39 +0800 Subject: [PATCH 07/17] try: ready for fix slash logic --- Cargo.lock | 57 +- Cargo.toml | 1 + README.adoc | 2 +- bin/node/primitives/Cargo.toml | 20 + bin/node/primitives/src/lib.rs | 68 ++ bin/node/runtime/Cargo.toml | 5 +- bin/node/runtime/src/constants.rs | 14 + bin/node/runtime/src/impls.rs | 27 +- bin/node/runtime/src/lib.rs | 22 +- frame/staking/src/inflation.rs | 21 +- frame/staking/src/lib.rs | 494 +++++----- frame/staking/src/slashing.rs | 1395 ++++++++++++++--------------- 12 files changed, 1146 insertions(+), 980 deletions(-) create mode 100644 bin/node/primitives/Cargo.toml create mode 100644 bin/node/primitives/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 61fa047eb..0c394e72f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -779,6 +779,16 @@ dependencies = [ "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", + "syn 1.0.11", +] + [[package]] name = "ctr" version = "0.3.2" @@ -921,6 +931,12 @@ dependencies = [ "syn 1.0.11", ] +[[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" @@ -2936,7 +2952,7 @@ dependencies = [ "libp2p", "log", "node-executor", - "node-primitives", + "node-primitives 2.0.0", "node-rpc", "node-runtime 2.0.0 (git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402)", "node-transaction-factory", @@ -2994,7 +3010,7 @@ name = "node-executor" version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "node-primitives", + "node-primitives 2.0.0", "node-runtime 2.0.0 (git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402)", "parity-scale-codec", "sc-executor", @@ -3005,6 +3021,16 @@ dependencies = [ "trie-root", ] +[[package]] +name = "node-primitives" +version = "0.4.0" +dependencies = [ + "pretty_assertions", + "sp-core", + "sp-runtime", + "sp-serializer", +] + [[package]] name = "node-primitives" version = "2.0.0" @@ -3020,7 +3046,7 @@ version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ "jsonrpc-core", - "node-primitives", + "node-primitives 2.0.0", "node-runtime 2.0.0 (git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402)", "pallet-contracts-rpc", "pallet-transaction-payment-rpc", @@ -3040,7 +3066,7 @@ dependencies = [ "frame-system", "frame-system-rpc-runtime-api", "integer-sqrt", - "node-primitives", + "node-primitives 2.0.0", "pallet-authority-discovery", "pallet-authorship", "pallet-babe", @@ -3100,7 +3126,7 @@ dependencies = [ "frame-system", "frame-system-rpc-runtime-api", "integer-sqrt", - "node-primitives", + "node-primitives 0.4.0", "pallet-authority-discovery", "pallet-authorship", "pallet-babe", @@ -3275,6 +3301,15 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +[[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", +] + [[package]] name = "owning_ref" version = "0.4.0" @@ -4034,6 +4069,18 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" +[[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", +] + [[package]] name = "primitive-types" version = "0.6.1" diff --git a/Cargo.toml b/Cargo.toml index 62127d7d6..7df33583c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [workspace] members = [ "bin/node/cli", + "bin/node/primitives", "bin/node/runtime", "frame/balances/kton", "frame/balances/ring", diff --git a/README.adoc b/README.adoc index 859223ed0..43b654d42 100644 --- a/README.adoc +++ b/README.adoc @@ -335,7 +335,7 @@ darwinia-balances, darwinia-eth-backing, darwinia-eth-relay, darwinia-kton, darwinia-staking, darwinia-support * Node [source, shell] -node-cli, node-runtime +node-cli, node-primitives, node-runtime == Contributing diff --git a/bin/node/primitives/Cargo.toml b/bin/node/primitives/Cargo.toml new file mode 100644 index 000000000..c86059871 --- /dev/null +++ b/bin/node/primitives/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "node-primitives" +version = "0.4.0" +authors = ["darwinia "] +edition = "2018" + +[dependencies] +sp-core = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-runtime = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +[dev-dependencies] +sp-serializer = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pretty_assertions = "0.6.1" + +[features] +default = ["std"] +std = [ + "sp-core/std", + "sp-runtime/std", +] diff --git a/bin/node/primitives/src/lib.rs b/bin/node/primitives/src/lib.rs new file mode 100644 index 000000000..ecf0ebe12 --- /dev/null +++ b/bin/node/primitives/src/lib.rs @@ -0,0 +1,68 @@ +// Copyright 2018-2019 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 . + +//! Low-level types used throughout the Substrate code. + +#![warn(missing_docs)] +#![cfg_attr(not(feature = "std"), no_std)] + +use sp_runtime::{ + generic, + traits::{BlakeTwo256, IdentifyAccount, Verify}, + MultiSignature, OpaqueExtrinsic, +}; + +/// An index to a block. +pub type BlockNumber = u32; + +/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. +pub type Signature = MultiSignature; + +/// Some way of identifying an account on the chain. We intentionally make it equivalent +/// to the public key of our transaction signing scheme. +pub type AccountId = <::Signer as IdentifyAccount>::AccountId; + +/// The type for looking up accounts. We don't expect more than 4 billion of them. +pub type AccountIndex = u32; + +/// Balance of an account. +pub type Balance = u128; + +/// Power of an account. +pub type Power = u128; + +/// Type used for expressing timestamp. +pub type Moment = u64; + +/// Index of a transaction in the chain. +pub type Index = u32; + +/// A hash of some data used by the chain. +pub type Hash = sp_core::H256; + +/// A timestamp: milliseconds since the unix epoch. +/// `u64` is enough to represent a duration of half a billion years, when the +/// time scale is milliseconds. +pub type Timestamp = u64; + +/// Digest item type. +pub type DigestItem = generic::DigestItem; +/// Header type. +pub type Header = generic::Header; +/// Block type. +pub type Block = generic::Block; +/// Block ID. +pub type BlockId = generic::BlockId; diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml index fdeda50b7..9ae0cb255 100644 --- a/bin/node/runtime/Cargo.toml +++ b/bin/node/runtime/Cargo.toml @@ -18,7 +18,6 @@ sp-authority-discovery = { version = "2.0.0", default-features = false, git = "h sp-consensus-babe = { version = "0.8", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-block-builder = { git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402", default-features = false} sp-inherents = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -node-primitives = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-offchain = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-core = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } @@ -30,6 +29,8 @@ sp-session = { version = "2.0.0", default-features = false, git = "https://githu sp-transaction-pool = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-version = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +node-primitives = { default-features = false, path = "../primitives" } + # frame dependencies pallet-authority-discovery = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-authorship = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } @@ -37,8 +38,6 @@ pallet-babe = { version = "2.0.0", default-features = false, git = "https://gith pallet-collective = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-contracts = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-contracts-rpc-runtime-api = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -#pallet-democracy = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -#pallet-elections-phragmen = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } frame-executive = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-finality-tracker = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-grandpa = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } diff --git a/bin/node/runtime/src/constants.rs b/bin/node/runtime/src/constants.rs index 5ae17e336..2c9ed1c1e 100644 --- a/bin/node/runtime/src/constants.rs +++ b/bin/node/runtime/src/constants.rs @@ -73,4 +73,18 @@ pub mod time { // pub const ERA_DURATION: SessionIndex = 3; // Production pub const ERA_DURATION: SessionIndex = 6; + + // Date in Los Angeles*: 12/25/2019, 10:58:29 PM + // Date in Berlin* :12/26/2019, 1:58:29 PM + // Date in Beijing*: 12/26/2019, 12:58:29 PM + // Date in New York* :12/26/2019, 12:58:29 AM + pub const GENESIS_TIME: Moment = 1_577_339_909_000; +} + +pub mod supply { + use crate::constants::currency::COIN; + use node_primitives::{Balance, Power}; + + pub const CAP: Balance = 1_000_000_000 * COIN; + pub const TOTAL_POWER: Power = 1_000_000_000; } diff --git a/bin/node/runtime/src/impls.rs b/bin/node/runtime/src/impls.rs index 5ed897748..b2669562b 100644 --- a/bin/node/runtime/src/impls.rs +++ b/bin/node/runtime/src/impls.rs @@ -16,14 +16,17 @@ //! Some configurable implementations as associated type for the substrate runtime. -use crate::{Authorship, Balances, MaximumBlockWeight, NegativeImbalance, System}; use frame_support::{ traits::{Currency, Get, OnUnbalanced}, weights::Weight, }; -use node_primitives::Balance; -use sp_runtime::traits::{Convert, Saturating}; -use sp_runtime::{Fixed64, Perbill}; +use sp_runtime::{ + traits::{Convert, Saturating}, + {Fixed64, Perbill}, +}; + +use crate::{constants::supply::TOTAL_POWER, Authorship, Balances, MaximumBlockWeight, NegativeImbalance, System}; +use node_primitives::{Balance, Power}; pub struct Author; impl OnUnbalanced for Author { @@ -34,22 +37,22 @@ impl OnUnbalanced for Author { /// Struct that handles the conversion of Balance -> `u64`. This is used for staking's election /// calculation. -pub struct CurrencyToVoteHandler; +pub struct PowerToVoteHandler; -impl CurrencyToVoteHandler { - fn factor() -> Balance { - (Balances::total_issuance() / u64::max_value() as Balance).max(1) +impl PowerToVoteHandler { + fn factor() -> Power { + (TOTAL_POWER / u64::max_value() as Power).max(1) } } -impl Convert for CurrencyToVoteHandler { - fn convert(x: Balance) -> u64 { +impl Convert for PowerToVoteHandler { + fn convert(x: Power) -> u64 { (x / Self::factor()) as u64 } } -impl Convert for CurrencyToVoteHandler { - fn convert(x: u128) -> Balance { +impl Convert for PowerToVoteHandler { + fn convert(x: u128) -> Power { x * Self::factor() } } diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 8d9fccfc3..562c6bfd5 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -22,10 +22,10 @@ /// Implementations of some helper traits passed into runtime modules as associated types. pub mod impls; -use impls::{Author, CurrencyToVoteHandler, LinearWeightToFee, TargetedFeeAdjustment}; +use impls::{Author, LinearWeightToFee, PowerToVoteHandler, TargetedFeeAdjustment}; /// Constant values used within the runtime. pub mod constants; -use constants::{currency::*, time::*}; +use constants::{currency::*, supply::*, time::*}; pub use frame_support::StorageValue; pub use pallet_contracts::Gas; @@ -42,11 +42,9 @@ use frame_support::{ weights::Weight, }; use frame_system::offchain::TransactionSubmitter; -use node_primitives::{AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, Moment, Signature}; use pallet_contracts_rpc_runtime_api::ContractExecResult; use pallet_grandpa::{fg_primitives, AuthorityList as GrandpaAuthorityList}; use pallet_im_online::sr25519::AuthorityId as ImOnlineId; -use pallet_staking::{EraIndex, Exposure, ExposureOf, StashOf}; use pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo; use sp_api::impl_runtime_apis; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; @@ -69,6 +67,9 @@ use sp_std::vec::Vec; use sp_version::NativeVersion; use sp_version::RuntimeVersion; +use node_primitives::*; +use pallet_staking::{EraIndex, Exposure, ExposureOf, StashOf}; + // Make the WASM binary available. #[cfg(feature = "std")] include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); @@ -281,18 +282,14 @@ parameter_types! { pub const BondingDurationInBlockNumber: BlockNumber = 24 * 28 * ERA_DURATION * EPOCH_DURATION_IN_BLOCKS; pub const SlashDeferDuration: EraIndex = 24 * 7; // 1/4 the bonding duration. - // decimal 9 - pub const Cap: Balance = 1_000_000_000 * COIN; - // Date in Los Angeles*: 12/25/2019, 10:58:29 PM - // Date in Berlin* :12/26/2019, 1:58:29 PM - // Date in Beijing*: 12/26/2019, 12:58:29 PM - // Date in New York* :12/26/2019, 12:58:29 AM - pub const GenesisTime: Moment = 1_577_339_909_000; + pub const Cap: Balance = CAP; + pub const TotalPower: Power = TOTAL_POWER; + pub const GenesisTime: Moment = GENESIS_TIME; } impl pallet_staking::Trait for Runtime { type Time = Timestamp; - type CurrencyToVote = CurrencyToVoteHandler; + type PowerToVote = PowerToVoteHandler; type Event = Event; type SessionsPerEra = SessionsPerEra; type BondingDurationInEra = BondingDurationInEra; @@ -309,6 +306,7 @@ impl pallet_staking::Trait for Runtime { type KtonSlash = (); type KtonReward = (); type Cap = Cap; + type TotalPower = TotalPower; type GenesisTime = GenesisTime; } diff --git a/frame/staking/src/inflation.rs b/frame/staking/src/inflation.rs index 11e39b8ec..73cac74b4 100644 --- a/frame/staking/src/inflation.rs +++ b/frame/staking/src/inflation.rs @@ -1,3 +1,4 @@ +use frame_support::traits::Get; use sp_core::U256; use sp_runtime::{ traits::{IntegerSquareRoot, SaturatedConversion}, @@ -5,17 +6,19 @@ use sp_runtime::{ }; use sp_std::convert::TryInto; -use crate::{KtonBalance, MomentOf, Power, RingBalance, TimeStamp, Trait}; +use crate::{KtonBalance, Moment, MomentOf, Power, RingBalance, Trait}; type Balance = u128; // power is a mixture of ring and kton // power = ring_ratio * POWER_COUNT / 2 + kton_ratio * POWER_COUNT / 2 -pub fn compute_balance_power>(active: S, pool: S) -> Power { - const HALF_POWER_COUNT: Power = 1_000_000_000 / 2; - +pub fn compute_balance_power(active: S, pool: S) -> Power +where + T: Trait, + S: TryInto, +{ Perquintill::from_rational_approximation(active.saturated_into::(), pool.saturated_into::().max(1)) - * HALF_POWER_COUNT + * (T::TotalPower::get() / 2) } // 1 - (99 / 100) ^ sqrt(year) @@ -27,18 +30,18 @@ pub fn compute_total_payout( payout_fraction: Perbill, ) -> (RingBalance, RingBalance) { // Milliseconds per year for the Julian year (365.25 days). - const MILLISECONDS_PER_YEAR: TimeStamp = ((36525 * 24 * 60 * 60) / 100) * 1000; + const MILLISECONDS_PER_YEAR: Moment = ((36525 * 24 * 60 * 60) / 100) * 1000; let maximum = { let maximum = { - let era_duration = era_duration.saturated_into::(); + let era_duration = era_duration.saturated_into::(); let portion = Perquintill::from_rational_approximation(era_duration, MILLISECONDS_PER_YEAR); let total_left = total_left.saturated_into::(); portion * total_left }; let year = { - let living_time = living_time.saturated_into::(); + let living_time = living_time.saturated_into::(); let year = living_time / MILLISECONDS_PER_YEAR + 1; year.saturated_into::() @@ -56,7 +59,7 @@ pub fn compute_total_payout( // consistent with the formula in smart contract in evolution land which can be found in // https://github.com/evolutionlandorg/bank/blob/master/contracts/GringottsBank.sol#L280 -pub fn compute_kton_return(value: RingBalance, months: TimeStamp) -> KtonBalance { +pub fn compute_kton_return(value: RingBalance, months: Moment) -> KtonBalance { let value = value.saturated_into::(); let no = U256::from(67).pow(U256::from(months)); let de = U256::from(66).pow(U256::from(months)); diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 7fd591755..396f558de 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -248,7 +248,7 @@ mod inflation; mod migration; -//mod slashing; +mod slashing; mod types { use crate::{system, Currency, NominatorReward, StakingBalance, StakingLedger, Time, Trait}; @@ -257,8 +257,10 @@ mod types { pub type EraIndex = u32; /// Counter for the number of "reward" points earned by a given validator. pub type Points = u32; - /// TODO: doc - pub type TimeStamp = u64; + /// Type used for expressing timestamp. + pub type Moment = Timestamp; + /// Power of an account. + pub type Power = u128; pub type RingBalance = as Currency>>::Balance; pub type RingPositiveImbalance = as Currency>>::PositiveImbalance; @@ -276,6 +278,11 @@ mod types { pub type Rewards = (RingBalance, Vec, RingBalance>>); + /// A timestamp: milliseconds since the unix epoch. + /// `u64` is enough to represent a duration of half a billion years, when the + /// time scale is milliseconds. + type Timestamp = u64; + type AccountId = ::AccountId; type BlockNumber = ::BlockNumber; type TimeT = ::Time; @@ -298,7 +305,7 @@ use frame_support::{ }; use frame_system::{self as system, ensure_root, ensure_signed}; use pallet_session::{historical::OnSessionEnding, SelectInitialValidators}; -use sp_phragmen::{ExtendedBalance as Power, PhragmenStakedAssignment}; +use sp_phragmen::{ExtendedBalance as Votes, PhragmenStakedAssignment}; use sp_runtime::{ traits::{ Bounded, CheckedSub, Convert, EnsureOrigin, One, SaturatedConversion, Saturating, SimpleArithmetic, @@ -320,8 +327,8 @@ use darwinia_support::{ use types::*; const DEFAULT_MINIMUM_VALIDATOR_COUNT: u32 = 4; -const MONTH_IN_MINUTES: TimeStamp = 30 * 24 * 60; -const MONTH_IN_MILLISECONDS: TimeStamp = MONTH_IN_MINUTES * 60 * 1000; +const MONTH_IN_MINUTES: Moment = 30 * 24 * 60; +const MONTH_IN_MILLISECONDS: Moment = MONTH_IN_MINUTES * 60 * 1000; const MAX_NOMINATIONS: usize = 16; const MAX_UNLOCKING_CHUNKS: usize = 32; const STAKING_ID: LockIdentifier = *b"staking "; @@ -365,7 +372,7 @@ pub enum StakerStatus { #[derive(PartialEq, Eq, Copy, Clone, Encode, Decode, RuntimeDebug)] pub enum RewardDestination { /// Pay into the stash account, increasing the amount at stake accordingly. - Staked { promise_month: TimeStamp }, + Staked { promise_month: Moment }, /// Pay into the stash account, not increasing the amount at stake. Stash, /// Pay into the controller account. @@ -429,7 +436,7 @@ pub struct TimeDepositItem { /// The ledger of a (bonded) stash. #[derive(PartialEq, Eq, Clone, Default, Encode, Decode, RuntimeDebug)] -pub struct StakingLedger +pub struct StakingLedger where RingBalance: HasCompact, KtonBalance: HasCompact, @@ -452,7 +459,7 @@ where // If you deposit *RING* for a minimum period, // you can get *KTON* as bonus which can also be used for staking. - pub deposit_items: Vec>, + pub deposit_items: Vec>, // TODO doc pub ring_staking_lock: StakingLock, @@ -460,8 +467,8 @@ where pub kton_staking_lock: StakingLock, } -impl - StakingLedger +impl + StakingLedger where RingBalance: SimpleArithmetic + Saturating + Copy, KtonBalance: SimpleArithmetic + Saturating + Copy, @@ -642,7 +649,7 @@ pub trait Trait: frame_system::Trait { /// TODO: #1377 /// The backward convert should be removed as the new Phragmen API returns ratio. /// The post-processing needs it but will be moved to off-chain. TODO: #2908 - type CurrencyToVote: Convert + Convert; + type PowerToVote: Convert + Convert; /// The overarching event type. type Event: From> + Into<::Event>; @@ -684,6 +691,8 @@ pub trait Trait: frame_system::Trait { // TODO: doc type Cap: Get>; + // TODO: doc + type TotalPower: Get; // TODO: doc type GenesisTime: Get>; @@ -768,7 +777,7 @@ decl_storage! { config .stakers .iter() - .map(|&(_, _, r, _)| inflation::compute_balance_power(r, >::ring_pool())) + .map(|&(_, _, r, _)| inflation::compute_balance_power::(r, >::ring_pool())) .min() .unwrap_or_default() }): Power; @@ -808,12 +817,12 @@ decl_storage! { /// All slashing events on nominators, mapped by era to the highest slash value of the era. NominatorSlashInEra: double_map EraIndex, twox_128(T::AccountId) => Option; -// /// Slashing spans for stash accounts. -// SlashingSpans: map T::AccountId => Option; -// -// /// Records information about the maximum slash of a stash within a slashing span, -// /// as well as how much reward has been paid out. -// SpanSlash: map (T::AccountId, slashing::SpanIndex) => slashing::SpanRecord>; + /// Slashing spans for stash accounts. + SlashingSpans: map T::AccountId => Option; + + /// Records information about the maximum slash of a stash within a slashing span, + /// as well as how much reward has been paid out. + SpanSlash: map (T::AccountId, slashing::SpanIndex) => slashing::SpanRecord; /// The earliest era for which we have a pending, unapplied slash. EarliestUnappliedSlash: Option; @@ -929,6 +938,9 @@ decl_module! { // TODO: doc const Cap: RingBalance = T::Cap::get(); + // TODO: doc + const TotalPower: Power = T::TotalPower::get(); + // TODO: doc const GenesisTime: MomentOf = T::GenesisTime::get(); @@ -968,7 +980,7 @@ decl_module! { controller: ::Source, value: StakingBalanceT, payee: RewardDestination, - promise_month: TimeStamp + promise_month: Moment ) { let stash = ensure_signed(origin)?; ensure!(!>::exists(&stash), Error::::AlreadyBonded); @@ -1041,7 +1053,7 @@ decl_module! { /// - One DB entry. /// # #[weight = SimpleDispatchInfo::FixedNormal(500_000)] - fn bond_extra(origin, max_additional: StakingBalanceT, promise_month: TimeStamp) { + fn bond_extra(origin, max_additional: StakingBalanceT, promise_month: Moment) { let stash = ensure_signed(origin)?; let controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; @@ -1079,7 +1091,7 @@ decl_module! { } // TODO: doc - fn deposit_extra(origin, value: RingBalance, promise_month: TimeStamp) { + fn deposit_extra(origin, value: RingBalance, promise_month: Moment) { let stash = ensure_signed(origin)?; let controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; @@ -1228,11 +1240,11 @@ decl_module! { let kton_slash = { let plan_duration_in_months = { - let plan_duration_in_ts = (item.expire_time - item.start_time).saturated_into::(); + let plan_duration_in_ts = (item.expire_time - item.start_time).saturated_into::(); plan_duration_in_ts / MONTH_IN_MILLISECONDS }; let passed_duration_in_months = { - let passed_duration_in_ts = (now - item.start_time).saturated_into::(); + let passed_duration_in_ts = (now - item.start_time).saturated_into::(); passed_duration_in_ts / MONTH_IN_MILLISECONDS }; @@ -1497,14 +1509,15 @@ decl_module! { impl Module { // PUBLIC IMMUTABLES - // FIXME - /// The total balance that can be slashed from a stash account as of right now. + /// The total power that can be slashed from a stash account as of right now. pub fn slashable_power_of(stash: &T::AccountId) -> Power { - // Self::bonded(stash) - // .and_then(Self::ledger) - // .map(|l| l.active) - // .unwrap_or_default() - unimplemented!() + Self::bonded(stash) + .and_then(Self::ledger) + .map(|l| { + inflation::compute_balance_power::(l.active_ring, Self::ring_pool()) + + inflation::compute_balance_power::(l.active_kton, Self::kton_pool()) + }) + .unwrap_or_default() } // Update the ledger while bonding ring and compute the kton should return. @@ -1512,7 +1525,7 @@ impl Module { stash: &T::AccountId, controller: &T::AccountId, value: RingBalance, - promise_month: TimeStamp, + promise_month: Moment, mut ledger: StakingLedgerT, ) -> (MomentOf, MomentOf) { let start_time = T::Time::now(); @@ -1707,89 +1720,93 @@ impl Module { let era_duration = now - previous_era_start; if !era_duration.is_zero() { let validators = Self::current_elected(); - let (total_payout, max_payout) = inflation::compute_total_payout::( era_duration, T::Time::now() - T::GenesisTime::get(), T::Cap::get() - T::RingCurrency::total_issuance(), PayoutFraction::get(), ); + let mut total_imbalance = >::zero(); + let mut validators_reward = vec![]; + + 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; + let (imbalance, (validator_reward, nominators_reward)) = Self::reward_validator(v, reward); + + total_imbalance.subsume(imbalance); + validators_reward.push(ValidatorReward { + who: v.to_owned(), + amount: validator_reward, + nominators_reward, + }); + } + } - // let mut total_imbalance = >::zero(); - // - // 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)); - // } - // } - // - // // 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)); + // 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, validators_reward)); + + T::RingReward::on_unbalanced(total_imbalance); + T::RingRewardRemainder::on_unbalanced(T::RingCurrency::issue(rest)); } - // - // // Increment current era. - // let current_era = CurrentEra::mutate(|s| { - // *s += 1; - // *s - // }); - // - // CurrentEraStartSessionIndex::mutate(|v| { - // *v = start_session_index; - // }); - // let bonding_duration = T::BondingDurationInEra::get(); - // - // BondedEras::mutate(|bonded| { - // bonded.push((current_era, start_session_index)); - // - // if current_era > bonding_duration { - // let first_kept = current_era - bonding_duration; - // - // // prune out everything that's from before the first-kept index. - // let n_to_prune = bonded.iter().take_while(|&&(era_idx, _)| era_idx < first_kept).count(); - // - // // kill slashing metadata. - // for (pruned_era, _) in bonded.drain(..n_to_prune) { - // slashing::clear_era_metadata::(pruned_era); - // } - // - // if let Some(&(_, first_session)) = bonded.first() { - // T::SessionInterface::prune_historical_up_to(first_session); - // } - // } - // }); - // - // // Reassign all Stakers. - // let (_slot_stake, maybe_new_validators) = Self::select_validators(); - // Self::apply_unapplied_slashes(current_era); - // - // maybe_new_validators - unimplemented!() + + // Increment current era. + let current_era = CurrentEra::mutate(|s| { + *s += 1; + *s + }); + + CurrentEraStartSessionIndex::mutate(|v| { + *v = start_session_index; + }); + let bonding_duration_in_era = T::BondingDurationInEra::get(); + + BondedEras::mutate(|bonded| { + bonded.push((current_era, start_session_index)); + + if current_era > bonding_duration_in_era { + let first_kept = current_era - bonding_duration_in_era; + + // prune out everything that's from before the first-kept index. + let n_to_prune = bonded.iter().take_while(|&&(era_idx, _)| era_idx < first_kept).count(); + + // kill slashing metadata. + for (pruned_era, _) in bonded.drain(..n_to_prune) { + slashing::clear_era_metadata::(pruned_era); + } + + if let Some(&(_, first_session)) = bonded.first() { + T::SessionInterface::prune_historical_up_to(first_session); + } + } + }); + + // Reassign all Stakers. + let (_slot_stake, maybe_new_validators) = Self::select_validators(); + Self::apply_unapplied_slashes(current_era); + + maybe_new_validators } /// Apply previously-unapplied slashes on the beginning of a new era, after a delay. fn apply_unapplied_slashes(current_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); - // for era in (*earliest)..keep_from { - // let era_slashes = ::UnappliedSlashes::take(&era); - // for slash in era_slashes { - // slashing::apply_slash::(slash); - // } - // } - // - // *earliest = (*earliest).max(keep_from) - // } - // }) - unimplemented!() + 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); + for era in (*earliest)..keep_from { + let era_slashes = ::UnappliedSlashes::take(&era); + for slash in era_slashes { + slashing::apply_slash::(slash); + } + } + + *earliest = (*earliest).max(keep_from) + } + }) } /// Select a new validator set from the assembled stakers and their role preferences. @@ -1798,142 +1815,139 @@ impl Module { /// /// Assumes storage is coherent with the declaration. fn select_validators() -> (Power, 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()]); - // all_nominators.push(self_vote); - // who - // }) - // .collect::>(); - // let nominator_votes = >::enumerate().map(|(nominator, nominations)| { - // let Nominations { - // submitted_in, - // mut targets, - // suppressed: _, - // } = nominations; - // - // // Filter out nomination targets which were nominated before the most recent - // // slashing span. - // targets.retain(|stash| { - // ::SlashingSpans::get(&stash).map_or(true, |spans| submitted_in >= spans.last_start()) - // }); - // - // (nominator, targets) - // }); - // - // all_nominators.extend(nominator_votes); - // - // let maybe_phragmen_result = sp_phragmen::elect::<_, _, _, T::CurrencyToVote>( - // Self::validator_count() as usize, - // Self::minimum_validator_count().max(1) as usize, - // all_validators, - // all_nominators, - // Self::slashable_balance_of, - // ); - // - // if let Some(phragmen_result) = maybe_phragmen_result { - // let elected_stashes = phragmen_result - // .winners - // .iter() - // .map(|(s, _)| s.clone()) - // .collect::>(); - // let assignments = phragmen_result.assignments; - // let to_votes = - // |b: BalanceOf| , u64>>::convert(b) as ExtendedBalance; - // let to_balance = - // |e: ExtendedBalance| >>::convert(e); - // let mut supports = sp_phragmen::build_support_map::<_, _, _, T::CurrencyToVote>( - // &elected_stashes, - // &assignments, - // Self::slashable_balance_of, - // ); - // - // if cfg!(feature = "equalize") { - // let mut staked_assignments: Vec<(T::AccountId, Vec>)> = - // Vec::with_capacity(assignments.len()); - // for (n, assignment) in assignments.iter() { - // let mut staked_assignment: Vec> = - // Vec::with_capacity(assignment.len()); - // - // // If this is a self vote, then we don't need to equalise it at all. While the - // // staking system does not allow nomination and validation at the same time, - // // this must always be 100% support. - // if assignment.len() == 1 && assignment[0].0 == *n { - // continue; - // } - // for (c, per_thing) in assignment.iter() { - // let nominator_stake = to_votes(Self::slashable_balance_of(n)); - // let other_stake = *per_thing * nominator_stake; - // staked_assignment.push((c.clone(), other_stake)); - // } - // staked_assignments.push((n.clone(), staked_assignment)); - // } - // - // let tolerance = 0_u128; - // let iterations = 2_usize; - // sp_phragmen::equalize::<_, _, T::CurrencyToVote, _>( - // staked_assignments, - // &mut supports, - // tolerance, - // iterations, - // 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(); - // for (c, s) in supports.into_iter() { - // // build `struct exposure` from `support` - // let exposure = Exposure { - // own: to_balance(s.own), - // // 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: to_balance(s.total), - // others: s - // .others - // .into_iter() - // .map(|(who, value)| IndividualExposure { - // who, - // value: to_balance(value), - // }) - // .collect::>>(), - // }; - // if exposure.total < slot_stake { - // slot_stake = exposure.total; - // } - // - // >::insert(&c, exposure.clone()); - // } - // - // // Update slot stake. - // >::put(&slot_stake); - // // Set the new validator set in sessions. - // >::put(&elected_stashes); - // - // // 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)) - // } else { - // // There were not enough candidates for even our minimal level of functionality. - // // This is bad. - // // We should probably disable all functionality except for block production - // // and let the chain keep producing blocks until we can decide on a sufficiently - // // substantial set. - // // TODO: #2494 - // (Self::slot_stake(), None) - // } - unimplemented!() + 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()]); + all_nominators.push(self_vote); + who + }) + .collect::>(); + let nominator_votes = >::enumerate().map(|(nominator, nominations)| { + let Nominations { + submitted_in, + mut targets, + suppressed: _, + } = nominations; + + // Filter out nomination targets which were nominated before the most recent + // slashing span. + targets.retain(|stash| { + ::SlashingSpans::get(&stash).map_or(true, |spans| submitted_in >= spans.last_start()) + }); + + (nominator, targets) + }); + + all_nominators.extend(nominator_votes); + + let maybe_phragmen_result = sp_phragmen::elect::<_, _, _, T::PowerToVote>( + Self::validator_count() as usize, + Self::minimum_validator_count().max(1) as usize, + all_validators, + all_nominators, + Self::slashable_power_of, + ); + + if let Some(phragmen_result) = maybe_phragmen_result { + let elected_stashes = phragmen_result + .winners + .iter() + .map(|(s, _)| s.clone()) + .collect::>(); + let assignments = phragmen_result.assignments; + let to_votes = |p: Power| >::convert(p) as Votes; + let to_power = |v: Votes| >::convert(v); + let mut supports = sp_phragmen::build_support_map::<_, _, _, T::PowerToVote>( + &elected_stashes, + &assignments, + Self::slashable_power_of, + ); + + if cfg!(feature = "equalize") { + let mut staked_assignments: Vec<(T::AccountId, Vec>)> = + Vec::with_capacity(assignments.len()); + for (n, assignment) in assignments.iter() { + let mut staked_assignment: Vec> = + Vec::with_capacity(assignment.len()); + + // If this is a self vote, then we don't need to equalise it at all. While the + // staking system does not allow nomination and validation at the same time, + // this must always be 100% support. + if assignment.len() == 1 && assignment[0].0 == *n { + continue; + } + for (c, per_thing) in assignment.iter() { + let nominator_stake = to_votes(Self::slashable_power_of(n)); + let other_stake = *per_thing * nominator_stake; + staked_assignment.push((c.clone(), other_stake)); + } + staked_assignments.push((n.clone(), staked_assignment)); + } + + let tolerance = 0_u128; + let iterations = 2_usize; + sp_phragmen::equalize::<_, _, T::PowerToVote, _>( + staked_assignments, + &mut supports, + tolerance, + iterations, + Self::slashable_power_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 = Power::max_value(); + for (c, s) in supports.into_iter() { + // build `struct exposure` from `support` + let exposure = Exposure { + own: to_power(s.own), + // 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: to_power(s.total), + others: s + .others + .into_iter() + .map(|(who, value)| IndividualExposure { + who, + value: to_power(value), + }) + .collect::>>(), + }; + if exposure.total < slot_stake { + slot_stake = exposure.total; + } + + >::insert(&c, exposure.clone()); + } + + // Update slot stake. + SlotStake::put(&slot_stake); + // Set the new validator set in sessions. + >::put(&elected_stashes); + + // 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)) + } else { + // There were not enough candidates for even our minimal level of functionality. + // This is bad. + // We should probably disable all functionality except for block production + // and let the chain keep producing blocks until we can decide on a sufficiently + // substantial set. + // TODO: #2494 + (Self::slot_stake(), None) + } } /// Remove all associated data of a stash account from the staking system. @@ -1951,7 +1965,7 @@ impl Module { >::remove(&controller); } - // slashing::clear_stash_metadata::(stash); + slashing::clear_stash_metadata::(stash); } /// Add reward points to validators using their stash account ID. diff --git a/frame/staking/src/slashing.rs b/frame/staking/src/slashing.rs index 466a9b03e..42a76b942 100644 --- a/frame/staking/src/slashing.rs +++ b/frame/staking/src/slashing.rs @@ -48,9 +48,6 @@ //! //! Based on research at https://research.web3.foundation/en/latest/polkadot/slashing/npos/ -use super::{ - BalanceOf, EraIndex, Exposure, Module, NegativeImbalanceOf, Perbill, SessionInterface, Store, Trait, UnappliedSlash, -}; use codec::{Decode, Encode}; use frame_support::{ traits::{Currency, Imbalance, OnUnbalanced}, @@ -59,9 +56,11 @@ use frame_support::{ use sp_runtime::traits::{Saturating, Zero}; use sp_std::vec::Vec; -/// The proportion of the slashing reward to be paid out on the first slashing detection. -/// This is f_1 in the paper. -const REWARD_F1: Perbill = Perbill::from_percent(50); +use crate::{EraIndex, Exposure, Module, Perbill, Power, SessionInterface, Store, Trait, UnappliedSlash}; + +///// The proportion of the slashing reward to be paid out on the first slashing detection. +///// This is f_1 in the paper. +//const REWARD_F1: Perbill = Perbill::from_percent(50); /// The index of a slashing span - unique to each stash. pub(crate) type SpanIndex = u32; @@ -95,31 +94,31 @@ pub struct SlashingSpans { } impl SlashingSpans { - // creates a new record of slashing spans for a stash, starting at the beginning - // of the bonding period, relative to now. - fn new(window_start: EraIndex) -> Self { - SlashingSpans { - span_index: 0, - last_start: window_start, - prior: Vec::new(), - } - } - - // update the slashing spans to reflect the start of a new span at the era after `now` - // returns `true` if a new span was started, `false` otherwise. `false` indicates - // that internal state is unchanged. - fn end_span(&mut self, now: EraIndex) -> bool { - let next_start = now + 1; - if next_start <= self.last_start { - return false; - } - - let last_length = next_start - self.last_start; - self.prior.insert(0, last_length); - self.last_start = next_start; - self.span_index += 1; - true - } + // // creates a new record of slashing spans for a stash, starting at the beginning + // // of the bonding period, relative to now. + // fn new(window_start: EraIndex) -> Self { + // SlashingSpans { + // span_index: 0, + // last_start: window_start, + // prior: Vec::new(), + // } + // } + // + // // update the slashing spans to reflect the start of a new span at the era after `now` + // // returns `true` if a new span was started, `false` otherwise. `false` indicates + // // that internal state is unchanged. + // fn end_span(&mut self, now: EraIndex) -> bool { + // let next_start = now + 1; + // if next_start <= self.last_start { + // return false; + // } + // + // let last_length = next_start - self.last_start; + // self.prior.insert(0, last_length); + // self.last_start = next_start; + // self.span_index += 1; + // true + // } // an iterator over all slashing spans in _reverse_ order - most recent first. pub(crate) fn iter(&'_ self) -> impl Iterator + '_ { @@ -150,370 +149,370 @@ impl SlashingSpans { self.last_start } - // prune the slashing spans against a window, whose start era index is given. + // // prune the slashing spans against a window, whose start era index is given. + // // + // // If this returns `Some`, then it includes a range start..end of all the span + // // indices which were pruned. + // fn prune(&mut self, window_start: EraIndex) -> Option<(SpanIndex, SpanIndex)> { + // let old_idx = self + // .iter() + // .skip(1) // skip ongoing span. + // .position(|span| span.length.map_or(false, |len| span.start + len <= window_start)); // - // If this returns `Some`, then it includes a range start..end of all the span - // indices which were pruned. - fn prune(&mut self, window_start: EraIndex) -> Option<(SpanIndex, SpanIndex)> { - let old_idx = self - .iter() - .skip(1) // skip ongoing span. - .position(|span| span.length.map_or(false, |len| span.start + len <= window_start)); - - let earliest_span_index = self.span_index - self.prior.len() as SpanIndex; - let pruned = match old_idx { - Some(o) => { - self.prior.truncate(o); - let new_earliest = self.span_index - self.prior.len() as SpanIndex; - Some((earliest_span_index, new_earliest)) - } - None => None, - }; - - // readjust the ongoing span, if it started before the beginning of the window. - self.last_start = sp_std::cmp::max(self.last_start, window_start); - pruned - } + // let earliest_span_index = self.span_index - self.prior.len() as SpanIndex; + // let pruned = match old_idx { + // Some(o) => { + // self.prior.truncate(o); + // let new_earliest = self.span_index - self.prior.len() as SpanIndex; + // Some((earliest_span_index, new_earliest)) + // } + // None => None, + // }; + // + // // readjust the ongoing span, if it started before the beginning of the window. + // self.last_start = sp_std::cmp::max(self.last_start, window_start); + // pruned + // } } /// A slashing-span record for a particular stash. #[derive(Encode, Decode, Default)] -pub(crate) struct SpanRecord { - slashed: Balance, - paid_out: Balance, +pub(crate) struct SpanRecord { + slashed: Power, + paid_out: Power, } -impl SpanRecord { +impl SpanRecord { /// The value of stash balance slashed in this span. #[cfg(test)] - pub(crate) fn amount_slashed(&self) -> &Balance { + pub(crate) fn amount_slashed(&self) -> &Power { &self.slashed } } -/// Parameters for performing a slash. -#[derive(Clone)] -pub(crate) struct SlashParams<'a, T: 'a + Trait> { - /// The stash account being slashed. - pub(crate) stash: &'a T::AccountId, - /// The proportion of the slash. - pub(crate) slash: Perbill, - /// The exposure of the stash and all nominators. - pub(crate) exposure: &'a Exposure>, - /// The era where the offence occurred. - pub(crate) slash_era: EraIndex, - /// The first era in the current bonding period. - pub(crate) window_start: EraIndex, - /// The current era. - pub(crate) now: EraIndex, - /// The maximum percentage of a slash that ever gets paid out. - /// This is f_inf in the paper. - pub(crate) reward_proportion: Perbill, -} - -/// Computes a slash of a validator and nominators. It returns an unapplied -/// record to be applied at some later point. Slashing metadata is updated in storage, -/// since unapplied records are only rarely intended to be dropped. -/// -/// The pending slash record returned does not have initialized reporters. Those have -/// to be set at a higher level, if any. -pub(crate) fn compute_slash(params: SlashParams) -> Option>> { - let SlashParams { - stash, - slash, - exposure, - slash_era, - window_start, - now, - reward_proportion, - } = params.clone(); - - let mut reward_payout = Zero::zero(); - let mut val_slashed = Zero::zero(); - - // is the slash amount here a maximum for the era? - let own_slash = slash * exposure.own; - if slash * exposure.total == Zero::zero() { - // kick out the validator even if they won't be slashed, - // as long as the misbehavior is from their most recent slashing span. - kick_out_if_recent::(params); - return None; - } - - let (prior_slash_p, _era_slash) = - as Store>::ValidatorSlashInEra::get(&slash_era, stash).unwrap_or((Perbill::zero(), Zero::zero())); - - // compare slash proportions rather than slash values to avoid issues due to rounding - // error. - if slash.deconstruct() > prior_slash_p.deconstruct() { - as Store>::ValidatorSlashInEra::insert(&slash_era, stash, &(slash, own_slash)); - } else { - // we slash based on the max in era - this new event is not the max, - // so neither the validator or any nominators will need an update. - // - // this does lead to a divergence of our system from the paper, which - // pays out some reward even if the latest report is not max-in-era. - // we opt to avoid the nominator lookups and edits and leave more rewards - // for more drastic misbehavior. - return None; - } - - // apply slash to validator. - { - let mut spans = fetch_spans::( - stash, - window_start, - &mut reward_payout, - &mut val_slashed, - reward_proportion, - ); - - let target_span = spans.compare_and_update_span_slash(slash_era, own_slash); - - if target_span == Some(spans.span_index()) { - // misbehavior occurred within the current slashing span - take appropriate - // actions. - - // chill the validator - it misbehaved in the current span and should - // not continue in the next election. also end the slashing span. - spans.end_span(now); - >::chill_stash(stash); - - // make sure to disable validator till the end of this session - if T::SessionInterface::disable_validator(stash).unwrap_or(false) { - // force a new era, to select a new validator set - >::ensure_new_era() - } - } - } - - let mut nominators_slashed = Vec::new(); - reward_payout += slash_nominators::(params, prior_slash_p, &mut nominators_slashed); - - Some(UnappliedSlash { - validator: stash.clone(), - own: val_slashed, - others: nominators_slashed, - reporters: Vec::new(), - payout: reward_payout, - }) -} - -// doesn't apply any slash, but kicks out the validator if the misbehavior is from -// the most recent slashing span. -fn kick_out_if_recent(params: SlashParams) { - // these are not updated by era-span or end-span. - let mut reward_payout = Zero::zero(); - let mut val_slashed = Zero::zero(); - let mut spans = fetch_spans::( - params.stash, - params.window_start, - &mut reward_payout, - &mut val_slashed, - params.reward_proportion, - ); - - if spans.era_span(params.slash_era).map(|s| s.index) == Some(spans.span_index()) { - spans.end_span(params.now); - >::chill_stash(params.stash); - - // make sure to disable validator till the end of this session - if T::SessionInterface::disable_validator(params.stash).unwrap_or(false) { - // force a new era, to select a new validator set - >::ensure_new_era() - } - } -} - -/// Slash nominators. Accepts general parameters and the prior slash percentage of the validator. -/// -/// Returns the amount of reward to pay out. -fn slash_nominators( - params: SlashParams, - prior_slash_p: Perbill, - nominators_slashed: &mut Vec<(T::AccountId, BalanceOf)>, -) -> BalanceOf { - let SlashParams { - stash: _, - slash, - exposure, - slash_era, - window_start, - now, - reward_proportion, - } = params; - - let mut reward_payout = Zero::zero(); - - nominators_slashed.reserve(exposure.others.len()); - for nominator in &exposure.others { - let stash = &nominator.who; - let mut nom_slashed = Zero::zero(); - - // the era slash of a nominator always grows, if the validator - // had a new max slash for the era. - let era_slash = { - let own_slash_prior = prior_slash_p * nominator.value; - let own_slash_by_validator = slash * nominator.value; - let own_slash_difference = own_slash_by_validator.saturating_sub(own_slash_prior); - - let mut era_slash = - as Store>::NominatorSlashInEra::get(&slash_era, stash).unwrap_or(Zero::zero()); - - era_slash += own_slash_difference; - - as Store>::NominatorSlashInEra::insert(&slash_era, stash, &era_slash); - - era_slash - }; - - // compare the era slash against other eras in the same span. - { - let mut spans = fetch_spans::( - stash, - window_start, - &mut reward_payout, - &mut nom_slashed, - reward_proportion, - ); - - let target_span = spans.compare_and_update_span_slash(slash_era, era_slash); - - if target_span == Some(spans.span_index()) { - // Chill the nominator outright, ending the slashing span. - spans.end_span(now); - >::chill_stash(stash); - } - } - - nominators_slashed.push((stash.clone(), nom_slashed)); - } - - reward_payout -} - -// helper struct for managing a set of spans we are currently inspecting. -// writes alterations to disk on drop, but only if a slash has been carried out. -// -// NOTE: alterations to slashing metadata should not be done after this is dropped. -// dropping this struct applies any necessary slashes, which can lead to free balance -// being 0, and the account being garbage-collected -- a dead account should get no new -// metadata. -struct InspectingSpans<'a, T: Trait + 'a> { - dirty: bool, - window_start: EraIndex, - stash: &'a T::AccountId, - spans: SlashingSpans, - paid_out: &'a mut BalanceOf, - slash_of: &'a mut BalanceOf, - reward_proportion: Perbill, - _marker: sp_std::marker::PhantomData, -} - -// fetches the slashing spans record for a stash account, initializing it if necessary. -fn fetch_spans<'a, T: Trait + 'a>( - stash: &'a T::AccountId, - window_start: EraIndex, - paid_out: &'a mut BalanceOf, - slash_of: &'a mut BalanceOf, - reward_proportion: Perbill, -) -> InspectingSpans<'a, T> { - let spans = as Store>::SlashingSpans::get(stash).unwrap_or_else(|| { - let spans = SlashingSpans::new(window_start); - as Store>::SlashingSpans::insert(stash, &spans); - spans - }); - - InspectingSpans { - dirty: false, - window_start, - stash, - spans, - slash_of, - paid_out, - reward_proportion, - _marker: sp_std::marker::PhantomData, - } -} - -impl<'a, T: 'a + Trait> InspectingSpans<'a, T> { - fn span_index(&self) -> SpanIndex { - self.spans.span_index - } - - fn end_span(&mut self, now: EraIndex) { - self.dirty = self.spans.end_span(now) || self.dirty; - } - - fn add_slash(&mut self, amount: BalanceOf) { - *self.slash_of += amount; - } - - // find the span index of the given era, if covered. - fn era_span(&self, era: EraIndex) -> Option { - self.spans.iter().find(|span| span.contains_era(era)) - } - - // compares the slash in an era to the overall current span slash. - // if it's higher, applies the difference of the slashes and then updates the span on disk. - // - // returns the span index of the era where the slash occurred, if any. - fn compare_and_update_span_slash(&mut self, slash_era: EraIndex, slash: BalanceOf) -> Option { - let target_span = self.era_span(slash_era)?; - let span_slash_key = (self.stash.clone(), target_span.index); - let mut span_record = as Store>::SpanSlash::get(&span_slash_key); - let mut changed = false; - - let reward = if span_record.slashed < slash { - // new maximum span slash. apply the difference. - let difference = slash - span_record.slashed; - span_record.slashed = slash; - - // compute reward. - let reward = REWARD_F1 * (self.reward_proportion * slash).saturating_sub(span_record.paid_out); - - self.add_slash(difference); - changed = true; - - reward - } else if span_record.slashed == slash { - // compute reward. no slash difference to apply. - REWARD_F1 * (self.reward_proportion * slash).saturating_sub(span_record.paid_out) - } else { - Zero::zero() - }; - - if !reward.is_zero() { - changed = true; - span_record.paid_out += reward; - *self.paid_out += reward; - } - - if changed { - self.dirty = true; - as Store>::SpanSlash::insert(&span_slash_key, &span_record); - } - - Some(target_span.index) - } -} - -impl<'a, T: 'a + Trait> Drop for InspectingSpans<'a, T> { - fn drop(&mut self) { - // only update on disk if we slashed this account. - if !self.dirty { - return; - } - - if let Some((start, end)) = self.spans.prune(self.window_start) { - for span_index in start..end { - as Store>::SpanSlash::remove(&(self.stash.clone(), span_index)); - } - } - - as Store>::SlashingSpans::insert(self.stash, &self.spans); - } -} +///// Parameters for performing a slash. +//#[derive(Clone)] +//pub(crate) struct SlashParams<'a, T: 'a + Trait> { +// /// The stash account being slashed. +// pub(crate) stash: &'a T::AccountId, +// /// The proportion of the slash. +// pub(crate) slash: Perbill, +// /// The exposure of the stash and all nominators. +// pub(crate) exposure: &'a Exposure>, +// /// The era where the offence occurred. +// pub(crate) slash_era: EraIndex, +// /// The first era in the current bonding period. +// pub(crate) window_start: EraIndex, +// /// The current era. +// pub(crate) now: EraIndex, +// /// The maximum percentage of a slash that ever gets paid out. +// /// This is f_inf in the paper. +// pub(crate) reward_proportion: Perbill, +//} +// +///// Computes a slash of a validator and nominators. It returns an unapplied +///// record to be applied at some later point. Slashing metadata is updated in storage, +///// since unapplied records are only rarely intended to be dropped. +///// +///// The pending slash record returned does not have initialized reporters. Those have +///// to be set at a higher level, if any. +//pub(crate) fn compute_slash(params: SlashParams) -> Option>> { +// let SlashParams { +// stash, +// slash, +// exposure, +// slash_era, +// window_start, +// now, +// reward_proportion, +// } = params.clone(); +// +// let mut reward_payout = Zero::zero(); +// let mut val_slashed = Zero::zero(); +// +// // is the slash amount here a maximum for the era? +// let own_slash = slash * exposure.own; +// if slash * exposure.total == Zero::zero() { +// // kick out the validator even if they won't be slashed, +// // as long as the misbehavior is from their most recent slashing span. +// kick_out_if_recent::(params); +// return None; +// } +// +// let (prior_slash_p, _era_slash) = +// as Store>::ValidatorSlashInEra::get(&slash_era, stash).unwrap_or((Perbill::zero(), Zero::zero())); +// +// // compare slash proportions rather than slash values to avoid issues due to rounding +// // error. +// if slash.deconstruct() > prior_slash_p.deconstruct() { +// as Store>::ValidatorSlashInEra::insert(&slash_era, stash, &(slash, own_slash)); +// } else { +// // we slash based on the max in era - this new event is not the max, +// // so neither the validator or any nominators will need an update. +// // +// // this does lead to a divergence of our system from the paper, which +// // pays out some reward even if the latest report is not max-in-era. +// // we opt to avoid the nominator lookups and edits and leave more rewards +// // for more drastic misbehavior. +// return None; +// } +// +// // apply slash to validator. +// { +// let mut spans = fetch_spans::( +// stash, +// window_start, +// &mut reward_payout, +// &mut val_slashed, +// reward_proportion, +// ); +// +// let target_span = spans.compare_and_update_span_slash(slash_era, own_slash); +// +// if target_span == Some(spans.span_index()) { +// // misbehavior occurred within the current slashing span - take appropriate +// // actions. +// +// // chill the validator - it misbehaved in the current span and should +// // not continue in the next election. also end the slashing span. +// spans.end_span(now); +// >::chill_stash(stash); +// +// // make sure to disable validator till the end of this session +// if T::SessionInterface::disable_validator(stash).unwrap_or(false) { +// // force a new era, to select a new validator set +// >::ensure_new_era() +// } +// } +// } +// +// let mut nominators_slashed = Vec::new(); +// reward_payout += slash_nominators::(params, prior_slash_p, &mut nominators_slashed); +// +// Some(UnappliedSlash { +// validator: stash.clone(), +// own: val_slashed, +// others: nominators_slashed, +// reporters: Vec::new(), +// payout: reward_payout, +// }) +//} +// +//// doesn't apply any slash, but kicks out the validator if the misbehavior is from +//// the most recent slashing span. +//fn kick_out_if_recent(params: SlashParams) { +// // these are not updated by era-span or end-span. +// let mut reward_payout = Zero::zero(); +// let mut val_slashed = Zero::zero(); +// let mut spans = fetch_spans::( +// params.stash, +// params.window_start, +// &mut reward_payout, +// &mut val_slashed, +// params.reward_proportion, +// ); +// +// if spans.era_span(params.slash_era).map(|s| s.index) == Some(spans.span_index()) { +// spans.end_span(params.now); +// >::chill_stash(params.stash); +// +// // make sure to disable validator till the end of this session +// if T::SessionInterface::disable_validator(params.stash).unwrap_or(false) { +// // force a new era, to select a new validator set +// >::ensure_new_era() +// } +// } +//} +// +///// Slash nominators. Accepts general parameters and the prior slash percentage of the validator. +///// +///// Returns the amount of reward to pay out. +//fn slash_nominators( +// params: SlashParams, +// prior_slash_p: Perbill, +// nominators_slashed: &mut Vec<(T::AccountId, BalanceOf)>, +//) -> BalanceOf { +// let SlashParams { +// stash: _, +// slash, +// exposure, +// slash_era, +// window_start, +// now, +// reward_proportion, +// } = params; +// +// let mut reward_payout = Zero::zero(); +// +// nominators_slashed.reserve(exposure.others.len()); +// for nominator in &exposure.others { +// let stash = &nominator.who; +// let mut nom_slashed = Zero::zero(); +// +// // the era slash of a nominator always grows, if the validator +// // had a new max slash for the era. +// let era_slash = { +// let own_slash_prior = prior_slash_p * nominator.value; +// let own_slash_by_validator = slash * nominator.value; +// let own_slash_difference = own_slash_by_validator.saturating_sub(own_slash_prior); +// +// let mut era_slash = +// as Store>::NominatorSlashInEra::get(&slash_era, stash).unwrap_or(Zero::zero()); +// +// era_slash += own_slash_difference; +// +// as Store>::NominatorSlashInEra::insert(&slash_era, stash, &era_slash); +// +// era_slash +// }; +// +// // compare the era slash against other eras in the same span. +// { +// let mut spans = fetch_spans::( +// stash, +// window_start, +// &mut reward_payout, +// &mut nom_slashed, +// reward_proportion, +// ); +// +// let target_span = spans.compare_and_update_span_slash(slash_era, era_slash); +// +// if target_span == Some(spans.span_index()) { +// // Chill the nominator outright, ending the slashing span. +// spans.end_span(now); +// >::chill_stash(stash); +// } +// } +// +// nominators_slashed.push((stash.clone(), nom_slashed)); +// } +// +// reward_payout +//} +// +//// helper struct for managing a set of spans we are currently inspecting. +//// writes alterations to disk on drop, but only if a slash has been carried out. +//// +//// NOTE: alterations to slashing metadata should not be done after this is dropped. +//// dropping this struct applies any necessary slashes, which can lead to free balance +//// being 0, and the account being garbage-collected -- a dead account should get no new +//// metadata. +//struct InspectingSpans<'a, T: Trait + 'a> { +// dirty: bool, +// window_start: EraIndex, +// stash: &'a T::AccountId, +// spans: SlashingSpans, +// paid_out: &'a mut BalanceOf, +// slash_of: &'a mut BalanceOf, +// reward_proportion: Perbill, +// _marker: sp_std::marker::PhantomData, +//} +// +//// fetches the slashing spans record for a stash account, initializing it if necessary. +//fn fetch_spans<'a, T: Trait + 'a>( +// stash: &'a T::AccountId, +// window_start: EraIndex, +// paid_out: &'a mut BalanceOf, +// slash_of: &'a mut BalanceOf, +// reward_proportion: Perbill, +//) -> InspectingSpans<'a, T> { +// let spans = as Store>::SlashingSpans::get(stash).unwrap_or_else(|| { +// let spans = SlashingSpans::new(window_start); +// as Store>::SlashingSpans::insert(stash, &spans); +// spans +// }); +// +// InspectingSpans { +// dirty: false, +// window_start, +// stash, +// spans, +// slash_of, +// paid_out, +// reward_proportion, +// _marker: sp_std::marker::PhantomData, +// } +//} +// +//impl<'a, T: 'a + Trait> InspectingSpans<'a, T> { +// fn span_index(&self) -> SpanIndex { +// self.spans.span_index +// } +// +// fn end_span(&mut self, now: EraIndex) { +// self.dirty = self.spans.end_span(now) || self.dirty; +// } +// +// fn add_slash(&mut self, amount: BalanceOf) { +// *self.slash_of += amount; +// } +// +// // find the span index of the given era, if covered. +// fn era_span(&self, era: EraIndex) -> Option { +// self.spans.iter().find(|span| span.contains_era(era)) +// } +// +// // compares the slash in an era to the overall current span slash. +// // if it's higher, applies the difference of the slashes and then updates the span on disk. +// // +// // returns the span index of the era where the slash occurred, if any. +// fn compare_and_update_span_slash(&mut self, slash_era: EraIndex, slash: BalanceOf) -> Option { +// let target_span = self.era_span(slash_era)?; +// let span_slash_key = (self.stash.clone(), target_span.index); +// let mut span_record = as Store>::SpanSlash::get(&span_slash_key); +// let mut changed = false; +// +// let reward = if span_record.slashed < slash { +// // new maximum span slash. apply the difference. +// let difference = slash - span_record.slashed; +// span_record.slashed = slash; +// +// // compute reward. +// let reward = REWARD_F1 * (self.reward_proportion * slash).saturating_sub(span_record.paid_out); +// +// self.add_slash(difference); +// changed = true; +// +// reward +// } else if span_record.slashed == slash { +// // compute reward. no slash difference to apply. +// REWARD_F1 * (self.reward_proportion * slash).saturating_sub(span_record.paid_out) +// } else { +// Zero::zero() +// }; +// +// if !reward.is_zero() { +// changed = true; +// span_record.paid_out += reward; +// *self.paid_out += reward; +// } +// +// if changed { +// self.dirty = true; +// as Store>::SpanSlash::insert(&span_slash_key, &span_record); +// } +// +// Some(target_span.index) +// } +//} +// +//impl<'a, T: 'a + Trait> Drop for InspectingSpans<'a, T> { +// fn drop(&mut self) { +// // only update on disk if we slashed this account. +// if !self.dirty { +// return; +// } +// +// if let Some((start, end)) = self.spans.prune(self.window_start) { +// for span_index in start..end { +// as Store>::SpanSlash::remove(&(self.stash.clone(), span_index)); +// } +// } +// +// as Store>::SlashingSpans::insert(self.stash, &self.spans); +// } +//} /// Clear slashing metadata for an obsolete era. pub(crate) fn clear_era_metadata(obsolete_era: EraIndex) { @@ -576,7 +575,7 @@ fn do_slash( } /// Apply a previously-unapplied slash. -pub(crate) fn apply_slash(unapplied_slash: UnappliedSlash>) { +pub(crate) fn apply_slash(unapplied_slash: UnappliedSlash) { let mut slashed_imbalance = NegativeImbalanceOf::::zero(); let mut reward_payout = unapplied_slash.payout; @@ -587,321 +586,321 @@ pub(crate) fn apply_slash(unapplied_slash: UnappliedSlash(&nominator, nominator_slash, &mut reward_payout, &mut slashed_imbalance); - } - - pay_reporters::(reward_payout, slashed_imbalance, &unapplied_slash.reporters); -} - -/// Apply a reward payout to some reporters, paying the rewards out of the slashed imbalance. -fn pay_reporters( - reward_payout: BalanceOf, - slashed_imbalance: NegativeImbalanceOf, - reporters: &[T::AccountId], -) { - if reward_payout.is_zero() || reporters.is_empty() { - // nobody to pay out to or nothing to pay; - // just treat the whole value as slashed. - T::Slash::on_unbalanced(slashed_imbalance); - return; - } - - // take rewards out of the slashed imbalance. - let reward_payout = reward_payout.min(slashed_imbalance.peek()); - let (mut reward_payout, mut value_slashed) = slashed_imbalance.split(reward_payout); - - let per_reporter = reward_payout.peek() / (reporters.len() as u32).into(); - for reporter in reporters { - let (reporter_reward, rest) = reward_payout.split(per_reporter); - reward_payout = rest; - - // this cancels out the reporter reward imbalance internally, leading - // to no change in total issuance. - T::Currency::resolve_creating(reporter, reporter_reward); - } - - // the rest goes to the on-slash imbalance handler (e.g. treasury) - value_slashed.subsume(reward_payout); // remainder of reward division remains. - T::Slash::on_unbalanced(value_slashed); + // for &(ref nominator, nominator_slash) in &unapplied_slash.others { + // do_slash::(&nominator, nominator_slash, &mut reward_payout, &mut slashed_imbalance); + // } + // + // pay_reporters::(reward_payout, slashed_imbalance, &unapplied_slash.reporters); } -// TODO: function for undoing a slash. +///// Apply a reward payout to some reporters, paying the rewards out of the slashed imbalance. +//fn pay_reporters( +// reward_payout: BalanceOf, +// slashed_imbalance: NegativeImbalanceOf, +// reporters: &[T::AccountId], +//) { +// if reward_payout.is_zero() || reporters.is_empty() { +// // nobody to pay out to or nothing to pay; +// // just treat the whole value as slashed. +// T::Slash::on_unbalanced(slashed_imbalance); +// return; +// } // - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn span_contains_era() { - // unbounded end - let span = SlashingSpan { - index: 0, - start: 1000, - length: None, - }; - assert!(!span.contains_era(0)); - assert!(!span.contains_era(999)); - - assert!(span.contains_era(1000)); - assert!(span.contains_era(1001)); - assert!(span.contains_era(10000)); - - // bounded end - non-inclusive range. - let span = SlashingSpan { - index: 0, - start: 1000, - length: Some(10), - }; - assert!(!span.contains_era(0)); - assert!(!span.contains_era(999)); - - assert!(span.contains_era(1000)); - assert!(span.contains_era(1001)); - assert!(span.contains_era(1009)); - assert!(!span.contains_era(1010)); - assert!(!span.contains_era(1011)); - } - - #[test] - fn single_slashing_span() { - let spans = SlashingSpans { - span_index: 0, - last_start: 1000, - prior: Vec::new(), - }; - - assert_eq!( - spans.iter().collect::>(), - vec![SlashingSpan { - index: 0, - start: 1000, - length: None - }], - ); - } - - #[test] - fn many_prior_spans() { - let spans = SlashingSpans { - span_index: 10, - last_start: 1000, - prior: vec![10, 9, 8, 10], - }; - - assert_eq!( - spans.iter().collect::>(), - vec![ - SlashingSpan { - index: 10, - start: 1000, - length: None - }, - SlashingSpan { - index: 9, - start: 990, - length: Some(10) - }, - SlashingSpan { - index: 8, - start: 981, - length: Some(9) - }, - SlashingSpan { - index: 7, - start: 973, - length: Some(8) - }, - SlashingSpan { - index: 6, - start: 963, - length: Some(10) - }, - ], - ) - } - - #[test] - fn pruning_spans() { - let mut spans = SlashingSpans { - span_index: 10, - last_start: 1000, - prior: vec![10, 9, 8, 10], - }; - - assert_eq!(spans.prune(981), Some((6, 8))); - assert_eq!( - spans.iter().collect::>(), - vec![ - SlashingSpan { - index: 10, - start: 1000, - length: None - }, - SlashingSpan { - index: 9, - start: 990, - length: Some(10) - }, - SlashingSpan { - index: 8, - start: 981, - length: Some(9) - }, - ], - ); - - assert_eq!(spans.prune(982), None); - assert_eq!( - spans.iter().collect::>(), - vec![ - SlashingSpan { - index: 10, - start: 1000, - length: None - }, - SlashingSpan { - index: 9, - start: 990, - length: Some(10) - }, - SlashingSpan { - index: 8, - start: 981, - length: Some(9) - }, - ], - ); - - assert_eq!(spans.prune(989), None); - assert_eq!( - spans.iter().collect::>(), - vec![ - SlashingSpan { - index: 10, - start: 1000, - length: None - }, - SlashingSpan { - index: 9, - start: 990, - length: Some(10) - }, - SlashingSpan { - index: 8, - start: 981, - length: Some(9) - }, - ], - ); - - assert_eq!(spans.prune(1000), Some((8, 10))); - assert_eq!( - spans.iter().collect::>(), - vec![SlashingSpan { - index: 10, - start: 1000, - length: None - },], - ); - - assert_eq!(spans.prune(2000), None); - assert_eq!( - spans.iter().collect::>(), - vec![SlashingSpan { - index: 10, - start: 2000, - length: None - },], - ); - - // now all in one shot. - let mut spans = SlashingSpans { - span_index: 10, - last_start: 1000, - prior: vec![10, 9, 8, 10], - }; - assert_eq!(spans.prune(2000), Some((6, 10))); - assert_eq!( - spans.iter().collect::>(), - vec![SlashingSpan { - index: 10, - start: 2000, - length: None - },], - ); - } - - #[test] - fn ending_span() { - let mut spans = SlashingSpans { - span_index: 1, - last_start: 10, - prior: Vec::new(), - }; - - assert!(spans.end_span(10)); - - assert_eq!( - spans.iter().collect::>(), - vec![ - SlashingSpan { - index: 2, - start: 11, - length: None - }, - SlashingSpan { - index: 1, - start: 10, - length: Some(1) - }, - ], - ); - - assert!(spans.end_span(15)); - assert_eq!( - spans.iter().collect::>(), - vec![ - SlashingSpan { - index: 3, - start: 16, - length: None - }, - SlashingSpan { - index: 2, - start: 11, - length: Some(5) - }, - SlashingSpan { - index: 1, - start: 10, - length: Some(1) - }, - ], - ); - - // does nothing if not a valid end. - assert!(!spans.end_span(15)); - assert_eq!( - spans.iter().collect::>(), - vec![ - SlashingSpan { - index: 3, - start: 16, - length: None - }, - SlashingSpan { - index: 2, - start: 11, - length: Some(5) - }, - SlashingSpan { - index: 1, - start: 10, - length: Some(1) - }, - ], - ); - } -} +// // take rewards out of the slashed imbalance. +// let reward_payout = reward_payout.min(slashed_imbalance.peek()); +// let (mut reward_payout, mut value_slashed) = slashed_imbalance.split(reward_payout); +// +// let per_reporter = reward_payout.peek() / (reporters.len() as u32).into(); +// for reporter in reporters { +// let (reporter_reward, rest) = reward_payout.split(per_reporter); +// reward_payout = rest; +// +// // this cancels out the reporter reward imbalance internally, leading +// // to no change in total issuance. +// T::Currency::resolve_creating(reporter, reporter_reward); +// } +// +// // the rest goes to the on-slash imbalance handler (e.g. treasury) +// value_slashed.subsume(reward_payout); // remainder of reward division remains. +// T::Slash::on_unbalanced(value_slashed); +//} +// +//// TODO: function for undoing a slash. +//// +// +//#[cfg(test)] +//mod tests { +// use super::*; +// +// #[test] +// fn span_contains_era() { +// // unbounded end +// let span = SlashingSpan { +// index: 0, +// start: 1000, +// length: None, +// }; +// assert!(!span.contains_era(0)); +// assert!(!span.contains_era(999)); +// +// assert!(span.contains_era(1000)); +// assert!(span.contains_era(1001)); +// assert!(span.contains_era(10000)); +// +// // bounded end - non-inclusive range. +// let span = SlashingSpan { +// index: 0, +// start: 1000, +// length: Some(10), +// }; +// assert!(!span.contains_era(0)); +// assert!(!span.contains_era(999)); +// +// assert!(span.contains_era(1000)); +// assert!(span.contains_era(1001)); +// assert!(span.contains_era(1009)); +// assert!(!span.contains_era(1010)); +// assert!(!span.contains_era(1011)); +// } +// +// #[test] +// fn single_slashing_span() { +// let spans = SlashingSpans { +// span_index: 0, +// last_start: 1000, +// prior: Vec::new(), +// }; +// +// assert_eq!( +// spans.iter().collect::>(), +// vec![SlashingSpan { +// index: 0, +// start: 1000, +// length: None +// }], +// ); +// } +// +// #[test] +// fn many_prior_spans() { +// let spans = SlashingSpans { +// span_index: 10, +// last_start: 1000, +// prior: vec![10, 9, 8, 10], +// }; +// +// assert_eq!( +// spans.iter().collect::>(), +// vec![ +// SlashingSpan { +// index: 10, +// start: 1000, +// length: None +// }, +// SlashingSpan { +// index: 9, +// start: 990, +// length: Some(10) +// }, +// SlashingSpan { +// index: 8, +// start: 981, +// length: Some(9) +// }, +// SlashingSpan { +// index: 7, +// start: 973, +// length: Some(8) +// }, +// SlashingSpan { +// index: 6, +// start: 963, +// length: Some(10) +// }, +// ], +// ) +// } +// +// #[test] +// fn pruning_spans() { +// let mut spans = SlashingSpans { +// span_index: 10, +// last_start: 1000, +// prior: vec![10, 9, 8, 10], +// }; +// +// assert_eq!(spans.prune(981), Some((6, 8))); +// assert_eq!( +// spans.iter().collect::>(), +// vec![ +// SlashingSpan { +// index: 10, +// start: 1000, +// length: None +// }, +// SlashingSpan { +// index: 9, +// start: 990, +// length: Some(10) +// }, +// SlashingSpan { +// index: 8, +// start: 981, +// length: Some(9) +// }, +// ], +// ); +// +// assert_eq!(spans.prune(982), None); +// assert_eq!( +// spans.iter().collect::>(), +// vec![ +// SlashingSpan { +// index: 10, +// start: 1000, +// length: None +// }, +// SlashingSpan { +// index: 9, +// start: 990, +// length: Some(10) +// }, +// SlashingSpan { +// index: 8, +// start: 981, +// length: Some(9) +// }, +// ], +// ); +// +// assert_eq!(spans.prune(989), None); +// assert_eq!( +// spans.iter().collect::>(), +// vec![ +// SlashingSpan { +// index: 10, +// start: 1000, +// length: None +// }, +// SlashingSpan { +// index: 9, +// start: 990, +// length: Some(10) +// }, +// SlashingSpan { +// index: 8, +// start: 981, +// length: Some(9) +// }, +// ], +// ); +// +// assert_eq!(spans.prune(1000), Some((8, 10))); +// assert_eq!( +// spans.iter().collect::>(), +// vec![SlashingSpan { +// index: 10, +// start: 1000, +// length: None +// },], +// ); +// +// assert_eq!(spans.prune(2000), None); +// assert_eq!( +// spans.iter().collect::>(), +// vec![SlashingSpan { +// index: 10, +// start: 2000, +// length: None +// },], +// ); +// +// // now all in one shot. +// let mut spans = SlashingSpans { +// span_index: 10, +// last_start: 1000, +// prior: vec![10, 9, 8, 10], +// }; +// assert_eq!(spans.prune(2000), Some((6, 10))); +// assert_eq!( +// spans.iter().collect::>(), +// vec![SlashingSpan { +// index: 10, +// start: 2000, +// length: None +// },], +// ); +// } +// +// #[test] +// fn ending_span() { +// let mut spans = SlashingSpans { +// span_index: 1, +// last_start: 10, +// prior: Vec::new(), +// }; +// +// assert!(spans.end_span(10)); +// +// assert_eq!( +// spans.iter().collect::>(), +// vec![ +// SlashingSpan { +// index: 2, +// start: 11, +// length: None +// }, +// SlashingSpan { +// index: 1, +// start: 10, +// length: Some(1) +// }, +// ], +// ); +// +// assert!(spans.end_span(15)); +// assert_eq!( +// spans.iter().collect::>(), +// vec![ +// SlashingSpan { +// index: 3, +// start: 16, +// length: None +// }, +// SlashingSpan { +// index: 2, +// start: 11, +// length: Some(5) +// }, +// SlashingSpan { +// index: 1, +// start: 10, +// length: Some(1) +// }, +// ], +// ); +// +// // does nothing if not a valid end. +// assert!(!spans.end_span(15)); +// assert_eq!( +// spans.iter().collect::>(), +// vec![ +// SlashingSpan { +// index: 3, +// start: 16, +// length: None +// }, +// SlashingSpan { +// index: 2, +// start: 11, +// length: Some(5) +// }, +// SlashingSpan { +// index: 1, +// start: 10, +// length: Some(1) +// }, +// ], +// ); +// } +//} From d825381d7a0a2b6618a52f7ae46d7703d80424bc Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Thu, 16 Jan 2020 11:31:49 +0800 Subject: [PATCH 08/17] try: ready for hacking `Exposure` and `CurrencyToPowerHandler` --- Cargo.lock | 14 +- Cargo.toml | 1 + bin/node/cli/src/chain_spec.rs | 244 +++--- bin/node/runtime/build.rs | 7 +- frame/balances/kton/src/lib.rs | 8 +- frame/balances/ring/src/lib.rs | 8 +- frame/staking/Cargo.toml | 2 +- frame/staking/src/lib.rs | 120 ++- frame/staking/src/migration.rs | 22 +- frame/staking/src/slashing.rs | 756 +++++++++--------- frame/staking/src/tests.rs | 980 ++++++++++++++---------- primitives/phragmen/Cargo.toml | 23 + primitives/phragmen/benches/phragmen.rs | 212 +++++ primitives/phragmen/src/lib.rs | 537 +++++++++++++ primitives/phragmen/src/mock.rs | 405 ++++++++++ primitives/phragmen/src/tests.rs | 407 ++++++++++ 16 files changed, 2759 insertions(+), 987 deletions(-) create mode 100644 primitives/phragmen/Cargo.toml create mode 100644 primitives/phragmen/benches/phragmen.rs create mode 100644 primitives/phragmen/src/lib.rs create mode 100644 primitives/phragmen/src/mock.rs create mode 100644 primitives/phragmen/src/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 0c394e72f..b211dd280 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -862,6 +862,18 @@ dependencies = [ "sp-std", ] +[[package]] +name = "darwinia-phragmen" +version = "0.4.0" +dependencies = [ + "rand 0.7.2", + "serde", + "sp-io", + "sp-runtime", + "sp-std", + "substrate-test-utils", +] + [[package]] name = "darwinia-ring" version = "0.4.0" @@ -883,6 +895,7 @@ dependencies = [ name = "darwinia-staking" version = "0.3.0" dependencies = [ + "darwinia-phragmen", "darwinia-ring", "darwinia-support", "frame-support", @@ -897,7 +910,6 @@ dependencies = [ "sp-core", "sp-io", "sp-keyring", - "sp-phragmen", "sp-runtime", "sp-staking", "sp-std", diff --git a/Cargo.toml b/Cargo.toml index 7df33583c..5e1b3dad2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,7 @@ members = [ "frame/balances/ring", "frame/staking", "frame/support", + "primitives/phragmen", ] [profile.release] diff --git a/bin/node/cli/src/chain_spec.rs b/bin/node/cli/src/chain_spec.rs index bfab71b55..b56d36a2d 100644 --- a/bin/node/cli/src/chain_spec.rs +++ b/bin/node/cli/src/chain_spec.rs @@ -16,24 +16,27 @@ //! Substrate chain configurations. -use sc_chain_spec::ChainSpecExtension; -use sp_core::{Pair, Public, crypto::UncheckedInto, sr25519}; -use serde::{Serialize, Deserialize}; +use grandpa_primitives::AuthorityId as GrandpaId; +use hex_literal::hex; +use node_runtime::constants::currency::*; +use node_runtime::Block; use node_runtime::{ AuthorityDiscoveryConfig, BabeConfig, BalancesConfig, ContractsConfig, CouncilConfig, DemocracyConfig, GrandpaConfig, ImOnlineConfig, IndicesConfig, SessionConfig, SessionKeys, StakerStatus, StakingConfig, SudoConfig, SystemConfig, TechnicalCommitteeConfig, WASM_BINARY, }; -use node_runtime::Block; -use node_runtime::constants::currency::*; +use pallet_im_online::sr25519::AuthorityId as ImOnlineId; +use sc_chain_spec::ChainSpecExtension; use sc_service; -use hex_literal::hex; use sc_telemetry::TelemetryEndpoints; -use grandpa_primitives::{AuthorityId as GrandpaId}; -use sp_consensus_babe::{AuthorityId as BabeId}; -use pallet_im_online::sr25519::{AuthorityId as ImOnlineId}; +use serde::{Deserialize, Serialize}; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; -use sp_runtime::{Perbill, traits::{Verify, IdentifyAccount}}; +use sp_consensus_babe::AuthorityId as BabeId; +use sp_core::{crypto::UncheckedInto, sr25519, Pair, Public}; +use sp_runtime::{ + traits::{IdentifyAccount, Verify}, + Perbill, +}; pub use node_primitives::{AccountId, Balance, Signature}; pub use node_runtime::GenesisConfig; @@ -53,10 +56,7 @@ pub struct Extensions { } /// Specialized `ChainSpec`. -pub type ChainSpec = sc_service::ChainSpec< - GenesisConfig, - Extensions, ->; +pub type ChainSpec = sc_service::ChainSpec; /// Flaming Fir testnet generator pub fn flaming_fir_config() -> Result { ChainSpec::from_json_bytes(&include_bytes!("../res/flaming-fir.json")[..]) @@ -68,7 +68,12 @@ fn session_keys( im_online: ImOnlineId, authority_discovery: AuthorityDiscoveryId, ) -> SessionKeys { - SessionKeys { grandpa, babe, im_online, authority_discovery } + SessionKeys { + grandpa, + babe, + im_online, + authority_discovery, + } } fn staging_testnet_config_genesis() -> GenesisConfig { @@ -78,74 +83,82 @@ fn staging_testnet_config_genesis() -> GenesisConfig { // and // for i in 1 2 3 4 ; do for j in session; do subkey --ed25519 inspect "$secret"//fir//$j//$i; done; done - let initial_authorities: Vec<(AccountId, AccountId, GrandpaId, BabeId, ImOnlineId, AuthorityDiscoveryId)> = vec![( - // 5Fbsd6WXDGiLTxunqeK5BATNiocfCqu9bS1yArVjCgeBLkVy - hex!["9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12"].into(), - // 5EnCiV7wSHeNhjW3FSUwiJNkcc2SBkPLn5Nj93FmbLtBjQUq - hex!["781ead1e2fa9ccb74b44c19d29cb2a7a4b5be3972927ae98cd3877523976a276"].into(), - // 5Fb9ayurnxnaXj56CjmyQLBiadfRCqUbL2VWNbbe1nZU6wiC - hex!["9becad03e6dcac03cee07edebca5475314861492cdfc96a2144a67bbe9699332"].unchecked_into(), - // 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8 - hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(), - // 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8 - hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(), - // 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8 - hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(), - ),( - // 5ERawXCzCWkjVq3xz1W5KGNtVx2VdefvZ62Bw1FEuZW4Vny2 - hex!["68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78"].into(), - // 5Gc4vr42hH1uDZc93Nayk5G7i687bAQdHHc9unLuyeawHipF - hex!["c8dc79e36b29395413399edaec3e20fcca7205fb19776ed8ddb25d6f427ec40e"].into(), - // 5EockCXN6YkiNCDjpqqnbcqd4ad35nU4RmA1ikM4YeRN4WcE - hex!["7932cff431e748892fa48e10c63c17d30f80ca42e4de3921e641249cd7fa3c2f"].unchecked_into(), - // 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ - hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(), - // 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ - hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(), - // 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ - hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(), - ),( - // 5DyVtKWPidondEu8iHZgi6Ffv9yrJJ1NDNLom3X9cTDi98qp - hex!["547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65"].into(), - // 5FeD54vGVNpFX3PndHPXJ2MDakc462vBCD5mgtWRnWYCpZU9 - hex!["9e42241d7cd91d001773b0b616d523dd80e13c6c2cab860b1234ef1b9ffc1526"].into(), - // 5E1jLYfLdUQKrFrtqoKgFrRvxM3oQPMbf6DfcsrugZZ5Bn8d - hex!["5633b70b80a6c8bb16270f82cca6d56b27ed7b76c8fd5af2986a25a4788ce440"].unchecked_into(), - // 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH - hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(), - // 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH - hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(), - // 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH - hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(), - ),( - // 5HYZnKWe5FVZQ33ZRJK1rG3WaLMztxWrrNDb1JRwaHHVWyP9 - hex!["f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663"].into(), - // 5EPQdAQ39WQNLCRjWsCk5jErsCitHiY5ZmjfWzzbXDoAoYbn - hex!["66bc1e5d275da50b72b15de072a2468a5ad414919ca9054d2695767cf650012f"].into(), - // 5DMa31Hd5u1dwoRKgC4uvqyrdK45RHv3CpwvpUC1EzuwDit4 - hex!["3919132b851ef0fd2dae42a7e734fe547af5a6b809006100f48944d7fae8e8ef"].unchecked_into(), - // 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x - hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(), - // 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x - hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(), - // 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x - hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(), - )]; + let initial_authorities: Vec<( + AccountId, + AccountId, + GrandpaId, + BabeId, + ImOnlineId, + AuthorityDiscoveryId, + )> = vec![ + ( + // 5Fbsd6WXDGiLTxunqeK5BATNiocfCqu9bS1yArVjCgeBLkVy + hex!["9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12"].into(), + // 5EnCiV7wSHeNhjW3FSUwiJNkcc2SBkPLn5Nj93FmbLtBjQUq + hex!["781ead1e2fa9ccb74b44c19d29cb2a7a4b5be3972927ae98cd3877523976a276"].into(), + // 5Fb9ayurnxnaXj56CjmyQLBiadfRCqUbL2VWNbbe1nZU6wiC + hex!["9becad03e6dcac03cee07edebca5475314861492cdfc96a2144a67bbe9699332"].unchecked_into(), + // 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8 + hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(), + // 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8 + hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(), + // 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8 + hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(), + ), + ( + // 5ERawXCzCWkjVq3xz1W5KGNtVx2VdefvZ62Bw1FEuZW4Vny2 + hex!["68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78"].into(), + // 5Gc4vr42hH1uDZc93Nayk5G7i687bAQdHHc9unLuyeawHipF + hex!["c8dc79e36b29395413399edaec3e20fcca7205fb19776ed8ddb25d6f427ec40e"].into(), + // 5EockCXN6YkiNCDjpqqnbcqd4ad35nU4RmA1ikM4YeRN4WcE + hex!["7932cff431e748892fa48e10c63c17d30f80ca42e4de3921e641249cd7fa3c2f"].unchecked_into(), + // 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ + hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(), + // 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ + hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(), + // 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ + hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(), + ), + ( + // 5DyVtKWPidondEu8iHZgi6Ffv9yrJJ1NDNLom3X9cTDi98qp + hex!["547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65"].into(), + // 5FeD54vGVNpFX3PndHPXJ2MDakc462vBCD5mgtWRnWYCpZU9 + hex!["9e42241d7cd91d001773b0b616d523dd80e13c6c2cab860b1234ef1b9ffc1526"].into(), + // 5E1jLYfLdUQKrFrtqoKgFrRvxM3oQPMbf6DfcsrugZZ5Bn8d + hex!["5633b70b80a6c8bb16270f82cca6d56b27ed7b76c8fd5af2986a25a4788ce440"].unchecked_into(), + // 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH + hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(), + // 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH + hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(), + // 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH + hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(), + ), + ( + // 5HYZnKWe5FVZQ33ZRJK1rG3WaLMztxWrrNDb1JRwaHHVWyP9 + hex!["f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663"].into(), + // 5EPQdAQ39WQNLCRjWsCk5jErsCitHiY5ZmjfWzzbXDoAoYbn + hex!["66bc1e5d275da50b72b15de072a2468a5ad414919ca9054d2695767cf650012f"].into(), + // 5DMa31Hd5u1dwoRKgC4uvqyrdK45RHv3CpwvpUC1EzuwDit4 + hex!["3919132b851ef0fd2dae42a7e734fe547af5a6b809006100f48944d7fae8e8ef"].unchecked_into(), + // 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x + hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(), + // 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x + hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(), + // 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x + hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(), + ), + ]; // generated with secret: subkey inspect "$secret"/fir let root_key: AccountId = hex![ // 5Ff3iXP75ruzroPWRP2FYBHWnmGGBSb63857BgnzCoXNxfPo "9ee5e5bdc0ec239eb164f865ecc345ce4c88e76ee002e0f7e318097347471809" - ].into(); + ] + .into(); let endowed_accounts: Vec = vec![root_key.clone()]; - testnet_genesis( - initial_authorities, - root_key, - Some(endowed_accounts), - false, - ) + testnet_genesis(initial_authorities, root_key, Some(endowed_accounts), false) } /// Staging testnet config. @@ -171,14 +184,17 @@ pub fn get_from_seed(seed: &str) -> ::Pu } /// Helper function to generate an account ID from seed -pub fn get_account_id_from_seed(seed: &str) -> AccountId where - AccountPublic: From<::Public> +pub fn get_account_id_from_seed(seed: &str) -> AccountId +where + AccountPublic: From<::Public>, { AccountPublic::from(get_from_seed::(seed)).into_account() } /// Helper function to generate stash, controller and session key from seed -pub fn get_authority_keys_from_seed(seed: &str) -> ( +pub fn get_authority_keys_from_seed( + seed: &str, +) -> ( AccountId, AccountId, GrandpaId, @@ -198,7 +214,14 @@ pub fn get_authority_keys_from_seed(seed: &str) -> ( /// Helper function to create GenesisConfig for testing pub fn testnet_genesis( - initial_authorities: Vec<(AccountId, AccountId, GrandpaId, BabeId, ImOnlineId, AuthorityDiscoveryId)>, + initial_authorities: Vec<( + AccountId, + AccountId, + GrandpaId, + BabeId, + ImOnlineId, + AuthorityDiscoveryId, + )>, root_key: AccountId, endowed_accounts: Option>, enable_println: bool, @@ -230,42 +253,51 @@ pub fn testnet_genesis( changes_trie_config: Default::default(), }), pallet_balances: Some(BalancesConfig { - balances: endowed_accounts.iter().cloned() + balances: endowed_accounts + .iter() + .cloned() .map(|k| (k, ENDOWMENT)) .chain(initial_authorities.iter().map(|x| (x.0.clone(), STASH))) .collect(), vesting: vec![], }), pallet_indices: Some(IndicesConfig { - ids: endowed_accounts.iter().cloned() + ids: endowed_accounts + .iter() + .cloned() .chain(initial_authorities.iter().map(|x| x.0.clone())) .collect::>(), }), 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())) - }).collect::>(), + keys: initial_authorities + .iter() + .map(|x| { + ( + x.0.clone(), + session_keys(x.2.clone(), x.3.clone(), x.4.clone(), x.5.clone()), + ) + }) + .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| { - (x.0.clone(), x.1.clone(), STASH, StakerStatus::Validator) - }).collect(), + stakers: initial_authorities + .iter() + .map(|x| (x.0.clone(), x.1.clone(), STASH, StakerStatus::Validator)) + .collect(), invulnerables: initial_authorities.iter().map(|x| x.0.clone()).collect(), slash_reward_fraction: Perbill::from_percent(10), - .. Default::default() + ..Default::default() }), pallet_democracy: Some(DemocracyConfig::default()), pallet_collective_Instance1: Some(CouncilConfig { - members: endowed_accounts.iter().cloned() - .collect::>()[..(num_endowed_accounts + 1) / 2].to_vec(), + members: endowed_accounts.iter().cloned().collect::>()[..(num_endowed_accounts + 1) / 2].to_vec(), phantom: Default::default(), }), pallet_collective_Instance2: Some(TechnicalCommitteeConfig { - members: endowed_accounts.iter().cloned() - .collect::>()[..(num_endowed_accounts + 1) / 2].to_vec(), + members: endowed_accounts.iter().cloned().collect::>()[..(num_endowed_accounts + 1) / 2].to_vec(), phantom: Default::default(), }), pallet_contracts: Some(ContractsConfig { @@ -275,21 +307,11 @@ pub fn testnet_genesis( }, gas_price: 1 * MILLICENTS, }), - pallet_sudo: Some(SudoConfig { - key: root_key, - }), - pallet_babe: Some(BabeConfig { - authorities: vec![], - }), - pallet_im_online: Some(ImOnlineConfig { - keys: vec![], - }), - pallet_authority_discovery: Some(AuthorityDiscoveryConfig { - keys: vec![], - }), - pallet_grandpa: Some(GrandpaConfig { - authorities: vec![], - }), + pallet_sudo: Some(SudoConfig { key: root_key }), + pallet_babe: Some(BabeConfig { authorities: vec![] }), + pallet_im_online: Some(ImOnlineConfig { keys: vec![] }), + pallet_authority_discovery: Some(AuthorityDiscoveryConfig { keys: vec![] }), + pallet_grandpa: Some(GrandpaConfig { authorities: vec![] }), pallet_membership_Instance1: Some(Default::default()), pallet_treasury: Some(Default::default()), } @@ -297,9 +319,7 @@ pub fn testnet_genesis( fn development_config_genesis() -> GenesisConfig { testnet_genesis( - vec![ - get_authority_keys_from_seed("Alice"), - ], + vec![get_authority_keys_from_seed("Alice")], get_account_id_from_seed::("Alice"), None, true, @@ -354,9 +374,7 @@ pub(crate) mod tests { fn local_testnet_genesis_instant_single() -> GenesisConfig { testnet_genesis( - vec![ - get_authority_keys_from_seed("Alice"), - ], + vec![get_authority_keys_from_seed("Alice")], get_account_id_from_seed::("Alice"), None, false, diff --git a/bin/node/runtime/build.rs b/bin/node/runtime/build.rs index 02acf0d0d..fb90e537a 100644 --- a/bin/node/runtime/build.rs +++ b/bin/node/runtime/build.rs @@ -19,11 +19,8 @@ use wasm_builder_runner::{build_current_project_with_rustflags, WasmBuilderSourc fn main() { build_current_project_with_rustflags( "wasm_binary.rs", - // TODO: update rev - WasmBuilderSource::Git { - repo: "https://github.com/paritytech/substrate.git", - rev: "c2fccb36ffacd118fc3502aa93453580a07dc402", - }, + // TODO: update version + WasmBuilderSource::Crates("1.0.8"), // This instructs LLD to export __heap_base as a global variable, which is used by the // external memory allocator. "-Clink-arg=--export=__heap_base", diff --git a/frame/balances/kton/src/lib.rs b/frame/balances/kton/src/lib.rs index f5775d66a..3ee593957 100644 --- a/frame/balances/kton/src/lib.rs +++ b/frame/balances/kton/src/lib.rs @@ -16,14 +16,16 @@ use frame_support::{ Parameter, StorageValue, }; use frame_system::{self as system, ensure_root, ensure_signed, IsDeadAccount}; +#[cfg(feature = "std")] +use sp_runtime::traits::One; use sp_runtime::{ traits::{ - Bounded, CheckedAdd, CheckedSub, MaybeSerializeDeserialize, Member, One, Saturating, SimpleArithmetic, - StaticLookup, Zero, + Bounded, CheckedAdd, CheckedSub, MaybeSerializeDeserialize, Member, Saturating, SimpleArithmetic, StaticLookup, + Zero, }, DispatchError, DispatchResult, RuntimeDebug, }; -use sp_std::{cmp, fmt::Debug, mem, vec::Vec}; +use sp_std::{borrow::ToOwned, cmp, fmt::Debug, mem, vec::Vec}; use self::imbalances::{NegativeImbalance, PositiveImbalance}; use darwinia_support::{ diff --git a/frame/balances/ring/src/lib.rs b/frame/balances/ring/src/lib.rs index ae5fa60a9..39476fc5e 100644 --- a/frame/balances/ring/src/lib.rs +++ b/frame/balances/ring/src/lib.rs @@ -175,14 +175,16 @@ use frame_support::{ Parameter, StorageValue, }; use frame_system::{self as system, ensure_root, ensure_signed, IsDeadAccount, OnNewAccount}; +#[cfg(feature = "std")] +use sp_runtime::traits::One; use sp_runtime::{ traits::{ - Bounded, CheckedAdd, CheckedSub, MaybeSerializeDeserialize, Member, One, Saturating, SimpleArithmetic, - StaticLookup, Zero, + Bounded, CheckedAdd, CheckedSub, MaybeSerializeDeserialize, Member, Saturating, SimpleArithmetic, StaticLookup, + Zero, }, DispatchError, DispatchResult, RuntimeDebug, }; -use sp_std::{cmp, fmt::Debug, mem, prelude::*, result}; +use sp_std::{borrow::ToOwned, cmp, fmt::Debug, mem, prelude::*, result, vec::Vec}; use self::imbalances::{NegativeImbalance, PositiveImbalance}; use darwinia_support::{ diff --git a/frame/staking/Cargo.toml b/frame/staking/Cargo.toml index af0de7376..47936576f 100644 --- a/frame/staking/Cargo.toml +++ b/frame/staking/Cargo.toml @@ -19,12 +19,12 @@ pallet-timestamp = { version = "2.0.0", default-features = false, git = "https:/ sp-core = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-io ={ default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-keyring = { version = "2.0.0", optional = true, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -sp-phragmen = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-runtime = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-staking = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } # darwinia +sp-phragmen = { package = "darwinia-phragmen", default-features = false, path = "../../primitives/phragmen" } darwinia-support = { path = "../support", default-features = false } [dev-dependencies] diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 396f558de..1ce3ddc08 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -251,6 +251,8 @@ mod migration; mod slashing; mod types { + use sp_std::vec::Vec; + use crate::{system, Currency, NominatorReward, StakingBalance, StakingLedger, Time, Trait}; /// Counter for the number of eras that have passed. @@ -319,7 +321,7 @@ use sp_staking::{ offence::{Offence, OffenceDetails, OnOffenceHandler, ReportOffence}, SessionIndex, }; -use sp_std::{marker::PhantomData, vec::Vec}; +use sp_std::{borrow::ToOwned, marker::PhantomData, vec, vec::Vec}; use darwinia_support::{ LockIdentifier, LockableCurrency, NormalLock, StakingLock, WithdrawLock, WithdrawReason, WithdrawReasons, @@ -473,7 +475,6 @@ where RingBalance: SimpleArithmetic + Saturating + Copy, KtonBalance: SimpleArithmetic + Saturating + Copy, { - // FIXME // /// Slash the validator for a given amount of balance. This can grow the value // /// of the slash in the case that the validator has less than `minimum_balance` // /// active funds. Returns the amount of funds actually slashed. @@ -1815,7 +1816,7 @@ impl Module { /// /// Assumes storage is coherent with the declaration. fn select_validators() -> (Power, Option>) { - let mut all_nominators: Vec<(T::AccountId, Vec)> = Vec::new(); + let mut all_nominators: Vec<(T::AccountId, Vec)> = vec![]; let all_validator_candidates_iter = >::enumerate(); let all_validators = all_validator_candidates_iter .map(|(who, _pref)| { @@ -2091,68 +2092,63 @@ where Self::ensure_storage_upgraded(); let reward_proportion = SlashRewardFraction::get(); - let era_now = Self::current_era(); - // let window_start = era_now.saturating_sub(T::BondingDurationInEra::get()); + let window_start = era_now.saturating_sub(T::BondingDurationInEra::get()); let current_era_start_session = CurrentEraStartSessionIndex::get(); + // fast path for current-era report - most likely. + let slash_era = if slash_session >= current_era_start_session { + era_now + } else { + // reverse because it's more likely to find reports from recent eras. + match BondedEras::get() + .iter() + .rev() + .filter(|&&(_, ref sesh)| sesh <= &slash_session) + .next() + { + None => return, // before bonding period. defensive - should be filtered out. + Some(&(ref slash_era, _)) => *slash_era, + } + }; + + ::EarliestUnappliedSlash::mutate(|earliest| { + if earliest.is_none() { + *earliest = Some(era_now) + } + }); + + let slash_defer_duration = T::SlashDeferDuration::get(); + + for (details, slash_fraction) in offenders.iter().zip(slash_fraction) { + let stash = &details.offender.0; + let exposure = &details.offender.1; + + // Skip if the validator is invulnerable. + if Self::invulnerables().contains(stash) { + continue; + } - // // fast path for current-era report - most likely. - // let slash_era = if slash_session >= current_era_start_session { - // era_now - // } else { - // let eras = BondedEras::get(); - // - // // reverse because it's more likely to find reports from recent eras. - // match eras - // .iter() - // .rev() - // .filter(|&&(_, ref sesh)| sesh <= &slash_session) - // .next() - // { - // None => return, // before bonding period. defensive - should be filtered out. - // Some(&(ref slash_era, _)) => *slash_era, - // } - // }; - // - // ::EarliestUnappliedSlash::mutate(|earliest| { - // if earliest.is_none() { - // *earliest = Some(era_now) - // } - // }); - // - // let slash_defer_duration = T::SlashDeferDuration::get(); - // - // for (details, slash_fraction) in offenders.iter().zip(slash_fraction) { - // let stash = &details.offender.0; - // let exposure = &details.offender.1; - // - // // Skip if the validator is invulnerable. - // if Self::invulnerables().contains(stash) { - // continue; - // } - // - // let unapplied = slashing::compute_slash::(slashing::SlashParams { - // stash, - // slash: *slash_fraction, - // exposure, - // slash_era, - // window_start, - // now: era_now, - // reward_proportion, - // }); - // - // if let Some(mut unapplied) = unapplied { - // unapplied.reporters = details.reporters.clone(); - // if slash_defer_duration == 0 { - // // apply right away. - // slashing::apply_slash::(unapplied); - // } else { - // // defer to end of some `slash_defer_duration` from now. - // ::UnappliedSlashes::mutate(era_now, move |for_later| for_later.push(unapplied)); - // } - // } - // } - unimplemented!() + let unapplied = slashing::compute_slash::(slashing::SlashParams { + stash, + slash: *slash_fraction, + exposure, + slash_era, + window_start, + now: era_now, + reward_proportion, + }); + + if let Some(mut unapplied) = unapplied { + unapplied.reporters = details.reporters.clone(); + if slash_defer_duration == 0 { + // apply right away. + slashing::apply_slash::(unapplied); + } else { + // defer to end of some `slash_defer_duration` from now. + ::UnappliedSlashes::mutate(era_now, move |for_later| for_later.push(unapplied)); + } + } + } } } diff --git a/frame/staking/src/migration.rs b/frame/staking/src/migration.rs index 0ee52dc33..819dfba6b 100644 --- a/frame/staking/src/migration.rs +++ b/frame/staking/src/migration.rs @@ -24,10 +24,10 @@ pub const CURRENT_VERSION: VersionNumber = 1; #[cfg(any(test, feature = "migrate"))] mod inner { - use crate::{Store, Module, Trait}; + use super::{VersionNumber, CURRENT_VERSION}; + use crate::{Module, Store, Trait}; use frame_support::{StorageLinkedMap, StorageValue}; use sp_std::vec::Vec; - use super::{CURRENT_VERSION, VersionNumber}; // the minimum supported version of the migration logic. const MIN_SUPPORTED_VERSION: VersionNumber = 0; @@ -37,7 +37,9 @@ mod inner { // this upgrades the `Nominators` linked_map value type from `Vec` to // `Option>` pub fn to_v1(version: &mut VersionNumber) { - if *version != 0 { return } + if *version != 0 { + return; + } *version += 1; let now = >::current_era(); @@ -63,13 +65,17 @@ mod inner { pub(super) fn perform_migrations() { as Store>::StorageVersion::mutate(|version| { if *version < MIN_SUPPORTED_VERSION { - frame_support::print("Cannot migrate staking storage because version is less than\ - minimum."); + frame_support::print( + "Cannot migrate staking storage because version is less than\ + minimum.", + ); frame_support::print(*version); - return + return; } - if *version == CURRENT_VERSION { return } + if *version == CURRENT_VERSION { + return; + } to_v1::(version); }); @@ -78,7 +84,7 @@ mod inner { #[cfg(not(any(test, feature = "migrate")))] mod inner { - pub(super) fn perform_migrations() { } + pub(super) fn perform_migrations() {} } /// Perform all necessary storage migrations to get storage into the expected stsate for current diff --git a/frame/staking/src/slashing.rs b/frame/staking/src/slashing.rs index 42a76b942..d5516377e 100644 --- a/frame/staking/src/slashing.rs +++ b/frame/staking/src/slashing.rs @@ -54,13 +54,13 @@ use frame_support::{ StorageDoubleMap, StorageMap, }; use sp_runtime::traits::{Saturating, Zero}; -use sp_std::vec::Vec; +use sp_std::{vec, vec::Vec}; use crate::{EraIndex, Exposure, Module, Perbill, Power, SessionInterface, Store, Trait, UnappliedSlash}; -///// The proportion of the slashing reward to be paid out on the first slashing detection. -///// This is f_1 in the paper. -//const REWARD_F1: Perbill = Perbill::from_percent(50); +/// The proportion of the slashing reward to be paid out on the first slashing detection. +/// This is f_1 in the paper. +const REWARD_F1: Perbill = Perbill::from_percent(50); /// The index of a slashing span - unique to each stash. pub(crate) type SpanIndex = u32; @@ -94,31 +94,31 @@ pub struct SlashingSpans { } impl SlashingSpans { - // // creates a new record of slashing spans for a stash, starting at the beginning - // // of the bonding period, relative to now. - // fn new(window_start: EraIndex) -> Self { - // SlashingSpans { - // span_index: 0, - // last_start: window_start, - // prior: Vec::new(), - // } - // } - // - // // update the slashing spans to reflect the start of a new span at the era after `now` - // // returns `true` if a new span was started, `false` otherwise. `false` indicates - // // that internal state is unchanged. - // fn end_span(&mut self, now: EraIndex) -> bool { - // let next_start = now + 1; - // if next_start <= self.last_start { - // return false; - // } - // - // let last_length = next_start - self.last_start; - // self.prior.insert(0, last_length); - // self.last_start = next_start; - // self.span_index += 1; - // true - // } + // creates a new record of slashing spans for a stash, starting at the beginning + // of the bonding period, relative to now. + fn new(window_start: EraIndex) -> Self { + SlashingSpans { + span_index: 0, + last_start: window_start, + prior: vec![], + } + } + + // update the slashing spans to reflect the start of a new span at the era after `now` + // returns `true` if a new span was started, `false` otherwise. `false` indicates + // that internal state is unchanged. + fn end_span(&mut self, now: EraIndex) -> bool { + let next_start = now + 1; + if next_start <= self.last_start { + return false; + } + + let last_length = next_start - self.last_start; + self.prior.insert(0, last_length); + self.last_start = next_start; + self.span_index += 1; + true + } // an iterator over all slashing spans in _reverse_ order - most recent first. pub(crate) fn iter(&'_ self) -> impl Iterator + '_ { @@ -190,313 +190,312 @@ impl SpanRecord { } } -///// Parameters for performing a slash. -//#[derive(Clone)] -//pub(crate) struct SlashParams<'a, T: 'a + Trait> { -// /// The stash account being slashed. -// pub(crate) stash: &'a T::AccountId, -// /// The proportion of the slash. -// pub(crate) slash: Perbill, -// /// The exposure of the stash and all nominators. -// pub(crate) exposure: &'a Exposure>, -// /// The era where the offence occurred. -// pub(crate) slash_era: EraIndex, -// /// The first era in the current bonding period. -// pub(crate) window_start: EraIndex, -// /// The current era. -// pub(crate) now: EraIndex, -// /// The maximum percentage of a slash that ever gets paid out. -// /// This is f_inf in the paper. -// pub(crate) reward_proportion: Perbill, -//} -// -///// Computes a slash of a validator and nominators. It returns an unapplied -///// record to be applied at some later point. Slashing metadata is updated in storage, -///// since unapplied records are only rarely intended to be dropped. -///// -///// The pending slash record returned does not have initialized reporters. Those have -///// to be set at a higher level, if any. -//pub(crate) fn compute_slash(params: SlashParams) -> Option>> { -// let SlashParams { -// stash, -// slash, -// exposure, -// slash_era, -// window_start, -// now, -// reward_proportion, -// } = params.clone(); -// -// let mut reward_payout = Zero::zero(); -// let mut val_slashed = Zero::zero(); -// -// // is the slash amount here a maximum for the era? -// let own_slash = slash * exposure.own; -// if slash * exposure.total == Zero::zero() { -// // kick out the validator even if they won't be slashed, -// // as long as the misbehavior is from their most recent slashing span. -// kick_out_if_recent::(params); -// return None; -// } -// -// let (prior_slash_p, _era_slash) = -// as Store>::ValidatorSlashInEra::get(&slash_era, stash).unwrap_or((Perbill::zero(), Zero::zero())); -// -// // compare slash proportions rather than slash values to avoid issues due to rounding -// // error. -// if slash.deconstruct() > prior_slash_p.deconstruct() { -// as Store>::ValidatorSlashInEra::insert(&slash_era, stash, &(slash, own_slash)); -// } else { -// // we slash based on the max in era - this new event is not the max, -// // so neither the validator or any nominators will need an update. -// // -// // this does lead to a divergence of our system from the paper, which -// // pays out some reward even if the latest report is not max-in-era. -// // we opt to avoid the nominator lookups and edits and leave more rewards -// // for more drastic misbehavior. -// return None; -// } -// -// // apply slash to validator. -// { -// let mut spans = fetch_spans::( -// stash, -// window_start, -// &mut reward_payout, -// &mut val_slashed, -// reward_proportion, -// ); -// -// let target_span = spans.compare_and_update_span_slash(slash_era, own_slash); -// -// if target_span == Some(spans.span_index()) { -// // misbehavior occurred within the current slashing span - take appropriate -// // actions. -// -// // chill the validator - it misbehaved in the current span and should -// // not continue in the next election. also end the slashing span. -// spans.end_span(now); -// >::chill_stash(stash); -// -// // make sure to disable validator till the end of this session -// if T::SessionInterface::disable_validator(stash).unwrap_or(false) { -// // force a new era, to select a new validator set -// >::ensure_new_era() -// } -// } -// } -// -// let mut nominators_slashed = Vec::new(); -// reward_payout += slash_nominators::(params, prior_slash_p, &mut nominators_slashed); -// -// Some(UnappliedSlash { -// validator: stash.clone(), -// own: val_slashed, -// others: nominators_slashed, -// reporters: Vec::new(), -// payout: reward_payout, -// }) -//} -// -//// doesn't apply any slash, but kicks out the validator if the misbehavior is from -//// the most recent slashing span. -//fn kick_out_if_recent(params: SlashParams) { -// // these are not updated by era-span or end-span. -// let mut reward_payout = Zero::zero(); -// let mut val_slashed = Zero::zero(); -// let mut spans = fetch_spans::( -// params.stash, -// params.window_start, -// &mut reward_payout, -// &mut val_slashed, -// params.reward_proportion, -// ); -// -// if spans.era_span(params.slash_era).map(|s| s.index) == Some(spans.span_index()) { -// spans.end_span(params.now); -// >::chill_stash(params.stash); -// -// // make sure to disable validator till the end of this session -// if T::SessionInterface::disable_validator(params.stash).unwrap_or(false) { -// // force a new era, to select a new validator set -// >::ensure_new_era() -// } -// } -//} -// -///// Slash nominators. Accepts general parameters and the prior slash percentage of the validator. -///// -///// Returns the amount of reward to pay out. -//fn slash_nominators( -// params: SlashParams, -// prior_slash_p: Perbill, -// nominators_slashed: &mut Vec<(T::AccountId, BalanceOf)>, -//) -> BalanceOf { -// let SlashParams { -// stash: _, -// slash, -// exposure, -// slash_era, -// window_start, -// now, -// reward_proportion, -// } = params; -// -// let mut reward_payout = Zero::zero(); -// -// nominators_slashed.reserve(exposure.others.len()); -// for nominator in &exposure.others { -// let stash = &nominator.who; -// let mut nom_slashed = Zero::zero(); -// -// // the era slash of a nominator always grows, if the validator -// // had a new max slash for the era. -// let era_slash = { -// let own_slash_prior = prior_slash_p * nominator.value; -// let own_slash_by_validator = slash * nominator.value; -// let own_slash_difference = own_slash_by_validator.saturating_sub(own_slash_prior); -// -// let mut era_slash = -// as Store>::NominatorSlashInEra::get(&slash_era, stash).unwrap_or(Zero::zero()); -// -// era_slash += own_slash_difference; -// -// as Store>::NominatorSlashInEra::insert(&slash_era, stash, &era_slash); -// -// era_slash -// }; -// -// // compare the era slash against other eras in the same span. -// { -// let mut spans = fetch_spans::( -// stash, -// window_start, -// &mut reward_payout, -// &mut nom_slashed, -// reward_proportion, -// ); -// -// let target_span = spans.compare_and_update_span_slash(slash_era, era_slash); -// -// if target_span == Some(spans.span_index()) { -// // Chill the nominator outright, ending the slashing span. -// spans.end_span(now); -// >::chill_stash(stash); -// } -// } -// -// nominators_slashed.push((stash.clone(), nom_slashed)); -// } -// -// reward_payout -//} -// -//// helper struct for managing a set of spans we are currently inspecting. -//// writes alterations to disk on drop, but only if a slash has been carried out. -//// -//// NOTE: alterations to slashing metadata should not be done after this is dropped. -//// dropping this struct applies any necessary slashes, which can lead to free balance -//// being 0, and the account being garbage-collected -- a dead account should get no new -//// metadata. -//struct InspectingSpans<'a, T: Trait + 'a> { -// dirty: bool, -// window_start: EraIndex, -// stash: &'a T::AccountId, -// spans: SlashingSpans, -// paid_out: &'a mut BalanceOf, -// slash_of: &'a mut BalanceOf, -// reward_proportion: Perbill, -// _marker: sp_std::marker::PhantomData, -//} -// -//// fetches the slashing spans record for a stash account, initializing it if necessary. -//fn fetch_spans<'a, T: Trait + 'a>( -// stash: &'a T::AccountId, -// window_start: EraIndex, -// paid_out: &'a mut BalanceOf, -// slash_of: &'a mut BalanceOf, -// reward_proportion: Perbill, -//) -> InspectingSpans<'a, T> { -// let spans = as Store>::SlashingSpans::get(stash).unwrap_or_else(|| { -// let spans = SlashingSpans::new(window_start); -// as Store>::SlashingSpans::insert(stash, &spans); -// spans -// }); -// -// InspectingSpans { -// dirty: false, -// window_start, -// stash, -// spans, -// slash_of, -// paid_out, -// reward_proportion, -// _marker: sp_std::marker::PhantomData, -// } -//} -// -//impl<'a, T: 'a + Trait> InspectingSpans<'a, T> { -// fn span_index(&self) -> SpanIndex { -// self.spans.span_index -// } -// -// fn end_span(&mut self, now: EraIndex) { -// self.dirty = self.spans.end_span(now) || self.dirty; -// } -// -// fn add_slash(&mut self, amount: BalanceOf) { -// *self.slash_of += amount; -// } -// -// // find the span index of the given era, if covered. -// fn era_span(&self, era: EraIndex) -> Option { -// self.spans.iter().find(|span| span.contains_era(era)) -// } -// -// // compares the slash in an era to the overall current span slash. -// // if it's higher, applies the difference of the slashes and then updates the span on disk. -// // -// // returns the span index of the era where the slash occurred, if any. -// fn compare_and_update_span_slash(&mut self, slash_era: EraIndex, slash: BalanceOf) -> Option { -// let target_span = self.era_span(slash_era)?; -// let span_slash_key = (self.stash.clone(), target_span.index); -// let mut span_record = as Store>::SpanSlash::get(&span_slash_key); -// let mut changed = false; -// -// let reward = if span_record.slashed < slash { -// // new maximum span slash. apply the difference. -// let difference = slash - span_record.slashed; -// span_record.slashed = slash; -// -// // compute reward. -// let reward = REWARD_F1 * (self.reward_proportion * slash).saturating_sub(span_record.paid_out); -// -// self.add_slash(difference); -// changed = true; -// -// reward -// } else if span_record.slashed == slash { -// // compute reward. no slash difference to apply. -// REWARD_F1 * (self.reward_proportion * slash).saturating_sub(span_record.paid_out) -// } else { -// Zero::zero() -// }; -// -// if !reward.is_zero() { -// changed = true; -// span_record.paid_out += reward; -// *self.paid_out += reward; -// } -// -// if changed { -// self.dirty = true; -// as Store>::SpanSlash::insert(&span_slash_key, &span_record); -// } -// -// Some(target_span.index) -// } -//} -// +/// Parameters for performing a slash. +#[derive(Clone)] +pub(crate) struct SlashParams<'a, T: 'a + Trait> { + /// The stash account being slashed. + pub(crate) stash: &'a T::AccountId, + /// The proportion of the slash. + pub(crate) slash: Perbill, + /// The exposure of the stash and all nominators. + pub(crate) exposure: &'a Exposure, + /// The era where the offence occurred. + pub(crate) slash_era: EraIndex, + /// The first era in the current bonding period. + pub(crate) window_start: EraIndex, + /// The current era. + pub(crate) now: EraIndex, + /// The maximum percentage of a slash that ever gets paid out. + /// This is f_inf in the paper. + pub(crate) reward_proportion: Perbill, +} + +/// Computes a slash of a validator and nominators. It returns an unapplied +/// record to be applied at some later point. Slashing metadata is updated in storage, +/// since unapplied records are only rarely intended to be dropped. +/// +/// The pending slash record returned does not have initialized reporters. Those have +/// to be set at a higher level, if any. +pub(crate) fn compute_slash(params: SlashParams) -> Option> { + let SlashParams { + stash, + slash, + exposure, + slash_era, + window_start, + now, + reward_proportion, + } = params.clone(); + + let mut reward_payout = 0; + let mut val_slashed = 0; + + // is the slash amount here a maximum for the era? + let own_slash = slash * exposure.own; + if slash * exposure.total == 0 { + // kick out the validator even if they won't be slashed, + // as long as the misbehavior is from their most recent slashing span. + kick_out_if_recent::(params); + return None; + } + + let (prior_slash_p, _era_slash) = + as Store>::ValidatorSlashInEra::get(&slash_era, stash).unwrap_or((Perbill::zero(), 0)); + + // compare slash proportions rather than slash values to avoid issues due to rounding + // error. + if slash.deconstruct() > prior_slash_p.deconstruct() { + as Store>::ValidatorSlashInEra::insert(&slash_era, stash, &(slash, own_slash)); + } else { + // we slash based on the max in era - this new event is not the max, + // so neither the validator or any nominators will need an update. + // + // this does lead to a divergence of our system from the paper, which + // pays out some reward even if the latest report is not max-in-era. + // we opt to avoid the nominator lookups and edits and leave more rewards + // for more drastic misbehavior. + return None; + } + + // apply slash to validator. + { + let mut spans = fetch_spans::( + stash, + window_start, + &mut reward_payout, + &mut val_slashed, + reward_proportion, + ); + + let target_span = spans.compare_and_update_span_slash(slash_era, own_slash); + + if target_span == Some(spans.span_index()) { + // misbehavior occurred within the current slashing span - take appropriate + // actions. + + // chill the validator - it misbehaved in the current span and should + // not continue in the next election. also end the slashing span. + spans.end_span(now); + >::chill_stash(stash); + + // make sure to disable validator till the end of this session + if T::SessionInterface::disable_validator(stash).unwrap_or(false) { + // force a new era, to select a new validator set + >::ensure_new_era() + } + } + } + + let mut nominators_slashed = vec![]; + reward_payout += slash_nominators::(params, prior_slash_p, &mut nominators_slashed); + + Some(UnappliedSlash { + validator: stash.clone(), + own: val_slashed, + others: nominators_slashed, + reporters: vec![], + payout: reward_payout, + }) +} + +// doesn't apply any slash, but kicks out the validator if the misbehavior is from +// the most recent slashing span. +fn kick_out_if_recent(params: SlashParams) { + // these are not updated by era-span or end-span. + let mut reward_payout = 0; + let mut val_slashed = 0; + let mut spans = fetch_spans::( + params.stash, + params.window_start, + &mut reward_payout, + &mut val_slashed, + params.reward_proportion, + ); + + if spans.era_span(params.slash_era).map(|s| s.index) == Some(spans.span_index()) { + spans.end_span(params.now); + >::chill_stash(params.stash); + + // make sure to disable validator till the end of this session + if T::SessionInterface::disable_validator(params.stash).unwrap_or(false) { + // force a new era, to select a new validator set + >::ensure_new_era() + } + } +} + +/// Slash nominators. Accepts general parameters and the prior slash percentage of the validator. +/// +/// Returns the amount of reward to pay out. +fn slash_nominators( + params: SlashParams, + prior_slash_p: Perbill, + nominators_slashed: &mut Vec<(T::AccountId, Power)>, +) -> Power { + let SlashParams { + stash: _, + slash, + exposure, + slash_era, + window_start, + now, + reward_proportion, + } = params; + + let mut reward_payout = 0; + + nominators_slashed.reserve(exposure.others.len()); + for nominator in &exposure.others { + let stash = &nominator.who; + let mut nom_slashed = 0; + + // the era slash of a nominator always grows, if the validator + // had a new max slash for the era. + let era_slash = { + let own_slash_prior = prior_slash_p * nominator.value; + let own_slash_by_validator = slash * nominator.value; + let own_slash_difference = own_slash_by_validator.saturating_sub(own_slash_prior); + + let mut era_slash = as Store>::NominatorSlashInEra::get(&slash_era, stash).unwrap_or(0); + + era_slash += own_slash_difference; + + as Store>::NominatorSlashInEra::insert(&slash_era, stash, &era_slash); + + era_slash + }; + + // compare the era slash against other eras in the same span. + { + let mut spans = fetch_spans::( + stash, + window_start, + &mut reward_payout, + &mut nom_slashed, + reward_proportion, + ); + + let target_span = spans.compare_and_update_span_slash(slash_era, era_slash); + + if target_span == Some(spans.span_index()) { + // Chill the nominator outright, ending the slashing span. + spans.end_span(now); + >::chill_stash(stash); + } + } + + nominators_slashed.push((stash.clone(), nom_slashed)); + } + + reward_payout +} + +// helper struct for managing a set of spans we are currently inspecting. +// writes alterations to disk on drop, but only if a slash has been carried out. +// +// NOTE: alterations to slashing metadata should not be done after this is dropped. +// dropping this struct applies any necessary slashes, which can lead to free balance +// being 0, and the account being garbage-collected -- a dead account should get no new +// metadata. +struct InspectingSpans<'a, T: Trait + 'a> { + dirty: bool, + window_start: EraIndex, + stash: &'a T::AccountId, + spans: SlashingSpans, + paid_out: &'a mut Power, + slash_of: &'a mut Power, + reward_proportion: Perbill, + _marker: sp_std::marker::PhantomData, +} + +// fetches the slashing spans record for a stash account, initializing it if necessary. +fn fetch_spans<'a, T: Trait + 'a>( + stash: &'a T::AccountId, + window_start: EraIndex, + paid_out: &'a mut Power, + slash_of: &'a mut Power, + reward_proportion: Perbill, +) -> InspectingSpans<'a, T> { + let spans = as Store>::SlashingSpans::get(stash).unwrap_or_else(|| { + let spans = SlashingSpans::new(window_start); + as Store>::SlashingSpans::insert(stash, &spans); + spans + }); + + InspectingSpans { + dirty: false, + window_start, + stash, + spans, + slash_of, + paid_out, + reward_proportion, + _marker: sp_std::marker::PhantomData, + } +} + +impl<'a, T: 'a + Trait> InspectingSpans<'a, T> { + fn span_index(&self) -> SpanIndex { + self.spans.span_index + } + + fn end_span(&mut self, now: EraIndex) { + self.dirty = self.spans.end_span(now) || self.dirty; + } + + fn add_slash(&mut self, amount: Power) { + *self.slash_of += amount; + } + + // find the span index of the given era, if covered. + fn era_span(&self, era: EraIndex) -> Option { + self.spans.iter().find(|span| span.contains_era(era)) + } + + // compares the slash in an era to the overall current span slash. + // if it's higher, applies the difference of the slashes and then updates the span on disk. + // + // returns the span index of the era where the slash occurred, if any. + fn compare_and_update_span_slash(&mut self, slash_era: EraIndex, slash: Power) -> Option { + let target_span = self.era_span(slash_era)?; + let span_slash_key = (self.stash.clone(), target_span.index); + let mut span_record = as Store>::SpanSlash::get(&span_slash_key); + let mut changed = false; + + let reward = if span_record.slashed < slash { + // new maximum span slash. apply the difference. + let difference = slash - span_record.slashed; + span_record.slashed = slash; + + // compute reward. + let reward = REWARD_F1 * (self.reward_proportion * slash).saturating_sub(span_record.paid_out); + + self.add_slash(difference); + changed = true; + + reward + } else if span_record.slashed == slash { + // compute reward. no slash difference to apply. + REWARD_F1 * (self.reward_proportion * slash).saturating_sub(span_record.paid_out) + } else { + 0 + }; + + if !reward.is_zero() { + changed = true; + span_record.paid_out += reward; + *self.paid_out += reward; + } + + if changed { + self.dirty = true; + as Store>::SpanSlash::insert(&span_slash_key, &span_record); + } + + Some(target_span.index) + } +} + //impl<'a, T: 'a + Trait> Drop for InspectingSpans<'a, T> { // fn drop(&mut self) { // // only update on disk if we slashed this account. @@ -537,54 +536,49 @@ pub(crate) fn clear_stash_metadata(stash: &T::AccountId) { } } -// apply the slash to a stash account, deducting any missing funds from the reward -// payout, saturating at 0. this is mildly unfair but also an edge-case that -// can only occur when overlapping locked funds have been slashed. -fn do_slash( - stash: &T::AccountId, - value: BalanceOf, - reward_payout: &mut BalanceOf, - slashed_imbalance: &mut NegativeImbalanceOf, -) { - let controller = match >::bonded(stash) { - None => return, // defensive: should always exist. - Some(c) => c, - }; - - let mut ledger = match >::ledger(&controller) { - Some(ledger) => ledger, - None => return, // nothing to do. - }; - - let value = ledger.slash(value, T::Currency::minimum_balance()); - - if !value.is_zero() { - let (imbalance, missing) = T::Currency::slash(stash, value); - slashed_imbalance.subsume(imbalance); - - if !missing.is_zero() { - // deduct overslash from the reward payout - *reward_payout = reward_payout.saturating_sub(missing); - } - - >::update_ledger(&controller, &ledger); - - // trigger the event - >::deposit_event(super::RawEvent::Slash(stash.clone(), value)); - } -} +//// apply the slash to a stash account, deducting any missing funds from the reward +//// payout, saturating at 0. this is mildly unfair but also an edge-case that +//// can only occur when overlapping locked funds have been slashed. +//fn do_slash(stash: &T::AccountId, value: Power, reward_payout: &mut Power, slashed_imbalance: &mut Power) { +// let controller = match >::bonded(stash) { +// None => return, // defensive: should always exist. +// Some(c) => c, +// }; +// +// let mut ledger = match >::ledger(&controller) { +// Some(ledger) => ledger, +// None => return, // nothing to do. +// }; +// +// let value = ledger.slash(value, T::Currency::minimum_balance()); +// +// if !value.is_zero() { +// let (imbalance, missing) = T::Currency::slash(stash, value); +// slashed_imbalance.subsume(imbalance); +// +// if !missing.is_zero() { +// // deduct overslash from the reward payout +// *reward_payout = reward_payout.saturating_sub(missing); +// } +// +// >::update_ledger(&controller, &ledger); +// +// // trigger the event +// >::deposit_event(super::RawEvent::Slash(stash.clone(), value)); +// } +//} /// Apply a previously-unapplied slash. pub(crate) fn apply_slash(unapplied_slash: UnappliedSlash) { - let mut slashed_imbalance = NegativeImbalanceOf::::zero(); + let mut slashed_power = 0; let mut reward_payout = unapplied_slash.payout; - do_slash::( - &unapplied_slash.validator, - unapplied_slash.own, - &mut reward_payout, - &mut slashed_imbalance, - ); + // do_slash::( + // &unapplied_slash.validator, + // unapplied_slash.own, + // &mut reward_payout, + // &mut slashed_power, + // ); // for &(ref nominator, nominator_slash) in &unapplied_slash.others { // do_slash::(&nominator, nominator_slash, &mut reward_payout, &mut slashed_imbalance); @@ -668,7 +662,7 @@ pub(crate) fn apply_slash(unapplied_slash: UnappliedSlash(unapplied_slash: UnappliedSlash>::enumerate().collect::>(), vec![ - (31, ValidatorPrefs::default()), - (21, ValidatorPrefs::default()), - (11, ValidatorPrefs::default()) - ]); + assert_eq!( + >::enumerate().collect::>(), + vec![ + (31, ValidatorPrefs::default()), + (21, ValidatorPrefs::default()), + (11, ValidatorPrefs::default()) + ] + ); 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![] + }) ); assert_eq!(Staking::nominators(101).unwrap().targets, vec![11, 21]); if cfg!(feature = "equalize") { assert_eq!( Staking::stakers(11), - Exposure { total: 1250, own: 1000, others: vec![ IndividualExposure { who: 101, value: 250 }] } + Exposure { + total: 1250, + own: 1000, + others: vec![IndividualExposure { who: 101, value: 250 }] + } ); assert_eq!( Staking::stakers(21), - Exposure { total: 1250, own: 1000, others: vec![ IndividualExposure { who: 101, value: 250 }] } + Exposure { + total: 1250, + own: 1000, + others: vec![IndividualExposure { who: 101, value: 250 }] + } ); // initial slot_stake - assert_eq!(Staking::slot_stake(), 1250); + assert_eq!(Staking::slot_stake(), 1250); } else { assert_eq!( Staking::stakers(11), - Exposure { total: 1125, own: 1000, others: vec![ IndividualExposure { who: 101, value: 125 }] } + 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 }] } + Exposure { + total: 1375, + own: 1000, + others: vec![IndividualExposure { who: 101, value: 375 }] + } ); // initial slot_stake - assert_eq!(Staking::slot_stake(), 1125); + assert_eq!(Staking::slot_stake(), 1125); } - // The number of validators required. assert_eq!(Staking::validator_count(), 2); @@ -139,10 +175,16 @@ 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!(>::enumerate() + .map(|(c, _)| c) + .collect::>() + .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!(!>::enumerate() + .map(|(c, _)| c) + .collect::>() + .contains(&11)); assert_ok!(Staking::set_controller(Origin::signed(11), 5)); @@ -182,11 +224,14 @@ fn rewards_should_work() { // // 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( + &11, + Exposure { + own: 500, + total: 1000, + others: vec![IndividualExposure { who: 2, value: 500 }], + }, + ); >::insert(&2, RewardDestination::Stash); assert_eq!(Staking::payee(2), RewardDestination::Stash); @@ -194,7 +239,7 @@ fn rewards_should_work() { let mut block = 3; // Block 3 => Session 1 => Era 0 System::set_block_number(block); - Timestamp::set_timestamp(block * 5000); // on time. + 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); @@ -216,14 +261,14 @@ fn rewards_should_work() { block = 6; // Block 6 => Session 2 => Era 0 System::set_block_number(block); - Timestamp::set_timestamp(block * 5000 + delay); // a little late. + 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); 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 + 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); @@ -269,7 +314,10 @@ fn multi_era_reward_should_work() { start_session(5); // pay time - assert_eq!(Balances::total_balance(&10), init_balance_10 + total_payout_0 + total_payout_1); + assert_eq!( + Balances::total_balance(&10), + init_balance_10 + total_payout_0 + total_payout_1 + ); }); } @@ -290,7 +338,9 @@ fn staking_should_work() { assert_eq_uvec!(validator_controllers(), vec![20, 10]); // put some money in account that we'll use. - for i in 1..5 { let _ = Balances::make_free_balance_be(&i, 2000); } + for i in 1..5 { + let _ = Balances::make_free_balance_be(&i, 2000); + } // --- Block 1: start_session(1); @@ -307,7 +357,6 @@ fn staking_should_work() { // 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); @@ -331,7 +380,12 @@ fn staking_should_work() { // 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![] + }) ); // e.g. it cannot spend more than 500 that it has free from the total 2000 assert_noop!( @@ -494,7 +548,11 @@ fn nominating_and_rewards_should_work() { assert_eq_error_rate!(Staking::stakers(11).total, 1000 + 1000, 2); // 2 and 4 supported 10, each with stake 600, according to phragmen. assert_eq!( - Staking::stakers(11).others.iter().map(|e| e.value).collect::>>(), + Staking::stakers(11) + .others + .iter() + .map(|e| e.value) + .collect::>>(), vec![600, 400] ); assert_eq!( @@ -506,7 +564,11 @@ fn nominating_and_rewards_should_work() { assert_eq_error_rate!(Staking::stakers(21).total, 1000 + 1000, 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::>>(), + Staking::stakers(21) + .others + .iter() + .map(|e| e.value) + .collect::>>(), vec![400, 600] ); assert_eq!( @@ -519,7 +581,11 @@ fn nominating_and_rewards_should_work() { 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::>>(), + Staking::stakers(11) + .others + .iter() + .map(|e| e.value) + .collect::>>(), vec![400, 400] ); assert_eq!( @@ -531,7 +597,11 @@ fn nominating_and_rewards_should_work() { 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::>>(), + Staking::stakers(21) + .others + .iter() + .map(|e| e.value) + .collect::>>(), vec![600, 600] ); assert_eq!( @@ -574,17 +644,9 @@ fn nominating_and_rewards_should_work() { ); // Validator 10: got 1000 / 2000 external stake. - assert_eq_error_rate!( - Balances::total_balance(&10), - initial_balance + payout_for_10 / 2, - 1, - ); + assert_eq_error_rate!(Balances::total_balance(&10), initial_balance + payout_for_10 / 2, 1,); // Validator 20: got 1000 / 2000 external stake. - assert_eq_error_rate!( - Balances::total_balance(&20), - initial_balance + payout_for_20 / 2, - 1, - ); + assert_eq_error_rate!(Balances::total_balance(&20), initial_balance + payout_for_20 / 2, 1,); } else { // Nominator 2: has [400/1800 ~ 2/9 from 10] + [600/2200 ~ 3/11 from 20]'s reward. ==> 2/9 + 3/11 assert_eq_error_rate!( @@ -600,11 +662,7 @@ fn nominating_and_rewards_should_work() { ); // Validator 10: got 800 / 1800 external stake => 8/18 =? 4/9 => Validator's share = 5/9 - assert_eq_error_rate!( - Balances::total_balance(&10), - initial_balance + 5 * payout_for_10 / 9, - 1, - ); + assert_eq_error_rate!(Balances::total_balance(&10), initial_balance + 5 * payout_for_10 / 9, 1,); // Validator 20: got 1200 / 2200 external stake => 12/22 =? 6/11 => Validator's share = 5/11 assert_eq_error_rate!( Balances::total_balance(&20), @@ -639,7 +697,12 @@ fn nominators_also_get_slashed() { // 2 will nominate for 10, 20 let nominator_stake = 500; - assert_ok!(Staking::bond(Origin::signed(1), 2, nominator_stake, RewardDestination::default())); + assert_ok!(Staking::bond( + Origin::signed(1), + 2, + nominator_stake, + RewardDestination::default() + )); assert_ok!(Staking::nominate(Origin::signed(2), vec![20, 10])); let total_payout = current_total_payout_for_duration(3000); @@ -655,10 +718,7 @@ fn nominators_also_get_slashed() { // 10 goes offline on_offence_now( &[OffenceDetails { - offender: ( - 11, - Staking::stakers(&11), - ), + offender: (11, Staking::stakers(&11)), reporters: vec![], }], &[Perbill::from_percent(5)], @@ -688,17 +748,22 @@ fn double_staking_should_fail() { ExtBuilder::default().build().execute_with(|| { let arbitrary_value = 5; // 2 = controller, 1 stashed => ok - assert_ok!( - Staking::bond(Origin::signed(1), 2, arbitrary_value, - RewardDestination::default()) - ); + assert_ok!(Staking::bond( + Origin::signed(1), + 2, + arbitrary_value, + RewardDestination::default() + )); // 4 = not used so far, 1 stashed => not allowed. assert_noop!( - Staking::bond(Origin::signed(1), 4, arbitrary_value, - RewardDestination::default()), Error::::AlreadyBonded, + Staking::bond(Origin::signed(1), 4, arbitrary_value, RewardDestination::default()), + Error::::AlreadyBonded, ); // 1 = stashed => attempting to nominate should fail. - assert_noop!(Staking::nominate(Origin::signed(1), vec![1]), Error::::NotController); + assert_noop!( + Staking::nominate(Origin::signed(1), vec![1]), + Error::::NotController + ); // 2 = controller => nominating should work. assert_ok!(Staking::nominate(Origin::signed(2), vec![1])); }); @@ -815,7 +880,6 @@ fn forcing_new_era_works() { assert_eq!(ForceEra::get(), Forcing::NotForcing); start_session(13); assert_eq!(Staking::current_era(), 6); - }); } @@ -851,24 +915,28 @@ fn cannot_transfer_staked_balance_2() { // Tests that a stash account cannot transfer funds // Same test as above but with 20, and more accurate. // 21 has 2000 free balance but 1000 at stake - ExtBuilder::default().nominate(false).fair(true).build().execute_with(|| { - // Confirm account 21 is stashed - assert_eq!(Staking::bonded(&21), Some(20)); - // 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); - // 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"), - } - ); - assert_ok!(Balances::transfer(Origin::signed(21), 20, 1000)); - }); + ExtBuilder::default() + .nominate(false) + .fair(true) + .build() + .execute_with(|| { + // Confirm account 21 is stashed + assert_eq!(Staking::bonded(&21), Some(20)); + // 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); + // 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"), + } + ); + assert_ok!(Balances::transfer(Origin::signed(21), 20, 1000)); + }); } #[test] @@ -909,12 +977,15 @@ fn reward_destination_works() { // Check the balance of the stash account assert_eq!(Balances::free_balance(&11), 1000); // Check how much is at stake - assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, - total: 1000, - active: 1000, - unlocking: vec![], - })); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000, + active: 1000, + unlocking: vec![], + }) + ); // Compute total payout now for whole duration as other parameter won't change let total_payout_0 = current_total_payout_for_duration(3000); @@ -928,12 +999,15 @@ fn reward_destination_works() { // Check that reward went to the stash account of validator assert_eq!(Balances::free_balance(&11), 1000 + total_payout_0); // Check that amount at stake increased accordingly - assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, - total: 1000 + total_payout_0, - active: 1000 + total_payout_0, - unlocking: vec![], - })); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000 + total_payout_0, + active: 1000 + total_payout_0, + unlocking: vec![], + }) + ); //Change RewardDestination to Stash >::insert(&11, RewardDestination::Stash); @@ -952,12 +1026,15 @@ fn reward_destination_works() { // Record this value let recorded_stash_balance = 1000 + total_payout_0 + total_payout_1; // Check that amount at stake is NOT increased - assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, - total: 1000 + total_payout_0, - active: 1000 + total_payout_0, - unlocking: vec![], - })); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000 + total_payout_0, + active: 1000 + total_payout_0, + unlocking: vec![], + }) + ); // Change RewardDestination to Controller >::insert(&11, RewardDestination::Controller); @@ -977,12 +1054,15 @@ fn reward_destination_works() { // Check that reward went to the controller account assert_eq!(Balances::free_balance(&10), 1 + total_payout_2); // Check that amount at stake is NOT increased - assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, - total: 1000 + total_payout_0, - active: 1000 + total_payout_0, - unlocking: vec![], - })); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000 + total_payout_0, + active: 1000 + total_payout_0, + unlocking: vec![], + }) + ); // Check that amount in staked account is NOT increased. assert_eq!(Balances::free_balance(&11), recorded_stash_balance); }); @@ -1005,15 +1085,21 @@ fn validator_payment_prefs_work() { 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( + &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); - >::insert(&11, ValidatorPrefs { - commission: Perbill::from_percent(50), - }); + >::insert( + &11, + ValidatorPrefs { + commission: Perbill::from_percent(50), + }, + ); // Compute total payout now for whole duration as other parameter won't change let total_payout_0 = current_total_payout_for_duration(3000); @@ -1025,7 +1111,10 @@ fn validator_payment_prefs_work() { // 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); + 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. @@ -1034,7 +1123,6 @@ fn validator_payment_prefs_work() { check_exposure_all(); check_nominator_all(); }); - } #[test] @@ -1048,12 +1136,15 @@ fn bond_extra_works() { // Check that account 10 is bonded to account 11 assert_eq!(Staking::bonded(&11), Some(10)); // Check how much is at stake - assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, - total: 1000, - active: 1000, - unlocking: vec![], - })); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000, + active: 1000, + unlocking: vec![], + }) + ); // Give account 11 some large free balance greater than total let _ = Balances::make_free_balance_be(&11, 1000000); @@ -1061,22 +1152,28 @@ fn bond_extra_works() { // Call the bond_extra function from controller, add only 100 assert_ok!(Staking::bond_extra(Origin::signed(11), 100)); // There should be 100 more `total` and `active` in the ledger - assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, - total: 1000 + 100, - active: 1000 + 100, - unlocking: vec![], - })); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000 + 100, + active: 1000 + 100, + unlocking: vec![], + }) + ); // Call the bond_extra function with a large number, should handle it assert_ok!(Staking::bond_extra(Origin::signed(11), u64::max_value())); // The full amount of the funds should now be in the total and active - assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, - total: 1000000, - active: 1000000, - unlocking: vec![], - })); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000000, + active: 1000000, + unlocking: vec![], + }) + ); }); } @@ -1105,25 +1202,45 @@ fn bond_extra_and_withdraw_unbonded_works() { start_era(1); // Initial state of 10 - assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, - total: 1000, - active: 1000, - unlocking: vec![], - })); - assert_eq!(Staking::stakers(&11), Exposure { total: 1000, own: 1000, others: vec![] }); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000, + active: 1000, + unlocking: vec![], + }) + ); + assert_eq!( + Staking::stakers(&11), + Exposure { + total: 1000, + own: 1000, + others: vec![] + } + ); // deposit the extra 100 units Staking::bond_extra(Origin::signed(11), 100).unwrap(); - assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, - total: 1000 + 100, - active: 1000 + 100, - unlocking: vec![], - })); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000 + 100, + active: 1000 + 100, + unlocking: vec![], + }) + ); // 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::stakers(&11), + Exposure { + total: 1000 + 100, + own: 1000 + 100, + others: vec![] + } + ); // trigger next era. Timestamp::set_timestamp(10); @@ -1131,41 +1248,87 @@ fn bond_extra_and_withdraw_unbonded_works() { assert_eq!(Staking::current_era(), 2); // ledger should be the same. - assert_eq!(Staking::ledger(&10), Some(StakingLedger { - stash: 11, - total: 1000 + 100, - active: 1000 + 100, - unlocking: vec![], - })); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000 + 100, + active: 1000 + 100, + unlocking: vec![], + }) + ); // Exposure is now updated. - assert_eq!(Staking::stakers(&11), Exposure { total: 1000 + 100, own: 1000 + 100, others: vec![] }); + assert_eq!( + Staking::stakers(&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}] }) + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000 + 100, + active: 100, + unlocking: vec![UnlockChunk { + value: 1000, + era: 2 + 3 + }] + }) ); // 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}] })); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000 + 100, + active: 100, + unlocking: vec![UnlockChunk { + value: 1000, + era: 2 + 3 + }] + }) + ); // trigger next era. start_era(3); // 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}] })); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 1000 + 100, + active: 100, + unlocking: vec![UnlockChunk { + value: 1000, + era: 2 + 3 + }] + }) + ); // trigger next era. start_era(5); 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![] })); + assert_eq!( + Staking::ledger(&10), + Some(StakingLedger { + stash: 11, + total: 100, + active: 100, + unlocking: vec![] + }) + ); }) } @@ -1173,7 +1336,7 @@ fn bond_extra_and_withdraw_unbonded_works() { fn too_many_unbond_calls_should_not_work() { ExtBuilder::default().build().execute_with(|| { // locked at era 0 until 3 - for _ in 0..MAX_UNLOCKING_CHUNKS-1 { + for _ in 0..MAX_UNLOCKING_CHUNKS - 1 { assert_ok!(Staking::unbond(Origin::signed(10), 1)); } @@ -1200,49 +1363,68 @@ fn too_many_unbond_calls_should_not_work() { 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 - 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!(>::exists(&11) && >::exists(&21)); - - assert_eq!(Staking::stakers(&11).total, 1000); - assert_eq!(Staking::stakers(&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); - - // 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![] }); + 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!(>::exists(&11) && >::exists(&21)); + + assert_eq!(Staking::stakers(&11).total, 1000); + assert_eq!(Staking::stakers(&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); + + // 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![], + }, + ); - // 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 meaningfull if reward something - >::reward_by_ids(vec![(11, 1)]); - >::reward_by_ids(vec![(21, 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 > 100); // Test is meaningfull if reward something + >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(21, 1)]); - // New era --> rewards are paid --> stakes are changed - start_era(1); + // New era --> rewards are paid --> stakes are changed + start_era(1); - // -- 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); + // -- 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); - let _11_balance = Balances::free_balance(&11); - assert_eq!(_11_balance, 1000 + total_payout_0 / 2); + 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); + // -- slot stake should also be updated. + assert_eq!(Staking::slot_stake(), 69 + total_payout_0 / 2); - check_exposure_all(); - check_nominator_all(); - }); + check_exposure_all(); + check_nominator_all(); + }); } #[test] @@ -1348,7 +1530,6 @@ fn on_free_balance_zero_stash_removes_nominator() { }); } - #[test] fn switching_roles() { // Test that it should be possible to switch between roles (nominator, validator, idle) with minimal overhead. @@ -1356,12 +1537,16 @@ fn switching_roles() { Timestamp::set_timestamp(1); // Initialize time. // Reset reward destination - for i in &[10, 20] { assert_ok!(Staking::set_payee(Origin::signed(*i), RewardDestination::Controller)); } + for i in &[10, 20] { + assert_ok!(Staking::set_payee(Origin::signed(*i), RewardDestination::Controller)); + } assert_eq_uvec!(validator_controllers(), vec![20, 10]); // put some money in account that we'll use. - for i in 1..7 { let _ = Balances::deposit_creating(&i, 5000); } + for i in 1..7 { + let _ = Balances::deposit_creating(&i, 5000); + } // add 2 nominators assert_ok!(Staking::bond(Origin::signed(1), 2, 2000, RewardDestination::Controller)); @@ -1418,24 +1603,33 @@ fn switching_roles() { #[test] fn wrong_vote_is_null() { - ExtBuilder::default().nominate(false).validator_pool(true).build().execute_with(|| { - assert_eq_uvec!(validator_controllers(), vec![40, 30]); - - // put some money in account that we'll use. - for i in 1..3 { let _ = Balances::deposit_creating(&i, 5000); } + ExtBuilder::default() + .nominate(false) + .validator_pool(true) + .build() + .execute_with(|| { + assert_eq_uvec!(validator_controllers(), vec![40, 30]); - // add 1 nominators - assert_ok!(Staking::bond(Origin::signed(1), 2, 2000, RewardDestination::default())); - assert_ok!(Staking::nominate(Origin::signed(2), vec![ - 11, 21, // good votes - 1, 2, 15, 1000, 25 // crap votes. No effect. - ])); + // put some money in account that we'll use. + for i in 1..3 { + let _ = Balances::deposit_creating(&i, 5000); + } - // new block - start_era(1); + // add 1 nominators + assert_ok!(Staking::bond(Origin::signed(1), 2, 2000, RewardDestination::default())); + assert_ok!(Staking::nominate( + Origin::signed(2), + vec![ + 11, 21, // good votes + 1, 2, 15, 1000, 25 // crap votes. No effect. + ] + )); + + // new block + start_era(1); - assert_eq_uvec!(validator_controllers(), vec![20, 10]); - }); + assert_eq_uvec!(validator_controllers(), vec![20, 10]); + }); } #[test] @@ -1466,7 +1660,7 @@ 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 }] }) ); @@ -1681,7 +1875,14 @@ 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![] }); + >::insert( + &11, + Exposure { + total: stake, + own: stake, + others: vec![], + }, + ); // Check reward let _ = Staking::reward_validator(&11, reward_slash); @@ -1694,19 +1895,24 @@ 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 } - ]}); - + >::insert( + &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)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }], &[Perbill::from_percent(100)], ); @@ -1747,19 +1953,9 @@ fn add_reward_points_fns_works() { // Not mandatory but must be coherent with rewards assert_eq!(validators, vec![21, 11]); - >::reward_by_indices(vec![ - (0, 1), - (1, 1), - (2, 1), - (1, 1), - ]); + >::reward_by_indices(vec![(0, 1), (1, 1), (2, 1), (1, 1)]); - >::reward_by_ids(vec![ - (21, 1), - (11, 1), - (31, 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); @@ -1772,7 +1968,7 @@ fn unbonded_balance_is_not_slashable() { // total amount staked is slashable. assert_eq!(Staking::slashable_balance_of(&11), 1000); - assert_ok!(Staking::unbond(Origin::signed(10), 800)); + assert_ok!(Staking::unbond(Origin::signed(10), 800)); // only the active portion. assert_eq!(Staking::slashable_balance_of(&11), 200); @@ -1797,7 +1993,10 @@ fn era_is_always_same_length() { assert_eq!(Staking::current_era_start_session_index(), session + 1); start_era(4); - assert_eq!(Staking::current_era_start_session_index(), session + SessionsPerEra::get() + 1); + assert_eq!( + Staking::current_era_start_session_index(), + session + SessionsPerEra::get() + 1 + ); }); } @@ -1806,10 +2005,7 @@ fn offence_forces_new_era() { ExtBuilder::default().build().execute_with(|| { on_offence_now( &[OffenceDetails { - offender: ( - 11, - Staking::stakers(&11), - ), + offender: (11, Staking::stakers(&11)), reporters: vec![], }], &[Perbill::from_percent(5)], @@ -1826,10 +2022,7 @@ fn offence_ensures_new_era_without_clobbering() { on_offence_now( &[OffenceDetails { - offender: ( - 11, - Staking::stakers(&11), - ), + offender: (11, Staking::stakers(&11)), reporters: vec![], }], &[Perbill::from_percent(5)], @@ -1845,10 +2038,7 @@ fn offence_deselects_validator_when_slash_is_zero() { assert!(>::exists(11)); on_offence_now( &[OffenceDetails { - offender: ( - 11, - Staking::stakers(&11), - ), + offender: (11, Staking::stakers(&11)), reporters: vec![], }], &[Perbill::from_percent(0)], @@ -1894,10 +2084,7 @@ fn slash_in_old_span_does_not_deselect() { assert!(>::exists(11)); on_offence_now( &[OffenceDetails { - offender: ( - 11, - Staking::stakers(&11), - ), + offender: (11, Staking::stakers(&11)), reporters: vec![], }], &[Perbill::from_percent(0)], @@ -1918,10 +2105,7 @@ fn slash_in_old_span_does_not_deselect() { on_offence_in_era( &[OffenceDetails { - offender: ( - 11, - Staking::stakers(&11), - ), + offender: (11, Staking::stakers(&11)), reporters: vec![], }], &[Perbill::from_percent(0)], @@ -1934,10 +2118,7 @@ fn slash_in_old_span_does_not_deselect() { on_offence_in_era( &[OffenceDetails { - offender: ( - 11, - Staking::stakers(&11), - ), + offender: (11, Staking::stakers(&11)), reporters: vec![], }], &[Perbill::from_percent(100)], @@ -1966,10 +2147,7 @@ fn reporters_receive_their_slice() { on_offence_now( &[OffenceDetails { - offender: ( - 11, - Staking::stakers(&11), - ), + offender: (11, Staking::stakers(&11)), reporters: vec![1, 2], }], &[Perbill::from_percent(50)], @@ -2000,10 +2178,7 @@ fn subsequent_reports_in_same_span_pay_out_less() { on_offence_now( &[OffenceDetails { - offender: ( - 11, - Staking::stakers(&11), - ), + offender: (11, Staking::stakers(&11)), reporters: vec![1], }], &[Perbill::from_percent(20)], @@ -2016,10 +2191,7 @@ fn subsequent_reports_in_same_span_pay_out_less() { on_offence_now( &[OffenceDetails { - offender: ( - 11, - Staking::stakers(&11), - ), + offender: (11, Staking::stakers(&11)), reporters: vec![1], }], &[Perbill::from_percent(50)], @@ -2045,8 +2217,7 @@ fn invulnerables_are_not_slashed() { let exposure = Staking::stakers(&21); let initial_balance = Staking::slashable_balance_of(&21); - let nominator_balances: Vec<_> = exposure.others - .iter().map(|o| Balances::free_balance(&o.who)).collect(); + let nominator_balances: Vec<_> = exposure.others.iter().map(|o| Balances::free_balance(&o.who)).collect(); on_offence_now( &[ @@ -2087,10 +2258,7 @@ fn dont_slash_if_fraction_is_zero() { on_offence_now( &[OffenceDetails { - offender: ( - 11, - Staking::stakers(&11), - ), + offender: (11, Staking::stakers(&11)), reporters: vec![], }], &[Perbill::from_percent(0)], @@ -2108,12 +2276,10 @@ fn only_slash_for_max_in_era() { assert_eq!(Balances::free_balance(&11), 1000); on_offence_now( - &[ - OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }], &[Perbill::from_percent(50)], ); @@ -2122,12 +2288,10 @@ fn only_slash_for_max_in_era() { assert_eq!(Staking::force_era(), Forcing::ForceNew); on_offence_now( - &[ - OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }], &[Perbill::from_percent(25)], ); @@ -2135,12 +2299,10 @@ fn only_slash_for_max_in_era() { assert_eq!(Balances::free_balance(&11), 500); on_offence_now( - &[ - OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }], &[Perbill::from_percent(60)], ); @@ -2156,26 +2318,25 @@ fn garbage_collection_after_slashing() { assert_eq!(Balances::free_balance(&11), 256_000); on_offence_now( - &[ - OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }], &[Perbill::from_percent(10)], ); assert_eq!(Balances::free_balance(&11), 256_000 - 25_600); assert!(::SlashingSpans::get(&11).is_some()); - assert_eq!(::SpanSlash::get(&(11, 0)).amount_slashed(), &25_600); + assert_eq!( + ::SpanSlash::get(&(11, 0)).amount_slashed(), + &25_600 + ); on_offence_now( - &[ - OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }], &[Perbill::from_percent(100)], ); @@ -2200,12 +2361,10 @@ fn garbage_collection_on_window_pruning() { let nominated_value = exposure.others.iter().find(|o| o.who == 101).unwrap().value; on_offence_now( - &[ - OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }], &[Perbill::from_percent(10)], ); @@ -2242,7 +2401,6 @@ 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::stakers(&11); let exposure_21 = Staking::stakers(&21); assert_eq!(Balances::free_balance(&101), 2000); @@ -2250,12 +2408,10 @@ fn slashing_nominators_by_span_max() { let nominated_value_21 = exposure_21.others.iter().find(|o| o.who == 101).unwrap().value; on_offence_in_era( - &[ - OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }], &[Perbill::from_percent(10)], 2, ); @@ -2266,30 +2422,30 @@ fn slashing_nominators_by_span_max() { assert_eq!(Balances::free_balance(&101), 2000 - slash_1_amount); let expected_spans = vec![ - slashing::SlashingSpan { index: 1, start: 4, length: None }, - slashing::SlashingSpan { index: 0, start: 0, length: Some(4) }, + slashing::SlashingSpan { + index: 1, + start: 4, + length: None, + }, + slashing::SlashingSpan { + index: 0, + start: 0, + length: Some(4), + }, ]; let get_span = |account| ::SlashingSpans::get(&account).unwrap(); - assert_eq!( - get_span(11).iter().collect::>(), - expected_spans, - ); + assert_eq!(get_span(11).iter().collect::>(), expected_spans,); - assert_eq!( - get_span(101).iter().collect::>(), - expected_spans, - ); + assert_eq!(get_span(101).iter().collect::>(), expected_spans,); // second slash: higher era, higher value, same span. on_offence_in_era( - &[ - OffenceDetails { - offender: (21, Staking::stakers(&21)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (21, Staking::stakers(&21)), + reporters: vec![], + }], &[Perbill::from_percent(30)], 3, ); @@ -2307,12 +2463,10 @@ fn slashing_nominators_by_span_max() { // third slash: in same era and on same validator as first, higher // in-era value, but lower slash value than slash 2. on_offence_in_era( - &[ - OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }], &[Perbill::from_percent(20)], 2, ); @@ -2343,18 +2497,24 @@ fn slashes_are_summed_across_spans() { let get_span = |account| ::SlashingSpans::get(&account).unwrap(); on_offence_now( - &[ - OffenceDetails { - offender: (21, Staking::stakers(&21)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (21, Staking::stakers(&21)), + reporters: vec![], + }], &[Perbill::from_percent(10)], ); let expected_spans = vec![ - slashing::SlashingSpan { index: 1, start: 4, length: None }, - slashing::SlashingSpan { index: 0, start: 0, length: Some(4) }, + slashing::SlashingSpan { + index: 1, + start: 4, + length: None, + }, + slashing::SlashingSpan { + index: 0, + start: 0, + length: Some(4), + }, ]; assert_eq!(get_span(21).iter().collect::>(), expected_spans); @@ -2368,19 +2528,29 @@ fn slashes_are_summed_across_spans() { assert_eq!(Staking::slashable_balance_of(&21), 900); on_offence_now( - &[ - OffenceDetails { - offender: (21, Staking::stakers(&21)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (21, Staking::stakers(&21)), + reporters: vec![], + }], &[Perbill::from_percent(10)], ); let expected_spans = vec![ - slashing::SlashingSpan { index: 2, start: 5, length: None }, - slashing::SlashingSpan { index: 1, start: 4, length: Some(1) }, - slashing::SlashingSpan { index: 0, start: 0, length: Some(4) }, + slashing::SlashingSpan { + index: 2, + start: 5, + length: None, + }, + slashing::SlashingSpan { + index: 1, + start: 4, + length: Some(1), + }, + slashing::SlashingSpan { + index: 0, + start: 0, + length: Some(4), + }, ]; assert_eq!(get_span(21).iter().collect::>(), expected_spans); @@ -2400,12 +2570,10 @@ fn deferred_slashes_are_deferred() { let nominated_value = exposure.others.iter().find(|o| o.who == 101).unwrap().value; on_offence_now( - &[ - OffenceDetails { - offender: (11, Staking::stakers(&11)), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, Staking::stakers(&11)), + reporters: vec![], + }], &[Perbill::from_percent(10)], ); @@ -2443,12 +2611,10 @@ fn remove_deferred() { let nominated_value = exposure.others.iter().find(|o| o.who == 101).unwrap().value; on_offence_now( - &[ - OffenceDetails { - offender: (11, exposure.clone()), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, exposure.clone()), + reporters: vec![], + }], &[Perbill::from_percent(10)], ); @@ -2458,12 +2624,10 @@ fn remove_deferred() { start_era(2); on_offence_in_era( - &[ - OffenceDetails { - offender: (11, exposure.clone()), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, exposure.clone()), + reporters: vec![], + }], &[Perbill::from_percent(15)], 1, ); @@ -2512,33 +2676,26 @@ fn remove_multi_deferred() { assert_eq!(Balances::free_balance(&101), 2000); on_offence_now( - &[ - OffenceDetails { - offender: (11, exposure.clone()), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, exposure.clone()), + reporters: vec![], + }], &[Perbill::from_percent(10)], ); on_offence_now( - &[ - OffenceDetails { - offender: (21, Staking::stakers(&21)), - reporters: vec![], - } - ], + &[OffenceDetails { + offender: (21, Staking::stakers(&21)), + reporters: vec![], + }], &[Perbill::from_percent(10)], ); - on_offence_now( - &[ - OffenceDetails { - offender: (11, exposure.clone()), - reporters: vec![], - }, - ], + &[OffenceDetails { + offender: (11, exposure.clone()), + reporters: vec![], + }], &[Perbill::from_percent(25)], ); @@ -2554,6 +2711,9 @@ fn remove_multi_deferred() { #[test] fn version_initialized() { ExtBuilder::default().build().execute_with(|| { - assert_eq!(::StorageVersion::get(), crate::migration::CURRENT_VERSION); + assert_eq!( + ::StorageVersion::get(), + crate::migration::CURRENT_VERSION + ); }); } diff --git a/primitives/phragmen/Cargo.toml b/primitives/phragmen/Cargo.toml new file mode 100644 index 000000000..4978328c2 --- /dev/null +++ b/primitives/phragmen/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "darwinia-phragmen" +version = "0.4.0" +authors = ["Darwinia Network "] +edition = "2018" + +[dependencies] +serde = { version = "1.0.101", optional = true, features = ["derive"] } +sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-runtime = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +[dev-dependencies] +substrate-test-utils = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-io ={ version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +rand = "0.7.2" + +[features] +default = ["std"] +std = [ + "serde", + "sp-std/std", + "sp-runtime/std", +] diff --git a/primitives/phragmen/benches/phragmen.rs b/primitives/phragmen/benches/phragmen.rs new file mode 100644 index 000000000..33b80ed5a --- /dev/null +++ b/primitives/phragmen/benches/phragmen.rs @@ -0,0 +1,212 @@ +// Copyright 2019 Parity Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Benchmarks of the phragmen election algorithm. +//! Note that execution times will not be accurate in an absolute scale, since +//! - Everything is executed in the context of `TestExternalities` +//! - Everything is executed in native environment. +#![cfg(feature = "bench")] +#![feature(test)] + +extern crate test; +use test::Bencher; + +use rand::{self, Rng}; +extern crate sp_phragmen as phragmen; +use phragmen::{Support, SupportMap, PhragmenStakedAssignment}; + +use std::collections::BTreeMap; +use sp_runtime::traits::{Convert, SaturatedConversion}; + +const VALIDATORS: u64 = 1000; +const NOMINATORS: u64 = 10_000; +const EDGES: u64 = 2; +const TO_ELECT: usize = 100; +const STAKE: Balance = 1000; + +type Balance = u128; +type AccountId = u64; + +pub struct TestCurrencyToVote; +impl Convert for TestCurrencyToVote { + fn convert(x: Balance) -> u64 { x.saturated_into() } +} +impl Convert for TestCurrencyToVote { + fn convert(x: u128) -> Balance { x.saturated_into() } +} + +fn do_phragmen( + b: &mut Bencher, + num_vals: u64, + num_noms: u64, + count: usize, + votes_per: u64, + eq_iters: usize, + _eq_tolerance: u128, +) { + assert!(num_vals > votes_per); + let rr = |a, b| rand::thread_rng().gen_range(a as usize, b as usize) as Balance; + + // prefix to distinguish the validator and nominator account ranges. + let np = 10_000; + + let mut candidates = Vec::with_capacity(num_vals as usize); + let mut slashable_balance_of: BTreeMap = BTreeMap::new(); + + (1 ..= num_vals) + .for_each(|acc| { + candidates.push(acc); + slashable_balance_of.insert(acc, STAKE + rr(10, 50)); + }); + + let mut voters = Vec::with_capacity(num_noms as usize); + (np ..= (np + num_noms)) + .for_each(|acc| { + let mut stashes_to_vote = candidates.clone(); + let votes = (0 .. votes_per) + .map(|_| { + stashes_to_vote.remove(rr(0, stashes_to_vote.len()) as usize) + }) + .collect::>(); + voters.push((acc, votes)); + slashable_balance_of.insert(acc, STAKE + rr(10, 50)); + }); + + let slashable_balance = |who: &AccountId| -> Balance { + *slashable_balance_of.get(who).unwrap() + }; + + b.iter(|| { + let r = phragmen::elect::( + count, + 1_usize, + candidates.clone(), + voters.clone(), + slashable_balance, + true, + ).unwrap(); + + // Do the benchmarking with equalize. + if eq_iters > 0 { + let elected_stashes = r.winners; + let assignments = r.assignments; + + let to_votes = |b: Balance| + >::convert(b) as u128; + + // Initialize the support of each candidate. + let mut supports = >::new(); + elected_stashes + .iter() + .map(|(e, _)| (e, to_votes(slashable_balance(e)))) + .for_each(|(e, s)| { + let item = Support { own: s, total: s, ..Default::default() }; + supports.insert(e.clone(), item); + }); + + // build support struct. + for (n, assignment) in assignments.iter() { + for (c, per_thing) in assignment.iter() { + let nominator_stake = to_votes(slashable_balance(n)); + let other_stake = *per_thing * nominator_stake; + if let Some(support) = supports.get_mut(c) { + support.total = support.total.saturating_add(other_stake); + support.others.push((n.clone(), other_stake)); + } + } + } + + let mut staked_assignments + : Vec<(AccountId, Vec>)> + = Vec::with_capacity(assignments.len()); + for (n, assignment) in assignments.iter() { + let mut staked_assignment + : Vec> + = Vec::with_capacity(assignment.len()); + for (c, per_thing) in assignment.iter() { + let nominator_stake = to_votes(slashable_balance(n)); + let other_stake = *per_thing * nominator_stake; + staked_assignment.push((c.clone(), other_stake)); + } + staked_assignments.push((n.clone(), staked_assignment)); + } + + let tolerance = 0_u128; + let iterations = 2_usize; + phragmen::equalize::<_, _, TestCurrencyToVote, _>( + staked_assignments, + &mut supports, + tolerance, + iterations, + slashable_balance, + ); + } + }) +} + +macro_rules! phragmen_benches { + ($($name:ident: $tup:expr,)*) => { + $( + #[bench] + fn $name(b: &mut Bencher) { + let (v, n, t, e, eq_iter, eq_tol) = $tup; + println!("----------------------"); + println!( + "++ Benchmark: {} Validators // {} Nominators // {} Edges-per-nominator // {} \ + total edges // electing {} // Equalize: {} iterations -- {} tolerance", + v, n, e, e * n, t, eq_iter, eq_tol, + ); + do_phragmen(b, v, n, t, e, eq_iter, eq_tol); + } + )* + } +} + +phragmen_benches! { + bench_1_1: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES, 0, 0), + bench_1_2: (VALIDATORS*2, NOMINATORS, TO_ELECT, EDGES, 0, 0), + bench_1_3: (VALIDATORS*4, NOMINATORS, TO_ELECT, EDGES, 0, 0), + bench_1_4: (VALIDATORS*8, NOMINATORS, TO_ELECT, EDGES, 0, 0), + bench_1_1_eq: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES, 2, 0), + bench_1_2_eq: (VALIDATORS*2, NOMINATORS, TO_ELECT, EDGES, 2, 0), + bench_1_3_eq: (VALIDATORS*4, NOMINATORS, TO_ELECT, EDGES, 2, 0), + bench_1_4_eq: (VALIDATORS*8, NOMINATORS, TO_ELECT, EDGES, 2, 0), + + bench_0_1: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES, 0, 0), + bench_0_2: (VALIDATORS, NOMINATORS, TO_ELECT * 4, EDGES, 0, 0), + bench_0_3: (VALIDATORS, NOMINATORS, TO_ELECT * 8, EDGES, 0, 0), + bench_0_4: (VALIDATORS, NOMINATORS, TO_ELECT * 16, EDGES , 0, 0), + bench_0_1_eq: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES, 2, 0), + bench_0_2_eq: (VALIDATORS, NOMINATORS, TO_ELECT * 4, EDGES, 2, 0), + bench_0_3_eq: (VALIDATORS, NOMINATORS, TO_ELECT * 8, EDGES, 2, 0), + bench_0_4_eq: (VALIDATORS, NOMINATORS, TO_ELECT * 16, EDGES , 2, 0), + + bench_2_1: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES, 0, 0), + bench_2_2: (VALIDATORS, NOMINATORS*2, TO_ELECT, EDGES, 0, 0), + bench_2_3: (VALIDATORS, NOMINATORS*4, TO_ELECT, EDGES, 0, 0), + bench_2_4: (VALIDATORS, NOMINATORS*8, TO_ELECT, EDGES, 0, 0), + bench_2_1_eq: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES, 2, 0), + bench_2_2_eq: (VALIDATORS, NOMINATORS*2, TO_ELECT, EDGES, 2, 0), + bench_2_3_eq: (VALIDATORS, NOMINATORS*4, TO_ELECT, EDGES, 2, 0), + bench_2_4_eq: (VALIDATORS, NOMINATORS*8, TO_ELECT, EDGES, 2, 0), + + bench_3_1: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES, 0, 0 ), + bench_3_2: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES*2, 0, 0), + bench_3_3: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES*4, 0, 0), + bench_3_4: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES*8, 0, 0), + bench_3_1_eq: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES, 2, 0), + bench_3_2_eq: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES*2, 2, 0), + bench_3_3_eq: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES*4, 2, 0), + bench_3_4_eq: (VALIDATORS, NOMINATORS, TO_ELECT, EDGES*8, 2, 0), +} diff --git a/primitives/phragmen/src/lib.rs b/primitives/phragmen/src/lib.rs new file mode 100644 index 000000000..a06ef9497 --- /dev/null +++ b/primitives/phragmen/src/lib.rs @@ -0,0 +1,537 @@ +// Copyright 2019 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 . + +//! Rust implementation of the Phragmén election algorithm. This is used in several SRML modules to +//! optimally distribute the weight of a set of voters among an elected set of candidates. In the +//! context of staking this is mapped to validators and nominators. +//! +//! The algorithm has two phases: +//! - Sequential phragmen: performed in [`elect`] function which is first pass of the distribution +//! The results are not optimal but the execution time is less. +//! - Equalize post-processing: tries to further distribute the weight fairly among candidates. +//! Incurs more execution time. +//! +//! The main objective of the assignments done by phragmen is to maximize the minimum backed +//! candidate in the elected set. +//! +//! Reference implementation: https://github.com/w3f/consensus +//! Further details: +//! https://research.web3.foundation/en/latest/polkadot/NPoS/4.%20Sequential%20Phragm%C3%A9n%E2%80%99s%20method/ + +#![cfg_attr(not(feature = "std"), no_std)] + +use sp_std::{prelude::*, collections::btree_map::BTreeMap}; +use sp_runtime::RuntimeDebug; +use sp_runtime::{helpers_128bit::multiply_by_rational, Perbill, Rational128}; +use sp_runtime::traits::{Zero, Convert, Member, SimpleArithmetic, Saturating, Bounded}; + +#[cfg(test)] +mod mock; +#[cfg(test)] +mod tests; + +/// A type in which performing operations on balances and stakes of candidates and voters are safe. +/// +/// This module's functions expect a `Convert` type to convert all balances to u64. Hence, u128 is +/// a safe type for arithmetic operations over them. +/// +/// Balance types converted to `ExtendedBalance` are referred to as `Votes`. +pub type ExtendedBalance = u128; + +/// The denominator used for loads. Since votes are collected as u64, the smallest ratio that we +/// might collect is `1/approval_stake` where approval stake is the sum of votes. Hence, some number +/// bigger than u64::max_value() is needed. For maximum accuracy we simply use u128; +const DEN: u128 = u128::max_value(); + +/// A candidate entity for phragmen election. +#[derive(Clone, Default, RuntimeDebug)] +pub struct Candidate { + /// Identifier. + pub who: AccountId, + /// Intermediary value used to sort candidates. + pub score: Rational128, + /// Sum of the stake of this candidate based on received votes. + approval_stake: ExtendedBalance, + /// Flag for being elected. + elected: bool, +} + +/// A voter entity. +#[derive(Clone, Default, RuntimeDebug)] +pub struct Voter { + /// Identifier. + who: AccountId, + /// List of candidates proposed by this voter. + edges: Vec>, + /// The stake of this voter. + budget: ExtendedBalance, + /// Incremented each time a candidate that this voter voted for has been elected. + load: Rational128, +} + +/// A candidate being backed by a voter. +#[derive(Clone, Default, RuntimeDebug)] +pub struct Edge { + /// Identifier. + who: AccountId, + /// Load of this vote. + load: Rational128, + /// Index of the candidate stored in the 'candidates' vector. + candidate_index: usize, +} + +/// Means a particular `AccountId` was backed by `Perbill`th of a nominator's stake. +pub type PhragmenAssignment = (AccountId, Perbill); + +/// Means a particular `AccountId` was backed by `ExtendedBalance` of a nominator's stake. +pub type PhragmenStakedAssignment = (AccountId, ExtendedBalance); + +/// Final result of the phragmen election. +#[derive(RuntimeDebug)] +pub struct PhragmenResult { + /// Just winners zipped with their approval stake. Note that the approval stake is merely the + /// sub of their received stake and could be used for very basic sorting and approval voting. + 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<(AccountId, Vec>)> +} + +/// A structure to demonstrate the phragmen result from the perspective of the candidate, i.e. how +/// much support each candidate is receiving. +/// +/// This complements the [`PhragmenResult`] and is needed to run the equalize post-processing. +/// +/// This, at the current version, resembles the `Exposure` defined in the staking SRML module, yet +/// they do not necessarily have to be the same. +#[derive(Default, RuntimeDebug)] +#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +pub struct Support { + /// The amount of support as the effect of self-vote. + pub own: ExtendedBalance, + /// Total support. + pub total: ExtendedBalance, + /// Support from voters. + pub others: Vec>, +} + +/// A linkage from a candidate and its [`Support`]. +pub type SupportMap = BTreeMap>; + +/// Perform election based on Phragmén algorithm. +/// +/// Returns an `Option` the set of winners and their detailed support ratio from each voter if +/// enough candidates are provided. Returns `None` otherwise. +/// +/// * `candidate_count`: number of candidates to elect. +/// * `minimum_candidate_count`: minimum number of candidates to elect. If less candidates exist, +/// `None` is returned. +/// * `initial_candidates`: candidates list to be elected from. +/// * `initial_voters`: voters list. +/// * `stake_of`: something that can return the stake stake of a particular candidate or voter. +/// +/// This function does not strip out candidates who do not have any backing stake. It is the +/// responsibility of the caller to make sure only those candidates who have a sensible economic +/// value are passed in. From the perspective of this function, a candidate can easily be among the +/// winner with no backing stake. +pub fn elect( + candidate_count: usize, + minimum_candidate_count: usize, + initial_candidates: Vec, + initial_voters: Vec<(AccountId, Vec)>, + stake_of: FS, +) -> Option> where + AccountId: Default + Ord + Member, + Balance: Default + Copy + SimpleArithmetic, + for<'r> FS: Fn(&'r AccountId) -> Balance, + C: Convert + Convert, +{ + let to_votes = |b: Balance| >::convert(b) as ExtendedBalance; + + // return structures + let mut elected_candidates: Vec<(AccountId, ExtendedBalance)>; + let mut assigned: Vec<(AccountId, Vec>)>; + + // used to cache and access candidates index. + let mut c_idx_cache = BTreeMap::::new(); + + // voters list. + let num_voters = initial_candidates.len() + initial_voters.len(); + let mut voters: Vec> = Vec::with_capacity(num_voters); + + // Iterate once to create a cache of candidates indexes. This could be optimized by being + // provided by the call site. + let mut candidates = initial_candidates + .into_iter() + .enumerate() + .map(|(idx, who)| { + c_idx_cache.insert(who.clone(), idx); + Candidate { who, ..Default::default() } + }) + .collect::>>(); + + // early return if we don't have enough candidates + if candidates.len() < minimum_candidate_count { return None; } + + // collect voters. use `c_idx_cache` for fast access and aggregate `approval_stake` of + // candidates. + voters.extend(initial_voters.into_iter().map(|(who, votes)| { + let voter_stake = stake_of(&who); + let mut edges: Vec> = Vec::with_capacity(votes.len()); + for v in votes { + if let Some(idx) = c_idx_cache.get(&v) { + // This candidate is valid + already cached. + candidates[*idx].approval_stake = candidates[*idx].approval_stake + .saturating_add(to_votes(voter_stake)); + edges.push(Edge { who: v.clone(), candidate_index: *idx, ..Default::default() }); + } // else {} would be wrong votes. We don't really care about it. + } + Voter { + who, + edges: edges, + budget: to_votes(voter_stake), + load: Rational128::zero(), + } + })); + + + // we have already checked that we have more candidates than minimum_candidate_count. + // run phragmen. + let to_elect = candidate_count.min(candidates.len()); + elected_candidates = Vec::with_capacity(candidate_count); + assigned = Vec::with_capacity(candidate_count); + + // main election loop + for _round in 0..to_elect { + // loop 1: initialize score + for c in &mut candidates { + if !c.elected { + // 1 / approval_stake == (DEN / approval_stake) / DEN. If approval_stake is zero, + // then the ratio should be as large as possible, essentially `infinity`. + if c.approval_stake.is_zero() { + c.score = Rational128::from_unchecked(DEN, 0); + } else { + c.score = Rational128::from(DEN / c.approval_stake, DEN); + } + } + } + + // loop 2: increment score + for n in &voters { + for e in &n.edges { + let c = &mut candidates[e.candidate_index]; + if !c.elected && !c.approval_stake.is_zero() { + let temp_n = multiply_by_rational( + n.load.n(), + n.budget, + c.approval_stake, + ).unwrap_or(Bounded::max_value()); + let temp_d = n.load.d(); + let temp = Rational128::from(temp_n, temp_d); + c.score = c.score.lazy_saturating_add(temp); + } + } + } + + // loop 3: find the best + if let Some(winner) = candidates + .iter_mut() + .filter(|c| !c.elected) + .min_by_key(|c| c.score) + { + // loop 3: update voter and edge load + winner.elected = true; + for n in &mut voters { + for e in &mut n.edges { + if e.who == winner.who { + e.load = winner.score.lazy_saturating_sub(n.load); + n.load = winner.score; + } + } + } + + elected_candidates.push((winner.who.clone(), winner.approval_stake)); + } else { + break + } + } // end of all rounds + + // update backing stake of candidates and voters + for n in &mut voters { + let mut assignment = (n.who.clone(), vec![]); + for e in &mut n.edges { + if elected_candidates.iter().position(|(ref c, _)| *c == e.who).is_some() { + let per_bill_parts = + { + if n.load == e.load { + // Full support. No need to calculate. + Perbill::accuracy().into() + } else { + if e.load.d() == n.load.d() { + // return e.load / n.load. + let desired_scale: u128 = Perbill::accuracy().into(); + multiply_by_rational( + desired_scale, + e.load.n(), + n.load.n(), + ).unwrap_or(Bounded::max_value()) + } else { + // defensive only. Both edge and nominator loads are built from + // scores, hence MUST have the same denominator. + Zero::zero() + } + } + }; + // safer to .min() inside as well to argue as u32 is safe. + let per_thing = Perbill::from_parts( + per_bill_parts.min(Perbill::accuracy().into()) as u32 + ); + assignment.1.push((e.who.clone(), per_thing)); + } + } + + if assignment.1.len() > 0 { + // To ensure an assertion indicating: no stake from the nominator going to waste, + // we add a minimal post-processing to equally assign all of the leftover stake ratios. + let vote_count = assignment.1.len() as u32; + let len = assignment.1.len(); + let sum = assignment.1.iter() + .map(|a| a.1.deconstruct()) + .sum::(); + let accuracy = Perbill::accuracy(); + let diff = accuracy.checked_sub(sum).unwrap_or(0); + let diff_per_vote = (diff / vote_count).min(accuracy); + + if diff_per_vote > 0 { + for i in 0..len { + let current_ratio = assignment.1[i % len].1; + let next_ratio = current_ratio + .saturating_add(Perbill::from_parts(diff_per_vote)); + assignment.1[i % len].1 = next_ratio; + } + } + + // `remainder` is set to be less than maximum votes of a nominator (currently 16). + // safe to cast it to usize. + let remainder = diff - diff_per_vote * vote_count; + for i in 0..remainder as usize { + let current_ratio = assignment.1[i % len].1; + let next_ratio = current_ratio.saturating_add(Perbill::from_parts(1)); + assignment.1[i % len].1 = next_ratio; + } + assigned.push(assignment); + } + } + + Some(PhragmenResult { + winners: elected_candidates, + assignments: assigned, + }) +} + +/// Build the support map from the given phragmen result. +pub fn build_support_map( + elected_stashes: &Vec, + assignments: &Vec<(AccountId, Vec>)>, + stake_of: FS, +) -> SupportMap where + AccountId: Default + Ord + Member, + Balance: Default + Copy + SimpleArithmetic, + C: Convert + Convert, + for<'r> FS: Fn(&'r AccountId) -> Balance, +{ + let to_votes = |b: Balance| >::convert(b) as ExtendedBalance; + // Initialize the support of each candidate. + let mut supports = >::new(); + elected_stashes + .iter() + .for_each(|e| { supports.insert(e.clone(), Default::default()); }); + + // build support struct. + for (n, assignment) in assignments.iter() { + for (c, per_thing) in assignment.iter() { + let nominator_stake = to_votes(stake_of(n)); + // AUDIT: it is crucially important for the `Mul` implementation of all + // per-things to be sound. + let other_stake = *per_thing * nominator_stake; + if let Some(support) = supports.get_mut(c) { + if c == n { + // This is a nomination from `n` to themselves. This will increase both the + // `own` and `total` field. + debug_assert!(*per_thing == Perbill::one()); // TODO: deal with this: do we want it? + support.own = support.own.saturating_add(other_stake); + support.total = support.total.saturating_add(other_stake); + } else { + // This is a nomination from `n` to someone else. Increase `total` and add an entry + // inside `others`. + // For an astronomically rich validator with more astronomically rich + // set of nominators, this might saturate. + support.total = support.total.saturating_add(other_stake); + support.others.push((n.clone(), other_stake)); + } + } + } + } + supports +} + +/// Performs equalize post-processing to the output of the election algorithm. This happens in +/// rounds. The number of rounds and the maximum diff-per-round tolerance can be tuned through input +/// parameters. +/// +/// 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. +pub fn equalize( + mut assignments: Vec<(AccountId, Vec>)>, + supports: &mut SupportMap, + tolerance: ExtendedBalance, + iterations: usize, + stake_of: FS, +) where + C: Convert + Convert, + for<'r> FS: Fn(&'r AccountId) -> Balance, + AccountId: Ord + Clone, +{ + // prepare the data for equalise + for _i in 0..iterations { + let mut max_diff = 0; + + for (voter, assignment) in assignments.iter_mut() { + let voter_budget = stake_of(&voter); + + let diff = do_equalize::<_, _, C>( + voter, + voter_budget, + assignment, + supports, + tolerance, + ); + if diff > max_diff { max_diff = diff; } + } + + if max_diff < tolerance { + break; + } + } +} + +/// actually perform equalize. same interface is `equalize`. Just called in loops with a check for +/// maximum difference. +fn do_equalize( + voter: &AccountId, + budget_balance: Balance, + elected_edges: &mut Vec>, + support_map: &mut SupportMap, + tolerance: ExtendedBalance +) -> ExtendedBalance where + C: Convert + Convert, + AccountId: Ord + Clone, +{ + let to_votes = |b: Balance| + >::convert(b) as ExtendedBalance; + let budget = to_votes(budget_balance); + + // Nothing to do. This voter had nothing useful. + // Defensive only. Assignment list should always be populated. + if elected_edges.is_empty() { return 0; } + + let stake_used = elected_edges + .iter() + .fold(0 as ExtendedBalance, |s, e| s.saturating_add(e.1)); + + let backed_stakes_iter = elected_edges + .iter() + .filter_map(|e| support_map.get(&e.0)) + .map(|e| e.total); + + let backing_backed_stake = elected_edges + .iter() + .filter(|e| e.1 > 0) + .filter_map(|e| support_map.get(&e.0)) + .map(|e| e.total) + .collect::>(); + + let mut difference; + if backing_backed_stake.len() > 0 { + let max_stake = backing_backed_stake + .iter() + .max() + .expect("vector with positive length will have a max; qed"); + let min_stake = backed_stakes_iter + .min() + .expect("iterator with positive length will have a min; qed"); + + difference = max_stake.saturating_sub(min_stake); + difference = difference.saturating_add(budget.saturating_sub(stake_used)); + if difference < tolerance { + return difference; + } + } else { + difference = budget; + } + + // Undo updates to support + elected_edges.iter_mut().for_each(|e| { + if let Some(support) = support_map.get_mut(&e.0) { + support.total = support.total.saturating_sub(e.1); + support.others.retain(|i_support| i_support.0 != *voter); + } + e.1 = 0; + }); + + elected_edges.sort_unstable_by_key(|e| + if let Some(e) = support_map.get(&e.0) { e.total } else { Zero::zero() } + ); + + let mut cumulative_stake: ExtendedBalance = 0; + let mut last_index = elected_edges.len() - 1; + let mut idx = 0usize; + for e in &mut elected_edges[..] { + if let Some(support) = support_map.get_mut(&e.0) { + let stake = support.total; + let stake_mul = stake.saturating_mul(idx as ExtendedBalance); + let stake_sub = stake_mul.saturating_sub(cumulative_stake); + if stake_sub > budget { + last_index = idx.checked_sub(1).unwrap_or(0); + break; + } + cumulative_stake = cumulative_stake.saturating_add(stake); + } + idx += 1; + } + + let last_stake = elected_edges[last_index].1; + let split_ways = last_index + 1; + let excess = budget + .saturating_add(cumulative_stake) + .saturating_sub(last_stake.saturating_mul(split_ways as ExtendedBalance)); + elected_edges.iter_mut().take(split_ways).for_each(|e| { + if let Some(support) = support_map.get_mut(&e.0) { + e.1 = (excess / split_ways as ExtendedBalance) + .saturating_add(last_stake) + .saturating_sub(support.total); + support.total = support.total.saturating_add(e.1); + support.others.push((voter.clone(), e.1)); + } + }); + + difference +} diff --git a/primitives/phragmen/src/mock.rs b/primitives/phragmen/src/mock.rs new file mode 100644 index 000000000..3074258bb --- /dev/null +++ b/primitives/phragmen/src/mock.rs @@ -0,0 +1,405 @@ +// Copyright 2019 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 . + +//! Mock file for phragmen. + +#![cfg(test)] + +use crate::{elect, PhragmenResult, PhragmenAssignment}; +use sp_runtime::{ + assert_eq_error_rate, Perbill, + traits::{Convert, Member, SaturatedConversion} +}; +use sp_std::collections::btree_map::BTreeMap; + +pub(crate) struct TestCurrencyToVote; +impl Convert for TestCurrencyToVote { + fn convert(x: Balance) -> u64 { x.saturated_into() } +} +impl Convert for TestCurrencyToVote { + fn convert(x: u128) -> Balance { x } +} + +#[derive(Default, Debug)] +pub(crate) struct _Candidate { + who: A, + score: f64, + approval_stake: f64, + elected: bool, +} + +#[derive(Default, Debug)] +pub(crate) struct _Voter { + who: A, + edges: Vec<_Edge>, + budget: f64, + load: f64, +} + +#[derive(Default, Debug)] +pub(crate) struct _Edge { + who: A, + load: f64, + candidate_index: usize, +} + +#[derive(Default, Debug, PartialEq)] +pub(crate) struct _Support { + pub own: f64, + pub total: f64, + pub others: Vec<_PhragmenAssignment>, +} + +pub(crate) type _PhragmenAssignment = (A, f64); +pub(crate) type _SupportMap = BTreeMap>; + +pub(crate) type Balance = u128; +pub(crate) type AccountId = u64; + +#[derive(Debug, Clone)] +pub(crate) struct _PhragmenResult { + pub winners: Vec<(A, Balance)>, + pub assignments: Vec<(A, Vec<_PhragmenAssignment>)> +} + +pub(crate) fn auto_generate_self_voters(candidates: &[A]) -> Vec<(A, Vec)> { + candidates.iter().map(|c| (c.clone(), vec![c.clone()])).collect() +} + +pub(crate) fn elect_float( + candidate_count: usize, + minimum_candidate_count: usize, + initial_candidates: Vec, + initial_voters: Vec<(A, Vec)>, + stake_of: FS, +) -> Option<_PhragmenResult> where + A: Default + Ord + Member + Copy, + for<'r> FS: Fn(&'r A) -> Balance, +{ + let mut elected_candidates: Vec<(A, Balance)>; + let mut assigned: Vec<(A, Vec<_PhragmenAssignment>)>; + let mut c_idx_cache = BTreeMap::::new(); + let num_voters = initial_candidates.len() + initial_voters.len(); + let mut voters: Vec<_Voter> = Vec::with_capacity(num_voters); + + let mut candidates = initial_candidates + .into_iter() + .enumerate() + .map(|(idx, who)| { + c_idx_cache.insert(who.clone(), idx); + _Candidate { who, ..Default::default() } + }) + .collect::>>(); + + if candidates.len() < minimum_candidate_count { + return None; + } + + voters.extend(initial_voters.into_iter().map(|(who, votes)| { + let voter_stake = stake_of(&who) as f64; + let mut edges: Vec<_Edge> = Vec::with_capacity(votes.len()); + for v in votes { + if let Some(idx) = c_idx_cache.get(&v) { + candidates[*idx].approval_stake = candidates[*idx].approval_stake + voter_stake; + edges.push( + _Edge { who: v.clone(), candidate_index: *idx, ..Default::default() } + ); + } + } + _Voter { + who, + edges: edges, + budget: voter_stake, + load: 0f64, + } + })); + + let to_elect = candidate_count.min(candidates.len()); + elected_candidates = Vec::with_capacity(candidate_count); + assigned = Vec::with_capacity(candidate_count); + + for _round in 0..to_elect { + for c in &mut candidates { + if !c.elected { + c.score = 1.0 / c.approval_stake; + } + } + for n in &voters { + for e in &n.edges { + let c = &mut candidates[e.candidate_index]; + if !c.elected && !(c.approval_stake == 0f64) { + c.score += n.budget * n.load / c.approval_stake; + } + } + } + + if let Some(winner) = candidates + .iter_mut() + .filter(|c| !c.elected) + .min_by(|x, y| x.score.partial_cmp(&y.score).unwrap_or(sp_std::cmp::Ordering::Equal)) + { + winner.elected = true; + for n in &mut voters { + for e in &mut n.edges { + if e.who == winner.who { + e.load = winner.score - n.load; + n.load = winner.score; + } + } + } + + elected_candidates.push((winner.who.clone(), winner.approval_stake as Balance)); + } else { + break + } + } + + for n in &mut voters { + let mut assignment = (n.who.clone(), vec![]); + for e in &mut n.edges { + if let Some(c) = elected_candidates.iter().cloned().map(|(c, _)| c).find(|c| *c == e.who) { + if c != n.who { + let ratio = e.load / n.load; + assignment.1.push((e.who.clone(), ratio)); + } + } + } + if assignment.1.len() > 0 { + assigned.push(assignment); + } + } + + Some(_PhragmenResult { + winners: elected_candidates, + assignments: assigned, + }) +} + +pub(crate) fn equalize_float( + mut assignments: Vec<(A, Vec<_PhragmenAssignment>)>, + supports: &mut _SupportMap, + tolerance: f64, + iterations: usize, + stake_of: FS, +) where + for<'r> FS: Fn(&'r A) -> Balance, + A: Ord + Clone + std::fmt::Debug, +{ + for _i in 0..iterations { + let mut max_diff = 0.0; + for (voter, assignment) in assignments.iter_mut() { + let voter_budget = stake_of(&voter); + let diff = do_equalize_float( + voter, + voter_budget, + assignment, + supports, + tolerance, + ); + if diff > max_diff { max_diff = diff; } + } + + if max_diff < tolerance { + break; + } + } +} + +pub(crate) fn do_equalize_float( + voter: &A, + budget_balance: Balance, + elected_edges: &mut Vec<_PhragmenAssignment>, + support_map: &mut _SupportMap, + tolerance: f64 +) -> f64 where + A: Ord + Clone, +{ + let budget = budget_balance as f64; + if elected_edges.is_empty() { return 0.0; } + + let stake_used = elected_edges + .iter() + .fold(0.0, |s, e| s + e.1); + + let backed_stakes_iter = elected_edges + .iter() + .filter_map(|e| support_map.get(&e.0)) + .map(|e| e.total); + + let backing_backed_stake = elected_edges + .iter() + .filter(|e| e.1 > 0.0) + .filter_map(|e| support_map.get(&e.0)) + .map(|e| e.total) + .collect::>(); + + let mut difference; + if backing_backed_stake.len() > 0 { + let max_stake = backing_backed_stake + .iter() + .max_by(|x, y| x.partial_cmp(&y).unwrap_or(sp_std::cmp::Ordering::Equal)) + .expect("vector with positive length will have a max; qed"); + let min_stake = backed_stakes_iter + .min_by(|x, y| x.partial_cmp(&y).unwrap_or(sp_std::cmp::Ordering::Equal)) + .expect("iterator with positive length will have a min; qed"); + + difference = max_stake - min_stake; + difference = difference + budget - stake_used; + if difference < tolerance { + return difference; + } + } else { + difference = budget; + } + + // Undo updates to support + elected_edges.iter_mut().for_each(|e| { + if let Some(support) = support_map.get_mut(&e.0) { + support.total = support.total - e.1; + support.others.retain(|i_support| i_support.0 != *voter); + } + e.1 = 0.0; + }); + + elected_edges.sort_unstable_by(|x, y| + support_map.get(&x.0) + .and_then(|x| support_map.get(&y.0).and_then(|y| x.total.partial_cmp(&y.total))) + .unwrap_or(sp_std::cmp::Ordering::Equal) + ); + + let mut cumulative_stake = 0.0; + let mut last_index = elected_edges.len() - 1; + elected_edges.iter_mut().enumerate().for_each(|(idx, e)| { + if let Some(support) = support_map.get_mut(&e.0) { + let stake = support.total; + let stake_mul = stake * (idx as f64); + let stake_sub = stake_mul - cumulative_stake; + if stake_sub > budget { + last_index = idx.checked_sub(1).unwrap_or(0); + return + } + cumulative_stake = cumulative_stake + stake; + } + }); + + let last_stake = elected_edges[last_index].1; + let split_ways = last_index + 1; + let excess = budget + cumulative_stake - last_stake * (split_ways as f64); + elected_edges.iter_mut().take(split_ways).for_each(|e| { + if let Some(support) = support_map.get_mut(&e.0) { + e.1 = excess / (split_ways as f64) + last_stake - support.total; + support.total = support.total + e.1; + support.others.push((voter.clone(), e.1)); + } + }); + + difference +} + + +pub(crate) fn create_stake_of(stakes: &[(AccountId, Balance)]) + -> Box Balance> +{ + let mut storage = BTreeMap::::new(); + stakes.iter().for_each(|s| { storage.insert(s.0, s.1); }); + let stake_of = move |who: &AccountId| -> Balance { storage.get(who).unwrap().to_owned() }; + Box::new(stake_of) +} + + +pub fn check_assignments(assignments: Vec<(AccountId, Vec>)>) { + for (_, a) in assignments { + let sum: u32 = a.iter().map(|(_, p)| p.deconstruct()).sum(); + assert_eq_error_rate!(sum, Perbill::accuracy(), 5); + } +} + +pub(crate) fn run_and_compare( + candidates: Vec, + voters: Vec<(AccountId, Vec)>, + stake_of: Box Balance>, + to_elect: usize, + min_to_elect: usize, +) { + // run fixed point code. + let PhragmenResult { winners, assignments } = elect::<_, _, _, TestCurrencyToVote>( + to_elect, + min_to_elect, + candidates.clone(), + voters.clone(), + &stake_of, + ).unwrap(); + + // run float poc code. + let truth_value = elect_float( + to_elect, + min_to_elect, + candidates, + voters, + &stake_of, + ).unwrap(); + + assert_eq!(winners, truth_value.winners); + + for (nominator, assigned) in assignments.clone() { + if let Some(float_assignments) = truth_value.assignments.iter().find(|x| x.0 == nominator) { + for (candidate, per_thingy) in assigned { + if let Some(float_assignment) = float_assignments.1.iter().find(|x| x.0 == candidate ) { + assert_eq_error_rate!( + Perbill::from_fraction(float_assignment.1).deconstruct(), + per_thingy.deconstruct(), + 1, + ); + } else { + panic!("candidate mismatch. This should never happen.") + } + } + } else { + panic!("nominator mismatch. This should never happen.") + } + } + + check_assignments(assignments); +} + +pub(crate) fn build_support_map( + result: &mut _PhragmenResult, + stake_of: FS, +) -> _SupportMap + where for<'r> FS: Fn(&'r AccountId) -> Balance +{ + let mut supports = <_SupportMap>::new(); + result.winners + .iter() + .map(|(e, _)| (e, stake_of(e) as f64)) + .for_each(|(e, s)| { + let item = _Support { own: s, total: s, ..Default::default() }; + supports.insert(e.clone(), item); + }); + + for (n, assignment) in result.assignments.iter_mut() { + for (c, r) in assignment.iter_mut() { + let nominator_stake = stake_of(n) as f64; + let other_stake = nominator_stake * *r; + if let Some(support) = supports.get_mut(c) { + support.total = support.total + other_stake; + support.others.push((n.clone(), other_stake)); + } + *r = other_stake; + } + } + supports +} diff --git a/primitives/phragmen/src/tests.rs b/primitives/phragmen/src/tests.rs new file mode 100644 index 000000000..09491b3b9 --- /dev/null +++ b/primitives/phragmen/src/tests.rs @@ -0,0 +1,407 @@ +// Copyright 2019 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 phragmen. + +#![cfg(test)] + +use crate::mock::*; +use crate::{elect, PhragmenResult}; +use substrate_test_utils::assert_eq_uvec; +use sp_runtime::Perbill; + +#[test] +fn float_phragmen_poc_works() { + let candidates = vec![1, 2, 3]; + let voters = vec![ + (10, vec![1, 2]), + (20, vec![1, 3]), + (30, vec![2, 3]), + ]; + let stake_of = create_stake_of(&[(10, 10), (20, 20), (30, 30), (1, 0), (2, 0), (3, 0)]); + let mut phragmen_result = elect_float(2, 2, candidates, voters, &stake_of).unwrap(); + let winners = phragmen_result.clone().winners; + let assignments = phragmen_result.clone().assignments; + + assert_eq_uvec!(winners, vec![(2, 40), (3, 50)]); + assert_eq_uvec!( + assignments, + vec![ + (10, vec![(2, 1.0)]), + (20, vec![(3, 1.0)]), + (30, vec![(2, 0.5), (3, 0.5)]), + ] + ); + + let mut support_map = build_support_map(&mut phragmen_result, &stake_of); + + assert_eq!( + support_map.get(&2).unwrap(), + &_Support { own: 0.0, total: 25.0, others: vec![(10u64, 10.0), (30u64, 15.0)]} + ); + assert_eq!( + support_map.get(&3).unwrap(), + &_Support { own: 0.0, total: 35.0, others: vec![(20u64, 20.0), (30u64, 15.0)]} + ); + + equalize_float(phragmen_result.assignments, &mut support_map, 0.0, 2, stake_of); + + assert_eq!( + support_map.get(&2).unwrap(), + &_Support { own: 0.0, total: 30.0, others: vec![(10u64, 10.0), (30u64, 20.0)]} + ); + assert_eq!( + support_map.get(&3).unwrap(), + &_Support { own: 0.0, total: 30.0, others: vec![(20u64, 20.0), (30u64, 10.0)]} + ); +} + +#[test] +fn phragmen_poc_works() { + let candidates = vec![1, 2, 3]; + let voters = vec![ + (10, vec![1, 2]), + (20, vec![1, 3]), + (30, vec![2, 3]), + ]; + + let PhragmenResult { winners, assignments } = elect::<_, _, _, TestCurrencyToVote>( + 2, + 2, + candidates, + voters, + create_stake_of(&[(10, 10), (20, 20), (30, 30)]), + ).unwrap(); + + assert_eq_uvec!(winners, vec![(2, 40), (3, 50)]); + assert_eq_uvec!( + assignments, + vec![ + (10, vec![(2, Perbill::from_percent(100))]), + (20, vec![(3, Perbill::from_percent(100))]), + (30, vec![(2, Perbill::from_percent(100/2)), (3, Perbill::from_percent(100/2))]), + ] + ); +} + +#[test] +fn phragmen_poc_2_works() { + let candidates = vec![10, 20, 30]; + let voters = vec![ + (2, vec![10, 20, 30]), + (4, vec![10, 20, 40]), + ]; + let stake_of = create_stake_of(&[ + (10, 1000), + (20, 1000), + (30, 1000), + (40, 1000), + (2, 500), + (4, 500), + ]); + + run_and_compare(candidates, voters, stake_of, 2, 2); +} + +#[test] +fn phragmen_poc_3_works() { + let candidates = vec![10, 20, 30]; + let voters = vec![ + (2, vec![10, 20, 30]), + (4, vec![10, 20, 40]), + ]; + let stake_of = create_stake_of(&[ + (10, 1000), + (20, 1000), + (30, 1000), + (2, 50), + (4, 1000), + ]); + + run_and_compare(candidates, voters, stake_of, 2, 2); +} + +#[test] +fn phragmen_accuracy_on_large_scale_only_validators() { + // because of this particular situation we had per_u128 and now rational128. In practice, a + // candidate can have the maximum amount of tokens, and also supported by the maximum. + let candidates = vec![1, 2, 3, 4, 5]; + let stake_of = create_stake_of(&[ + (1, (u64::max_value() - 1).into()), + (2, (u64::max_value() - 4).into()), + (3, (u64::max_value() - 5).into()), + (4, (u64::max_value() - 3).into()), + (5, (u64::max_value() - 2).into()), + ]); + + let PhragmenResult { winners, assignments } = elect::<_, _, _, TestCurrencyToVote>( + 2, + 2, + candidates.clone(), + auto_generate_self_voters(&candidates), + stake_of, + ).unwrap(); + + assert_eq_uvec!(winners, vec![(1, 18446744073709551614u128), (5, 18446744073709551613u128)]); + assert_eq!(assignments.len(), 2); + check_assignments(assignments); +} + +#[test] +fn phragmen_accuracy_on_large_scale_validators_and_nominators() { + let candidates = vec![1, 2, 3, 4, 5]; + let mut voters = vec![ + (13, vec![1, 3, 5]), + (14, vec![2, 4]), + ]; + voters.extend(auto_generate_self_voters(&candidates)); + let stake_of = create_stake_of(&[ + (1, (u64::max_value() - 1).into()), + (2, (u64::max_value() - 4).into()), + (3, (u64::max_value() - 5).into()), + (4, (u64::max_value() - 3).into()), + (5, (u64::max_value() - 2).into()), + (13, (u64::max_value() - 10).into()), + (14, u64::max_value().into()), + ]); + + let PhragmenResult { winners, assignments } = elect::<_, _, _, TestCurrencyToVote>( + 2, + 2, + candidates, + voters, + stake_of, + ).unwrap(); + + assert_eq_uvec!(winners, vec![(2, 36893488147419103226u128), (1, 36893488147419103219u128)]); + assert_eq!( + assignments, + vec![ + (13, vec![(1, Perbill::one())]), + (14, vec![(2, Perbill::one())]), + (1, vec![(1, Perbill::one())]), + (2, vec![(2, Perbill::one())]), + ] + ); + check_assignments(assignments); +} + +#[test] +fn phragmen_accuracy_on_small_scale_self_vote() { + let candidates = vec![40, 10, 20, 30]; + let voters = auto_generate_self_voters(&candidates); + let stake_of = create_stake_of(&[ + (40, 0), + (10, 1), + (20, 2), + (30, 1), + ]); + + let PhragmenResult { winners, assignments: _ } = elect::<_, _, _, TestCurrencyToVote>( + 3, + 3, + candidates, + voters, + stake_of, + ).unwrap(); + + assert_eq_uvec!(winners, vec![(20, 2), (10, 1), (30, 1)]); +} + +#[test] +fn phragmen_accuracy_on_small_scale_no_self_vote() { + let candidates = vec![40, 10, 20, 30]; + let voters = vec![ + (1, vec![10]), + (2, vec![20]), + (3, vec![30]), + (4, vec![40]), + ]; + let stake_of = create_stake_of(&[ + (40, 1000), // don't care + (10, 1000), // don't care + (20, 1000), // don't care + (30, 1000), // don't care + (4, 0), + (1, 1), + (2, 2), + (3, 1), + ]); + + let PhragmenResult { winners, assignments: _ } = elect::<_, _, _, TestCurrencyToVote>( + 3, + 3, + candidates, + voters, + stake_of, + ).unwrap(); + + assert_eq_uvec!(winners, vec![(20, 2), (10, 1), (30, 1)]); +} + +#[test] +fn phragmen_large_scale_test() { + let candidates = vec![2, 4, 6, 8, 10, 12, 14, 16 ,18, 20, 22, 24]; + let mut voters = vec![ + (50, vec![2, 4, 6, 8, 10, 12, 14, 16 ,18, 20, 22, 24]), + ]; + voters.extend(auto_generate_self_voters(&candidates)); + let stake_of = create_stake_of(&[ + (2, 1), + (4, 100), + (6, 1000000), + (8, 100000000001000), + (10, 100000000002000), + (12, 100000000003000), + (14, 400000000000000), + (16, 400000000001000), + (18, 18000000000000000), + (20, 20000000000000000), + (22, 500000000000100000), + (24, 500000000000200000), + (50, 990000000000000000), + ]); + + let PhragmenResult { winners, assignments } = elect::<_, _, _, TestCurrencyToVote>( + 2, + 2, + candidates, + voters, + stake_of, + ).unwrap(); + + assert_eq_uvec!(winners, vec![(24, 1490000000000200000u128), (22, 1490000000000100000u128)]); + check_assignments(assignments); +} + +#[test] +fn phragmen_large_scale_test_2() { + let nom_budget: u64 = 1_000_000_000_000_000_000; + let c_budget: u64 = 4_000_000; + + let candidates = vec![2, 4]; + let mut voters = vec![(50, vec![2, 4])]; + voters.extend(auto_generate_self_voters(&candidates)); + + let stake_of = create_stake_of(&[ + (2, c_budget.into()), + (4, c_budget.into()), + (50, nom_budget.into()), + ]); + + let PhragmenResult { winners, assignments } = elect::<_, _, _, TestCurrencyToVote>( + 2, + 2, + candidates, + voters, + stake_of, + ).unwrap(); + + assert_eq_uvec!(winners, vec![(2, 1000000000004000000u128), (4, 1000000000004000000u128)]); + assert_eq!( + assignments, + vec![ + (50, vec![(2, Perbill::from_parts(500000001)), (4, Perbill::from_parts(499999999))]), + (2, vec![(2, Perbill::one())]), + (4, vec![(4, Perbill::one())]), + ], + ); + check_assignments(assignments); +} + +#[test] +fn phragmen_linear_equalize() { + let candidates = vec![11, 21, 31, 41, 51, 61, 71]; + let voters = vec![ + (2, vec![11]), + (4, vec![11, 21]), + (6, vec![21, 31]), + (8, vec![31, 41]), + (110, vec![41, 51]), + (120, vec![51, 61]), + (130, vec![61, 71]), + ]; + let stake_of = create_stake_of(&[ + (11, 1000), + (21, 1000), + (31, 1000), + (41, 1000), + (51, 1000), + (61, 1000), + (71, 1000), + + (2, 2000), + (4, 1000), + (6, 1000), + (8, 1000), + (110, 1000), + (120, 1000), + (130, 1000), + ]); + + run_and_compare(candidates, voters, stake_of, 2, 2); +} + +#[test] +fn elect_has_no_entry_barrier() { + let candidates = vec![10, 20, 30]; + let voters = vec![ + (1, vec![10]), + (2, vec![20]), + ]; + let stake_of = create_stake_of(&[ + (1, 10), + (2, 10), + ]); + + let PhragmenResult { winners, assignments: _ } = elect::<_, _, _, TestCurrencyToVote>( + 3, + 3, + candidates, + voters, + stake_of, + ).unwrap(); + + // 30 is elected with stake 0. The caller is responsible for stripping this. + assert_eq_uvec!(winners, vec![ + (10, 10), + (20, 10), + (30, 0), + ]); +} + +#[test] +fn minimum_to_elect_is_respected() { + let candidates = vec![10, 20, 30]; + let voters = vec![ + (1, vec![10]), + (2, vec![20]), + ]; + let stake_of = create_stake_of(&[ + (1, 10), + (2, 10), + ]); + + let maybe_result = elect::<_, _, _, TestCurrencyToVote>( + 10, + 10, + candidates, + voters, + stake_of, + ); + + assert!(maybe_result.is_none()); +} From f9a828bd9e6ab3308c1282890ba3cf9da16d9a9f Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Thu, 6 Feb 2020 16:43:49 +0800 Subject: [PATCH 09/17] remove: useless files --- bin/node/cli/browser-demo/.gitignore | 1 - bin/node/cli/browser-demo/README.md | 9 - bin/node/cli/browser-demo/build.sh | 3 - bin/node/cli/browser-demo/favicon.png | Bin 10338 -> 0 bytes bin/node/cli/browser-demo/index.html | 39 --- bin/node/cli/browser-demo/ws.js | 148 -------- bin/node/cli/doc/shell-completion.adoc | 41 --- frame/staking/reward-curve/Cargo.toml | 17 - frame/staking/reward-curve/src/lib.rs | 425 ----------------------- frame/staking/reward-curve/src/log.rs | 70 ---- frame/staking/reward-curve/tests/test.rs | 44 --- 11 files changed, 797 deletions(-) delete mode 100644 bin/node/cli/browser-demo/.gitignore delete mode 100644 bin/node/cli/browser-demo/README.md delete mode 100755 bin/node/cli/browser-demo/build.sh delete mode 100644 bin/node/cli/browser-demo/favicon.png delete mode 100644 bin/node/cli/browser-demo/index.html delete mode 100644 bin/node/cli/browser-demo/ws.js delete mode 100644 bin/node/cli/doc/shell-completion.adoc delete mode 100644 frame/staking/reward-curve/Cargo.toml delete mode 100644 frame/staking/reward-curve/src/lib.rs delete mode 100644 frame/staking/reward-curve/src/log.rs delete mode 100644 frame/staking/reward-curve/tests/test.rs diff --git a/bin/node/cli/browser-demo/.gitignore b/bin/node/cli/browser-demo/.gitignore deleted file mode 100644 index 0c6117d9f..000000000 --- a/bin/node/cli/browser-demo/.gitignore +++ /dev/null @@ -1 +0,0 @@ -pkg \ No newline at end of file diff --git a/bin/node/cli/browser-demo/README.md b/bin/node/cli/browser-demo/README.md deleted file mode 100644 index 2ff1cc54f..000000000 --- a/bin/node/cli/browser-demo/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# How to run this demo - -```sh -cargo install wasm-pack # If necessary - -wasm-pack build --target web --out-dir ./browser-demo/pkg --no-typescript --release ./.. -- --no-default-features --features "browser" - -xdg-open index.html -``` diff --git a/bin/node/cli/browser-demo/build.sh b/bin/node/cli/browser-demo/build.sh deleted file mode 100755 index c16100794..000000000 --- a/bin/node/cli/browser-demo/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env sh -wasm-pack build --target web --out-dir ./browser-demo/pkg --no-typescript --release ./.. -- --no-default-features --features "browser" -python -m SimpleHTTPServer 8000 diff --git a/bin/node/cli/browser-demo/favicon.png b/bin/node/cli/browser-demo/favicon.png deleted file mode 100644 index 8a4548ce34dfa220f612080820cfde778a39cb8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10338 zcmYLP1yoaS+(wZQfk{a_5mcmyv>+u2qR5bj(d7VXk&w|jQbIxLPKhB5DS^?QA~Be> zGziGpzKj3wJKu9I=j@F4zQ5;ve)Zn>E>cVL2@Mq+6$uFmjk?-nZ4#18f){_3q`)_D zIm|2x$>n3MXF4jp|8W2QeLg-uetv!d0RcflK_MX_VPRnr5fKOg(F;6y@IXvVOdNoO zxP*j+q@<*jl$1088EF|AnTHP_$^wwPz@tZxgej~>gnm} z128Z!Ff=eUG&BNWY;0^|YyvZZ!CuI668y0eJoTwX?Ici?fT1iz@&(H#c`TcMo?D0G^(nZ{ED| zdgJxh>n#9pZ*LzTA739|KVLrp@7}%h_xDHmBLWbJfPjF&z`&rOpx~h3kl^5ukdV;O z(6G?3@UZZR@bHL;h{(vusK}`3sAyz#G!lu7iHV7giH(bmjf;zmkB?7CNJvabe4m*3 z{{8!;q@?8JF(<4>F)0B z>FMq5?d$FB@9P`r?;ji(7#tiN8XO!R8X6fM9vvAO9UU1P9UUJVn;0LToR|QvsmaOd zsi_~+(=$JQ0N2l%nc1H|=VoW;=jMQGVSXOFu&{{5E-qr178h|#OTTcqVf>&8^?Rx3{)-wzqe8cJ_96_xJV=_64TdJb+BN zWTYh5ft@eU`+KYNcD5M{XM?7``7t`@lo-?TqSWw8gC-HkVTpdIuznK{@L`HO%;X5( z5npN=E#+pjd4(c{(Js@-utc}8IBqBXov{8J_{6U^N!lLFkfj7X+1Fy7)$nv6ImVJx z?szijH$G>mSslenblh}AbvmYNFFMuu+U?xF-Dm5u5_I5ROAA7tIsQ2E6d|K5sIz3o$M{LPA|;*R$&mtt|s+o)K?&I~!SYvz&J zUjGn_sjC7^uk`#E;;Xr=-rLo|&?ll9?E9Uu(VJyPzH$BsT7&NGlLW6TR_SA&1=Hth zH8Lf7gWmae?sYz$?uc)d5dX5%++|DERP^5_&yI&);?}a0md`rJgIP==`wy$!v|#5c z&PU@1@^-S5*fhaDO>_Vkv{5(3*Cv`tK>c25fgh(yJ8=3!h%%D1ycF^bWcTT#@|8 z-)Tz2MKd0Ldz^G$1?7bGt;T#B60MjA<6Zc1=3kZ>m@KuSu(?x?<82xa9Q;AErED;w zyTu~iV6?Jgn<3iNnpJ<%N#3t@5v+M?f_LV56HWV`prv&-4)+-PDS%@`+qRQYcl{Ps zPLiMDcrs09FDO6)BPG!!%ryYCh&LY+fCHHupIijy~r}< zAD8;VY8TXy>PTNoj$4g2;qB1WLnb|kqx|;CVqKSEP2Q)G$ko3>H-0*IEU1)c(kVTY z`r_lC4}Zx|4D&L?cz&-I%w?enme1tvsMmYz?s-7Vb%XOItVPGO*z@VS+Mq;X`?wn| zad@{v6gqQF-fJdR$r1nVXvA$IS1)yn1(RRqAOx(Jm4L$Tg60jSnj8f!zB|eOnT8bIQ!mi=P?1()@I&* zOct9!6~1Ek-iT($r;vHIVNB2YTZDzl=fddy7Au0q&WMdte>-IKOJ&DuaJ6drr^Raq zSkvRL2AGLM;l?Wf|I;lQu4W8Gd(Xsf;xFzUnPJXkc8#igt6Ue_6d$Gp(dWA7hNTcvXf2m>OAJxw3PMweYvTYuO3RHmQD4iG7xToc z3Cu-aNpHyzn;@gG&aKumM(=??$YPP&43== z-J_r-ig=)MnPL;r{pNy1Q9Xz0%e3{Y2F%xH-%oamRD5!8rnBUXO`!d_WglwA^O5T+ z&j`muuj83ASAIr z{u6YDe`V*Ue!1pL@T%W^nMvKz_j{kLU>t<(K59S_wuR%|+)Ky=w?R{W)Ke{0_7~-M zLH)me*SifGe%&^~=+JsUaXF!|fqg(|odmZ+Mzas{^dfuhaYf0#iuWD5Jm0Fbh9lx9 z#mgB8#i@?gtf?JfKm)*VLK#vb%&2K~7E`kJE+>d|Tm2#?M$vURmUX)q*MP{t&Xn&r zw1H9M5-+%EudZwJvv6;{>k8eM))9n`ZpMEExv?=zPj-?VCwczU+eS)tX4Tm(o%A$(cELHx zsEws~$`57#yey??x~Evu^$pC7+T#DIYAk{-XL57Ys6~-j<&k3Uw=;g_(T`qMe|N)q z^eYFhI2;MZnlQV^h2kD;Q!3$Uxbwg&Lv^1C0Nw0}jjDU~KqV!eMP09zyfP}3E zraWBw0p|5R>3jwRuo!{F3UK6Apt&N%?H2yU3flg)4^4zrb!o zX2L-FSnL#odt_oX3iP&5={w%q;5NosK@TTYSW_>58GZ5!G=l~T$=SQp9ejW$&WP}Y zm~WXhg3;9&>R>%yY63ExdFBU^$YrKC86_oe?cG*zxlOz)iQYm^Rn-AB%8yG z)n*Q|^sKDch)zS&1~y$!#YhPF=XO@^P8k+tZVEYMwrZEx9uTuw=KZ0C8T!@ccZ_FP z2N+1+-OY{FDoq@HNxof9m(TFz><`am223(g%ac*nnbQAsiVe&%liM*7D405LHBwm2obNuo@ zc22Mm*Y(QtZ~PORR8~AO@)28+PyZUimthUkC!LSToCY{Ib7CBHY^r{1NIJnDBgfY= zx`L-X`^0al!b|tU>+#AQsD99(EkLuXBI@3{gn#n*?Lm$tPddz1!45S(+tbCk86;| z@OONiC{M^q_!px;8SiJ%lsIjL)a!lCOdN#8)Pv!~LHUS2o`b#ATsv*MAj{F7J7t_x z&6R9MKR|sbPdZ5AW%ReI1I;fe`@PElTKSn!dr1FhP}P>3IyHo5r(P)x>hDT>5!9de z8@Obmfb3Y%1H#H5H7*`VJ&`sXCd1H?{%tLJviJS{&D%(g%P>L!BoPBPN9u?f5`F)$ zL>5klKWQ&6f=$^p42$q#W*s(;{+do^IZ_(st_x;1?tWDkLCeab!u^2 z&)mX;Mj{%M+&n+?*7Y^o6N*_D!g#}rsnu^%2eI@#Y$Jov>ujPlUHIUkS6L#snNKjf z-hxDE<`=*n%hlb_P_d?YsUEjf_jduUZQ?EM>6LfTB(d4uazpil5mKcerzO4!-Bxuo z{Iy#@^~WRqDv+(e7S@DRT#!iyf~g%^xL4@XhTF%~IPF&5ztUL;^Y>eBA^BH-SMn3X zCz%Wvw;lr95h-09=#%J79=w4kjO|*h$FD#)HlmAB2kXI%WT5M-8`84B`9*`~aV?^(keUP2oy7TRE`)8|@aMN@)Ip5pHk3p6~-V?0sQ6JAb3BjF<&S{ zjXjelPp=iD;bfff3a{wc%yzS5?=(E*Kf3&p>$T~>P)iPx?T&6XJ|BNaN zezd57S8i|oKMI_|?J4_+-x^>lG_I+A4Y6Mk;VkTajIHiow16duH<r1S+d5iSMp8kekul)g>V zo^;v@D^e{x&wm&mF}QSwa{`DT)m-@7Y*k3*pB$p66u{J=PV-@wUSU6+w#uKk25lKZ z#$p};C*kk)f!$qvW}p!nIdS)qI45(b3ppGRl;T_H3w`IBez|%PmzqjEfk3rj5j&9qU?7EoZZQVed@X zk!v1)ZBkMU9XF8wzOUVQLi!8**Dr)t@NoO6n6JmL!;K0-sfk#B%{Z?&12<`4c8nS> znf*9K?C+YmFUKf$xF1)IgryKk3=0S5-F`TDtl5ImK z7JHbwt(v{*O{P1hA!B(*-viWjorqlo1t8)juWcx%jwqpC3tRWAMD&aoXiOcH^i2Dt zwNL2TcP<+-FM-)iYREW@)?8=lcSPuuMr`Bby?Mj(ApR@+T*x zxk!mBqt68gyA-e?{%};G_u%iAXOTu1QR{t}o47o+X*5$aA^+~Xj zdE|rod<0~m$f%wn6H;2i*_wJu*|;dr7#~^GWkTS#>OWQJxQkPM%}cbYm-^OIOa>tA z2@$K`ojV#;K`ruc`3!y)*lrJ}I`h_`OGE7LQ9L4EHxmSP zlAHuDLG}M`w)U@=X^6GW&z+rE@KOm7;gpEoQ;H?c<02}H zO`rZ6p;sp1%?|hK$^H0%7SqW5O_EiI+a^b^RepGmSN2A55JV{IHmTEQ)l21==wD7= z$zjy?I$bm+tZ5S=)Tt=1}hv&o0(7>d8$J?8pX+ob=(xmYl| zMNX)}=w{TVU5a2t)?T;=s%#T7g#M1vjfDIAboiJ=B#A!i5+mN?Z)Uj2aj_Uc8A=4D zt_t17I6ij$1rf+j8VCzE`g?Pa-kY(I4;Z+dNf>=TKuQP5^FpYsz9mPb)F4 z_~1Bs62juii;}xs+|D@46N&)&Jg1!862Ea5E1pum4~BzQzdc^Lef4g?iL{54d1)ekjGW%G=kBN{{>7f(A@AESh zws(It?_Z?=@)bg_7yUbeX&01L*zh%S-usEgU#i~kP1397xT$#5yLkk$JGVZoiYX#N6wTjDe0+<= zDqK1>Vw-h4P`qMIu3F~{|F+*ng?dDY*Sl|+4=2Nu+N&-)P25E37wk$$vOe{uxO(KH{M>V*J+k@h7LVHO8S(6?VA$k-hW- z)!xT~|B=Hhvk|a}#j5n$U({yCr>@4Ae_B2x!rfL`X5@+WS%4KUXSJV)%=3e23ErjF&4oT3II(28 zilyjGnL7?~tI|W>`%W&u4I{!zIouE5W?GxweB~Wp(eHt*s)f!)dR}T}DKljpTx+<) z*8|b#>7>(TtDBnW0?NVg16~z$qs6BM`AHb`5s}0v?SU`!14Mf!Xv}y^Rqy3b)2aD+ z)ASYatg4RdN%$2w=Q-Ckg!ysKF29e)?L-dL``(sEIcYP0&~>as#g9eVp}>}48t_H? z1MA~(zc_?~`yQW9W$(37GApS@k4#z-SnEFe?+K}W2b);VjK{0jC28YSCln-BF22zE zgp_nH@ox_;AJpDm;)eUe)c;%tSj0!oQ{t%9vY!I8 z`CQb2pzf4kV5-;i&^uRI>yg1fqc7_o{>AFQovw&o7nyMGc)AB7r&ZVo6_!^335fw~ z)5sAnp~Q~)e9Bq1=a+4uOkN}NOE{1Y_vCfB(mrr17t~cHfchXpzM(R5?&M_hhx&e$ zOWirE+dma9VRZi7yDTljKL29#gNfiUG6=A!fB43ylW@muFEb^%Ji1Mu#rR$n0vLjj z5INmooLwK>QVHbuNqpjXZB^^0P%%h0S3~~_(vPgJvfwE zI-C$7aJ6Fkz}$mN)cCf+X4{GzHOyqWIbY9zQQD+@V%=-m_OJiw3%yCjQZ6daxDmQi@*}hl#aTA3`tqL~8eA}EQe!+`xl-GoeeW0C)fbudU=5#2R`V^2@^57+drNm*UV*Rj5*M~cACs;27*+6qTy_~E*30| zqbTPqbez?^W0S3vjf+?K?rC_%0~MfS7aPr*G8R|-P5xqrWFPNTU15d_-yakO3Xz8; z%`U|aV!Rf>f~tiz^c^46G2zH_iwVV1YNBFOYngvSL5lb?pP@x|!Qe#C_6g*+vCXup z{unxfs)<~YUoR1{%b#$9SH6q_HYv#y(cg{l{xF6*V9c?>Bw9zsLERp?6A?sNrcRlYr&fNT{! z215#S8n2At+q1AYfm4`W(Yy}$mh~d&6;son5iXBEuMsdg(eI;{p-@$g<_c4!wPeMcg|MGg+Mf+#He`bkB0JK?yOdM)^>*-wWlKS~ZY^}CxTk=m+XrO$n#1d=KGAr}9DCGkX;n~cL zDF_M`q}N)K*tu=;Ql^lX zO*^w2q1caWX{NV__76zh{g^m~!e8g0&Hz?ehw%qmeXyNd__k&6?lVBMAa0kN*EhiI zpV!hPN9g_O#4Ler5x`s`H_I5B=SR3S__#%4d>}|w-d=}`106ZJ&79qO^#Bw(aY5(@ zlYQ2IgyOv?m+6l9M;z1+ZVL4ZQ{w|W<#}}aj4w=WsRr8RIQaDVnCA9D43tHkbL3k4 z;|=i2qNv#;+V5c53oBEHLZqzPM6q$q<%%>|)YTSBwyOQpa2~k#0B^=$*6Ecsd)A@H zooc@Zf(Cih68~7LNXlQGd#rI1Y6$OK0WXyEme7s_~KB=N(@`=eq zzYzbu6%3r{x=!p*KBPpr{HM0l*ai} zIxOfWkwl%ElRH83T3A`>vmc#b!nyf{lq5%H&TrdyJUsw4Ee!D-Tup-xPcGXTedy4F z(0kWp`JG`F|4X#LfZ|&C;M-!NT73?xfx8r6*~#ugJdlTu4!Z`BzWNW6BWx$6o$~do zE|WX!1JB6Cv9LquJ(T;m`4)zM|_~#mMGJ9-mtW|6|hKTHr%Hto$LtM zWBQKu>YUsZ`Yw!&wpS-`McjX&(H-FFJ;&>Ek4jfnW5uw-w*itk2b|cF0lDaJfdw%V z%~i3H6ElH(7ksuKS7q|$zRM?_HS1w{H8Jq#?ox&4Y2=MXW{gTLqX%|^YkkjN8)Xzn zdJ^0v->S)oF7P@fISIWJ?elf+!@{~xNlvO4L%A!RV2^yrFsCmz0~(dRlIx0$vj7N; zY0L{0g(DNz(#hH{%tN{iy6R1%)mkXY;{KG{pFb-5)GEh-GQkB& zx&jfu4{V*Sq0T>=vO*@m0HP=z#acB z8oz&y6p;m_qRm}oBbdH4zY!Y$nYY$k?%Jj|%D9^)ve{6?8kS`Cp^ZCRvA%=!Vy00% zDZv3S2Rs|n7>;YC9E6oe??-Fxs!60 zScE(sGsk9_2mj%jxlN zbW2lKz;~6dD|f0L0x90?TAa@#HIO}^k+wCg*c>U3ZEgBHF)H3feO>v+(QSO2S~u^1 zYs8J~A}?>J>1gbM*!O6fstcv<%L_3U)Gj*$xuF6UEZJ{DL|iH_p%{q@D~3M2gg`)O zN3$d|mW$L20ge~zrvi)yn1~9?K(440E-ixG4nGO=1(=1%MEs=To>gTc-xklF3>>Oq zgB}t{aG>7ijI!&(v|Q)k>myRckXq5Ez!c;6s)l%{Bb1KB5EbJ1LTlEou5<0qe^zW* z2y(S2+u@mxs|;JFiHI!c8{@bn-M_YNmm4owka3EM0Vm4!z`IxFsV}<}tlY`OfmJ-}<4~#C%tg;VaDcg59pyYHfOUbyeuwzW2E zg;`@kNfyAW`lD>(0L{&@pyFn5ZaUdH?UF*U%iPiT+>#CbVtCU(5xM}8kLy>Xw5G?q+ z=hO$LJ~osa53#is%tIu3edF+91j7VN?>*qAOxmKQg(9{Ictd=sJTJjQv@%#~2@L$> za1La6{QAgPc2VKmK*MVX4t$^}Qfp59-LdlIj$clfI{(N(P}{q0G2-=R%^NkAs2Amf zl~#C*TE*=jG~6a$&lk?M9!@0UNjt#QZgC?2d+U~t#*9ADb3~CYbKzcXOM> zkA2Oy&4tvpKWYL7{IsB&eO7?QB#NClnuE^Q+rE>oM^gZnhG&}tH=n_eU>w&F5r|jN z&)S>4Rajd^21HicpWl%WGY?(S-W24olWU%oE}Le>3JaF#^CRUWn17ykjP<}#-(#X5 zZ6CjX!J9rILttow&%CTmd4RsEHE>Gemslzw7k;P;)7p)oVksZ4oj z6yqEBqrS+rd_4c)?~QA-%jKAfUd@KIRhb3jdR@(!=wy_c35+n#+jzHDU#~B@SG8(m zIqHsHlTp=pNh*J=!I4`heW_`Mf#t*|lSZje!&0PfrM^J<22=3Ub9ueM)Z0O2WjVkv PrbyIPG#^(enFsw3U`DIs diff --git a/bin/node/cli/browser-demo/index.html b/bin/node/cli/browser-demo/index.html deleted file mode 100644 index cf107e645..000000000 --- a/bin/node/cli/browser-demo/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Substrate node - - - - - diff --git a/bin/node/cli/browser-demo/ws.js b/bin/node/cli/browser-demo/ws.js deleted file mode 100644 index fa7a499a8..000000000 --- a/bin/node/cli/browser-demo/ws.js +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright 2019 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 . - -export default () => { - return { - dial: dial, - listen_on: (addr) => { - let err = new Error("Listening on WebSockets is not possible from within a browser"); - err.name = "NotSupportedError"; - throw err; - }, - }; -} - -/// Turns a string multiaddress into a WebSockets string URL. -// TODO: support dns addresses as well -const multiaddr_to_ws = (addr) => { - let parsed = addr.match(/^\/(ip4|ip6|dns4|dns6)\/(.*?)\/tcp\/(.*?)\/(ws|wss|x-parity-ws\/(.*)|x-parity-wss\/(.*))$/); - let proto = 'wss'; - if (parsed[4] == 'ws' || parsed[4] == 'x-parity-ws') { - proto = 'ws'; - } - let url = decodeURIComponent(parsed[5] || parsed[6] || ''); - if (parsed != null) { - if (parsed[1] == 'ip6') { - return proto + "://[" + parsed[2] + "]:" + parsed[3] + url; - } else { - return proto + "://" + parsed[2] + ":" + parsed[3] + url; - } - } - - let err = new Error("Address not supported: " + addr); - err.name = "NotSupportedError"; - throw err; -} - -// Attempt to dial a multiaddress. -const dial = (addr) => { - let ws = new WebSocket(multiaddr_to_ws(addr)); - let reader = read_queue(); - - return new Promise((resolve, reject) => { - // TODO: handle ws.onerror properly after dialing has happened - ws.onerror = (ev) => reject(ev); - ws.onmessage = (ev) => reader.inject_blob(ev.data); - ws.onclose = () => reader.inject_eof(); - ws.onopen = () => resolve({ - read: (function*() { while(ws.readyState == 1) { yield reader.next(); } })(), - write: (data) => { - if (ws.readyState == 1) { - ws.send(data); - return promise_when_ws_finished(ws); - } else { - return Promise.reject("WebSocket is closed"); - } - }, - shutdown: () => {}, - close: () => ws.close() - }); - }); -} - -// Takes a WebSocket object and returns a Promise that resolves when bufferedAmount is 0. -const promise_when_ws_finished = (ws) => { - if (ws.bufferedAmount == 0) { - return Promise.resolve(); - } - - return new Promise((resolve, reject) => { - setTimeout(function check() { - if (ws.bufferedAmount == 0) { - resolve(); - } else { - setTimeout(check, 100); - } - }, 2); - }) -} - -// Creates a queue reading system. -const read_queue = () => { - // State of the queue. - let state = { - // Array of promises resolving to `ArrayBuffer`s, that haven't been transmitted back with - // `next` yet. - queue: new Array(), - // If `resolve` isn't null, it is a "resolve" function of a promise that has already been - // returned by `next`. It should be called with some data. - resolve: null, - }; - - return { - // Inserts a new Blob in the queue. - inject_blob: (blob) => { - if (state.resolve != null) { - var resolve = state.resolve; - state.resolve = null; - - var reader = new FileReader(); - reader.addEventListener("loadend", () => resolve(reader.result)); - reader.readAsArrayBuffer(blob); - } else { - state.queue.push(new Promise((resolve, reject) => { - var reader = new FileReader(); - reader.addEventListener("loadend", () => resolve(reader.result)); - reader.readAsArrayBuffer(blob); - })); - } - }, - - // Inserts an EOF message in the queue. - inject_eof: () => { - if (state.resolve != null) { - var resolve = state.resolve; - state.resolve = null; - resolve(null); - } else { - state.queue.push(Promise.resolve(null)); - } - }, - - // Returns a Promise that yields the next entry as an ArrayBuffer. - next: () => { - if (state.queue.length != 0) { - return state.queue.shift(0); - } else { - if (state.resolve !== null) - throw "Internal error: already have a pending promise"; - return new Promise((resolve, reject) => { - state.resolve = resolve; - }); - } - } - }; -}; diff --git a/bin/node/cli/doc/shell-completion.adoc b/bin/node/cli/doc/shell-completion.adoc deleted file mode 100644 index 8afbd37ad..000000000 --- a/bin/node/cli/doc/shell-completion.adoc +++ /dev/null @@ -1,41 +0,0 @@ - -== Shell completion - -The Substrate cli command supports shell auto-completion. For this to work, you will need to run the completion script matching you build and system. - -Assuming you built a release version using `cargo build --release` and use `bash` run the following: - -[source, shell] -source target/release/completion-scripts/substrate.bash - -You can find completion scripts for: -- bash -- fish -- zsh -- elvish -- powershell - -To make this change persistent, you can proceed as follow: - -.First install - -[source, shell] ----- -COMPL_DIR=$HOME/.completion -mkdir -p $COMPL_DIR -cp -f target/release/completion-scripts/substrate.bash $COMPL_DIR/ -echo "source $COMPL_DIR/substrate.bash" >> $HOME/.bash_profile -source $HOME/.bash_profile ----- - -.Update - -When you build a new version of Substrate, the following will ensure you auto-completion script matches the current binary: - -[source, shell] ----- -COMPL_DIR=$HOME/.completion -mkdir -p $COMPL_DIR -cp -f target/release/completion-scripts/substrate.bash $COMPL_DIR/ -source $HOME/.bash_profile ----- diff --git a/frame/staking/reward-curve/Cargo.toml b/frame/staking/reward-curve/Cargo.toml deleted file mode 100644 index 0353476a9..000000000 --- a/frame/staking/reward-curve/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "pallet-staking-reward-curve" -version = "2.0.0" -authors = ["Parity Technologies "] -edition = "2018" - -[lib] -proc-macro = true - -[dependencies] -syn = { version = "1.0.7", features = ["full", "visit"] } -quote = "1.0" -proc-macro2 = "1.0.6" -proc-macro-crate = "0.1.4" - -[dev-dependencies] -sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" } diff --git a/frame/staking/reward-curve/src/lib.rs b/frame/staking/reward-curve/src/lib.rs deleted file mode 100644 index 89a1980d1..000000000 --- a/frame/staking/reward-curve/src/lib.rs +++ /dev/null @@ -1,425 +0,0 @@ -extern crate proc_macro; - -mod log; - -use log::log2; -use proc_macro::TokenStream; -use proc_macro2::{TokenStream as TokenStream2, Span}; -use proc_macro_crate::crate_name; -use quote::{quote, ToTokens}; -use std::convert::TryInto; -use syn::parse::{Parse, ParseStream}; - -/// Accepts a number of expressions to create a instance of PiecewiseLinear which represents the -/// NPoS curve (as detailed -/// [here](http://research.web3.foundation/en/latest/polkadot/Token%20Economics/#inflation-model)) -/// for those parameters. Parameters are: -/// - `min_inflation`: the minimal amount to be rewarded between validators, expressed as a fraction -/// of total issuance. Known as `I_0` in the literature. -/// Expressed in millionth, must be between 0 and 1_000_000. -/// -/// - `max_inflation`: the maximum amount to be rewarded between validators, expressed as a fraction -/// of total issuance. This is attained only when `ideal_stake` is achieved. -/// Expressed in millionth, must be between min_inflation and 1_000_000. -/// -/// - `ideal_stake`: the fraction of total issued tokens that should be actively staked behind -/// validators. Known as `x_ideal` in the literature. -/// Expressed in millionth, must be between 0_100_000 and 0_900_000. -/// -/// - `falloff`: Known as `decay_rate` in the literature. A co-efficient dictating the strength of -/// the global incentivisation to get the `ideal_stake`. A higher number results in less typical -/// inflation at the cost of greater volatility for validators. -/// Expressed in millionth, must be between 0 and 1_000_000. -/// -/// - `max_piece_count`: The maximum number of pieces in the curve. A greater number uses more -/// resources but results in higher accuracy. -/// Must be between 2 and 1_000. -/// -/// - `test_precision`: The maximum error allowed in the generated test. -/// Expressed in millionth, must be between 0 and 1_000_000. -/// -/// # Example -/// -/// ``` -/// # fn main() {} -/// use sp_runtime::curve::PiecewiseLinear; -/// -/// pallet_staking_reward_curve::build! { -/// const I_NPOS: PiecewiseLinear<'static> = curve!( -/// min_inflation: 0_025_000, -/// max_inflation: 0_100_000, -/// ideal_stake: 0_500_000, -/// falloff: 0_050_000, -/// max_piece_count: 40, -/// test_precision: 0_005_000, -/// ); -/// } -/// ``` -#[proc_macro] -pub fn build(input: TokenStream) -> TokenStream { - let input = syn::parse_macro_input!(input as INposInput); - - let points = compute_points(&input); - - let declaration = generate_piecewise_linear(points); - let test_module = generate_test_module(&input); - - let imports = match crate_name("sp-runtime") { - Ok(sp_runtime) => { - let ident = syn::Ident::new(&sp_runtime, Span::call_site()); - quote!( extern crate #ident as _sp_runtime; ) - }, - Err(e) => syn::Error::new(Span::call_site(), &e).to_compile_error(), - }; - - let const_name = input.ident; - let const_type = input.typ; - - quote!( - const #const_name: #const_type = { - #imports - #declaration - }; - #test_module - ).into() -} - -const MILLION: u32 = 1_000_000; - -mod keyword { - syn::custom_keyword!(curve); - syn::custom_keyword!(min_inflation); - syn::custom_keyword!(max_inflation); - syn::custom_keyword!(ideal_stake); - syn::custom_keyword!(falloff); - syn::custom_keyword!(max_piece_count); - syn::custom_keyword!(test_precision); -} - -struct INposInput { - ident: syn::Ident, - typ: syn::Type, - min_inflation: u32, - ideal_stake: u32, - max_inflation: u32, - falloff: u32, - max_piece_count: u32, - test_precision: u32, -} - -struct Bounds { - min: u32, - min_strict: bool, - max: u32, - max_strict: bool, -} - -impl Bounds { - fn check(&self, value: u32) -> bool { - let wrong = (self.min_strict && value <= self.min) - || (!self.min_strict && value < self.min) - || (self.max_strict && value >= self.max) - || (!self.max_strict && value > self.max); - - !wrong - } -} - -impl core::fmt::Display for Bounds { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - write!( - f, - "{}{:07}; {:07}{}", - if self.min_strict { "]" } else { "[" }, - self.min, - self.max, - if self.max_strict { "[" } else { "]" }, - ) - } -} - -fn parse_field(input: ParseStream, bounds: Bounds) - -> syn::Result -{ - ::parse(&input)?; - ::parse(&input)?; - let value_lit = syn::LitInt::parse(&input)?; - let value: u32 = value_lit.base10_parse()?; - if !bounds.check(value) { - return Err(syn::Error::new(value_lit.span(), format!( - "Invalid {}: {}, must be in {}", Token::default().to_token_stream(), value, bounds, - ))); - } - - Ok(value) -} - -impl Parse for INposInput { - fn parse(input: ParseStream) -> syn::Result { - let args_input; - - ::parse(&input)?; - let ident = ::parse(&input)?; - ::parse(&input)?; - let typ = ::parse(&input)?; - ::parse(&input)?; - ::parse(&input)?; - ::parse(&input)?; - syn::parenthesized!(args_input in input); - ::parse(&input)?; - - if !input.is_empty() { - return Err(input.error("expected end of input stream, no token expected")); - } - - let min_inflation = parse_field::(&args_input, Bounds { - min: 0, - min_strict: true, - max: 1_000_000, - max_strict: false, - })?; - ::parse(&args_input)?; - let max_inflation = parse_field::(&args_input, Bounds { - min: min_inflation, - min_strict: true, - max: 1_000_000, - max_strict: false, - })?; - ::parse(&args_input)?; - let ideal_stake = parse_field::(&args_input, Bounds { - min: 0_100_000, - min_strict: false, - max: 0_900_000, - max_strict: false, - })?; - ::parse(&args_input)?; - let falloff = parse_field::(&args_input, Bounds { - min: 0_010_000, - min_strict: false, - max: 1_000_000, - max_strict: false, - })?; - ::parse(&args_input)?; - let max_piece_count = parse_field::(&args_input, Bounds { - min: 2, - min_strict: false, - max: 1_000, - max_strict: false, - })?; - ::parse(&args_input)?; - let test_precision = parse_field::(&args_input, Bounds { - min: 0, - min_strict: false, - max: 1_000_000, - max_strict: false, - })?; - >::parse(&args_input)?; - - if !args_input.is_empty() { - return Err(args_input.error("expected end of input stream, no token expected")); - } - - Ok(Self { - ident, - typ, - min_inflation, - ideal_stake, - max_inflation, - falloff, - max_piece_count, - test_precision, - }) - } -} - -struct INPoS { - i_0: u32, - i_ideal_times_x_ideal: u32, - i_ideal: u32, - x_ideal: u32, - d: u32, -} - -impl INPoS { - fn from_input(input: &INposInput) -> Self { - INPoS { - i_0: input.min_inflation, - i_ideal: (input.max_inflation as u64 * MILLION as u64 / input.ideal_stake as u64) - .try_into().unwrap(), - i_ideal_times_x_ideal: input.max_inflation, - x_ideal: input.ideal_stake, - d: input.falloff, - } - } - - fn compute_opposite_after_x_ideal(&self, y: u32) -> u32 { - if y == self.i_0 { - return u32::max_value(); - } - let log = log2(self.i_ideal_times_x_ideal - self.i_0, y - self.i_0); - - let term: u32 = ((self.d as u64 * log as u64) / 1_000_000).try_into().unwrap(); - - self.x_ideal + term - } -} - -fn compute_points(input: &INposInput) -> Vec<(u32, u32)> { - let inpos = INPoS::from_input(input); - - let mut points = vec![]; - points.push((0, inpos.i_0)); - points.push((inpos.x_ideal, inpos.i_ideal_times_x_ideal)); - - // For each point p: (next_p.0 - p.0) < segment_lenght && (next_p.1 - p.1) < segment_lenght. - // This ensures that the total number of segment doesn't overflow max_piece_count. - let max_length = (input.max_inflation - input.min_inflation + 1_000_000 - inpos.x_ideal) - / (input.max_piece_count - 1); - - let mut delta_y = max_length; - let mut y = input.max_inflation; - - // The algorithm divide the curve in segment with vertical len and horizontal len less - // than `max_length`. This is not very accurate in case of very consequent steep. - while delta_y != 0 { - let next_y = y - delta_y; - - if next_y <= input.min_inflation { - delta_y = delta_y.saturating_sub(1); - continue - } - - let next_x = inpos.compute_opposite_after_x_ideal(next_y); - - if (next_x - points.last().unwrap().0) > max_length { - delta_y = delta_y.saturating_sub(1); - continue - } - - if next_x >= 1_000_000 { - let prev = points.last().unwrap(); - // Compute the y corresponding to x=1_000_000 using the this point and the previous one. - - let delta_y: u32 = ( - (next_x - 1_000_000) as u64 - * (prev.1 - next_y) as u64 - / (next_x - prev.0) as u64 - ).try_into().unwrap(); - - let y = next_y + delta_y; - - points.push((1_000_000, y)); - return points; - } - points.push((next_x, next_y)); - y = next_y; - } - - points.push((1_000_000, inpos.i_0)); - - points -} - -fn generate_piecewise_linear(points: Vec<(u32, u32)>) -> TokenStream2 { - let mut points_tokens = quote!(); - - let max = points.iter() - .map(|&(_, x)| x) - .max() - .unwrap_or(0) - .checked_mul(1_000) - // clip at 1.0 for sanity only since it'll panic later if too high. - .unwrap_or(1_000_000_000); - - for (x, y) in points { - let error = || panic!(format!( - "Generated reward curve approximation doesn't fit into [0, 1] -> [0, 1] \ - because of point: - x = {:07} per million - y = {:07} per million", - x, y - )); - - let x_perbill = x.checked_mul(1_000).unwrap_or_else(error); - let y_perbill = y.checked_mul(1_000).unwrap_or_else(error); - - points_tokens.extend(quote!( - ( - _sp_runtime::Perbill::from_parts(#x_perbill), - _sp_runtime::Perbill::from_parts(#y_perbill), - ), - )); - } - - quote!( - _sp_runtime::curve::PiecewiseLinear::<'static> { - points: & [ #points_tokens ], - maximum: _sp_runtime::Perbill::from_parts(#max), - } - ) -} - -fn generate_test_module(input: &INposInput) -> TokenStream2 { - let inpos = INPoS::from_input(input); - - let ident = &input.ident; - let precision = input.test_precision; - let i_0 = inpos.i_0 as f64/ MILLION as f64; - let i_ideal_times_x_ideal = inpos.i_ideal_times_x_ideal as f64 / MILLION as f64; - let i_ideal = inpos.i_ideal as f64 / MILLION as f64; - let x_ideal = inpos.x_ideal as f64 / MILLION as f64; - let d = inpos.d as f64 / MILLION as f64; - let max_piece_count = input.max_piece_count; - - quote!( - #[cfg(test)] - mod __pallet_staking_reward_curve_test_module { - fn i_npos(x: f64) -> f64 { - if x <= #x_ideal { - #i_0 + x * (#i_ideal - #i_0 / #x_ideal) - } else { - #i_0 + (#i_ideal_times_x_ideal - #i_0) * 2_f64.powf((#x_ideal - x) / #d) - } - } - - const MILLION: u32 = 1_000_000; - - #[test] - fn reward_curve_precision() { - for &base in [MILLION, u32::max_value()].into_iter() { - let number_of_check = 100_000.min(base); - for check_index in 0..=number_of_check { - let i = (check_index as u64 * base as u64 / number_of_check as u64) as u32; - let x = i as f64 / base as f64; - let float_res = (i_npos(x) * base as f64).round() as u32; - let int_res = super::#ident.calculate_for_fraction_times_denominator(i, base); - let err = ( - (float_res.max(int_res) - float_res.min(int_res)) as u64 - * MILLION as u64 - / float_res as u64 - ) as u32; - if err > #precision { - panic!(format!("\n\ - Generated reward curve approximation differ from real one:\n\t\ - for i = {} and base = {}, f(i/base) * base = {},\n\t\ - but approximation = {},\n\t\ - err = {:07} millionth,\n\t\ - try increase the number of segment: {} or the test_error: {}.\n", - i, base, float_res, int_res, err, #max_piece_count, #precision - )); - } - } - } - } - - #[test] - fn reward_curve_piece_count() { - assert!( - super::#ident.points.len() as u32 - 1 <= #max_piece_count, - "Generated reward curve approximation is invalid: \ - has more points than specified, please fill an issue." - ); - } - } - ).into() -} diff --git a/frame/staking/reward-curve/src/log.rs b/frame/staking/reward-curve/src/log.rs deleted file mode 100644 index 1a25dbb98..000000000 --- a/frame/staking/reward-curve/src/log.rs +++ /dev/null @@ -1,70 +0,0 @@ -use std::convert::TryInto; - -/// Return Per-million value. -pub fn log2(p: u32, q: u32) -> u32 { - assert!(p >= q); - assert!(p <= u32::max_value()/2); - - // This restriction should not be mandatory. But function is only tested and used for this. - assert!(p <= 1_000_000); - assert!(q <= 1_000_000); - - if p == q { - return 0 - } - - let mut n = 0u32; - while !(p >= 2u32.pow(n)*q) || !(p < 2u32.pow(n+1)*q) { - n += 1; - } - assert!(p < 2u32.pow(n+1) * q); - - let y_num: u32 = (p - 2u32.pow(n) * q).try_into().unwrap(); - let y_den: u32 = (p + 2u32.pow(n) * q).try_into().unwrap(); - - let _2_div_ln_2 = 2_885_390u32; - - let taylor_term = |k: u32| -> u32 { - if k == 0 { - (_2_div_ln_2 as u128 * (y_num as u128).pow(1) / (y_den as u128).pow(1)) - .try_into().unwrap() - } else { - let mut res = _2_div_ln_2 as u128 * (y_num as u128).pow(3) / (y_den as u128).pow(3); - for _ in 1..k { - res = res * (y_num as u128).pow(2) / (y_den as u128).pow(2); - } - res /= 2 * k as u128 + 1; - - res.try_into().unwrap() - } - }; - - let mut res = n * 1_000_000u32; - let mut k = 0; - loop { - let term = taylor_term(k); - if term == 0 { - break - } - - res += term; - k += 1; - } - - res -} - -#[test] -fn test_log() { - let div = 1_000; - for p in 0..=div { - for q in 1..=p { - let p: u32 = (1_000_000 as u64 * p as u64 / div as u64).try_into().unwrap(); - let q: u32 = (1_000_000 as u64 * q as u64 / div as u64).try_into().unwrap(); - - let res = - (log2(p, q) as i64); - let expected = ((q as f64 / p as f64).log(2.0) * 1_000_000 as f64).round() as i64; - assert!((res - expected).abs() <= 6); - } - } -} diff --git a/frame/staking/reward-curve/tests/test.rs b/frame/staking/reward-curve/tests/test.rs deleted file mode 100644 index 399bf7b9a..000000000 --- a/frame/staking/reward-curve/tests/test.rs +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2019 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 . - -//! Test crate for pallet-staking-reward-curve. Allows to test for procedural macro. -//! See tests directory. - -mod test_small_falloff { - pallet_staking_reward_curve::build! { - const REWARD_CURVE: sp_runtime::curve::PiecewiseLinear<'static> = curve!( - min_inflation: 0_020_000, - max_inflation: 0_200_000, - ideal_stake: 0_600_000, - falloff: 0_010_000, - max_piece_count: 200, - test_precision: 0_005_000, - ); - } -} - -mod test_big_falloff { - pallet_staking_reward_curve::build! { - const REWARD_CURVE: sp_runtime::curve::PiecewiseLinear<'static> = curve!( - min_inflation: 0_100_000, - max_inflation: 0_400_000, - ideal_stake: 0_400_000, - falloff: 1_000_000, - max_piece_count: 40, - test_precision: 0_005_000, - ); - } -} From 660c0bf65be55a28c4b0c9748987613a150ab8de Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Thu, 6 Feb 2020 16:44:06 +0800 Subject: [PATCH 10/17] update: runtime --- Cargo.lock | 4 - bin/node/runtime/Cargo.toml | 16 +- bin/node/runtime/src/lib.rs | 331 ++++++++++++++++++------------------ frame/staking/src/lib.rs | 70 ++++---- 4 files changed, 207 insertions(+), 214 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b211dd280..230393ab3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3142,7 +3142,6 @@ dependencies = [ "pallet-authority-discovery", "pallet-authorship", "pallet-babe", - "pallet-collective", "pallet-contracts", "pallet-contracts-rpc-runtime-api", "pallet-finality-tracker", @@ -3150,7 +3149,6 @@ dependencies = [ "pallet-im-online", "pallet-indices", "pallet-membership", - "pallet-nicks", "pallet-offences", "pallet-randomness-collective-flip", "pallet-session", @@ -3159,7 +3157,6 @@ dependencies = [ "pallet-timestamp", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", - "pallet-treasury", "pallet-utility", "parity-scale-codec", "rustc-hex", @@ -3173,7 +3170,6 @@ dependencies = [ "sp-inherents", "sp-io", "sp-keyring", - "sp-offchain", "sp-runtime", "sp-session", "sp-staking", diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml index 9ae0cb255..a8e19bb31 100644 --- a/bin/node/runtime/Cargo.toml +++ b/bin/node/runtime/Cargo.toml @@ -18,7 +18,7 @@ sp-authority-discovery = { version = "2.0.0", default-features = false, git = "h sp-consensus-babe = { version = "0.8", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-block-builder = { git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402", default-features = false} sp-inherents = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -sp-offchain = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +#sp-offchain = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-core = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-api = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } @@ -35,7 +35,7 @@ node-primitives = { default-features = false, path = "../primitives" } pallet-authority-discovery = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-authorship = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-babe = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -pallet-collective = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +#pallet-collective = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-contracts = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-contracts-rpc-runtime-api = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } frame-executive = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } @@ -44,7 +44,7 @@ pallet-grandpa = { version = "2.0.0", default-features = false, git = "https://g pallet-im-online = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-indices = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-membership = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -pallet-nicks = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +#pallet-nicks = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-offences = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-randomness-collective-flip = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-session = { version = "2.0.0", default-features = false, features = ["historical"], git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } @@ -54,7 +54,7 @@ frame-support = { version = "2.0.0", default-features = false, git = "https://gi frame-system = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } frame-system-rpc-runtime-api = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-timestamp = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -pallet-treasury = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +#pallet-treasury = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-utility = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-transaction-payment = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-transaction-payment-rpc-runtime-api = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } @@ -79,7 +79,7 @@ std = [ "pallet-babe/std", "sp-block-builder/std", "codec/std", - "pallet-collective/std", +# "pallet-collective/std", "pallet-contracts-rpc-runtime-api/std", "pallet-contracts/std", "frame-executive/std", @@ -89,9 +89,9 @@ std = [ "pallet-indices/std", "sp-inherents/std", "pallet-membership/std", - "pallet-nicks/std", +# "pallet-nicks/std", "node-primitives/std", - "sp-offchain/std", +# "sp-offchain/std", "pallet-offences/std", "sp-core/std", "pallet-randomness-collective-flip/std", @@ -112,7 +112,7 @@ std = [ "pallet-timestamp/std", "pallet-transaction-payment-rpc-runtime-api/std", "pallet-transaction-payment/std", - "pallet-treasury/std", +# "pallet-treasury/std", "sp-transaction-pool/std", "pallet-utility/std", "sp-version/std", diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index 562c6bfd5..fbbe89f7c 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -38,7 +38,7 @@ pub use pallet_staking::StakerStatus; use frame_support::{ construct_runtime, parameter_types, - traits::{Currency, Randomness, SplitTwoWays}, + traits::{Currency, OnUnbalanced, Randomness, SplitTwoWays}, weights::Weight, }; use frame_system::offchain::TransactionSubmitter; @@ -77,14 +77,14 @@ include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); /// Runtime version. pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("node"), - impl_name: create_runtime_str!("substrate-node"), - authoring_version: 10, + impl_name: create_runtime_str!("darwinia-node"), + authoring_version: 4, // Per convention: if the runtime behavior changes, increment spec_version // and set impl_version to equal spec_version. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 198, - impl_version: 198, + spec_version: 85, + impl_version: 85, apis: RUNTIME_API_VERSIONS, }; @@ -103,11 +103,19 @@ pub type DealWithFees = SplitTwoWays< Balance, NegativeImbalance, _4, - Treasury, // 4 parts (80%) goes to the treasury. + // Treasury, // 4 parts (80%) goes to the treasury. + MockTreasury, _1, Author, // 1 part (20%) goes to the block author. >; +pub struct MockTreasury; +impl OnUnbalanced for MockTreasury { + fn on_nonzero_unbalanced(amount: NegativeImbalance) { + Balances::resolve_creating(&Sudo::key(), amount); + } +} + parameter_types! { pub const BlockHashCount: BlockNumber = 250; pub const MaximumBlockWeight: Weight = 1_000_000_000; @@ -170,32 +178,6 @@ impl pallet_indices::Trait for Runtime { type Event = Event; } -parameter_types! { - pub const ExistentialDeposit: Balance = 1 * COIN; - pub const TransferFee: Balance = 1 * MILLI; - pub const CreationFee: Balance = 1 * MILLI; -} - -impl pallet_ring::Trait for Runtime { - type Balance = Balance; - type OnFreeBalanceZero = ((Staking, Contracts), Session); - type OnNewAccount = Indices; - type TransferPayment = (); - type DustRemoval = (); - type Event = Event; - type ExistentialDeposit = ExistentialDeposit; - type TransferFee = TransferFee; - type CreationFee = CreationFee; -} -impl pallet_kton::Trait for Runtime { - type Balance = Balance; - type Event = Event; - type RingCurrency = Balances; - type TransferPayment = Balances; - type ExistentialDeposit = ExistentialDeposit; - type TransferFee = TransferFee; -} - parameter_types! { pub const TransactionBaseFee: Balance = 1 * MILLI; pub const TransactionByteFee: Balance = 10 * MICRO; @@ -264,94 +246,48 @@ impl pallet_session::historical::Trait for Runtime { type FullIdentificationOf = ExposureOf; } -pallet_staking_reward_curve::build! { - const REWARD_CURVE: PiecewiseLinear<'static> = curve!( - min_inflation: 0_025_000, - max_inflation: 0_100_000, - ideal_stake: 0_500_000, - falloff: 0_050_000, - max_piece_count: 40, - test_precision: 0_005_000, - ); -} - -parameter_types! { - pub const BlocksPerSession: BlockNumber = EPOCH_DURATION_IN_BLOCKS; - pub const SessionsPerEra: SessionIndex = ERA_DURATION; - pub const BondingDurationInEra: EraIndex = 24 * 28; - pub const BondingDurationInBlockNumber: BlockNumber = 24 * 28 * ERA_DURATION * EPOCH_DURATION_IN_BLOCKS; - pub const SlashDeferDuration: EraIndex = 24 * 7; // 1/4 the bonding duration. - - pub const Cap: Balance = CAP; - pub const TotalPower: Power = TOTAL_POWER; - pub const GenesisTime: Moment = GENESIS_TIME; -} - -impl pallet_staking::Trait for Runtime { - type Time = Timestamp; - type PowerToVote = PowerToVoteHandler; - type Event = Event; - type SessionsPerEra = SessionsPerEra; - type BondingDurationInEra = BondingDurationInEra; - type BondingDurationInBlockNumber = BondingDurationInBlockNumber; - type SlashDeferDuration = SlashDeferDuration; - /// A super-majority of the council can cancel the slash. - type SlashCancelOrigin = pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>; - type SessionInterface = Self; - type RingCurrency = Balances; - type RingRewardRemainder = Treasury; - type RingSlash = (); - type RingReward = (); - type KtonCurrency = Kton; - type KtonSlash = (); - type KtonReward = (); - type Cap = Cap; - type TotalPower = TotalPower; - type GenesisTime = GenesisTime; -} - -type CouncilCollective = pallet_collective::Instance1; -impl pallet_collective::Trait for Runtime { - type Origin = Origin; - type Proposal = Call; - type Event = Event; -} - -type TechnicalCollective = pallet_collective::Instance2; -impl pallet_collective::Trait for Runtime { - type Origin = Origin; - type Proposal = Call; - type Event = Event; -} - -impl pallet_membership::Trait for Runtime { - type Event = Event; - type AddOrigin = pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; - 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 MembershipInitialized = TechnicalCommittee; - type MembershipChanged = TechnicalCommittee; -} - -parameter_types! { - pub const ProposalBond: Permill = Permill::from_percent(5); - pub const ProposalBondMinimum: Balance = 1 * COIN; - pub const SpendPeriod: BlockNumber = 1 * DAYS; - pub const Burn: Permill = Permill::from_percent(50); -} - -impl pallet_treasury::Trait for Runtime { - type Currency = Balances; - type ApproveOrigin = pallet_collective::EnsureMembers<_4, AccountId, CouncilCollective>; - type RejectOrigin = pallet_collective::EnsureMembers<_2, AccountId, CouncilCollective>; - type Event = Event; - type ProposalRejection = (); - type ProposalBond = ProposalBond; - type ProposalBondMinimum = ProposalBondMinimum; - type SpendPeriod = SpendPeriod; - type Burn = Burn; -} +//type CouncilCollective = pallet_collective::Instance1; +//impl pallet_collective::Trait for Runtime { +// type Origin = Origin; +// type Proposal = Call; +// type Event = Event; +//} + +//type TechnicalCollective = pallet_collective::Instance2; +//impl pallet_collective::Trait for Runtime { +// type Origin = Origin; +// type Proposal = Call; +// type Event = Event; +//} +// +//impl pallet_membership::Trait for Runtime { +// type Event = Event; +// type AddOrigin = pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; +// 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 MembershipInitialized = TechnicalCommittee; +// type MembershipChanged = TechnicalCommittee; +//} + +//parameter_types! { +// pub const ProposalBond: Permill = Permill::from_percent(5); +// pub const ProposalBondMinimum: Balance = 1 * COIN; +// pub const SpendPeriod: BlockNumber = 1 * DAYS; +// pub const Burn: Permill = Permill::from_percent(50); +//} +// +//impl pallet_treasury::Trait for Runtime { +// type Currency = Balances; +// type ApproveOrigin = pallet_collective::EnsureMembers<_4, AccountId, CouncilCollective>; +// type RejectOrigin = pallet_collective::EnsureMembers<_2, AccountId, CouncilCollective>; +// type Event = Event; +// type ProposalRejection = (); +// type ProposalBond = ProposalBond; +// type ProposalBondMinimum = ProposalBondMinimum; +// type SpendPeriod = SpendPeriod; +// type Burn = Burn; +//} parameter_types! { pub const ContractTransferFee: Balance = 1 * MILLI; @@ -443,44 +379,105 @@ parameter_types! { pub const MaxLength: usize = 16; } -impl pallet_nicks::Trait for Runtime { +//impl pallet_nicks::Trait for Runtime { +// type Event = Event; +// type Currency = Balances; +// type ReservationFee = ReservationFee; +// type Slashed = Treasury; +// type ForceOrigin = pallet_collective::EnsureMember; +// type MinLength = MinLength; +// type MaxLength = MaxLength; +//} + +//impl frame_system::offchain::CreateTransaction for Runtime { +// type Public = ::Signer; +// type Signature = Signature; +// +// fn create_transaction>( +// call: Call, +// public: Self::Public, +// account: AccountId, +// index: Index, +// ) -> Option<(Call, ::SignaturePayload)> { +// let period = 1 << 8; +// let current_block = System::block_number().saturated_into::(); +// let tip = 0; +// let extra: SignedExtra = ( +// frame_system::CheckVersion::::new(), +// frame_system::CheckGenesis::::new(), +// frame_system::CheckEra::::from(generic::Era::mortal(period, current_block)), +// frame_system::CheckNonce::::from(index), +// frame_system::CheckWeight::::new(), +// pallet_transaction_payment::ChargeTransactionPayment::::from(tip), +// Default::default(), +// ); +// let raw_payload = SignedPayload::new(call, extra).ok()?; +// let signature = TSigner::sign(public, &raw_payload)?; +// let address = Indices::unlookup(account); +// let (call, extra, _) = raw_payload.deconstruct(); +// Some((call, (address, signature, extra))) +// } +//} + +parameter_types! { + pub const ExistentialDeposit: Balance = 1 * COIN; + pub const TransferFee: Balance = 1 * MILLI; + pub const CreationFee: Balance = 1 * MILLI; +} + +impl pallet_ring::Trait for Runtime { + type Balance = Balance; + type OnFreeBalanceZero = ((Staking, Contracts), Session); + type OnNewAccount = Indices; + type TransferPayment = (); + type DustRemoval = (); type Event = Event; - type Currency = Balances; - type ReservationFee = ReservationFee; - type Slashed = Treasury; - type ForceOrigin = pallet_collective::EnsureMember; - type MinLength = MinLength; - type MaxLength = MaxLength; -} - -impl frame_system::offchain::CreateTransaction for Runtime { - type Public = ::Signer; - type Signature = Signature; - - fn create_transaction>( - call: Call, - public: Self::Public, - account: AccountId, - index: Index, - ) -> Option<(Call, ::SignaturePayload)> { - let period = 1 << 8; - let current_block = System::block_number().saturated_into::(); - let tip = 0; - let extra: SignedExtra = ( - frame_system::CheckVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckEra::::from(generic::Era::mortal(period, current_block)), - frame_system::CheckNonce::::from(index), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(tip), - Default::default(), - ); - let raw_payload = SignedPayload::new(call, extra).ok()?; - let signature = TSigner::sign(public, &raw_payload)?; - let address = Indices::unlookup(account); - let (call, extra, _) = raw_payload.deconstruct(); - Some((call, (address, signature, extra))) - } + type ExistentialDeposit = ExistentialDeposit; + type TransferFee = TransferFee; + type CreationFee = CreationFee; +} +impl pallet_kton::Trait for Runtime { + type Balance = Balance; + type Event = Event; + type RingCurrency = Balances; + type TransferPayment = Balances; + type ExistentialDeposit = ExistentialDeposit; + type TransferFee = TransferFee; +} + +parameter_types! { + pub const BlocksPerSession: BlockNumber = EPOCH_DURATION_IN_BLOCKS; + pub const SessionsPerEra: SessionIndex = ERA_DURATION; + pub const BondingDurationInEra: EraIndex = 24 * 28; + pub const BondingDurationInBlockNumber: BlockNumber = 24 * 28 * ERA_DURATION * EPOCH_DURATION_IN_BLOCKS; + pub const SlashDeferDuration: EraIndex = 24 * 7; // 1/4 the bonding duration. + + pub const Cap: Balance = CAP; + pub const TotalPower: Power = TOTAL_POWER; + pub const GenesisTime: Moment = GENESIS_TIME; +} + +impl pallet_staking::Trait for Runtime { + type Time = Timestamp; + type PowerToVote = PowerToVoteHandler; + type Event = Event; + type SessionsPerEra = SessionsPerEra; + type BondingDurationInEra = BondingDurationInEra; + type BondingDurationInBlockNumber = BondingDurationInBlockNumber; + type SlashDeferDuration = SlashDeferDuration; + // /// A super-majority of the council can cancel the slash. + // type SlashCancelOrigin = pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>; + type SessionInterface = Self; + type RingCurrency = Balances; + type RingRewardRemainder = (); + type RingSlash = (); + type RingReward = (); + type KtonCurrency = Kton; + type KtonSlash = (); + type KtonReward = (); + type Cap = Cap; + type TotalPower = TotalPower; + type GenesisTime = GenesisTime; } construct_runtime!( @@ -497,19 +494,19 @@ construct_runtime!( Indices: pallet_indices, TransactionPayment: pallet_transaction_payment::{Module, Storage}, Session: pallet_session::{Module, Call, Storage, Event, Config}, - Council: pallet_collective::::{Module, Call, Storage, Origin, Event, Config}, - TechnicalCommittee: pallet_collective::::{Module, Call, Storage, Origin, Event, Config}, - TechnicalMembership: pallet_membership::::{Module, Call, Storage, Event, Config}, +// Council: pallet_collective::::{Module, Call, Storage, Origin, Event, Config}, +// TechnicalCommittee: pallet_collective::::{Module, Call, Storage, Origin, Event, Config}, +// TechnicalMembership: pallet_membership::::{Module, Call, Storage, Event, Config}, FinalityTracker: pallet_finality_tracker::{Module, Call, Inherent}, Grandpa: pallet_grandpa::{Module, Call, Storage, Config, Event}, - Treasury: pallet_treasury::{Module, Call, Storage, Config, Event}, +// Treasury: pallet_treasury::{Module, Call, Storage, Config, Event}, Contracts: pallet_contracts, Sudo: pallet_sudo, ImOnline: pallet_im_online::{Module, Call, Storage, Event, ValidateUnsigned, Config}, AuthorityDiscovery: pallet_authority_discovery::{Module, Call, Config}, Offences: pallet_offences::{Module, Call, Storage, Event}, RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage}, - Nicks: pallet_nicks::{Module, Call, Storage, Event}, +// Nicks: pallet_nicks::{Module, Call, Storage, Event}, Balances: pallet_ring::{default, Error}, Kton: pallet_kton::{default, Error}, @@ -596,11 +593,11 @@ impl_runtime_apis! { } } - impl sp_offchain::OffchainWorkerApi for Runtime { - fn offchain_worker(number: NumberFor) { - Executive::offchain_worker(number) - } - } +// impl sp_offchain::OffchainWorkerApi for Runtime { +// fn offchain_worker(number: NumberFor) { +// Executive::offchain_worker(number) +// } +// } impl fg_primitives::GrandpaApi for Runtime { fn grandpa_authorities() -> GrandpaAuthorityList { diff --git a/frame/staking/src/lib.rs b/frame/staking/src/lib.rs index 1ce3ddc08..35654b1dd 100644 --- a/frame/staking/src/lib.rs +++ b/frame/staking/src/lib.rs @@ -668,8 +668,8 @@ pub trait Trait: frame_system::Trait { /// applied immediately, without opportunity for intervention. type SlashDeferDuration: Get; - /// The origin which can cancel a deferred slash. Root can always do this. - type SlashCancelOrigin: EnsureOrigin; + // /// The origin which can cancel a deferred slash. Root can always do this. + // type SlashCancelOrigin: EnsureOrigin; /// Interface for interacting with a session module. type SessionInterface: self::SessionInterface; @@ -1471,39 +1471,39 @@ decl_module! { ForceEra::put(Forcing::ForceAlways); } - /// Cancel enactment of a deferred slash. Can be called by either the root origin or - /// the `T::SlashCancelOrigin`. - /// passing the era and indices of the slashes for that era to kill. - /// - /// # - /// - One storage write. - /// # - #[weight = SimpleDispatchInfo::FreeOperational] - fn cancel_deferred_slash(origin, era: EraIndex, slash_indices: Vec) { - T::SlashCancelOrigin::try_origin(origin) - .map(|_| ()) - .or_else(ensure_root)?; - - let mut slash_indices = slash_indices; - slash_indices.sort_unstable(); - let mut unapplied = ::UnappliedSlashes::get(&era); - - 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); - - unapplied.remove(index); - } - - ::UnappliedSlashes::insert(&era, &unapplied); - } +// /// Cancel enactment of a deferred slash. Can be called by either the root origin or +// /// the `T::SlashCancelOrigin`. +// /// passing the era and indices of the slashes for that era to kill. +// /// +// /// # +// /// - One storage write. +// /// # +// #[weight = SimpleDispatchInfo::FreeOperational] +// fn cancel_deferred_slash(origin, era: EraIndex, slash_indices: Vec) { +// T::SlashCancelOrigin::try_origin(origin) +// .map(|_| ()) +// .or_else(ensure_root)?; +// +// let mut slash_indices = slash_indices; +// slash_indices.sort_unstable(); +// let mut unapplied = ::UnappliedSlashes::get(&era); +// +// 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); +// +// unapplied.remove(index); +// } +// +// ::UnappliedSlashes::insert(&era, &unapplied); +// } } } From 51101412dc6936f3c8d9be1928618d49feec22a7 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Thu, 6 Feb 2020 20:56:24 +0800 Subject: [PATCH 11/17] =?UTF-8?q?update:=20runtime=20-=20compile=20?= =?UTF-8?q?=E2=9C=94=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 698 +++++++++-------- Cargo.toml | 5 +- bin/node/cli/Cargo.toml | 18 +- bin/node/cli/src/service.rs | 498 +++--------- bin/node/executor/Cargo.toml | 26 + bin/node/executor/src/lib.rs | 1257 +++++++++++++++++++++++++++++++ bin/node/rpc-client/Cargo.toml | 15 + bin/node/rpc-client/src/main.rs | 70 ++ bin/node/rpc/Cargo.toml | 17 + bin/node/rpc/src/lib.rs | 101 +++ bin/node/runtime/Cargo.toml | 8 +- bin/node/runtime/src/lib.rs | 122 +-- 12 files changed, 2034 insertions(+), 801 deletions(-) create mode 100644 bin/node/executor/Cargo.toml create mode 100644 bin/node/executor/src/lib.rs create mode 100644 bin/node/rpc-client/Cargo.toml create mode 100644 bin/node/rpc-client/src/main.rs create mode 100644 bin/node/rpc/Cargo.toml create mode 100644 bin/node/rpc/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 230393ab3..1b45a82e9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -165,7 +165,7 @@ dependencies = [ "futures-io", "futures-timer 2.0.2", "kv-log-macro", - "log", + "log 0.4.8", "memchr", "mio", "mio-uds", @@ -201,6 +201,12 @@ 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.40" @@ -229,6 +235,16 @@ 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.2", + "safemem", +] + [[package]] name = "base64" version = "0.10.1" @@ -268,7 +284,7 @@ dependencies = [ "env_logger 0.6.2", "fxhash", "lazy_static", - "log", + "log 0.4.8", "peeking_take_while", "proc-macro2 0.4.30", "quote 0.6.13", @@ -552,7 +568,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7871d2947441b0fdd8e2bd1ce2a2f75304f896582c0d572162d48290683c48" dependencies = [ - "log", + "log 0.4.8", "web-sys", ] @@ -582,6 +598,22 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120" +[[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", +] + +[[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.50.0" @@ -602,7 +634,7 @@ dependencies = [ "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", - "log", + "log 0.4.8", "serde", "smallvec 1.1.0", "target-lexicon", @@ -641,7 +673,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1eaafb5fa623dcbe19a28084a8226d7a1b17184a949c1a1f29a46b479867998d" dependencies = [ "cranelift-codegen", - "log", + "log 0.4.8", "smallvec 1.1.0", "target-lexicon", ] @@ -666,7 +698,7 @@ dependencies = [ "cranelift-codegen", "cranelift-entity", "cranelift-frontend", - "log", + "log 0.4.8", "serde", "thiserror", "wasmparser", @@ -706,7 +738,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac" dependencies = [ - "autocfg", + "autocfg 0.1.7", "cfg-if", "crossbeam-utils 0.7.0", "lazy_static", @@ -749,7 +781,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4" dependencies = [ - "autocfg", + "autocfg 0.1.7", "cfg-if", "lazy_static", ] @@ -1031,7 +1063,7 @@ checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" dependencies = [ "atty", "humantime", - "log", + "log 0.4.8", "regex", "termcolor", ] @@ -1044,7 +1076,7 @@ checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" dependencies = [ "atty", "humantime", - "log", + "log 0.4.8", "regex", "termcolor", ] @@ -1103,7 +1135,7 @@ dependencies = [ "anyhow", "goblin", "indexmap", - "log", + "log 0.4.8", "scroll", "string-interner", "target-lexicon", @@ -1160,7 +1192,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8505b75b31ef7285168dd237c4a7db3c1f3e0927e7d314e670bc98e854272fe9" dependencies = [ "env_logger 0.6.2", - "log", + "log 0.4.8", ] [[package]] @@ -1170,7 +1202,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4106eb29c7e092f4a6ce6e7632abbbfdf85d94e63035d3790d2d16eeae83d3f4" dependencies = [ "futures 0.1.29", - "log", + "log 0.4.8", "num-traits", "parity-scale-codec", "parking_lot 0.9.0", @@ -1216,6 +1248,21 @@ 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", +] + +[[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" @@ -1258,7 +1305,7 @@ dependencies = [ "frame-metadata", "frame-support-procedural", "impl-trait-for-tuples", - "log", + "log 0.4.8", "once_cell 0.2.4", "parity-scale-codec", "paste", @@ -1613,7 +1660,7 @@ dependencies = [ "aho-corasick", "bstr", "fnv", - "log", + "log 0.4.8", "regex", ] @@ -1623,7 +1670,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3081214398d39e4bd7f2c1975f0488ed04614ffdd976c6fc7a0708278552c0da" dependencies = [ - "log", + "log 0.4.8", "plain", "scroll", ] @@ -1640,7 +1687,7 @@ dependencies = [ "futures-util", "hyper 0.13.1", "lazy_static", - "log", + "log 0.4.8", "parking_lot 0.9.0", "serde", "serde_json", @@ -1659,7 +1706,7 @@ dependencies = [ "futures 0.1.29", "http 0.1.21", "indexmap", - "log", + "log 0.4.8", "slab", "string", "tokio-io", @@ -1678,7 +1725,7 @@ dependencies = [ "futures-util", "http 0.2.0", "indexmap", - "log", + "log 0.4.8", "slab", "tokio 0.2.6", "tokio-util", @@ -1722,7 +1769,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead" dependencies = [ "ahash", - "autocfg", + "autocfg 0.1.7", ] [[package]] @@ -1857,6 +1904,25 @@ dependencies = [ "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", + "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" @@ -1872,7 +1938,7 @@ dependencies = [ "httparse", "iovec", "itoa", - "log", + "log 0.4.8", "net2", "rustc_version", "time", @@ -1902,7 +1968,7 @@ dependencies = [ "http-body 0.3.1", "httparse", "itoa", - "log", + "log 0.4.8", "pin-project", "time", "tokio 0.2.6", @@ -1984,7 +2050,7 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2" dependencies = [ - "autocfg", + "autocfg 0.1.7", ] [[package]] @@ -2037,7 +2103,7 @@ checksum = "f2b1d42ef453b30b7387e113da1c83ab1605d90c5b4e0eb8e96d016ed3b8c160" dependencies = [ "getrandom", "libc", - "log", + "log 0.4.8", ] [[package]] @@ -2057,12 +2123,15 @@ checksum = "0a9ae166c4d1f702d297cd76d4b55758ace80272ffc6dbb139fdc1bf810de40b" dependencies = [ "failure", "futures 0.1.29", + "hyper 0.12.35", "jsonrpc-core", "jsonrpc-pubsub", - "log", + "log 0.4.8", "serde", "serde_json", + "tokio 0.1.22", "url 1.7.2", + "websocket", ] [[package]] @@ -2072,7 +2141,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe3b688648f1ef5d5072229e2d672ecb92cbff7d1c79bcf3fd5898f3f3df0970" dependencies = [ "futures 0.1.29", - "log", + "log 0.4.8", "serde", "serde_derive", "serde_json", @@ -2108,10 +2177,10 @@ dependencies = [ "hyper 0.12.35", "jsonrpc-core", "jsonrpc-server-utils", - "log", + "log 0.4.8", "net2", "parking_lot 0.9.0", - "unicase", + "unicase 2.6.0", ] [[package]] @@ -2121,7 +2190,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3453625f0f0f5cd6d6776d389d73b7d70fcc98620b7cbb1cbbb1f6a36e95f39a" dependencies = [ "jsonrpc-core", - "log", + "log 0.4.8", "parking_lot 0.9.0", "serde", ] @@ -2136,10 +2205,10 @@ dependencies = [ "globset", "jsonrpc-core", "lazy_static", - "log", + "log 0.4.8", "tokio 0.1.22", "tokio-codec", - "unicase", + "unicase 2.6.0", ] [[package]] @@ -2150,7 +2219,7 @@ checksum = "b34faa167c3ac9705aeecb986c0da6056529f348425dbe0441db60a2c4cc41d1" dependencies = [ "jsonrpc-core", "jsonrpc-server-utils", - "log", + "log 0.4.8", "parking_lot 0.9.0", "slab", "ws", @@ -2178,7 +2247,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c54d9f465d530a752e6ebdc217e081a7a614b48cb200f6f0aee21ba6bc9aabb" dependencies = [ - "log", + "log 0.4.8", ] [[package]] @@ -2211,7 +2280,7 @@ dependencies = [ "fs-swap", "interleaved-ordered", "kvdb", - "log", + "log 0.4.8", "num_cpus", "owning_ref", "parking_lot 0.9.0", @@ -2219,6 +2288,12 @@ dependencies = [ "rocksdb", ] +[[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" @@ -2300,7 +2375,7 @@ dependencies = [ "futures 0.1.29", "lazy_static", "libsecp256k1", - "log", + "log 0.4.8", "multistream-select", "parity-multiaddr 0.6.0", "parity-multihash 0.2.0", @@ -2351,7 +2426,7 @@ checksum = "e3175fb0fc9016c95c8517a297bbdb5fb6bfbd5665bacd2eb23495d1cbdeb033" dependencies = [ "futures 0.1.29", "libp2p-core", - "log", + "log 0.4.8", "tokio-dns-unofficial", ] @@ -2384,7 +2459,7 @@ dependencies = [ "futures 0.1.29", "libp2p-core", "libp2p-swarm", - "log", + "log 0.4.8", "parity-multiaddr 0.6.0", "protobuf", "smallvec 0.6.13", @@ -2407,7 +2482,7 @@ dependencies = [ "futures 0.1.29", "libp2p-core", "libp2p-swarm", - "log", + "log 0.4.8", "parity-multiaddr 0.6.0", "parity-multihash 0.2.0", "protobuf", @@ -2433,7 +2508,7 @@ dependencies = [ "futures 0.1.29", "libp2p-core", "libp2p-swarm", - "log", + "log 0.4.8", "net2", "parity-multiaddr 0.6.0", "rand 0.6.5", @@ -2455,7 +2530,7 @@ dependencies = [ "fnv", "futures 0.1.29", "libp2p-core", - "log", + "log 0.4.8", "parking_lot 0.8.0", "tokio-codec", "tokio-io", @@ -2473,7 +2548,7 @@ dependencies = [ "futures 0.1.29", "lazy_static", "libp2p-core", - "log", + "log 0.4.8", "protobuf", "rand 0.7.2", "ring", @@ -2493,7 +2568,7 @@ dependencies = [ "futures 0.1.29", "libp2p-core", "libp2p-swarm", - "log", + "log 0.4.8", "parity-multiaddr 0.6.0", "rand 0.7.2", "tokio-io", @@ -2510,7 +2585,7 @@ dependencies = [ "bytes 0.4.12", "futures 0.1.29", "libp2p-core", - "log", + "log 0.4.8", "protobuf", "rw-stream-sink", "tokio-io", @@ -2531,7 +2606,7 @@ dependencies = [ "js-sys", "lazy_static", "libp2p-core", - "log", + "log 0.4.8", "parity-send-wrapper", "protobuf", "rand 0.6.5", @@ -2572,7 +2647,7 @@ dependencies = [ "get_if_addrs", "ipnet", "libp2p-core", - "log", + "log 0.4.8", "tokio-io", "tokio-tcp", "tokio-timer", @@ -2586,7 +2661,7 @@ checksum = "1e2fe0648967da3e56e4a55055c857c8c48326b66be0047d0e04c8ca60d34630" dependencies = [ "futures 0.1.29", "libp2p-core", - "log", + "log 0.4.8", "tokio-uds", ] @@ -2614,7 +2689,7 @@ dependencies = [ "bytes 0.4.12", "futures 0.1.29", "libp2p-core", - "log", + "log 0.4.8", "rw-stream-sink", "soketto", "tokio-codec", @@ -2632,7 +2707,7 @@ checksum = "1913eb7dd6eb5515957b6f1770296f6921968db87bc9b985f0e974b6657e1003" dependencies = [ "futures 0.1.29", "libp2p-core", - "log", + "log 0.4.8", "tokio-io", "yamux", ] @@ -2719,6 +2794,15 @@ dependencies = [ "scopeguard 1.0.0", ] +[[package]] +name = "log" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" +dependencies = [ + "log 0.4.8", +] + [[package]] name = "log" version = "0.4.8" @@ -2823,6 +2907,15 @@ dependencies = [ "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", +] + [[package]] name = "miniz_oxide" version = "0.3.5" @@ -2844,7 +2937,7 @@ dependencies = [ "iovec", "kernel32-sys", "libc", - "log", + "log 0.4.8", "miow", "net2", "slab", @@ -2858,7 +2951,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" dependencies = [ "lazycell", - "log", + "log 0.4.8", "mio", "slab", ] @@ -2906,7 +2999,7 @@ checksum = "fc3ef54aab1b2e37e911bcb99e376dbe4c1e0710afcdb8428608e4f993b39c47" dependencies = [ "bytes 0.4.12", "futures 0.1.29", - "log", + "log 0.4.8", "smallvec 0.6.13", "tokio-io", "unsigned-varint", @@ -2921,6 +3014,24 @@ dependencies = [ "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", + "libc", + "log 0.4.8", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + [[package]] name = "net2" version = "0.2.33" @@ -2962,14 +3073,13 @@ dependencies = [ "jsonrpc-core", "kvdb-memorydb", "libp2p", - "log", + "log 0.4.8", "node-executor", - "node-primitives 2.0.0", + "node-primitives", "node-rpc", - "node-runtime 2.0.0 (git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402)", + "node-runtime", "node-transaction-factory", "pallet-authority-discovery", - "pallet-balances", "pallet-contracts", "pallet-im-online", "pallet-indices", @@ -2987,12 +3097,10 @@ dependencies = [ "sc-client-db", "sc-consensus-babe", "sc-finality-grandpa", - "sc-keystore", "sc-network", "sc-offchain", "sc-rpc", "sc-service", - "sc-service-test", "sc-telemetry", "sc-transaction-pool", "serde", @@ -3010,7 +3118,6 @@ dependencies = [ "sp-transaction-pool", "structopt", "substrate-build-script-utils", - "tempfile", "tokio 0.1.22", "vergen", "wasm-bindgen", @@ -3020,10 +3127,9 @@ dependencies = [ [[package]] name = "node-executor" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "node-primitives 2.0.0", - "node-runtime 2.0.0 (git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402)", + "node-primitives", + "node-runtime", "parity-scale-codec", "sc-executor", "sp-core", @@ -3043,23 +3149,13 @@ dependencies = [ "sp-serializer", ] -[[package]] -name = "node-primitives" -version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" -dependencies = [ - "sp-core", - "sp-runtime", -] - [[package]] name = "node-rpc" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ "jsonrpc-core", - "node-primitives 2.0.0", - "node-runtime 2.0.0 (git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402)", + "node-primitives", + "node-runtime", "pallet-contracts-rpc", "pallet-transaction-payment-rpc", "sc-client", @@ -3069,66 +3165,21 @@ dependencies = [ ] [[package]] -name = "node-runtime" +name = "node-rpc-client" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "frame-executive", - "frame-support", - "frame-system", - "frame-system-rpc-runtime-api", - "integer-sqrt", - "node-primitives 2.0.0", - "pallet-authority-discovery", - "pallet-authorship", - "pallet-babe", - "pallet-balances", - "pallet-collective", - "pallet-contracts", - "pallet-contracts-rpc-runtime-api", - "pallet-democracy", - "pallet-elections-phragmen", - "pallet-finality-tracker", - "pallet-grandpa", - "pallet-im-online", - "pallet-indices", - "pallet-membership", - "pallet-nicks", - "pallet-offences", - "pallet-randomness-collective-flip", - "pallet-session", - "pallet-staking", - "pallet-staking-reward-curve", - "pallet-sudo", - "pallet-timestamp", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "pallet-treasury", - "pallet-utility", - "parity-scale-codec", - "rustc-hex", - "safe-mix", - "serde", - "sp-api", - "sp-authority-discovery", - "sp-block-builder", - "sp-consensus-babe", - "sp-core", - "sp-inherents", - "sp-keyring", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-staking", - "sp-std", - "sp-transaction-pool", - "sp-version", - "substrate-wasm-builder-runner", + "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" +version = "0.4.0" dependencies = [ "darwinia-kton", "darwinia-ring", @@ -3138,7 +3189,7 @@ dependencies = [ "frame-system", "frame-system-rpc-runtime-api", "integer-sqrt", - "node-primitives 0.4.0", + "node-primitives", "pallet-authority-discovery", "pallet-authorship", "pallet-babe", @@ -3170,6 +3221,7 @@ dependencies = [ "sp-inherents", "sp-io", "sp-keyring", + "sp-offchain", "sp-runtime", "sp-session", "sp-staking", @@ -3184,7 +3236,7 @@ name = "node-transaction-factory" version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "log", + "log 0.4.8", "parity-scale-codec", "sc-cli", "sc-client", @@ -3226,7 +3278,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9c3f34cdd24f334cb265d9bf8bfa8a241920d026916785747a92f0e55541a1a" dependencies = [ - "autocfg", + "autocfg 0.1.7", "num-integer", "num-traits", ] @@ -3237,7 +3289,7 @@ version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" dependencies = [ - "autocfg", + "autocfg 0.1.7", "num-traits", ] @@ -3247,7 +3299,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2885278d5fe2adc2f75ced642d52d879bffaceb5a2e0b1d4309ffdfb239b454" dependencies = [ - "autocfg", + "autocfg 0.1.7", "num-bigint", "num-integer", "num-traits", @@ -3259,7 +3311,7 @@ version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4c81ffc11c212fa327657cb19dd85eb7419e163b5b076bede2bdb5c974c07e4" dependencies = [ - "autocfg", + "autocfg 0.1.7", ] [[package]] @@ -3309,6 +3361,39 @@ 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", +] + +[[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", +] + [[package]] name = "output_vt100" version = "0.1.2" @@ -3397,22 +3482,6 @@ dependencies = [ "sp-std", ] -[[package]] -name = "pallet-collective" -version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "safe-mix", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", -] - [[package]] name = "pallet-contracts" version = "2.0.0" @@ -3460,34 +3529,6 @@ dependencies = [ "sp-std", ] -[[package]] -name = "pallet-democracy" -version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "safe-mix", - "serde", - "sp-io", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-elections-phragmen" -version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "sp-phragmen", - "sp-runtime", - "sp-std", -] - [[package]] name = "pallet-finality-tracker" version = "2.0.0" @@ -3572,20 +3613,6 @@ dependencies = [ "sp-std", ] -[[package]] -name = "pallet-nicks" -version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "serde", - "sp-io", - "sp-runtime", - "sp-std", -] - [[package]] name = "pallet-offences" version = "2.0.0" @@ -3633,26 +3660,6 @@ dependencies = [ "sp-trie", ] -[[package]] -name = "pallet-staking" -version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" -dependencies = [ - "frame-support", - "frame-system", - "pallet-authorship", - "pallet-session", - "parity-scale-codec", - "safe-mix", - "serde", - "sp-io", - "sp-keyring", - "sp-phragmen", - "sp-runtime", - "sp-staking", - "sp-std", -] - [[package]] name = "pallet-staking-reward-curve" version = "2.0.0" @@ -3737,20 +3744,6 @@ dependencies = [ "sp-std", ] -[[package]] -name = "pallet-treasury" -version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" -dependencies = [ - "frame-support", - "frame-system", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-runtime", - "sp-std", -] - [[package]] name = "pallet-utility" version = "2.0.0" @@ -4191,7 +4184,7 @@ dependencies = [ "bytes 0.4.12", "heck", "itertools", - "log", + "log 0.4.8", "multimap", "petgraph", "prost", @@ -4236,7 +4229,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f7a12f176deee919f4ba55326ee17491c8b707d0987aed822682c821b660192" dependencies = [ "byteorder 1.3.2", - "log", + "log 0.4.8", "parity-wasm", ] @@ -4293,7 +4286,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "autocfg", + "autocfg 0.1.7", "libc", "rand_chacha 0.1.1", "rand_core 0.4.2", @@ -4325,7 +4318,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" dependencies = [ - "autocfg", + "autocfg 0.1.7", "rand_core 0.3.1", ] @@ -4422,7 +4415,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "autocfg", + "autocfg 0.1.7", "rand_core 0.4.2", ] @@ -4610,7 +4603,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b25a18b1bf7387f0145e7f8324e700805aade3842dd3db2e74e4cdeb4677c09e" dependencies = [ "base64 0.10.1", - "log", + "log 0.4.8", "ring", "sct", "webpki", @@ -4653,6 +4646,12 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + [[package]] name = "sc-authority-discovery" version = "2.0.0" @@ -4663,7 +4662,7 @@ dependencies = [ "futures 0.3.1", "futures-timer 2.0.2", "libp2p", - "log", + "log 0.4.8", "parity-scale-codec", "prost", "prost-build", @@ -4683,7 +4682,7 @@ version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ "futures 0.3.1", - "log", + "log 0.4.8", "parity-scale-codec", "sc-block-builder", "sc-client", @@ -4752,7 +4751,7 @@ dependencies = [ "fdlimit", "futures 0.3.1", "lazy_static", - "log", + "log 0.4.8", "names", "regex", "rpassword", @@ -4784,7 +4783,7 @@ dependencies = [ "hash-db", "hex-literal", "kvdb", - "log", + "log 0.4.8", "parity-scale-codec", "parking_lot 0.9.0", "sc-block-builder", @@ -4817,7 +4816,7 @@ dependencies = [ "hash-db", "hex-literal", "kvdb", - "log", + "log 0.4.8", "parity-scale-codec", "parking_lot 0.9.0", "sc-executor", @@ -4847,7 +4846,7 @@ dependencies = [ "kvdb-memorydb", "kvdb-rocksdb", "linked-hash-map", - "log", + "log 0.4.8", "parity-scale-codec", "parking_lot 0.9.0", "sc-client", @@ -4872,7 +4871,7 @@ dependencies = [ "futures 0.1.29", "futures 0.3.1", "futures-timer 0.4.0", - "log", + "log 0.4.8", "merlin", "num-bigint", "num-rational", @@ -4909,7 +4908,7 @@ source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc dependencies = [ "futures 0.3.1", "futures-timer 2.0.2", - "log", + "log 0.4.8", "parity-scale-codec", "parking_lot 0.9.0", "sc-client-api", @@ -4926,7 +4925,7 @@ name = "sc-consensus-uncles" version = "0.8.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "log", + "log 0.4.8", "sc-client-api", "sp-authorship", "sp-consensus", @@ -4943,7 +4942,7 @@ dependencies = [ "derive_more", "lazy_static", "libsecp256k1", - "log", + "log 0.4.8", "parity-scale-codec", "parity-wasm", "parking_lot 0.9.0", @@ -4968,7 +4967,7 @@ version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ "derive_more", - "log", + "log 0.4.8", "parity-scale-codec", "sp-core", "sp-runtime-interface", @@ -4982,7 +4981,7 @@ name = "sc-executor-wasmi" version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "log", + "log 0.4.8", "parity-scale-codec", "parity-wasm", "sc-executor-common", @@ -5003,7 +5002,7 @@ dependencies = [ "cranelift-frontend", "cranelift-native", "cranelift-wasm", - "log", + "log 0.4.8", "parity-scale-codec", "parity-wasm", "sc-executor-common", @@ -5027,7 +5026,7 @@ dependencies = [ "futures 0.1.29", "futures 0.3.1", "futures-timer 2.0.2", - "log", + "log 0.4.8", "parity-scale-codec", "parking_lot 0.9.0", "rand 0.7.2", @@ -5080,7 +5079,7 @@ dependencies = [ "libp2p", "linked-hash-map", "linked_hash_set", - "log", + "log 0.4.8", "lru 0.4.3", "parity-scale-codec", "parking_lot 0.9.0", @@ -5116,7 +5115,7 @@ dependencies = [ "futures 0.3.1", "futures-timer 0.4.0", "libp2p", - "log", + "log 0.4.8", "lru 0.1.17", "parking_lot 0.9.0", "sc-network", @@ -5135,7 +5134,7 @@ dependencies = [ "futures-timer 2.0.2", "hyper 0.12.35", "hyper-rustls", - "log", + "log 0.4.8", "num_cpus", "parity-scale-codec", "parking_lot 0.9.0", @@ -5157,7 +5156,7 @@ source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc dependencies = [ "futures 0.3.1", "libp2p", - "log", + "log 0.4.8", "serde_json", ] @@ -5170,7 +5169,7 @@ dependencies = [ "hash-db", "jsonrpc-core", "jsonrpc-pubsub", - "log", + "log 0.4.8", "parity-scale-codec", "parking_lot 0.9.0", "sc-client", @@ -5201,7 +5200,7 @@ dependencies = [ "jsonrpc-core-client", "jsonrpc-derive", "jsonrpc-pubsub", - "log", + "log 0.4.8", "parity-scale-codec", "parking_lot 0.9.0", "serde", @@ -5221,7 +5220,7 @@ dependencies = [ "jsonrpc-http-server", "jsonrpc-pubsub", "jsonrpc-ws-server", - "log", + "log 0.4.8", "serde", "serde_json", "sp-runtime", @@ -5238,7 +5237,7 @@ dependencies = [ "futures 0.3.1", "grafana-data-source", "lazy_static", - "log", + "log 0.4.8", "parity-multiaddr 0.5.0", "parity-scale-codec", "parking_lot 0.9.0", @@ -5274,33 +5273,12 @@ dependencies = [ "tracing", ] -[[package]] -name = "sc-service-test" -version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" -dependencies = [ - "env_logger 0.7.1", - "fdlimit", - "futures 0.1.29", - "futures 0.3.1", - "log", - "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 = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ - "log", + "log 0.4.8", "parity-scale-codec", "parking_lot 0.9.0", "sp-core", @@ -5316,7 +5294,7 @@ dependencies = [ "futures 0.3.1", "futures-timer 2.0.2", "libp2p", - "log", + "log 0.4.8", "parking_lot 0.9.0", "rand 0.7.2", "serde", @@ -5335,7 +5313,7 @@ source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc dependencies = [ "erased-serde", "grafana-data-source", - "log", + "log 0.4.8", "parking_lot 0.9.0", "sc-telemetry", "serde", @@ -5351,7 +5329,7 @@ source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc dependencies = [ "derive_more", "futures 0.3.1", - "log", + "log 0.4.8", "parking_lot 0.9.0", "serde", "sp-core", @@ -5366,7 +5344,7 @@ source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc dependencies = [ "derive_more", "futures 0.3.1", - "log", + "log 0.4.8", "parity-scale-codec", "parking_lot 0.9.0", "sc-client-api", @@ -5378,6 +5356,16 @@ dependencies = [ "sp-transaction-pool", ] +[[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", +] + [[package]] name = "schnorrkel" version = "0.8.5" @@ -5437,6 +5425,27 @@ dependencies = [ "untrusted", ] +[[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", +] + +[[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", +] + [[package]] name = "semver" version = "0.9.0" @@ -5638,7 +5647,7 @@ dependencies = [ "futures 0.1.29", "http 0.1.21", "httparse", - "log", + "log 0.4.8", "rand 0.6.5", "sha1", "smallvec 0.6.13", @@ -5744,7 +5753,7 @@ version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ "derive_more", - "log", + "log 0.4.8", "lru 0.4.3", "parity-scale-codec", "parking_lot 0.9.0", @@ -5763,7 +5772,7 @@ dependencies = [ "futures 0.3.1", "futures-timer 0.4.0", "libp2p", - "log", + "log 0.4.8", "parity-scale-codec", "parking_lot 0.9.0", "sp-core", @@ -5804,7 +5813,7 @@ dependencies = [ "impl-serde", "lazy_static", "libsecp256k1", - "log", + "log 0.4.8", "num-traits", "parity-scale-codec", "parking_lot 0.9.0", @@ -5890,7 +5899,7 @@ source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc dependencies = [ "hash-db", "libsecp256k1", - "log", + "log 0.4.8", "parity-scale-codec", "sp-core", "sp-externalities", @@ -5926,17 +5935,7 @@ version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ "backtrace", - "log", -] - -[[package]] -name = "sp-phragmen" -version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" -dependencies = [ - "serde", - "sp-runtime", - "sp-std", + "log 0.4.8", ] [[package]] @@ -5954,7 +5953,7 @@ version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ "impl-trait-for-tuples", - "log", + "log 0.4.8", "parity-scale-codec", "paste", "rand 0.7.2", @@ -6041,7 +6040,7 @@ version = "2.0.0" source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc3502aa93453580a07dc402#c2fccb36ffacd118fc3502aa93453580a07dc402" dependencies = [ "hash-db", - "log", + "log 0.4.8", "num-traits", "parity-scale-codec", "parking_lot 0.9.0", @@ -6090,7 +6089,7 @@ source = "git+https://github.com/paritytech/substrate.git?rev=c2fccb36ffacd118fc dependencies = [ "derive_more", "futures 0.3.1", - "log", + "log 0.4.8", "parity-scale-codec", "serde", "sp-api", @@ -6254,7 +6253,7 @@ dependencies = [ "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", - "log", + "log 0.4.8", "parity-scale-codec", "sc-client", "serde", @@ -6587,7 +6586,7 @@ checksum = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" dependencies = [ "bytes 0.4.12", "futures 0.1.29", - "log", + "log 0.4.8", ] [[package]] @@ -6599,7 +6598,7 @@ dependencies = [ "crossbeam-utils 0.6.6", "futures 0.1.29", "lazy_static", - "log", + "log 0.4.8", "mio", "num_cpus", "parking_lot 0.9.0", @@ -6669,7 +6668,7 @@ dependencies = [ "crossbeam-utils 0.6.6", "futures 0.1.29", "lazy_static", - "log", + "log 0.4.8", "num_cpus", "slab", "tokio-executor 0.1.9", @@ -6687,6 +6686,17 @@ dependencies = [ "tokio-executor 0.1.9", ] +[[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", +] + [[package]] name = "tokio-udp" version = "0.1.5" @@ -6695,7 +6705,7 @@ checksum = "f02298505547f73e60f568359ef0d016d5acd6e830ab9bc7c4a5b3403440121b" dependencies = [ "bytes 0.4.12", "futures 0.1.29", - "log", + "log 0.4.8", "mio", "tokio-codec", "tokio-io", @@ -6712,7 +6722,7 @@ dependencies = [ "futures 0.1.29", "iovec", "libc", - "log", + "log 0.4.8", "mio", "mio-uds", "tokio-codec", @@ -6729,7 +6739,7 @@ dependencies = [ "bytes 0.5.3", "futures-core", "futures-sink", - "log", + "log 0.4.8", "pin-project-lite", "tokio 0.2.6", ] @@ -6779,6 +6789,12 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "traitobject" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" + [[package]] name = "trie-db" version = "0.16.0" @@ -6788,7 +6804,7 @@ dependencies = [ "elastic-array", "hash-db", "hashbrown 0.6.3", - "log", + "log 0.4.8", "rand 0.6.5", ] @@ -6827,6 +6843,12 @@ dependencies = [ "rand 0.7.2", ] +[[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" @@ -6845,6 +6867,15 @@ dependencies = [ "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", +] + [[package]] name = "unicase" version = "2.6.0" @@ -6982,7 +7013,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" dependencies = [ "futures 0.1.29", - "log", + "log 0.4.8", "try-lock", ] @@ -6992,7 +7023,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" dependencies = [ - "log", + "log 0.4.8", "try-lock", ] @@ -7020,7 +7051,7 @@ checksum = "b58e66a093a7b7571cb76409763c495b8741ac4319ac20acc2b798f6766d92ee" dependencies = [ "bumpalo", "lazy_static", - "log", + "log 0.4.8", "proc-macro2 1.0.6", "quote 1.0.2", "syn 1.0.11", @@ -7077,7 +7108,7 @@ checksum = "f85a3825a459cf6a929d03bacb54dca37a614d43032ad1343ef2d4822972947d" dependencies = [ "anyhow", "heck", - "log", + "log 0.4.8", "proc-macro2 1.0.6", "quote 1.0.2", "syn 1.0.11", @@ -7165,7 +7196,7 @@ dependencies = [ "indexmap", "lazy_static", "libc", - "log", + "log 0.4.8", "more-asserts", "rayon", "serde", @@ -7262,6 +7293,47 @@ dependencies = [ "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", + "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", + "bitflags", + "byteorder 1.3.2", + "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" @@ -7343,7 +7415,7 @@ dependencies = [ "byteorder 1.3.2", "bytes 0.4.12", "httparse", - "log", + "log 0.4.8", "mio", "mio-extras", "rand 0.7.2", @@ -7387,7 +7459,7 @@ checksum = "2758f29014c1cb7a6e74c1b1160ac8c8203be342d35b73462fc6a13cc6385423" dependencies = [ "bytes 0.4.12", "futures 0.1.29", - "log", + "log 0.4.8", "nohash-hasher", "parking_lot 0.9.0", "quick-error", diff --git a/Cargo.toml b/Cargo.toml index 5e1b3dad2..cc75aceb3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,10 @@ [workspace] members = [ "bin/node/cli", - "bin/node/primitives", + "bin/node/executor", + "bin/node/primitives", + "bin/node/rpc-client", + "bin/node/rpc", "bin/node/runtime", "frame/balances/kton", "frame/balances/ring", diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml index 0624bae9d..02f2b95dc 100644 --- a/bin/node/cli/Cargo.toml +++ b/bin/node/cli/Cargo.toml @@ -68,17 +68,18 @@ pallet-indices = { version = "2.0.0", git = "https://github.com/paritytech/subst pallet-timestamp = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-contracts = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } frame-system = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -pallet-balances = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-transaction-payment = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } frame-support = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-im-online = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } pallet-authority-discovery = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +#pallet-ring = { package = "darwinia-ring", path = "../../../frame/balances/ring" } + # node-specific dependencies -node-runtime = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -node-rpc = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -node-primitives = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -node-executor = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +node-executor = { path = "../executor" } +node-primitives = { path = "../primitives" } +node-rpc = { path = "../rpc" } +node-runtime = { path = "../runtime" } # CLI-specific dependencies tokio = { version = "0.1.22", optional = true } @@ -97,13 +98,6 @@ wasm-bindgen-futures = { version = "0.3.22", optional = true } kvdb-memorydb = { version = "0.1.1", optional = true } rand6 = { package = "rand", version = "0.6", features = ["wasm-bindgen"], optional = true } # Imported just for the `wasm-bindgen` feature -[dev-dependencies] -sc-keystore = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -sc-consensus-babe = { version = "0.8", features = ["test-helpers"], git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -sc-service-test = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -futures = "0.3.1" -tempfile = "3.1.0" - [build-dependencies] sc-cli = { version = "2.0.0", package = "sc-cli", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } build-script-utils = { version = "2.0.0", package = "substrate-build-script-utils", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index 140339386..5256051c1 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -20,26 +20,24 @@ use std::sync::Arc; -use sc_consensus_babe; -use sc_client::{self, LongestChain}; use grandpa::{self, FinalityProofProvider as GrandpaFinalityProofProvider}; use node_executor; use node_primitives::Block; use node_runtime::{GenesisConfig, RuntimeApi}; -use sc_service::{ - AbstractService, ServiceBuilder, config::Configuration, error::{Error as ServiceError}, -}; -use sp_inherents::InherentDataProviders; +use sc_client::{self, LongestChain}; +use sc_consensus_babe; use sc_network::construct_simple_protocol; +use sc_service::{config::Configuration, error::Error as ServiceError, AbstractService, ServiceBuilder}; +use sp_inherents::InherentDataProviders; -use sc_service::{Service, NetworkStatus}; +use node_executor::NativeExecutor; use sc_client::{Client, LocalCallExecutor}; use sc_client_db::Backend; -use sp_runtime::traits::Block as BlockT; -use node_executor::NativeExecutor; use sc_network::NetworkService; use sc_offchain::OffchainWorkers; +use sc_service::{NetworkStatus, Service}; use sp_core::Blake2Hasher; +use sp_runtime::traits::Block as BlockT; construct_simple_protocol! { /// Demo protocol attachment for substrate. @@ -57,54 +55,53 @@ macro_rules! new_full_start { let inherent_data_providers = sp_inherents::InherentDataProviders::new(); let builder = sc_service::ServiceBuilder::new_full::< - node_primitives::Block, node_runtime::RuntimeApi, node_executor::Executor + node_primitives::Block, + node_runtime::RuntimeApi, + node_executor::Executor, >($config)? - .with_select_chain(|_config, backend| { - Ok(sc_client::LongestChain::new(backend.clone())) - })? - .with_transaction_pool(|config, client, _fetcher| { - let pool_api = sc_transaction_pool::FullChainApi::new(client.clone()); - let pool = sc_transaction_pool::BasicPool::new(config, pool_api); - let maintainer = sc_transaction_pool::FullBasicPoolMaintainer::new(pool.pool().clone(), client); - let maintainable_pool = sp_transaction_pool::MaintainableTransactionPool::new(pool, maintainer); - Ok(maintainable_pool) - })? - .with_import_queue(|_config, client, mut select_chain, _transaction_pool| { - let select_chain = select_chain.take() - .ok_or_else(|| sc_service::Error::SelectChainRequired)?; - let (grandpa_block_import, grandpa_link) = grandpa::block_import( - client.clone(), - &*client, - select_chain, - )?; - let justification_import = grandpa_block_import.clone(); - - let (block_import, babe_link) = sc_consensus_babe::block_import( - sc_consensus_babe::Config::get_or_compute(&*client)?, - grandpa_block_import, - client.clone(), - client.clone(), - )?; - - let import_queue = sc_consensus_babe::import_queue( - babe_link.clone(), - block_import.clone(), - Some(Box::new(justification_import)), - None, - client.clone(), - client, - inherent_data_providers.clone(), - )?; - - import_setup = Some((block_import, grandpa_link, babe_link)); - Ok(import_queue) - })? - .with_rpc_extensions(|client, pool, _backend, fetcher, _remote_blockchain| -> Result { + .with_select_chain(|_config, backend| Ok(sc_client::LongestChain::new(backend.clone())))? + .with_transaction_pool(|config, client, _fetcher| { + let pool_api = sc_transaction_pool::FullChainApi::new(client.clone()); + let pool = sc_transaction_pool::BasicPool::new(config, pool_api); + let maintainer = sc_transaction_pool::FullBasicPoolMaintainer::new(pool.pool().clone(), client); + let maintainable_pool = sp_transaction_pool::MaintainableTransactionPool::new(pool, maintainer); + Ok(maintainable_pool) + })? + .with_import_queue(|_config, client, mut select_chain, _transaction_pool| { + let select_chain = select_chain + .take() + .ok_or_else(|| sc_service::Error::SelectChainRequired)?; + let (grandpa_block_import, grandpa_link) = grandpa::block_import(client.clone(), &*client, select_chain)?; + let justification_import = grandpa_block_import.clone(); + + let (block_import, babe_link) = sc_consensus_babe::block_import( + sc_consensus_babe::Config::get_or_compute(&*client)?, + grandpa_block_import, + client.clone(), + client.clone(), + )?; + + let import_queue = sc_consensus_babe::import_queue( + babe_link.clone(), + block_import.clone(), + Some(Box::new(justification_import)), + None, + client.clone(), + client, + inherent_data_providers.clone(), + )?; + + import_setup = Some((block_import, grandpa_link, babe_link)); + Ok(import_queue) + })? + .with_rpc_extensions( + |client, pool, _backend, fetcher, _remote_blockchain| -> Result { Ok(node_rpc::create(client, pool, node_rpc::LightDeps::none(fetcher))) - })?; + }, + )?; (builder, import_setup, inherent_data_providers) - }} + }}; } /// Creates a full service from the configuration. @@ -113,27 +110,21 @@ macro_rules! new_full_start { /// concrete types instead. macro_rules! new_full { ($config:expr, $with_startup_data: expr) => {{ - use futures01::sync::mpsc; - use sc_network::DhtEvent; use futures::{ compat::Stream01CompatExt, - stream::StreamExt, future::{FutureExt, TryFutureExt}, - }; + stream::StreamExt, + }; + use futures01::sync::mpsc; + use sc_network::DhtEvent; - let ( - is_authority, - force_authoring, - name, - disable_grandpa, - sentry_nodes, - ) = ( + let (is_authority, force_authoring, name, disable_grandpa, sentry_nodes) = ( $config.roles.is_authority(), $config.force_authoring, $config.name.clone(), $config.disable_grandpa, $config.network.sentry_nodes.clone(), - ); + ); // sentry nodes announce themselves as authorities to the network // and should run the same protocols authorities do, but it should @@ -146,18 +137,19 @@ macro_rules! new_full { // back-pressure. Authority discovery is triggering one event per authority within the current authority set. // This estimates the authority set size to be somewhere below 10 000 thereby setting the channel buffer size to // 10 000. - let (dht_event_tx, dht_event_rx) = - mpsc::channel::(10_000); + let (dht_event_tx, dht_event_rx) = mpsc::channel::(10_000); - let service = builder.with_network_protocol(|_| Ok(crate::service::NodeProtocol::new()))? - .with_finality_proof_provider(|client, backend| + let service = builder + .with_network_protocol(|_| Ok(crate::service::NodeProtocol::new()))? + .with_finality_proof_provider(|client, backend| { Ok(Arc::new(grandpa::FinalityProofProvider::new(backend, client)) as _) - )? + })? .with_dht_event_tx(dht_event_tx)? .build()?; - let (block_import, grandpa_link, babe_link) = import_setup.take() - .expect("Link Half and Block Import are present for Full Services or setup failed before. qed"); + let (block_import, grandpa_link, babe_link) = import_setup + .take() + .expect("Link Half and Block Import are present for Full Services or setup failed before. qed"); ($with_startup_data)(&block_import, &babe_link); @@ -168,11 +160,9 @@ macro_rules! new_full { }; let client = service.client(); - let select_chain = service.select_chain() - .ok_or(sc_service::Error::SelectChainRequired)?; + let select_chain = service.select_chain().ok_or(sc_service::Error::SelectChainRequired)?; - let can_author_with = - sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()); + let can_author_with = sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()); let babe_config = sc_consensus_babe::BabeParams { keystore: service.keystore(), @@ -190,7 +180,8 @@ macro_rules! new_full { let babe = sc_consensus_babe::start_babe(babe_config)?; service.spawn_essential_task(babe); - let future03_dht_event_rx = dht_event_rx.compat() + let future03_dht_event_rx = dht_event_rx + .compat() .map(|x| x.expect(" never returns an error; qed")) .boxed(); let authority_discovery = sc_authority_discovery::AuthorityDiscovery::new( @@ -203,7 +194,7 @@ macro_rules! new_full { let future01_authority_discovery = authority_discovery.map(|x| Ok(x)).compat(); service.spawn_task(future01_authority_discovery); - } + } // if the node isn't actively participating in consensus then it doesn't // need a keystore, regardless of which protocol we use below. @@ -211,7 +202,7 @@ macro_rules! new_full { Some(service.keystore()) } else { None - }; + }; let config = grandpa::Config { // FIXME #1578 make this available through chainspec @@ -221,7 +212,7 @@ macro_rules! new_full { observer_enabled: true, keystore, is_authority, - }; + }; match (is_authority, disable_grandpa) { (false, false) => { @@ -233,11 +224,11 @@ macro_rules! new_full { service.on_exit(), service.spawn_task_handle(), )?); - }, + } (true, false) => { // start the full GRANDPA voter let grandpa_config = grandpa::GrandpaParams { - config: config, + config, link: grandpa_link, network: service.network(), inherent_data_providers: inherent_data_providers.clone(), @@ -249,54 +240,46 @@ macro_rules! new_full { // the GRANDPA voter task is considered infallible, i.e. // if it fails we take down the service with it. service.spawn_essential_task(grandpa::run_grandpa_voter(grandpa_config)?); - }, + } (_, true) => { - grandpa::setup_disabled_grandpa( - service.client(), - &inherent_data_providers, - service.network(), - )?; - }, - } + grandpa::setup_disabled_grandpa(service.client(), &inherent_data_providers, service.network())?; + } + } Ok((service, inherent_data_providers)) - }}; + }}; ($config:expr) => {{ new_full!($config, |_, _| {}) - }} + }}; } #[allow(dead_code)] type ConcreteBlock = node_primitives::Block; #[allow(dead_code)] -type ConcreteClient = - Client< - Backend, - LocalCallExecutor, - NativeExecutor>, - ConcreteBlock, - node_runtime::RuntimeApi - >; +type ConcreteClient = Client< + Backend, + LocalCallExecutor, NativeExecutor>, + ConcreteBlock, + node_runtime::RuntimeApi, +>; #[allow(dead_code)] type ConcreteBackend = Backend; #[allow(dead_code)] type ConcreteTransactionPool = sp_transaction_pool::MaintainableTransactionPool< - sc_transaction_pool::BasicPool< - sc_transaction_pool::FullChainApi, - ConcreteBlock - >, + sc_transaction_pool::BasicPool, ConcreteBlock>, sc_transaction_pool::FullBasicPoolMaintainer< ConcreteClient, - sc_transaction_pool::FullChainApi - > + sc_transaction_pool::FullChainApi, + >, >; /// A specialized configuration object for setting up the node.. pub type NodeConfiguration = Configuration; /// Builds a new service for a full client. -pub fn new_full(config: NodeConfiguration) --> Result< +pub fn new_full( + config: NodeConfiguration, +) -> Result< Service< ConcreteBlock, ConcreteClient, @@ -308,30 +291,28 @@ pub fn new_full(config: NodeConfiguration) ConcreteClient, >::OffchainStorage, ConcreteBlock, - > + >, >, ServiceError, -> -{ +> { new_full!(config).map(|(service, _)| service) } /// Builds a new service for a light client. -pub fn new_light(config: NodeConfiguration) --> Result { +pub fn new_light( + config: NodeConfiguration, +) -> Result { type RpcExtension = jsonrpc_core::IoHandler; let inherent_data_providers = InherentDataProviders::new(); let service = ServiceBuilder::new_light::(config)? - .with_select_chain(|_config, backend| { - Ok(LongestChain::new(backend.clone())) - })? + .with_select_chain(|_config, backend| Ok(LongestChain::new(backend.clone())))? .with_transaction_pool(|config, client, fetcher| { - let fetcher = fetcher - .ok_or_else(|| "Trying to start light transaction pool without active fetcher")?; + let fetcher = fetcher.ok_or_else(|| "Trying to start light transaction pool without active fetcher")?; let pool_api = sc_transaction_pool::LightChainApi::new(client.clone(), fetcher.clone()); let pool = sc_transaction_pool::BasicPool::new(config, pool_api); - let maintainer = sc_transaction_pool::LightBasicPoolMaintainer::with_defaults(pool.pool().clone(), client, fetcher); + let maintainer = + sc_transaction_pool::LightBasicPoolMaintainer::with_defaults(pool.pool().clone(), client, fetcher); let maintainable_pool = sp_transaction_pool::MaintainableTransactionPool::new(pool, maintainer); Ok(maintainable_pool) })? @@ -347,8 +328,7 @@ pub fn new_light(config: NodeConfiguration) )?; let finality_proof_import = grandpa_block_import.clone(); - let finality_proof_request_builder = - finality_proof_import.create_finality_proof_request_builder(); + let finality_proof_request_builder = finality_proof_import.create_finality_proof_request_builder(); let (babe_block_import, babe_link) = sc_consensus_babe::block_import( sc_consensus_babe::Config::get_or_compute(&*client)?, @@ -370,271 +350,23 @@ 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| + .with_finality_proof_provider(|client, backend| { Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, client)) as _) - )? - .with_rpc_extensions(|client, pool, _backend, fetcher, remote_blockchain| -> Result { - let fetcher = fetcher - .ok_or_else(|| "Trying to start node RPC without active fetcher")?; - let remote_blockchain = remote_blockchain - .ok_or_else(|| "Trying to start node RPC without active remote blockchain")?; - - let light_deps = node_rpc::LightDeps { remote_blockchain, fetcher }; - Ok(node_rpc::create(client, pool, Some(light_deps))) })? + .with_rpc_extensions( + |client, pool, _backend, fetcher, remote_blockchain| -> Result { + let fetcher = fetcher.ok_or_else(|| "Trying to start node RPC without active fetcher")?; + let remote_blockchain = + remote_blockchain.ok_or_else(|| "Trying to start node RPC without active remote blockchain")?; + + let light_deps = node_rpc::LightDeps { + remote_blockchain, + fetcher, + }; + Ok(node_rpc::create(client, pool, Some(light_deps))) + }, + )? .build()?; Ok(service) } - -#[cfg(test)] -mod tests { - use std::sync::Arc; - use sc_consensus_babe::CompatibleDigestItem; - use sp_consensus::{ - Environment, Proposer, BlockImportParams, BlockOrigin, ForkChoiceStrategy, BlockImport, - }; - use node_primitives::{Block, DigestItem, Signature}; - use node_runtime::{BalancesCall, Call, UncheckedExtrinsic, Address}; - use node_runtime::constants::{currency::CENTS, time::SLOT_DURATION}; - use codec::{Encode, Decode}; - use sp_core::{crypto::Pair as CryptoPair, H256}; - use sp_runtime::{ - generic::{BlockId, Era, Digest, SignedPayload}, - traits::Block as BlockT, - traits::Verify, - OpaqueExtrinsic, - }; - use sp_timestamp; - use sp_finality_tracker; - use sp_keyring::AccountKeyring; - use sc_service::AbstractService; - use crate::service::{new_full, new_light}; - use sp_runtime::traits::IdentifyAccount; - - type AccountPublic = ::Signer; - - #[cfg(feature = "rhd")] - fn test_sync() { - use sp_core::ed25519::Pair; - - use {service_test, Factory}; - use sc_client::{BlockImportParams, BlockOrigin}; - - let alice: Arc = Arc::new(Keyring::Alice.into()); - let bob: Arc = Arc::new(Keyring::Bob.into()); - let validators = vec![alice.public().0.into(), bob.public().0.into()]; - let keys: Vec<&ed25519::Pair> = vec![&*alice, &*bob]; - let dummy_runtime = ::tokio::runtime::Runtime::new().unwrap(); - let block_factory = |service: &::FullService| { - let block_id = BlockId::number(service.client().info().chain.best_number); - let parent_header = service.client().header(&block_id).unwrap().unwrap(); - let consensus_net = ConsensusNetwork::new(service.network(), service.client().clone()); - let proposer_factory = consensus::ProposerFactory { - client: service.client().clone(), - transaction_pool: service.transaction_pool().clone(), - network: consensus_net, - force_delay: 0, - handle: dummy_runtime.executor(), - }; - let (proposer, _, _) = proposer_factory.init(&parent_header, &validators, alice.clone()).unwrap(); - let block = proposer.propose().expect("Error making test block"); - BlockImportParams { - origin: BlockOrigin::File, - justification: Vec::new(), - internal_justification: Vec::new(), - finalized: false, - body: Some(block.extrinsics), - header: block.header, - auxiliary: Vec::new(), - } - }; - let extrinsic_factory = - |service: &SyncService<::FullService>| - { - let payload = ( - 0, - Call::Balances(BalancesCall::transfer(RawAddress::Id(bob.public().0.into()), 69.into())), - Era::immortal(), - service.client().genesis_hash() - ); - let signature = alice.sign(&payload.encode()).into(); - let id = alice.public().0.into(); - let xt = UncheckedExtrinsic { - signature: Some((RawAddress::Id(id), signature, payload.0, Era::immortal())), - function: payload.1, - }.encode(); - let v: Vec = Decode::decode(&mut xt.as_slice()).unwrap(); - OpaqueExtrinsic(v) - }; - sc_service_test::sync( - sc_chain_spec::integration_test_config(), - |config| new_full(config), - |mut config| new_light(config), - block_factory, - extrinsic_factory, - ); - } - - #[test] - #[ignore] - fn test_sync() { - let keystore_path = tempfile::tempdir().expect("Creates keystore path"); - let keystore = sc_keystore::Store::open(keystore_path.path(), None) - .expect("Creates keystore"); - let alice = keystore.write().insert_ephemeral_from_seed::("//Alice") - .expect("Creates authority pair"); - - let chain_spec = crate::chain_spec::tests::integration_test_config_with_single_authority(); - - // For the block factory - let mut slot_num = 1u64; - - // For the extrinsics factory - let bob = Arc::new(AccountKeyring::Bob.pair()); - let charlie = Arc::new(AccountKeyring::Charlie.pair()); - let mut index = 0; - - sc_service_test::sync( - chain_spec, - |config| { - let mut setup_handles = None; - new_full!(config, | - block_import: &sc_consensus_babe::BabeBlockImport<_, _, Block, _, _, _>, - babe_link: &sc_consensus_babe::BabeLink, - | { - setup_handles = Some((block_import.clone(), babe_link.clone())); - }).map(move |(node, x)| (node, (x, setup_handles.unwrap()))) - }, - |config| new_light(config), - |service, &mut (ref inherent_data_providers, (ref mut block_import, ref babe_link))| { - let mut inherent_data = inherent_data_providers - .create_inherent_data() - .expect("Creates inherent data."); - inherent_data.replace_data(sp_finality_tracker::INHERENT_IDENTIFIER, &1u64); - - let parent_id = BlockId::number(service.client().info().chain.best_number); - let parent_header = service.client().header(&parent_id).unwrap().unwrap(); - let mut proposer_factory = sc_basic_authority::ProposerFactory { - client: service.client(), - transaction_pool: service.transaction_pool(), - }; - - let mut digest = Digest::::default(); - - // even though there's only one authority some slots might be empty, - // so we must keep trying the next slots until we can claim one. - let babe_pre_digest = loop { - inherent_data.replace_data(sp_timestamp::INHERENT_IDENTIFIER, &(slot_num * SLOT_DURATION)); - if let Some(babe_pre_digest) = sc_consensus_babe::test_helpers::claim_slot( - slot_num, - &parent_header, - &*service.client(), - &keystore, - &babe_link, - ) { - break babe_pre_digest; - } - - slot_num += 1; - }; - - digest.push(::babe_pre_digest(babe_pre_digest)); - - let mut proposer = proposer_factory.init(&parent_header).unwrap(); - let new_block = futures::executor::block_on(proposer.propose( - inherent_data, - digest, - std::time::Duration::from_secs(1), - )).expect("Error making test block"); - - let (new_header, new_body) = new_block.deconstruct(); - let pre_hash = new_header.hash(); - // sign the pre-sealed hash of the block and then - // add it to a digest item. - let to_sign = pre_hash.encode(); - let signature = alice.sign(&to_sign[..]); - let item = ::babe_seal( - signature.into(), - ); - slot_num += 1; - - let params = BlockImportParams { - origin: BlockOrigin::File, - header: new_header, - justification: None, - post_digests: vec![item], - body: Some(new_body), - finalized: false, - auxiliary: Vec::new(), - fork_choice: ForkChoiceStrategy::LongestChain, - allow_missing_state: false, - import_existing: false, - }; - - block_import.import_block(params, Default::default()) - .expect("error importing test block"); - }, - |service, _| { - let amount = 5 * CENTS; - let to: Address = AccountPublic::from(bob.public()).into_account().into(); - let from: Address = AccountPublic::from(charlie.public()).into_account().into(); - let genesis_hash = service.client().block_hash(0).unwrap().unwrap(); - let best_block_id = BlockId::number(service.client().info().chain.best_number); - let version = service.client().runtime_version_at(&best_block_id).unwrap().spec_version; - let signer = charlie.clone(); - - let function = Call::Balances(BalancesCall::transfer(to.into(), amount)); - - let check_version = frame_system::CheckVersion::new(); - let check_genesis = frame_system::CheckGenesis::new(); - let check_era = frame_system::CheckEra::from(Era::Immortal); - let check_nonce = frame_system::CheckNonce::from(index); - let check_weight = frame_system::CheckWeight::new(); - let payment = pallet_transaction_payment::ChargeTransactionPayment::from(0); - let extra = ( - check_version, - check_genesis, - check_era, - check_nonce, - check_weight, - payment, - Default::default(), - ); - let raw_payload = SignedPayload::from_raw( - function, - extra, - (version, genesis_hash, genesis_hash, (), (), (), ()) - ); - let signature = raw_payload.using_encoded(|payload| { - signer.sign(payload) - }); - let (function, extra, _) = raw_payload.deconstruct(); - let xt = UncheckedExtrinsic::new_signed( - function, - from.into(), - signature.into(), - extra, - ).encode(); - let v: Vec = Decode::decode(&mut xt.as_slice()).unwrap(); - - index += 1; - OpaqueExtrinsic(v) - }, - ); - } - - #[test] - #[ignore] - fn test_consensus() { - sc_service_test::consensus( - crate::chain_spec::tests::integration_test_config_with_two_authorities(), - |config| new_full(config), - |config| new_light(config), - vec![ - "//Alice".into(), - "//Bob".into(), - ], - ) - } -} diff --git a/bin/node/executor/Cargo.toml b/bin/node/executor/Cargo.toml new file mode 100644 index 000000000..968f8e798 --- /dev/null +++ b/bin/node/executor/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "node-executor" +version = "2.0.0" +authors = ["Parity Technologies "] +description = "Substrate node implementation in Rust." +edition = "2018" + +[dependencies] +trie-root = "0.15.2" +codec = { package = "parity-scale-codec", version = "1.0.0" } +sp-io = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-state-machine = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sc-executor = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-core = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-trie = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +node-primitives = { path = "../primitives" } +node-runtime = { path = "../runtime" } + +[features] +wasmtime = [ + "sc-executor/wasmtime", +] +wasmi-errno = [ + "sc-executor/wasmi-errno", +] diff --git a/bin/node/executor/src/lib.rs b/bin/node/executor/src/lib.rs new file mode 100644 index 000000000..2c9037182 --- /dev/null +++ b/bin/node/executor/src/lib.rs @@ -0,0 +1,1257 @@ +// Copyright 2018-2019 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 `CodeExecutor` specialization which uses natively compiled runtime when the wasm to be +//! executed is equivalent to the natively compiled code. + +pub use sc_executor::NativeExecutor; +use sc_executor::native_executor_instance; + +// Declare an instance of the native executor named `Executor`. Include the wasm binary as the +// equivalent wasm code. +native_executor_instance!( + pub Executor, + node_runtime::api::dispatch, + node_runtime::native_version +); + +#[cfg(test)] +mod tests { + use sc_executor::error::Result; + use super::Executor; + use codec::{Encode, Decode, Joiner}; + use frame_support::{ + Hashable, StorageValue, StorageMap, + traits::Currency, + weights::{GetDispatchInfo, DispatchInfo, DispatchClass}, + }; + use sp_state_machine::TestExternalities as CoreTestExternalities; + use sp_core::{ + Blake2Hasher, NeverNativeValue, NativeOrEncoded, map, + traits::{CodeExecutor, Externalities}, storage::{well_known_keys, Storage}, + }; + use sp_runtime::{ + Fixed64, traits::{Header as HeaderT, Hash as HashT, Convert}, ApplyExtrinsicResult, + transaction_validity::InvalidTransaction, + }; + use pallet_contracts::ContractAddressFor; + use sc_executor::{NativeExecutor, WasmExecutionMethod}; + use frame_system::{EventRecord, Phase}; + use node_runtime::{ + Header, Block, UncheckedExtrinsic, CheckedExtrinsic, Call, Runtime, Balances, BuildStorage, + System, TransactionPayment, Event, TransferFee, TransactionBaseFee, TransactionByteFee, + WeightFeeCoefficient, constants::currency::*, + }; + use node_runtime::impls::LinearWeightToFee; + use node_primitives::{Balance, Hash, BlockNumber}; + use node_testing::keyring::*; + use wabt; + + /// The wasm runtime code. + /// + /// `compact` since it is after post-processing with wasm-gc which performs tree-shaking thus + /// making the binary slimmer. There is a convention to use compact version of the runtime + /// as canonical. This is why `native_executor_instance` also uses the compact version of the + /// runtime. + const COMPACT_CODE: &[u8] = node_runtime::WASM_BINARY; + + /// The wasm runtime binary which hasn't undergone the compacting process. + /// + /// The idea here is to pass it as the current runtime code to the executor so the executor will + /// have to execute provided wasm code instead of the native equivalent. This trick is used to + /// test code paths that differ between native and wasm versions. + const BLOATY_CODE: &[u8] = node_runtime::WASM_BINARY_BLOATY; + + const GENESIS_HASH: [u8; 32] = [69u8; 32]; + + const VERSION: u32 = node_runtime::VERSION.spec_version; + + type TestExternalities = CoreTestExternalities; + + fn sign(xt: CheckedExtrinsic) -> UncheckedExtrinsic { + node_testing::keyring::sign(xt, VERSION, GENESIS_HASH) + } + + /// Default transfer fee + fn transfer_fee(extrinsic: &E, fee_multiplier: Fixed64) -> Balance { + let length_fee = TransactionByteFee::get() * (extrinsic.encode().len() as Balance); + + let weight = default_transfer_call().get_dispatch_info().weight; + let weight_fee = ::WeightToFee::convert(weight); + + let base_fee = TransactionBaseFee::get(); + + base_fee + fee_multiplier.saturated_multiply_accumulate(length_fee + weight_fee) + TransferFee::get() + } + + fn default_transfer_call() -> pallet_balances::Call { + pallet_balances::Call::transfer::(bob().into(), 69 * DOLLARS) + } + + fn xt() -> UncheckedExtrinsic { + sign(CheckedExtrinsic { + signed: Some((alice(), signed_extra(0, 0))), + function: Call::Balances(default_transfer_call()), + }) + } + + fn from_block_number(n: u32) -> Header { + Header::new(n, Default::default(), Default::default(), [69; 32].into(), Default::default()) + } + + fn executor() -> NativeExecutor { + NativeExecutor::new(WasmExecutionMethod::Interpreted, None) + } + + fn set_heap_pages(ext: &mut E, heap_pages: u64) { + ext.place_storage(well_known_keys::HEAP_PAGES.to_vec(), Some(heap_pages.encode())); + } + + fn executor_call< + R:Decode + Encode + PartialEq, + NC: FnOnce() -> std::result::Result + std::panic::UnwindSafe + >( + t: &mut TestExternalities, + method: &str, + data: &[u8], + use_native: bool, + native_call: Option, + ) -> (Result>, bool) { + let mut t = t.ext(); + executor().call::<_, R, NC>( + &mut t, + method, + data, + use_native, + native_call, + ) + } + + #[test] + fn panic_execution_with_foreign_code_gives_error() { + let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { + top: map![ + >::hashed_key_for(alice()) => { + 69_u128.encode() + }, + >::hashed_key().to_vec() => { + 69_u128.encode() + }, + >::hashed_key().to_vec() => { + 0_u128.encode() + }, + >::hashed_key_for(0) => { + vec![0u8; 32] + } + ], + children: map![], + }); + + let r = executor_call:: _>( + &mut t, + "Core_initialize_block", + &vec![].and(&from_block_number(1u32)), + true, + None, + ).0; + assert!(r.is_ok()); + let v = executor_call:: _>( + &mut t, + "BlockBuilder_apply_extrinsic", + &vec![].and(&xt()), + true, + None, + ).0.unwrap(); + let r = ApplyExtrinsicResult::decode(&mut &v.as_encoded()[..]).unwrap(); + assert_eq!(r, Err(InvalidTransaction::Payment.into())); + } + + #[test] + 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()) => { + 69_u128.encode() + }, + >::hashed_key().to_vec() => { + 69_u128.encode() + }, + >::hashed_key().to_vec() => { + 0_u128.encode() + }, + >::hashed_key_for(0) => { + vec![0u8; 32] + } + ], + children: map![], + }); + + let r = executor_call:: _>( + &mut t, + "Core_initialize_block", + &vec![].and(&from_block_number(1u32)), + true, + None, + ).0; + assert!(r.is_ok()); + let v = executor_call:: _>( + &mut t, + "BlockBuilder_apply_extrinsic", + &vec![].and(&xt()), + true, + None, + ).0.unwrap(); + let r = ApplyExtrinsicResult::decode(&mut &v.as_encoded()[..]).unwrap(); + assert_eq!(r, Err(InvalidTransaction::Payment.into())); + } + + #[test] + 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()) => { + (111 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => { + (111 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => vec![0u8; 16], + >::hashed_key_for(0) => vec![0u8; 32] + ], + children: map![], + }); + + let r = executor_call:: _>( + &mut t, + "Core_initialize_block", + &vec![].and(&from_block_number(1u32)), + true, + None, + ).0; + assert!(r.is_ok()); + + let fm = t.execute_with(TransactionPayment::next_fee_multiplier); + + let r = executor_call:: _>( + &mut t, + "BlockBuilder_apply_extrinsic", + &vec![].and(&xt()), + true, + None, + ).0; + assert!(r.is_ok()); + + t.execute_with(|| { + assert_eq!(Balances::total_balance(&alice()), 42 * DOLLARS - transfer_fee(&xt(), fm)); + assert_eq!(Balances::total_balance(&bob()), 69 * DOLLARS); + }); + } + + #[test] + fn successful_execution_with_foreign_code_gives_ok() { + let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { + top: map![ + >::hashed_key_for(alice()) => { + (111 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => { + (111 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => vec![0u8; 16], + >::hashed_key_for(0) => vec![0u8; 32] + ], + children: map![], + }); + + let r = executor_call:: _>( + &mut t, + "Core_initialize_block", + &vec![].and(&from_block_number(1u32)), + true, + None, + ).0; + assert!(r.is_ok()); + + let fm = t.execute_with(TransactionPayment::next_fee_multiplier); + + let r = executor_call:: _>( + &mut t, + "BlockBuilder_apply_extrinsic", + &vec![].and(&xt()), + true, + None, + ).0; + assert!(r.is_ok()); + + t.execute_with(|| { + assert_eq!(Balances::total_balance(&alice()), 42 * DOLLARS - transfer_fee(&xt(), fm)); + assert_eq!(Balances::total_balance(&bob()), 69 * DOLLARS); + }); + } + + 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(), + ); + ext.changes_trie_storage().insert(0, GENESIS_HASH.into(), Default::default()); + ext + } + + fn construct_block( + env: &mut TestExternalities, + number: BlockNumber, + parent_hash: Hash, + extrinsics: Vec, + ) -> (Vec, Hash) { + use sp_trie::{TrieConfiguration, trie_types::Layout}; + + // sign extrinsics. + let extrinsics = extrinsics.into_iter().map(sign).collect::>(); + + // calculate the header fields that we can. + let extrinsics_root = Layout::::ordered_trie_root( + extrinsics.iter().map(Encode::encode) + ).to_fixed_bytes() + .into(); + + let header = Header { + parent_hash, + number, + extrinsics_root, + state_root: Default::default(), + digest: Default::default(), + }; + + // execute the block to get the real header. + executor_call:: _>( + env, + "Core_initialize_block", + &header.encode(), + true, + None, + ).0.unwrap(); + + for i in extrinsics.iter() { + executor_call:: _>( + env, + "BlockBuilder_apply_extrinsic", + &i.encode(), + true, + None, + ).0.unwrap(); + } + + let header = match executor_call:: _>( + env, + "BlockBuilder_finalize_block", + &[0u8;0], + true, + None, + ).0.unwrap() { + NativeOrEncoded::Native(_) => unreachable!(), + NativeOrEncoded::Encoded(h) => Header::decode(&mut &h[..]).unwrap(), + }; + + let hash = header.blake2_256(); + (Block { header, extrinsics }.encode(), hash.into()) + } + + fn changes_trie_block() -> (Vec, Hash) { + construct_block( + &mut new_test_ext(COMPACT_CODE, true), + 1, + GENESIS_HASH.into(), + vec![ + CheckedExtrinsic { + signed: None, + function: Call::Timestamp(pallet_timestamp::Call::set(42 * 1000)), + }, + CheckedExtrinsic { + signed: Some((alice(), signed_extra(0, 0))), + function: Call::Balances(pallet_balances::Call::transfer(bob().into(), 69 * DOLLARS)), + }, + ] + ) + } + + // 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. + fn blocks() -> ((Vec, Hash), (Vec, Hash)) { + let mut t = new_test_ext(COMPACT_CODE, false); + let block1 = construct_block( + &mut t, + 1, + GENESIS_HASH.into(), + vec![ + CheckedExtrinsic { + signed: None, + function: Call::Timestamp(pallet_timestamp::Call::set(42 * 1000)), + }, + CheckedExtrinsic { + signed: Some((alice(), signed_extra(0, 0))), + function: Call::Balances(pallet_balances::Call::transfer(bob().into(), 69 * DOLLARS)), + }, + ] + ); + let block2 = construct_block( + &mut t, + 2, + block1.1.clone(), + vec![ + CheckedExtrinsic { + signed: None, + function: Call::Timestamp(pallet_timestamp::Call::set(52 * 1000)), + }, + CheckedExtrinsic { + signed: Some((bob(), signed_extra(0, 0))), + function: Call::Balances(pallet_balances::Call::transfer(alice().into(), 5 * DOLLARS)), + }, + CheckedExtrinsic { + signed: Some((alice(), signed_extra(1, 0))), + function: Call::Balances(pallet_balances::Call::transfer(bob().into(), 15 * DOLLARS)), + } + ] + ); + + // session change => consensus authorities change => authorities change digest item appears + let digest = Header::decode(&mut &block2.0[..]).unwrap().digest; + assert_eq!(digest.logs().len(), 0); + + (block1, block2) + } + + fn block_with_size(time: u64, nonce: u32, size: usize) -> (Vec, Hash) { + construct_block( + &mut new_test_ext(COMPACT_CODE, false), + 1, + GENESIS_HASH.into(), + vec![ + CheckedExtrinsic { + signed: None, + function: Call::Timestamp(pallet_timestamp::Call::set(time * 1000)), + }, + CheckedExtrinsic { + signed: Some((alice(), signed_extra(nonce, 0))), + function: Call::System(frame_system::Call::remark(vec![0; size])), + } + ] + ) + } + + #[test] + fn full_native_block_import_works() { + let mut t = new_test_ext(COMPACT_CODE, false); + + let (block1, block2) = blocks(); + + let mut alice_last_known_balance: Balance = Default::default(); + let mut fm = t.execute_with(TransactionPayment::next_fee_multiplier); + + executor_call:: _>( + &mut t, + "Core_execute_block", + &block1.0, + true, + None, + ).0.unwrap(); + + t.execute_with(|| { + assert_eq!(Balances::total_balance(&alice()), 42 * DOLLARS - transfer_fee(&xt(), fm)); + assert_eq!(Balances::total_balance(&bob()), 169 * DOLLARS); + alice_last_known_balance = Balances::total_balance(&alice()); + let events = vec![ + EventRecord { + phase: Phase::ApplyExtrinsic(0), + event: Event::system(frame_system::Event::ExtrinsicSuccess( + DispatchInfo { weight: 10000, class: DispatchClass::Operational, pays_fee: true } + )), + topics: vec![], + }, + EventRecord { + phase: Phase::ApplyExtrinsic(1), + event: Event::pallet_treasury(pallet_treasury::RawEvent::Deposit(1984800000000)), + topics: vec![], + }, + EventRecord { + phase: Phase::ApplyExtrinsic(1), + event: Event::pallet_balances(pallet_balances::RawEvent::Transfer( + alice().into(), + bob().into(), + 69 * DOLLARS, + 1 * CENTS, + )), + topics: vec![], + }, + EventRecord { + phase: Phase::ApplyExtrinsic(1), + event: Event::system(frame_system::Event::ExtrinsicSuccess( + DispatchInfo { weight: 1000000, class: DispatchClass::Normal, pays_fee: true } + )), + topics: vec![], + }, + ]; + assert_eq!(System::events(), events); + }); + + fm = t.execute_with(TransactionPayment::next_fee_multiplier); + + executor_call:: _>( + &mut t, + "Core_execute_block", + &block2.0, + true, + None, + ).0.unwrap(); + + t.execute_with(|| { + assert_eq!( + Balances::total_balance(&alice()), + alice_last_known_balance - 10 * DOLLARS - transfer_fee(&xt(), fm), + ); + assert_eq!( + Balances::total_balance(&bob()), + 179 * DOLLARS - transfer_fee(&xt(), fm), + ); + let events = vec![ + EventRecord { + phase: Phase::ApplyExtrinsic(0), + event: Event::system(frame_system::Event::ExtrinsicSuccess( + DispatchInfo { weight: 10000, class: DispatchClass::Operational, pays_fee: true } + )), + topics: vec![], + }, + EventRecord { + phase: Phase::ApplyExtrinsic(1), + event: Event::pallet_treasury(pallet_treasury::RawEvent::Deposit(1984788199392)), + topics: vec![], + }, + EventRecord { + phase: Phase::ApplyExtrinsic(1), + event: Event::pallet_balances( + pallet_balances::RawEvent::Transfer( + bob().into(), + alice().into(), + 5 * DOLLARS, + 1 * CENTS, + ) + ), + topics: vec![], + }, + EventRecord { + phase: Phase::ApplyExtrinsic(1), + event: Event::system(frame_system::Event::ExtrinsicSuccess( + DispatchInfo { weight: 1000000, class: DispatchClass::Normal, pays_fee: true } + )), + topics: vec![], + }, + EventRecord { + phase: Phase::ApplyExtrinsic(2), + event: Event::pallet_treasury(pallet_treasury::RawEvent::Deposit(1984788199392)), + topics: vec![], + }, + EventRecord { + phase: Phase::ApplyExtrinsic(2), + event: Event::pallet_balances( + pallet_balances::RawEvent::Transfer( + alice().into(), + bob().into(), + 15 * DOLLARS, + 1 * CENTS, + ) + ), + topics: vec![], + }, + EventRecord { + phase: Phase::ApplyExtrinsic(2), + event: Event::system(frame_system::Event::ExtrinsicSuccess( + DispatchInfo { weight: 1000000, class: DispatchClass::Normal, pays_fee: true } + )), + topics: vec![], + }, + ]; + assert_eq!(System::events(), events); + }); + } + + #[test] + fn full_wasm_block_import_works() { + let mut t = new_test_ext(COMPACT_CODE, false); + + let (block1, block2) = blocks(); + + let mut alice_last_known_balance: Balance = Default::default(); + let mut fm = t.execute_with(TransactionPayment::next_fee_multiplier); + + executor_call:: _>( + &mut t, + "Core_execute_block", + &block1.0, + false, + None, + ).0.unwrap(); + + t.execute_with(|| { + assert_eq!(Balances::total_balance(&alice()), 42 * DOLLARS - transfer_fee(&xt(), fm)); + assert_eq!(Balances::total_balance(&bob()), 169 * DOLLARS); + alice_last_known_balance = Balances::total_balance(&alice()); + }); + + fm = t.execute_with(TransactionPayment::next_fee_multiplier); + + executor_call:: _>( + &mut t, + "Core_execute_block", + &block2.0, + false, + None, + ).0.unwrap(); + + t.execute_with(|| { + assert_eq!( + Balances::total_balance(&alice()), + alice_last_known_balance - 10 * DOLLARS - transfer_fee(&xt(), fm), + ); + assert_eq!( + Balances::total_balance(&bob()), + 179 * DOLLARS - 1 * transfer_fee(&xt(), fm), + ); + }); + } + + const CODE_TRANSFER: &str = r#" +(module + ;; ext_call( + ;; callee_ptr: u32, + ;; callee_len: u32, + ;; gas: u64, + ;; value_ptr: u32, + ;; value_len: u32, + ;; input_data_ptr: u32, + ;; input_data_len: u32 + ;; ) -> u32 + (import "env" "ext_call" (func $ext_call (param i32 i32 i64 i32 i32 i32 i32) (result i32))) + (import "env" "ext_scratch_size" (func $ext_scratch_size (result i32))) + (import "env" "ext_scratch_read" (func $ext_scratch_read (param i32 i32 i32))) + (import "env" "memory" (memory 1 1)) + (func (export "deploy") + ) + (func (export "call") + (block $fail + ;; load and check the input data (which is stored in the scratch buffer). + ;; fail if the input size is not != 4 + (br_if $fail + (i32.ne + (i32.const 4) + (call $ext_scratch_size) + ) + ) + + (call $ext_scratch_read + (i32.const 0) + (i32.const 0) + (i32.const 4) + ) + + + (br_if $fail + (i32.ne + (i32.load8_u (i32.const 0)) + (i32.const 0) + ) + ) + (br_if $fail + (i32.ne + (i32.load8_u (i32.const 1)) + (i32.const 1) + ) + ) + (br_if $fail + (i32.ne + (i32.load8_u (i32.const 2)) + (i32.const 2) + ) + ) + (br_if $fail + (i32.ne + (i32.load8_u (i32.const 3)) + (i32.const 3) + ) + ) + + (drop + (call $ext_call + (i32.const 4) ;; Pointer to "callee" address. + (i32.const 32) ;; Length of "callee" address. + (i64.const 0) ;; How much gas to devote for the execution. 0 = all. + (i32.const 36) ;; Pointer to the buffer with value to transfer + (i32.const 16) ;; Length of the buffer with value to transfer. + (i32.const 0) ;; Pointer to input data buffer address + (i32.const 0) ;; Length of input data buffer + ) + ) + + (return) + ) + unreachable + ) + ;; Destination AccountId to transfer the funds. + ;; Represented by H256 (32 bytes long) in little endian. + (data (i32.const 4) + "\09\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" + "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" + "\00\00\00\00" + ) + ;; Amount of value to transfer. + ;; Represented by u128 (16 bytes long) in little endian. + (data (i32.const 36) + "\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" + "\00\00" + ) +) +"#; + + #[test] + fn deploying_wasm_contract_should_work() { + let transfer_code = wabt::wat2wasm(CODE_TRANSFER).unwrap(); + let transfer_ch = ::Hashing::hash(&transfer_code); + + let addr = ::DetermineContractAddress::contract_address_for( + &transfer_ch, + &[], + &charlie(), + ); + + let b = construct_block( + &mut new_test_ext(COMPACT_CODE, false), + 1, + GENESIS_HASH.into(), + vec![ + CheckedExtrinsic { + signed: None, + function: Call::Timestamp(pallet_timestamp::Call::set(42 * 1000)), + }, + CheckedExtrinsic { + signed: Some((charlie(), signed_extra(0, 0))), + function: Call::Contracts( + pallet_contracts::Call::put_code::(10_000, transfer_code) + ), + }, + CheckedExtrinsic { + signed: Some((charlie(), signed_extra(1, 0))), + function: Call::Contracts( + pallet_contracts::Call::instantiate::(1 * DOLLARS, 10_000, transfer_ch, Vec::new()) + ), + }, + CheckedExtrinsic { + signed: Some((charlie(), signed_extra(2, 0))), + function: Call::Contracts( + pallet_contracts::Call::call::( + pallet_indices::address::Address::Id(addr.clone()), + 10, + 10_000, + vec![0x00, 0x01, 0x02, 0x03] + ) + ), + }, + ] + ); + + let mut t = new_test_ext(COMPACT_CODE, false); + + executor_call:: _>( + &mut t, + "Core_execute_block", + &b.0, + false, + None, + ).0.unwrap(); + + t.execute_with(|| { + // Verify that the contract constructor worked well and code of TRANSFER contract is actually deployed. + assert_eq!( + &pallet_contracts::ContractInfoOf::::get(addr) + .and_then(|c| c.get_alive()) + .unwrap() + .code_hash, + &transfer_ch + ); + }); + } + + #[test] + fn wasm_big_block_import_fails() { + let mut t = new_test_ext(COMPACT_CODE, false); + + set_heap_pages(&mut t.ext(), 4); + + let result = executor_call:: _>( + &mut t, + "Core_execute_block", + &block_with_size(42, 0, 120_000).0, + false, + None, + ).0; + assert!(result.is_err()); // Err(Wasmi(Trap(Trap { kind: Host(AllocatorOutOfSpace) }))) + } + + #[test] + fn native_big_block_import_succeeds() { + let mut t = new_test_ext(COMPACT_CODE, false); + + executor_call:: _>( + &mut t, + "Core_execute_block", + &block_with_size(42, 0, 120_000).0, + true, + None, + ).0.unwrap(); + } + + #[test] + fn native_big_block_import_fails_on_fallback() { + let mut t = new_test_ext(COMPACT_CODE, false); + + assert!( + executor_call:: _>( + &mut t, + "Core_execute_block", + &block_with_size(42, 0, 120_000).0, + false, + None, + ).0.is_err() + ); + } + + #[test] + fn panic_execution_gives_error() { + let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { + top: map![ + >::hashed_key_for(alice()) => { + 0_u128.encode() + }, + >::hashed_key().to_vec() => { + 0_u128.encode() + }, + >::hashed_key().to_vec() => vec![0u8; 16], + >::hashed_key_for(0) => vec![0u8; 32] + ], + children: map![], + }); + + let r = executor_call:: _>( + &mut t, + "Core_initialize_block", + &vec![].and(&from_block_number(1u32)), + false, + None, + ).0; + assert!(r.is_ok()); + let r = executor_call:: _>( + &mut t, + "BlockBuilder_apply_extrinsic", + &vec![].and(&xt()), + false, + None, + ).0.unwrap().into_encoded(); + let r = ApplyExtrinsicResult::decode(&mut &r[..]).unwrap(); + assert_eq!(r, Err(InvalidTransaction::Payment.into())); + } + + #[test] + fn successful_execution_gives_ok() { + let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { + top: map![ + >::hashed_key_for(alice()) => { + (111 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => { + (111 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => vec![0u8; 16], + >::hashed_key_for(0) => vec![0u8; 32] + ], + children: map![], + }); + + let r = executor_call:: _>( + &mut t, + "Core_initialize_block", + &vec![].and(&from_block_number(1u32)), + false, + None, + ).0; + assert!(r.is_ok()); + let fm = t.execute_with(TransactionPayment::next_fee_multiplier); + let r = executor_call:: _>( + &mut t, + "BlockBuilder_apply_extrinsic", + &vec![].and(&xt()), + false, + None, + ).0.unwrap().into_encoded(); + ApplyExtrinsicResult::decode(&mut &r[..]) + .unwrap() + .expect("Extrinsic could be applied") + .expect("Extrinsic did not fail"); + + t.execute_with(|| { + assert_eq!(Balances::total_balance(&alice()), 42 * DOLLARS - 1 * transfer_fee(&xt(), fm)); + assert_eq!(Balances::total_balance(&bob()), 69 * DOLLARS); + }); + } + + #[test] + fn full_native_block_import_works_with_changes_trie() { + let block1 = changes_trie_block(); + let block_data = block1.0; + let block = Block::decode(&mut &block_data[..]).unwrap(); + + let mut t = new_test_ext(COMPACT_CODE, true); + executor_call:: _>( + &mut t, + "Core_execute_block", + &block.encode(), + true, + None, + ).0.unwrap(); + + assert!(t.ext().storage_changes_root(&GENESIS_HASH.encode()).unwrap().is_some()); + } + + #[test] + fn full_wasm_block_import_works_with_changes_trie() { + let block1 = changes_trie_block(); + + let mut t = new_test_ext(COMPACT_CODE, true); + executor_call:: _>( + &mut t, + "Core_execute_block", + &block1.0, + false, + None, + ).0.unwrap(); + + assert!(t.ext().storage_changes_root(&GENESIS_HASH.encode()).unwrap().is_some()); + } + + #[test] + fn should_import_block_with_test_client() { + use node_testing::client::{ + ClientExt, TestClientBuilderExt, TestClientBuilder, sp_consensus::BlockOrigin + }; + + let client = TestClientBuilder::new().build(); + let block1 = changes_trie_block(); + let block_data = block1.0; + let block = node_primitives::Block::decode(&mut &block_data[..]).unwrap(); + + client.import(BlockOrigin::Own, block).unwrap(); + } + + + #[test] + fn fee_multiplier_increases_and_decreases_on_big_weight() { + let mut t = new_test_ext(COMPACT_CODE, false); + + // initial fee multiplier must be zero + let mut prev_multiplier = Fixed64::from_parts(0); + + t.execute_with(|| { + assert_eq!(TransactionPayment::next_fee_multiplier(), prev_multiplier); + }); + + let mut tt = new_test_ext(COMPACT_CODE, false); + + // big one in terms of weight. + let block1 = construct_block( + &mut tt, + 1, + GENESIS_HASH.into(), + vec![ + CheckedExtrinsic { + 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()), + } + ] + ); + + // small one in terms of weight. + let block2 = construct_block( + &mut tt, + 2, + block1.1.clone(), + vec![ + CheckedExtrinsic { + signed: None, + function: Call::Timestamp(pallet_timestamp::Call::set(52 * 1000)), + }, + CheckedExtrinsic { + signed: Some((charlie(), signed_extra(1, 0))), + function: Call::System(frame_system::Call::remark(vec![0; 1])), + } + ] + ); + + println!("++ Block 1 size: {} / Block 2 size {}", block1.0.encode().len(), block2.0.encode().len()); + + // execute a big block. + executor_call:: _>( + &mut t, + "Core_execute_block", + &block1.0, + true, + None, + ).0.unwrap(); + + // weight multiplier is increased for next block. + t.execute_with(|| { + let fm = TransactionPayment::next_fee_multiplier(); + println!("After a big block: {:?} -> {:?}", prev_multiplier, fm); + assert!(fm > prev_multiplier); + prev_multiplier = fm; + }); + + // execute a big block. + executor_call:: _>( + &mut t, + "Core_execute_block", + &block2.0, + true, + None, + ).0.unwrap(); + + // weight multiplier is increased for next block. + t.execute_with(|| { + let fm = TransactionPayment::next_fee_multiplier(); + println!("After a small block: {:?} -> {:?}", prev_multiplier, fm); + assert!(fm < prev_multiplier); + }); + } + + #[test] + fn transaction_fee_is_correct_ultimate() { + // This uses the exact values of substrate-node. + // + // weight of transfer call as of now: 1_000_000 + // if weight of the cheapest weight would be 10^7, this would be 10^9, which is: + // - 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 { + top: map![ + >::hashed_key_for(alice()) => { + (100 * DOLLARS).encode() + }, + >::hashed_key_for(bob()) => { + (10 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => { + (110 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => vec![0u8; 16], + >::hashed_key_for(0) => vec![0u8; 32] + ], + children: map![], + }); + + let tip = 1_000_000; + let xt = sign(CheckedExtrinsic { + signed: Some((alice(), signed_extra(0, tip))), + function: Call::Balances(default_transfer_call()), + }); + + let r = executor_call:: _>( + &mut t, + "Core_initialize_block", + &vec![].and(&from_block_number(1u32)), + true, + None, + ).0; + + assert!(r.is_ok()); + let r = executor_call:: _>( + &mut t, + "BlockBuilder_apply_extrinsic", + &vec![].and(&xt.clone()), + true, + None, + ).0; + assert!(r.is_ok()); + + t.execute_with(|| { + assert_eq!(Balances::total_balance(&bob()), (10 + 69) * DOLLARS); + // Components deducted from alice's balances: + // - Weight fee + // - Length fee + // - Tip + // - Creation-fee of bob's account. + let mut balance_alice = (100 - 69) * DOLLARS; + + let length_fee = TransactionBaseFee::get() + + TransactionByteFee::get() * + (xt.clone().encode().len() as Balance); + balance_alice -= length_fee; + + let weight = default_transfer_call().get_dispatch_info().weight; + let weight_fee = LinearWeightToFee::::convert(weight); + + // we know that weight to fee multiplier is effect-less in block 1. + assert_eq!(weight_fee as Balance, MILLICENTS); + balance_alice -= weight_fee; + + balance_alice -= tip; + balance_alice -= TransferFee::get(); + + assert_eq!(Balances::total_balance(&alice()), balance_alice); + }); + } + + #[test] + #[should_panic] + #[cfg(feature = "stress-test")] + fn block_weight_capacity_report() { + // Just report how many transfer calls you could fit into a block. The number should at least + // be a few hundred (250 at the time of writing but can change over time). Runs until panic. + use node_primitives::Index; + + // execution ext. + let mut t = new_test_ext(COMPACT_CODE, false); + // setup ext. + let mut tt = new_test_ext(COMPACT_CODE, false); + + let factor = 50; + let mut time = 10; + let mut nonce: Index = 0; + let mut block_number = 1; + let mut previous_hash: Hash = GENESIS_HASH.into(); + + loop { + let num_transfers = block_number * factor; + let mut xts = (0..num_transfers).map(|i| CheckedExtrinsic { + signed: Some((charlie(), signed_extra(nonce + i as Index, 0))), + function: Call::Balances(pallet_balances::Call::transfer(bob().into(), 0)), + }).collect::>(); + + xts.insert(0, CheckedExtrinsic { + signed: None, + function: Call::Timestamp(pallet_timestamp::Call::set(time * 1000)), + }); + + // NOTE: this is super slow. Can probably be improved. + let block = construct_block( + &mut tt, + block_number, + previous_hash, + xts + ); + + let len = block.0.len(); + print!( + "++ Executing block with {} transfers. Block size = {} bytes / {} kb / {} mb", + num_transfers, + len, + len / 1024, + len / 1024 / 1024, + ); + + let r = executor_call:: _>( + &mut t, + "Core_execute_block", + &block.0, + true, + None, + ).0; + + println!(" || Result = {:?}", r); + assert!(r.is_ok()); + + previous_hash = block.1; + nonce += num_transfers; + time += 10; + block_number += 1; + } + } + + #[test] + #[should_panic] + #[cfg(feature = "stress-test")] + fn block_length_capacity_report() { + // Just report how big a block can get. Executes until panic. Should be ignored unless if + // manually inspected. The number should at least be a few megabytes (5 at the time of + // writing but can change over time). + use node_primitives::Index; + + // execution ext. + let mut t = new_test_ext(COMPACT_CODE, false); + // setup ext. + let mut tt = new_test_ext(COMPACT_CODE, false); + + let factor = 256 * 1024; + let mut time = 10; + let mut nonce: Index = 0; + let mut block_number = 1; + let mut previous_hash: Hash = GENESIS_HASH.into(); + + loop { + // NOTE: this is super slow. Can probably be improved. + let block = construct_block( + &mut tt, + block_number, + previous_hash, + vec![ + CheckedExtrinsic { + signed: None, + function: Call::Timestamp(pallet_timestamp::Call::set(time * 1000)), + }, + CheckedExtrinsic { + signed: Some((charlie(), signed_extra(nonce, 0))), + function: Call::System(frame_system::Call::remark(vec![0u8; (block_number * factor) as usize])), + }, + ] + ); + + let len = block.0.len(); + print!( + "++ Executing block with big remark. Block size = {} bytes / {} kb / {} mb", + len, + len / 1024, + len / 1024 / 1024, + ); + + let r = executor_call:: _>( + &mut t, + "Core_execute_block", + &block.0, + true, + None, + ).0; + + println!(" || Result = {:?}", r); + assert!(r.is_ok()); + + previous_hash = block.1; + nonce += 1; + time += 10; + block_number += 1; + } + } +} diff --git a/bin/node/rpc-client/Cargo.toml b/bin/node/rpc-client/Cargo.toml new file mode 100644 index 000000000..c31918e3b --- /dev/null +++ b/bin/node/rpc-client/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "node-rpc-client" +version = "2.0.0" +authors = ["Parity Technologies "] +edition = "2018" + +[dependencies] +env_logger = "0.7.0" +futures = "0.1.29" +hyper = "0.12.35" +jsonrpc-core-client = { version = "14.0.3", features = ["http", "ws"] } +log = "0.4.8" +sc-rpc = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +node-primitives = { path = "../primitives" } diff --git a/bin/node/rpc-client/src/main.rs b/bin/node/rpc-client/src/main.rs new file mode 100644 index 000000000..3874556ef --- /dev/null +++ b/bin/node/rpc-client/src/main.rs @@ -0,0 +1,70 @@ +// Copyright 2019 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 . + +#![warn(missing_docs)] + +//! Example substrate RPC client code. +//! +//! This module shows how you can write a Rust RPC client that connects to a running +//! substrate node and use staticly typed RPC wrappers. + +use futures::Future; +use hyper::rt; +use node_primitives::Hash; +use sc_rpc::author::{ + AuthorClient, + hash::ExtrinsicOrHash, +}; +use jsonrpc_core_client::{ + transports::http, + RpcError, +}; + +fn main() { + env_logger::init(); + + rt::run(rt::lazy(|| { + let uri = "http://localhost:9933"; + + http::connect(uri) + .and_then(|client: AuthorClient| { + remove_all_extrinsics(client) + }) + .map_err(|e| { + println!("Error: {:?}", e); + }) + })) +} + +/// Remove all pending extrinsics from the node. +/// +/// The example code takes `AuthorClient` and first: +/// 1. Calls the `pending_extrinsics` method to get all extrinsics in the pool. +/// 2. Then calls `remove_extrinsic` passing the obtained raw extrinsics. +/// +/// As the resul of running the code the entire content of the transaction pool is going +/// to be removed and the extrinsics are going to be temporarily banned. +fn remove_all_extrinsics(client: AuthorClient) -> impl Future { + client.pending_extrinsics() + .and_then(move |pending| { + client.remove_extrinsic( + pending.into_iter().map(|tx| ExtrinsicOrHash::Extrinsic(tx.into())).collect() + ) + }) + .map(|removed| { + println!("Removed extrinsics: {:?}", removed); + }) +} diff --git a/bin/node/rpc/Cargo.toml b/bin/node/rpc/Cargo.toml new file mode 100644 index 000000000..360ff9f64 --- /dev/null +++ b/bin/node/rpc/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "node-rpc" +version = "2.0.0" +authors = ["Parity Technologies "] +edition = "2018" + +[dependencies] +sc-client = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +jsonrpc-core = "14.0.3" +sp-runtime = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-contracts-rpc = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +pallet-transaction-payment-rpc = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +substrate-frame-rpc-system = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-transaction-pool = { version = "2.0.0", git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } + +node-primitives = { path = "../primitives" } +node-runtime = { path = "../runtime" } diff --git a/bin/node/rpc/src/lib.rs b/bin/node/rpc/src/lib.rs new file mode 100644 index 000000000..67a349598 --- /dev/null +++ b/bin/node/rpc/src/lib.rs @@ -0,0 +1,101 @@ +// Copyright 2019 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 collection of node-specific RPC methods. +//! +//! Since `substrate` core functionality makes no assumptions +//! about the modules used inside the runtime, so do +//! RPC methods defined in `sc-rpc` crate. +//! It means that `client/rpc` can't have any methods that +//! need some strong assumptions about the particular runtime. +//! +//! The RPCs available in this crate however can make some assumptions +//! about how the runtime is constructed and what `SRML` modules +//! are part of it. Therefore all node-runtime-specific RPCs can +//! be placed here or imported from corresponding `SRML` RPC definitions. + +#![warn(missing_docs)] + +use std::sync::Arc; + +use node_primitives::{Block, AccountId, Index, Balance}; +use node_runtime::UncheckedExtrinsic; +use sp_runtime::traits::ProvideRuntimeApi; +use sp_transaction_pool::TransactionPool; + +/// Light client extra dependencies. +pub struct LightDeps { + /// Remote access to the blockchain (async). + pub remote_blockchain: Arc>, + /// Fetcher instance. + pub fetcher: Arc, +} + +impl LightDeps { + /// Create empty `LightDeps` with given `F` type. + /// + /// This is a convenience method to be used in the service builder, + /// to make sure the type of the `LightDeps` is matching. + pub fn none(_: Option>) -> Option { + None + } +} + +/// Instantiate all RPC extensions. +/// +/// If you provide `LightDeps`, the system is configured for light client. +pub fn create( + client: Arc, + pool: Arc

, + light_deps: Option>, +) -> jsonrpc_core::IoHandler where + C: ProvideRuntimeApi, + C: sc_client::blockchain::HeaderBackend, + C: Send + Sync + 'static, + C::Api: substrate_frame_rpc_system::AccountNonceApi, + C::Api: pallet_contracts_rpc::ContractsRuntimeApi, + C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi, + F: sc_client::light::fetcher::Fetcher + 'static, + P: TransactionPool + 'static, + M: jsonrpc_core::Metadata + Default, +{ + use substrate_frame_rpc_system::{FullSystem, LightSystem, SystemApi}; + use pallet_contracts_rpc::{Contracts, ContractsApi}; + use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; + + let mut io = jsonrpc_core::IoHandler::default(); + + if let Some(LightDeps { remote_blockchain, fetcher }) = light_deps { + io.extend_with( + SystemApi::::to_delegate(LightSystem::new(client, remote_blockchain, fetcher, pool)) + ); + } else { + io.extend_with( + SystemApi::to_delegate(FullSystem::new(client.clone(), pool)) + ); + + // Making synchronous calls in light client freezes the browser currently, + // more context: https://github.com/paritytech/substrate/pull/3480 + // These RPCs should use an asynchronous caller instead. + io.extend_with( + ContractsApi::to_delegate(Contracts::new(client.clone())) + ); + io.extend_with( + TransactionPaymentApi::to_delegate(TransactionPayment::new(client)) + ); + } + io +} diff --git a/bin/node/runtime/Cargo.toml b/bin/node/runtime/Cargo.toml index a8e19bb31..792448d70 100644 --- a/bin/node/runtime/Cargo.toml +++ b/bin/node/runtime/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "node-runtime" -version = "2.0.0" -authors = ["Parity Technologies "] +version = "0.4.0" +authors = ["darwinia "] edition = "2018" build = "build.rs" @@ -18,7 +18,7 @@ sp-authority-discovery = { version = "2.0.0", default-features = false, git = "h sp-consensus-babe = { version = "0.8", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-block-builder = { git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402", default-features = false} sp-inherents = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } -#sp-offchain = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } +sp-offchain = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-core = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-std = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } sp-api = { version = "2.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", rev = "c2fccb36ffacd118fc3502aa93453580a07dc402" } @@ -91,7 +91,7 @@ std = [ "pallet-membership/std", # "pallet-nicks/std", "node-primitives/std", -# "sp-offchain/std", + "sp-offchain/std", "pallet-offences/std", "sp-core/std", "pallet-randomness-collective-flip/std", diff --git a/bin/node/runtime/src/lib.rs b/bin/node/runtime/src/lib.rs index fbbe89f7c..684494eb8 100644 --- a/bin/node/runtime/src/lib.rs +++ b/bin/node/runtime/src/lib.rs @@ -389,35 +389,35 @@ parameter_types! { // type MaxLength = MaxLength; //} -//impl frame_system::offchain::CreateTransaction for Runtime { -// type Public = ::Signer; -// type Signature = Signature; -// -// fn create_transaction>( -// call: Call, -// public: Self::Public, -// account: AccountId, -// index: Index, -// ) -> Option<(Call, ::SignaturePayload)> { -// let period = 1 << 8; -// let current_block = System::block_number().saturated_into::(); -// let tip = 0; -// let extra: SignedExtra = ( -// frame_system::CheckVersion::::new(), -// frame_system::CheckGenesis::::new(), -// frame_system::CheckEra::::from(generic::Era::mortal(period, current_block)), -// frame_system::CheckNonce::::from(index), -// frame_system::CheckWeight::::new(), -// pallet_transaction_payment::ChargeTransactionPayment::::from(tip), -// Default::default(), -// ); -// let raw_payload = SignedPayload::new(call, extra).ok()?; -// let signature = TSigner::sign(public, &raw_payload)?; -// let address = Indices::unlookup(account); -// let (call, extra, _) = raw_payload.deconstruct(); -// Some((call, (address, signature, extra))) -// } -//} +impl frame_system::offchain::CreateTransaction for Runtime { + type Public = ::Signer; + type Signature = Signature; + + fn create_transaction>( + call: Call, + public: Self::Public, + account: AccountId, + index: Index, + ) -> Option<(Call, ::SignaturePayload)> { + let period = 1 << 8; + let current_block = System::block_number().saturated_into::(); + let tip = 0; + let extra: SignedExtra = ( + frame_system::CheckVersion::::new(), + frame_system::CheckGenesis::::new(), + frame_system::CheckEra::::from(generic::Era::mortal(period, current_block)), + frame_system::CheckNonce::::from(index), + frame_system::CheckWeight::::new(), + pallet_transaction_payment::ChargeTransactionPayment::::from(tip), + Default::default(), + ); + let raw_payload = SignedPayload::new(call, extra).ok()?; + let signature = TSigner::sign(public, &raw_payload)?; + let address = Indices::unlookup(account); + let (call, extra, _) = raw_payload.deconstruct(); + Some((call, (address, signature, extra))) + } +} parameter_types! { pub const ExistentialDeposit: Balance = 1 * COIN; @@ -593,11 +593,11 @@ impl_runtime_apis! { } } -// impl sp_offchain::OffchainWorkerApi for Runtime { -// fn offchain_worker(number: NumberFor) { -// Executive::offchain_worker(number) -// } -// } + impl sp_offchain::OffchainWorkerApi for Runtime { + fn offchain_worker(number: NumberFor) { + Executive::offchain_worker(number) + } + } impl fg_primitives::GrandpaApi for Runtime { fn grandpa_authorities() -> GrandpaAuthorityList { @@ -691,57 +691,3 @@ impl_runtime_apis! { } } } - -#[cfg(test)] -mod tests { - use super::*; - use frame_system::offchain::SubmitSignedTransaction; - - fn is_submit_signed_transaction(_arg: T) - where - T: SubmitSignedTransaction< - Runtime, - Call, - Extrinsic = UncheckedExtrinsic, - CreateTransaction = Runtime, - Signer = ImOnlineId, - >, - { - } - - #[test] - fn validate_bounds() { - let x = SubmitTransaction::default(); - is_submit_signed_transaction(x); - } - - #[test] - fn block_hooks_weight_should_not_exceed_limits() { - use frame_support::weights::WeighBlock; - let check_for_block = |b| { - let block_hooks_weight = >::on_initialize(b) - + >::on_finalize(b); - - assert_eq!( - block_hooks_weight, 0, - "This test might fail simply because the value being compared to has increased to a \ - module declaring a new weight for a hook or call. In this case update the test and \ - happily move on.", - ); - - // Invariant. Always must be like this to have a sane chain. - assert!(block_hooks_weight < MaximumBlockWeight::get()); - - // Warning. - if block_hooks_weight > MaximumBlockWeight::get() / 2 { - println!( - "block hooks weight is consuming more than a block's capacity. You probably want \ - to re-think this. This test will fail now." - ); - assert!(false); - } - }; - - let _ = (0..100_000).for_each(check_for_block); - } -} From bc8277320d7e63ace3890024ac78f4f504458cd5 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Mon, 10 Feb 2020 19:18:29 +0800 Subject: [PATCH 12/17] fix: name --- Cargo.toml | 6 +- README.adoc | 13 - ROADMAP.md | 4 +- bin/node/cli/bin/main.rs | 19 +- bin/node/cli/build.rs | 19 +- bin/node/cli/src/browser.rs | 48 +- bin/node/cli/src/cli.rs | 139 +++--- bin/node/cli/src/service.rs | 4 +- bin/node/executor/Cargo.toml | 2 +- bin/node/executor/src/lib.rs | 717 +++++++++++++++--------------- bin/node/rpc-client/Cargo.toml | 2 +- bin/node/rpc-client/src/main.rs | 28 +- bin/node/rpc/Cargo.toml | 2 +- bin/node/rpc/src/lib.rs | 40 +- bin/node/runtime/src/constants.rs | 2 +- bin/node/runtime/src/impls.rs | 8 +- 16 files changed, 525 insertions(+), 528 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index cc75aceb3..1618e2369 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,9 +2,9 @@ members = [ "bin/node/cli", "bin/node/executor", - "bin/node/primitives", - "bin/node/rpc-client", - "bin/node/rpc", + "bin/node/primitives", + "bin/node/rpc-client", + "bin/node/rpc", "bin/node/runtime", "frame/balances/kton", "frame/balances/ring", diff --git a/README.adoc b/README.adoc index 7ce610103..e1f44bdae 100644 --- a/README.adoc +++ b/README.adoc @@ -345,27 +345,14 @@ node-cli, node-primitives, node-runtime === Environment -<<<<<<< HEAD -If you are using Ubuntu, -you may use the `.maintain/bootstrap.sh` to set up your develop environment. -In this script, the nightly `Rust`, `cargo`, `rustfmt` will be installed, -======= The `scripts/bootstrap.sh` help set up your develop environment. The nightly `Rust`, `cargo`, `rustfmt` will be installed, ->>>>>>> upstream/develop the git hooks will be set, and ready to code. Besides, the script will install some essential packages depends on your OS, if you want to do it manually, use the `--fast` option to skip. We will appreciate your contribution. -<<<<<<< HEAD -If you are using different environment, you may copy the git hooks mannually. -``` -$ cp .maintain/hooks/* .git/hooks -``` -======= ->>>>>>> upstream/develop === Contributing Guidelines link:CONTRIBUTING.adoc[CONTRIBUTING.adoc] diff --git a/ROADMAP.md b/ROADMAP.md index d84b8950e..fbbd57335 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -56,7 +56,7 @@ Currently we are developing based on Substrate 1.0 rc, to setup the initial POC- - A simple blockchain browser. - Testnet tokens faucet. - Deliverables - - Docker container running a substrate node with staking runtime included, can connect to testnet and syncing blocks. + - Docker container running a darwinia node with staking runtime included, can connect to testnet and syncing blocks. - Running node can get free tokens from faucet, and testing validator functions, running as validators. And normal users can support validators by nominating. - Users and view the blockchain data and extrinsics using blockchain browser. @@ -67,7 +67,7 @@ Currently we are developing based on Substrate 1.0 rc, to setup the initial POC- - Experimental contract runtime support. (Using pDSL for testing and experimental, only support command line) - Upgraded web wallet and blockchain browser with better user experience. - Deliverables - - Docker container running a substrate node with NFT/Token swapping runtime included, can connect to testnet and syncing blocks. + - Docker container running a darwinia node with NFT/Token swapping runtime included, can connect to testnet and syncing blocks. - User can use web wallet to test the NFT and token bridging, e.g. transferring a NFT token from Ethereum testnet to Tron testnet. (Evolution Land’s alpha version, can be used as a scenario) - Documents about how to deploy a sample contract on the experimental contract model - Blockchain browser can view the NFT token’s encoding ids, and search NFT by id. diff --git a/bin/node/cli/bin/main.rs b/bin/node/cli/bin/main.rs index 835594eeb..0c4d1b7d9 100644 --- a/bin/node/cli/bin/main.rs +++ b/bin/node/cli/bin/main.rs @@ -34,10 +34,15 @@ impl sc_cli::IntoExit for Exit { let exit_send_cell = RefCell::new(Some(exit_send)); ctrlc::set_handler(move || { - if let Some(exit_send) = exit_send_cell.try_borrow_mut().expect("signal handler not reentrant; qed").take() { + if let Some(exit_send) = exit_send_cell + .try_borrow_mut() + .expect("signal handler not reentrant; qed") + .take() + { exit_send.send(()).expect("Error sending exit notification"); } - }).expect("Error setting Ctrl-C handler"); + }) + .expect("Error setting Ctrl-C handler"); exit.map(|_| ()) } @@ -45,13 +50,13 @@ impl sc_cli::IntoExit for Exit { fn main() -> Result<(), sc_cli::error::Error> { let version = VersionInfo { - name: "Substrate Node", + name: "Darwinia Node", commit: env!("VERGEN_SHA_SHORT"), version: env!("CARGO_PKG_VERSION"), - executable_name: "substrate", - author: "Parity Technologies ", - description: "Generic substrate node", - support_url: "https://github.com/paritytech/substrate/issues/new", + executable_name: "darwinia", + author: "Darwinia Network ", + description: "Generic darwinia node", + support_url: "https://github.com/darwinia-network/darwinia/issues/new", }; node_cli::run(std::env::args(), Exit, version) diff --git a/bin/node/cli/build.rs b/bin/node/cli/build.rs index 44bbe8c5d..94ed1911b 100644 --- a/bin/node/cli/build.rs +++ b/bin/node/cli/build.rs @@ -14,10 +14,10 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use std::{fs, env, path::Path}; -use structopt::{StructOpt, clap::Shell}; -use sc_cli::{NoCustom, CoreParams}; -use vergen::{ConstantsFlags, generate_cargo_keys}; +use sc_cli::{CoreParams, NoCustom}; +use std::{env, fs, path::Path}; +use structopt::{clap::Shell, StructOpt}; +use vergen::{generate_cargo_keys, ConstantsFlags}; fn main() { build_shell_completion(); @@ -41,12 +41,15 @@ fn build_completion(shell: &Shell) { Some(dir) => dir, }; let path = Path::new(&outdir) - .parent().unwrap() - .parent().unwrap() - .parent().unwrap() + .parent() + .unwrap() + .parent() + .unwrap() + .parent() + .unwrap() .join("completion-scripts"); fs::create_dir(&path).ok(); - CoreParams::::clap().gen_completions("substrate-node", *shell, &path); + CoreParams::::clap().gen_completions("darwinia-node", *shell, &path); } diff --git a/bin/node/cli/src/browser.rs b/bin/node/cli/src/browser.rs index cd1d453d8..5d153402c 100644 --- a/bin/node/cli/src/browser.rs +++ b/bin/node/cli/src/browser.rs @@ -15,11 +15,11 @@ // along with Substrate. If not, see . use crate::ChainSpec; -use futures01::{prelude::*, sync::oneshot, sync::mpsc}; +use futures01::{prelude::*, sync::mpsc, sync::oneshot}; use libp2p::wasm_ext; use log::{debug, info}; +use sc_service::{config::DatabaseConfig, AbstractService, Configuration, Roles as ServiceRoles, RpcSession}; use std::sync::Arc; -use sc_service::{AbstractService, RpcSession, Roles as ServiceRoles, Configuration, config::DatabaseConfig}; use wasm_bindgen::prelude::*; /// Starts the client. @@ -27,8 +27,7 @@ use wasm_bindgen::prelude::*; /// You must pass a libp2p transport that supports . #[wasm_bindgen] pub fn start_client(wasm_ext: wasm_ext::ffi::Transport) -> Result { - start_inner(wasm_ext) - .map_err(|err| JsValue::from_str(&err.to_string())) + start_inner(wasm_ext).map_err(|err| JsValue::from_str(&err.to_string())) } fn start_inner(wasm_ext: wasm_ext::ffi::Transport) -> Result> { @@ -55,9 +54,15 @@ fn start_inner(wasm_ext: wasm_ext::ffi::Transport) -> Result Result { let fut = service.rpc_query(&message.session, &message.rpc_json); let _ = message.send_back.send(Box::new(fut)); - }, + } Ok(Async::NotReady) => break, Err(_) | Ok(Async::Ready(None)) => return Ok(Async::Ready(())), } @@ -86,16 +91,14 @@ fn start_inner(wasm_ext: wasm_ext::ffi::Transport) -> Result return Ok(Async::Ready(())), - Async::NotReady => break + Async::NotReady => break, } } Ok(Async::NotReady) })); - Ok(Client { - rpc_send_tx, - }) + Ok(Client { rpc_send_tx }) } /// A running client. @@ -141,20 +144,19 @@ impl Client { session: rpc_session.clone(), send_back: fut_tx, }); - let fut_rx = fut_rx - .map_err(|_| ()) - .and_then(|fut| fut); + let fut_rx = fut_rx.map_err(|_| ()).and_then(|fut| fut); wasm_bindgen_futures::spawn_local(fut_rx.then(|_| Ok(()))); - wasm_bindgen_futures::spawn_local(rx.for_each(move |s| { - match callback.call1(&callback, &JsValue::from_str(&s)) { + wasm_bindgen_futures::spawn_local( + rx.for_each(move |s| match callback.call1(&callback, &JsValue::from_str(&s)) { Ok(_) => Ok(()), Err(_) => Err(()), - } - }).then(move |v| { - // We need to keep `rpc_session` alive. - debug!("RPC subscription has ended"); - drop(rpc_session); - v - })); + }) + .then(move |v| { + // We need to keep `rpc_session` alive. + debug!("RPC subscription has ended"); + drop(rpc_session); + v + }), + ); } } diff --git a/bin/node/cli/src/cli.rs b/bin/node/cli/src/cli.rs index 3b11ff312..c617d9137 100644 --- a/bin/node/cli/src/cli.rs +++ b/bin/node/cli/src/cli.rs @@ -14,17 +14,17 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . +use crate::factory_impl::FactoryState; +use crate::{load_spec, service, ChainSpec}; +use log::info; +use node_transaction_factory::RuntimeAdapter; pub use sc_cli::VersionInfo; +use sc_cli::{display_role, parse_and_prepare, GetSharedParams, ParseAndPrepare}; +use sc_cli::{error, ImportParams, IntoExit, NoCustom, SharedParams}; +use sc_service::{AbstractService, Configuration, Roles as ServiceRoles}; +use structopt::StructOpt; use tokio::prelude::Future; use tokio::runtime::{Builder as RuntimeBuilder, Runtime}; -use sc_cli::{IntoExit, NoCustom, SharedParams, ImportParams, error}; -use sc_service::{AbstractService, Roles as ServiceRoles, Configuration}; -use log::info; -use structopt::StructOpt; -use sc_cli::{display_role, parse_and_prepare, GetSharedParams, ParseAndPrepare}; -use crate::{service, ChainSpec, load_spec}; -use crate::factory_impl::FactoryState; -use node_transaction_factory::RuntimeAdapter; /// Custom subcommands. #[derive(Clone, Debug, StructOpt)] @@ -51,7 +51,7 @@ impl GetSharedParams for CustomSubcommands { #[derive(Debug, StructOpt, Clone)] pub struct FactoryCmd { /// How often to repeat. This option only has an effect in mode `MasterToNToM`. - #[structopt(long="rounds", default_value = "1")] + #[structopt(long = "rounds", default_value = "1")] pub rounds: u64, /// MasterToN: Manufacture `num` transactions from the master account @@ -71,12 +71,12 @@ pub struct FactoryCmd { /// ... x `rounds` /// /// These three modes control manufacturing. - #[structopt(long="mode", default_value = "MasterToN")] + #[structopt(long = "mode", default_value = "MasterToN")] pub mode: node_transaction_factory::Mode, /// Number of transactions to generate. In mode `MasterNToNToM` this is /// the number of transactions per round. - #[structopt(long="num", default_value = "8")] + #[structopt(long = "num", default_value = "8")] pub num: u64, #[allow(missing_docs)] @@ -89,98 +89,95 @@ pub struct FactoryCmd { } /// Parse command line arguments into service configuration. -pub fn run(args: I, exit: E, version: sc_cli::VersionInfo) -> error::Result<()> where +pub fn run(args: I, exit: E, version: sc_cli::VersionInfo) -> error::Result<()> +where I: IntoIterator, T: Into + Clone, E: IntoExit, { type Config = Configuration<(), A, B>; - match parse_and_prepare::(&version, "substrate-node", args) { - ParseAndPrepare::Run(cmd) => cmd.run(load_spec, exit, - |exit, _cli_args, _custom_args, config: Config<_, _>| { - info!("{}", version.name); - info!(" version {}", config.full_version()); - info!(" by Parity Technologies, 2017-2019"); - info!("Chain specification: {}", config.chain_spec.name()); - info!("Node name: {}", config.name); - info!("Roles: {}", display_role(&config)); - let runtime = RuntimeBuilder::new().name_prefix("main-tokio-").build() - .map_err(|e| format!("{:?}", e))?; - match config.roles { - ServiceRoles::LIGHT => run_until_exit( - runtime, - service::new_light(config)?, - exit - ), - _ => run_until_exit( - runtime, - service::new_full(config)?, - exit - ), - } - }), + match parse_and_prepare::(&version, "darwinia-node", args) { + ParseAndPrepare::Run(cmd) => cmd.run( + load_spec, + exit, + |exit, _cli_args, _custom_args, config: Config<_, _>| { + info!("{}", version.name); + info!(" version {}", config.full_version()); + info!(" _____ _ _ "); + info!(" | __ \\ (_) (_) "); + info!(" | | | | __ _ _ ____ ___ _ __ _ __ _ "); + info!(" | | | |/ _` | '__\\ \\ /\\ / / | '_ \\| |/ _` |"); + info!(" | |__| | (_| | | \\ V V /| | | | | | (_| |"); + info!(" |_____/ \\__,_|_| \\_/\\_/ |_|_| |_|_|\\__,_|"); + info!(" by Darwinia Network, 2017-2019"); + info!("Chain specification: {}", config.chain_spec.name()); + info!("Node name: {}", config.name); + info!("Roles: {}", display_role(&config)); + let runtime = RuntimeBuilder::new() + .name_prefix("main-tokio-") + .build() + .map_err(|e| format!("{:?}", e))?; + match config.roles { + ServiceRoles::LIGHT => run_until_exit(runtime, service::new_light(config)?, exit), + _ => run_until_exit(runtime, service::new_full(config)?, exit), + } + }, + ), ParseAndPrepare::BuildSpec(cmd) => cmd.run::(load_spec), - ParseAndPrepare::ExportBlocks(cmd) => cmd.run_with_builder(|config: Config<_, _>| - Ok(new_full_start!(config).0), load_spec, exit), - ParseAndPrepare::ImportBlocks(cmd) => cmd.run_with_builder(|config: Config<_, _>| - Ok(new_full_start!(config).0), load_spec, exit), - ParseAndPrepare::CheckBlock(cmd) => cmd.run_with_builder(|config: Config<_, _>| - Ok(new_full_start!(config).0), load_spec, exit), + ParseAndPrepare::ExportBlocks(cmd) => { + cmd.run_with_builder(|config: Config<_, _>| Ok(new_full_start!(config).0), load_spec, exit) + } + ParseAndPrepare::ImportBlocks(cmd) => { + cmd.run_with_builder(|config: Config<_, _>| Ok(new_full_start!(config).0), load_spec, exit) + } + ParseAndPrepare::CheckBlock(cmd) => { + cmd.run_with_builder(|config: Config<_, _>| Ok(new_full_start!(config).0), load_spec, exit) + } ParseAndPrepare::PurgeChain(cmd) => cmd.run(load_spec), - ParseAndPrepare::RevertChain(cmd) => cmd.run_with_builder(|config: Config<_, _>| - Ok(new_full_start!(config).0), load_spec), + ParseAndPrepare::RevertChain(cmd) => { + cmd.run_with_builder(|config: Config<_, _>| Ok(new_full_start!(config).0), load_spec) + } ParseAndPrepare::CustomCommand(CustomSubcommands::Factory(cli_args)) => { - let mut config: Config<_, _> = sc_cli::create_config_with_db_path( - load_spec, - &cli_args.shared_params, - &version, - )?; + let mut config: Config<_, _> = + sc_cli::create_config_with_db_path(load_spec, &cli_args.shared_params, &version)?; sc_cli::fill_import_params(&mut config, &cli_args.import_params, ServiceRoles::FULL)?; match ChainSpec::from(config.chain_spec.id()) { - Some(ref c) if c == &ChainSpec::Development || c == &ChainSpec::LocalTestnet => {}, + Some(ref c) if c == &ChainSpec::Development || c == &ChainSpec::LocalTestnet => {} _ => panic!("Factory is only supported for development and local testnet."), } - let factory_state = FactoryState::new( - cli_args.mode.clone(), - cli_args.num, - cli_args.rounds, - ); + let factory_state = FactoryState::new(cli_args.mode.clone(), cli_args.num, cli_args.rounds); let service_builder = new_full_start!(config).0; node_transaction_factory::factory::, _, _, _, _, _>( factory_state, service_builder.client(), - service_builder.select_chain() - .expect("The select_chain is always initialized by new_full_start!; QED") - ).map_err(|e| format!("Error in transaction factory: {}", e))?; + service_builder + .select_chain() + .expect("The select_chain is always initialized by new_full_start!; QED"), + ) + .map_err(|e| format!("Error in transaction factory: {}", e))?; Ok(()) } } } -fn run_until_exit( - mut runtime: Runtime, - service: T, - e: E, -) -> error::Result<()> +fn run_until_exit(mut runtime: Runtime, service: T, e: E) -> error::Result<()> where T: AbstractService, E: IntoExit, { - use futures::{FutureExt, TryFutureExt, channel::oneshot, future::select, compat::Future01CompatExt}; + use futures::{channel::oneshot, compat::Future01CompatExt, future::select, FutureExt, TryFutureExt}; let (exit_send, exit) = oneshot::channel(); let informant = sc_cli::informant::build(&service); - let future = select(informant, exit) - .map(|_| Ok(())) - .compat(); + let future = select(informant, exit).map(|_| Ok(())).compat(); runtime.executor().spawn(future); @@ -190,12 +187,8 @@ where let service_res = { let exit = e.into_exit(); - let service = service - .map_err(|err| error::Error::Service(err)) - .compat(); - let select = select(service, exit) - .map(|_| Ok(())) - .compat(); + let service = service.map_err(|err| error::Error::Service(err)).compat(); + let select = select(service, exit).map(|_| Ok(())).compat(); runtime.block_on(select) }; diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index 5256051c1..be201e98f 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -16,7 +16,7 @@ #![warn(unused_extern_crates)] -//! Service implementation. Specialized wrapper over substrate service. +//! Service implementation. Specialized wrapper over darwinia service. use std::sync::Arc; @@ -40,7 +40,7 @@ use sp_core::Blake2Hasher; use sp_runtime::traits::Block as BlockT; construct_simple_protocol! { - /// Demo protocol attachment for substrate. + /// Demo protocol attachment for darwinia. pub struct NodeProtocol where Block = Block { } } diff --git a/bin/node/executor/Cargo.toml b/bin/node/executor/Cargo.toml index 968f8e798..7945a3cfb 100644 --- a/bin/node/executor/Cargo.toml +++ b/bin/node/executor/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "node-executor" version = "2.0.0" -authors = ["Parity Technologies "] +authors = ["Darwinia Network "] description = "Substrate node implementation in Rust." edition = "2018" diff --git a/bin/node/executor/src/lib.rs b/bin/node/executor/src/lib.rs index 2c9037182..4e3db22ec 100644 --- a/bin/node/executor/src/lib.rs +++ b/bin/node/executor/src/lib.rs @@ -17,8 +17,8 @@ //! A `CodeExecutor` specialization which uses natively compiled runtime when the wasm to be //! executed is equivalent to the natively compiled code. -pub use sc_executor::NativeExecutor; use sc_executor::native_executor_instance; +pub use sc_executor::NativeExecutor; // Declare an instance of the native executor named `Executor`. Include the wasm binary as the // equivalent wasm code. @@ -30,34 +30,37 @@ native_executor_instance!( #[cfg(test)] mod tests { - use sc_executor::error::Result; use super::Executor; - use codec::{Encode, Decode, Joiner}; + use codec::{Decode, Encode, Joiner}; use frame_support::{ - Hashable, StorageValue, StorageMap, traits::Currency, - weights::{GetDispatchInfo, DispatchInfo, DispatchClass}, + weights::{DispatchClass, DispatchInfo, GetDispatchInfo}, + Hashable, StorageMap, StorageValue, }; - use sp_state_machine::TestExternalities as CoreTestExternalities; + use frame_system::{EventRecord, Phase}; + use node_primitives::{Balance, BlockNumber, Hash}; + use node_runtime::impls::LinearWeightToFee; + use node_runtime::{ + constants::currency::*, Balances, Block, BuildStorage, Call, CheckedExtrinsic, Event, Header, Runtime, System, + TransactionBaseFee, TransactionByteFee, TransactionPayment, TransferFee, UncheckedExtrinsic, + WeightFeeCoefficient, + }; + use node_testing::keyring::*; + use pallet_contracts::ContractAddressFor; + use sc_executor::error::Result; + use sc_executor::{NativeExecutor, WasmExecutionMethod}; use sp_core::{ - Blake2Hasher, NeverNativeValue, NativeOrEncoded, map, - traits::{CodeExecutor, Externalities}, storage::{well_known_keys, Storage}, + map, + storage::{well_known_keys, Storage}, + traits::{CodeExecutor, Externalities}, + Blake2Hasher, NativeOrEncoded, NeverNativeValue, }; use sp_runtime::{ - Fixed64, traits::{Header as HeaderT, Hash as HashT, Convert}, ApplyExtrinsicResult, + traits::{Convert, Hash as HashT, Header as HeaderT}, transaction_validity::InvalidTransaction, + ApplyExtrinsicResult, Fixed64, }; - use pallet_contracts::ContractAddressFor; - use sc_executor::{NativeExecutor, WasmExecutionMethod}; - use frame_system::{EventRecord, Phase}; - use node_runtime::{ - Header, Block, UncheckedExtrinsic, CheckedExtrinsic, Call, Runtime, Balances, BuildStorage, - System, TransactionPayment, Event, TransferFee, TransactionBaseFee, TransactionByteFee, - WeightFeeCoefficient, constants::currency::*, - }; - use node_runtime::impls::LinearWeightToFee; - use node_primitives::{Balance, Hash, BlockNumber}; - use node_testing::keyring::*; + use sp_state_machine::TestExternalities as CoreTestExternalities; use wabt; /// The wasm runtime code. @@ -94,7 +97,7 @@ mod tests { let base_fee = TransactionBaseFee::get(); - base_fee + fee_multiplier.saturated_multiply_accumulate(length_fee + weight_fee) + TransferFee::get() + base_fee + fee_multiplier.saturated_multiply_accumulate(length_fee + weight_fee) + TransferFee::get() } fn default_transfer_call() -> pallet_balances::Call { @@ -109,7 +112,13 @@ mod tests { } fn from_block_number(n: u32) -> Header { - Header::new(n, Default::default(), Default::default(), [69; 32].into(), Default::default()) + Header::new( + n, + Default::default(), + Default::default(), + [69; 32].into(), + Default::default(), + ) } fn executor() -> NativeExecutor { @@ -121,8 +130,8 @@ mod tests { } fn executor_call< - R:Decode + Encode + PartialEq, - NC: FnOnce() -> std::result::Result + std::panic::UnwindSafe + R: Decode + Encode + PartialEq, + NC: FnOnce() -> std::result::Result + std::panic::UnwindSafe, >( t: &mut TestExternalities, method: &str, @@ -131,34 +140,31 @@ mod tests { native_call: Option, ) -> (Result>, bool) { let mut t = t.ext(); - executor().call::<_, R, NC>( - &mut t, - method, - data, - use_native, - native_call, - ) + executor().call::<_, R, NC>(&mut t, method, data, use_native, native_call) } #[test] fn panic_execution_with_foreign_code_gives_error() { - let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { - top: map![ - >::hashed_key_for(alice()) => { - 69_u128.encode() - }, - >::hashed_key().to_vec() => { - 69_u128.encode() - }, - >::hashed_key().to_vec() => { - 0_u128.encode() - }, - >::hashed_key_for(0) => { - vec![0u8; 32] - } - ], - children: map![], - }); + let mut t = TestExternalities::::new_with_code( + BLOATY_CODE, + Storage { + top: map![ + >::hashed_key_for(alice()) => { + 69_u128.encode() + }, + >::hashed_key().to_vec() => { + 69_u128.encode() + }, + >::hashed_key().to_vec() => { + 0_u128.encode() + }, + >::hashed_key_for(0) => { + vec![0u8; 32] + } + ], + children: map![], + }, + ); let r = executor_call:: _>( &mut t, @@ -166,7 +172,8 @@ mod tests { &vec![].and(&from_block_number(1u32)), true, None, - ).0; + ) + .0; assert!(r.is_ok()); let v = executor_call:: _>( &mut t, @@ -174,30 +181,35 @@ mod tests { &vec![].and(&xt()), true, None, - ).0.unwrap(); + ) + .0 + .unwrap(); let r = ApplyExtrinsicResult::decode(&mut &v.as_encoded()[..]).unwrap(); assert_eq!(r, Err(InvalidTransaction::Payment.into())); } #[test] 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()) => { - 69_u128.encode() - }, - >::hashed_key().to_vec() => { - 69_u128.encode() - }, - >::hashed_key().to_vec() => { - 0_u128.encode() - }, - >::hashed_key_for(0) => { - vec![0u8; 32] - } - ], - children: map![], - }); + let mut t = TestExternalities::::new_with_code( + COMPACT_CODE, + Storage { + top: map![ + >::hashed_key_for(alice()) => { + 69_u128.encode() + }, + >::hashed_key().to_vec() => { + 69_u128.encode() + }, + >::hashed_key().to_vec() => { + 0_u128.encode() + }, + >::hashed_key_for(0) => { + vec![0u8; 32] + } + ], + children: map![], + }, + ); let r = executor_call:: _>( &mut t, @@ -205,7 +217,8 @@ mod tests { &vec![].and(&from_block_number(1u32)), true, None, - ).0; + ) + .0; assert!(r.is_ok()); let v = executor_call:: _>( &mut t, @@ -213,26 +226,31 @@ mod tests { &vec![].and(&xt()), true, None, - ).0.unwrap(); + ) + .0 + .unwrap(); let r = ApplyExtrinsicResult::decode(&mut &v.as_encoded()[..]).unwrap(); assert_eq!(r, Err(InvalidTransaction::Payment.into())); } #[test] 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()) => { - (111 * DOLLARS).encode() - }, - >::hashed_key().to_vec() => { - (111 * DOLLARS).encode() - }, - >::hashed_key().to_vec() => vec![0u8; 16], - >::hashed_key_for(0) => vec![0u8; 32] - ], - children: map![], - }); + let mut t = TestExternalities::::new_with_code( + COMPACT_CODE, + Storage { + top: map![ + >::hashed_key_for(alice()) => { + (111 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => { + (111 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => vec![0u8; 16], + >::hashed_key_for(0) => vec![0u8; 32] + ], + children: map![], + }, + ); let r = executor_call:: _>( &mut t, @@ -240,7 +258,8 @@ mod tests { &vec![].and(&from_block_number(1u32)), true, None, - ).0; + ) + .0; assert!(r.is_ok()); let fm = t.execute_with(TransactionPayment::next_fee_multiplier); @@ -251,30 +270,37 @@ mod tests { &vec![].and(&xt()), true, None, - ).0; + ) + .0; assert!(r.is_ok()); t.execute_with(|| { - assert_eq!(Balances::total_balance(&alice()), 42 * DOLLARS - transfer_fee(&xt(), fm)); + assert_eq!( + Balances::total_balance(&alice()), + 42 * DOLLARS - transfer_fee(&xt(), fm) + ); assert_eq!(Balances::total_balance(&bob()), 69 * DOLLARS); }); } #[test] fn successful_execution_with_foreign_code_gives_ok() { - let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { - top: map![ - >::hashed_key_for(alice()) => { - (111 * DOLLARS).encode() - }, - >::hashed_key().to_vec() => { - (111 * DOLLARS).encode() - }, - >::hashed_key().to_vec() => vec![0u8; 16], - >::hashed_key_for(0) => vec![0u8; 32] - ], - children: map![], - }); + let mut t = TestExternalities::::new_with_code( + BLOATY_CODE, + Storage { + top: map![ + >::hashed_key_for(alice()) => { + (111 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => { + (111 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => vec![0u8; 16], + >::hashed_key_for(0) => vec![0u8; 32] + ], + children: map![], + }, + ); let r = executor_call:: _>( &mut t, @@ -282,7 +308,8 @@ mod tests { &vec![].and(&from_block_number(1u32)), true, None, - ).0; + ) + .0; assert!(r.is_ok()); let fm = t.execute_with(TransactionPayment::next_fee_multiplier); @@ -293,11 +320,15 @@ mod tests { &vec![].and(&xt()), true, None, - ).0; + ) + .0; assert!(r.is_ok()); t.execute_with(|| { - assert_eq!(Balances::total_balance(&alice()), 42 * DOLLARS - transfer_fee(&xt(), fm)); + assert_eq!( + Balances::total_balance(&alice()), + 42 * DOLLARS - transfer_fee(&xt(), fm) + ); assert_eq!(Balances::total_balance(&bob()), 69 * DOLLARS); }); } @@ -305,9 +336,12 @@ mod tests { 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(), + node_testing::genesis::config(support_changes_trie, Some(code)) + .build_storage() + .unwrap(), ); - ext.changes_trie_storage().insert(0, GENESIS_HASH.into(), Default::default()); + ext.changes_trie_storage() + .insert(0, GENESIS_HASH.into(), Default::default()); ext } @@ -317,15 +351,14 @@ mod tests { parent_hash: Hash, extrinsics: Vec, ) -> (Vec, Hash) { - use sp_trie::{TrieConfiguration, trie_types::Layout}; + use sp_trie::{trie_types::Layout, TrieConfiguration}; // sign extrinsics. let extrinsics = extrinsics.into_iter().map(sign).collect::>(); // calculate the header fields that we can. - let extrinsics_root = Layout::::ordered_trie_root( - extrinsics.iter().map(Encode::encode) - ).to_fixed_bytes() + let extrinsics_root = Layout::::ordered_trie_root(extrinsics.iter().map(Encode::encode)) + .to_fixed_bytes() .into(); let header = Header { @@ -337,31 +370,26 @@ mod tests { }; // execute the block to get the real header. - executor_call:: _>( - env, - "Core_initialize_block", - &header.encode(), - true, - None, - ).0.unwrap(); + executor_call:: _>(env, "Core_initialize_block", &header.encode(), true, None) + .0 + .unwrap(); for i in extrinsics.iter() { - executor_call:: _>( - env, - "BlockBuilder_apply_extrinsic", - &i.encode(), - true, - None, - ).0.unwrap(); + executor_call:: _>(env, "BlockBuilder_apply_extrinsic", &i.encode(), true, None) + .0 + .unwrap(); } let header = match executor_call:: _>( env, "BlockBuilder_finalize_block", - &[0u8;0], + &[0u8; 0], true, None, - ).0.unwrap() { + ) + .0 + .unwrap() + { NativeOrEncoded::Native(_) => unreachable!(), NativeOrEncoded::Encoded(h) => Header::decode(&mut &h[..]).unwrap(), }; @@ -384,7 +412,7 @@ mod tests { signed: Some((alice(), signed_extra(0, 0))), function: Call::Balances(pallet_balances::Call::transfer(bob().into(), 69 * DOLLARS)), }, - ] + ], ) } @@ -406,7 +434,7 @@ mod tests { signed: Some((alice(), signed_extra(0, 0))), function: Call::Balances(pallet_balances::Call::transfer(bob().into(), 69 * DOLLARS)), }, - ] + ], ); let block2 = construct_block( &mut t, @@ -424,8 +452,8 @@ mod tests { CheckedExtrinsic { signed: Some((alice(), signed_extra(1, 0))), function: Call::Balances(pallet_balances::Call::transfer(bob().into(), 15 * DOLLARS)), - } - ] + }, + ], ); // session change => consensus authorities change => authorities change digest item appears @@ -448,8 +476,8 @@ mod tests { CheckedExtrinsic { signed: Some((alice(), signed_extra(nonce, 0))), function: Call::System(frame_system::Call::remark(vec![0; size])), - } - ] + }, + ], ) } @@ -462,24 +490,25 @@ mod tests { let mut alice_last_known_balance: Balance = Default::default(); let mut fm = t.execute_with(TransactionPayment::next_fee_multiplier); - executor_call:: _>( - &mut t, - "Core_execute_block", - &block1.0, - true, - None, - ).0.unwrap(); + executor_call:: _>(&mut t, "Core_execute_block", &block1.0, true, None) + .0 + .unwrap(); t.execute_with(|| { - assert_eq!(Balances::total_balance(&alice()), 42 * DOLLARS - transfer_fee(&xt(), fm)); + assert_eq!( + Balances::total_balance(&alice()), + 42 * DOLLARS - transfer_fee(&xt(), fm) + ); assert_eq!(Balances::total_balance(&bob()), 169 * DOLLARS); alice_last_known_balance = Balances::total_balance(&alice()); let events = vec![ EventRecord { phase: Phase::ApplyExtrinsic(0), - event: Event::system(frame_system::Event::ExtrinsicSuccess( - DispatchInfo { weight: 10000, class: DispatchClass::Operational, pays_fee: true } - )), + event: Event::system(frame_system::Event::ExtrinsicSuccess(DispatchInfo { + weight: 10000, + class: DispatchClass::Operational, + pays_fee: true, + })), topics: vec![], }, EventRecord { @@ -499,9 +528,11 @@ mod tests { }, EventRecord { phase: Phase::ApplyExtrinsic(1), - event: Event::system(frame_system::Event::ExtrinsicSuccess( - DispatchInfo { weight: 1000000, class: DispatchClass::Normal, pays_fee: true } - )), + event: Event::system(frame_system::Event::ExtrinsicSuccess(DispatchInfo { + weight: 1000000, + class: DispatchClass::Normal, + pays_fee: true, + })), topics: vec![], }, ]; @@ -510,29 +541,24 @@ mod tests { fm = t.execute_with(TransactionPayment::next_fee_multiplier); - executor_call:: _>( - &mut t, - "Core_execute_block", - &block2.0, - true, - None, - ).0.unwrap(); + executor_call:: _>(&mut t, "Core_execute_block", &block2.0, true, None) + .0 + .unwrap(); t.execute_with(|| { assert_eq!( Balances::total_balance(&alice()), alice_last_known_balance - 10 * DOLLARS - transfer_fee(&xt(), fm), ); - assert_eq!( - Balances::total_balance(&bob()), - 179 * DOLLARS - transfer_fee(&xt(), fm), - ); + assert_eq!(Balances::total_balance(&bob()), 179 * DOLLARS - transfer_fee(&xt(), fm),); let events = vec![ EventRecord { phase: Phase::ApplyExtrinsic(0), - event: Event::system(frame_system::Event::ExtrinsicSuccess( - DispatchInfo { weight: 10000, class: DispatchClass::Operational, pays_fee: true } - )), + event: Event::system(frame_system::Event::ExtrinsicSuccess(DispatchInfo { + weight: 10000, + class: DispatchClass::Operational, + pays_fee: true, + })), topics: vec![], }, EventRecord { @@ -542,21 +568,21 @@ mod tests { }, EventRecord { phase: Phase::ApplyExtrinsic(1), - event: Event::pallet_balances( - pallet_balances::RawEvent::Transfer( - bob().into(), - alice().into(), - 5 * DOLLARS, - 1 * CENTS, - ) - ), + event: Event::pallet_balances(pallet_balances::RawEvent::Transfer( + bob().into(), + alice().into(), + 5 * DOLLARS, + 1 * CENTS, + )), topics: vec![], }, EventRecord { phase: Phase::ApplyExtrinsic(1), - event: Event::system(frame_system::Event::ExtrinsicSuccess( - DispatchInfo { weight: 1000000, class: DispatchClass::Normal, pays_fee: true } - )), + event: Event::system(frame_system::Event::ExtrinsicSuccess(DispatchInfo { + weight: 1000000, + class: DispatchClass::Normal, + pays_fee: true, + })), topics: vec![], }, EventRecord { @@ -566,21 +592,21 @@ mod tests { }, EventRecord { phase: Phase::ApplyExtrinsic(2), - event: Event::pallet_balances( - pallet_balances::RawEvent::Transfer( - alice().into(), - bob().into(), - 15 * DOLLARS, - 1 * CENTS, - ) - ), + event: Event::pallet_balances(pallet_balances::RawEvent::Transfer( + alice().into(), + bob().into(), + 15 * DOLLARS, + 1 * CENTS, + )), topics: vec![], }, EventRecord { phase: Phase::ApplyExtrinsic(2), - event: Event::system(frame_system::Event::ExtrinsicSuccess( - DispatchInfo { weight: 1000000, class: DispatchClass::Normal, pays_fee: true } - )), + event: Event::system(frame_system::Event::ExtrinsicSuccess(DispatchInfo { + weight: 1000000, + class: DispatchClass::Normal, + pays_fee: true, + })), topics: vec![], }, ]; @@ -597,29 +623,24 @@ mod tests { let mut alice_last_known_balance: Balance = Default::default(); let mut fm = t.execute_with(TransactionPayment::next_fee_multiplier); - executor_call:: _>( - &mut t, - "Core_execute_block", - &block1.0, - false, - None, - ).0.unwrap(); + executor_call:: _>(&mut t, "Core_execute_block", &block1.0, false, None) + .0 + .unwrap(); t.execute_with(|| { - assert_eq!(Balances::total_balance(&alice()), 42 * DOLLARS - transfer_fee(&xt(), fm)); + assert_eq!( + Balances::total_balance(&alice()), + 42 * DOLLARS - transfer_fee(&xt(), fm) + ); assert_eq!(Balances::total_balance(&bob()), 169 * DOLLARS); alice_last_known_balance = Balances::total_balance(&alice()); }); fm = t.execute_with(TransactionPayment::next_fee_multiplier); - executor_call:: _>( - &mut t, - "Core_execute_block", - &block2.0, - false, - None, - ).0.unwrap(); + executor_call:: _>(&mut t, "Core_execute_block", &block2.0, false, None) + .0 + .unwrap(); t.execute_with(|| { assert_eq!( @@ -747,39 +768,34 @@ mod tests { }, CheckedExtrinsic { signed: Some((charlie(), signed_extra(0, 0))), - function: Call::Contracts( - pallet_contracts::Call::put_code::(10_000, transfer_code) - ), + function: Call::Contracts(pallet_contracts::Call::put_code::(10_000, transfer_code)), }, CheckedExtrinsic { signed: Some((charlie(), signed_extra(1, 0))), - function: Call::Contracts( - pallet_contracts::Call::instantiate::(1 * DOLLARS, 10_000, transfer_ch, Vec::new()) - ), + function: Call::Contracts(pallet_contracts::Call::instantiate::( + 1 * DOLLARS, + 10_000, + transfer_ch, + Vec::new(), + )), }, CheckedExtrinsic { signed: Some((charlie(), signed_extra(2, 0))), - function: Call::Contracts( - pallet_contracts::Call::call::( - pallet_indices::address::Address::Id(addr.clone()), - 10, - 10_000, - vec![0x00, 0x01, 0x02, 0x03] - ) - ), + function: Call::Contracts(pallet_contracts::Call::call::( + pallet_indices::address::Address::Id(addr.clone()), + 10, + 10_000, + vec![0x00, 0x01, 0x02, 0x03], + )), }, - ] + ], ); let mut t = new_test_ext(COMPACT_CODE, false); - executor_call:: _>( - &mut t, - "Core_execute_block", - &b.0, - false, - None, - ).0.unwrap(); + executor_call:: _>(&mut t, "Core_execute_block", &b.0, false, None) + .0 + .unwrap(); t.execute_with(|| { // Verify that the contract constructor worked well and code of TRANSFER contract is actually deployed. @@ -805,7 +821,8 @@ mod tests { &block_with_size(42, 0, 120_000).0, false, None, - ).0; + ) + .0; assert!(result.is_err()); // Err(Wasmi(Trap(Trap { kind: Host(AllocatorOutOfSpace) }))) } @@ -819,39 +836,44 @@ mod tests { &block_with_size(42, 0, 120_000).0, true, None, - ).0.unwrap(); + ) + .0 + .unwrap(); } #[test] fn native_big_block_import_fails_on_fallback() { let mut t = new_test_ext(COMPACT_CODE, false); - assert!( - executor_call:: _>( - &mut t, - "Core_execute_block", - &block_with_size(42, 0, 120_000).0, - false, - None, - ).0.is_err() - ); + assert!(executor_call:: _>( + &mut t, + "Core_execute_block", + &block_with_size(42, 0, 120_000).0, + false, + None, + ) + .0 + .is_err()); } #[test] fn panic_execution_gives_error() { - let mut t = TestExternalities::::new_with_code(BLOATY_CODE, Storage { - top: map![ - >::hashed_key_for(alice()) => { - 0_u128.encode() - }, - >::hashed_key().to_vec() => { - 0_u128.encode() - }, - >::hashed_key().to_vec() => vec![0u8; 16], - >::hashed_key_for(0) => vec![0u8; 32] - ], - children: map![], - }); + let mut t = TestExternalities::::new_with_code( + BLOATY_CODE, + Storage { + top: map![ + >::hashed_key_for(alice()) => { + 0_u128.encode() + }, + >::hashed_key().to_vec() => { + 0_u128.encode() + }, + >::hashed_key().to_vec() => vec![0u8; 16], + >::hashed_key_for(0) => vec![0u8; 32] + ], + children: map![], + }, + ); let r = executor_call:: _>( &mut t, @@ -859,7 +881,8 @@ mod tests { &vec![].and(&from_block_number(1u32)), false, None, - ).0; + ) + .0; assert!(r.is_ok()); let r = executor_call:: _>( &mut t, @@ -867,26 +890,32 @@ mod tests { &vec![].and(&xt()), false, None, - ).0.unwrap().into_encoded(); + ) + .0 + .unwrap() + .into_encoded(); let r = ApplyExtrinsicResult::decode(&mut &r[..]).unwrap(); assert_eq!(r, Err(InvalidTransaction::Payment.into())); } #[test] fn successful_execution_gives_ok() { - let mut t = TestExternalities::::new_with_code(COMPACT_CODE, Storage { - top: map![ - >::hashed_key_for(alice()) => { - (111 * DOLLARS).encode() - }, - >::hashed_key().to_vec() => { - (111 * DOLLARS).encode() - }, - >::hashed_key().to_vec() => vec![0u8; 16], - >::hashed_key_for(0) => vec![0u8; 32] - ], - children: map![], - }); + let mut t = TestExternalities::::new_with_code( + COMPACT_CODE, + Storage { + top: map![ + >::hashed_key_for(alice()) => { + (111 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => { + (111 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => vec![0u8; 16], + >::hashed_key_for(0) => vec![0u8; 32] + ], + children: map![], + }, + ); let r = executor_call:: _>( &mut t, @@ -894,7 +923,8 @@ mod tests { &vec![].and(&from_block_number(1u32)), false, None, - ).0; + ) + .0; assert!(r.is_ok()); let fm = t.execute_with(TransactionPayment::next_fee_multiplier); let r = executor_call:: _>( @@ -903,14 +933,20 @@ mod tests { &vec![].and(&xt()), false, None, - ).0.unwrap().into_encoded(); + ) + .0 + .unwrap() + .into_encoded(); ApplyExtrinsicResult::decode(&mut &r[..]) .unwrap() .expect("Extrinsic could be applied") .expect("Extrinsic did not fail"); t.execute_with(|| { - assert_eq!(Balances::total_balance(&alice()), 42 * DOLLARS - 1 * transfer_fee(&xt(), fm)); + assert_eq!( + Balances::total_balance(&alice()), + 42 * DOLLARS - 1 * transfer_fee(&xt(), fm) + ); assert_eq!(Balances::total_balance(&bob()), 69 * DOLLARS); }); } @@ -922,13 +958,9 @@ mod tests { let block = Block::decode(&mut &block_data[..]).unwrap(); let mut t = new_test_ext(COMPACT_CODE, true); - executor_call:: _>( - &mut t, - "Core_execute_block", - &block.encode(), - true, - None, - ).0.unwrap(); + executor_call:: _>(&mut t, "Core_execute_block", &block.encode(), true, None) + .0 + .unwrap(); assert!(t.ext().storage_changes_root(&GENESIS_HASH.encode()).unwrap().is_some()); } @@ -938,22 +970,16 @@ mod tests { let block1 = changes_trie_block(); let mut t = new_test_ext(COMPACT_CODE, true); - executor_call:: _>( - &mut t, - "Core_execute_block", - &block1.0, - false, - None, - ).0.unwrap(); + executor_call:: _>(&mut t, "Core_execute_block", &block1.0, false, None) + .0 + .unwrap(); assert!(t.ext().storage_changes_root(&GENESIS_HASH.encode()).unwrap().is_some()); } #[test] fn should_import_block_with_test_client() { - use node_testing::client::{ - ClientExt, TestClientBuilderExt, TestClientBuilder, sp_consensus::BlockOrigin - }; + use node_testing::client::{sp_consensus::BlockOrigin, ClientExt, TestClientBuilder, TestClientBuilderExt}; let client = TestClientBuilder::new().build(); let block1 = changes_trie_block(); @@ -963,7 +989,6 @@ mod tests { client.import(BlockOrigin::Own, block).unwrap(); } - #[test] fn fee_multiplier_increases_and_decreases_on_big_weight() { let mut t = new_test_ext(COMPACT_CODE, false); @@ -984,14 +1009,14 @@ mod tests { 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()), - } - ] + }, + ], ); // small one in terms of weight. @@ -1001,26 +1026,26 @@ mod tests { 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))), function: Call::System(frame_system::Call::remark(vec![0; 1])), - } - ] + }, + ], ); - 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:: _>( - &mut t, - "Core_execute_block", - &block1.0, - true, - None, - ).0.unwrap(); + executor_call:: _>(&mut t, "Core_execute_block", &block1.0, true, None) + .0 + .unwrap(); // weight multiplier is increased for next block. t.execute_with(|| { @@ -1031,13 +1056,9 @@ mod tests { }); // execute a big block. - executor_call:: _>( - &mut t, - "Core_execute_block", - &block2.0, - true, - None, - ).0.unwrap(); + executor_call:: _>(&mut t, "Core_execute_block", &block2.0, true, None) + .0 + .unwrap(); // weight multiplier is increased for next block. t.execute_with(|| { @@ -1049,29 +1070,32 @@ mod tests { #[test] fn transaction_fee_is_correct_ultimate() { - // This uses the exact values of substrate-node. + // This uses the exact values of darwinia-node. // // weight of transfer call as of now: 1_000_000 // if weight of the cheapest weight would be 10^7, this would be 10^9, which is: - // - 1 MILLICENTS in substrate node. + // - 1 MILLICENTS in darwinia 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 { - top: map![ - >::hashed_key_for(alice()) => { - (100 * DOLLARS).encode() - }, - >::hashed_key_for(bob()) => { - (10 * DOLLARS).encode() - }, - >::hashed_key().to_vec() => { - (110 * DOLLARS).encode() - }, - >::hashed_key().to_vec() => vec![0u8; 16], - >::hashed_key_for(0) => vec![0u8; 32] - ], - children: map![], - }); + let mut t = TestExternalities::::new_with_code( + COMPACT_CODE, + Storage { + top: map![ + >::hashed_key_for(alice()) => { + (100 * DOLLARS).encode() + }, + >::hashed_key_for(bob()) => { + (10 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => { + (110 * DOLLARS).encode() + }, + >::hashed_key().to_vec() => vec![0u8; 16], + >::hashed_key_for(0) => vec![0u8; 32] + ], + children: map![], + }, + ); let tip = 1_000_000; let xt = sign(CheckedExtrinsic { @@ -1085,7 +1109,8 @@ mod tests { &vec![].and(&from_block_number(1u32)), true, None, - ).0; + ) + .0; assert!(r.is_ok()); let r = executor_call:: _>( @@ -1094,7 +1119,8 @@ mod tests { &vec![].and(&xt.clone()), true, None, - ).0; + ) + .0; assert!(r.is_ok()); t.execute_with(|| { @@ -1106,9 +1132,8 @@ mod tests { // - Creation-fee of bob's account. let mut balance_alice = (100 - 69) * DOLLARS; - let length_fee = TransactionBaseFee::get() + - TransactionByteFee::get() * - (xt.clone().encode().len() as Balance); + let length_fee = + TransactionBaseFee::get() + TransactionByteFee::get() * (xt.clone().encode().len() as Balance); balance_alice -= length_fee; let weight = default_transfer_call().get_dispatch_info().weight; @@ -1146,23 +1171,23 @@ mod tests { loop { let num_transfers = block_number * factor; - let mut xts = (0..num_transfers).map(|i| CheckedExtrinsic { - signed: Some((charlie(), signed_extra(nonce + i as Index, 0))), - function: Call::Balances(pallet_balances::Call::transfer(bob().into(), 0)), - }).collect::>(); - - xts.insert(0, CheckedExtrinsic { - signed: None, - function: Call::Timestamp(pallet_timestamp::Call::set(time * 1000)), - }); + let mut xts = (0..num_transfers) + .map(|i| CheckedExtrinsic { + signed: Some((charlie(), signed_extra(nonce + i as Index, 0))), + function: Call::Balances(pallet_balances::Call::transfer(bob().into(), 0)), + }) + .collect::>(); + + xts.insert( + 0, + CheckedExtrinsic { + signed: None, + function: Call::Timestamp(pallet_timestamp::Call::set(time * 1000)), + }, + ); // NOTE: this is super slow. Can probably be improved. - let block = construct_block( - &mut tt, - block_number, - previous_hash, - xts - ); + let block = construct_block(&mut tt, block_number, previous_hash, xts); let len = block.0.len(); print!( @@ -1173,13 +1198,7 @@ mod tests { len / 1024 / 1024, ); - let r = executor_call:: _>( - &mut t, - "Core_execute_block", - &block.0, - true, - None, - ).0; + let r = executor_call:: _>(&mut t, "Core_execute_block", &block.0, true, None).0; println!(" || Result = {:?}", r); assert!(r.is_ok()); @@ -1226,7 +1245,7 @@ mod tests { signed: Some((charlie(), signed_extra(nonce, 0))), function: Call::System(frame_system::Call::remark(vec![0u8; (block_number * factor) as usize])), }, - ] + ], ); let len = block.0.len(); @@ -1237,13 +1256,7 @@ mod tests { len / 1024 / 1024, ); - let r = executor_call:: _>( - &mut t, - "Core_execute_block", - &block.0, - true, - None, - ).0; + let r = executor_call:: _>(&mut t, "Core_execute_block", &block.0, true, None).0; println!(" || Result = {:?}", r); assert!(r.is_ok()); diff --git a/bin/node/rpc-client/Cargo.toml b/bin/node/rpc-client/Cargo.toml index c31918e3b..d3649884d 100644 --- a/bin/node/rpc-client/Cargo.toml +++ b/bin/node/rpc-client/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "node-rpc-client" version = "2.0.0" -authors = ["Parity Technologies "] +authors = ["Darwinia Network "] edition = "2018" [dependencies] diff --git a/bin/node/rpc-client/src/main.rs b/bin/node/rpc-client/src/main.rs index 3874556ef..83d94d14d 100644 --- a/bin/node/rpc-client/src/main.rs +++ b/bin/node/rpc-client/src/main.rs @@ -16,22 +16,16 @@ #![warn(missing_docs)] -//! Example substrate RPC client code. +//! Example darwinia RPC client code. //! //! This module shows how you can write a Rust RPC client that connects to a running -//! substrate node and use staticly typed RPC wrappers. +//! darwinia node and use staticly typed RPC wrappers. use futures::Future; use hyper::rt; +use jsonrpc_core_client::{transports::http, RpcError}; use node_primitives::Hash; -use sc_rpc::author::{ - AuthorClient, - hash::ExtrinsicOrHash, -}; -use jsonrpc_core_client::{ - transports::http, - RpcError, -}; +use sc_rpc::author::{hash::ExtrinsicOrHash, AuthorClient}; fn main() { env_logger::init(); @@ -40,9 +34,7 @@ fn main() { let uri = "http://localhost:9933"; http::connect(uri) - .and_then(|client: AuthorClient| { - remove_all_extrinsics(client) - }) + .and_then(|client: AuthorClient| remove_all_extrinsics(client)) .map_err(|e| { println!("Error: {:?}", e); }) @@ -57,11 +49,15 @@ fn main() { /// /// As the resul of running the code the entire content of the transaction pool is going /// to be removed and the extrinsics are going to be temporarily banned. -fn remove_all_extrinsics(client: AuthorClient) -> impl Future { - client.pending_extrinsics() +fn remove_all_extrinsics(client: AuthorClient) -> impl Future { + client + .pending_extrinsics() .and_then(move |pending| { client.remove_extrinsic( - pending.into_iter().map(|tx| ExtrinsicOrHash::Extrinsic(tx.into())).collect() + pending + .into_iter() + .map(|tx| ExtrinsicOrHash::Extrinsic(tx.into())) + .collect(), ) }) .map(|removed| { diff --git a/bin/node/rpc/Cargo.toml b/bin/node/rpc/Cargo.toml index 360ff9f64..bc847f309 100644 --- a/bin/node/rpc/Cargo.toml +++ b/bin/node/rpc/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "node-rpc" version = "2.0.0" -authors = ["Parity Technologies "] +authors = ["Darwinia Network "] edition = "2018" [dependencies] diff --git a/bin/node/rpc/src/lib.rs b/bin/node/rpc/src/lib.rs index 67a349598..4012ee0f8 100644 --- a/bin/node/rpc/src/lib.rs +++ b/bin/node/rpc/src/lib.rs @@ -16,7 +16,7 @@ //! A collection of node-specific RPC methods. //! -//! Since `substrate` core functionality makes no assumptions +//! Since `darwinia` core functionality makes no assumptions //! about the modules used inside the runtime, so do //! RPC methods defined in `sc-rpc` crate. //! It means that `client/rpc` can't have any methods that @@ -31,7 +31,7 @@ use std::sync::Arc; -use node_primitives::{Block, AccountId, Index, Balance}; +use node_primitives::{AccountId, Balance, Block, Index}; use node_runtime::UncheckedExtrinsic; use sp_runtime::traits::ProvideRuntimeApi; use sp_transaction_pool::TransactionPool; @@ -57,11 +57,8 @@ impl LightDeps { /// Instantiate all RPC extensions. /// /// If you provide `LightDeps`, the system is configured for light client. -pub fn create( - client: Arc, - pool: Arc

, - light_deps: Option>, -) -> jsonrpc_core::IoHandler where +pub fn create(client: Arc, pool: Arc

, light_deps: Option>) -> jsonrpc_core::IoHandler +where C: ProvideRuntimeApi, C: sc_client::blockchain::HeaderBackend, C: Send + Sync + 'static, @@ -72,30 +69,31 @@ pub fn create( P: TransactionPool + 'static, M: jsonrpc_core::Metadata + Default, { - use substrate_frame_rpc_system::{FullSystem, LightSystem, SystemApi}; use pallet_contracts_rpc::{Contracts, ContractsApi}; use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; + use substrate_frame_rpc_system::{FullSystem, LightSystem, SystemApi}; let mut io = jsonrpc_core::IoHandler::default(); - if let Some(LightDeps { remote_blockchain, fetcher }) = light_deps { - io.extend_with( - SystemApi::::to_delegate(LightSystem::new(client, remote_blockchain, fetcher, pool)) - ); + if let Some(LightDeps { + remote_blockchain, + fetcher, + }) = light_deps + { + io.extend_with(SystemApi::::to_delegate(LightSystem::new( + client, + remote_blockchain, + fetcher, + pool, + ))); } else { - io.extend_with( - SystemApi::to_delegate(FullSystem::new(client.clone(), pool)) - ); + io.extend_with(SystemApi::to_delegate(FullSystem::new(client.clone(), pool))); // Making synchronous calls in light client freezes the browser currently, // more context: https://github.com/paritytech/substrate/pull/3480 // These RPCs should use an asynchronous caller instead. - io.extend_with( - ContractsApi::to_delegate(Contracts::new(client.clone())) - ); - io.extend_with( - TransactionPaymentApi::to_delegate(TransactionPayment::new(client)) - ); + io.extend_with(ContractsApi::to_delegate(Contracts::new(client.clone()))); + io.extend_with(TransactionPaymentApi::to_delegate(TransactionPayment::new(client))); } io } diff --git a/bin/node/runtime/src/constants.rs b/bin/node/runtime/src/constants.rs index 2c9ed1c1e..488680399 100644 --- a/bin/node/runtime/src/constants.rs +++ b/bin/node/runtime/src/constants.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! A set of constant values used in substrate runtime. +//! A set of constant values used in darwinia runtime. /// Money matters. pub mod currency { diff --git a/bin/node/runtime/src/impls.rs b/bin/node/runtime/src/impls.rs index b2669562b..85f7436d1 100644 --- a/bin/node/runtime/src/impls.rs +++ b/bin/node/runtime/src/impls.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! Some configurable implementations as associated type for the substrate runtime. +//! Some configurable implementations as associated type for the darwinia runtime. use frame_support::{ traits::{Currency, Get, OnUnbalanced}, @@ -63,7 +63,7 @@ pub struct LinearWeightToFee(sp_std::marker::PhantomData); impl> Convert for LinearWeightToFee { fn convert(w: Weight) -> Balance { - // substrate-node a weight of 10_000 (smallest non-zero weight) to be mapped to 10^7 units of + // darwinia-node a weight of 10_000 (smallest non-zero weight) to be mapped to 10^7 units of // fees, hence: let coefficient = C::get(); Balance::from(w).saturating_mul(coefficient) @@ -216,7 +216,7 @@ mod tests { assert!( iterations > 50_000, "This assertion is just a warning; Don't panic. \ - Current substrate/polkadot node are configured with a _slow adjusting fee_ \ + Current darwinia node are configured with a _slow adjusting fee_ \ mechanism. Hence, it is really unlikely that fees collapse to zero even on an \ empty chain in less than at least of couple of thousands of empty blocks. But this \ simulation indicates that fees collapsed to zero after {} almost-empty blocks. \ @@ -234,7 +234,7 @@ mod tests { // almost full. The entire quota of normal transactions is taken. let block_weight = AvailableBlockRatio::get() * max() - 100; - // Default substrate minimum. + // Default darwinia minimum. let tx_weight = 10_000; run_with_system_weight(block_weight, || { From a57add260a3630f87c6c0985c6572095a66b092f Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Mon, 10 Feb 2020 19:18:51 +0800 Subject: [PATCH 13/17] update: format --- bin/node/cli/src/factory_impl.rs | 93 ++++---- frame/balances/ring/src/mock.rs | 41 ++-- frame/balances/ring/src/tests.rs | 290 ++++++++++++++---------- primitives/phragmen/benches/phragmen.rs | 68 +++--- primitives/phragmen/src/lib.rs | 108 +++++---- primitives/phragmen/src/mock.rs | 118 +++++----- primitives/phragmen/src/tests.rs | 245 ++++++++------------ 7 files changed, 479 insertions(+), 484 deletions(-) diff --git a/bin/node/cli/src/factory_impl.rs b/bin/node/cli/src/factory_impl.rs index 2a77bb5ca..689d17d46 100644 --- a/bin/node/cli/src/factory_impl.rs +++ b/bin/node/cli/src/factory_impl.rs @@ -18,25 +18,25 @@ //! using the cli to manufacture transactions and distribute them //! to accounts. -use rand::{Rng, SeedableRng}; use rand::rngs::StdRng; +use rand::{Rng, SeedableRng}; -use codec::{Encode, Decode}; -use sp_keyring::sr25519::Keyring; -use node_runtime::{ - Call, CheckedExtrinsic, UncheckedExtrinsic, SignedExtra, BalancesCall, ExistentialDeposit, - MinimumPeriod -}; +use codec::{Decode, Encode}; use node_primitives::Signature; -use sp_core::{sr25519, crypto::Pair}; -use sp_runtime::{ - generic::Era, traits::{Block as BlockT, Header as HeaderT, SignedExtension, Verify, IdentifyAccount} +use node_runtime::{ + BalancesCall, Call, CheckedExtrinsic, ExistentialDeposit, MinimumPeriod, SignedExtra, UncheckedExtrinsic, }; -use node_transaction_factory::RuntimeAdapter; use node_transaction_factory::modes::Mode; +use node_transaction_factory::RuntimeAdapter; +use sp_core::{crypto::Pair, sr25519}; +use sp_finality_tracker; use sp_inherents::InherentData; +use sp_keyring::sr25519::Keyring; +use sp_runtime::{ + generic::Era, + traits::{Block as BlockT, Header as HeaderT, IdentifyAccount, SignedExtension, Verify}, +}; use sp_timestamp; -use sp_finality_tracker; type AccountPublic = ::Signer; @@ -77,11 +77,7 @@ impl RuntimeAdapter for FactoryState { type Number = Number; - fn new( - mode: Mode, - num: u64, - rounds: u64, - ) -> FactoryState { + fn new(mode: Mode, num: u64, rounds: u64) -> FactoryState { FactoryState { mode, num: num as u32, @@ -145,24 +141,28 @@ impl RuntimeAdapter for FactoryState { ) -> ::Extrinsic { let index = self.extract_index(&sender, prior_block_hash); let phase = self.extract_phase(*prior_block_hash); - sign::(CheckedExtrinsic { - signed: Some((sender.clone(), Self::build_extra(index, phase))), - function: Call::Balances( - BalancesCall::transfer( + sign::( + CheckedExtrinsic { + signed: Some((sender.clone(), Self::build_extra(index, phase))), + function: Call::Balances(BalancesCall::transfer( pallet_indices::address::Address::Id(destination.clone().into()), - (*amount).into() - ) - ) - }, key, (version, genesis_hash.clone(), prior_block_hash.clone(), (), (), (), ())) + (*amount).into(), + )), + }, + key, + (version, genesis_hash.clone(), prior_block_hash.clone(), (), (), (), ()), + ) } fn inherent_extrinsics(&self) -> InherentData { let timestamp = (self.block_no as u64 + 1) * MinimumPeriod::get(); let mut inherent = InherentData::new(); - inherent.put_data(sp_timestamp::INHERENT_IDENTIFIER, ×tamp) + inherent + .put_data(sp_timestamp::INHERENT_IDENTIFIER, ×tamp) .expect("Failed putting timestamp inherent"); - inherent.put_data(sp_finality_tracker::INHERENT_IDENTIFIER, &self.block_no) + inherent + .put_data(sp_finality_tracker::INHERENT_IDENTIFIER, &self.block_no) .expect("Failed putting finalized number inherent"); inherent } @@ -191,11 +191,7 @@ impl RuntimeAdapter for FactoryState { pair } - fn extract_index( - &self, - _account_id: &Self::AccountId, - _block_hash: &::Hash, - ) -> Self::Index { + fn extract_index(&self, _account_id: &Self::AccountId, _block_hash: &::Hash) -> Self::Index { // TODO get correct index for account via api. See #2587. // This currently prevents the factory from being used // without a preceding purge of the database. @@ -204,20 +200,21 @@ impl RuntimeAdapter for FactoryState { } else { match self.round() { 0 => - // if round is 0 all transactions will be done with master as a sender - self.block_no() as Self::Index, + // if round is 0 all transactions will be done with master as a sender + { + self.block_no() as Self::Index + } _ => - // if round is e.g. 1 every sender account will be new and not yet have - // any transactions done + // if round is e.g. 1 every sender account will be new and not yet have + // any transactions done + { 0 + } } } } - fn extract_phase( - &self, - _block_hash: ::Hash - ) -> Self::Phase { + fn extract_phase(&self, _block_hash: ::Hash) -> Self::Phase { // TODO get correct phase via api. See #2587. // This currently prevents the factory from being used // without a preceding purge of the database. @@ -245,13 +242,15 @@ fn sign( let s = match xt.signed { Some((signed, extra)) => { let payload = (xt.function, extra.clone(), additional_signed); - let signature = payload.using_encoded(|b| { - if b.len() > 256 { - key.sign(&sp_io::hashing::blake2_256(b)) - } else { - key.sign(b) - } - }).into(); + let signature = payload + .using_encoded(|b| { + if b.len() > 256 { + key.sign(&sp_io::hashing::blake2_256(b)) + } else { + key.sign(b) + } + }) + .into(); UncheckedExtrinsic { signature: Some((pallet_indices::address::Address::Id(signed), signature, extra)), function: payload.0, diff --git a/frame/balances/ring/src/mock.rs b/frame/balances/ring/src/mock.rs index f5664be7e..47595b5ac 100644 --- a/frame/balances/ring/src/mock.rs +++ b/frame/balances/ring/src/mock.rs @@ -16,17 +16,21 @@ //! Test utilities -use sp_runtime::{Perbill, traits::{ConvertInto, IdentityLookup}, testing::Header}; +use crate::{GenesisConfig, Module, Trait}; +use frame_support::traits::Get; +use frame_support::weights::{DispatchInfo, Weight}; +use frame_support::{impl_outer_origin, parameter_types}; use sp_core::H256; use sp_io; -use frame_support::{impl_outer_origin, parameter_types}; -use frame_support::traits::Get; -use frame_support::weights::{Weight, DispatchInfo}; +use sp_runtime::{ + testing::Header, + traits::{ConvertInto, IdentityLookup}, + Perbill, +}; use std::cell::RefCell; -use crate::{GenesisConfig, Module, Trait}; use frame_system as system; -impl_outer_origin!{ +impl_outer_origin! { pub enum Origin for Test {} } @@ -38,17 +42,23 @@ thread_local! { pub struct ExistentialDeposit; impl Get for ExistentialDeposit { - fn get() -> u64 { EXISTENTIAL_DEPOSIT.with(|v| *v.borrow()) } + fn get() -> u64 { + EXISTENTIAL_DEPOSIT.with(|v| *v.borrow()) + } } pub struct TransferFee; impl Get for TransferFee { - fn get() -> u64 { TRANSFER_FEE.with(|v| *v.borrow()) } + fn get() -> u64 { + TRANSFER_FEE.with(|v| *v.borrow()) + } } pub struct CreationFee; impl Get for CreationFee { - fn get() -> u64 { CREATION_FEE.with(|v| *v.borrow()) } + fn get() -> u64 { + CREATION_FEE.with(|v| *v.borrow()) + } } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. @@ -160,7 +170,7 @@ impl ExtBuilder { (2, 20 * self.existential_deposit), (3, 30 * self.existential_deposit), (4, 40 * self.existential_deposit), - (12, 10 * self.existential_deposit) + (12, 10 * self.existential_deposit), ] } else { vec![] @@ -169,12 +179,14 @@ impl ExtBuilder { vec![ (1, 0, 10, 5 * self.existential_deposit), (2, 10, 20, 0), - (12, 10, 20, 5 * self.existential_deposit) + (12, 10, 20, 5 * self.existential_deposit), ] } else { vec![] }, - }.assimilate_storage(&mut t).unwrap(); + } + .assimilate_storage(&mut t) + .unwrap(); t.into() } } @@ -186,5 +198,8 @@ pub const CALL: &::Call = &(); /// create a transaction info struct from weight. Handy to avoid building the whole struct. pub fn info_from_weight(w: Weight) -> DispatchInfo { - DispatchInfo { weight: w, ..Default::default() } + DispatchInfo { + weight: w, + ..Default::default() + } } diff --git a/frame/balances/ring/src/tests.rs b/frame/balances/ring/src/tests.rs index d5cf35a21..0986b7fe7 100644 --- a/frame/balances/ring/src/tests.rs +++ b/frame/balances/ring/src/tests.rs @@ -17,15 +17,17 @@ //! Tests for the module. use super::*; -use mock::{Balances, ExtBuilder, Test, System, info_from_weight, CALL}; -use sp_runtime::traits::{SignedExtension, BadOrigin}; use frame_support::{ - assert_noop, assert_ok, assert_err, - traits::{LockableCurrency, LockIdentifier, WithdrawReason, WithdrawReasons, - Currency, ReservableCurrency, ExistenceRequirement::AllowDeath} + assert_err, assert_noop, assert_ok, + traits::{ + Currency, ExistenceRequirement::AllowDeath, LockIdentifier, LockableCurrency, ReservableCurrency, + WithdrawReason, WithdrawReasons, + }, }; -use pallet_transaction_payment::ChargeTransactionPayment; use frame_system::RawOrigin; +use mock::{info_from_weight, Balances, ExtBuilder, System, Test, CALL}; +use pallet_transaction_payment::ChargeTransactionPayment; +use sp_runtime::traits::{BadOrigin, SignedExtension}; const ID_1: LockIdentifier = *b"1 "; const ID_2: LockIdentifier = *b"2 "; @@ -33,80 +35,108 @@ const ID_3: LockIdentifier = *b"3 "; #[test] fn basic_locking_should_work() { - ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { - assert_eq!(Balances::free_balance(&1), 10); - Balances::set_lock(ID_1, &1, 9, u64::max_value(), WithdrawReasons::all()); - assert_noop!( - >::transfer(&1, &2, 5, AllowDeath), - Error::::LiquidityRestrictions - ); - }); + ExtBuilder::default() + .existential_deposit(1) + .monied(true) + .build() + .execute_with(|| { + assert_eq!(Balances::free_balance(&1), 10); + Balances::set_lock(ID_1, &1, 9, u64::max_value(), WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 5, AllowDeath), + Error::::LiquidityRestrictions + ); + }); } #[test] fn partial_locking_should_work() { - ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { - Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); - assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); - }); + ExtBuilder::default() + .existential_deposit(1) + .monied(true) + .build() + .execute_with(|| { + Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); + assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); + }); } #[test] fn lock_removal_should_work() { - ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { - Balances::set_lock(ID_1, &1, u64::max_value(), u64::max_value(), WithdrawReasons::all()); - Balances::remove_lock(ID_1, &1); - assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); - }); + ExtBuilder::default() + .existential_deposit(1) + .monied(true) + .build() + .execute_with(|| { + Balances::set_lock(ID_1, &1, u64::max_value(), u64::max_value(), WithdrawReasons::all()); + Balances::remove_lock(ID_1, &1); + assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); + }); } #[test] fn lock_replacement_should_work() { - ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { - Balances::set_lock(ID_1, &1, u64::max_value(), u64::max_value(), WithdrawReasons::all()); - Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); - assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); - }); + ExtBuilder::default() + .existential_deposit(1) + .monied(true) + .build() + .execute_with(|| { + Balances::set_lock(ID_1, &1, u64::max_value(), u64::max_value(), WithdrawReasons::all()); + Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); + assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); + }); } #[test] fn double_locking_should_work() { - ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { - Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); - Balances::set_lock(ID_2, &1, 5, u64::max_value(), WithdrawReasons::all()); - assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); - }); + ExtBuilder::default() + .existential_deposit(1) + .monied(true) + .build() + .execute_with(|| { + Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); + Balances::set_lock(ID_2, &1, 5, u64::max_value(), WithdrawReasons::all()); + assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); + }); } #[test] fn combination_locking_should_work() { - ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { - Balances::set_lock(ID_1, &1, u64::max_value(), 0, WithdrawReasons::none()); - Balances::set_lock(ID_2, &1, 0, u64::max_value(), WithdrawReasons::none()); - Balances::set_lock(ID_3, &1, 0, 0, WithdrawReasons::all()); - assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); - }); + ExtBuilder::default() + .existential_deposit(1) + .monied(true) + .build() + .execute_with(|| { + Balances::set_lock(ID_1, &1, u64::max_value(), 0, WithdrawReasons::none()); + Balances::set_lock(ID_2, &1, 0, u64::max_value(), WithdrawReasons::none()); + Balances::set_lock(ID_3, &1, 0, 0, WithdrawReasons::all()); + assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); + }); } #[test] fn lock_value_extension_should_work() { - ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { - Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); - assert_noop!( - >::transfer(&1, &2, 6, AllowDeath), - Error::::LiquidityRestrictions - ); - Balances::extend_lock(ID_1, &1, 2, u64::max_value(), WithdrawReasons::all()); - assert_noop!( - >::transfer(&1, &2, 6, AllowDeath), - Error::::LiquidityRestrictions - ); - Balances::extend_lock(ID_1, &1, 8, u64::max_value(), WithdrawReasons::all()); - assert_noop!( - >::transfer(&1, &2, 3, AllowDeath), - Error::::LiquidityRestrictions - ); - }); + ExtBuilder::default() + .existential_deposit(1) + .monied(true) + .build() + .execute_with(|| { + Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + Balances::extend_lock(ID_1, &1, 2, u64::max_value(), WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + Balances::extend_lock(ID_1, &1, 8, u64::max_value(), WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 3, AllowDeath), + Error::::LiquidityRestrictions + ); + }); } #[test] @@ -129,7 +159,8 @@ fn lock_reasons_should_work() { CALL, info_from_weight(1), 0, - ).is_ok()); + ) + .is_ok()); Balances::set_lock(ID_1, &1, 10, u64::max_value(), WithdrawReason::Reserve.into()); assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); @@ -143,9 +174,16 @@ fn lock_reasons_should_work() { CALL, info_from_weight(1), 0, - ).is_ok()); + ) + .is_ok()); - Balances::set_lock(ID_1, &1, 10, u64::max_value(), WithdrawReason::TransactionPayment.into()); + Balances::set_lock( + ID_1, + &1, + 10, + u64::max_value(), + WithdrawReason::TransactionPayment.into(), + ); assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); assert_ok!(>::reserve(&1, 1)); assert!( as SignedExtension>::pre_dispatch( @@ -154,65 +192,78 @@ fn lock_reasons_should_work() { CALL, info_from_weight(1), 0, - ).is_err()); + ) + .is_err()); }); } #[test] fn lock_block_number_should_work() { - ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { - Balances::set_lock(ID_1, &1, 10, 2, WithdrawReasons::all()); - assert_noop!( - >::transfer(&1, &2, 1, AllowDeath), - Error::::LiquidityRestrictions - ); + ExtBuilder::default() + .existential_deposit(1) + .monied(true) + .build() + .execute_with(|| { + Balances::set_lock(ID_1, &1, 10, 2, WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 1, AllowDeath), + Error::::LiquidityRestrictions + ); - System::set_block_number(2); - assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); - }); + System::set_block_number(2); + assert_ok!(>::transfer(&1, &2, 1, AllowDeath)); + }); } #[test] fn lock_block_number_extension_should_work() { - ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { - Balances::set_lock(ID_1, &1, 10, 2, WithdrawReasons::all()); - assert_noop!( - >::transfer(&1, &2, 6, AllowDeath), - Error::::LiquidityRestrictions - ); - Balances::extend_lock(ID_1, &1, 10, 1, WithdrawReasons::all()); - assert_noop!( - >::transfer(&1, &2, 6, AllowDeath), - Error::::LiquidityRestrictions - ); - System::set_block_number(2); - Balances::extend_lock(ID_1, &1, 10, 8, WithdrawReasons::all()); - assert_noop!( - >::transfer(&1, &2, 3, AllowDeath), - Error::::LiquidityRestrictions - ); - }); + ExtBuilder::default() + .existential_deposit(1) + .monied(true) + .build() + .execute_with(|| { + Balances::set_lock(ID_1, &1, 10, 2, WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + Balances::extend_lock(ID_1, &1, 10, 1, WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + System::set_block_number(2); + Balances::extend_lock(ID_1, &1, 10, 8, WithdrawReasons::all()); + assert_noop!( + >::transfer(&1, &2, 3, AllowDeath), + Error::::LiquidityRestrictions + ); + }); } #[test] fn lock_reasons_extension_should_work() { - ExtBuilder::default().existential_deposit(1).monied(true).build().execute_with(|| { - Balances::set_lock(ID_1, &1, 10, 10, WithdrawReason::Transfer.into()); - assert_noop!( - >::transfer(&1, &2, 6, AllowDeath), - Error::::LiquidityRestrictions - ); - Balances::extend_lock(ID_1, &1, 10, 10, WithdrawReasons::none()); - assert_noop!( - >::transfer(&1, &2, 6, AllowDeath), - Error::::LiquidityRestrictions - ); - Balances::extend_lock(ID_1, &1, 10, 10, WithdrawReason::Reserve.into()); - assert_noop!( - >::transfer(&1, &2, 6, AllowDeath), - Error::::LiquidityRestrictions - ); - }); + ExtBuilder::default() + .existential_deposit(1) + .monied(true) + .build() + .execute_with(|| { + Balances::set_lock(ID_1, &1, 10, 10, WithdrawReason::Transfer.into()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + Balances::extend_lock(ID_1, &1, 10, 10, WithdrawReasons::none()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + Balances::extend_lock(ID_1, &1, 10, 10, WithdrawReason::Reserve.into()); + assert_noop!( + >::transfer(&1, &2, 6, AllowDeath), + Error::::LiquidityRestrictions + ); + }); } #[test] @@ -224,7 +275,7 @@ fn default_indexing_on_new_accounts_should_not_work2() { .build() .execute_with(|| { assert_eq!(Balances::is_dead_account(&5), true); // account 5 should not exist - // ext_deposit is 10, value is 9, not satisfies for ext_deposit + // ext_deposit is 10, value is 9, not satisfies for ext_deposit assert_noop!( Balances::transfer(Some(1).into(), 5, 9), Error::::ExistentialDeposit, @@ -258,9 +309,9 @@ fn reserved_balance_should_prevent_reclaim_count() { assert_eq!(Balances::is_dead_account(&5), false); assert!(Balances::slash(&2, 256 * 19 + 2).1.is_zero()); // account 2 gets slashed - // "reserve" account reduced to 255 (below ED) so account deleted + // "reserve" account reduced to 255 (below ED) so account deleted assert_eq!(Balances::total_balance(&2), 0); - assert_eq!(System::account_nonce(&2), 0); // nonce zero + assert_eq!(System::account_nonce(&2), 0); // nonce zero assert_eq!(Balances::is_dead_account(&2), true); // account 4 tries to take index 1 again for account 6. @@ -270,7 +321,6 @@ fn reserved_balance_should_prevent_reclaim_count() { }); } - #[test] fn reward_should_work() { ExtBuilder::default().monied(true).build().execute_with(|| { @@ -345,10 +395,7 @@ fn balance_transfer_works() { fn force_transfer_works() { ExtBuilder::default().build().execute_with(|| { let _ = Balances::deposit_creating(&1, 111); - assert_noop!( - Balances::force_transfer(Some(2).into(), 1, 2, 69), - BadOrigin, - ); + assert_noop!(Balances::force_transfer(Some(2).into(), 1, 2, 69), BadOrigin,); assert_ok!(Balances::force_transfer(RawOrigin::Root.into(), 1, 2, 69)); assert_eq!(Balances::total_balance(&1), 42); assert_eq!(Balances::total_balance(&2), 69); @@ -529,7 +576,6 @@ fn account_create_on_free_too_low_with_other() { }) } - #[test] fn account_create_on_free_too_low() { ExtBuilder::default().existential_deposit(100).build().execute_with(|| { @@ -637,7 +683,6 @@ fn check_vesting_status() { assert_eq!(Balances::vesting_balance(&1), 0); // Account 1 is still fully vested, and not negative assert_eq!(Balances::vesting_balance(&2), 0); // Account 2 has fully vested by block 30 assert_eq!(Balances::vesting_balance(&12), 0); // Account 2 has fully vested by block 30 - }); } @@ -652,7 +697,7 @@ fn unvested_balance_should_not_transfer() { assert_eq!(System::block_number(), 1); 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) + // Account 1 has only 5 units vested at block 1 (plus 50 unvested) assert_eq!(Balances::vesting_balance(&1), 45); assert_noop!( Balances::transfer(Some(1).into(), 2, 56), @@ -672,7 +717,7 @@ fn vested_balance_should_transfer() { assert_eq!(System::block_number(), 1); 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) + // Account 1 has only 5 units vested at block 1 (plus 50 unvested) assert_eq!(Balances::vesting_balance(&1), 45); assert_ok!(Balances::transfer(Some(1).into(), 2, 55)); }); @@ -718,7 +763,7 @@ fn liquid_funds_should_transfer_with_delayed_vesting() { let user12_free_balance = Balances::free_balance(&12); assert_eq!(user12_free_balance, 2560); // Account 12 has free balance - // Account 12 has liquid funds + // Account 12 has liquid funds assert_eq!(Balances::vesting_balance(&12), user12_free_balance - 256 * 5); // Account 12 has delayed vesting @@ -760,22 +805,21 @@ fn transfer_keep_alive_works() { } #[test] -#[should_panic="the balance of any account should always be more than existential deposit."] +#[should_panic = "the balance of any account should always be more than existential deposit."] fn cannot_set_genesis_value_below_ed() { mock::EXISTENTIAL_DEPOSIT.with(|v| *v.borrow_mut() = 11); let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); let _ = GenesisConfig:: { balances: vec![(1, 10)], vesting: vec![], - }.assimilate_storage(&mut t).unwrap(); + } + .assimilate_storage(&mut t) + .unwrap(); } #[test] fn dust_moves_between_free_and_reserved() { - ExtBuilder::default() - .existential_deposit(100) - .build() - .execute_with(|| { + ExtBuilder::default().existential_deposit(100).build().execute_with(|| { // Set balance to free and reserved at the existential deposit assert_ok!(Balances::set_balance(RawOrigin::Root.into(), 1, 100, 100)); assert_ok!(Balances::set_balance(RawOrigin::Root.into(), 2, 100, 100)); diff --git a/primitives/phragmen/benches/phragmen.rs b/primitives/phragmen/benches/phragmen.rs index 33b80ed5a..780deaa8c 100644 --- a/primitives/phragmen/benches/phragmen.rs +++ b/primitives/phragmen/benches/phragmen.rs @@ -24,10 +24,10 @@ use test::Bencher; use rand::{self, Rng}; extern crate sp_phragmen as phragmen; -use phragmen::{Support, SupportMap, PhragmenStakedAssignment}; +use phragmen::{PhragmenStakedAssignment, Support, SupportMap}; -use std::collections::BTreeMap; use sp_runtime::traits::{Convert, SaturatedConversion}; +use std::collections::BTreeMap; const VALIDATORS: u64 = 1000; const NOMINATORS: u64 = 10_000; @@ -40,10 +40,14 @@ type AccountId = u64; pub struct TestCurrencyToVote; impl Convert for TestCurrencyToVote { - fn convert(x: Balance) -> u64 { x.saturated_into() } + fn convert(x: Balance) -> u64 { + x.saturated_into() + } } impl Convert for TestCurrencyToVote { - fn convert(x: u128) -> Balance { x.saturated_into() } + fn convert(x: u128) -> Balance { + x.saturated_into() + } } fn do_phragmen( @@ -64,28 +68,22 @@ fn do_phragmen( let mut candidates = Vec::with_capacity(num_vals as usize); let mut slashable_balance_of: BTreeMap = BTreeMap::new(); - (1 ..= num_vals) - .for_each(|acc| { - candidates.push(acc); - slashable_balance_of.insert(acc, STAKE + rr(10, 50)); - }); + (1..=num_vals).for_each(|acc| { + candidates.push(acc); + slashable_balance_of.insert(acc, STAKE + rr(10, 50)); + }); let mut voters = Vec::with_capacity(num_noms as usize); - (np ..= (np + num_noms)) - .for_each(|acc| { - let mut stashes_to_vote = candidates.clone(); - let votes = (0 .. votes_per) - .map(|_| { - stashes_to_vote.remove(rr(0, stashes_to_vote.len()) as usize) - }) - .collect::>(); - voters.push((acc, votes)); - slashable_balance_of.insert(acc, STAKE + rr(10, 50)); - }); - - let slashable_balance = |who: &AccountId| -> Balance { - *slashable_balance_of.get(who).unwrap() - }; + (np..=(np + num_noms)).for_each(|acc| { + let mut stashes_to_vote = candidates.clone(); + let votes = (0..votes_per) + .map(|_| stashes_to_vote.remove(rr(0, stashes_to_vote.len()) as usize)) + .collect::>(); + voters.push((acc, votes)); + slashable_balance_of.insert(acc, STAKE + rr(10, 50)); + }); + + let slashable_balance = |who: &AccountId| -> Balance { *slashable_balance_of.get(who).unwrap() }; b.iter(|| { let r = phragmen::elect::( @@ -95,15 +93,15 @@ fn do_phragmen( voters.clone(), slashable_balance, true, - ).unwrap(); + ) + .unwrap(); // Do the benchmarking with equalize. if eq_iters > 0 { let elected_stashes = r.winners; let assignments = r.assignments; - let to_votes = |b: Balance| - >::convert(b) as u128; + let to_votes = |b: Balance| >::convert(b) as u128; // Initialize the support of each candidate. let mut supports = >::new(); @@ -111,7 +109,11 @@ fn do_phragmen( .iter() .map(|(e, _)| (e, to_votes(slashable_balance(e)))) .for_each(|(e, s)| { - let item = Support { own: s, total: s, ..Default::default() }; + let item = Support { + own: s, + total: s, + ..Default::default() + }; supports.insert(e.clone(), item); }); @@ -127,13 +129,11 @@ fn do_phragmen( } } - let mut staked_assignments - : Vec<(AccountId, Vec>)> - = Vec::with_capacity(assignments.len()); + let mut staked_assignments: Vec<(AccountId, Vec>)> = + Vec::with_capacity(assignments.len()); for (n, assignment) in assignments.iter() { - let mut staked_assignment - : Vec> - = Vec::with_capacity(assignment.len()); + let mut staked_assignment: Vec> = + Vec::with_capacity(assignment.len()); for (c, per_thing) in assignment.iter() { let nominator_stake = to_votes(slashable_balance(n)); let other_stake = *per_thing * nominator_stake; diff --git a/primitives/phragmen/src/lib.rs b/primitives/phragmen/src/lib.rs index a06ef9497..d7fd5961d 100644 --- a/primitives/phragmen/src/lib.rs +++ b/primitives/phragmen/src/lib.rs @@ -33,10 +33,10 @@ #![cfg_attr(not(feature = "std"), no_std)] -use sp_std::{prelude::*, collections::btree_map::BTreeMap}; +use sp_runtime::traits::{Bounded, Convert, Member, Saturating, SimpleArithmetic, Zero}; use sp_runtime::RuntimeDebug; use sp_runtime::{helpers_128bit::multiply_by_rational, Perbill, Rational128}; -use sp_runtime::traits::{Zero, Convert, Member, SimpleArithmetic, Saturating, Bounded}; +use sp_std::{collections::btree_map::BTreeMap, prelude::*}; #[cfg(test)] mod mock; @@ -107,7 +107,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<(AccountId, Vec>)> + pub assignments: Vec<(AccountId, Vec>)>, } /// A structure to demonstrate the phragmen result from the perspective of the candidate, i.e. how @@ -153,7 +153,8 @@ pub fn elect( initial_candidates: Vec, initial_voters: Vec<(AccountId, Vec)>, stake_of: FS, -) -> Option> where +) -> Option> +where AccountId: Default + Ord + Member, Balance: Default + Copy + SimpleArithmetic, for<'r> FS: Fn(&'r AccountId) -> Balance, @@ -179,12 +180,17 @@ pub fn elect( .enumerate() .map(|(idx, who)| { c_idx_cache.insert(who.clone(), idx); - Candidate { who, ..Default::default() } + Candidate { + who, + ..Default::default() + } }) .collect::>>(); // early return if we don't have enough candidates - if candidates.len() < minimum_candidate_count { return None; } + if candidates.len() < minimum_candidate_count { + return None; + } // collect voters. use `c_idx_cache` for fast access and aggregate `approval_stake` of // candidates. @@ -194,20 +200,22 @@ pub fn elect( for v in votes { if let Some(idx) = c_idx_cache.get(&v) { // This candidate is valid + already cached. - candidates[*idx].approval_stake = candidates[*idx].approval_stake - .saturating_add(to_votes(voter_stake)); - edges.push(Edge { who: v.clone(), candidate_index: *idx, ..Default::default() }); + candidates[*idx].approval_stake = candidates[*idx].approval_stake.saturating_add(to_votes(voter_stake)); + edges.push(Edge { + who: v.clone(), + candidate_index: *idx, + ..Default::default() + }); } // else {} would be wrong votes. We don't really care about it. } Voter { who, - edges: edges, + edges, budget: to_votes(voter_stake), load: Rational128::zero(), } })); - // we have already checked that we have more candidates than minimum_candidate_count. // run phragmen. let to_elect = candidate_count.min(candidates.len()); @@ -234,11 +242,8 @@ pub fn elect( for e in &n.edges { let c = &mut candidates[e.candidate_index]; if !c.elected && !c.approval_stake.is_zero() { - let temp_n = multiply_by_rational( - n.load.n(), - n.budget, - c.approval_stake, - ).unwrap_or(Bounded::max_value()); + let temp_n = + multiply_by_rational(n.load.n(), n.budget, c.approval_stake).unwrap_or(Bounded::max_value()); let temp_d = n.load.d(); let temp = Rational128::from(temp_n, temp_d); c.score = c.score.lazy_saturating_add(temp); @@ -247,11 +252,7 @@ pub fn elect( } // loop 3: find the best - if let Some(winner) = candidates - .iter_mut() - .filter(|c| !c.elected) - .min_by_key(|c| c.score) - { + if let Some(winner) = candidates.iter_mut().filter(|c| !c.elected).min_by_key(|c| c.score) { // loop 3: update voter and edge load winner.elected = true; for n in &mut voters { @@ -265,7 +266,7 @@ pub fn elect( elected_candidates.push((winner.who.clone(), winner.approval_stake)); } else { - break + break; } } // end of all rounds @@ -274,8 +275,7 @@ pub fn elect( let mut assignment = (n.who.clone(), vec![]); for e in &mut n.edges { if elected_candidates.iter().position(|(ref c, _)| *c == e.who).is_some() { - let per_bill_parts = - { + let per_bill_parts = { if n.load == e.load { // Full support. No need to calculate. Perbill::accuracy().into() @@ -283,11 +283,7 @@ pub fn elect( if e.load.d() == n.load.d() { // return e.load / n.load. let desired_scale: u128 = Perbill::accuracy().into(); - multiply_by_rational( - desired_scale, - e.load.n(), - n.load.n(), - ).unwrap_or(Bounded::max_value()) + multiply_by_rational(desired_scale, e.load.n(), n.load.n()).unwrap_or(Bounded::max_value()) } else { // defensive only. Both edge and nominator loads are built from // scores, hence MUST have the same denominator. @@ -296,9 +292,7 @@ pub fn elect( } }; // safer to .min() inside as well to argue as u32 is safe. - let per_thing = Perbill::from_parts( - per_bill_parts.min(Perbill::accuracy().into()) as u32 - ); + let per_thing = Perbill::from_parts(per_bill_parts.min(Perbill::accuracy().into()) as u32); assignment.1.push((e.who.clone(), per_thing)); } } @@ -308,9 +302,7 @@ pub fn elect( // we add a minimal post-processing to equally assign all of the leftover stake ratios. let vote_count = assignment.1.len() as u32; let len = assignment.1.len(); - let sum = assignment.1.iter() - .map(|a| a.1.deconstruct()) - .sum::(); + let sum = assignment.1.iter().map(|a| a.1.deconstruct()).sum::(); let accuracy = Perbill::accuracy(); let diff = accuracy.checked_sub(sum).unwrap_or(0); let diff_per_vote = (diff / vote_count).min(accuracy); @@ -318,8 +310,7 @@ pub fn elect( if diff_per_vote > 0 { for i in 0..len { let current_ratio = assignment.1[i % len].1; - let next_ratio = current_ratio - .saturating_add(Perbill::from_parts(diff_per_vote)); + let next_ratio = current_ratio.saturating_add(Perbill::from_parts(diff_per_vote)); assignment.1[i % len].1 = next_ratio; } } @@ -347,7 +338,8 @@ pub fn build_support_map( elected_stashes: &Vec, assignments: &Vec<(AccountId, Vec>)>, stake_of: FS, -) -> SupportMap where +) -> SupportMap +where AccountId: Default + Ord + Member, Balance: Default + Copy + SimpleArithmetic, C: Convert + Convert, @@ -356,9 +348,9 @@ pub fn build_support_map( let to_votes = |b: Balance| >::convert(b) as ExtendedBalance; // Initialize the support of each candidate. let mut supports = >::new(); - elected_stashes - .iter() - .for_each(|e| { supports.insert(e.clone(), Default::default()); }); + elected_stashes.iter().for_each(|e| { + supports.insert(e.clone(), Default::default()); + }); // build support struct. for (n, assignment) in assignments.iter() { @@ -417,14 +409,10 @@ pub fn equalize( for (voter, assignment) in assignments.iter_mut() { let voter_budget = stake_of(&voter); - let diff = do_equalize::<_, _, C>( - voter, - voter_budget, - assignment, - supports, - tolerance, - ); - if diff > max_diff { max_diff = diff; } + let diff = do_equalize::<_, _, C>(voter, voter_budget, assignment, supports, tolerance); + if diff > max_diff { + max_diff = diff; + } } if max_diff < tolerance { @@ -440,18 +428,20 @@ fn do_equalize( budget_balance: Balance, elected_edges: &mut Vec>, support_map: &mut SupportMap, - tolerance: ExtendedBalance -) -> ExtendedBalance where + tolerance: ExtendedBalance, +) -> ExtendedBalance +where C: Convert + Convert, AccountId: Ord + Clone, { - let to_votes = |b: Balance| - >::convert(b) as ExtendedBalance; + let to_votes = |b: Balance| >::convert(b) as ExtendedBalance; let budget = to_votes(budget_balance); // Nothing to do. This voter had nothing useful. // Defensive only. Assignment list should always be populated. - if elected_edges.is_empty() { return 0; } + if elected_edges.is_empty() { + return 0; + } let stake_used = elected_edges .iter() @@ -497,9 +487,13 @@ fn do_equalize( e.1 = 0; }); - elected_edges.sort_unstable_by_key(|e| - if let Some(e) = support_map.get(&e.0) { e.total } else { Zero::zero() } - ); + elected_edges.sort_unstable_by_key(|e| { + if let Some(e) = support_map.get(&e.0) { + e.total + } else { + Zero::zero() + } + }); let mut cumulative_stake: ExtendedBalance = 0; let mut last_index = elected_edges.len() - 1; diff --git a/primitives/phragmen/src/mock.rs b/primitives/phragmen/src/mock.rs index 3074258bb..4d3ea0495 100644 --- a/primitives/phragmen/src/mock.rs +++ b/primitives/phragmen/src/mock.rs @@ -18,19 +18,24 @@ #![cfg(test)] -use crate::{elect, PhragmenResult, PhragmenAssignment}; +use crate::{elect, PhragmenAssignment, PhragmenResult}; use sp_runtime::{ - assert_eq_error_rate, Perbill, - traits::{Convert, Member, SaturatedConversion} + assert_eq_error_rate, + traits::{Convert, Member, SaturatedConversion}, + Perbill, }; use sp_std::collections::btree_map::BTreeMap; pub(crate) struct TestCurrencyToVote; impl Convert for TestCurrencyToVote { - fn convert(x: Balance) -> u64 { x.saturated_into() } + fn convert(x: Balance) -> u64 { + x.saturated_into() + } } impl Convert for TestCurrencyToVote { - fn convert(x: u128) -> Balance { x } + fn convert(x: u128) -> Balance { + x + } } #[derive(Default, Debug)] @@ -72,7 +77,7 @@ pub(crate) type AccountId = u64; #[derive(Debug, Clone)] pub(crate) struct _PhragmenResult { pub winners: Vec<(A, Balance)>, - pub assignments: Vec<(A, Vec<_PhragmenAssignment>)> + pub assignments: Vec<(A, Vec<_PhragmenAssignment>)>, } pub(crate) fn auto_generate_self_voters(candidates: &[A]) -> Vec<(A, Vec)> { @@ -85,7 +90,8 @@ pub(crate) fn elect_float( initial_candidates: Vec, initial_voters: Vec<(A, Vec)>, stake_of: FS, -) -> Option<_PhragmenResult> where +) -> Option<_PhragmenResult> +where A: Default + Ord + Member + Copy, for<'r> FS: Fn(&'r A) -> Balance, { @@ -100,7 +106,10 @@ pub(crate) fn elect_float( .enumerate() .map(|(idx, who)| { c_idx_cache.insert(who.clone(), idx); - _Candidate { who, ..Default::default() } + _Candidate { + who, + ..Default::default() + } }) .collect::>>(); @@ -114,14 +123,16 @@ pub(crate) fn elect_float( for v in votes { if let Some(idx) = c_idx_cache.get(&v) { candidates[*idx].approval_stake = candidates[*idx].approval_stake + voter_stake; - edges.push( - _Edge { who: v.clone(), candidate_index: *idx, ..Default::default() } - ); + edges.push(_Edge { + who: v.clone(), + candidate_index: *idx, + ..Default::default() + }); } } _Voter { who, - edges: edges, + edges, budget: voter_stake, load: 0f64, } @@ -163,7 +174,7 @@ pub(crate) fn elect_float( elected_candidates.push((winner.who.clone(), winner.approval_stake as Balance)); } else { - break + break; } } @@ -202,14 +213,10 @@ pub(crate) fn equalize_float( let mut max_diff = 0.0; for (voter, assignment) in assignments.iter_mut() { let voter_budget = stake_of(&voter); - let diff = do_equalize_float( - voter, - voter_budget, - assignment, - supports, - tolerance, - ); - if diff > max_diff { max_diff = diff; } + let diff = do_equalize_float(voter, voter_budget, assignment, supports, tolerance); + if diff > max_diff { + max_diff = diff; + } } if max_diff < tolerance { @@ -223,16 +230,17 @@ pub(crate) fn do_equalize_float( budget_balance: Balance, elected_edges: &mut Vec<_PhragmenAssignment>, support_map: &mut _SupportMap, - tolerance: f64 -) -> f64 where + tolerance: f64, +) -> f64 +where A: Ord + Clone, { let budget = budget_balance as f64; - if elected_edges.is_empty() { return 0.0; } + if elected_edges.is_empty() { + return 0.0; + } - let stake_used = elected_edges - .iter() - .fold(0.0, |s, e| s + e.1); + let stake_used = elected_edges.iter().fold(0.0, |s, e| s + e.1); let backed_stakes_iter = elected_edges .iter() @@ -274,11 +282,12 @@ pub(crate) fn do_equalize_float( e.1 = 0.0; }); - elected_edges.sort_unstable_by(|x, y| - support_map.get(&x.0) + elected_edges.sort_unstable_by(|x, y| { + support_map + .get(&x.0) .and_then(|x| support_map.get(&y.0).and_then(|y| x.total.partial_cmp(&y.total))) .unwrap_or(sp_std::cmp::Ordering::Equal) - ); + }); let mut cumulative_stake = 0.0; let mut last_index = elected_edges.len() - 1; @@ -289,7 +298,7 @@ pub(crate) fn do_equalize_float( let stake_sub = stake_mul - cumulative_stake; if stake_sub > budget { last_index = idx.checked_sub(1).unwrap_or(0); - return + return; } cumulative_stake = cumulative_stake + stake; } @@ -309,17 +318,15 @@ pub(crate) fn do_equalize_float( difference } - -pub(crate) fn create_stake_of(stakes: &[(AccountId, Balance)]) - -> Box Balance> -{ +pub(crate) fn create_stake_of(stakes: &[(AccountId, Balance)]) -> Box Balance> { let mut storage = BTreeMap::::new(); - stakes.iter().for_each(|s| { storage.insert(s.0, s.1); }); + stakes.iter().for_each(|s| { + storage.insert(s.0, s.1); + }); let stake_of = move |who: &AccountId| -> Balance { storage.get(who).unwrap().to_owned() }; Box::new(stake_of) } - pub fn check_assignments(assignments: Vec<(AccountId, Vec>)>) { for (_, a) in assignments { let sum: u32 = a.iter().map(|(_, p)| p.deconstruct()).sum(); @@ -335,29 +342,19 @@ pub(crate) fn run_and_compare( min_to_elect: usize, ) { // run fixed point code. - let PhragmenResult { winners, assignments } = elect::<_, _, _, TestCurrencyToVote>( - to_elect, - min_to_elect, - candidates.clone(), - voters.clone(), - &stake_of, - ).unwrap(); + let PhragmenResult { winners, assignments } = + elect::<_, _, _, TestCurrencyToVote>(to_elect, min_to_elect, candidates.clone(), voters.clone(), &stake_of) + .unwrap(); // run float poc code. - let truth_value = elect_float( - to_elect, - min_to_elect, - candidates, - voters, - &stake_of, - ).unwrap(); + let truth_value = elect_float(to_elect, min_to_elect, candidates, voters, &stake_of).unwrap(); assert_eq!(winners, truth_value.winners); for (nominator, assigned) in assignments.clone() { if let Some(float_assignments) = truth_value.assignments.iter().find(|x| x.0 == nominator) { for (candidate, per_thingy) in assigned { - if let Some(float_assignment) = float_assignments.1.iter().find(|x| x.0 == candidate ) { + if let Some(float_assignment) = float_assignments.1.iter().find(|x| x.0 == candidate) { assert_eq_error_rate!( Perbill::from_fraction(float_assignment.1).deconstruct(), per_thingy.deconstruct(), @@ -375,18 +372,21 @@ pub(crate) fn run_and_compare( check_assignments(assignments); } -pub(crate) fn build_support_map( - result: &mut _PhragmenResult, - stake_of: FS, -) -> _SupportMap - where for<'r> FS: Fn(&'r AccountId) -> Balance +pub(crate) fn build_support_map(result: &mut _PhragmenResult, stake_of: FS) -> _SupportMap +where + for<'r> FS: Fn(&'r AccountId) -> Balance, { let mut supports = <_SupportMap>::new(); - result.winners + result + .winners .iter() .map(|(e, _)| (e, stake_of(e) as f64)) .for_each(|(e, s)| { - let item = _Support { own: s, total: s, ..Default::default() }; + let item = _Support { + own: s, + total: s, + ..Default::default() + }; supports.insert(e.clone(), item); }); diff --git a/primitives/phragmen/src/tests.rs b/primitives/phragmen/src/tests.rs index 09491b3b9..332761298 100644 --- a/primitives/phragmen/src/tests.rs +++ b/primitives/phragmen/src/tests.rs @@ -20,17 +20,13 @@ use crate::mock::*; use crate::{elect, PhragmenResult}; -use substrate_test_utils::assert_eq_uvec; use sp_runtime::Perbill; +use substrate_test_utils::assert_eq_uvec; #[test] fn float_phragmen_poc_works() { let candidates = vec![1, 2, 3]; - let voters = vec![ - (10, vec![1, 2]), - (20, vec![1, 3]), - (30, vec![2, 3]), - ]; + let voters = vec![(10, vec![1, 2]), (20, vec![1, 3]), (30, vec![2, 3])]; let stake_of = create_stake_of(&[(10, 10), (20, 20), (30, 30), (1, 0), (2, 0), (3, 0)]); let mut phragmen_result = elect_float(2, 2, candidates, voters, &stake_of).unwrap(); let winners = phragmen_result.clone().winners; @@ -50,33 +46,45 @@ fn float_phragmen_poc_works() { assert_eq!( support_map.get(&2).unwrap(), - &_Support { own: 0.0, total: 25.0, others: vec![(10u64, 10.0), (30u64, 15.0)]} + &_Support { + own: 0.0, + total: 25.0, + others: vec![(10u64, 10.0), (30u64, 15.0)] + } ); assert_eq!( support_map.get(&3).unwrap(), - &_Support { own: 0.0, total: 35.0, others: vec![(20u64, 20.0), (30u64, 15.0)]} + &_Support { + own: 0.0, + total: 35.0, + others: vec![(20u64, 20.0), (30u64, 15.0)] + } ); equalize_float(phragmen_result.assignments, &mut support_map, 0.0, 2, stake_of); assert_eq!( support_map.get(&2).unwrap(), - &_Support { own: 0.0, total: 30.0, others: vec![(10u64, 10.0), (30u64, 20.0)]} + &_Support { + own: 0.0, + total: 30.0, + others: vec![(10u64, 10.0), (30u64, 20.0)] + } ); assert_eq!( support_map.get(&3).unwrap(), - &_Support { own: 0.0, total: 30.0, others: vec![(20u64, 20.0), (30u64, 10.0)]} + &_Support { + own: 0.0, + total: 30.0, + others: vec![(20u64, 20.0), (30u64, 10.0)] + } ); } #[test] fn phragmen_poc_works() { let candidates = vec![1, 2, 3]; - let voters = vec![ - (10, vec![1, 2]), - (20, vec![1, 3]), - (30, vec![2, 3]), - ]; + let voters = vec![(10, vec![1, 2]), (20, vec![1, 3]), (30, vec![2, 3])]; let PhragmenResult { winners, assignments } = elect::<_, _, _, TestCurrencyToVote>( 2, @@ -84,7 +92,8 @@ fn phragmen_poc_works() { candidates, voters, create_stake_of(&[(10, 10), (20, 20), (30, 30)]), - ).unwrap(); + ) + .unwrap(); assert_eq_uvec!(winners, vec![(2, 40), (3, 50)]); assert_eq_uvec!( @@ -92,7 +101,10 @@ fn phragmen_poc_works() { vec![ (10, vec![(2, Perbill::from_percent(100))]), (20, vec![(3, Perbill::from_percent(100))]), - (30, vec![(2, Perbill::from_percent(100/2)), (3, Perbill::from_percent(100/2))]), + ( + 30, + vec![(2, Perbill::from_percent(100 / 2)), (3, Perbill::from_percent(100 / 2))] + ), ] ); } @@ -100,18 +112,8 @@ fn phragmen_poc_works() { #[test] fn phragmen_poc_2_works() { let candidates = vec![10, 20, 30]; - let voters = vec![ - (2, vec![10, 20, 30]), - (4, vec![10, 20, 40]), - ]; - let stake_of = create_stake_of(&[ - (10, 1000), - (20, 1000), - (30, 1000), - (40, 1000), - (2, 500), - (4, 500), - ]); + let voters = vec![(2, vec![10, 20, 30]), (4, vec![10, 20, 40])]; + let stake_of = create_stake_of(&[(10, 1000), (20, 1000), (30, 1000), (40, 1000), (2, 500), (4, 500)]); run_and_compare(candidates, voters, stake_of, 2, 2); } @@ -119,17 +121,8 @@ fn phragmen_poc_2_works() { #[test] fn phragmen_poc_3_works() { let candidates = vec![10, 20, 30]; - let voters = vec![ - (2, vec![10, 20, 30]), - (4, vec![10, 20, 40]), - ]; - let stake_of = create_stake_of(&[ - (10, 1000), - (20, 1000), - (30, 1000), - (2, 50), - (4, 1000), - ]); + let voters = vec![(2, vec![10, 20, 30]), (4, vec![10, 20, 40])]; + let stake_of = create_stake_of(&[(10, 1000), (20, 1000), (30, 1000), (2, 50), (4, 1000)]); run_and_compare(candidates, voters, stake_of, 2, 2); } @@ -153,9 +146,13 @@ fn phragmen_accuracy_on_large_scale_only_validators() { candidates.clone(), auto_generate_self_voters(&candidates), stake_of, - ).unwrap(); + ) + .unwrap(); - assert_eq_uvec!(winners, vec![(1, 18446744073709551614u128), (5, 18446744073709551613u128)]); + assert_eq_uvec!( + winners, + vec![(1, 18446744073709551614u128), (5, 18446744073709551613u128)] + ); assert_eq!(assignments.len(), 2); check_assignments(assignments); } @@ -163,30 +160,25 @@ fn phragmen_accuracy_on_large_scale_only_validators() { #[test] fn phragmen_accuracy_on_large_scale_validators_and_nominators() { let candidates = vec![1, 2, 3, 4, 5]; - let mut voters = vec![ - (13, vec![1, 3, 5]), - (14, vec![2, 4]), - ]; + let mut voters = vec![(13, vec![1, 3, 5]), (14, vec![2, 4])]; voters.extend(auto_generate_self_voters(&candidates)); let stake_of = create_stake_of(&[ - (1, (u64::max_value() - 1).into()), - (2, (u64::max_value() - 4).into()), - (3, (u64::max_value() - 5).into()), - (4, (u64::max_value() - 3).into()), - (5, (u64::max_value() - 2).into()), + (1, (u64::max_value() - 1).into()), + (2, (u64::max_value() - 4).into()), + (3, (u64::max_value() - 5).into()), + (4, (u64::max_value() - 3).into()), + (5, (u64::max_value() - 2).into()), (13, (u64::max_value() - 10).into()), (14, u64::max_value().into()), ]); - let PhragmenResult { winners, assignments } = elect::<_, _, _, TestCurrencyToVote>( - 2, - 2, - candidates, - voters, - stake_of, - ).unwrap(); + let PhragmenResult { winners, assignments } = + elect::<_, _, _, TestCurrencyToVote>(2, 2, candidates, voters, stake_of).unwrap(); - assert_eq_uvec!(winners, vec![(2, 36893488147419103226u128), (1, 36893488147419103219u128)]); + assert_eq_uvec!( + winners, + vec![(2, 36893488147419103226u128), (1, 36893488147419103219u128)] + ); assert_eq!( assignments, vec![ @@ -203,20 +195,12 @@ fn phragmen_accuracy_on_large_scale_validators_and_nominators() { fn phragmen_accuracy_on_small_scale_self_vote() { let candidates = vec![40, 10, 20, 30]; let voters = auto_generate_self_voters(&candidates); - let stake_of = create_stake_of(&[ - (40, 0), - (10, 1), - (20, 2), - (30, 1), - ]); + let stake_of = create_stake_of(&[(40, 0), (10, 1), (20, 2), (30, 1)]); - let PhragmenResult { winners, assignments: _ } = elect::<_, _, _, TestCurrencyToVote>( - 3, - 3, - candidates, - voters, - stake_of, - ).unwrap(); + let PhragmenResult { + winners, + assignments: _, + } = elect::<_, _, _, TestCurrencyToVote>(3, 3, candidates, voters, stake_of).unwrap(); assert_eq_uvec!(winners, vec![(20, 2), (10, 1), (30, 1)]); } @@ -224,12 +208,7 @@ fn phragmen_accuracy_on_small_scale_self_vote() { #[test] fn phragmen_accuracy_on_small_scale_no_self_vote() { let candidates = vec![40, 10, 20, 30]; - let voters = vec![ - (1, vec![10]), - (2, vec![20]), - (3, vec![30]), - (4, vec![40]), - ]; + let voters = vec![(1, vec![10]), (2, vec![20]), (3, vec![30]), (4, vec![40])]; let stake_of = create_stake_of(&[ (40, 1000), // don't care (10, 1000), // don't care @@ -241,29 +220,24 @@ fn phragmen_accuracy_on_small_scale_no_self_vote() { (3, 1), ]); - let PhragmenResult { winners, assignments: _ } = elect::<_, _, _, TestCurrencyToVote>( - 3, - 3, - candidates, - voters, - stake_of, - ).unwrap(); + let PhragmenResult { + winners, + assignments: _, + } = elect::<_, _, _, TestCurrencyToVote>(3, 3, candidates, voters, stake_of).unwrap(); assert_eq_uvec!(winners, vec![(20, 2), (10, 1), (30, 1)]); } #[test] fn phragmen_large_scale_test() { - let candidates = vec![2, 4, 6, 8, 10, 12, 14, 16 ,18, 20, 22, 24]; - let mut voters = vec![ - (50, vec![2, 4, 6, 8, 10, 12, 14, 16 ,18, 20, 22, 24]), - ]; + let candidates = vec![2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]; + let mut voters = vec![(50, vec![2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24])]; voters.extend(auto_generate_self_voters(&candidates)); let stake_of = create_stake_of(&[ - (2, 1), - (4, 100), - (6, 1000000), - (8, 100000000001000), + (2, 1), + (4, 100), + (6, 1000000), + (8, 100000000001000), (10, 100000000002000), (12, 100000000003000), (14, 400000000000000), @@ -275,15 +249,13 @@ fn phragmen_large_scale_test() { (50, 990000000000000000), ]); - let PhragmenResult { winners, assignments } = elect::<_, _, _, TestCurrencyToVote>( - 2, - 2, - candidates, - voters, - stake_of, - ).unwrap(); + let PhragmenResult { winners, assignments } = + elect::<_, _, _, TestCurrencyToVote>(2, 2, candidates, voters, stake_of).unwrap(); - assert_eq_uvec!(winners, vec![(24, 1490000000000200000u128), (22, 1490000000000100000u128)]); + assert_eq_uvec!( + winners, + vec![(24, 1490000000000200000u128), (22, 1490000000000100000u128)] + ); check_assignments(assignments); } @@ -296,25 +268,22 @@ fn phragmen_large_scale_test_2() { let mut voters = vec![(50, vec![2, 4])]; voters.extend(auto_generate_self_voters(&candidates)); - let stake_of = create_stake_of(&[ - (2, c_budget.into()), - (4, c_budget.into()), - (50, nom_budget.into()), - ]); + let stake_of = create_stake_of(&[(2, c_budget.into()), (4, c_budget.into()), (50, nom_budget.into())]); - let PhragmenResult { winners, assignments } = elect::<_, _, _, TestCurrencyToVote>( - 2, - 2, - candidates, - voters, - stake_of, - ).unwrap(); + let PhragmenResult { winners, assignments } = + elect::<_, _, _, TestCurrencyToVote>(2, 2, candidates, voters, stake_of).unwrap(); - assert_eq_uvec!(winners, vec![(2, 1000000000004000000u128), (4, 1000000000004000000u128)]); + assert_eq_uvec!( + winners, + vec![(2, 1000000000004000000u128), (4, 1000000000004000000u128)] + ); assert_eq!( assignments, vec![ - (50, vec![(2, Perbill::from_parts(500000001)), (4, Perbill::from_parts(499999999))]), + ( + 50, + vec![(2, Perbill::from_parts(500000001)), (4, Perbill::from_parts(499999999))] + ), (2, vec![(2, Perbill::one())]), (4, vec![(4, Perbill::one())]), ], @@ -342,7 +311,6 @@ fn phragmen_linear_equalize() { (51, 1000), (61, 1000), (71, 1000), - (2, 2000), (4, 1000), (6, 1000), @@ -358,50 +326,25 @@ fn phragmen_linear_equalize() { #[test] fn elect_has_no_entry_barrier() { let candidates = vec![10, 20, 30]; - let voters = vec![ - (1, vec![10]), - (2, vec![20]), - ]; - let stake_of = create_stake_of(&[ - (1, 10), - (2, 10), - ]); + let voters = vec![(1, vec![10]), (2, vec![20])]; + let stake_of = create_stake_of(&[(1, 10), (2, 10)]); - let PhragmenResult { winners, assignments: _ } = elect::<_, _, _, TestCurrencyToVote>( - 3, - 3, - candidates, - voters, - stake_of, - ).unwrap(); + let PhragmenResult { + winners, + assignments: _, + } = elect::<_, _, _, TestCurrencyToVote>(3, 3, candidates, voters, stake_of).unwrap(); // 30 is elected with stake 0. The caller is responsible for stripping this. - assert_eq_uvec!(winners, vec![ - (10, 10), - (20, 10), - (30, 0), - ]); + assert_eq_uvec!(winners, vec![(10, 10), (20, 10), (30, 0),]); } #[test] fn minimum_to_elect_is_respected() { let candidates = vec![10, 20, 30]; - let voters = vec![ - (1, vec![10]), - (2, vec![20]), - ]; - let stake_of = create_stake_of(&[ - (1, 10), - (2, 10), - ]); + let voters = vec![(1, vec![10]), (2, vec![20])]; + let stake_of = create_stake_of(&[(1, 10), (2, 10)]); - let maybe_result = elect::<_, _, _, TestCurrencyToVote>( - 10, - 10, - candidates, - voters, - stake_of, - ); + let maybe_result = elect::<_, _, _, TestCurrencyToVote>(10, 10, candidates, voters, stake_of); assert!(maybe_result.is_none()); } From 08db5abd782a58fe47abf44b68a77a9c03790b99 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Mon, 10 Feb 2020 19:19:47 +0800 Subject: [PATCH 14/17] fix: ci --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8cbe38a39..e28831067 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ before_install: - df -h script: - - ./ci/script.sh + - .maintain/ci/script.sh after_script: # Check how much free disk space left after the build From 53bb87899bf33a84075a73e3c488d5183bc86fe2 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Mon, 10 Feb 2020 19:24:09 +0800 Subject: [PATCH 15/17] update: ci script --- .maintain/ci/script.sh | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.maintain/ci/script.sh b/.maintain/ci/script.sh index edd0d7cf5..aaad2c363 100755 --- a/.maintain/ci/script.sh +++ b/.maintain/ci/script.sh @@ -2,33 +2,29 @@ set -eux -# Install rustup and the specified rust toolchain. curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=$RUST_TOOLCHAIN -y -# Load cargo environment. Specifically, put cargo into PATH. source ~/.cargo/env -# Install wasm toolchain -rustup target add wasm32-unknown-unknown - rustup --version cargo --version rustc --version case $TARGET in + # Format check "rustfmt") - sudo apt-get -y update - sudo apt-get install -y cmake pkg-config libssl-dev + rustup component add rustfmt cargo fmt --all ;; + # Unit test "native") - # Unit test cargo test --release --all --locked "$@" ;; + # Build test "wasm") - # Build test + rustup target add wasm32-unknown-unknown cargo build --locked "$@" ;; esac From 7d54d75691c809b305a9056ced0df23ab8722876 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Mon, 10 Feb 2020 19:34:43 +0800 Subject: [PATCH 16/17] fix: use rustfmt-preview --- .maintain/ci/script.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.maintain/ci/script.sh b/.maintain/ci/script.sh index aaad2c363..effbf843f 100755 --- a/.maintain/ci/script.sh +++ b/.maintain/ci/script.sh @@ -13,7 +13,7 @@ rustc --version case $TARGET in # Format check "rustfmt") - rustup component add rustfmt + rustup component add rustfmt-preview cargo fmt --all ;; From d078862f43e81383db584213281ca6bf746e1f26 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Mon, 10 Feb 2020 19:48:11 +0800 Subject: [PATCH 17/17] fix: ci --- .maintain/ci/script.sh | 1 - .travis.yml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.maintain/ci/script.sh b/.maintain/ci/script.sh index effbf843f..cb7563645 100755 --- a/.maintain/ci/script.sh +++ b/.maintain/ci/script.sh @@ -13,7 +13,6 @@ rustc --version case $TARGET in # Format check "rustfmt") - rustup component add rustfmt-preview cargo fmt --all ;; diff --git a/.travis.yml b/.travis.yml index e28831067..a4383709e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,7 @@ env: global: - RUST_BACKTRACE=1 matrix: - - RUST_TOOLCHAIN=nightly TARGET=rustfmt + - RUST_TOOLCHAIN=stable TARGET=rustfmt - RUST_TOOLCHAIN=nightly TARGET=wasm - RUST_TOOLCHAIN=nightly TARGET=native