[sui 9/x] - hot potato fix for price updates (#805)

* state getters and setters, change Move.toml dependency to sui/integration_v2

* finish state.move

* add new line to pyth

* use deployer cap pattern for state module

* sui pyth

* update price feeds, dynamic object fields, Sui object PriceInfoObject

* register price info object with pyth state after creation

* sui governance

* some newlines

* error codes

* update and comment

* unit tests for pyth.move, add UpgradeCap to Pyth State (will be used for contract upgrades)

* updates

* test_get_update_fee test passes

* fix test_get_update_fee and test_update_price_feeds_corrupt_vaa

* test_update_price_feeds_invalid_data_source

* test_create_and_update_price_feeds

* test_create_and_update_price_feeds_success and test_create_and_update_price_feeds_price_info_object_not_found_failure

* test_update_cache

* update

* test_update_cache_old_update

* update_price_feeds_if_fresh

* comment

* contract upgrades start

* contract upgradeability

* update clock stuff

* edits

* use clone of sui/integration_v2 for stability

* make contract_upgrade::execute a public(friend) fun, remove clock arg

* E_INCORRECT_IDENTIFIER_LENGTH

* comment and edit

* add a single comment

* upgradeability fixes, other fixes

* update, migrate, state, pyth, setup, version_control

* upgradeability, governance, LatestOnly

* - state init_version, init_package_info
- governance and contract ugpradeability stuff

* make several functions public(friend), and friend the right modules in data_source.move

* add comment

* fix bug in from_u8, so that value <= TRANSFER_FEE

* rename error message to E_MUST_USE_CONTRACT_UPGRADE_MODULE_TO_DO_UPGRADES

* set_last_executed_governance_sequence

* set pyth governance_module to 0000000000000000000000000000000000000000000000000000000000000001

* update README

* Update README.md

* Update README.md

* delete comments

* Update README.md

* Update README.md

* change Wormhole dependency to branch sui/mainnet, which has the latest update that includes VAA sequence number in DecreeReceipt

do proper checking of sequence number when executing governance instructions, allow set_governance_data_source to update the sequence number to some initial_sequence.

* state::set_last_executed_governance_sequence

* rename error

* add newline to setup.move

* delete space

* Update README.md

* mark test module as well as some imports #[test_only] so sui move build works

* scripts for Pyth contract testing and deployment
remove required_version.move, as it is no longer being used for access control
make init_and_share_state a public(friend) function

* add build to Makefile

* init pyth ts script

* sui deploy and testing scripts

* contract fixes, set_fee_recipient governance action, emit price update event only if fresh price update

* init_pyth.ts, registry.ts, create_price_feed.ts

* create price feeds

* deploy script and Move.toml

* some contract updates to compile with WH branch sui/mainnet
deployment script updates

* update README

* update readme

* rename TS scripts, edit readme

* add rev for wormhole dependency, edit README

* edit create_price_feed script

* - add price_info::get function for getting PriceInfoObject ID from PriceIdentifier
- add test for price_info::get

* contract updates

* script edits

* contract upgrade in version_control.move and fix pyth_create_price_feed.ts

* add get_price_info_object_id function to pyth::state

* tests and build pass

* update scripts

* Pyth mainnet deploy, create all price feeds script

* clean up script imports

* add mainnet addresses to readme

* correct Pyth Mainnet addresses

* create price feeds on mainnet

* use git dependency in Move.toml

* edits

* delete required contracts

* get price info object ids

* get price info object IDs

* add json file containing price feed id to price info object id

* comment

* clean up scripts folder and imports

* more script clean up (comments)

* script updates

* hot potato stuff

* create_price_infos_hot_potato and update_single_price_feed

* don't create hot potato in batch price attestation

* latest only checks in Pyth.move

* delete tab

* edit

* run pre-commit hooks

* update price feeds script

* update_single_price_feed_logic, give hot potato contents type T copy and drop ability

* delete custom price attestation test

* get update multiple price feeds POC to work

* formatting via pre-commit

* update Move.toml so can run "sui move test", delete some error codes that were unused

* update update_price_feeds demo to auto-retrieve price info object ids

* update readme

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* don't print map, get prices after update

* script comments

* Update update_price_feeds.ts

* Update update_price_feeds.ts

* Update README.md

* script for token transfers

* testnet "mainnet simulation" deployment (with 19 mainnet guardians), and testnet deployment (with single testnet guardian)

* mainnet deploy

* update Move.toml

* Update README.md

* Update README.md

* edit readme

* Update README.md

* Update README.md

* Update README.md

* add PRICE_INFO_OBJECT map ID to README

* common questions

* edit comment

* update readme

* fix link

* add comments for update_single_price_feed

* edits

* Update README.md

* Update README.md

* Update README.md

* pre-commit run --all-files
This commit is contained in:
optke3 2023-06-20 00:04:01 -04:00 committed by GitHub
parent f34c9df224
commit f3edf9c971
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 3113 additions and 10637 deletions

246
package-lock.json generated
View File

@ -25,6 +25,7 @@
"wormhole_attester/sdk/js"
],
"dependencies": {
"pre-commit": "^1.2.2",
"prettier": "2.7.1"
},
"devDependencies": {
@ -41089,6 +41090,14 @@
"which": "bin/which"
}
},
"node_modules/os-shim": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz",
"integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==",
"engines": {
"node": ">= 0.4.0"
}
},
"node_modules/os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@ -43398,6 +43407,71 @@
"safe-buffer": "~5.2.0"
}
},
"node_modules/pre-commit": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz",
"integrity": "sha512-qokTiqxD6GjODy5ETAIgzsRgnBWWQHQH2ghy86PU7mIn/wuWeTwF3otyNQZxWBwVn8XNr8Tdzj/QfUXpH+gRZA==",
"hasInstallScript": true,
"dependencies": {
"cross-spawn": "^5.0.1",
"spawn-sync": "^1.0.15",
"which": "1.2.x"
}
},
"node_modules/pre-commit/node_modules/cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
"integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
"dependencies": {
"lru-cache": "^4.0.1",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
},
"node_modules/pre-commit/node_modules/lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"dependencies": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"node_modules/pre-commit/node_modules/shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
"integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
"dependencies": {
"shebang-regex": "^1.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/pre-commit/node_modules/shebang-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
"integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/pre-commit/node_modules/which": {
"version": "1.2.14",
"resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
"integrity": "sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw==",
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"which": "bin/which"
}
},
"node_modules/pre-commit/node_modules/yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
},
"node_modules/preact": {
"version": "10.4.1",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.4.1.tgz",
@ -43737,6 +43811,11 @@
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
"integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw=="
},
"node_modules/pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="
},
"node_modules/psl": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
@ -49485,6 +49564,57 @@
"dev": true,
"optional": true
},
"node_modules/spawn-sync": {
"version": "1.0.15",
"resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz",
"integrity": "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==",
"hasInstallScript": true,
"dependencies": {
"concat-stream": "^1.4.7",
"os-shim": "^0.1.2"
}
},
"node_modules/spawn-sync/node_modules/concat-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"engines": [
"node >= 0.8"
],
"dependencies": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
}
},
"node_modules/spawn-sync/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"node_modules/spawn-sync/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"node_modules/spawn-sync/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/spdx-correct": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
@ -94477,6 +94607,11 @@
}
}
},
"os-shim": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz",
"integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A=="
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@ -96087,6 +96222,63 @@
"uuid": "8.3.2"
}
},
"pre-commit": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz",
"integrity": "sha512-qokTiqxD6GjODy5ETAIgzsRgnBWWQHQH2ghy86PU7mIn/wuWeTwF3otyNQZxWBwVn8XNr8Tdzj/QfUXpH+gRZA==",
"requires": {
"cross-spawn": "^5.0.1",
"spawn-sync": "^1.0.15",
"which": "1.2.x"
},
"dependencies": {
"cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
"integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
"requires": {
"lru-cache": "^4.0.1",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
},
"lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
"integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
"requires": {
"shebang-regex": "^1.0.0"
}
},
"shebang-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
"integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ=="
},
"which": {
"version": "1.2.14",
"resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
"integrity": "sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw==",
"requires": {
"isexe": "^2.0.0"
}
},
"yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
}
}
},
"preact": {
"version": "10.4.1",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.4.1.tgz",
@ -96394,6 +96586,11 @@
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
"integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw=="
},
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="
},
"psl": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
@ -101780,6 +101977,55 @@
"dev": true,
"optional": true
},
"spawn-sync": {
"version": "1.0.15",
"resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz",
"integrity": "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==",
"requires": {
"concat-stream": "^1.4.7",
"os-shim": "^0.1.2"
},
"dependencies": {
"concat-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"requires": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
}
},
"readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"spdx-correct": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",

View File

@ -20,6 +20,7 @@
"wormhole_attester/sdk/js"
],
"dependencies": {
"pre-commit": "^1.2.2",
"prettier": "2.7.1"
},
"devDependencies": {

View File

@ -1,50 +1,85 @@
# Pyth on Sui
## 1. Background
### Contents
Pyth price feeds on Sui are uniquely represented in the global store as `PriceInfoObjects`. These objects have the `key` ability and serve as wrappers around the `PriceInfo` object, which in turn wraps around the `PriceFeed`, the arrival time of the latest price update, and the attestation time of the latest update.
1. Background
2. How to Update and Consume Price Feeds
3. Examples
4. Contracts Registry (addresses)
5. Common Questions how How to Integrate with Pyth on Sui
`PriceInfoObject`s are central to Pyth on Sui, since they are in unique correspondence with each Pyth price feed and must be passed in to functions that act on price feeds, e.g.
# 1. Background
- `update_price_feeds`
- `update_price_feed_from_single_vaa`
- `update_price_feeds_if_fresh`
Pyth price feeds on Sui are uniquely represented in the global store as `PriceInfoObjects`. These objects have the `key` ability and serve as wrappers around the `PriceInfo` object, which in turn contains the price info: namely the `PriceFeed`, the arrival time of the latest price update, and the attestation time of the latest update.
## 2. How to Update and Consume Price Feeds
`PriceInfoObject`s are central to Pyth on Sui, since they are in unique correspondence with each Pyth price feed and must be passed in to functions that update price feeds or which query info about price feeds, e.g.
To update and then consume a price feed, one needs to build a Sui [programmable transaction](https://docs.sui.io/build/prog-trans-ts-sdk).
- `update_single_price_feed`
- `update_single_price_feeds_if_fresh`
- `get_price`
As with other chains, one first obtains a batch price attestation VAA (of type `vector<u8>`) off-chain for a Price Info Object whose feed is to be used. Assume the ID is `PRICE_INFO_OBJECT_ID`. Then, chain together the following sequence of function calls:
# 2. How to Update and Consume Price Feeds
### 1. `wormhole::parse_and_verify`
We demo how to update and then consume a price feed by building a Sui [programmable transaction](https://docs.sui.io/build/prog-trans-ts-sdk) off-chain, and then executing it to update a price feed and get an updated price.
As with other chains, one first obtains a batch price attestation VAA (of type `vector<u8>`) from a Pyth price service endpoint, which encodes update price information for a feed.
### 1. `wormhole::vaa::parse_and_verify`
Call `parse_and_verify` on the batch attestation VAA bytes to obtain a `VAA` hot potato object.
```Rust
public fun parse_and_verify(
wormhole_state: &State,
buf: vector<u8>,
buf: vector<u8>, // price update VAA bytes
the_clock: &Clock
): VAA
```
### 2.`pyth:update_price_feeds`
### 2. `pyth::pyth::update_single_price_feed`
Vectorize the `VAA` from the previous step and pass it to `update_price_feeds`.
Use the verified VAA and create a hot potato vector containing the latest price updates.
```Rust
public fun update_price_feeds(
public fun create_price_infos_hot_potato(
pyth_state: &PythState,
verified_vaas: vector<VAA>,
price_info_objects: &mut vector<PriceInfoObject>,
fee: Coin<SUI>,
clock: &Clock
)
): HotPotatoVector<PriceInfo>
```
### 3. `pyth::get_price`
### 3.`pyth::pyth::update_single_price_feed`
Finally, get the price of the updated price feed in `PriceInfoObject`.
Use the hot potato price updates vector to update a price feed.
Note that conventional Pyth price IDs are found [here](https://pyth.network/developers/price-feed-ids#pyth-evm-mainnet).
However, instead of passing in a Pyth price feed ID to update the price feed (which is what is done on other chains), one must pass in a `PriceInfoObject` ID instead.
The `PriceInfoObject` IDs are distinct from Pyth price feed IDs, and are stored in a map on-chain (Pyth price feed ID => PriceInfoObject ID). We pulled this map into a local json file [here](./scripts/generated). The `PriceInfoObject` ID can also be queried on-chain by calling the `pyth::state::get_price_info_object_id` found in the Pyth package. See the common questions section below for more info.
```Rust
public fun update_single_price_feed(
pyth_state: &PythState,
price_updates: HotPotatoVector<PriceInfo>,
price_info_object: &mut PriceInfoObject,
fee: Coin<SUI>,
clock: &Clock
): HotPotatoVector<PriceInfo>
```
### 4.`pyth::hot_potato_vector::destroy`
Drop the hot potato. (You must call this function to drop the potato).
```Rust
public fun destroy<T: copy + drop>(
hot_potato_vector: HotPotatoVector<T>
)
```
### 5. `pyth::pyth::get_price`
Finally, get the price of the updated price feed in `PriceInfoObject` 🎉🎉🎉.
```Rust
public fun get_price(
@ -54,11 +89,11 @@ public fun get_price(
): Price
```
Fetch the price of the updated Price Info Object.
# 3. Examples
## 3. Examples
See the `./scripts` folder for examples of programmable transactions for creating price feeds and updating price feeds.
See the `./scripts` folder for examples of programmable transactions for creating price feeds, updating price feeds, and deploying contracts.
- [Demo for updating a price feed](./scripts/pyth/update_price_feeds.ts)
To build and test the contracts, run the following
@ -67,24 +102,52 @@ $ make test
$ make build
```
## 4. Contracts Registry
# 4. Contracts Registry
## Pyth on Testnet
- PYTH_PACKAGE_ID: [0x7c017b047a3c9db5a8f4586d347c54869b761b6d6b0882a179823e8642faf7b9](https://explorer.sui.io/object/0x7c017b047a3c9db5a8f4586d347c54869b761b6d6b0882a179823e8642faf7b9)
- PYTH_STATE_ID: [0x3fc17e66d5ced3bf62f3fe8289cb2cb78c311a1e1c9700727ecd278d242e9e88](https://explorer.sui.io/object/0x3fc17e66d5ced3bf62f3fe8289cb2cb78c311a1e1c9700727ecd278d242e9e88)
- PYTH_PACKAGE_ID: [0x975e063f398f720af4f33ec06a927f14ea76ca24f7f8dd544aa62ab9d5d15f44](https://explorer.sui.io/object/0x975e063f398f720af4f33ec06a927f14ea76ca24f7f8dd544aa62ab9d5d15f44?network=testnet)
- PYTH_STATE_ID: [0xd8afde3a48b4ff7212bd6829a150f43f59043221200d63504d981f62bff2e27a](https://explorer.sui.io/object/0xd8afde3a48b4ff7212bd6829a150f43f59043221200d63504d981f62bff2e27a?network=testnet)
- PYTH_PRICE_FEED_ID_TO_PRICE_INFO_OBJECT_ID: [0xf8929174008c662266a1adde78e1e8e33016eb7ad37d379481e860b911e40ed5](https://explorer.sui.io/object/0xf8929174008c662266a1adde78e1e8e33016eb7ad37d379481e860b911e40ed5?network=https%3A%2F%2Ffullnode.testnet.sui.io%3A443)
## Wormhole on Testnet
- WORMHOLE_PACKAGE_ID: [0x80c60bff35fe5026e319cf3d66ae671f2b4e12923c92c45df75eaf4de79e3ce7](https://explorer.sui.io/object/0x80c60bff35fe5026e319cf3d66ae671f2b4e12923c92c45df75eaf4de79e3ce7)
- WORMHOLE_STATE_ID: [0x79ab4d569f7eb1efdcc1f25b532f8593cda84776206772e33b490694cb8fc07a](https://explorer.sui.io/object/0x79ab4d569f7eb1efdcc1f25b532f8593cda84776206772e33b490694cb8fc07a)
- WORMHOLE_PACKAGE_ID: [0xcc029e2810f17f9f43f52262f40026a71fbdca40ed3803ad2884994361910b7e](https://explorer.sui.io/object/0xcc029e2810f17f9f43f52262f40026a71fbdca40ed3803ad2884994361910b7e?network=testnet)
- WORMHOLE_STATE_ID: [0xebba4cc4d614f7a7cdbe883acc76d1cc767922bc96778e7b68be0d15fce27c02](https://explorer.sui.io/object/0xebba4cc4d614f7a7cdbe883acc76d1cc767922bc96778e7b68be0d15fce27c02?network=testnet)
## Pyth on Mainnet
- PYTH_PACKAGE_ID: [0xa446c4a37c0bb69d03357c1a52d60da0b434048226d5f3feffdb693586bea861](https://explorer.sui.io/object/0xa446c4a37c0bb69d03357c1a52d60da0b434048226d5f3feffdb693586bea861?network=https%3A%2F%2Ffullnode.mainnet.sui.io%3A443)
- PYTH_STATE_ID: [0x428b5795904d5256d1eea5991df672934315fb8dcf8f6111134c1a52afd005ca](https://explorer.sui.io/object/0x428b5795904d5256d1eea5991df672934315fb8dcf8f6111134c1a52afd005ca?network=https%3A%2F%2Ffullnode.mainnet.sui.io%3A443)
- PYTH_PACKAGE_ID: [0x00b53b0f4174108627fbee72e2498b58d6a2714cded53fac537034c220d26302](https://explorer.sui.io/object/0x00b53b0f4174108627fbee72e2498b58d6a2714cded53fac537034c220d26302?network=https%3A%2F%2Ffullnode.mainnet.sui.io%3A443)
- PYTH_STATE_ID: [0xf9ff3ef935ef6cdfb659a203bf2754cebeb63346e29114a535ea6f41315e5a3f](https://explorer.sui.io/object/0xf9ff3ef935ef6cdfb659a203bf2754cebeb63346e29114a535ea6f41315e5a3f?network=https%3A%2F%2Ffullnode.mainnet.sui.io%3A443)
- PYTH_PRICE_FEED_ID_TO_PRICE_INFO_OBJECT_ID: [0x14b4697477d24c30c8eecc31dd1bd49a3115a9fe0db6bd4fd570cf14640b79a0](https://explorer.sui.io/object/0x14b4697477d24c30c8eecc31dd1bd49a3115a9fe0db6bd4fd570cf14640b79a0?network=https%3A%2F%2Ffullnode.mainnet.sui.io%3A443)
## Wormhole on Mainnet
- WORMHOLE_PACKAGE_ID: [0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a](https://explorer.sui.io/object/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a)
- WORMHOLE_STATE_ID: [0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c](https://explorer.sui.io/object/0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c)
# 5. Common Questions on How to Integrate with Pyth on Sui
## 1. What is up with the "sui rev"? (`09b2081498366df936abae26eea4b2d5cafb2788`). Why does it point to a specific commit hash instead of "main" or "devnet"?
Our Pyth `Move.toml` file contains the following dependencies. It depends on specific versions of the [Sui Framework](https://github.com/MystenLabs/sui) as well as [Wormhole](https://github.com/wormhole-foundation/wormhole). To make your Sui package compatible, you must also specify the following dependencies verbatim in your `Move.toml` file. We are locked in to this specific `rev` because our package depends on Wormhole, which [uses the `rev` `09b2081498366df936abae26eea4b2d5cafb2788`](https://github.com/wormhole-foundation/wormhole/blob/main/sui/wormhole/Move.mainnet.toml).
```
[dependencies.Sui]
git = "https://github.com/MystenLabs/sui.git"
subdir = "crates/sui-framework/packages/sui-framework"
rev = "09b2081498366df936abae26eea4b2d5cafb2788"
[dependencies.Wormhole]
git = "https://github.com/wormhole-foundation/wormhole.git"
subdir = "sui/wormhole"
rev = "d050ad1d67a5b7da9fb65030aad12ef5d774ccad"
```
## 2. How do I find the Sui Object ID of a PriceInfoObject for a Pyth Price Feed?
The mapping of Pyth price feed IDs to `PriceInfoObject` object IDs can be found [here](./scripts/generated/). (Note: this may go out of date as more price feeds are introduced and created over time).
This mapping is also stored on-chain, and can be queried on-chain using the getter function `pyth::state::get_price_info_object_id` defined in the Pyth package.
Also recall that the list of Pyth price feed IDs can be found [here](https://pyth.network/developers/price-feed-ids#pyth-evm-testnet).

View File

@ -0,0 +1,19 @@
[package]
name = "Pyth"
version = "0.0.1"
[dependencies.Sui]
git = "https://github.com/MystenLabs/sui.git"
subdir = "crates/sui-framework/packages/sui-framework"
rev = "09b2081498366df936abae26eea4b2d5cafb2788"
[dependencies.Wormhole]
local = "../../../../wormhole/sui/wormhole"
[addresses]
pyth = "0x0"
wormhole = "0x80c60bff35fe5026e319cf3d66ae671f2b4e12923c92c45df75eaf4de79e3ce7"
[dev-addresses]
pyth = "0x100"
wormhole = "0x200"

View File

@ -13,5 +13,5 @@ subdir = "sui/wormhole"
rev = "d050ad1d67a5b7da9fb65030aad12ef5d774ccad"
[addresses]
pyth = "0xa446c4a37c0bb69d03357c1a52d60da0b434048226d5f3feffdb693586bea861"
pyth = "0x00b53b0f4174108627fbee72e2498b58d6a2714cded53fac537034c220d26302"
wormhole = "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a"

View File

@ -0,0 +1,65 @@
/// This class represents a vector of objects wrapped
/// inside of a hot potato struct.
module pyth::hot_potato_vector {
use std::vector;
const E_EMPTY_HOT_POTATO: u64 = 0;
friend pyth::pyth;
// A hot potato containing a vector of elements
struct HotPotatoVector<T: copy + drop> {
contents: vector<T>
}
// A public destroy function.
public fun destroy<T: copy + drop>(hot_potato_vector: HotPotatoVector<T>){
let HotPotatoVector {contents: _} = hot_potato_vector;
}
// Only certain on-chain functions are allowed to create a new hot potato vector.
public(friend) fun new<T: copy + drop>(vec: vector<T>): HotPotatoVector<T>{
HotPotatoVector {
contents: vec
}
}
public fun length<T: copy + drop>(potato: &HotPotatoVector<T>): u64 {
vector::length(&potato.contents)
}
public fun is_empty<T: copy + drop>(potato: &HotPotatoVector<T>): bool {
vector::is_empty(&potato.contents)
}
public fun borrow<T: copy + drop>(potato: &HotPotatoVector<T>, i: u64): &T {
vector::borrow<T>(&potato.contents, i)
}
public(friend) fun pop_back<T: copy + drop>(hot_potato_vector: HotPotatoVector<T>): (T, HotPotatoVector<T>){
let elem = vector::pop_back<T>(&mut hot_potato_vector.contents);
return (elem, hot_potato_vector)
}
#[test_only]
struct A has copy, drop {
a : u64
}
#[test]
fun test_hot_potato_vector(){
let vec_of_a = vector::empty<A>();
vector::push_back(&mut vec_of_a, A{a:5});
vector::push_back(&mut vec_of_a, A{a:11});
vector::push_back(&mut vec_of_a, A{a:23});
let hot_potato = new<A>(vec_of_a);
let (b, hot_potato) = pop_back<A>(hot_potato);
assert!(b.a==23, 0);
(b, hot_potato) = pop_back<A>(hot_potato);
assert!(b.a==11, 0);
let (b, hot_potato) = pop_back<A>(hot_potato);
assert!(b.a==5, 0);
destroy<A>(hot_potato);
}
}

View File

@ -177,8 +177,12 @@ module pyth::price_info {
public(friend) fun update_price_info_object(
price_info_object: &mut PriceInfoObject,
price_info: PriceInfo
price_info: &PriceInfo
) {
price_info_object.price_info = price_info;
price_info_object.price_info = new_price_info(
price_info.attestation_time,
price_info.arrival_time,
price_info.price_feed
);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,243 @@
{
"b881c6dad5dd3dc9a83222f8032fb439859288119afc742d43adc305cef151cc": "0x48f5e34e3bf1536cbb100ce9bda1eeb63b414ca4bfc2b3da64b7899c1b68bce1",
"23245bb74254e65a98cc3ff4a37443d79f527e44e449750ad304538b006f21bc": "0x73c2acb6e4ef06b3ac2290c2dbbdf2c4e18f128c3c35d2e3cd7bc72064c53a11",
"ed5c2a2711e2a638573add9a8aded37028aea4ac69f1431a1ced9d9db61b2225": "0x2509cb1db4940adb0455408d60ba2e8d90ba5ce9e1917fc663333a5ab561d526",
"cfd44471407f4da89d469242546bb56f5c626d5bef9bd8b9327783065b43c3ef": "0xe77ee43c45c2e8a3fc1b2c436f53752380ae9a37b9cac474cb3c49be08f55fc4",
"27d108eb764c912f49d3453a21dd95516619b1c45d0b607ee58a137ac8a6f32d": "0xe36fb48cdcd0b53538df43ce800cd1e00005b8bcfd0814dfc4463cf834d90b45",
"1dcf38b0206d27849b0fcb8d2df21aff4f95873cce223f49d7c1ea3c5145ec63": "0x3de2560b78bc990225b894304cd178d2eafe08ea9afaa6413d271223527f5951",
"b962539d0fcb272a494d65ea56f94851c2bcf8823935da05bd628916e2e9edbf": "0xfa16594fccd3a1ebe33472ef3992de100ab054ec2a217240680482a538b4c336",
"20d096e088a9b85f8cf09278965b77aeb05c00769e2ddeda5ea2d07ea554b283": "0x8367e3bb78392d6a4a491355a8d1e9c21aa1cd8273c7e0df81d122814e9dd7c8",
"67be9f519b95cf24338801051f9a808eff0a578ccb388db73b7f6fe1de019ffb": "0x931d4ed5776656216c4df13bcd98d39c4cf4ee07d1549cbb21768b2c2a661ae0",
"ad2fda41998f4e7be99a2a7b27273bd16f183d9adfc014a4f5e5d3d6cd519bf4": "0xa8ede0347676f90f35b32f02006f1b377cfcc5a97c378c3c55d19785d4862424",
"d1d95644ffc11ca502f21e067a7814144c56b37018515ced4335a886a827a305": "0xf43077d4591363033422295f7d057c91f274428e84df0052087d52a8ddf75853",
"d0ca23c1cc005e004ccf1db5bf76aeb6a49218f43dac3d4b275e92de12ded4d1": "0xf72465b8208bdbe15901d3861be0d7a3f897b871a88f7dd9374bcba1fa9a70aa",
"78a3e3b8e676a8f73c439f5d749737034b139bbbe899ba5775216fba596607fe": "0xb7327d2ae15cc451cef7e9d639ab762f23f888b2e6357ace28dd40370a04f0be",
"6ed3c7c4427ae2f91707495fc5a891b30795d93dbb3931782ddd77a5d8cb6db7": "0x7adc4863905768dd4d2fddab7161a8c8cc4232763f7eb5f7af60d7b0dac7e1b1",
"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b": "0x64f8db86bef3603472cf446c7ab40278af7f4bcda97c7599ad4cb33d228e31eb",
"681e0eb7acf9a2a3384927684d932560fb6f67c6beb21baa0f110e993b265386": "0x977dc5e935767f31254d1f30c1190f82c1b30748650507382d4b99233b61356b",
"43cddc3e1d0b17fec1cf2a230f46e9319887a037dcee56e053af44d8259fb042": "0x4ce39ace836e4ab1a534fc80a1da1ea7b1a543cb53c0a524bc6b412ffac9e3aa",
"159b09ed169a3cdbd13fd96ef4b3cda54972058906d38a58f5cd327e5df1478b": "0x45cf00d0ec9bd998b4b98193f8cb94960bcff8f7b710f7bb6a9251db1a1e3a7c",
"ad04597ba688c350a97265fcb60585d6a80ebd37e147b817c94f101a32e58b4c": "0xbfda14b522c592ed05187d411822a43d966290519545165a759db2c99f8e04ba",
"8086320540b3d7b9b4b564e6756a29a9cb91a7cd97d5fafff63841959d3a09a0": "0x82b1c5f3f6b19b462d390041d753e8c91ae7adefb19b3d0200f76331d0f3d870",
"2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f": "0xf77ffef808c70726cf3194275d2b2562c6e107130188f81684b184081f380e7b",
"301377b122716cee1a498e7930a1836c0b1db84667cc78bbbcbad6c330ea6afb": "0x276ebfe4c08088769193d92d601cd1bab347e9969ca26f2aae27e3c787b10577",
"0afa3199e0899270a74ddcf5cc960d3c6c4414b4ca71024af1a62786dd24f52a": "0xd2ec9b5cc02a4a5f2b99739cd2021048a8b8fdff0d718e21b3f2d6347c15802f",
"6672325a220c0ee1166add709d5ba2e51c185888360c01edc76293257ef68b58": "0xce3d0a61496bfe275a0743753192f9fd99e08c6f9e515d29d75b9bb491795b3c",
"856aac602516addee497edf6f50d39e8c95ae5fb0da1ed434a8c2ab9c3e877e9": "0x84d1121e33ead9dc597fc8783046ef62917138ddec8ace9f096a8ab05408d627",
"e0f87bbde799f33615b83a601b66415e850788000cd7286a3e7295f23c1bb353": "0x8e37e4b5165f1ecc27b9293c262efee4b48ed888eb24eb52003db8c4e30a7e6e",
"fd0690232b0fae5efdc402c1b9aac74176383ff7daf87d021554bda24a38e0ec": "0x24773694c342902c90bab3f9989cf07a3acdcbad43bd15fc6b2fa5e3a7bf6725",
"a4702f0f5818258783a1e47f453cb20b0fbec32ca67260e1d19dfcdd6a4d0ebb": "0xfc81ec2ea856badef5646309cd7cba2b39365b40d76b2e9d73ace9ddc78ebbd5",
"91568baa8beb53db23eb3fb7f22c6e8bd303d103919e19733f2bb642d3e7987a": "0x6a067510a352ca827ba34f297b5a36c11da0509848d4d32895ec38ceeb9f2fe3",
"4b1ddc065d08214eb06878d6130a66665febc3fd201733e9bb481094b5de8a32": "0x781d74ce86520529492844dbb355746d7f452b9bcb56f1df9c66458f4683b334",
"16dad506d7db8da01c87581c87ca897a012a153557d4d578c3b9c9e1bc0632f1": "0xd3b0babf4b63fcd84e8fb345ed947dc42687d64c0d3ab9bcb19aefcba5edee65",
"ccca1d2b0d9a9ca72aa2c849329520a378aea0ec7ef14497e67da4050d6cf578": "0x37584366e4c87d0db4f0fe8f5bea2913bb17b540efae87c734df2e84b7f8132a",
"9c68c0c6999765cf6e27adf75ed551b34403126d3b0d5b686a2addb147ed4554": "0xe54f04f1c67ad0735377696e85e1459ba2331aaaf1939ea2764c70ba3e626fb3",
"107918baaaafb79cd9df1c8369e44ac21136d95f3ca33f2373b78f24ba1e3e6a": "0x368c16d65559ba370d3b482facd2f271cabcce8d51981f19adcc798da566f5a5",
"8cdc9b2118d2ce55a299f8f1d700d0127cf4036d1aa666a8cd51dcab4254284f": "0xea0a0193fd43846748c3db56ecf88d265678a41fe060c647d9b61e93ced3a1e9",
"9fb0bd29fe51481b61df41e650346cc374b13c2bab2e3610364cd834a592025a": "0xfc34f68e8cbe453be14c11da50cf3e40860b76423f4a760bb219882fde2f5a1d",
"5a5d5f7fb72cc84b579d74d1c06d258d751962e9a010c0b1cce7e6023aacb71b": "0x7b8c7ef3bfd8144689d1140d6426a8e1be434942c6668a8a49587fdfc2021af7",
"2b9ab1e972a281585084148ba1389800799bd4be63b957507db1349314e47445": "0x390b072dded78dfff1ea173b38c66381e5f3f9efe7518cb35225a9c3f9a459dd",
"6e89dbed2351e3c85a9ce1c782ca1e34b6ef2c4775f1cb691739bbe6d0697e86": "0x6472958c67e43b2152c16673bd0089f8d1b554e44ebc66123cc2b90826e917a3",
"a0255134973f4fdf2f8f7808354274a3b1ebc6ee438be898d045e8b56ba1fe13": "0x12b26a12f52efb34f92b9fd5276b279d780e6290ca9694ddc5c914ca21f6bc5b",
"fee33f2a978bf32dd6b662b65ba8083c6773b494f8401194ec1870c640860245": "0xf07b1bc4a2e57f6689fac5e6f45d849684e04c48ed14cfcdf9d0f92a3c0d6750",
"7a5bc1d2b56ad029048cd63964b3ad2776eadf812edc1a43a31406cb54bff592": "0x9b200f90ce60bad205b173a5d93d7735216651056b1aa417cd43548cb1e296c9",
"9ff7b9a93df40f6d7edc8184173c50f4ae72152c6142f001e8202a26f951d710": "0x1c896b841e04ae645f153f5fff69ff2decd5887bedd50ef35ed9366a9504d5be",
"150ac9b959aee0051e4091f0ef5216d941f590e1c5e7f91cf7635b5c11628c0e": "0xf98966d481a43b21390217c32bd1cf1b5bda9e30a4e17813ba74a607348db110",
"7f4f157e57bfcccd934c566df536f34933e74338fe241a5425ce561acdab164e": "0x8d4475caa70fed009c5cb2409319241a87483a32e2e39a49b41d49789a2c6290",
"a995d00bb36a63cef7fd2c287dc105fc8f3d93779f062f09551b0af3e81ec30b": "0x314f17766eea028b392afa591bc73dc088373401105a1b5b7696d77ea2eca60e",
"649fdd7ec08e8e2a20f425729854e90293dcbe2376abc47197a14da6ff339756": "0x14fca9ac00d16ddf02bc7d09434ac9e0648b033b6fec8cff25b9c4086bf5bbef",
"f0d57deca57b3da2fe63a493f4c25925fdfd8edf834b20f93e1f84dbd1504d4a": "0x4c1ea5bf7298087455ff3e304071483d898428d492982ebe96bede528878cab1",
"2f2d17abbc1e781bd87b4a5d52c8b2856886f5c482fa3593cebf6795040ab0b6": "0x5d7abbc0984b102d24d8c799f62336966063cbb63b2443e2b0edc7ee1a502fab",
"be4cb6bf8f18e84b1c4fd6fafa7f048a972be26505bd58338eb66c80faa99483": "0x2461d2c70b6bb5fda512fcc3d3e5905cd1601c76754b9aef68ff77099ab8a01a",
"ee42016c303126bd9263724e00f83a8114e84518c6e8ffc9738c001cc301daff": "0x99a31d27d382e65e7e4f83a8f9a3e0306244ac26a6b60b0c233aaa573399edfc",
"4457960559b812558bb0f8cb7912f8bcb843eb801a3133ef45be998630ff8c05": "0xda3bf400551387e59d18867b22b00184ca277d048413bfb8a456464e23039818",
"7f981f906d7cfe93f618804f1de89e0199ead306edc022d3230b3e8305f391b0": "0xea316baa91d450f8cac1cda7cc1e85203094bb447e1a8fa606142e552a1bef9b",
"4176cd17d4a1fb517b6535e70084ce85e1bcbe707c66b960c8bd5256accc1b2d": "0x6bb4c17ea9aab309528c2dd209bcc43964fe7e61944816764402aea5be89bd28",
"b0948a5e5313200c632b51bb5ca32f6de0d36e9950a942d19751e833f70dabfd": "0xbf66ce3ec6cc8b96a96c394d224458ba1245e0bd8d7b2ef26b2dabde7201ab90",
"84c2dde9633d93d1bcad84e7dc41c9d56578b7ec52fabedc1f335d673df0a7c1": "0xe629bee77fa0153cc95381c03874ea40b2606045754846329056953da91ec737",
"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace": "0xaa6adc565636860729907ef3e7fb7808d80c8a425a5fd417ae47bb68e2dcc2e3",
"48ce0cf436bac22dad33551dfe2eb7bf9991e419a05f25aed4e90c29c3a1cdbe": "0xea3c73b52093cce7bfc6268b2f3ac98a9d5c6b29b73ff8531e9cb367534c5601",
"39d020f60982ed892abbcd4a06a276a9f9b7bfbce003204c110b6e488f502da3": "0xa0f1dd0f63f4433cee07ae3252aa2932adec74ca9c0e9cc3940b941c43b65d59",
"0b46c1c04e9c914037cc4e0561a7e6787f6db0b89b7b65281f0f6fea1ce45a74": "0x0ae0bdcaf4d5d8a598088b662484d14b70ff87ce03a85991cdb2c97b6adad694",
"49f6b65cb1de6b10eaf75e7c03ca029c306d0357e91b5311b175084a5ad55688": "0xea058b780d7d736034902dc429ef09d2a3bf79045f467b21281de049b007f0f1",
"89a58e1cab821118133d6831f5018fba5b354afb78b2d18f575b3cbf69a4f652": "0xd64cdf76087a1e758220bfc42c932166c948389b55cb57d7ba084b43c550c447",
"9c479b12a2b2c1051715d4d462dd7a6abbb6dccabf3af31a53f6130a1cd88efc": "0xd7b38060426a5d4202f070c43cd95eeaca0118d73037de110493a2a7d1e68db2",
"c7b72e5d860034288c9335d4d325da4272fe50c92ab72249d58f6cbba30e4c44": "0x32cc9edcff5da777e082683ff0f74e402df4f405d23440d4a178160742b22ee8",
"6aac625e125ada0d2a6b98316493256ca733a5808cd34ccef79b0e28c64d1e76": "0xc669349fbdd7ee4bb414d6b2f369c795d02d5a0032fcde020a69bc58767e8679",
"ef2c98c804ba503c6a707e38be4dfbb16683775f195b091252bf24693042fd52": "0x7fe7a7a217ab0c41603b1447c342fcbe4d053a5e4545712ee4ba9c8597c5dcd5",
"97d7d4c20e5a06fdb60f7a448a9e9a779f2b31c3f21121180010a4a470844aae": "0x3a3bf114e8d1d6f7b183c1fd93e6fcd1262bd935e41299beaa3fba30a57d921c",
"097d687437374051c75160d648800f021086bc8edf469f11284491fda8192315": "0xd95ccf9ad19161a11d6c89d7d01183b8ada8de019097ffb59cae0017374fd8c2",
"a5eb88d3ea93f6240d7e54b4466bc1857f7bfc1658d49a07f68096ebc0fdde3b": "0xb7bd68342d5a4dcb179a0d5671b02c1ecc0a3541070319837a062c871a5c34b4",
"846ae1bdb6300b817cee5fdee2a6da192775030db5615b94a465f53bd40850b5": "0xcbf9dfb457aa8d1e3133f74a9dda1f35a8dee4389f94058440b8e41a551c5e91",
"f464e36fd4ef2f1c3dc30801a9ab470dcdaaa0af14dd3cf6ae17a7fca9e051c5": "0x6019d9c0076ca9ae62e115a5649cba5b6ae0206d887b5def93e4bb3ba00bcb7b",
"b3a83dbe70b62241b0f916212e097465a1b31085fa30da3342dd35468ca17ca5": "0xfee4a508e0dfcc4aa01eb0cca214a5aa7de4b96a385cb0aa1a972a81b792601a",
"c3d5d8d6d17081b3d0bbca6e2fa3a6704bb9a9561d9f9e1dc52db47629f862ad": "0xd910c7feef2f7f2202b7ddde218c9dc2e38f9b6c6a8b57baa6f303fd34909786",
"8e860fb74e60e5736b455d82f60b3728049c348e94961add5f961b02fdee2535": "0x4fdd926d2de6856e517e8971bb31cdbc7a56ecc00bdaa6465d275dac3facdd58",
"e6ccd3f878cf338e6732bf59f60943e8ca2c28402fc4d9c258503b2edbe74a31": "0x7132045789988836fcce1b6d616d4d3b127d514b3ad3cb35ba88f2900ee705e6",
"b5d0e0fa58a1f8b81498ae670ce93c872d14434b72c364885d4fa1b257cbb07a": "0xe898823694bee196292d219705cd0beb35525801b85375591fc6a44cf55d3b20",
"3b7ef6c95ceedbffbb66bff3d6135a200c5d0a0466b0c90812510ceaedebaf04": "0x4fe43d8860dc2110f94d9e83823732fa4b0c0dce02649d16d679660f4f50fcae",
"765f416f2d676848b5016428bc9295fda3e71d5e97b16df75179a378cef040ec": "0xf434ab996f77c767e2a87dead8cac87be37aff047747051b415fd4a2618fe8f5",
"c7c60099c12805bea1ae4df2243d6fe72b63be3adeb2208195e844734219967b": "0x9d63a5134e732db8a63dfa10ab019deb24397de7f2058d4209167bbbada3d33f",
"c80657b7f6f3eac27218d09d5a4e54e47b25768d9f5e10ac15fe2cf900881400": "0x254241ea8359518d79c52e64589e147a0447e6c35f33de677a00175061b464e5",
"8f218655050a1476b780185e89f19d2b1e1f49e9bd629efad6ac547a946bf6ab": "0x3416a6939f558a9617a99d12179268f702d39fc408458d70c284de1a80a1c49c",
"f2fb02c32b055c805e7238d628e5e9dadef274376114eb1f012337cabe93871e": "0x48f1db8eec5885a546e12c19d67f4547859fea650015b48454cfc5c79d394279",
"396a969a9c1480fa15ed50bc59149e2c0075a72fe8f458ed941ddec48bdb4918": "0x23b2225a09c417d565c77fb0b3e036d8d5aebbedf91cb1953d80ce5292cd97f6",
"abe4f2b264560a397f38eec024369356e5c1ea4f7aab94729369f144b3d97779": "0x1a4e036ba74b664ba89ec19239a575288fbecfdb7a79d3064791736f67cd2608",
"c63e2a7f37a04e5e614c07238bedb25dcc38927fba8fe890597a593c0b2fa4ad": "0x31529ae63c25966bdb44728d3b9f85a492b128695c1b5bb023430095f8259a53",
"81a21b01c15b8d01f6cdfed65e00987cc4c901858c821b2089344987de3102e9": "0x63220e064b5aea996231271af99fbb95ca20100adc038f3a70216af85b46abb8",
"a19d04ac696c7a6616d291c7e5d1377cc8be437c327b75adb5dc1bad745fcae8": "0xb1ce7fc4ff77674c1cd0b55b7b11d512136b1c255dfe40855d802242a801c2d9",
"72b021217ca3fe68922a19aaf990109cb9d84e9ad004b4d2025ad6f529314419": "0xc2eefebf46c00bd270b796d1c2b13aca776d4ed71987e735aaa1af2ca5a6b54b",
"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5": "0x02ed0bfc818a060e1378eccda6a6c1dc6b4360b499bdaa23e3c69bb9ba2bfc96",
"ef94acc2fb09eb976c6eb3000bab898cab891d5b800702cd1dc88e61d7c3c5e6": "0xcad9824dd299c55b10085cc2822d82d2b95c6af6d577a784389abb036096bcb7",
"59671f59d12dc81bae078754b7469c7434528a66d3fa91193cf204460c198f9b": "0x2b60d6a87f7d6151b264deb533964622d1492f9f1632554d9213fa51e8f7a92c",
"433faaa801ecdb6618e3897177a118b273a8e18cc3ff545aadfc207d58d028f7": "0xb6c57f055c5919d2da8466fa2d47f4a0fce2552ee1999a2fe7618482ce0d9522",
"6d20210495d6518787b72e4ad06bc4df21e68d89a802cf6bced2fca6c29652a6": "0x30608417f9615779db05cd6f4614590a3fcf6c90516c84b93867612c57dba097",
"07ad7b4a7662d19a6bc675f6b467172d2f3947fa653ca97555a9b20236406628": "0x973f63c3f232ffaae67e03df9d6b44edba596334d286da2d5920abbf610387bb",
"f3b50961ff387a3d68217e2715637d0add6013e7ecb83c36ae8062f97c46929e": "0xb6010b008fb1f6acc6bcf7abc42260fd2fdeb1575b0c27473874ec8a3b074247",
"8ccb376aa871517e807358d4e3cf0bc7fe4950474dbe6c9ffc21ef64e43fc676": "0xac6f489810c5f6964d20f1d87cb6b37592a6aba39a1f4b038666a7e2fc17365b",
"235ddea9f40e9af5814dbcc83a418b98e3ee8df1e34e1ae4d45cf5de596023a3": "0xab38f39c828bd1c2fbe8f427115504d75dcb189a7b701d6da9af86de841fe768",
"ec5d399846a9209f3fe5881d70aae9268c94339ff9817e8d18ff19fa05eea1c8": "0x9ed686fd3b795de6185329add2fe0f5e4f907c08d20be5f06c94c012000535c4",
"5b70af49d639eefe11f20df47a0c0760123291bb5bc55053faf797d1ff905983": "0x8872e6fecf82d40ca53fdba9d75d09129a94e76159b589c78d86382fa8043ead",
"7d669ddcdd23d9ef1fa9a9cc022ba055ec900e91c4cb960f3c20429d4447a411": "0xbca1fe1bb1e6a70085c45e757355ef184e786172c66a6e10612e18822a2d5f31",
"c1751e085ee292b8b3b9dd122a135614485a201c35dfc653553f0e28c1baf3ff": "0x47cb9e798c09e1c77ee587be91b66cdf2a6cab3aba040bfa8596653ed9bc6441",
"a639c04942ebfdeabf25bf1b88d6608ef387219748d77ea130bc2fa486b9614f": "0x8d91ed026578b6a09bf951ba088e05e37b9fa3282796d0868b6b35b5dc9a5278",
"3dd2b63686a450ec7290df3a1e0b583c0481f651351edfa7636f39aed55cf8a3": "0x879116097aee056f838b7c84ea1380f585e01a8cf34d3cc57849930c9c03674b",
"8ff1200345393bb25be4f4eeb2d97234e91f7e6213f3745a694b1436e700f271": "0xaed6e775060949dc0672f12b7f4b3960d65ff47689a0411ce3c8c735db8ba099",
"c415de8d2eba7db216527dff4b60e8f3a5311c740dadb233e13e12547e226750": "0xdcdb26f005d8e4b0820a3c99b916cfa79ef24c4319288f664ad9158966d7bbb0",
"af5b9ac426ae79591fde6816bc3f043b5e06d5e442f52112f76249320df22449": "0xf6e490c108d047e8b1e7687d219862981328a63f0b8b662b224013b0543795f6",
"2fb245b9a84554a0f15aa123cbb5f64cd263b59e9a87d80148cbffab50c69f30": "0x0541a3b9aa54e4a53cdeb4c59e904ca21b8452c3ee958426ee77dfb7bd8a304d",
"6d881ecf489bb24aa10468ca332e3ea262a9bf3a8fb9db1eadac9cce544b16b1": "0x3192e929d4d7c3366ee294f7bb97c73063234cf6999b028a892b591e7f95348e",
"15ecddd26d49e1a8f1de9376ebebc03916ede873447c1255d2d5891b92ce5717": "0x279e7c274c3c7dbfb44f9d01f21a2030df935895a58b0d72da670a021f21f387",
"c2289a6a43d2ce91c6f55caec370f4acc38a2ed477f58813334c6d03749ff2a4": "0xd161d5885f69684a41c3f3768eb3dfab5ba81341c9d54d5bcf3b687848b25eec",
"3f4b77dd904e849f70e1e812b7811de57202b49bc47c56391275c0f45f2ec481": "0x9c6712ec48c0fcb5777e6931358d5699d10fc5d8dd01a72acaa88b3575102fc7",
"6489800bb8974169adfe35937bf6736507097d13c190d760c557108c7e93a81b": "0xd20b89571c8cb09515e254f5f0b834118baf0f9421e058e990395fa1956f2c24",
"2dd14c7c38aa7066c7a508aac299ebcde5165b07d5d9f2d94dfbfe41f0bc5f2e": "0x5827dab7a6dbc0163e127d94e5b911af4a23ca6cc9f9f00664675d8458a8ddfe",
"05934526b94a9fbe4c4ce0c3792213032f086ee4bf58f2168a7085361af9bdc1": "0xb1271821410c1fe6ee4c73d9532016ee3d28f36ab8f9bcc8a2f8e6953f420072",
"1ce9069708fb49e2f1b062fa4f1be0bb151475ca506939d6d8c14386d49f43dc": "0xe6cf726dcda4d6460d720c033c228d73223e2565cd73b53b01984a784438e844",
"35f1e0d9248599d276111821c0fd636b43eef18737c3bb61c7c5c47059787a32": "0xe8629a9e2406f70d1f2cb79440c925ca5ab6268ac42f0238abcf9c294f0c487c",
"8ac0c70fff57e9aefdf5edf44b51d62c2d433653cbb2cf5cc06bb115af04d221": "0x79616958f2f996b09e67d14b2174c3837cb4aead1eac12c113cbd4755c1b47c4",
"f8d030e4ef460b91ad23eabbbb27aec463e3c30ecc8d5c4b71e92f54a36ccdbd": "0x315181450a5b4e27b92d14f0ce92a8d2ee883382fcb0fb933c311d540ecb9a81",
"5bc91f13e412c07599167bae86f07543f076a638962b8d6017ec19dab4a82814": "0xba116f057c8c054298fc2b4db35daaad903dfc2126816a2d51cebe4946c5e757",
"4456d442a152fd1f972b18459263ef467d3c29fb9d667e30c463b086691fbc79": "0xdba646841ffd000fed92f1c0163698c69f3ccb74396497c98f5e4bef93d57ab2",
"385f64d993f7b77d8182ed5003d97c60aa3361f3cecfe711544d2d59165e9bdf": "0xb0526b6a2960ebacda89119c86e446017fa42b9e1b33dc6d7bf57c86cfa6e311",
"7507a4629ad0143550666bce2e7cae0b961a0f624f821feaab642fe1be632f5c": "0xc2d2b046ee149862c35d1a2254e0b86e49aa7fdfaa04b01326603ed01914a237",
"92eea8ba1b00078cdc2ef6f64f091f262e8c7d0576ee4677572f314ebfafa4c7": "0x4ae42d6bf465609d0fac2c88cbcf07a803db5b1cb6e462de27eca2f73f53266f",
"d00bd77d97dc5769de77f96d0e1a79cbf1364e14d0dbf046e221bce2e89710dd": "0x15dc9e730bbaffeb61dc3d981c5174c5dd418b1ad17938ffa075e2e42d52e685",
"eef52e09c878ad41f6a81803e3640fe04dceea727de894edd4ea117e2e332e66": "0xe2f86479f8a06477a24e8f327a40ad10762dad6cf183b8b11421bc85ac25bf98",
"5b1703d7eb9dc8662a61556a2ca2f9861747c3fc803e01ba5a8ce35cb50a13a1": "0x1ef38c56051de443c1ce78814325574b20cad961124fd93d62594eb318608843",
"944f2f908c5166e0732ea5b610599116cd8e1c41f47452697c1e84138b7184d6": "0x02abcd8ee685f964e7a61786d39730ab6930be3af71923573a11d9751b87b50a",
"0781209c28fda797616212b7f94d77af3a01f3e94a5d421760aef020cf2bcb51": "0x6d31b621402c45fe3a780117df9b2b9c0b9181e305d25ee96cc2f6c89b1b3def",
"c19405e4c8bdcbf2a66c37ae05a27d385c8309e9d648ed20dc6ee717e7d30e17": "0x24fd10e29290a05f9503950f781e8f63ce273adf29580cecdb48e797a5bce342",
"bd4dbcbfd90e6bc6c583e07ffcb5cb6d09a0c7b1221805211ace08c837859627": "0xc7fd1cd1f9c6d824626d786bf983b9128e275ec8a9ee7db8331090be89e7346e",
"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d": "0x0ea409db743138a6a35d067de468b1f43944f970267a9026de9794a86e3a0ac3",
"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43": "0x144ec4135c65af207b97b3d2dfea9972efc7d80cc13a960ae1d808a3307d90ca",
"49601625e1a342c1f90c3fe6a03ae0251991a1d76e480d2741524c29037be28a": "0xbe76c55678f43f07c22390dbf3b58666e45529543f7c5524b39c566fe2920c97",
"67649450b4ca4bfff97cbaf96d2fd9e40f6db148cb65999140154415e4378e14": "0x7d52011f90533c0f8be0d69fd4c2bcc64917d1956de78f2c0ff08661e9831659",
"19d75fde7fee50fe67753fdc825e583594eb2f51ae84e114a5246c4ab23aff4c": "0xbef4367a85f9ffa85411337f7eeb93ee79fd2f2ade37e8c5b84add0d2814b6fe",
"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a": "0x1db46472aa29f5a41dd4dc41867fdcbc1594f761e607293c40bdb66d7cd5278f",
"389d889017db82bf42141f23b61b8de938a4e2d156e36312175bebf797f493f1": "0x0946dcdffe349a04e1fe3078711b4b5e662bc74a0732c783ece1cf33992ad19f",
"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744": "0x168aa44fa92b27358beb17643834078b1320be6adf1b3bb0c7f018ac3591db1a",
"4e53c6ef1f2f9952facdcf64551edb6d2a550985484ccce6a0477cae4c1bca3e": "0xba58fd5f657f67aba9b209187833d917da2984445e1e3b821571adbb11f89765",
"765d2ba906dbc32ca17cc11f5310a89e9ee1f6420508c63861f2f8ba4ee34bb2": "0x41874d6f43bb98b7111a65ce24a070265927d643734f5dd17db5d180643dbc1f",
"58f4ee3a0fc4de834a2e96274a696d0f3d8ec45fc76131a6a49fcd18d3ca9812": "0x73cbfcf7490fb050ec1f29fe107bca2831ff0c7c5f3961e067a1f87013ca23bb",
"972776d57490d31c32279c16054e5c01160bd9a2e6af8b58780c82052b053549": "0xd9cd763d08d880137479acfaf219b4c8592c8f288219737c94b853a973fad2d7",
"6b1381ce7e874dc5410b197ac8348162c0dd6c0d4c9cd6322672d6c2b1d58293": "0xb67ff2d04061d42600594a7b525463e00bcb6d740581fba5fe919a8fad53aa43",
"5967c196ca33171a0b2d140ddc6334b998dd71c2ddd85ba7920c35fd6ed20fe9": "0x98f8556f0c3af32684144ac87a98d1dbfe3490c044404a861f746b3cc4599ca2",
"2356af9529a1064d41e32d617e2ce1dca5733afa901daba9e2b68dee5d53ecf9": "0x1645fa789b430edbac3021625db360ae4ef37963d58e104b1149998c2ba1c4db",
"735f591e4fed988cd38df74d8fcedecf2fe8d9111664e0fd500db9aa78b316b1": "0x7dc63947c4204ae9b73bd6a4a225f21ac661fe828513950fadd9e7301446ee89",
"d69731a2e74ac1ce884fc3890f7ee324b6deb66147055249568869ed700882e4": "0xa583300e45819172cd1e189bf91c3c8b459125c0c76f2ec109a1bc08e479f60a",
"12848738d5db3aef52f51d78d98fc8b8b8450ffb19fb3aeeb67d38f8c147ff63": "0x5d0c24e5927d70522f1af63f23bdbe632264fa83ea4f8c7743e71d24d24dd4e3",
"d64da7f265f00c456c2ebadf4593848129b9c86b45523e441d2f5ceb838a89cf": "0x0afb0ba9a87527239880aa77d260e8ad84c2c6e2b8393e070e1bdf35f1b84dbb",
"baa284eaf23edf975b371ba2818772f93dbae72836bbdea28b07d40f3cf8b485": "0xde213ecfd2d9b72900a63c8059aa52f2f603dfa927c9746b86d0cad871392878",
"c572690504b42b57a3f7aed6bd4aae08cbeeebdadcf130646a692fe73ec1e009": "0x481568c83f3976fe559950cec24cdffc88bfca468c47617923fd956eb2e4957f",
"78d185a741d07edb3412b09008b7c5cfb9bbbd7d568bf00ba737b456ba171501": "0x27214b7472029ca3cbc758c158837bd7cbdcd23af81c988e4db3168efb6fd7f7",
"236b30dd09a9c00dfeec156c7b1efd646c0f01825a1758e3e4a0679e3bdff179": "0x7280d2f6d66035ba01f9ea3396554390d9b6a5396422d7233826d258a92010cf",
"46b8cc9347f04391764a0361e0b17c3ba394b001e7c304f7650f6376e37c321d": "0xd70758a65410dd05844f1f0b71e28e0531c4e4e254478544c025388f43a1b5d7",
"5867f5683c757393a0670ef0f701490950fe93fdb006d181c8265a831ac0c5c6": "0x75808d1ab7d796cd470e81e656d33fc956446b72d915406a2823ba060df11a5a",
"b216f7ca372b318985903866e0b6dc44a14564828c49f36d0d363805aa76335c": "0xa87a8dc56447a9cc0d6eed383f18de9716af8d00b2d4a61c36e790ca6e58e66a",
"956740a4e169e90bb141abfe93652ae3434693bc7ca43cbcea6471408f19ab90": "0x5f578eb69f3dc953ebd8b6b4fb93c3302085a8c38fe062383440f5d3329b369c",
"b82449fd728133488d2d41131cffe763f9c1693b73c544d9ef6aaa371060dd25": "0x9ff35aa7e87abecc12c1da52521d48d28e444ff0696454aef7ea31cc6205e95d",
"d57d90cd8554ea0cf8268de30d5ad67fed9a8f11cce5132a49eb687aed832ea6": "0xe545620abcfcab122fb0ab90678ac599aebb63ecbaf94798da49869bc66ac6af",
"88e2d5cbd2474766abffb2a67a58755a2cc19beb3b309e1ded1e357253aa3623": "0xe3f1b484dca618f06b7962330267d9d4ceee0aa0276fb4dae9d94a7ee2586ca5",
"e799f456b358a2534aa1b45141d454ac04b444ed23b1440b778549bb758f2b5c": "0x62289212a6d44ae23d6553c269a7f6d6b9cfbe0d3d8ebb8c8c5c4bd49fd8a41d",
"67a6f93030420c1c9e3fe37c1ab6b77966af82f995944a9fefce357a22854a80": "0x0eeaccf721d53ee14bfcc337f00d4f58195f15455d2f9e7fae3ea3e929203994",
"9695e2b96ea7b3859da9ed25b7a46a920a776e2fdae19a7bcfdf2b219230452d": "0x1486f830bcb8f098efd987ff291c0f86240bd0f2a77f379078f04325711de506",
"5de33a9112c2b700b8d30b8a3402c103578ccfa2765696471cc672bd5cf6ac52": "0x607890f56b8c3aab0e56f6fd52d4fde892d19462e4f80a51cb5d47191eae84b5",
"701223c92a39dbab065c4a7997fef9c41c8de26ca2bf1f808ce0a4ea1cfd421f": "0x0c30c67d1758b9440135fbffe8457f0b47243790300b2e71c52c8e51626cee84",
"c719eb7bab9b2bc060167f1d1680eb34a29c490919072513b545b9785b73ee90": "0xb4e5da748598a4bd9e165f7acac70d05c79be86896b95a9c444b4e0840055ba9",
"23199c2bcb1303f667e733b9934db9eca5991e765b45f5ed18bc4b231415f2fe": "0xe40aa9805db55e957d7a330192b0b6dccd07da10a0584aa9c29c100906a424fc",
"05380f8817eb1316c0b35ac19c3caa92c9aa9ea6be1555986c46dce97fed6afd": "0x6dd1245c596b96e7610ebe0a3b2871a1b9e56416d2ba6ef46c725dd6a9d354d8",
"6034b1f68b9363dff2cf9d53b1a88fb4d0929c65f34d532db53738853efc00ad": "0x389321e21c0fbfbc87b6f028c574edbcb3bf3c5add55d70197845f6db7eb8ba8",
"b98e7ae8af2d298d2651eb21ab5b8b5738212e13efb43bd0dfbce7a74ba4b5d0": "0xbc7c8ed97abb4cd01a3ae45d00ec6705ae5545b48247a6f7137e7b1f07c03f2c",
"10946973bfcc936b423d52ee2c5a538d96427626fe6d1a7dae14b1c401d1e794": "0x91d21d68bbdf8cd3b735ce1589a6d1ec2c014a7b187461e66377856a7709ab0a",
"70dddcb074263ce201ea9a1be5b3537e59ed5b9060d309e12d61762cfe59fb7e": "0xb3f046e69beb0efce10e537ad23290031ccef9deda7965d0a0f2cf65f97b71dc",
"6f9cd89ef1b7fd39f667101a91ad578b6c6ace4579d5f7f285a4b06aa4504be6": "0xd5d8428261bd671644a8a623557ddf3c87ead971bc6c6778df7887c854bf82aa",
"07a8f31e8910c3b52f338d2aca6f4dc2404753ebafcdf53290ef4993911a71f8": "0x94a6126dfa234583c547e826751e43a6d3e2637fce75076c1ba40695efffebf1",
"e13b1c1ffb32f34e1be9545583f01ef385fde7f42ee66049d30570dc866b77ca": "0x7f6cdd0117e8f2e5f18403acc278394237f4b118e791b025f8edb3bfa2276d62",
"8879170230c9603342f3837cf9a8e76c61791198fb1271bb2552c9af7b33c933": "0x12e316df7a091f9b8c576ebf64f828a3d080a23223d596d522440edd6df36a9a",
"c9e9d228f565c226dfb8ed5f5c9c4f57ab32b7ade7226c3239ff20911a9c3a7b": "0xc3f8fd27a445af598790fff749af538206a084c9512e86e10fdf50b2f6833820",
"19e09bb805456ada3979a7d1cbb4b6d63babc3a0f8e8a9509f68afa5c4c11cd5": "0x8cf5ac81bc19d99b5a073c193907b6dd891236a065a907894f96b9aa1a9ccdc7",
"45b05d03edb6081e7ae536b94b450a42f43e6342791c560a481030b41f9b945d": "0x87e6124bff3732ad6aa5f2839e314c4d22e121dc4827079908bde78f6c0b37f4",
"c8acad81438490d4ebcac23b3e93f31cdbcb893fcba746ea1c66b89684faae2f": "0xd25c3cbd10f68614cad75bd4663c734ae830487f449e44c476fce0e5d733393d",
"d3178156b7c0f6ce10d6da7d347952a672467b51708baaf1a57ffe1fb005824a": "0x8b6c3644e786236206264929b841116e59b75863c6a9ee8dbf06cca6454aa5e5",
"70ab610e3ed6642875f4a259dc29175452733316fee440f23fed99154d1d84f7": "0x348121e8fb0d35fe0bd970ffd1d0c770e2a6f676f46538091fc5d81235cb06ca",
"37505261e557e251290b8c8899453064e8d760ed5c65a779726f2490980da74c": "0x3c85d4072e6f5aa35bb9c359c88aad41c962a53a7128b2586bab130d8a034592",
"3b4656b0d92f0e995024c3dacfc28c47d11af83b374a56c26e514e9a7e46a240": "0x26344c550151d60c0beadf5f3c2fda4db12e70b4705eb51a421b49d3468abcc6",
"93da3352f9f1d105fdfe4971cfa80e9dd777bfc5d0f683ebb6e1294b92137bb7": "0xb2d9ac5eed302e8b5c1b1a39d89f05606cfe220391ffd41203e53ca0b2703f89",
"6d0af467543fc7daedf7abed96423877560c8d03725f3e5c87516774982a679c": "0xe273328d614db3aec926df6ee7f641bdc752ad55bd5af55f866cc1886b58bf83",
"8376cfd7ca8bcdf372ced05307b24dced1f15b1afafdeff715664598f15a3dd2": "0x0223b5961d18f2931a4612eaeb8f92516acd4a1062dcc4bdc7f540425bf549f6",
"ee70804471fe22d029ac2d2b00ea18bbf4fb062958d425e5830fd25bed430345": "0xf49d27eca820e75bf4bbb0b403c87a9c5ad8af728ea7ff36b0f923f8430607f8",
"fa17ceaf30d19ba51112fdcc750cc83454776f47fb0112e4af07f15f4bb1ebc0": "0xe903bfc8a57f66d18463b6fde29afa5a0319cb5f80e4a5cd4998611a8506a08f",
"0b1e3297e69f162877b577b0d6a47a0d63b2392bc8499e6540da4187a63e28f8": "0xec29451f73f5a09cf05b461d717858f763152111f7031bbb158916bb26462d43",
"d45392f678a1287b8412ed2aaa326def204a5c234df7cb5552d756c332283d81": "0xcb26fa836cb0c55a50e8946abe3e25d5f7fa74800fc9f6f8041769307f640884",
"67aed5a24fdad045475e7195c98a98aea119c763f272d4523f5bac93a4f33c2b": "0x63e31fbd85d67c722deea6dda5f7dc1764fcaa27cb34e7c0cc89d5e86c9d6e53",
"5c2416ad4b5fe25c38ea2078927d59dad6a1d4110480c0c96c9b4421744f7507": "0x3395df92c2c363d85a45c8044e35bb60e9c7afa48caf94e829aa41e93fb60681",
"1888f463c27997174f97d2a36af29bf4648b61a5f69e67c45505a80f826bb785": "0xf4f3fb45757e9af82c850974f9531777a378f5a8bccd45b2e83b1bbd2f0b9949",
"327ae981719058e6fb44e132fb4adbf1bd5978b43db0661bfdaefd9bea0c82dc": "0x9bde4683d80e5262283355d572b2b2601eb50a84c9b8b9df732c36c14f633765",
"3607bf4d7b78666bd3736c7aacaf2fd2bc56caa8667d3224971ebe3c0623292a": "0x769bf65cd7d01c07648a808d6254b3d73a769b7ba1e96dc9b05dcd58f67be08c",
"2394ce86c7d68050ce52797923860f6c1656a73fb11bd10dacb3f9c719acdd1d": "0xfeac66a8f3dcaa723609b06cb6f9eaa20bf92c80d74964c74b9c33c98244b328",
"2077043ee3b67b9a70949c8396c110f6cf43de8e6d9e6efdcbd557a152cf2c6e": "0x6158dae7ddc9178fe4d4663769f952a6253cb5803f8bca6cd5c24791932da82d",
"e1d3115c6e7ac649faca875b3102f1000ab5e06b03f6903e0d699f0f5315ba86": "0xc13e1eb4edfb4b7e5d5687f3baa0b106fbdb1c86c5ad46072b6e09cdbabe279b",
"e65ff435be42630439c96396653a342829e877e2aafaeaf1a10d0ee5fd2cf3f2": "0x0ff485223dc1d6b0463ce9ee33287642bd42dc6a2048a7cad7d4bbcadd8d9f51",
"432a52bde005a010dc32c47733e4595fea0ea04df3b5aaa1c45153a527d646f0": "0x81ac67ae2314b786980f3465eaba7a7277e0719de13e987b2f1367eadca0328d",
"a1a6465f4c2ebf244c31d80bc95c27345a3424e428c2def33eced9e90d3f701b": "0x6cf621863304d486b8c623cca492ca95cfe0d641abd288139a0495d63129f9cc",
"c81114e16ec3cbcdf20197ac974aed5a254b941773971260ce09e7caebd6af46": "0xe79a652ca6e6c242a2865bf11d6b1e3ae2464b2740fcb6b627278a4565613a07",
"d052e6f54fe29355d6a3c06592fdefe49fae7840df6d8655bf6d6bfb789b56e4": "0xe8399d70a6d0789c961a3fb8bca2a7aa8820ac42c9f3fc9f246d7d5f513fb912",
"63f341689d98a12ef60a5cff1d7f85c70a9e17bf1575f0e7c0b2512d48b1c8b3": "0xb419c2b26f4cec0da24a719c33fb5a503613a5a1f080fb1b29c1d00a2d477f3f",
"1021a42d623ab4fe0bf8c47fd21cc10636e39e07f91e9b2478551e137d512aaa": "0xd130d51ee53be539e71733e41899cb9d70dfdc3b53c5934dd200ed9a86767b35",
"d37e4513ebe235fff81e453d400debaf9a49a5df2b7faa11b3831d35d7e72cb7": "0xbf45311362a393ab0331658ffeeb51b85fd32629643152199980f1a83a019246",
"95609d32c98a467a72ac419f2e64bb2b8dbd5b00b74f3a0fd72f42343af1743d": "0x5a2bf6e3ae4760a934ad5598459dbb398c887839614c0a596935139baaa3869e",
"9095653620547ece988ec51486dc7a6eb2efddbce8ea5bedbd53bf00cca84cf6": "0x8bd322a29436b44cb3cfd5268266435a7b81ddd5f46c6f651943ff57c694aae9",
"ff4c53361e36a9b837433c87d290c229e1f01aec5ef98d9f3f70953a20a629ce": "0x0190cb92736e9d7d9f4ed17b92f15473607dfeb93b93409504cf19ae6d4250db",
"9d23a47f843f5c9284832ae6e76e4aa067dc6072a58f151d39a65a4cc792ef9f": "0x4063d4b34fa78c353fe2ac708d16d95b20ad58cb89781e55665e257d7b2d0425",
"9aa471dccea36b90703325225ac76189baf7e0cc286b8843de1de4f31f9caa7d": "0x0a8c3df365d92aa5b947352371c02a555ea300359ffd37fcafcaa3c529cbab7c",
"b7e3904c08ddd9c0c10c6d207d390fd19e87eb6aab96304f571ed94caebdefa0": "0x7ced49286dcbc4711535d7bc10a853527854c55cd5973445b1f1c5aa81b6f49e",
"70cd05521e3bdeaee2cadc1360f0d95397f03275f273199be35a029114f53a3b": "0x38739a5eed6d192c88ad72cdda0ff1d4420adf4dc7ad78ed254eecece1f55992",
"15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864": "0x9a1511ffe5a1eff9d148e7ff6d440eaec96325632e67f041976ff2fd9d1b8fc9",
"2a01deaec9e51a579277b34b122399984d0bbf57e2458a7e42fecd2829867a0d": "0xa6ab98ad22e85c0b1673c3b7fe55fa454cf1d23fd8c4cf9ac85d97070872315a",
"dcef50dd0a4cd2dcc17e45df1676dcb336a11a61c69df7a0299b0150c672d25c": "0x15da230ea0b9de48c24067720adbe77d511be606659668b9252c72fd4f12896a",
"3112b03a41c910ed446852aacf67118cb1bec67b2cd0b9a214c58cc0eaa2ecca": "0xea6c34fc172fe57491e3bc613e13f7a5232704977d0efaa8c38fa3eafb53a190",
"8bf649e08e5a86129c57990556c8eec30e296069b524f4639549282bc5c07bb4": "0x757936648c89c45ae5eec993531ee5f725362070eec7394d328fcda4e5501f25",
"fa2d39b681f3cef5fa87432a8dbd05113917fffb1b6829a37395c88396522a4e": "0x42dc6d003a90a5e172673236488918908b0704f8da67ed090f96a85f6ddb0376",
"8419416ba640c8bbbcf2d464561ed7dd860db1e38e51cec9baf1e34c4be839ae": "0x6678e6bc78d00aafa1135f9ec4813d9070a35bcd945dfdb447e784df2fd7b3e9",
"bd640cddb72063e2ede34c6a0baf6699759b9837fcb06aa0e2fbcecb9b65fde7": "0xaec019399f0c843477d0fb85ff549595cf86a1181739a381add99d4dba298664",
"06d9fa501fd2bef47265361ca0eaf6e0a97c3b226cea5ab760240f70818581ad": "0x1d73b0ea969a4a5e3016f18b98fe477dc8c1aea8c3d1bd6353d7bdeb40f0b11b",
"b00b60f88b03a6a625a8d1c048c3f66653edf217439983d037e7222c4e612819": "0x822ecc552fc661aeb063317c23d19d702eae783ca3a7348efee141af5f777a05",
"83a6de4ec10bce1c0515d1aac082fd193f268f0c3b62da0c8ed1286319272415": "0xacc9bb2c3d151d04d6c8ef6d793a5a22ddce6a4e030dbccf8eb4df79ee853356",
"fd05a384ba19863cbdfc6575bed584f041ef50554bab3ab482eabe4ea58d9f81": "0x82744f353e7b2987fc9b922a34c1ce5233ce47fb73c2805b329f4bdb47f2ca4f",
"feff234600320f4d6bb5a01d02570a9725c1e424977f2b823f7231e6857bdae8": "0xe077710b5ca75178aeaa20a3190b61c7f366197222fa0b999bbda58ee92d88c4",
"3d253019d38099c0fe918291bd08c9b887f4306a44d7d472c8031529141f275a": "0x3af9e87e527860d7554cc3f3d2f068c341d554d1c321280d608deaf10e620a05",
"26d53c97247ec18d576bbd23f88078acc22b42168dcb1d29a76501a956e26bad": "0xa43c7f01106bc158770caa061354c96dc01f01a8549f6167988c9315b22fa0c4",
"9f383d612ac09c7e6ffda24deca1502fce72e0ba58ff473fea411d9727401cc1": "0xb21f8c8b67a213288b06d9f7b8d637dee468e0819a87b4109d42abe97bb0d7c4",
"ca3eed9b267293f6595901c734c7525ce8ef49adafe8284606ceb307afa2ca5b": "0xc4b6e8fed5fdf6732aea2dbb99689eafada1beb6b8e6ad721483f7da1d9bed3c",
"2f7c4f738d498585065a4b87b637069ec99474597da7f0ca349ba8ac3ba9cac5": "0x03e5eab4e05ecfa1586864e99d0cf7ca041d538f3d060746186ca3e570918014",
"26852e2d0696e25e6adaad2d7ca3a1f2f15aab68d317ace14d41b4128a7e780f": "0xa3431a3f6a43dad744494ab9c05e848875044aa280bd6116ac60d9a5ac58ca75",
"703e36203020ae6761e6298975764e266fb869210db9b35dd4e4225fa68217d0": "0xb0a059f4bc5b92f2e9a8ad97d406d1d14455a7cc9dac58fff9fb475ce3e675df",
"6b701e292e0836d18a5904a08fe94534f9ab5c3d4ff37dc02c74dd0f4901944d": "0xc396eb2b9c1914c6dbfa66b7188ab5ba36688787e1ae8bf96a2c4ade9732cbb5",
"eff690a187797aa225723345d4612abec0bf0cec1ae62347c0e7b1905d730879": "0x82bf47e2ac2597bba0f0c1775ff81cdff2bfe1d9af2a65712013cc2d614c6f94",
"6c75e52531ec5fd3ef253f6062956a8508a2f03fa0a209fb7fbc51efd9d35f88": "0x30886170ff4d71398a5818940b0c2abd54b13c536c9558ed197c2f44ba2cbc35",
"831624f51c7bd4499fe5e0f16dfa2fd22584ae4bdc496bbbbe9ba831b2d9bce9": "0xd1213505a03e0c4ddc08bfc3875b03c472856f5e481b4fbcd1a18ba59d3cac07",
"3fa4252848f9f0a1480be62745a4629d9eb1322aebab8a791e344b3b9c1adcf5": "0x3f5facfd23427362a17d5e0dca85c94098fb49bded49a2555058a352bb516a56",
"5c6c0d2386e3352356c3ab84434fafb5ea067ac2678a38a338c4a69ddc4bdb0c": "0x3ece052ac5c282aab98a3c43ff7d02147a8b506c3f22711f99654537aea47131",
"6e3f3fa8253588df9326580180233eb791e03b443a3ba7a1d892e73874e19a54": "0xa17792daa3e88d2825ceb249ec92c455d5f01d8fc8109779a6c79bb83846370c"
}

View File

@ -0,0 +1,257 @@
{
"f22b3440dc6ff5cc08ef498d434f7e72563bd49d013a8ae8c26199d871ded7fc": "0xf5996b8974235697a4377ee72f0d72b33af0a3d0d7f8bf01371de8f04aefb019",
"30029479598797290e3638a1712c29bde2367d0eca794f778b25b5a472f192de": "0x468a31a8fcf6a6ce76f4ef5d77ad4722f224bb3614bb995bc5448b4ed4dd08cb",
"f9917668f24038a383e51c0b019f5d9645d6785c6bf9a0d48483edf82ba5caec": "0x09f9c241a955772f7c501c19e2bea11f494af923fb03f670a02b58fd9d1e3fa7",
"69b9ca2e7159fe570844c22bac849c490e0ddfd0349626c19fd7d65509e192a3": "0xbe758ea28f778b535afdd1ec7cc0151fdc762299369d067e57d2926fd6a0c411",
"bc00d79f11e851e9763b0951338474dd423f40f51ef6a24d2b0806f341382b0c": "0xf262babe3d6634319a17a039699cffd376d471825f130473c27b8a2ed01b7b70",
"aa67a6594d0e1578faa3bba80bec5b31e461b945e4fbab59eeab38ece09335fb": "0xe17e0790d13bdd6bbb8d4c6fe1aa925f575de1467137ff67cc8bb21be4f82450",
"881768fdbacd7a32ddaf4e67b20cb391380a88f795d8a373127c6cc66997f0c7": "0x89da2ac3a968c67196b4c99436af867de11d547a4c44a4d44c1cfd2eb4572942",
"abb1a3382ab1c96282e4ee8c847acc0efdb35f0564924b35f3246e8f401b2a3d": "0xcd50853933585de05a7ca09096291157b82fdad672150c507ee79e16ee40fc95",
"2d9315a88f3019f8efa88dfe9c0f0843712da0bac814461e27733f6b83eb51b3": "0xe5c6c7706d30ed438f17f1c9fdd220132748f42fe0737c2415b6182e852c71f5",
"be2c316abe4133b60602db548a0cc9045c533bedc7759df98cf3a9274c5c6f93": "0xb1de255d4f99b67a2287774ebf711f5dccf2be8b72e19aab3db58e9988c6a1d5",
"6cd5c99c6d86df928b0562f26617ddef400818f8907391f3087965e6b786b0b3": "0x404826a97e4f1508f3bc8ad72e21857b7be29ee8e3343aafc4cfa6108b5a9701",
"ba1a0a0c4bcfc4715e3bcd5e452346a4cfa6234a3decf51f123aeccf89bbf9c2": "0x9330dcc0a7e8a8b7797acc73f241a0879c3009bb546b5772acd357605a287ac8",
"0d10b9ccdc9af1d65cd4bafabf4e34db01c0ce83abba190230eaf26d7592cd21": "0xf401c783b5f1a2d90f7f9ce633faceb566d02ae24cd63a819b29cdca88bc04a5",
"0c3826f245b9a00d75b115c5209bd9d98902676b924d92537cb4d3d1b5849822": "0x982ee8aa786fbdba580cb1939c228f1e48ac7f0ea3b85f06e13cb1dd2286d559",
"6058b804017a18cfcd598b290519a03331fd0b28aa1f1595f3b9dae7ee6a418f": "0x78c4ac68dab994dbf7b50d53adb3abb3e9bb9fbfbcd3059fe173a44d9ac7807d",
"27e2caf78dffd46696e9d7bc6583d1a1add9a3ed4d5aaa9b90fddf049ca492ba": "0x883b2a2cd126101388a5cf02a9eae3151d950a49139234849b97615cbce0d006",
"4f7d1135da944054f61277c0dbc056572f84226619c0fb3ed741262eec90a57b": "0xf01d98d9649b2705467a7856469285adf089ce25e7a917de06cea252ceb64b6e",
"f3295ef1efc8cb94518faade282e294e718dc65a03aa3b7912b894e61e0a6634": "0x1e3fd8883572b7f36ebd2fbc36042e08beddd2dee12b15bbdb9b2c6cf9dfbec4",
"2249a93e67085c7878bf42e26888bc817788d64654f42c9a3d6a0cb3fe66bfc4": "0x01ecdb7c1c20928bd297b7896ac1786f09e61580f6096bc152c054b1a18cbaa7",
"be91a2abdead0f4f22f0449fc58f243d514b6ff3f08b7e61758a5481716f0d93": "0x7e0c110e89ceeda0f5882cfd36a97cca7571b2730656828eb6e6e56bd34a83e2",
"be2dbc97659e92bf07462aeda414195246515e6b17abd6997f0ab2297cb03e1d": "0x7dee903b1e3c3f0d5d8be2adf5ca8fbff56f1b21868277382483d4ea26b42d16",
"0d66aae904c7d457ed92c5d933e7d25ecb2b1e285b1be6a4e8520e38bc296161": "0x636a825cf41bcd062ef887839e426bf5cd318a89274267f3a3187c5eaa82c440",
"2fbbfed77003411f75ccb824c8996854984565867bfc8263a36f2f86795ecded": "0x3c08014bac62cfa1a2ff1ea9e33733c76dfdf88dd6b521a2df74dafb4e40e42b",
"bfaf7739cb6fe3e1c57a0ac08e1d931e9e6062d476fa57804e165ab572b5b621": "0xf2c342e56c78118da880c82a3e6a52d652caa6022c6d43f900aa14514b542fd4",
"01f64be1849d432ddf6164c6bcf4ec8635db12aaa76132b2291561ffd6a29993": "0x4650ba8537ab185ecd13a7fac197512c0f3fc2a36cdfeda2fe1280f25559d994",
"672fbb7d9ec665cfbe8c2ffa643ba321a047b7a72d7b6d7c3d8fb120fc40954b": "0x8562a8f8a15e2a91df46df19e797c8cf9effa3ffcfa2c3c351c18af07292610e",
"cd69843b4eb5c5207dafbe82e2b08fb64107a56d2fa026cf260c6d5b8ae67a40": "0xd9d18665bdbbe7c02d4e082eb91113892e5a31bea3d2a69253008100f2763f71",
"a29b53fbc56604ef1f2b65e89e48b0f09bb77b3fb890f4c70ee8cbd68a12a94b": "0x8983c5e9d7dc270307d0367221da6c6939b3caab8194c007ff6e5a9accf83096",
"db64d42241ffd0c16169e759ddce05cd4d15607197ebc0f5b8402ab813c7439d": "0xb1c7e1d88e18aa389217ae2c061f7ba1273df0d7c937517da9c6d6ee381761c1",
"40f63777ba678d5c2c7c69c4ad9daeb867d274bc785c5ada2c84b8613eeb5e14": "0x918ea1552f34c6e9fae85973246537931e9df31a805d66d04023878525ad55d1",
"0e9ec6a3f2fba0a3df73db71c84d736b8fc1970577639c9456a2fee0c8f66d93": "0xda5bec22bd593cccf402d59c0525e2117acd27bc800bf518c2cc18d8745cd415",
"c15af424d245edeee0ec072dc94c639443b2ae4bb0ac1204e3ca4802f311960d": "0x31b864a95f52d745e8a53b290083ba71a36a5e81991467ddb2f9120f8ae4db97",
"1e761bb4e6b1e4d7899b618d389516ddbdfbdb858018b71c45cb6ade57c96f62": "0x4d65ba697e97200eaeedff8961154fac4556a87296ba002ea24bc779b0e18aff",
"99137a18354efa7fb6840889d059fdb04c46a6ce21be97ab60d9ad93e91ac758": "0xafc10258fcbdccca028e7461b7ac87cebd2326954282e052b6a7dee979e6d896",
"73dc009953c83c944690037ea477df627657f45c14f16ad3a61089c5a3f9f4f2": "0x237c8962ea74c9224a1832fbcea89d96f8f1672b3944a8d587d24131321f16b5",
"e4c07b0c5f658b740dfebc0502b1374037abbccb44cb5a5d6002ddaeddf57048": "0xa0ed1529d29585e65a1132fb169da986d8a71445031e9897921847300be57a71",
"39786301f95a366bcb8538fa0d2a449ac904be84c7069b9181cbf647799d657b": "0x908a46b442bd62de6628380e69ba92de2825d7170350ecb2a9b7b5715a5bd86d",
"4e10201a9ad79892f1b4e9a468908f061f330272c7987ddc6506a254f77becd7": "0x0fc24748439a19519187376c4abd2fe5fb563b6e1b612570a6758318cf18ccc2",
"d5b3be475e19733cedadd74fc619372b553745eab050b935af6a331d29354941": "0x423cc45cbf8048d1a30f6824b25140e7bda204b07c74dc93836dea3bbfc086c8",
"341d9502b1e6bc445036fd76f57bc824c09254a754289878b52a40eb067d2a0b": "0xca56e357358a2891854c29bce826d95f817967cdec1a97b0cb548b0dcb56bea2",
"80e17c0e489956493ed84e4af202031c38cb7d310c5f154134cd0ff39ac6101b": "0x8acec888b550532f059cde0dae150f09ebbc02b8916b4160ba9c53893d2139e4",
"026d1f1cf9f1c0ee92eb55696d3bd2393075b611c4f468ae5b967175edc4c25c": "0xbc452891579e57e61709a49696502645c611b4b6a6a7718bd9c3f10c91b5bbcb",
"fe650f0367d4a7ef9815a593ea15d36593f0643aaaf0149bb04be67ab851decd": "0x7867d6cb2c6b54dd957c3589a49b406b31174aaf85456a0fe43f2aa8be2e172f",
"587a8fcb91ffb1e7325ca5ea83633271467a7d277a442ff3cb38e981b1eacb41": "0x0cba817db8b2b98cbe4cee64a85f5978ffc948a4b57c90fb159775c59ea07082",
"6de025a4cf28124f8ea6cb8085f860096dbc36d9c40002e221fc449337e065b2": "0xc264405a86f3708dd0f350cf7fa3da3186ead0970859d439ff54dd535e1aa88a",
"0e60a64dcbd660e87a08eb2cc95e8d84d1126fd7354d377b3fc5730352f4b8b2": "0x1b4c1e31a7909a612d744830cae90de767e98e8578797a6241b25426b2e5f813",
"1bd1c59cd425aebf8a931c1b2a902b9a11e7d18dc68021e4a35a5cf24220a6c7": "0x6b26ca8f3d79978ac366b3e4f683a1dc41f8e94ca3455fe900eeaf89547e757b",
"b5b88d45d3053431b7c49031e7a4c3de19bf2159dc7502e69d582ffe183d6073": "0x2a10d56a922e2f9ce033de90f220e91838c6785108d6746bc486cc15e656bcef",
"2657bb1e7a13f1a05887a627c0f191c839aac10924a3396c03abe7d30fbff27a": "0xfb5506c107ff4fef5cb92a6155287d3a471033a917faeedd0e587d9aa7ef84bc",
"095e126b86f4f416a21da0c44b997a379e8647514a1b78204ca0a6267801d00f": "0x399775dc115c12493a87f00639f75b81fe5d805d7c2755a414f987e22c82685b",
"54f2d4037e28936b53732671ecdc73678257fb55674d82b3a4a15b70bf0a68dc": "0xe9cfa1bd48561aa92989e0a9f4ac77a79b13e52cd069a6357e7cec402e6e55b9",
"14622e51d74bc9eae2b1fb640903c986b5d64d169727710fd90cc9e4a425a417": "0xb8ac8a03187d6389e5e7f6ceea521907a39c36244288399a1b56a8a858069d06",
"4d0c5744a741196b5c2ff74b8f3bde242407f2ffb40104347dcff3421eaea07f": "0x96f12b9a2fd0f3b7e2f2e2b83e94dd418578faff9faa55769f8be8a29f5d0c03",
"0cf3cc70e1449323c5b2c359d1359fe7ac68109e9e927e090ecd71611493a281": "0xfd131276f29f0c06cb6a10b722c51205f5e747d0fbcdeaf076e83884b5c6bfc1",
"96f29ee40cd494a9f1f154ebd8300e93568b18a01a19a6c3890895718a57e984": "0xd35141db9b2abcd6d70ca85971cb6f521e3ea11201ab235d890fb4e76145e9eb",
"6a2f031ec9d59f03c1149c9ef75ac9ae419a394e40e318aa6b913b86b47a2f21": "0x6f9c50a90ac8cd4cd8c8d85f6087bdd1d9672f2f1391f41becef57a0ed7d08a0",
"1a957a00d2c9efce38515c6c939f35ce0ee46ae0a0522be1569d4df06beb1ced": "0x23d6bb815ba6fd8a253f4b6e131edbcb4806fccfd7a56504838df15fc7d787b6",
"bf517e0f7ccfc307f0b2fa93b99a737641933989af6af769c928725989c21e66": "0xef5ab3697891cc165c6cd20b196cac869a94b77160094682e9733db86e70bcc4",
"6ff709bf1f0fdb46d991ae6839163df1e050d143429d737fc650b6b214347808": "0x79b965734280ae5b01f2d6cdfbf2767edab6e252b4e1a18e168dd12e95f57031",
"b5d2cee0b86bb0571db898ae7b9f288c5e272fa486d41a5bf375b52a0249d94c": "0xd34b9b1b585331425215fd4171c624d924cc39fbb36eae1bc9603ce9fc3ca179",
"b5622d32f36dc820af288aab779133ef1205d3123bbe256603849b820de48b87": "0x62ac8e19e857385acbefa20f03754701ee3e6637faf6fb2bcc89d65fb30d1751",
"c1b12769f6633798d45adfd62bfc70114839232e2949b01fb3d3f927d2606154": "0xbdba3b8dec7df05b2bac446c2e2ee17418380b378cdff6855aa2b954234a3338",
"796d24444ff50728b58e94b1f53dc3a406b2f1ba9d0d0b91d4406c37491a6feb": "0x7a01f49e21a818e6ed88003f1556a631154df4cedcc0d20b5f658d159c45d811",
"c8dc7dbfae6aa1a1f0feccefb1fb82fc38ba18d1d0d62380272d53a879c1df87": "0x6b239316abeef5bea30ae7ebb29eaaf369d579320d38df4600f2983d8099cf75",
"4dcb3accbf0a5f0d33a0a38968ce520d6009f28b8da573ccab99165fb8d8727f": "0xf7e3e52a9776b1f493733bea865c198ba132f72397c533f8e73961aa4081d7c8",
"20a938f54b68f1f2ef18ea0328f6dd0747f8ea11486d22b021e83a900be89776": "0x5d62dec8e12acd5b4f9d5f9efb078e6938a6f589d71e3d9f97e11166c6e6ffe5",
"ca80ba6dc32e08d06f1aa886011eed1d77c77be9eb761cc10d72b7d0a2fd57a6": "0x8deeebad0a8fb86d97e6ad396cc84639da5a52ae4bbc91c78eb7abbf3e641ed6",
"067b34e3df6d51b47e0427bb712f7b937ca8f8cf65cf4c33f9e6014e0ddb3f8b": "0x842cae287035c8ad3f52d8c60026258d20c8b0745b0ff281e1c39b41d54bdff7",
"5b026317d56ec664f2d18ae4a7526f19c29134916f1d2c3af656e63c72e8a748": "0x2729ec0aae7725841ebacb17d9e15fdaa9a2e9bf4dfc9d7f72505ca9eb75a25b",
"8fece987ff24a0a7ec4d87c29d337e7b54989663536b73883ae8387589cfea2d": "0x60700d5c1d06b7c9883e89e814d00bc84a9c01c1d3c58ef280aa1790032c73fe",
"12c80cd16c123809ed8e38c4acd024ba6320db5909196d31c359aeb19787a359": "0xa58f8cb2568ed9551a5366a6fb58521de293467573ba87481b17cfea4517a2a8",
"05a934cb3bbadef93b525978ab5bd3d5ce3b8fc6717b9ea182a688c5d8ee8e02": "0x0ab2e2284368154154da1fa9547beb807c685764cc321296ee62e65bbe3401b4",
"94bce4aee88fdfa5b58d81090bd6b3784717fa6df85419d9f04433bb3d615d5c": "0x65571662502efaad1053c5af7afad896c887d3e1567587160ce70cccf90712f6",
"570b0d8b1874762f45775332a23e7c153c0db9cd77e574ae5f698453a26ca593": "0x1797e2e4b67be85c6a36140b47226489f6ceafa1ba33b523955693b0215860b8",
"3ea98c0336f6a8506dc34567da82178f6f7a664b206ae8eaf8ab8d96721ecccc": "0xd978870fedf1bdd6556a132367e561fd4ac27ac099c094bce5c69ae1c55eac12",
"e13490529898ba044274027323a175105d89bc43c2474315c76a051ba02d76f8": "0xf6cf3acedaa81dfecd8a17e75131ffa9a0f1dda667027a0ad99b7bf5eb7c90ec",
"b17c4f7a56fdda9cbcb73b7edfc6a75f32dfa4f04ae79839b6fdfb56f6a1e9f6": "0xd868be5e92e8973c19be2ebb108dedb766426b408b5cc3a90c8632c8e531f42e",
"1fc18861232290221461220bd4e2acd1dcdfbc89c84092c93c18bdc7756c1588": "0x83f74b8a33b540cbf1edd24e219eac1215d1668a711ca2be3aa5d703763f91db",
"f927de002a727663c6cbf1923ad850aa5f9f4f325b2faa8c5cae7852e0a00c9e": "0xcbb204d5b4fe29a49b4f811ca44a776332d04d53211b33e5fa88cdc91348b03f",
"cb9372930932694b8a74dd5599c0f9e236575f434faf05141d95803a91f044ed": "0xec8dd420650be78822aa7a2a0d07f742e6b2b390c0c12618d242330ecc5bd020",
"112fb72d9e1d17e491da188324c2e0707a192bf2e2b0a26632de541d45b701ef": "0x8c80d4741f04dc10575200db6a8d5251ee86ea3fe3c5e6f596585980dd3bdb0a",
"ec2bf6a3087d222ce960afcf75b42b96985d580a80fcd4c45c76a5d5e5713cc7": "0xaaa937715e069809d842f57c79fb581ac1c35318ab997f7d0a38e1512845cba2",
"61226d39beea19d334f17c2febce27e12646d84675924ebb02b9cdaea68727e3": "0x0c61dffeb1155b9f9251da0f2435b492035661f572c8efaad6ef248ceffe7f47",
"caf0acd3a8849e1100a737f5dd3890efe1e7a574a9c69e230addb3d41dd859c2": "0x0033075915c2e7727a3a37fac9cec79b79fca2c7ea6bcb5814c1e693e01504a5",
"27e867f0f4f61076456d1a73b14c7edc1cf5cef4f4d6193a33424288f11bd0f4": "0x26bd64bcdd1f00c71fd72dbd242e9ef8fd177efa6943a3287f5bbb2f83a5adca",
"6660d7629213995af8aa169ad6a1cf1a725765d3741b7e7a27825f884a701b96": "0x82b64c9e05b319fdc306edfa8c1d8ae9b13b5afe36068fb690cda5339d3587c0",
"e09298255394baa5bcad40dcaf6c8050b63ef5da7b997d075318278ba8f2e477": "0xcffbfb439213a88f3d81c328b0df66386065d1529cd16401c61686626b9f4e67",
"247db80e271f8d9e31c358aa93cb81bb091f2ffd90e8d85182b56fc22501e82e": "0xc14ee4db2d69756ea52e3269c73c0ca37e0a2e96d00d462ba0c5484e500c0b46",
"21adabf73ad61903c1872fa220f84d3b1b9990cec2047f8317e2a67efcd1764e": "0x81435205c81062bdd9b85f36b21d205e9c5daa1eca402319a318194cbec16579",
"5f70ddbab5034fe97cf8722437f7f3a7f575a9f369e751c9567e2c55c9bb554f": "0x2d91ae83f1f2e6e8af0f6385576c0b9c398d51da5b3967f6023a60384edd95da",
"87fd5a8d0bf026239f98b53311d2cec2ee171e853f545e1ad742e092a97ef860": "0x4f6e1ab1a4229371eae4c5414340a0a02ebd9086e6c9298b9b7fb31ffa8dc109",
"6e03ddbdaf07cd975626dc72e567427ceaa05108f5ffa1611942cf4006cefb2c": "0x50c10911fb187e3f98fc78a4ed4db4b711d0072a79eb8f667f4a23086f7c665d",
"31775e1d6897129e8a84eeba975778fb50015b88039e9bc140bbd839694ac0ae": "0xa40c73e07a7ec37d4875608d8e45f1f0e8442d43870e5e56bbc46cff780646f7",
"7858a3c2a6cd45d9b6713bb361f665aebd29b951fefe977bb4dbaf0e4606aa6f": "0x3cceeb37ee659740416b631411ecaac0e0d6667c9df22ce4a8d31f876448b780",
"d7566a3ba7f7286ed54f4ae7e983f4420ae0b1e0f3892e11f9c4ab107bbad7b9": "0x43e3458bd0b9898748ae5edb70a2509062e833eb8e385cc322550b594753299d",
"4204a764d9e0ca8db0fd43b62728265bf82671ce8a8b4bfedba13672be12de62": "0x53444a99bcec74c6c440618d74a6cd7d2277abc10a416c01e6d4f27a295f45b7",
"aa3761fac23cd01faf71a5865f50748ab58afe045041dd95051b004652c726e7": "0x7e81ed4d6d912698af2e545d9fe57e9aa0a5d748aa44b0dbad40323fa5a9d7b7",
"7f57ca775216655022daa88e41c380529211cde01a1517735dbcf30e4a02bdaa": "0x205941d6872a044c515eaa15e0397fde2575f8f2692bb170b870995933d4d566",
"7b22e3f1dcd2afa868b6463b1bc0cefe39979dc2d3470e1837f0d4557be34f73": "0x94fd34377d7289e39db87a037da1faf759993e68b2725e3f7e0763f398b8823b",
"9f2acb902ee5c3a8e41c643164a498ed3089c99df3477189babd368280134075": "0x2d917a01ec367746036120e0755abba9d58134ebf51459d986b8c38e100b3e95",
"2646ca1e1186fd2bb48b2ab3effa841d233b7e904b2caebb19c8030784a89c97": "0x2bc73cebf9fedd912da4c7549711e6f1f5c33911b826e324d504633df5cfc11e",
"2f317bea04ce89adb8acc85a1a68d20d6e89976d5e86306570a0bb3107e4916a": "0x148ae102b370ab2829a5ba631a41b2f35c3b577943cadeef4f7cc3c0ef66931b",
"321ba4d608fa75ba76d6d73daa715abcbdeb9dba02257f05a1b59178b49f599b": "0xe08d8bf5deb618e98767e3ab0725658b211f6a431f7bf90a99454d1990b74c8b",
"843b251236e67259c6c82145bd68fb198c23e7cba5e26c995e39d8257fbf8eb8": "0x26c282717cd2bd14382334b5e0c1e9673f07d20ed4f235709799b98db2fe7eb2",
"e07f9830dd639b76fd3c341f323d0a04562f442ee5bab1efe69a265d5ab9b94a": "0x2252f4b562ff74b5b91e4cebc847f665926f18a50e88309049bf0fe3a426684a",
"6256c91c19cfbbfc6f91e1fd15c028a26be1f78bb59ac9f7250cbb67f9e5b964": "0x48c7bfa8f5df2ba3e4803042ab29e12108c2f968feb1fc3cd151efc271441800",
"49e9e8574bd7fcbd294e4a94057c7ed7fac1402f5960470cd8a12ee63df186e3": "0x17a5c349b2128161bedb03cf18ade9478c848c8273746672de2faf693a359462",
"2a424024e5a4438d4d698f99e25df39e347b3889f7249b64c771f7504a0d2f12": "0x8c146e162befeb3a16a8dc7013cd1a7e6c660ad66dd3a2be0321ccdc43be401b",
"83be4ed61dd8a3518d198098ce37240c494710a7b9d85e35d9fceac21df08994": "0xf7b474ed1f88e1a19c4a456741efbbd14dc1a6f714ca255b896d849ca63f8d85",
"e157999f282bb939e943724620a60af4ea9b0078f34499b840c65bee0c81cef5": "0xd00ed0263d990dc3951d3e69417f766215390ab8c31c6afb5a6b4e7b352e0359",
"23fc699f5966447af3ec895e6f2c046f91d62d40ad1a86e8cde8fd0746324d8f": "0xec2f948cdd785afe254da2ea2cff9ba4fc3618feb98f1e8984fcef3a38973f5d",
"44a93dddd8effa54ea51076c4e851b6cbbfd938e82eb90197de38fe8876bb66e": "0x6b8bb2345c93edd12e24c0ee872ee1887520dc70d2860b4814cdc4a312da3539",
"651071f8c7ab2321b6bdd3bc79b94a50841a92a6e065f9e3b8b9926a8fb5a5d1": "0xba54141a7d008ca3b0209086b2a74a924e4515c4d9cc402ef0710369d58b1d77",
"78ec25615d53d2486db101e829f77615c4408cbbd543088714b9f267da44591a": "0x42ea1d6faf9dbd0ad333fdc4edd8d7f869760550e46712276e92e594249f6022",
"c999fe8a75bf9528931deb832e2934dd1ac138757d7f2c1398675b6f521d556f": "0xf57f9d70002978eaa8faa34961853e9c3c2599bc0ddfdf6556de6b63e19967ec",
"cb1743d0e3e3eace7e84b8230dc082829813e3ab04e91b503c08e9a441c0ea8b": "0xcc31caf6d68d16f4b67fdc29759ad5faf0e9c9e1b7740ac526995120caf408f7",
"7a92fdd1bf0b2d76ac1fea88c9eb7bfb1907d25d12e0ec47feb2a8e28e6892d7": "0x14f2533e42047dab1d78606a6022a592badda57ef90de248d042e1d671b7bd1d",
"d999afda91920097eed20eac02e68b9dfa0b8c798d5c7cd24f74a694c2126165": "0xf967fe96dfaf3a432c9a2c28ce58cb1ba6705f8f513f37a1f4c30e6c58392fad",
"9f2f5ece4fc51f0378a5efac659680808f1273fac4e6bce8c8f92244602c64e3": "0xe14beebb2fa067e6d968b0260f3a2682974d2e95cca59ab22c2d87aeb7c1a684",
"ecf553770d9b10965f8fb64771e93f5690a182edc32be4a3236e0caaa6e0581a": "0x75fc46cacfff24618425e33e676eca82a53c8621d49a1e571152848e88165001",
"37f40d2898159e8f2e52b93cb78f47cc3829a31e525ab975c49cc5c5d9176378": "0x5f24fa9fbb024530efa1863e4ca8512aef979ad3b6c55d0f83e796fb7b5c2c57",
"046f22737835f58f2251df9283339618e4f9510bbe3171582fe50df3fedf8063": "0xe5533e0240746637bf7378762b73386c066be2685e69482f7ee0be9720af3707",
"a5fd90e292644d5f9b79a1640f464fcae4b8cb925465d197a78185a308603606": "0xc118cd104e49d5a078de7bea4df563c9690361fc386a6355fa16493f9b3d2428",
"0adbf6463e27f60f171bcc498703a4282d1954ec3a85e1f6698b48ecde18c00e": "0xa4ddf29c1ca9ce6c91deb7f6670a099cb805bee36e5c81a083a338a1fc2309ec",
"74c3dcab79a257c5634b1bd0f57938d308de511ba7fffc2f01ab001084a15106": "0xf72df1e04ae66e867905ea85926b1fc2f6d5c27f693556c73ce6ab5aee41cb18",
"fc309467defa4b198c6b5bd59c08db4b9dfb27ddbcc32f31560f217b4ff8fc2b": "0x9649396a34a3512a5857cefa88438cf0d20f285129cc294dc7e34df19dc144cf",
"21085c70777592104ad15d352e44fb59f8030398e853b0a0dd2f9b3572ca8f27": "0x1778f5984a6b7fb0a5bc9c4cd1a4c49d80c435ac9d8b8803a7a9a73f3e04cb47",
"93ab444e1de19f0ca3e27d2bfcc9b58da4777e927e958bda0ed5632306345c8f": "0x77be008245b2aa79727e58d8ae6f5ccd4343e733d957dacf0d367d33005d5069",
"a46737d6e4686b9cddd59725c9564f851aae93efa37c52f46d9fbcbe03d0344d": "0x7ba922ad95ee90d420967270c1cd73a08c7aa37084fba8bec09a5f12c14128d4",
"f9c0172ba10dfa4d19088d94f5bf61d3b54d5bd7483a322a982e1373ee8ea31b": "0x878b118488aeb5763b5f191675c3739a844ce132cb98150a465d9407d7971e7c",
"5dedb77c359e5d17c053e36e8f8d89b25613c59e285a247f32dc60dc093f2d9b": "0x458aca93edac2be9d1436fb79752c0f70e8135e6d06785877cc908577f7fc9aa",
"997e0bf451cb36b4aea096e6b5c254d700922211dd933d9d17c467f0d6f34321": "0xe34ccbcc04337e3ce8254d5e86bc81877340eaf23f65bd31a082e07878227370",
"d9437c194a4b00ba9d7652cd9af3905e73ee15a2ca4152ac1f8d430cc322b857": "0x3cc0806cc504a226f72b3948bd6b98148a711a449275f6834db8010d980e6018",
"1f54ee448dd8126174014a7fe3c354a3c9836615802480c196ea01f73b5ad5e6": "0x653f8898d016404a7d0d3571e08e4c4ce4afcc9901000902511c4751b0974276",
"60d856ec52df0c791d00e6b9ede437774c57ce608b310708351893b7a07ef7f4": "0xe6f360ddd91846882306f7384cd4c5f189242e305d1d3c0288dfc0caad8aab24",
"13f7925c9186b8cca50dde4bbf2d4fa9705052cceb6f2fc79df827e2b37d6f3b": "0xfb898b057da6dafdec62996b467d6099f56aa83064421a95d726da551a944a63",
"52800482aa2666c0d2621f8f0a8c19ee6e5e5039a65524e268315501b3355fbb": "0xdb651773fa581d634eb1da3428e9c6134ae49ec4b21bd121e1a19c3b8d8965b8",
"e0ad6bb6c7111d7dc8dfdcbc2884f7e30df1db0f1759e39902a23c41f2ca9f51": "0x05534285c3de57bc7325a78f8d5b86a46bf92b359eccb3bdda705b21679592ef",
"44b948f5d3f5ad7e24e1aacca13872c1bd5ebcc106a44cc70a0f4c6aec2c564a": "0x1ac1cf671ee24c9c5f41e1b5104c7b1b5867045188f3f9ef4e681acad8928423",
"8b62866fcd3a25ff9118506444e9fe5171e67c61a049f4b4fdacdbc31ae862bb": "0x7616c58d12093a270b23b5c025964e2f901df2c5d68e42c4a8d7b0122b6e750f",
"9b245faf19d2f3306b58821ef60b194d7b67eb5250635059d8eaae4a36337b28": "0xd0efce1fce188727cefeffb86b92c188db5ea76be40119d83acb4db7ce089e60",
"7ca28037f63a175cfca36a878be6b5d47d87b2dd677efb8e22f70865d9ff3a6d": "0x3a655de45af792c6639a20df1316b5c06f78ba75ed1396782a8eab6d0d7cf8bd",
"64abe8a459058c60d55427f62be3dc4942c0ba93d1eb5cb85117b70b8e4651ad": "0x4a0694781fffce08c62b8224b234892051fc36b0f2045dea9665d8eb1a751c3f",
"51669cd280ce96d95fd703dc0b9eb5ce0e13b53054114a45534d27563b0e662d": "0x1867a4c85ae311ca4e58ed90620126f3e482bad005ffba5f6c64d17375724c37",
"6354d685c247f1efc36f967617beffa2ebd5a95d8ffe17de4498505c923067b8": "0xc6f2080be22bd6882fa2b70652dab7851e4687bd2aae1945f1cc4847827f1b36",
"eba2144f04b3af59382d92b8cbc3170008b4a2945a01f36e81f92dfdeb8cc519": "0x2772683de992975462c42828b84e393714b6a78a40ce8e61b7e32a4c300bb219",
"457064c555edae5b6b89267e992be4c58be5375f0e9ca9749391c7094f7d9033": "0x43a6ae10a64d72f1f7a317c6c03e81833044dec465eb30906bd469504d2b34ed",
"9ff9aca7ac05dd6725aa169e643c82a34d9061eaead7bb759192cf784bcb20af": "0xc6e482cf2bcbfe58db19cf69c2eec1d5d1b022323a122b1f3c0e75f38174dac5",
"7545acf4eb17d5ee383e985a782b68d14dc7ab0cf390143fece48d442240bd6d": "0xa21f066c758a3b9b851ae5e3f9bc129016861ca9cff0d480f4614d8753da517e",
"85dafbfa99c733fdd33649551666958ca8f82fd0d849746e093b770caab249d2": "0xa3bc043410a28bd10d215fa26178e7a4ba244d0e0ccc44e8de733941c948edb5",
"24264e92a7b9a1477c8c69ec6610a330e1720ade0d345175c55781443b8d1b32": "0xeab5cd103be92c4910e9c0292a9ca261f85d9dd94117aadeacefdef89288bf7f",
"4b57c2471f6ab9250d26b7e0ff8807bfd620a609503f52b0b67645f69eb2d5c5": "0x31644447ebda1a4675b65069f388323605cfbcfd69e1d3b4d65aed494614af7f",
"057aef33dd5ca9b91bef92c6aee08bca76565934008ed3c8d55e382ed17fb883": "0xd319e620fec988e65b9d90c07f70929a41853ab3c6968d20c148bcb132fc6125",
"fc564609e09195df943fdcff899ae7448d5abe93e4906db809a8ceb17ece7967": "0x9fe95add3cb2c5938fadee0edf68c149db32eeba0d3c5e199dc83b79f2e26368",
"e76e307abc63a0fe6a6cd8bec83a23997aae27b5a91459c3d73b2cf20abf7430": "0x7e1a3b0cec8f1dee42677df80f874794c7b82f6fd1ca5fc76933bf255192138f",
"8c57ee5f2e58f6196e845344299618ff5752a4ded0ca0ae189f2bf7feee9408a": "0x86f8246cd3ba5cc1800b411b7c4cf9460cfc001c97cfbc85c9d00e811165d8f8",
"970541e943e11d1bf1d4d763bc8e70995f613dc682f727045a866312312a6376": "0x179b42c9f4437584c2a737bc8f712cdcfa086a9ac86c6cd96db7f71acc89ae5e",
"57596fe1a697014b962ac9e693dee99c4bb01d6c5eca271a1a26ad475a92cdbd": "0xc3503d22451ba076dd16a95f00f04262b393b67ee6257166e88a44cfff36add1",
"bcbdc2755bd74a2065f9d3283c2b8acbd898e473bdb90a6764b3dbd467c56ecd": "0xc7df744604631d00eea094315f373d395ff6257e02810e79133d2e57f666f777",
"577b331acfc8f86c171ad5ac6b2e580b10df39af0131ce6808628e44e3b77a66": "0xaa538d809c4b353e728f7103e71fae1cdba21b45deaae03a7f732727d4dbe333",
"dc3ac2fc4726ae0afed1501e6e834010fa30687d8688b16b22c55c0975e5cd08": "0xb2fc3c3a0ac814a6afcf30632b707c8768a158d8e542e5e6373a27cdf49a9152",
"e956a4199936e913b402474cb29576066f15108121d434606a19b34036e6d5cc": "0x89d6292d07700792d4832e8fdb99341cdbfc26c16fee6b2f7fb2129a68c50157",
"a7e2e2f7d47b17d18e6d49c427f21fb30c0a85e621a8502c3c4e486f3ab543c8": "0x044d2f5f48feb658fc35079218e1bd6c9095bf9a18d2b7b314bb42ab0b280959",
"f73112d4ad26fd37cf18ca9b3f7e6f1a562b5965cbc26e4488a540552f18072e": "0x2daf6162f57e537acf768a62ae309c76927418310828cb36b9ec9fbedf32b694",
"b718e659619a031b41c6ea9122f146859a82d4a7edc17c55b1e5188e8b4c1d1c": "0xb9bc8172917eb965cd237c5475338987bee85f84cd430ff0391a3fadb095ece9",
"4711f16309de5a18f54e2e5cd074dc7fb000cb41e6a5a333e56ad2b3d8a12530": "0xe391e53759c2fc88f6afd2bb8c2228d7dd5e876039b815d36783957b8d152f59",
"4193915dc8d03bc15603ec3c0ca9c5e3eff6726c2a2cf262e30be121c2b9a206": "0xf0d722faa995161446003813d80e42bee58d280bfe605c67be73204178cb29c3",
"c21e81af5c80ee23c0b51c8b4f4ba0ea28c8b38bc85beb7b1335356a32023256": "0xb6a2ee12503ed480af6e3e35e5a1386f8a4f984a5573171181035998b1d49ea7",
"2f32dfc72942edb002af80986a1e3d6d405193ef59e3d5ee5f7986c0d6655b1e": "0x7daaf3ef2a6a7cb41c7ba2d6e21f4067c1ff8c350a5a16618797c8375a36aec0",
"53377a90ac8ddbd1cad1a65dd705f12eeba0be01510777a1e25fcd03f295572d": "0x971cdd72055ba77d2502e92a94065cad8132cad85094b062b26f933c6e3e0918",
"484efc34ed7311f56c1ac389a88d052dcddda88fe26fb8a876022c5b490f9c98": "0x89d0130e5a54a3d989e4db8a33df0683272ed58d694a3118c9d406ba8033a157",
"834d3f05278b6f5c963670f437a2267c160914707328f888418902106bcd13d7": "0xe26ac038f1b4b826a43a3c20968864f2161a7c9bf66374a2b19429caa07800b2",
"ac27da9472e28969d829c27312afb08c5f1866336384f0dbdf9a48af97cf28a0": "0x2c629bbfdf1b123708632bc580669e83961347fe1ed4ff3e4e6ab7b861168b2a",
"077e345652cb98edba89815a63a0ede724eba12d7a10c8498e0e762d581aca6b": "0x421e2527cbd209cc95a003d81a2c349f924ccb3486ed5a7d8a7c6c38579613b6",
"30a19158f5a54c0adf8fb7560627343f22a1bc852b89d56be1accdc5dbf96d0e": "0x42c3cc1cba7885dc839c184470529fdb771a7d901cacb19b465fef1ccb0b38eb",
"d71fc5838e683d30b49539d979af53063250a76cfab4a4ecfa2b3279f26b7b29": "0x53f8fd11d804d3fe0b9833970b5e58fa10fc5481c0bddf1ba5be9a238b62ae50",
"b7abd25a76ddaffdf847224f03198ccb92723f90b2429cf33f0eecb96e352a86": "0x4876754400e8fdeb3afd96149a835bb399a7bb0141a5184d24cf2c2697899012",
"576eef18034939eb62e7736f6f9fb7eb6c67b5c6ed81605f4879057028d734bb": "0xeeb6cd07cc041f3e4db3ba60f4be3da007e7b85a05ae5ed62d95d5a6d8b4cb26",
"08f781a893bc9340140c5f89c8a96f438bcfae4d1474cc0f688e3a52892c7318": "0xbc36856768ba251c016afb693ae53892a5c9e8a81f11102d5436d7522ed7cd59",
"ea595ba9693e54b92f283a91d6774cf367f440b237d979acda4a75dc78f7c679": "0xba3daaf7242d8728886fcf3285cb34edaa6a459f34db2bf8c67a656642a98987",
"475a251c7cbded7645a146fc049d44058aa977e6850f20f4c86e289fb8dbe4f8": "0xccc30a5a8e61a34a69d17cf02cc5ced1acddc1233f5a799475e292f445d4cfeb",
"87a67534df591d2dd5ec577ab3c75668a8e3d35e92e27bf29d9e2e52df8de412": "0x5ab23f2d2adf4d361fc70ec11d5de7c033e8874c67b70fdd244b5e531006efa6",
"71334dcd37620ce3c33e3bafef04cc80dec083042e49b734315b36d1aad7991f": "0xe496f16e06b01b38d0c301a89791a8afe91dc7ebad3d491494ac712714cf7f69",
"c098773aa18ebb7e84d5ee7ea7d97105ab2015a329f670012398cd2c8f5cc6ca": "0x81441dae866ff6312b15e2ea7666340452b47bd8f7d649f88d9f79d589a91625",
"c3036175403e4b32dc291d0c023aa691f0287f058bfde5fff15d71ac68973e73": "0xf1def1e87af46f7c0b08bdc36bb79cd3efd985ef6dc5c00e83a423cb71914915",
"d954e9a88c7f97b4645b535869aba8a1e50697270a0afb09891accc031f03880": "0xf2e64772c74f0cd9914c72163b876cdc7a6ec4bf88ab4563a6dfa486d9f05a9b",
"a457fb802064a5a7c5c87c8375165f3e607730deaa9d2627ba7710b4b2841064": "0xcbf811cefbb833787439efd97f216d449d46fac105e097da1480f893139fff01",
"dd51a67a1b4d0702abf5b5385631b7d3e586993eadacf2e0d900c0a81edcffdd": "0x10e40dfeb665f93b94888eecdf8d433c8b60d70cc23aaadc49f83cc7f77f9682",
"eb00e1f858549e12034ff880b7592456a71b4237aaf4aeb16e63cd9b68ba4d7e": "0xe23570acfd7fba7ca5b1de1dfa98f27b393d3dafb77aefa12302440fa42705ef",
"ff0ec26442c57d7456695b843694e7379b15cf1b250b27e0e47e657f1955aaff": "0xc0500c66f940b8ffb98ac9853a75ae7cb31f8056e46b204a4d898d765c2e2636",
"677dbbf4f68b5cb996a40dfae338b87d5efb2e12a9b2686d1ca16d69b3d7f204": "0x6e3b3ef27cfdf0e0e164e5b7942e13f1566b62dcbc2dc66fd75f6640209f5b09",
"50c67b3fd225db8912a424dd4baed60ffdde625ed2feaaf283724f9608fea266": "0xe38dbe2ff3322f1500fff45d0046101f371eebce47c067c5e9233248c4878c28",
"51ae9b785e6aeb288955720faef15f63ee3ae21af38114ade8b3fc3d3831b5ad": "0x54944f2a1ceb659e05b666afcf5f39cdd7ffce6aeac6ea5f791c32d6c509eaca",
"e4f18eb4bd03fc316e0affa5c829d8b307315e1bee8b4f7907b3c045be238130": "0xa8fdfdaba5e406455941bee7758b3507e953d84c3e39cf910f73e94fab9a72e0",
"7dac7cafc583cc4e1ce5c6772c444b8cd7addeecd5bedb341dfa037c770ae71e": "0xdd187aa48166150844ea07d1c1a5d488dc8bf51c90789ccede850bcd8a89b4a7",
"732854c8a2a37168037263fa01e47526a5cffe026a43168d61baf4bf4e490f97": "0xe6b00a9c2678bbf2c007da6efa62e9244df645b17ecb34fa647dacc18fa9368e",
"b327d9cf0ecd793a175fa70ac8d2dc109d4462758e556962c4a87b02ec4f3f15": "0x682730eb45da1f7d800bf88e6e787f4632510ad31b20b2e54b2ff7dd19c0dc68",
"19786f31e85d3598cecdab810b2787de0fc22c2cf98b4f16fb1e5bf567a0a431": "0x14414075fbdf322bac60e4a3adce400188e8fb75c423e62aca185ad5caf724d8",
"a6ea8b18a8649408c374dd83165558280ab580a51dcf1d56b60904d91f49a49c": "0xc8f0da49081b7757d029bef22a72a415ec8283125f7ed3343c965dcdb452e3ad",
"4082363286e730119515d5c8dd70233449996b40b9f60a1d2b902618bf54e183": "0x7555bad22d085eb34a463e39abf9a9bc8a1b229a8d66c5d26738c44140488d7a",
"41f3625971ca2ed2263e78573fe5ce23e13d2558ed3f2e47ab0f84fb9e7ae722": "0xa3d3e81bd7e890ac189b3f581b511f89333b94f445c914c983057e1ac09ff296",
"68bd4b3c889eb5ff8c56eed05781f68f3a931d6a1ee5a744d041d70b87e2900c": "0x522040b312a2e896b3f8508824aa7dd905afbc0a77d5185c094ec1943bc4aa03",
"432a849ea65824a2d4f18b7708533ff7f52156320714d0ad26404130f49a4ad9": "0x4229b0629ac127ce244e441d068516e851390af2209ef17a9f9db9d27a951661",
"d952c751e36d6113f62ec2bb1679be4ac69d684b33224fa305644010f7c44aa4": "0xbafe17e1ee4cc3b4a5f388147e8c8b0e3c09b1eaf88f5ad3e7a3999745db51d5",
"318e9f183dbc7333461fd7eb62c954872cf863c46bd09ca56887df525e40279a": "0x8cf01ad0e42c1dee0195791abf2c583f906d2fe61613b79faad1dc203fd9a47e",
"ed82efbfade01083ffa8f64664c86af39282c9f084877066ae72b635e77718f0": "0xc807978d4cafb73b36ff068dc928ea73c27daeda55feb4ea863128a78016eabe",
"2245aec1db780b8dc9f710173256996164f0a65f25a975453e4202a54371d2ea": "0x93e1e216f6cf99f4b22268f90add290728365828f31b2f7e9af70fb519abcf2c",
"d2c2c1f2bba8e0964f9589e060c2ee97f5e19057267ac3284caef3bd50bd2cb5": "0xdd40524fe7a7018d435189aefc42e59e0ef7de18ed6726eb5419b00c2fc5d7f5",
"e75bf4f2cf9e9f6a91d3c3cfc00136e3ba7eaeb162084fdad818c68133dc8a24": "0xb609906923a78563d5349efc5908b5b38af66e1c22749f29e5061cb3aa786fc5",
"32f2d7d2c0cc235012cbc5e92270f4f1e01b1dbc913f80733dcd88016440ac2f": "0x84b440b3e00dad051cb4c1100f59967346bff85df4e04a80b78b62fd523bd711",
"751a17c2f649525a42812450ed3a656933e3bccefa702461a60c21109cb8fcb9": "0xe6eeda2c10e9d01df3ac0ad2a6f61347207a1bb9357d945b3121180ff6c1b882",
"b5366e5ded52c3db5d81635a624a39d81eb8c639427fc79c539e5c91e17c8494": "0x747d6bdc8c4555791b60cbfd3b281a008c80fdf9a72514c8ed00e9df98fba824",
"b762d257b4bbce7935a8251b3e060977cfab1ed21770e8b431beff4cb7f41137": "0x6e0016d3d81f17335d783a9200a7f756a40be519e21f39305670bb5fa8ddae1f",
"c11efd88a9b2c96bc84bccd6ce4aa05bebad7aa760dbe5f2f00ef90c4abd50cc": "0x1e6970d2855cad166fef9ceae16b18fe9dfeb0b5f7454d9cbc34f94307eadf65",
"64ae1fc7ceacf2cd59bee541382ff3770d847e63c40eb6cf2413e7de5e93078a": "0xec0e80df69fcaaa4fda31d3affd2a45e1347bfd8501155e5344e1cc4453e1a89",
"e4973bd7bb2b8b78dd63af491582952e28f642a5b26cb2455826e201ae762bf7": "0x9d8dc23f2d902c5d75a57798c88fbd155efde61628ccc158e38ec423f4d37cbe",
"afcc9a5bb5eefd55e12b6f0b4c8e6bccf72b785134ee232a5d175afd082e8832": "0x36a954c1e0b1f3337ff3dc7abc503cddd6a89f2882a8c7e6778bde1014222410",
"f3030274adc132e3a31d43dd7f56ac82ae9d673aa0c15a0ce15455a9d00434e6": "0x63bb94f378e9da05a978ad86dbd2c2b0a90b5ff984c490f314263590a4ed1a8f",
"ff1196f6b85d274dcc2608b6974f2781b9757ecd25ecc9f08a44ae13071b2ebf": "0xcb2398bba51417baf9205dcf80089004df5e99760dfba339471a989968efea1f",
"d259f1f2344b64184eaed25ebdc8e9012b19a523cebb625ea534f0e6a6b7975d": "0x45ce4df5e11184148840dd4172e81c4dd9cf7659bd1bd90adb08bf14ff6bcaf7",
"b3b2fb5e7825bfe3474d0f378c695f6cb85e229deea14e7a28d37a9e5a1b7749": "0x3e33844f2c04264a5107757c6755d8f983bb379c8a9b02d8cc83bdeafdba24f2",
"312106929adaffd2e1a1098603ffd30ecd6c6fe7861faae6bc81b0e30f4adfe8": "0x90e6ed8e56dae1c82de811cc27f0b13ea9efb3db144571a6ad4df1111315017e",
"ac541125cba1f87cd7048ed465faaca653784605e05fc1ee90b979f0a4eb57a2": "0xadde49269a920699d9a8a836d3fcee4f73924412439bc59fd4591386524a13c4",
"9b7bfd7654cbb80099d5edc0a29159afc9e9b4636c811cf8c3b95bd11dd8e3dd": "0xee69ba2bf6015544a19103d7a9af681145af1447e12257072b6dab4533b64ace",
"06c532524fabd49cc142815502d785e4f34ec3bd035480efb770568d423f46c6": "0xc14f8c30ec8183a8fa7f943855b3ff5f99d9a56f05d885be4f037d9c9c00190e",
"f1063ff9dea7f8052929e97e907218eff557542a59c54a60eb3a945b67759999": "0xd71b552c791317a6dfbb7425e62d918ce085b22ad85436e39a2b30b5dcc59216",
"c178e5b0e2dc1e4d5f7893d58e1cb619e58457d616fb21b6c5c994e9d19cbf6f": "0x9b0adbf1bdbfbbd49518257d77191b14183b123d88b25f9bcfdb109680cfa581",
"c323b9b3e6dd09a9d93090322689f0fb44bbd929e8702028ff1ddd838b14d421": "0xb8f730f1671d22f0acec5091fabecc9243a61caae31811aff826d53775216607",
"b59d65c2e10af17c0d6f7d10be8d64c0c13dd15d957c4c39763b4cc55e591937": "0xd7748cc976c1bc26517a96459510b9ddca510ac7fdeb7826b3dfa252d99f7dee",
"0184a60a47ab7c23fcb828d727b05748ef52433fb5ae96f775cc98c9049d8c2c": "0x530b16f0a67896df55e3b1d9e3be8c0d63b3a62a4060cc11564e18ada11f404a",
"c7bdaa960b886927325f02f0e4d5db19c179d066f762906f803096c336a4462a": "0x479edf6d61f313fc14cf30bca09903858c0aa4001da40a2efbf8a330a3d877d2",
"eca4f9c5ce7cbef8a349fa9f6c12b23ac45b9ad91c4d1808c6a2dda841f95a02": "0xfebee46b92fc7f3ff1d24810d21838c04c2101235ace578662f0abbc60095b96",
"13ac8c71e4e1c61dece57bea76163d393bf75cd0db8e52981e1564fa592698cb": "0x6eafcea4d987f66b5351e52969671be4125ae4b47ac4f4f9f4921755929378da",
"7730809b4a4656325b7fbc8157fd803c3da170727c541afc4db37773246258b1": "0x6d4d4894a3700826470f6874b3dc03d4ad102413103a3eb538d633df0ae1bd40",
"36032e522b810babd8e3148e9f0d588af9e95e93b97ffb58566b837fdbd31f7f": "0x6fc10ab93a8b01ffae22c23df5e5e36fe43202b097896e0d5a5eec416015e3b2",
"c1b8de2fa9fa1f18c4f41afe579b23f51b4dfe2bf3913b850f583fa19ac40cf7": "0xecb5dcc7d4f2ab012b7806ceeeb8d73d431d38c49138344e858859a8d22145b6",
"6b86b78584e182c61729267d73593f48b6a929f3218234769281513cbe5e87ee": "0x0e5a839e30211af31d2f14a248cf13315a91780d94854852e7abdaa92e3524d5",
"7092f3445078c8bc4220e2c6e8b238d6691afa3a9f485bcc644d1f725c85f5ea": "0xd349b7f5709c32fb26c66d871c8c3d090ef38da5c04b06cf66a3e7098c62c2b5",
"5a035d5440f5c163069af66062bac6c79377bf88396fa27e6067bfca8096d280": "0x5f1f0434a5b12e1b6db4a66d4c0025b0c78cb75c84ffbebab9bb1a8fc539662c",
"d5e01ddc49e0b46138b7eb47f24219f3e32c0d0e644649ceb4eef921b9c5a919": "0x38c6156c6fa6e10af65a6e2914a26c45c354e7a9e454f32b520a590645582049",
"00d1e4ef2cef8626de09035298b4763cac85567b03ae6534098c7914992339cd": "0x5786d9f296510374e8ed7caacdf744ec1762bffd0c965d328174b5766b282e89",
"70bf2974182b6ebf4eac64977170074315e7a07d7b58a963758060924ee9a192": "0x4f2ddabd1c080f648eea58ea2d366c5b3534ef04fa682138b5e4c381fafce554",
"4d9fee37cd3b1bf220b4f47e4662ae2406c852a9ed7fffd3b190628ef0c3c021": "0x6bd387f9d95de741951b14040d12de71ed2e1fed271c1bb9e74fd60c970f4dc1",
"eb3b5720301b36fa074260e6e27e2cfff3a7c6bbb47564eb218a9a7f2a8c0193": "0x0e5142ee8aa6ecbfdd1aff1cd2dd4ed2924e8f6bc47f9e10f43670a2e731078e",
"d6b3bc030a8bbb7dd9de46fb564c34bb7f860dead8985eb16a49cdc62f8ab3a5": "0xf9716b158a3a75539db8fccbecece70e65180bfb5c6683a08b85c2c7f02fc9d2",
"013317758a5b499650d72edcd7ba12bb5cc54ce9434196b607fa5e01e0f7797b": "0x282c6815b611f597a91c7c62e6c5525c0862093ed9a4b9593dd090b66ed66b66",
"60fd61b2d90eba47f281505a88869b66133d9dc58f203b019f5aa47f1b39343e": "0xa2eb0374ae620d124a4a775e9581f83cf24872ea484e8cb4434285e2a7e282d7",
"26f46723ebaf6eb891b2d5709172346d2221838f39a93d644251a9102c3224c1": "0xa98d791ab2667e8d7d4be4237fd07d34e42a1fba3da615a010bdc94dc2c86237",
"93450e6195add3579e50d7b97fe2ec7e4f0f167d335af4d3fad33b79212558bb": "0x9c733771ddc9bdb9ba8ab434ae246281d1072b8dede53a3920884de3422ccb01",
"3eb717044f8dd5f1c7197f941e613432e1773d5cd8b7da38ec952722db3db95d": "0x3407ac8bfc0505c91170a8782c558a31c3a29b0cf7d0faabf3554cd9150fe46c",
"6cdc09f443fe8ed53517b9760b0674d054e719de9b83cba1bbb02c2439448590": "0xf558b0dc5a32eff95c23f860ebe3d89cc2121707491af1943d010d32aa4bbf61",
"f26cf0b5c71699e81f59384824c71b8cdcc29ce409f3e6934c8c18abe652a04f": "0xdef745e8e47fb7f2c0b5077442bddd432e4af561206b873c37e90ea60cf1dafe",
"c2dec53d44e1fcc69b96f72c2d0a73080c328a0c6ac74bac9f575e7afbf6884b": "0x6cb16f3675cb95170510500e710b129f30488f64e257f734690d314977d9b832",
"47b6e6587b839fad98486dd87dbad5a0558377dec53b55f6864501b6187464dd": "0xd2e91fee3891b0753adf51c58678ba7a10c95dc6de7b04108adc7370ea767831",
"974124ccd9de65f614142b71ed717c2a6b079ae8f69e795e4d4a0d01b7218538": "0xb547518ab51ea2a729ece0fed40712dfaf0ed8fbdedcc92370833cbfec3c292d"
}

View File

@ -0,0 +1,243 @@
{
"c572690504b42b57a3f7aed6bd4aae08cbeeebdadcf130646a692fe73ec1e009": "0xb6f968f116973dfe1166f73955f59131282a308d47658bc074e400142a6df99b",
"150ac9b959aee0051e4091f0ef5216d941f590e1c5e7f91cf7635b5c11628c0e": "0x690fb7e5ed85f981b98b881db07458a8a467ac3d817761ee4d79cf9f801480ce",
"dcef50dd0a4cd2dcc17e45df1676dcb336a11a61c69df7a0299b0150c672d25c": "0x0575742f5fde8beaa28022c9cb8376dde6adc5fbb09c0eb7e34f3c884081bd97",
"2356af9529a1064d41e32d617e2ce1dca5733afa901daba9e2b68dee5d53ecf9": "0x3802cab0d68b659c81b66f849c1cfe240112f12183e378ed50c92d2c01a63443",
"f0d57deca57b3da2fe63a493f4c25925fdfd8edf834b20f93e1f84dbd1504d4a": "0x9b3111a3b27b0315f601f560fd1d340a040645f5e99455013b48275efd8040dd",
"19d75fde7fee50fe67753fdc825e583594eb2f51ae84e114a5246c4ab23aff4c": "0x081f8f00aec130104ddbd71142733b262e1ba6b4d3ba87b97409080ac3b63412",
"2f7c4f738d498585065a4b87b637069ec99474597da7f0ca349ba8ac3ba9cac5": "0xc3f535974580ee827aaffedcb46627cc99eca188f3098b9c8894b39a3742dbf8",
"46b8cc9347f04391764a0361e0b17c3ba394b001e7c304f7650f6376e37c321d": "0xd0d5bd619b295970d5aeed38e2a41cba55bc4cc54b9e62978e51e054679c449f",
"fee33f2a978bf32dd6b662b65ba8083c6773b494f8401194ec1870c640860245": "0xcaeab2a94f62d3c903d67526bf3bfa55d275f9025ab1f04a79425795ea78482d",
"2a01deaec9e51a579277b34b122399984d0bbf57e2458a7e42fecd2829867a0d": "0x4733c0aed86e5e9a1a6e71dbebef26d1bb7ed5f6348a7cc8ba21536c2f11b0db",
"5c2416ad4b5fe25c38ea2078927d59dad6a1d4110480c0c96c9b4421744f7507": "0x9974f56dcf7fbc5c4ea83d8c0d78a48f95455271da020b38966ab70ea83032c1",
"8ccb376aa871517e807358d4e3cf0bc7fe4950474dbe6c9ffc21ef64e43fc676": "0xfc562c8e5534f9376bb23db344ad7f3c8a8309c0a0da8fa76096cd583858d318",
"26d53c97247ec18d576bbd23f88078acc22b42168dcb1d29a76501a956e26bad": "0xfb444178d7ad7da262bcb933d04f5539c6af1d48c44811cfc32fa3aa749069de",
"5867f5683c757393a0670ef0f701490950fe93fdb006d181c8265a831ac0c5c6": "0xf10573d71f68d054ad838d506ab3fee145d5729c3e2abd5a0d80d8b770498d24",
"6672325a220c0ee1166add709d5ba2e51c185888360c01edc76293257ef68b58": "0xa4f7538fdc2d3ed5c95bb6eeb675828a05448ca9fac1508122f6859cd585aba4",
"8bf649e08e5a86129c57990556c8eec30e296069b524f4639549282bc5c07bb4": "0x4f6bf454e6fbca35df7161479e0b97080babdbe6dcc20a7bb08c8ece5fb3b33f",
"27d108eb764c912f49d3453a21dd95516619b1c45d0b607ee58a137ac8a6f32d": "0x94f04897ac3357c9b992db1b2c196009f9565e3bca313baf2c0bbf9056c40a32",
"701223c92a39dbab065c4a7997fef9c41c8de26ca2bf1f808ce0a4ea1cfd421f": "0xc8e50cbe1f871d49d3413cb6ab1b3acc465c9f8f49fdf24eff977eee1a4680dc",
"735f591e4fed988cd38df74d8fcedecf2fe8d9111664e0fd500db9aa78b316b1": "0xfc33bf75fb16cd19f86e2b1664320b90f5d945b3b52e1a6e78081e9b99078f0f",
"327ae981719058e6fb44e132fb4adbf1bd5978b43db0661bfdaefd9bea0c82dc": "0x2b55f70415ea2b92ba89ed2ea788638af79baccaa79e2c6c7d058e4db56f61e2",
"3fa4252848f9f0a1480be62745a4629d9eb1322aebab8a791e344b3b9c1adcf5": "0x627fb77633bc7329368baf13bcc5d7a2e0a0e016d95b9685d9711b33eec14051",
"97d7d4c20e5a06fdb60f7a448a9e9a779f2b31c3f21121180010a4a470844aae": "0xbafd2c96e0e755436cedc9ddd0a02ff8d8130e4eb6e6522765a7156190feebb8",
"f3b50961ff387a3d68217e2715637d0add6013e7ecb83c36ae8062f97c46929e": "0xabc5fab93560a47cc8af9e44b3ff4bd7e4b5daec88b627f3e12b4810e33841d6",
"83a6de4ec10bce1c0515d1aac082fd193f268f0c3b62da0c8ed1286319272415": "0xe28188b839c07bc527498e154f6004fa557cc1ce27ba0788f51f52feef69c975",
"3112b03a41c910ed446852aacf67118cb1bec67b2cd0b9a214c58cc0eaa2ecca": "0x533e4686be17668b2757b0abdf63040904101979ef677dec0926dd60d548c03a",
"fa2d39b681f3cef5fa87432a8dbd05113917fffb1b6829a37395c88396522a4e": "0xeb620c241aa984a843097175eff92dfd9666bc944fca381fbe3424e138bdb8d0",
"10946973bfcc936b423d52ee2c5a538d96427626fe6d1a7dae14b1c401d1e794": "0x22c4e1bde114bfedd06eea8246cf21dab1a5851d0e156925ddee3d54fdf20c63",
"89a58e1cab821118133d6831f5018fba5b354afb78b2d18f575b3cbf69a4f652": "0x8a72cd8ca670ef27e6e8b0debd89be9f9e22280cc7b8057c0b767a12d92dfa33",
"765d2ba906dbc32ca17cc11f5310a89e9ee1f6420508c63861f2f8ba4ee34bb2": "0x75fb48e3c98eabf4484e90c51fa9634dc81c9ef0fffc6d7901cf7bddf4a06f49",
"2077043ee3b67b9a70949c8396c110f6cf43de8e6d9e6efdcbd557a152cf2c6e": "0xa3a9133b8b0c01a36ae931e3cf940524c40981bce0ebf944e5139390820b0723",
"c7b72e5d860034288c9335d4d325da4272fe50c92ab72249d58f6cbba30e4c44": "0xe3e08586ed16a9937a2a3a98967f85ddbba7e331d783483b80fce323cd4dc1ee",
"4e53c6ef1f2f9952facdcf64551edb6d2a550985484ccce6a0477cae4c1bca3e": "0x0d2140b047c1764e52ce2fb6c628ceb1c6cdb03c07be0b01d2fa4644ab84e680",
"ef94acc2fb09eb976c6eb3000bab898cab891d5b800702cd1dc88e61d7c3c5e6": "0xbc3f7cfc5114ea27c769cdf320641e489371478ab86452fa7b600871d924a274",
"af5b9ac426ae79591fde6816bc3f043b5e06d5e442f52112f76249320df22449": "0x557b37d18b817b5b60924cb4b57d3e5ac125ce296a323fae9d1f6da2e4b86576",
"67a6f93030420c1c9e3fe37c1ab6b77966af82f995944a9fefce357a22854a80": "0x043e349d0efc9abbc8d7a7a76ea2d548fae6359dff8db809016537cc9999384b",
"0b46c1c04e9c914037cc4e0561a7e6787f6db0b89b7b65281f0f6fea1ce45a74": "0xc2909b2472fe0343542d712f0228373e6364569e53a406ee9e35d9a22bb0bf0a",
"432a52bde005a010dc32c47733e4595fea0ea04df3b5aaa1c45153a527d646f0": "0xb4581880763d4fd9999ad774d61f06169a0094407575888529db59710b4a0abb",
"d3178156b7c0f6ce10d6da7d347952a672467b51708baaf1a57ffe1fb005824a": "0x60994253a3ef9fd4bbc21e22570ac0a659daf036fd4e135324da0b5fa05eb417",
"d64da7f265f00c456c2ebadf4593848129b9c86b45523e441d2f5ceb838a89cf": "0xe53c1b5038407e9f0b523c6eea46a84723bb1463364fe83a5210265ae7453a00",
"2b9ab1e972a281585084148ba1389800799bd4be63b957507db1349314e47445": "0x1b89490bfba1f7eeb2132197bceb6cc5b7465dc8bce09cda937a54af637a3a5f",
"ee42016c303126bd9263724e00f83a8114e84518c6e8ffc9738c001cc301daff": "0x7e659a4f98f2915d50c2151bd989ad611e8233b3ba4569da2be20aacdfbe47e9",
"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b": "0xb3544b1d945757138f7f7ebf5ba702ec0360ba13c42c9d25dd96382ea9592d74",
"d1d95644ffc11ca502f21e067a7814144c56b37018515ced4335a886a827a305": "0x29510890c9ff859f6af73e16f0fa13e9692aa207fec1c5d58a16e6b71d7adf70",
"9fb0bd29fe51481b61df41e650346cc374b13c2bab2e3610364cd834a592025a": "0x25fe32d4ba399a020ecdb713c172083556e209e80bbbb3f77fc76e66c300a1e5",
"5967c196ca33171a0b2d140ddc6334b998dd71c2ddd85ba7920c35fd6ed20fe9": "0xf1cd59638bac3757b54d897c500da2886de56601236101bda28637706ed66d1c",
"3b7ef6c95ceedbffbb66bff3d6135a200c5d0a0466b0c90812510ceaedebaf04": "0xca91cd6b0f008ddabb7dc6faf563a11bdd99844c38230bba0896df0c44f0e202",
"12848738d5db3aef52f51d78d98fc8b8b8450ffb19fb3aeeb67d38f8c147ff63": "0xe224b22c03c6ca1cc638d345bc5e419a2301b81eff6c08fecd8545ff0dc8cae6",
"6489800bb8974169adfe35937bf6736507097d13c190d760c557108c7e93a81b": "0xd5d65a98b2cc2ef42709050a22c0a4041c8583cf8abdb58a9cc44bce8d566868",
"67be9f519b95cf24338801051f9a808eff0a578ccb388db73b7f6fe1de019ffb": "0x418abfd6a1251bd40c9b50bc5af51d80d37a4e18591b2a30854962dcac787285",
"91568baa8beb53db23eb3fb7f22c6e8bd303d103919e19733f2bb642d3e7987a": "0x0d6c6d11a0d7f5dc0cadd1d3f9584dd929193298c74254154f9a2bba9410033c",
"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5": "0xfd12d2324500be3676bca3c261d242bb5692c52cfe2afa4a6cce1fb3bc6a4816",
"9695e2b96ea7b3859da9ed25b7a46a920a776e2fdae19a7bcfdf2b219230452d": "0xe787e33e05981bd03351a46f2cb18fc362c645920f9a036b216b209b76c5225b",
"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43": "0x4428544fbba3d112587cf510b842eedeb5f91ff7bb7cf7cc36fb5b5a72319236",
"72b021217ca3fe68922a19aaf990109cb9d84e9ad004b4d2025ad6f529314419": "0x068cea3219eda440819e401a0d88bbb225f888abb06cd60ab66fc9a5c465e9a1",
"7f4f157e57bfcccd934c566df536f34933e74338fe241a5425ce561acdab164e": "0x4e3b0af02ade7cce8f5611c8fb786a09eb28e84fc1a0e3f046d6a244bdc42997",
"b98e7ae8af2d298d2651eb21ab5b8b5738212e13efb43bd0dfbce7a74ba4b5d0": "0x0b14d08c93635d0e747dd2372307d286895fc9bb4494e9c0bd378ad51f02d455",
"d052e6f54fe29355d6a3c06592fdefe49fae7840df6d8655bf6d6bfb789b56e4": "0x56e08e9a8329decbe913f5b0b1eea35ac8ac827a8dbaf5a9379006ac613126db",
"23199c2bcb1303f667e733b9934db9eca5991e765b45f5ed18bc4b231415f2fe": "0xe46238df7aafb9ea11ed890099cc33e6445e9fbdc8537cf0d76400172bb000aa",
"43cddc3e1d0b17fec1cf2a230f46e9319887a037dcee56e053af44d8259fb042": "0xc340ce58ad605dabe36ffdf42c8c365f4a2be54c8da1ba6bfb439200b3734ba3",
"8e860fb74e60e5736b455d82f60b3728049c348e94961add5f961b02fdee2535": "0xffefaebe0f0f2508b3605f1140d725476bf549b6f54cb14d9c0179e1381bbe04",
"d45392f678a1287b8412ed2aaa326def204a5c234df7cb5552d756c332283d81": "0x7f733d3fcba1c5003c5f163925d410c7212d3370bcf86b2a10ea98116243e9c9",
"765f416f2d676848b5016428bc9295fda3e71d5e97b16df75179a378cef040ec": "0xaaa16e55d9dd89e41635b37165cc1d901f825b7dfbcd9c40ef0cf7e070ef41d0",
"f2fb02c32b055c805e7238d628e5e9dadef274376114eb1f012337cabe93871e": "0x6b33970eedc16ac12e07e9e5488b72edd5010167c6d7ce4783bd54a17a546782",
"236b30dd09a9c00dfeec156c7b1efd646c0f01825a1758e3e4a0679e3bdff179": "0x2bb53e525573d21d1187d5c2ba9a7906b01f69b9ddb8c24748656ddccd68e487",
"c719eb7bab9b2bc060167f1d1680eb34a29c490919072513b545b9785b73ee90": "0x6a1f63bab3b8bb5b90c52333e5ebb2774737c1ba85fde5097e4c484579535d4b",
"c7c60099c12805bea1ae4df2243d6fe72b63be3adeb2208195e844734219967b": "0xf67a2c84883114b27e9a804347a46234ae32d587fbd56d9b4b3e4dd5233cc8ce",
"9095653620547ece988ec51486dc7a6eb2efddbce8ea5bedbd53bf00cca84cf6": "0x06e88e2276916acd3bf6bbdbaeedfde1fe80b2425c77c4e08ea20b1143094bd7",
"88e2d5cbd2474766abffb2a67a58755a2cc19beb3b309e1ded1e357253aa3623": "0xcf68e33a3bc3841a17bf4928bd9ee9d3204d9ee179a06a690494c36db3fdc390",
"b5d0e0fa58a1f8b81498ae670ce93c872d14434b72c364885d4fa1b257cbb07a": "0x2b9a5d4da91b3059edc6d6bd872e41610cbdd945b894c8d467054f0f5b2b6f9e",
"a639c04942ebfdeabf25bf1b88d6608ef387219748d77ea130bc2fa486b9614f": "0xaa0b4298e868346cddadac8ad5cdc722dc4b80c1a91057b36a2a7f8f0f8df87b",
"37505261e557e251290b8c8899453064e8d760ed5c65a779726f2490980da74c": "0x6a8f9eac547430c7569af634c3f66d863e714317983d2198800bd602d6a35ae4",
"70ab610e3ed6642875f4a259dc29175452733316fee440f23fed99154d1d84f7": "0xa7d75b7e766e20b0dcf52318bb9262d1fbc0bf5845d93873d795788e44155dc0",
"fd0690232b0fae5efdc402c1b9aac74176383ff7daf87d021554bda24a38e0ec": "0xf72d07087221b7aeca3576250241be5e9301cd2c9e7098cafed12df90ec1e5bc",
"bd4dbcbfd90e6bc6c583e07ffcb5cb6d09a0c7b1221805211ace08c837859627": "0x414dd1065f58fd2265d1e4bba4e2628a22d16c05004834e7db0f4f96d56b331e",
"5a5d5f7fb72cc84b579d74d1c06d258d751962e9a010c0b1cce7e6023aacb71b": "0xbb5529fe529f8bfe2e2d78bd69b13e3e20e8d674df3d4ba7d3c2e5396543cb33",
"8f218655050a1476b780185e89f19d2b1e1f49e9bd629efad6ac547a946bf6ab": "0xd0e566b054f8171e9ed3337902074c8114bf0b869417b903f530cc1c9d7a3a8e",
"433faaa801ecdb6618e3897177a118b273a8e18cc3ff545aadfc207d58d028f7": "0x00163a8b12a3f1bf9de16664aabcdd63832e262b6f2025d130022d5d1ea2eba5",
"c415de8d2eba7db216527dff4b60e8f3a5311c740dadb233e13e12547e226750": "0x56baceff0dca5a4e903203d7299db74691639ac4c6954e408056675029eb19f8",
"fa17ceaf30d19ba51112fdcc750cc83454776f47fb0112e4af07f15f4bb1ebc0": "0x281303954cd2731c4302e730998998c009d6a2594d47c25e530cd56c7a677ca3",
"ad2fda41998f4e7be99a2a7b27273bd16f183d9adfc014a4f5e5d3d6cd519bf4": "0x5a1809bce6641551979a9b57c7c1ba2c33e2e8b51601432b576d5e1613e1f3d6",
"58f4ee3a0fc4de834a2e96274a696d0f3d8ec45fc76131a6a49fcd18d3ca9812": "0xeb732c4568619bbd79a5dda4c4dc4832905ffe0ff6978ce58efd64250d5bae61",
"8419416ba640c8bbbcf2d464561ed7dd860db1e38e51cec9baf1e34c4be839ae": "0xe5253c1e4f90ceadbcbb69d6324044f36da477c2361292ddc5ab1f6e73f22b40",
"67649450b4ca4bfff97cbaf96d2fd9e40f6db148cb65999140154415e4378e14": "0x868853ce6cde9050158ada5690870fe0b33868400c8d937ef661ada095389fcd",
"63f341689d98a12ef60a5cff1d7f85c70a9e17bf1575f0e7c0b2512d48b1c8b3": "0xd43d6d18ce07b481f0871337b0a3f1d74972852dac3866b8b59b6d367e2d87f8",
"6f9cd89ef1b7fd39f667101a91ad578b6c6ace4579d5f7f285a4b06aa4504be6": "0x846ba321e90a18bdd36bb17e24a931bd67aa9ebab1c61f69dfe798932fb5a691",
"49f6b65cb1de6b10eaf75e7c03ca029c306d0357e91b5311b175084a5ad55688": "0x6a57cd5f71e75a80dc4b2a629ba1062be7c017ca42fd4a938e54fe1906834069",
"6d0af467543fc7daedf7abed96423877560c8d03725f3e5c87516774982a679c": "0xbedd56a5e0b550598a7491e214e06266ebeab015cd74a1d8df8ced0b18b60334",
"6c75e52531ec5fd3ef253f6062956a8508a2f03fa0a209fb7fbc51efd9d35f88": "0xf8583c05f389c74674aa7663026f38f14b844a53bfc3a403c4fbf776ebaadc07",
"3d253019d38099c0fe918291bd08c9b887f4306a44d7d472c8031529141f275a": "0x8a246a343c04b730525a476e77fba9464fc2db37b1a41adab1f1f1891717d6f7",
"93da3352f9f1d105fdfe4971cfa80e9dd777bfc5d0f683ebb6e1294b92137bb7": "0x2da2c95e03f37d2d2e8c37244440f24d19c7d62dad134d5b4dd8c855e287790c",
"7f981f906d7cfe93f618804f1de89e0199ead306edc022d3230b3e8305f391b0": "0x49e76e78ed402461e7382ce401ca01cf58498f676521dd288af86644a12c3a8f",
"95609d32c98a467a72ac419f2e64bb2b8dbd5b00b74f3a0fd72f42343af1743d": "0xb47aee5df8fc414469091ae1b4e4c0c8caaac8455fb979cf87c05eb53e1379a4",
"8879170230c9603342f3837cf9a8e76c61791198fb1271bb2552c9af7b33c933": "0xd91961e22ab01e0b4e543985d0b9eb5407d75a9729fc64353a0ad8f58e4aa17e",
"6d881ecf489bb24aa10468ca332e3ea262a9bf3a8fb9db1eadac9cce544b16b1": "0x493ad7286ac642b6ec2acce4b90f9a501df53ed9b8508f5e5dbef0b4a4121362",
"2394ce86c7d68050ce52797923860f6c1656a73fb11bd10dacb3f9c719acdd1d": "0x2ebd84d2f7e7a27f6adf6daecc7a8c0a613fc6e4b955bed3712bc6b14b6e4852",
"15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864": "0x45168d43a3af945d9f036eff15d264c79700bbfee4ff1def589d07259d8af7c6",
"a0255134973f4fdf2f8f7808354274a3b1ebc6ee438be898d045e8b56ba1fe13": "0x3a074bdc92b4897f66a14d802d64d1ef1f86fbc8f4cfa10a72b3e8365ef34003",
"2fb245b9a84554a0f15aa123cbb5f64cd263b59e9a87d80148cbffab50c69f30": "0x8c14a293c023cd7b95de90ab95aac7a4afe79d0fad06b67be24016c6462a2804",
"301377b122716cee1a498e7930a1836c0b1db84667cc78bbbcbad6c330ea6afb": "0xd562076e43428ff5172e9e11cf925676514440bf6768e86cda740b7096decc1b",
"eef52e09c878ad41f6a81803e3640fe04dceea727de894edd4ea117e2e332e66": "0xe186cf9b253b558790d7022ef5d3cd5ddb88c6e87652e3562821acc06012b81b",
"d69731a2e74ac1ce884fc3890f7ee324b6deb66147055249568869ed700882e4": "0xf01d528249d69a7ee2a8cf185a5c923201525903622d4655767695ed8599ba36",
"649fdd7ec08e8e2a20f425729854e90293dcbe2376abc47197a14da6ff339756": "0x7347eb0d644a2da6e509a8b2f7696843472c0dd3226065e957f45ec6f2f15869",
"ed5c2a2711e2a638573add9a8aded37028aea4ac69f1431a1ced9d9db61b2225": "0xbb3a28603301b0624541f05dda7389d4cf7224f5d12c20140a8cea9b5bd1026b",
"703e36203020ae6761e6298975764e266fb869210db9b35dd4e4225fa68217d0": "0xf1d362ff6d39c7dad6ebc0c16a81904d1a7f3614959c6d02b3d6e08cca9ad769",
"159b09ed169a3cdbd13fd96ef4b3cda54972058906d38a58f5cd327e5df1478b": "0x8226099dfc20f884f3339c01db0913752d7eae1a3e350c6bab77622711a1fb10",
"a995d00bb36a63cef7fd2c287dc105fc8f3d93779f062f09551b0af3e81ec30b": "0xd4870e09a36e2ee62e7dbe16e9d1c244410aeb60979614c4df76121a6862b3bb",
"b216f7ca372b318985903866e0b6dc44a14564828c49f36d0d363805aa76335c": "0xd26f14421e93a4d5e7fba45abe59ed9a5a2b22c174e2215fccb0e021891b9638",
"4b1ddc065d08214eb06878d6130a66665febc3fd201733e9bb481094b5de8a32": "0xdc0c01c3b1eb880e2500fc04fa6769ad1bf832563af3c2fe501ea2e7c8a44786",
"4176cd17d4a1fb517b6535e70084ce85e1bcbe707c66b960c8bd5256accc1b2d": "0xa211acda02cc19ae5fef8614085299188111f6f1d928a6861341c76a8fd7499d",
"1ce9069708fb49e2f1b062fa4f1be0bb151475ca506939d6d8c14386d49f43dc": "0x00223c8d55871de1144004d47843675d8cf3088b32bf605b2c155dc196f00677",
"9c68c0c6999765cf6e27adf75ed551b34403126d3b0d5b686a2addb147ed4554": "0xa09657d175deca19a6ca4eba787d8be37d5bc6762623598007dd25a92cbc764e",
"eff690a187797aa225723345d4612abec0bf0cec1ae62347c0e7b1905d730879": "0xd84087a1eacc338655aac7906b638a92e8ac9e77526c3c5d6ecdef36dc7bde59",
"e1d3115c6e7ac649faca875b3102f1000ab5e06b03f6903e0d699f0f5315ba86": "0xf173f9743d53f9a67428c86cdcc40c2735f55b6bf66b02532d78c7ab3ff4d603",
"0b1e3297e69f162877b577b0d6a47a0d63b2392bc8499e6540da4187a63e28f8": "0x325d448fbee4659a8480be51c4d207b58831bf09087cfda460ed0106ea849349",
"6b1381ce7e874dc5410b197ac8348162c0dd6c0d4c9cd6322672d6c2b1d58293": "0x8815331366174347f07e36179e460867f5e460f7150a3295b8b5aeece3d2b483",
"3607bf4d7b78666bd3736c7aacaf2fd2bc56caa8667d3224971ebe3c0623292a": "0x65d45de4eaaedf2b2d0988428913f6eea3b23581bf080f005d2d605989fd4bb3",
"81a21b01c15b8d01f6cdfed65e00987cc4c901858c821b2089344987de3102e9": "0x88b600db1ec4674c10f91df06c3ebc7021545328b857995aa3945aa4289f8b44",
"ff4c53361e36a9b837433c87d290c229e1f01aec5ef98d9f3f70953a20a629ce": "0x5cd26d092f4a1d3a5f6d78fc4ad529493b3fdabd1853bb886737a4d275b00073",
"fd05a384ba19863cbdfc6575bed584f041ef50554bab3ab482eabe4ea58d9f81": "0x4b00b756ab54ca659a7fcc307b16b338dfd49c8b6a4cf7d07998d246f1f0f72b",
"a5eb88d3ea93f6240d7e54b4466bc1857f7bfc1658d49a07f68096ebc0fdde3b": "0xb1f0bf15509d865d1b611de52eb33ede3767f4601c28d62c2499ef4e5a18aec6",
"26852e2d0696e25e6adaad2d7ca3a1f2f15aab68d317ace14d41b4128a7e780f": "0x99cdb56755105d1de3565c8789e3dee656a23e561d1277440c1f35ead22fc948",
"8376cfd7ca8bcdf372ced05307b24dced1f15b1afafdeff715664598f15a3dd2": "0x6f3e9051d9d4cf95d2164ebad25203ba413c741bc133525b169747756f5cce8e",
"972776d57490d31c32279c16054e5c01160bd9a2e6af8b58780c82052b053549": "0x6f78342af8e9575f6096fece95465e2af4599427a2e232b6fe1867954adc6f84",
"0781209c28fda797616212b7f94d77af3a01f3e94a5d421760aef020cf2bcb51": "0x593a2113695d9d60605b2ef4f7b7a3a9e8832f264e58c249b97a79cf00a0a141",
"ec5d399846a9209f3fe5881d70aae9268c94339ff9817e8d18ff19fa05eea1c8": "0x7ebc795f79ba493870a54bf2eeb4b8e12fe3884d7c626bce8515296e84503652",
"7a5bc1d2b56ad029048cd63964b3ad2776eadf812edc1a43a31406cb54bff592": "0x89dfcba3122a3470d794333141d93d53551aaaba5a1717a433e37f6deb6c7ff5",
"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace": "0xeb9e2b6a86cafdd3410f254eabe64f1048d1382d9a324f3fbbe61fb9da9bb8e8",
"bd640cddb72063e2ede34c6a0baf6699759b9837fcb06aa0e2fbcecb9b65fde7": "0x8ef90489d78228351f2d898d621471b171efd14aa628bf99dc89e33e540202d9",
"49601625e1a342c1f90c3fe6a03ae0251991a1d76e480d2741524c29037be28a": "0xfa758eb1ddb64a74853f768a7fa7bd8b243c13f8e9b8202162711146334c265e",
"b0948a5e5313200c632b51bb5ca32f6de0d36e9950a942d19751e833f70dabfd": "0xa42470d105b61a27c019b5bd30416ebfa629ba0646163bb11eef774b46b1000f",
"7d669ddcdd23d9ef1fa9a9cc022ba055ec900e91c4cb960f3c20429d4447a411": "0x74026eb168b50173148a2cf5cf983285cc2701809c3ac25d580da3dafb342a1b",
"2f2d17abbc1e781bd87b4a5d52c8b2856886f5c482fa3593cebf6795040ab0b6": "0xcef5b2c20b6a38250ba8e2bb8542091ba2e82209d2c63c35b0a6f8ae7bfcfd79",
"6034b1f68b9363dff2cf9d53b1a88fb4d0929c65f34d532db53738853efc00ad": "0x57e58ddc5c907208d5866c1fc184d1dcb0a5eb60b1862875e8458faa5635a0fd",
"e0f87bbde799f33615b83a601b66415e850788000cd7286a3e7295f23c1bb353": "0xe90cac728a1989eff73c4712a6f119836a984e09cc955610e62efb9dcab1c389",
"5c6c0d2386e3352356c3ab84434fafb5ea067ac2678a38a338c4a69ddc4bdb0c": "0xe170de9672b42ede20a23b739b18aa1404277cf42e403b3494c38d4a7b72b3a4",
"f464e36fd4ef2f1c3dc30801a9ab470dcdaaa0af14dd3cf6ae17a7fca9e051c5": "0xd6055e4ad616fd08f983010505e449e67004be63e764d57c3736ddad5d140e90",
"831624f51c7bd4499fe5e0f16dfa2fd22584ae4bdc496bbbbe9ba831b2d9bce9": "0xbf4c132fb75caf3244bcb82f56e1b04db21c82868c878d4c509d193be10677ca",
"05934526b94a9fbe4c4ce0c3792213032f086ee4bf58f2168a7085361af9bdc1": "0x3a44393121d08b3dca64c3e030ec47f6211eae6ed7d7383622a0680ef310ac10",
"9d23a47f843f5c9284832ae6e76e4aa067dc6072a58f151d39a65a4cc792ef9f": "0xfe8ccc5dd7e957c386a16594392ee9e4d53ccd3a1c9c66f3d333df1ebd6bb126",
"16dad506d7db8da01c87581c87ca897a012a153557d4d578c3b9c9e1bc0632f1": "0x1070dedaa1774089600233afee88908a3986201be330876d148f9adf131b1e62",
"c81114e16ec3cbcdf20197ac974aed5a254b941773971260ce09e7caebd6af46": "0x6c883438c24569de4bef718304080e65b1ebd6fa532191b9c69f3a36f148911f",
"0afa3199e0899270a74ddcf5cc960d3c6c4414b4ca71024af1a62786dd24f52a": "0xe097d4952448a08d78ee1c738db14b796c3f4a602c14db0ecc45af3acf660edc",
"2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f": "0x725f0b8a57dd6bcdf1f0b801a1ec0009a58f2f8cec6688bebb9757d365dd4011",
"d0ca23c1cc005e004ccf1db5bf76aeb6a49218f43dac3d4b275e92de12ded4d1": "0xe8c556f8e3441f353f93b6c3697635abfcb69942ac1535db8f4c20c78e625394",
"5b1703d7eb9dc8662a61556a2ca2f9861747c3fc803e01ba5a8ce35cb50a13a1": "0xfab0331c077707ba2d63eff0af9df830dbe8875af971fd5417af06f9a3af29f3",
"4456d442a152fd1f972b18459263ef467d3c29fb9d667e30c463b086691fbc79": "0xd18a2ee6d59cecab223cefd9f567b388fd2a1ad15086a42ee9086e5c8ecd2e5f",
"45b05d03edb6081e7ae536b94b450a42f43e6342791c560a481030b41f9b945d": "0xd9a51d29b7097feb0b56e3573a5aef7426e4bafea2ae4d2ca2d21ae05a48bb0d",
"8ac0c70fff57e9aefdf5edf44b51d62c2d433653cbb2cf5cc06bb115af04d221": "0x765146e6c6e30e4a7495f0f77c1817e50abcb4f3877edbc4bd3f199d7c22f6b4",
"b3a83dbe70b62241b0f916212e097465a1b31085fa30da3342dd35468ca17ca5": "0xa293eac6352f51b426fe26c0ebd1a2691d4379f25f537688490a0e99f4fad32c",
"944f2f908c5166e0732ea5b610599116cd8e1c41f47452697c1e84138b7184d6": "0xc9a6b6937a8d9b076cd6d8ccf43b94bc571d774fae8980e2b4f0ab45a71d6a3f",
"385f64d993f7b77d8182ed5003d97c60aa3361f3cecfe711544d2d59165e9bdf": "0xbfb6957c8ec782ad47274c0274097cdfcb209683f79690897b95543c18a950fb",
"e65ff435be42630439c96396653a342829e877e2aafaeaf1a10d0ee5fd2cf3f2": "0x020257bd7128134cd6a98db78855a1758811c6ccdfa08d1c6ea7b2b5e154d806",
"b881c6dad5dd3dc9a83222f8032fb439859288119afc742d43adc305cef151cc": "0x9bfd9fc818f9e84b99e42040e5f4a3cb17c56df4c3814b89bf8f37a34d76ae31",
"20d096e088a9b85f8cf09278965b77aeb05c00769e2ddeda5ea2d07ea554b283": "0x8fae08b5241bc5b3d76fc135b366db9053ff27e83b95c02b39d7df995bc1c928",
"ef2c98c804ba503c6a707e38be4dfbb16683775f195b091252bf24693042fd52": "0x647a40613ecbeeed6b3044c25cb97566b5f1586493036c88f039e5a7cbf9398a",
"ccca1d2b0d9a9ca72aa2c849329520a378aea0ec7ef14497e67da4050d6cf578": "0x149ba54f5d83a4242c1647387de54025e84775ae31b3e401e0505ba9d84814ce",
"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a": "0xce1b26252c552fbc27c694b34b0279534d66c1b6ac8a8a15a7e0802756381539",
"2dd14c7c38aa7066c7a508aac299ebcde5165b07d5d9f2d94dfbfe41f0bc5f2e": "0x6c08bfd4b367ced7af611e88f0120114ef8ecf3f6c02dda69a3de40b30f078a0",
"7507a4629ad0143550666bce2e7cae0b961a0f624f821feaab642fe1be632f5c": "0xaeb0380e0d875da5d2acf558dc2c47c9308104a4b270aa8fd1d039ad9fe1cc47",
"107918baaaafb79cd9df1c8369e44ac21136d95f3ca33f2373b78f24ba1e3e6a": "0x929166ca35d9ef586f4861eeb16812a6193d5a0a3d8d6aa25ad0308f16bf2e2b",
"c8acad81438490d4ebcac23b3e93f31cdbcb893fcba746ea1c66b89684faae2f": "0x11e6e80d75b9e02f0e7a73c5fd6a037678abbda7c14b6ac53561c5c732b05bbe",
"6e89dbed2351e3c85a9ce1c782ca1e34b6ef2c4775f1cb691739bbe6d0697e86": "0xda7e0bd37e3478d59755e44a8b910794379f8983e5dee2fb7ffbf3ba5ad68f8c",
"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d": "0x2ac120d486ffb07d41d48bf43ca092ec87ebfab30680faf4ef03314d1026e57d",
"70dddcb074263ce201ea9a1be5b3537e59ed5b9060d309e12d61762cfe59fb7e": "0xb1286a78b20a268dee0faadeeac8a366cf50946fc244c1a1121f3cca54b71702",
"ad04597ba688c350a97265fcb60585d6a80ebd37e147b817c94f101a32e58b4c": "0x79e1884e5f17f8af3be116a29eced5ed328a802afbad8260e89baf0fc99e7475",
"8086320540b3d7b9b4b564e6756a29a9cb91a7cd97d5fafff63841959d3a09a0": "0x107ff0e1f03c691ed9b0011bd1f2ae109b0fc405d3fd80136e7382c25caf3a2e",
"3f4b77dd904e849f70e1e812b7811de57202b49bc47c56391275c0f45f2ec481": "0x9024f1b288cb1c7d734ba5978dd18c34d3e0f51f9b4f2a8334fe8d40bf6d01f9",
"a4702f0f5818258783a1e47f453cb20b0fbec32ca67260e1d19dfcdd6a4d0ebb": "0x1f1cfc5943e1d662e50e67b99fb770bb05fb1fb30eb3b8360cc91053c980c664",
"c19405e4c8bdcbf2a66c37ae05a27d385c8309e9d648ed20dc6ee717e7d30e17": "0x756f2ccf9047a226a763b687e044d4bccfb03e5f1b3d941de7bec90f7748266d",
"6d20210495d6518787b72e4ad06bc4df21e68d89a802cf6bced2fca6c29652a6": "0x68cb9005e58ea827135342afc31ba1391832f17321366213a39c3d0087bc4906",
"feff234600320f4d6bb5a01d02570a9725c1e424977f2b823f7231e6857bdae8": "0x871596766a4a6876cbcfbdba61d5e098d95db6251659f25bcd25f74d79df24ac",
"19e09bb805456ada3979a7d1cbb4b6d63babc3a0f8e8a9509f68afa5c4c11cd5": "0xe670146c6741b725ab5e2fd550460d035b8aa9dcb66cb666545c4bbef27814d3",
"235ddea9f40e9af5814dbcc83a418b98e3ee8df1e34e1ae4d45cf5de596023a3": "0x18086cb9c40bc2a8a3233310def4387724fef0bb13857e136ea2ab48a2d65326",
"92eea8ba1b00078cdc2ef6f64f091f262e8c7d0576ee4677572f314ebfafa4c7": "0xa3c0b9d970667d87fffa56a0da7f28e6b3bc30a6cabfd3e8f6685ba17526e30c",
"15ecddd26d49e1a8f1de9376ebebc03916ede873447c1255d2d5891b92ce5717": "0x303928f43b984fca0546ae35b70d8479a353df9e0f6ffdd5158a51dfb75694c0",
"35f1e0d9248599d276111821c0fd636b43eef18737c3bb61c7c5c47059787a32": "0x140257ad88a951c3d37101fceb3768775714bb0c6426b38d6e7a30be29decfbf",
"9aa471dccea36b90703325225ac76189baf7e0cc286b8843de1de4f31f9caa7d": "0xb3c92f18a4a0cece945d6d36d232e6abc1f19b3609a5ec75c0cffbac29f9d43f",
"d57d90cd8554ea0cf8268de30d5ad67fed9a8f11cce5132a49eb687aed832ea6": "0xbf1a106608f6f71fb1ce8331219cbe6cd52093dc9c0d3ebeca90ca7c623b0bd9",
"ca3eed9b267293f6595901c734c7525ce8ef49adafe8284606ceb307afa2ca5b": "0x6ec30b18b3e7cd66322218e6e6904f8f27ca45627b20be58efc7479d28853a1c",
"d00bd77d97dc5769de77f96d0e1a79cbf1364e14d0dbf046e221bce2e89710dd": "0x78930c93cf2927994325d75d161c77c84c4885b7bebd3f57da954eb719b8d0d6",
"05380f8817eb1316c0b35ac19c3caa92c9aa9ea6be1555986c46dce97fed6afd": "0xae174a636ecdeb169c4a42f8c20ce654279d9f54be976814a7eab9caa553ec89",
"c80657b7f6f3eac27218d09d5a4e54e47b25768d9f5e10ac15fe2cf900881400": "0x401a6b36ca1be03b62afb72fc3729bd58e773de5c889188d691f2552566217c0",
"d37e4513ebe235fff81e453d400debaf9a49a5df2b7faa11b3831d35d7e72cb7": "0x0d1302511ced1c04f538a410aec75c3fdd98a09356cbe6e1c4bcf0268aeed21b",
"681e0eb7acf9a2a3384927684d932560fb6f67c6beb21baa0f110e993b265386": "0xe2b124eb856f15621aad931bd3dfe59c7bcc74555ef6c114f32700b5a6157368",
"9ff7b9a93df40f6d7edc8184173c50f4ae72152c6142f001e8202a26f951d710": "0xf5bb207f08bc335db2fcfbe0c6b991124739ca6aef4490aecfb0021633d3c23a",
"f8d030e4ef460b91ad23eabbbb27aec463e3c30ecc8d5c4b71e92f54a36ccdbd": "0x58eba59d0c838f172f2996b9700b6884ede500c805724849e5b444b665824ac2",
"abe4f2b264560a397f38eec024369356e5c1ea4f7aab94729369f144b3d97779": "0x1d5139a3e56f312c5e5c10be74e6da317bbb84edbb37c6caf7ab347253f76ec1",
"07ad7b4a7662d19a6bc675f6b467172d2f3947fa653ca97555a9b20236406628": "0x633ae4b37ce1550bb4a0e5c55cb7c70bb59cfa54aa56261295fdeecf1eac23f3",
"a1a6465f4c2ebf244c31d80bc95c27345a3424e428c2def33eced9e90d3f701b": "0x4049a33c588398f5c94d3b6b2d451b148c43ab8eeaa2e7d83c3ef849282bd6ff",
"e6ccd3f878cf338e6732bf59f60943e8ca2c28402fc4d9c258503b2edbe74a31": "0x5480f43cc0b086935e4220fc77c7572d59a6fe9e7c2cef57a6507430def5cae2",
"3b4656b0d92f0e995024c3dacfc28c47d11af83b374a56c26e514e9a7e46a240": "0x95de11d62fb62cfc939af4f6b311bef4c96a13af7360e81658f3d4d54974b788",
"be4cb6bf8f18e84b1c4fd6fafa7f048a972be26505bd58338eb66c80faa99483": "0x3911534919fe7be175f74cf4db6d5d9c18554319feace46485c87421111abe10",
"b7e3904c08ddd9c0c10c6d207d390fd19e87eb6aab96304f571ed94caebdefa0": "0xddb8b30fcbde7846b99904be0cdcbf2a6b77873f8e7246bed369d6707ce232c8",
"06d9fa501fd2bef47265361ca0eaf6e0a97c3b226cea5ab760240f70818581ad": "0xa904b97f02938e3286db15c740d7b8cc7e7ea87c7fef24584463adc630c7482e",
"9c479b12a2b2c1051715d4d462dd7a6abbb6dccabf3af31a53f6130a1cd88efc": "0x9e91359f2f244341306653d3da420a54cba72e699205cfa83290fbfb47971b61",
"e799f456b358a2534aa1b45141d454ac04b444ed23b1440b778549bb758f2b5c": "0xedf5c28a19358b291815f5e623e49ed07596474c200e287cf4f23b5ccf6bd6cd",
"5b70af49d639eefe11f20df47a0c0760123291bb5bc55053faf797d1ff905983": "0xa61677c7fda3c869db3aa6ffc3df6296cdff1134719422354dfaf5bb83e1545f",
"67aed5a24fdad045475e7195c98a98aea119c763f272d4523f5bac93a4f33c2b": "0x508027546cc92b430f9601a01f301391e39d1bd687fe2b399567ec7faa390e41",
"5de33a9112c2b700b8d30b8a3402c103578ccfa2765696471cc672bd5cf6ac52": "0x9754210c1804a6b65a3ba2612b0a0c109b60354cc802a2d5eafe84ef76e0f5d0",
"78a3e3b8e676a8f73c439f5d749737034b139bbbe899ba5775216fba596607fe": "0x71ad87ab2bbba663f77aac0a4945a93a7bfb21f3664d91b29c15ed99040f8bbe",
"84c2dde9633d93d1bcad84e7dc41c9d56578b7ec52fabedc1f335d673df0a7c1": "0x0297d202195fd41c4152cd474610074f2563e6f44807ecf42f5c63c796a53d63",
"c9e9d228f565c226dfb8ed5f5c9c4f57ab32b7ade7226c3239ff20911a9c3a7b": "0x385ae1ad494712516b4316a7f3c16030250020a9b15efeba9b4d001f2599c051",
"70cd05521e3bdeaee2cadc1360f0d95397f03275f273199be35a029114f53a3b": "0x5a30cddba6a21106320366eaa5053b48a45c9b0d9c38b36f10c55de20e74144a",
"5bc91f13e412c07599167bae86f07543f076a638962b8d6017ec19dab4a82814": "0xce72042c196a3bdc47658b525f95407251a9428a83a3377fd51637471cf0e86c",
"baa284eaf23edf975b371ba2818772f93dbae72836bbdea28b07d40f3cf8b485": "0x62f2403f3470ebdef88c3dd22a402b02f14dd5801307409b639239bd22e27f39",
"6b701e292e0836d18a5904a08fe94534f9ab5c3d4ff37dc02c74dd0f4901944d": "0x5116298c002c1e37c9801e6853eece63a962115213db0fa4a49303955ee00dc8",
"c2289a6a43d2ce91c6f55caec370f4acc38a2ed477f58813334c6d03749ff2a4": "0xbe4ea6a4d49736d4a3d6d96ae0a5055ed5372ab7e6d3d72abaa32d69058469cf",
"b00b60f88b03a6a625a8d1c048c3f66653edf217439983d037e7222c4e612819": "0x30f3c5f93666236348fdc7207427741e27342602f236ffa761114d17108f955e",
"e13b1c1ffb32f34e1be9545583f01ef385fde7f42ee66049d30570dc866b77ca": "0x82b57fac17738db916e60e25c7da72bc744b981565e08f78abb9616caa0b3b22",
"b962539d0fcb272a494d65ea56f94851c2bcf8823935da05bd628916e2e9edbf": "0xddc9e159f69768ab723666dc15f1bd906b0bb2cfd2752b62bd92691459d5cf6d",
"78d185a741d07edb3412b09008b7c5cfb9bbbd7d568bf00ba737b456ba171501": "0x6d6c7f0b6508af7faa61044ff392fc8f7034b9ba237a1e64ea0fcbb83914c3c5",
"c63e2a7f37a04e5e614c07238bedb25dcc38927fba8fe890597a593c0b2fa4ad": "0x41c91ba219d7af23a1eb4f89df0599a229a60719d8cc181dba3db774496e80a5",
"8ff1200345393bb25be4f4eeb2d97234e91f7e6213f3745a694b1436e700f271": "0xb3ec595dfe31a7a5bbc34a9120230dd2243d84988d79d3944ebfc9051b913d89",
"cfd44471407f4da89d469242546bb56f5c626d5bef9bd8b9327783065b43c3ef": "0xd2a6d3112f39345a30692c389f071b293e6175737706a691bcb3bf69f877f3aa",
"1021a42d623ab4fe0bf8c47fd21cc10636e39e07f91e9b2478551e137d512aaa": "0xa1dad8dd9cea416bfd789732606668c3ee8b5118dc54f2f19627834d7a092819",
"3dd2b63686a450ec7290df3a1e0b583c0481f651351edfa7636f39aed55cf8a3": "0xd7df130dcda9b2f2c3e437940d55d225cf594354a0b02de2b19a2b2b15d9b993",
"c1751e085ee292b8b3b9dd122a135614485a201c35dfc653553f0e28c1baf3ff": "0xa7fd5e025b891d334e4a3923aad7dc69454ada52bb9791669ec881bc8251a87f",
"6aac625e125ada0d2a6b98316493256ca733a5808cd34ccef79b0e28c64d1e76": "0x3b19ade0936c6b7fe8f8880e20975f10a980b960edb1b2e745c2001fc03ad6e8",
"a19d04ac696c7a6616d291c7e5d1377cc8be437c327b75adb5dc1bad745fcae8": "0xdc754ecf151ce912b20854fff885227a7aee5174c43dd8a82ae31f86b11152c1",
"1dcf38b0206d27849b0fcb8d2df21aff4f95873cce223f49d7c1ea3c5145ec63": "0xaa4121fdc7231b8e69a1013bfbb77f33809e742057583cdf98ce052c214942ba",
"389d889017db82bf42141f23b61b8de938a4e2d156e36312175bebf797f493f1": "0x010414e5bd8c0207a0f854274075408ce2923606da87accaab8486851b10a634",
"6ed3c7c4427ae2f91707495fc5a891b30795d93dbb3931782ddd77a5d8cb6db7": "0x0426ae24d6351a48242f0eba794a6b22f4c79839d50694a2b7a9b0de0cbf7bee",
"48ce0cf436bac22dad33551dfe2eb7bf9991e419a05f25aed4e90c29c3a1cdbe": "0x1da3431d92ee78272aaff4f207171138b16844d91e7134ac392d2ebee4815e22",
"1888f463c27997174f97d2a36af29bf4648b61a5f69e67c45505a80f826bb785": "0x22f3da8a4ebdeaf6a29ed5422960a62040daab2cd0d1e673d68a8d4d44da1835",
"07a8f31e8910c3b52f338d2aca6f4dc2404753ebafcdf53290ef4993911a71f8": "0x41e2a7778d36d25ed0508f8cdfda395574ec853faf2d11e69e7ea451cdfaa3c4",
"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744": "0x2b35fc431e0c7533fef132e3a6a569d09dd92285305e9c876cb4dadb1a039b68",
"396a969a9c1480fa15ed50bc59149e2c0075a72fe8f458ed941ddec48bdb4918": "0x000ee451a8b800512bcb2f9d03e8f3649cfb8c803c632b56d3bc165074fc20f4",
"b82449fd728133488d2d41131cffe763f9c1693b73c544d9ef6aaa371060dd25": "0x0a18f3930026fb51e1e3964a65fea3425fe13ff2a09a71e3d4c9dd28ab4879d9",
"6e3f3fa8253588df9326580180233eb791e03b443a3ba7a1d892e73874e19a54": "0xf3c0d2d98958ef9e677084cc0068bc48c6f07606708c64b06a09a0483a7b7531",
"ee70804471fe22d029ac2d2b00ea18bbf4fb062958d425e5830fd25bed430345": "0xa7a6fb1ea440bb5c0ada4a0a9459e904c7ae2443d92e72cb53eb3b9d192f843f",
"c3d5d8d6d17081b3d0bbca6e2fa3a6704bb9a9561d9f9e1dc52db47629f862ad": "0xcb826a89a5331cf23436ac1fd0ea2adb46698c880fc7152a20f9300d0e05776a",
"23245bb74254e65a98cc3ff4a37443d79f527e44e449750ad304538b006f21bc": "0x77fc923adc5c78bb969bcaadcb840f32acc2ebbcd327987c056a7d7ca0d96d6c",
"4457960559b812558bb0f8cb7912f8bcb843eb801a3133ef45be998630ff8c05": "0x108e02825bf4d1b4a371bd839915feabb34675d5442dae9f41080d7eccc2b450",
"59671f59d12dc81bae078754b7469c7434528a66d3fa91193cf204460c198f9b": "0x737bbb7c8fa169933b93ed6de89074a8933c7d05113726e3f4f31e5eea7059a2",
"956740a4e169e90bb141abfe93652ae3434693bc7ca43cbcea6471408f19ab90": "0xfd08b4637699978fee0a4a5d4257582e6841c253794ca5fd4dc0fb54d31fcc89",
"8cdc9b2118d2ce55a299f8f1d700d0127cf4036d1aa666a8cd51dcab4254284f": "0x723470143332c8f375823c5c6a85bc8d0b26e974eb4a55ea05c8374d75f7c991",
"39d020f60982ed892abbcd4a06a276a9f9b7bfbce003204c110b6e488f502da3": "0x0af856c1799c48dc8ac882ed015afc093d32210d831b270e3b6a43b9f8077b6c",
"097d687437374051c75160d648800f021086bc8edf469f11284491fda8192315": "0xbe069cc5122df358b63d8a4686fa079ec52c5a6d58c5ee6fc9c78976e05f353c",
"9f383d612ac09c7e6ffda24deca1502fce72e0ba58ff473fea411d9727401cc1": "0x4a8944797dc1845f5a3617b7057c01d1714bee6d41e808cf038632f6ae811212",
"846ae1bdb6300b817cee5fdee2a6da192775030db5615b94a465f53bd40850b5": "0x8183a78bc77dda0a9df8441ca8a2bc2b18e9e883e04b36ac08996ed4691081c7",
"856aac602516addee497edf6f50d39e8c95ae5fb0da1ed434a8c2ab9c3e877e9": "0x66d181f1031dcc934fc7b787ff7181560c1fed490466247a4966aba26fcf31b8"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,118 @@
/// We build a programmable txn to create all price feeds.
import dotenv from "dotenv";
import axios from "axios";
import { PriceServiceConnection } from "@pythnetwork/price-service-client";
import * as _ from "lodash";
import {
RawSigner,
SUI_CLOCK_OBJECT_ID,
TransactionBlock,
JsonRpcProvider,
Ed25519Keypair,
Connection,
} from "@optke3/sui.js";
dotenv.config({ path: "~/.env" });
import { REGISTRY, NETWORK } from "../registry";
// ================== Network dependent settings ==================
let network = NETWORK.MAINNET; // <= NOTE: Update this when changing network
const walletPrivateKey = process.env.SUI_MAINNET; // <= NOTE: Update this when changing network
const price_feed_id_url = "https://xc-mainnet.pyth.network/api/price_feed_ids"; // <= NOTE: Update this when changing network
const connection = new PriceServiceConnection(
"https://xc-mainnet.pyth.network", // <= NOTE: Update this when changing network
{
priceFeedRequestConfig: {
binary: true,
},
}
);
// ================================================================
const registry = REGISTRY[network];
const provider = new JsonRpcProvider(
new Connection({ fullnode: registry["RPC_URL"] })
);
async function main() {
if (walletPrivateKey === undefined) {
throw new Error("Wallet key unset in environment");
}
const wallet = new RawSigner(
Ed25519Keypair.fromSecretKey(Buffer.from(walletPrivateKey, "hex")),
provider
);
console.log("wallet address: ", wallet.getAddress());
// Fetch all price IDs
let { data } = await axios.get(price_feed_id_url);
const price_feed_ids = data;
console.log("num price feed ids: ", price_feed_ids.length);
// Create price feeds 20 at a time
for (let chunk of _.chunk(price_feed_ids, 20)) {
//@ts-ignore
const priceFeedVAAs = await connection.getLatestVaas(chunk);
console.log("price feed VAAs len: ", priceFeedVAAs.length);
console.log("sample vaa: ", priceFeedVAAs[0]);
await create_price_feeds(wallet, registry, priceFeedVAAs);
}
}
main();
async function create_price_feeds(
signer: RawSigner,
registry: any,
priceFeedVAAs: Array<string>
) {
let PYTH_PACKAGE = registry["PYTH_PACKAGE_ID"];
let PYTH_STATE = registry["PYTH_STATE_ID"];
let WORM_PACKAGE = registry["WORMHOLE_PACKAGE_ID"];
let WORM_STATE = registry["WORMHOLE_STATE_ID"];
console.log("PYTH_PACKAGE: ", PYTH_PACKAGE);
console.log("PYTH_STATE: ", PYTH_STATE);
console.log("WORM_PACKAGE: ", WORM_PACKAGE);
console.log("WORM_STATE: ", WORM_STATE);
console.log("SUI_CLOCK_OBJECT_ID: ", SUI_CLOCK_OBJECT_ID);
for (let vaa of priceFeedVAAs) {
const tx = new TransactionBlock();
let [verified_vaa] = tx.moveCall({
target: `${WORM_PACKAGE}::vaa::parse_and_verify`,
arguments: [
tx.object(WORM_STATE),
tx.pure([...Buffer.from(vaa, "base64")]),
tx.object(SUI_CLOCK_OBJECT_ID),
],
});
tx.moveCall({
target: `${PYTH_PACKAGE}::pyth::create_price_feeds`,
arguments: [
tx.object(PYTH_STATE),
tx.makeMoveVec({
type: `${WORM_PACKAGE}::vaa::VAA`,
objects: [verified_vaa],
}),
tx.object(SUI_CLOCK_OBJECT_ID),
],
});
tx.setGasBudget(2000000000);
let result = await signer.signAndExecuteTransactionBlock({
transactionBlock: tx,
options: {
showInput: true,
showEffects: true,
showEvents: true,
showObjectChanges: true,
showBalanceChanges: true,
},
});
console.log(result);
}
}

View File

@ -0,0 +1,99 @@
/// We build a programmable txn to create a price feed.
import dotenv from "dotenv";
import {
RawSigner,
SUI_CLOCK_OBJECT_ID,
TransactionBlock,
JsonRpcProvider,
Ed25519Keypair,
Connection,
} from "@optke3/sui.js";
dotenv.config({ path: "~/.env" });
import { REGISTRY, NETWORK } from "../registry";
// ================== Network dependent settings ==================
let network = NETWORK.TESTNET; // <= NOTE: Update this when changing network
const walletPrivateKey = process.env.SUI_TESTNET_BASE_64; // <= NOTE: Update this when changing network
// ================================================================
const registry = REGISTRY[network];
const provider = new JsonRpcProvider(
new Connection({ fullnode: registry["RPC_URL"] })
);
async function main() {
if (walletPrivateKey === undefined) {
throw new Error("SUI_TESTNET unset in environment");
}
const wallet = new RawSigner(
Ed25519Keypair.fromSecretKey(
network == "MAINNET"
? Buffer.from(walletPrivateKey, "hex")
: Buffer.from(walletPrivateKey, "base64").subarray(1)
),
provider
);
console.log(wallet.getAddress());
const vaa_bytes =
"AQAAAAABAMN885gNTVEako6fczJq22AOFSRWdUsUOxPQVHSnxhj3ecU2gJVDBlAcY6G9FWmGCcGcdZ/5iVXQCm+0loHvfqwAZE/kXQAAAAAAGqJ4OdZBsHdDwMtfaMUfjNMdLAdivsANxvzSVDPvGrW2AAAAAADugxEBUDJXSAADAAEAAQIABQCdWnl7akEQMaEEfYaw/fhuJFW+jn/vFq7yPbIJcj2vlB9hIm05vuoZ0zTxfC/rzifhJkbYRnWSTrsCuc2upocn4wAAAABBxD4gAAAAAAAJ2WD////4AAAAAEIrzm4AAAAAAAn/ewEAAAABAAAAAgAAAABkT+RdAAAAAGRP5F0AAAAAZE/kXAAAAABBxC0/AAAAAAAJi/EAAAAAZE/kXLWIXWbTUV6YNI7DMlk7XRbg/bhT77Ye1dzAvPgOkWCB11ZqO6f3KG7VT0rn6YP0QgrgseDziS4R+cSrEHu617kAAAAAZCplIAAAAAAAEu4I////+AAAAABkvzOKAAAAAAAQZDgBAAAAAQAAAAIAAAAAZE/kXQAAAABkT+RdAAAAAGRP5FwAAAAAZCplIAAAAAAAFIotAAAAAGRP5Fw3+21L/xkSgKfP+Av17aeofBUakdmoW6So+OLPlX5BjbMn2c8OzXk6F1+nCsjS3BCdRGJ1jlVpYsSoewLsTz8VAAAAAC1gXb0AAAAAAAdkLv////gAAAAALZa00gAAAAAABpwgAQAAAAEAAAACAAAAAGRP5F0AAAAAZE/kXQAAAABkT+RcAAAAAC1gXb0AAAAAAAdkLgAAAABkT+RcHNsaXh40VtKXfuDT1wdlI58IpChVuVCP1HnhXG3E0f7s9VN3DZsQll+Ptkdx6T9WkKGC7cMr5KMjbgyqpuBYGgAAAAewLri2AAAAAAEnq0n////4AAAAB7uEHmgAAAAAAV8hnAEAAAABAAAAAgAAAABkT+RdAAAAAGRP5F0AAAAAZE/kXAAAAAewBz2PAAAAAAE4kisAAAAAZE/kXGogZxwOP4yyGc4/RuWuCWpPL9+TbSvU2okl9wCH1R3YMAKUeVmHlykONjihcSwpveI2fQ7KeU93iyW1pHLxkt4AAAACtJQuKQAAAAAAn4lX////+AAAAAK3aIHUAAAAAACmrg4BAAAAAQAAAAIAAAAAZE/kXQAAAABkT+RdAAAAAGRP5FwAAAACtJOhZQAAAAAAnAlPAAAAAGRP5Fw=";
create_price_feeds(wallet, registry, vaa_bytes);
}
main();
async function create_price_feeds(
signer: RawSigner,
registry: any,
vaa_bytes: string
) {
const tx = new TransactionBlock();
let PYTH_PACKAGE = registry["PYTH_PACKAGE_ID"];
let PYTH_STATE = registry["PYTH_STATE_ID"];
let WORM_PACKAGE = registry["WORMHOLE_PACKAGE_ID"];
let WORM_STATE = registry["WORMHOLE_STATE_ID"];
console.log("PYTH_PACKAGE: ", PYTH_PACKAGE);
console.log("PYTH_STATE: ", PYTH_STATE);
console.log("WORM_PACKAGE: ", WORM_PACKAGE);
console.log("WORM_STATE: ", WORM_STATE);
console.log("SUI_CLOCK_OBJECT_ID: ", SUI_CLOCK_OBJECT_ID);
let [verified_vaa] = tx.moveCall({
target: `${WORM_PACKAGE}::vaa::parse_and_verify`,
arguments: [
tx.object(WORM_STATE),
tx.pure([...Buffer.from(vaa_bytes, "base64")]),
tx.object(SUI_CLOCK_OBJECT_ID),
],
});
tx.moveCall({
target: `${PYTH_PACKAGE}::pyth::create_price_feeds`,
arguments: [
tx.object(PYTH_STATE),
tx.makeMoveVec({
type: `${WORM_PACKAGE}::vaa::VAA`,
objects: [verified_vaa],
}), // has type vector<VAA>,
tx.object(SUI_CLOCK_OBJECT_ID),
],
});
tx.setGasBudget(2000000000);
let result = await signer.signAndExecuteTransactionBlock({
transactionBlock: tx,
options: {
showInput: true,
showEffects: true,
showEvents: true,
showObjectChanges: true,
showBalanceChanges: true,
},
});
console.log(result);
return result;
}

View File

@ -0,0 +1,100 @@
/// Deploy Pyth to Sui testnet (devnet deploy can be done via CLI)
import {
fromB64,
getPublishedObjectChanges,
normalizeSuiObjectId,
RawSigner,
TransactionBlock,
JsonRpcProvider,
Ed25519Keypair,
Connection,
} from "@optke3/sui.js";
import { execSync } from "child_process";
import dotenv from "dotenv";
import { REGISTRY, NETWORK } from "../registry";
dotenv.config({ path: "~/.env" });
// ================== Network dependent settings ==================
let network = NETWORK.MAINNET; // <= NOTE: Update this when changing network
const walletPrivateKey = process.env.SUI_MAINNET; // <= NOTE: Update this when changing network
// ================================================================
const registry = REGISTRY[network];
const provider = new JsonRpcProvider(
new Connection({ fullnode: registry["RPC_URL"] })
);
async function main() {
if (walletPrivateKey === undefined) {
throw new Error("Wallet unset in environment");
}
const wallet = new RawSigner(
Ed25519Keypair.fromSecretKey(Buffer.from(walletPrivateKey, "hex")),
provider
);
await publishPackage(wallet, "../contracts");
}
main();
async function publishPackage(signer: RawSigner, packagePath: string) {
try {
// Build contracts
const buildOutput: {
modules: string[];
dependencies: string[];
} = JSON.parse(
execSync(
`sui move build --dump-bytecode-as-base64 --path ${packagePath} 2> /dev/null`,
{
encoding: "utf-8",
}
)
);
console.log("buildOutput: ", buildOutput);
// Publish contracts
const transactionBlock = new TransactionBlock();
transactionBlock.setGasBudget(4000000000);
const [upgradeCap] = transactionBlock.publish({
modules: buildOutput.modules.map((m: string) => Array.from(fromB64(m))),
dependencies: buildOutput.dependencies.map((d: string) =>
normalizeSuiObjectId(d)
),
});
// Transfer upgrade capability to deployer
transactionBlock.transferObjects(
[upgradeCap],
transactionBlock.pure(await signer.getAddress())
);
// Execute transactions
const res = await signer.signAndExecuteTransactionBlock({
transactionBlock,
options: {
showInput: true,
showObjectChanges: true,
},
});
const publishEvents = getPublishedObjectChanges(res);
if (publishEvents.length !== 1) {
throw new Error(
"No publish event found in transaction:" +
JSON.stringify(res.objectChanges, null, 2)
);
}
return res;
} catch (e) {
throw e;
} finally {
}
}

View File

@ -0,0 +1,54 @@
import { Connection, JsonRpcProvider } from "@mysten/sui.js";
// ================== Network dependent settings ==================
const provider = new JsonRpcProvider(
new Connection({ fullnode: "https://fullnode.mainnet.sui.io:443" }) // <= NOTE: Update this when changing network
);
const objectId =
"0x14b4697477d24c30c8eecc31dd1bd49a3115a9fe0db6bd4fd570cf14640b79a0"; // <= NOTE: Update this when changing network AND with new deployment
// ================================================================
async function main() {
// Table of Sui Pyth PriceIdentifier => Price Info Object IDs
let nextCursor;
let hasNextPage = false;
let map = new Map<string, string>();
do {
const dynamic_fields = await provider.getDynamicFields({
parentId: objectId,
cursor: nextCursor,
});
console.log(dynamic_fields);
let promises = await Promise.all(
dynamic_fields.data.map((x) =>
provider.getObject({ id: x.objectId, options: { showContent: true } })
)
);
//@ts-ignore
let get_key = (x) =>
Buffer.from(x.data.content.fields.name.fields.bytes).toString("hex");
let get_value = (x) => x.data.content.fields.value;
let key_value_pairs = promises.map((x) => [get_key(x), get_value(x)]);
console.log("key value pairs: ", key_value_pairs);
for (let x of key_value_pairs) {
console.log("entry in key value pairs: ", x);
map.set(x[0], x[1]);
}
// pagination
nextCursor = dynamic_fields.nextCursor;
hasNextPage = dynamic_fields.hasNextPage;
// Sleep to not hit rate limit.
console.log("Going to sleep for 10 seconds...");
await new Promise((f) => setTimeout(f, 10000));
} while (hasNextPage);
console.log("map size: ", map.size);
console.log("map is: ", map);
}
main();

View File

@ -0,0 +1,31 @@
/// Fetch price feed VAAs of interest from the Pyth
/// price feed service.
import { PriceServiceConnection } from "@pythnetwork/price-service-client";
import axios from "axios";
async function main() {
const connection = new PriceServiceConnection(
"https://xc-mainnet.pyth.network",
{
priceFeedRequestConfig: {
binary: true,
},
}
);
// Fetch all price IDs
//let {data} = await axios.get("https://xc-mainnet.pyth.network/api/price_feed_ids")
//console.log("number of all price feed ids: ", data.length)
let data = [
"0x63f341689d98a12ef60a5cff1d7f85c70a9e17bf1575f0e7c0b2512d48b1c8b3",
//"0x8b62866fcd3a25ff9118506444e9fe5171e67c61a049f4b4fdacdbc31ae862bb", // testnet
//"0x0e60a64dcbd660e87a08eb2cc95e8d84d1126fd7354d377b3fc5730352f4b8b2", // testnet
//"0x651071f8c7ab2321b6bdd3bc79b94a50841a92a6e065f9e3b8b9926a8fb5a5d1", // testnet
];
const priceFeedVAAs = await connection.getLatestVaas(data);
//console.log("number of VAAs: ", priceFeedVAAs.length)
console.log(priceFeedVAAs);
}
main();

View File

@ -0,0 +1,106 @@
import dotenv from "dotenv";
import {
RawSigner,
TransactionBlock,
JsonRpcProvider,
Ed25519Keypair,
Connection,
} from "@optke3/sui.js";
import { REGISTRY, NETWORK, INITIAL_DATA_SOURCES } from "../registry";
dotenv.config({ path: "~/.env" });
// ================== Network dependent settings ==================
let network = NETWORK.MAINNET; // <= NOTE: Update this when changing network
let walletPrivateKey = process.env.SUI_MAINNET; // <= NOTE: Update this when changing network
// ================================================================
const registry = REGISTRY[network];
const initial_data_sources = INITIAL_DATA_SOURCES[network];
const provider = new JsonRpcProvider(
new Connection({ fullnode: registry["RPC_URL"] })
);
async function main() {
if (walletPrivateKey === undefined) {
throw new Error("Wallet key unset in environment");
}
const wallet = new RawSigner(
Ed25519Keypair.fromSecretKey(Buffer.from(walletPrivateKey, "hex")),
provider
);
const PYTH_PACKAGE = registry["PYTH_PACKAGE_ID"];
// NOTE: Set these before calling init_pyth
const upgradeCap =
"0x82d5b1ab3bd40d121f1a9b073815f241ccd696edf324d2a386d38477f0834082";
const deployerCap =
"0x5bc07a9e7627534680313a2a0499cbbaa76c4b50db30eb86e85ae211c26fc911";
init_pyth(wallet, PYTH_PACKAGE, deployerCap, upgradeCap);
}
main();
/// Use a programmable transaction block to call
/// the Pyth pyth::pyth::init_pyth function.
async function init_pyth(
signer: RawSigner,
pythPackage: string,
deployerCap: string,
upgradeCap: string
) {
console.log("GOVERNANCE_CHAIN: ", initial_data_sources["GOVERNANCE_CHAIN"]);
console.log("GOVERNANCE_ADDRESS: ", [
...Buffer.from(initial_data_sources["GOVERNANCE_ADDRESS"], "hex"),
]);
console.log(
"DATA_SOURCE_CHAINS: ",
initial_data_sources["DATA_SOURCE_CHAINS"]
);
console.log(
"DATA_SOURCE_ADDRESSES: ",
initial_data_sources["DATA_SOURCE_ADDRESSES"].map((x) => [
...Buffer.from(x, "hex"),
])
);
const tx = new TransactionBlock();
tx.moveCall({
target: `${pythPackage}::pyth::init_pyth`,
arguments: [
tx.object(deployerCap),
tx.object(upgradeCap),
tx.pure(60), // stale price threshold
tx.pure(initial_data_sources["GOVERNANCE_CHAIN"]), // governance emitter chain id
tx.pure([
...Buffer.from(initial_data_sources["GOVERNANCE_ADDRESS"], "hex"),
]), // governance emitter chain address
tx.pure(initial_data_sources["DATA_SOURCE_CHAINS"]), // data source emitter chain ids
tx.pure(
initial_data_sources["DATA_SOURCE_ADDRESSES"].map((x) => [
...Buffer.from(x, "hex"),
])
), // data source addresses
tx.pure(1), // base update fee
],
});
tx.setGasBudget(2_000_000_000n);
let result = await signer.signAndExecuteTransactionBlock({
transactionBlock: tx,
options: {
showInput: true,
showEffects: true,
showEvents: true,
showObjectChanges: true,
showBalanceChanges: true,
},
});
console.log(result);
return result;
}

View File

@ -0,0 +1,427 @@
import axios from "axios";
import { Buffer } from "buffer";
const price_ids_to_price_objects = {
"4e53c6ef1f2f9952facdcf64551edb6d2a550985484ccce6a0477cae4c1bca3e":
"0x22d83073f60ede68f262043f367d457b161761884cd24bb17666e8c196b266eb",
c63e2a7f37a04e5e614c07238bedb25dcc38927fba8fe890597a593c0b2fa4ad:
"0x813dab097dc9a913a37553dc21a51ec264c5b3018a9148530ee5d4131d9cd948",
"389d889017db82bf42141f23b61b8de938a4e2d156e36312175bebf797f493f1":
"0x12cd27871301e7b10488d294b21fdca0e02208d60d966cc363137c432bce49dd",
"6489800bb8974169adfe35937bf6736507097d13c190d760c557108c7e93a81b":
"0x8f011dc003102d272bcfb9a1423ed9ab16bf8720102888dbdf3481dc2b81fe52",
"703e36203020ae6761e6298975764e266fb869210db9b35dd4e4225fa68217d0":
"0xbff692a9a42736393001e997f0895203c81a0b0d7d100177150d3ca2404c2264",
"2f7c4f738d498585065a4b87b637069ec99474597da7f0ca349ba8ac3ba9cac5":
"0x7b06c8e0204faba400a6b69c75b51fe84ef24c4251340f4b00eca37852ef9944",
"12848738d5db3aef52f51d78d98fc8b8b8450ffb19fb3aeeb67d38f8c147ff63":
"0xc9c0f5b0c331f02792cf47a6136fdea01772aa6e8bcd0acd7927b2cbf0c9500b",
"6e89dbed2351e3c85a9ce1c782ca1e34b6ef2c4775f1cb691739bbe6d0697e86":
"0x73198faa767ea791159fb8c64c71ff490793fbe1abec0af9d959653739b86242",
d69731a2e74ac1ce884fc3890f7ee324b6deb66147055249568869ed700882e4:
"0x7786857b0713ec6b060c873ba9ebf70cdbe8770453214aa7129e0965d3a8725d",
b962539d0fcb272a494d65ea56f94851c2bcf8823935da05bd628916e2e9edbf:
"0xd9b07adaceffb21296de31b46ef0f1db8825a83098d22af07f60205c6394bdd7",
"15ecddd26d49e1a8f1de9376ebebc03916ede873447c1255d2d5891b92ce5717":
"0x2b9e4beab792ea64bf6dea7d1d4455a6ff70744602a73388b3d03fc58cc0eca4",
"6c75e52531ec5fd3ef253f6062956a8508a2f03fa0a209fb7fbc51efd9d35f88":
"0xe6eb8bc3a9cdab5955a78ebf0dd3f5e4ed3458ab4491285345dd8a6d0aecd2af",
"8086320540b3d7b9b4b564e6756a29a9cb91a7cd97d5fafff63841959d3a09a0":
"0x29405b9f25ad9deb23357298732edb4383d3745ffd9a0373cf3028992d85cf99",
d37e4513ebe235fff81e453d400debaf9a49a5df2b7faa11b3831d35d7e72cb7:
"0x94223482aa78b4dc59f670ca42c8c9a93b90b0c21721f6a9d679e3f5a50e4434",
b98e7ae8af2d298d2651eb21ab5b8b5738212e13efb43bd0dfbce7a74ba4b5d0:
"0x6f5059e755771ad838278b6407a769717b40629f4655bfe9c2afe781cce5d966",
dcef50dd0a4cd2dcc17e45df1676dcb336a11a61c69df7a0299b0150c672d25c:
"0x08eae5969d90a4f03e33582077407608f74df4ccc5273cae3236710f68dc348e",
"4b1ddc065d08214eb06878d6130a66665febc3fd201733e9bb481094b5de8a32":
"0xe883778d404e7c9eb7ff6fa190e8ddaa26a1b175c02cb00b1b72a4390e38c5f7",
bd4dbcbfd90e6bc6c583e07ffcb5cb6d09a0c7b1221805211ace08c837859627:
"0x0ec8b3c28c4240c5acc6c7ff145310d6d2129e6b718189be9c36828d75cf136e",
"150ac9b959aee0051e4091f0ef5216d941f590e1c5e7f91cf7635b5c11628c0e":
"0x72f36e3b229031b91718b533cde17bf48a3222f4821486f47801671f8d584308",
eff690a187797aa225723345d4612abec0bf0cec1ae62347c0e7b1905d730879:
"0x35f9fa1bc253e91cfb42396800a37886b7d5fda5e015a9a5d7eea24b4a516421",
f2fb02c32b055c805e7238d628e5e9dadef274376114eb1f012337cabe93871e:
"0xc6e1c6307fa87aa0f3c8e33ce786c6a80ca4aa6de74b8e1a62d9e65ad1047aac",
"58f4ee3a0fc4de834a2e96274a696d0f3d8ec45fc76131a6a49fcd18d3ca9812":
"0x75b7db1ba4946126fa9193d4d00216cd1a52a17087c35feda74905bd0386c076",
"16dad506d7db8da01c87581c87ca897a012a153557d4d578c3b9c9e1bc0632f1":
"0x1666ee917cb925fd3d78da42bfb14c8aa2f51ba1fdfe7a424220fa709133426a",
"2dd14c7c38aa7066c7a508aac299ebcde5165b07d5d9f2d94dfbfe41f0bc5f2e":
"0x7ceb15c8e72d0b917103e43a695e94e40dc653bccbc0806bb71d3ea6539884da",
b3a83dbe70b62241b0f916212e097465a1b31085fa30da3342dd35468ca17ca5:
"0x663c14c977c46b85b5ea3f1a97ebc5b93d8cf6cf2c94d01dbcfaef0d0ef9efdf",
"5b1703d7eb9dc8662a61556a2ca2f9861747c3fc803e01ba5a8ce35cb50a13a1":
"0x8e812924daaf7dc02188976e71d20d86baaf90129d1c1f4470b7e79084fed804",
"0afa3199e0899270a74ddcf5cc960d3c6c4414b4ca71024af1a62786dd24f52a":
"0x54499295661a8cfb2c4da4184e330ab5948c4ec7522cad5f96e923b97bc91e61",
"88e2d5cbd2474766abffb2a67a58755a2cc19beb3b309e1ded1e357253aa3623":
"0x3c90b83f0acb025336debeb37d6014cdc788d9bece7828eb1412ebe44a01d31f",
"9aa471dccea36b90703325225ac76189baf7e0cc286b8843de1de4f31f9caa7d":
"0x0ffe43da21a5d957c833d778b0f527b82980f1b210cafa592054f0a026b658b4",
f8d030e4ef460b91ad23eabbbb27aec463e3c30ecc8d5c4b71e92f54a36ccdbd:
"0xb9792f919aebd4ce7eb2a4c4b400dc40c2260f81b516e62cd3bb16a2f1cdaec3",
"6b1381ce7e874dc5410b197ac8348162c0dd6c0d4c9cd6322672d6c2b1d58293":
"0x784f3db957f968930f9ac749c9b61ef614716964d93e689a482e15c665cf210e",
"91568baa8beb53db23eb3fb7f22c6e8bd303d103919e19733f2bb642d3e7987a":
"0x847b4e30707fbaedbe1ebf261a9c08299b53389def13b6268f0aaed06118b711",
"6672325a220c0ee1166add709d5ba2e51c185888360c01edc76293257ef68b58":
"0x243536ac6942683448eb0f0013540ee72a6d31dd4f6efebb44a0918de2234a67",
"9d23a47f843f5c9284832ae6e76e4aa067dc6072a58f151d39a65a4cc792ef9f":
"0x421f3e1cc42aa5cfd4dc87de41c16bde36a9dffb3392bf61c70d6b3f0ba73a99",
be4cb6bf8f18e84b1c4fd6fafa7f048a972be26505bd58338eb66c80faa99483:
"0xf6bcaef2cb75a98bf2c16af8e0b0a36127f865be99a456ebbbbcfc2d54632fc2",
"6f9cd89ef1b7fd39f667101a91ad578b6c6ace4579d5f7f285a4b06aa4504be6":
"0x2ef5a5df964ff7cecceb968fbe84e8e12e6048518ab3c24e9343b46f6d1dd011",
"8ff1200345393bb25be4f4eeb2d97234e91f7e6213f3745a694b1436e700f271":
"0xc38286eec0a9bdc4f7f8ebff7070bf4441ddb06af48cca506cd5477f72a1ec56",
"846ae1bdb6300b817cee5fdee2a6da192775030db5615b94a465f53bd40850b5":
"0x8190db687f806ebb5a85e19789a969680e0fd8380724c4f51353ed0fd57d0a35",
f0d57deca57b3da2fe63a493f4c25925fdfd8edf834b20f93e1f84dbd1504d4a:
"0x3192a035740b7d8a9a2f34e87983f43052bda1a8df4f257dba38d0d021b5afe5",
"49f6b65cb1de6b10eaf75e7c03ca029c306d0357e91b5311b175084a5ad55688":
"0x7c9f660c492c80357be785fb2b2eeb37147343740244975bc9622311281c945c",
"05934526b94a9fbe4c4ce0c3792213032f086ee4bf58f2168a7085361af9bdc1":
"0x6535ece8ec0e0a6a6f1baf5b80f64bd8d5c18fa2f40b5023e495ad02a9564a49",
cfd44471407f4da89d469242546bb56f5c626d5bef9bd8b9327783065b43c3ef:
"0xe6638d450412b1934890a43d48606d91ad5c945a25ace66f211ccc9f606cf405",
ad04597ba688c350a97265fcb60585d6a80ebd37e147b817c94f101a32e58b4c:
"0x25325258fd0fb6965aedf380cde6636109d6e3b6c2faa47ec91d2f976bbae702",
a19d04ac696c7a6616d291c7e5d1377cc8be437c327b75adb5dc1bad745fcae8:
"0x537d0fd5f9576506fce8c81f976a5e7dd183ef875585e78cde420baa9c2dc0cf",
feff234600320f4d6bb5a01d02570a9725c1e424977f2b823f7231e6857bdae8:
"0x342f11fa43dbe19d0d5097f28526f4c40a7c9e84097a59d66bb619bff59d971b",
"2356af9529a1064d41e32d617e2ce1dca5733afa901daba9e2b68dee5d53ecf9":
"0x300a7f0a24b012be8b90b21761624f1da3109b33bf47d8b0e34816b824ce2472",
"856aac602516addee497edf6f50d39e8c95ae5fb0da1ed434a8c2ab9c3e877e9":
"0x88f936c9b272a119b80045783f70f119b5d7214242c2ffa1dab67c1d2645043c",
"70cd05521e3bdeaee2cadc1360f0d95397f03275f273199be35a029114f53a3b":
"0x3aa76ccda83a8025ad9d12ae64b8efff22fbefa2edee12ddb6a8ee62c15db628",
"19d75fde7fee50fe67753fdc825e583594eb2f51ae84e114a5246c4ab23aff4c":
"0x1e81c65a2bb74c8870cbf7620003dc978623b83da4f8ad0615d02a4c8ee9be71",
"07ad7b4a7662d19a6bc675f6b467172d2f3947fa653ca97555a9b20236406628":
"0x6728f81af4b438713f0a6bafac0a9c5b19559fcb8c9c3da9107a5c5715c77150",
"7f4f157e57bfcccd934c566df536f34933e74338fe241a5425ce561acdab164e":
"0x4f8d4f109c805cf57b95add8534e96c2652cf80fc9d6b390797367361c6f9f87",
"8879170230c9603342f3837cf9a8e76c61791198fb1271bb2552c9af7b33c933":
"0x393e4f0af86f2b7c4f6cf87053a90fce28be9507462183c08112ab680f5b222b",
"9c68c0c6999765cf6e27adf75ed551b34403126d3b0d5b686a2addb147ed4554":
"0x5e5f1fa6a90893daf6400a009781b4e146a9714c9e432719d3dd970d58782dbc",
"3112b03a41c910ed446852aacf67118cb1bec67b2cd0b9a214c58cc0eaa2ecca":
"0x25a108e8fabff628d547ade6e7fb5ffba5e3fc4a86d5563c7c9c3f7f89c2838d",
"93da3352f9f1d105fdfe4971cfa80e9dd777bfc5d0f683ebb6e1294b92137bb7":
"0x969a55ba2749858a67b5ac3740218859ff91958711a4726e4729b6358c592541",
"83a6de4ec10bce1c0515d1aac082fd193f268f0c3b62da0c8ed1286319272415":
"0x3d4f0ed8ede749b0b7969a845a78a3e04052c5bd67632f9ca3e6b8c95e0471e0",
d00bd77d97dc5769de77f96d0e1a79cbf1364e14d0dbf046e221bce2e89710dd:
"0xa2621adcdd0a0eb0856a4bbc95a7a29ac2576915025f1ffff42a0387c659bd0f",
baa284eaf23edf975b371ba2818772f93dbae72836bbdea28b07d40f3cf8b485:
"0x7e427b11a67228418d02657537dbbe12e653fb6e25c0553e6cccfd93e09b62f9",
e65ff435be42630439c96396653a342829e877e2aafaeaf1a10d0ee5fd2cf3f2:
"0x6bc83acae136c07fb371388c5701aab8c4093719964434c48fcbb24fcd242302",
"2b9ab1e972a281585084148ba1389800799bd4be63b957507db1349314e47445":
"0x6da106d1876e1ae75110398ba4b4170b8617fdfd7f765682fc2556cfd8fad477",
"23245bb74254e65a98cc3ff4a37443d79f527e44e449750ad304538b006f21bc":
"0xdc8c7a10228f753c4a806f00e624f6d5111bcb01fa1a25e49deb8eab5ef3b959",
"3d253019d38099c0fe918291bd08c9b887f4306a44d7d472c8031529141f275a":
"0x41810c3ebd3ff83df1d52fce4ae30ae393defeada8c35334f658b552e702a808",
"7f981f906d7cfe93f618804f1de89e0199ead306edc022d3230b3e8305f391b0":
"0xa59919df888ea0a69aeeb865145ee208e0b5e96e744276097dc5d370ce12c937",
"5c6c0d2386e3352356c3ab84434fafb5ea067ac2678a38a338c4a69ddc4bdb0c":
"0x094c553dcaefa8daccac6512a27b6bd518962acac070c4a90fd4cbcc7d93cd2d",
"78d185a741d07edb3412b09008b7c5cfb9bbbd7d568bf00ba737b456ba171501":
"0x7cc9590c0632c06b336a729fb338855fa50a4c1f56f6bf19792607545ebfce75",
"35f1e0d9248599d276111821c0fd636b43eef18737c3bb61c7c5c47059787a32":
"0x0beeaa7af57e04218e931c260a19f7cd5d73728ca9b992e7eaadda5a92352a6c",
"8376cfd7ca8bcdf372ced05307b24dced1f15b1afafdeff715664598f15a3dd2":
"0x5be5a532a4234472bd42f648c860cc6ce505f4abba1d1ff280c307edaa91c6e5",
"831624f51c7bd4499fe5e0f16dfa2fd22584ae4bdc496bbbbe9ba831b2d9bce9":
"0x970d1a400036ee4ed970edc5fc28c1e1a063fd70abaa5635609f84fda603477c",
"681e0eb7acf9a2a3384927684d932560fb6f67c6beb21baa0f110e993b265386":
"0xb9b0291e4443cf2919528d4f190963f59f73b2fa60d042ab6d3525ea747e012e",
c7c60099c12805bea1ae4df2243d6fe72b63be3adeb2208195e844734219967b:
"0x84acdb9701e59d7fe938dafaf9d84161838cb862e84f307124a1b1e81e6b77d1",
"8f218655050a1476b780185e89f19d2b1e1f49e9bd629efad6ac547a946bf6ab":
"0x9be7c21f6f7d2b6271fe5dfa45f71c067b0a680aa1ca46ff436afba19336059f",
ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace:
"0x4e959b3d766a38dd63a3dccadda27ee46608b13a0a17d66ba50f6c6b43794492",
ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d:
"0xfdbf22be9ca4e8be48886404f4eda806287824318d22fbd8bbea6a06ff21a749",
"7d669ddcdd23d9ef1fa9a9cc022ba055ec900e91c4cb960f3c20429d4447a411":
"0x82f7cc493ac5c0c0e32c5797cb61372a985439b996ae320926df3eaf982255f9",
af5b9ac426ae79591fde6816bc3f043b5e06d5e442f52112f76249320df22449:
"0x06e3b2601f985409297e81f89b64df8a22e4bda271630322b723c799b3ca558f",
ca3eed9b267293f6595901c734c7525ce8ef49adafe8284606ceb307afa2ca5b:
"0x60cf8eb3bb66b9f1ee5ad5971ce24f85750ed6d65357278cdd24508018c0fb77",
b00b60f88b03a6a625a8d1c048c3f66653edf217439983d037e7222c4e612819:
"0x2819077ee5dc736f75d74505f2686240d84618948ec7c94ac67139c8335c3dfa",
e13b1c1ffb32f34e1be9545583f01ef385fde7f42ee66049d30570dc866b77ca:
"0x0948ff7e93869e56cfa994a8611af061dab31d429017b64cbdbdec687807a4bd",
"8bf649e08e5a86129c57990556c8eec30e296069b524f4639549282bc5c07bb4":
"0x59432d2fe5002ddeb6d4b245cfdc6ee8a0b441ff2fb5a9d154f12ef526f40d86",
"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5":
"0xc7dd91bb190bb6b918bcbc1671b8820088e5aab9502236f55ed204aae8d437c7",
d052e6f54fe29355d6a3c06592fdefe49fae7840df6d8655bf6d6bfb789b56e4:
"0x97e8f6a69d1e3bd5a9aea5cbc12ebaf74a2268c21220306c5a4fcce978c3134e",
"84c2dde9633d93d1bcad84e7dc41c9d56578b7ec52fabedc1f335d673df0a7c1":
"0xf8a94a60b67fc29212788ff0d125bd00a78873ce64a5f166989fa0a8a6051880",
"972776d57490d31c32279c16054e5c01160bd9a2e6af8b58780c82052b053549":
"0xfc6f0ecf57581be16f246383c1b0d39d27d47fd96097b77dd3d9a052f7efd9e5",
"9695e2b96ea7b3859da9ed25b7a46a920a776e2fdae19a7bcfdf2b219230452d":
"0x2121ae366fc6daf8a79c5420153e16a31b4c6a485666c11ef4ab20dcedfc1904",
f3b50961ff387a3d68217e2715637d0add6013e7ecb83c36ae8062f97c46929e:
"0xb6dfe8dd1f13f5db49e93909e8151cda0b3eb873950522e2c6dd9409057eea03",
fd0690232b0fae5efdc402c1b9aac74176383ff7daf87d021554bda24a38e0ec:
"0x397baeff4f1ad933330bff0101898d7dd376d33467bfee1fe4c8a13b6930c669",
c719eb7bab9b2bc060167f1d1680eb34a29c490919072513b545b9785b73ee90:
"0x6a2caf39dec7db0ca51e6cf1462756efc7b3637490920c3d111cd3d7da46a6e9",
e799f456b358a2534aa1b45141d454ac04b444ed23b1440b778549bb758f2b5c:
"0x5e0b5d2f55fe8ea36709508a4741219a009e32273daa8c43278a89b4c67112e4",
"9fb0bd29fe51481b61df41e650346cc374b13c2bab2e3610364cd834a592025a":
"0xe2f01b5ad1edec664d3d646a708b26f85adde915999d56b2f15c0076a140cbd1",
ec5d399846a9209f3fe5881d70aae9268c94339ff9817e8d18ff19fa05eea1c8:
"0x8274e4be99bf8117209b4cdcc963fc397b868f360d20ecf15233591a84da752c",
"9c479b12a2b2c1051715d4d462dd7a6abbb6dccabf3af31a53f6130a1cd88efc":
"0x0e8d64923791a322a31ccc8a8c7e1da47622c776414cc2a57c73795dcdad7b88",
"43cddc3e1d0b17fec1cf2a230f46e9319887a037dcee56e053af44d8259fb042":
"0x3f0a05354694d442310e2acba79deb48621a7ca32c170d5bc068fd85dbec760e",
"0b46c1c04e9c914037cc4e0561a7e6787f6db0b89b7b65281f0f6fea1ce45a74":
"0x3a552d9bcc7dbb8f9bb088f9fc81163a27aae54b79de7192a2ee88803a2c4598",
"396a969a9c1480fa15ed50bc59149e2c0075a72fe8f458ed941ddec48bdb4918":
"0x262feca09bba056ee9b05c8d0e438c11862533bdabd42f8e79e37a03e994031e",
"26d53c97247ec18d576bbd23f88078acc22b42168dcb1d29a76501a956e26bad":
"0x35988ff2b50960965250ccfc4a1be70ffa1a327e0cacfb7618db155d5a93d95f",
d1d95644ffc11ca502f21e067a7814144c56b37018515ced4335a886a827a305:
"0xf21863beeed8d8213ad163a37547ca404879875838cefd773f45966140e03536",
a0255134973f4fdf2f8f7808354274a3b1ebc6ee438be898d045e8b56ba1fe13:
"0x94538413241766c917b5837bc66a2f07201f9df610e985bc70f6f1a65bc8b824",
e6ccd3f878cf338e6732bf59f60943e8ca2c28402fc4d9c258503b2edbe74a31:
"0xe477c82786dd5186a36ada1d0092522bc04422a133bee0882cbffebee74bdfaf",
"3b7ef6c95ceedbffbb66bff3d6135a200c5d0a0466b0c90812510ceaedebaf04":
"0x83e3bcf94d15dd8246f343a0c3a25b531da1882a237e65d0e3afa8ccc29c2b53",
a4702f0f5818258783a1e47f453cb20b0fbec32ca67260e1d19dfcdd6a4d0ebb:
"0xa6f4d72ebb3d8d3b847f560c0e1b9b53be59c61cb17905efcb78d9e59097eb61",
"3fa4252848f9f0a1480be62745a4629d9eb1322aebab8a791e344b3b9c1adcf5":
"0x2a2acf181c73055bfbce46e0bd01ffbb73b4481fee51d1442dd0fcfca7011ee1",
"05380f8817eb1316c0b35ac19c3caa92c9aa9ea6be1555986c46dce97fed6afd":
"0x415149af9fd9d712a5c543d203f5e7a4647232c93291b51cc77dda27591acdf3",
"78a3e3b8e676a8f73c439f5d749737034b139bbbe899ba5775216fba596607fe":
"0x3d537759f6eb0f5d8a0894ab553553e70c7526f15c026641ab457d6e600dd488",
b7e3904c08ddd9c0c10c6d207d390fd19e87eb6aab96304f571ed94caebdefa0:
"0xf8bb072d7779c1f9eab2b5de52a0c7db7603cfc9076151bb5a2ba1ca2ed385b0",
b5d0e0fa58a1f8b81498ae670ce93c872d14434b72c364885d4fa1b257cbb07a:
"0xede216a9f98d06bf4ebab1a696ae992590605bf9bbaf05f742b96ab5d6ba0426",
a639c04942ebfdeabf25bf1b88d6608ef387219748d77ea130bc2fa486b9614f:
"0xdc7f9dbd88b507e36df3737e44106b8594b75eb4324412e960d113f5f61e2f55",
"2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f":
"0xb148065aef7a6902b5a56404db8dc728253cc3562d6a0c274de4d4db91746cd7",
bd640cddb72063e2ede34c6a0baf6699759b9837fcb06aa0e2fbcecb9b65fde7:
"0xd3261ba9e558eda4056861879ede295549b416c75f3b756ca59145552b43ed03",
e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43:
"0xa6241689d50ea973e4e0efa11e64f05d85255e18610bd094c6ee95efc2f670b7",
"5967c196ca33171a0b2d140ddc6334b998dd71c2ddd85ba7920c35fd6ed20fe9":
"0xc9552aff3ed695958e7279ac930e5f4062fb3d9e0831c5fdcf1564019d2581b2",
c9e9d228f565c226dfb8ed5f5c9c4f57ab32b7ade7226c3239ff20911a9c3a7b:
"0x1df777cf70c4741367735002de6dbbed06346194749d9825b8578587a139f964",
d0ca23c1cc005e004ccf1db5bf76aeb6a49218f43dac3d4b275e92de12ded4d1:
"0x57bd3abe704df070c95bd142463c919f7eb8aab851f56a437429d40a2bcc5c04",
"1ce9069708fb49e2f1b062fa4f1be0bb151475ca506939d6d8c14386d49f43dc":
"0x44b2efb1ffc530ee28b53ad75aba15d03beeac3d3ac00ab456a95e72b6e46e28",
"6d881ecf489bb24aa10468ca332e3ea262a9bf3a8fb9db1eadac9cce544b16b1":
"0xfaa34d98d5776b63a0aa707cac04e3906a769c7b9822181e5831c3fdbe3852bc",
b881c6dad5dd3dc9a83222f8032fb439859288119afc742d43adc305cef151cc:
"0xec8b5dc385c72e1925585a8809df24b1797663b362d7ee698e94c244d95c4502",
"107918baaaafb79cd9df1c8369e44ac21136d95f3ca33f2373b78f24ba1e3e6a":
"0xdd9518d23f6500d095760fe27b6be884cb729141828840501c745fbbb4077ac1",
"6ed3c7c4427ae2f91707495fc5a891b30795d93dbb3931782ddd77a5d8cb6db7":
"0x2ad5bca64988a60eb6c015984d86f896d7780f89ba4e17d239a8d18dd0ff3c62",
ed5c2a2711e2a638573add9a8aded37028aea4ac69f1431a1ced9d9db61b2225:
"0xb1ce5c0bc015130411f74c52c69b17b34778beda878cf35582f4db10e1b37798",
"70ab610e3ed6642875f4a259dc29175452733316fee440f23fed99154d1d84f7":
"0xf159bc6a781614afd84e7452a57afcea4b02c2a1d89e2af4b345d5704648274f",
"92eea8ba1b00078cdc2ef6f64f091f262e8c7d0576ee4677572f314ebfafa4c7":
"0x17d6e86db99e31eec29b25faf06888bbb0cc5f5bad64d462c36c095384236eb8",
c81114e16ec3cbcdf20197ac974aed5a254b941773971260ce09e7caebd6af46:
"0x1f81a0a54c5acf8c6849d3555566ae3bcc078fac98ac44d95a248579e00254a6",
d3178156b7c0f6ce10d6da7d347952a672467b51708baaf1a57ffe1fb005824a:
"0x0c51789af2ef3a02c1a8dd4a5e90898ae4ab495909a0dec337d2adbf641f9e14",
"8ccb376aa871517e807358d4e3cf0bc7fe4950474dbe6c9ffc21ef64e43fc676":
"0xc1ee9666521d2494288b3a4264e7428c4be31fbfd0412b7d3e480fa66cb7868e",
"701223c92a39dbab065c4a7997fef9c41c8de26ca2bf1f808ce0a4ea1cfd421f":
"0x1e56055aa5510e42a522ac0d45baadeec54cb1ab4f80ed05fbcb01d6a63fe709",
eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a:
"0x6c9fce723d522ec708cd4ff6d363277b03fe48fafee79e2b53ce7dfd95838f72",
"4456d442a152fd1f972b18459263ef467d3c29fb9d667e30c463b086691fbc79":
"0x1d8e49343d812229fba1f2e7f04a6162224a566681d781c71b792fdc1b08947c",
"5b70af49d639eefe11f20df47a0c0760123291bb5bc55053faf797d1ff905983":
"0xce84576e03736d879f77af0652b62185234af2ccc4e2e21e276813fa0ca47dbd",
"5c2416ad4b5fe25c38ea2078927d59dad6a1d4110480c0c96c9b4421744f7507":
"0x30a78a430a10cae0d78913036d460eef5c6085c46f8ecf1ad7ba8dee76a12527",
"6d0af467543fc7daedf7abed96423877560c8d03725f3e5c87516774982a679c":
"0xf261698164fef1649da47f846c6677648f524bc880b257fc771dd65ac540487d",
abe4f2b264560a397f38eec024369356e5c1ea4f7aab94729369f144b3d97779:
"0xedbc661a883e5f47ea5fa4bf5a06374fb60827e5e0e2ac413a96187e3f39a1e3",
"2fb245b9a84554a0f15aa123cbb5f64cd263b59e9a87d80148cbffab50c69f30":
"0x65dfab50959d4f7a0e4bec441a6e0422d4dfcd0e23921c0069e35cc59cad38aa",
"19e09bb805456ada3979a7d1cbb4b6d63babc3a0f8e8a9509f68afa5c4c11cd5":
"0x511286c4c9ce19b57a4ec47efd46f4a336175d36659a5b2741e611205b184853",
"327ae981719058e6fb44e132fb4adbf1bd5978b43db0661bfdaefd9bea0c82dc":
"0x6ed3ddec8444bee9863077d70a0e8ca506242de914f1b3b581c88aecfa67bae3",
"46b8cc9347f04391764a0361e0b17c3ba394b001e7c304f7650f6376e37c321d":
"0x7e1303e5cfb944c6b0d95e5f9fab038b305c8d80054394e24d8bf64b34b8553a",
ccca1d2b0d9a9ca72aa2c849329520a378aea0ec7ef14497e67da4050d6cf578:
"0x57f5289b1bb4008c2090b3e7401e8abdfdfb1bc5b6a4d649752bd537ddc04722",
"236b30dd09a9c00dfeec156c7b1efd646c0f01825a1758e3e4a0679e3bdff179":
"0x2eb3509bf33b5e29124d61b4affc78b271c5b13aa60d4be9ec1d659ff41eaaff",
"2a01deaec9e51a579277b34b122399984d0bbf57e2458a7e42fecd2829867a0d":
"0x9a6d328a6ebd906ed842e6e874e14bea69efa1c421fbfe7f689c33412a43c41c",
ef94acc2fb09eb976c6eb3000bab898cab891d5b800702cd1dc88e61d7c3c5e6:
"0x97faf2540a0b1ddff6e7f25bbfc7067eecad0334524a70e1caffdc519e2098d3",
"37505261e557e251290b8c8899453064e8d760ed5c65a779726f2490980da74c":
"0x9e743ce40f1f5cad26d7b9a83dd1b7750d9637f13edcfa95ec45ffaaac81cf4d",
"5bc91f13e412c07599167bae86f07543f076a638962b8d6017ec19dab4a82814":
"0x794047e361d3837b84a3941bb8fee704e083433404e68e20e6d54dbb5673cad5",
"72b021217ca3fe68922a19aaf990109cb9d84e9ad004b4d2025ad6f529314419":
"0xec956a3c13b3db5c34acc7a19b2d655886c25483254065c7f770ebe64c71b3a2",
"97d7d4c20e5a06fdb60f7a448a9e9a779f2b31c3f21121180010a4a470844aae":
"0x6928f835a904ad05c54fc1eb9d1269d5396e62eac58cf53f7967dfe54c2e8ced",
c572690504b42b57a3f7aed6bd4aae08cbeeebdadcf130646a692fe73ec1e009:
"0xf680a00084f0e61980327af92d5bd5f5eead25d5ad392c18669fe9db72ab1de8",
"735f591e4fed988cd38df74d8fcedecf2fe8d9111664e0fd500db9aa78b316b1":
"0x7b86aa064d0d8c77685fe76955f83ecc2c63d06bbdf5ee21273e6866243653f9",
"8e860fb74e60e5736b455d82f60b3728049c348e94961add5f961b02fdee2535":
"0x2746e22f8f134808ba8332294d5687b975c8dbabca51f5e773483a8b5c006de9",
"48ce0cf436bac22dad33551dfe2eb7bf9991e419a05f25aed4e90c29c3a1cdbe":
"0xd698c1ab8cecb252cd6c05371b19885d7f3937ababd26250745bb1d9fa6ee019",
fd05a384ba19863cbdfc6575bed584f041ef50554bab3ab482eabe4ea58d9f81:
"0x70e632d62a24202debf5e4099010c5c360b26f8ce9bcfbd49d52789a3c45a9c5",
"5867f5683c757393a0670ef0f701490950fe93fdb006d181c8265a831ac0c5c6":
"0xb5469f185e5a69f8591b4cc9d326eae8fddb86df381408d8ea428ad1001231b3",
"3b4656b0d92f0e995024c3dacfc28c47d11af83b374a56c26e514e9a7e46a240":
"0x6acb3837b8b069d5af140c6ec99358c862d9af443aa87ca8dbdecdc4963dc83e",
"235ddea9f40e9af5814dbcc83a418b98e3ee8df1e34e1ae4d45cf5de596023a3":
"0x43c1205fc3af779d6b9719327d60bc4cf61a2509264defcd7cbc104e731cf461",
"956740a4e169e90bb141abfe93652ae3434693bc7ca43cbcea6471408f19ab90":
"0x104ef1548854fd68403152a4661360a484e116c8926d5435325684339e7a4792",
"89a58e1cab821118133d6831f5018fba5b354afb78b2d18f575b3cbf69a4f652":
"0x81879f4a1e9a6115d6a8f1cb02a13cd6bf9e2713ccd4518c39290ab0aab855bf",
e0f87bbde799f33615b83a601b66415e850788000cd7286a3e7295f23c1bb353:
"0x4e960abf91b2868b8f7003d4c788f2971f17fdd673c552d8c6c7abdbcf1264f3",
"15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864":
"0x3b2e581f72613f5ca5845ecd97fa54133c4ef2edb41d4cee048050ae61352891",
d57d90cd8554ea0cf8268de30d5ad67fed9a8f11cce5132a49eb687aed832ea6:
"0xf7aa8fb0db1de5d2e102c3bac7c4b664c7c4f190100681e826d93784c76126f5",
"301377b122716cee1a498e7930a1836c0b1db84667cc78bbbcbad6c330ea6afb":
"0x838e80e58c62e04a7420ff13e450b65df38095aa51471975742b89a6c23e2e0a",
"6034b1f68b9363dff2cf9d53b1a88fb4d0929c65f34d532db53738853efc00ad":
"0xe42b1d1c8ee5efd399068416bf77f3f194e29a94406acc88a90dd8029bb706aa",
c19405e4c8bdcbf2a66c37ae05a27d385c8309e9d648ed20dc6ee717e7d30e17:
"0xf5a4f393712a9dc7164f0decbf90af2594a4a7199ea0d380c8e4f265ca7ddd59",
"10946973bfcc936b423d52ee2c5a538d96427626fe6d1a7dae14b1c401d1e794":
"0xc15d506b720e9e47f1ab76510eb0d8d93f1a8331a0edb71d30fe2a862693e607",
f464e36fd4ef2f1c3dc30801a9ab470dcdaaa0af14dd3cf6ae17a7fca9e051c5:
"0x858a716e3b2e9e71be3120de427ebf5ec1b461721645c245f948274f13f87c33",
"3dd2b63686a450ec7290df3a1e0b583c0481f651351edfa7636f39aed55cf8a3":
"0x3736ba57e9fa1f82ba9dcdb63142c2871ab6664ec6d2bae0e185feb698b16211",
c8acad81438490d4ebcac23b3e93f31cdbcb893fcba746ea1c66b89684faae2f:
"0xe3e1904ab43bab2a002c7cbfe2a25087211a92f163eb4f8f5ea89905fc0232e2",
"6aac625e125ada0d2a6b98316493256ca733a5808cd34ccef79b0e28c64d1e76":
"0x300a46a6b7c9574270a6a261b1fe09765b1d186991b5a7f054b2fb6b89980310",
a995d00bb36a63cef7fd2c287dc105fc8f3d93779f062f09551b0af3e81ec30b:
"0xa9f457c3e8f90ce4147a5368ac7d1bad29fc3e7a7b566e9da8caea80e70f9015",
a5eb88d3ea93f6240d7e54b4466bc1857f7bfc1658d49a07f68096ebc0fdde3b:
"0xf23a24daea2a46388337064f8e466bdc9b848414b246769da8dc756cd19ed352",
e1d3115c6e7ac649faca875b3102f1000ab5e06b03f6903e0d699f0f5315ba86:
"0xda049b4223747412a535f4b007166fbf1b6d7de42f9f49ddf8453d5312a3e66b",
c80657b7f6f3eac27218d09d5a4e54e47b25768d9f5e10ac15fe2cf900881400:
"0xc840d2761d833abbc469ae1140d1eb5827d2cd2d1bf70520fa1281debdf99926",
"23199c2bcb1303f667e733b9934db9eca5991e765b45f5ed18bc4b231415f2fe":
"0x2d7aa5836ae880f2bd9b1b14d18abef42b5cc8116b332c368457555899fdf184",
"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b":
"0xcc7b6d3a8fc8b32878e333578ab57e96a7ef8ec4498bcc6e839c362924ea52d3",
"2f2d17abbc1e781bd87b4a5d52c8b2856886f5c482fa3593cebf6795040ab0b6":
"0xd79ce52a240701df5add9d5f325ab0222271e8ff70e36150426546470bdfd3bc",
"45b05d03edb6081e7ae536b94b450a42f43e6342791c560a481030b41f9b945d":
"0x0950d9b3f34603308ac7583d791fff9e2b9627dbbf9490f5dd7dd67410a6093f",
c7b72e5d860034288c9335d4d325da4272fe50c92ab72249d58f6cbba30e4c44:
"0x7438e09365085c82eabdf045069e749fb95b4e7d39c1ac56fa74c1f5e62500c4",
eef52e09c878ad41f6a81803e3640fe04dceea727de894edd4ea117e2e332e66:
"0x21a473555224392259558994ae30f93250f305fa14569e452539df785576b629",
"1888f463c27997174f97d2a36af29bf4648b61a5f69e67c45505a80f826bb785":
"0x70c306983d152a50905f7561c77ee48938deeb794beaef341bb294c2bb5aa996",
"2077043ee3b67b9a70949c8396c110f6cf43de8e6d9e6efdcbd557a152cf2c6e":
"0x09ecce08348f4ae9b6f3ac6fac862e441ed9876e33212694c0a4d6639a797c3f",
"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744":
"0x5854ab7960bb36c34701a6509fd85eed4b505cf15fc68a2e6c297361c0847d50",
c1751e085ee292b8b3b9dd122a135614485a201c35dfc653553f0e28c1baf3ff:
"0x359325eddf76b5a758697c7be661653a0cec39c51214da8e5a7155b6877753fe",
"7a5bc1d2b56ad029048cd63964b3ad2776eadf812edc1a43a31406cb54bff592":
"0xfb993017bb92a8e2868d6d52b486aea8013dcd9bca8fd557306ee48bdfacbecb",
"63f341689d98a12ef60a5cff1d7f85c70a9e17bf1575f0e7c0b2512d48b1c8b3":
"0x1d0afcbaf07da5e4eb570df8b551b24ecfc889c54036de1f31a27bd15a9268d1",
"67a6f93030420c1c9e3fe37c1ab6b77966af82f995944a9fefce357a22854a80":
"0x51ca0aacdd00a18ce65eb4614b17c7a50b05861841dcb6b652936463527f38dd",
"9ff7b9a93df40f6d7edc8184173c50f4ae72152c6142f001e8202a26f951d710":
"0x374088f90087c668259444d8b4118937cc5b296f2b9f3b9a2435c019fca6c4de",
"765d2ba906dbc32ca17cc11f5310a89e9ee1f6420508c63861f2f8ba4ee34bb2":
"0x7a410b6e800f2e2a15b5027b90e855b8cd0954fbb22dd245c4a884a6603f3e55",
"8419416ba640c8bbbcf2d464561ed7dd860db1e38e51cec9baf1e34c4be839ae":
"0x0d0f6fdadb7b2dcd0b4130e44d20195c4b13caeaa1f65c38249c330b4c1307d2",
"0b1e3297e69f162877b577b0d6a47a0d63b2392bc8499e6540da4187a63e28f8":
"0x00330abb569ac93d08b902bbd9e4c69041511417d3c88450b7291f99422c1587",
ef2c98c804ba503c6a707e38be4dfbb16683775f195b091252bf24693042fd52:
"0xf2a08b0909acde30ef72a7291cda5314b76e544136d83ceb0339fa2c1221aed5",
b0948a5e5313200c632b51bb5ca32f6de0d36e9950a942d19751e833f70dabfd:
"0x1c15c9326be25b19496c25ee66545bfd8151c573a49c6a9075d0a5a98e4f7981",
"49601625e1a342c1f90c3fe6a03ae0251991a1d76e480d2741524c29037be28a":
"0x540988b6594c264ac5fced6a9021e98b3a3c6764e6f9d1112536c6d2445dbc63",
"9095653620547ece988ec51486dc7a6eb2efddbce8ea5bedbd53bf00cca84cf6":
"0xa351d146407bd613cb443031d474c0639f3a328af429866b38d094caa21a44a0",
"3f4b77dd904e849f70e1e812b7811de57202b49bc47c56391275c0f45f2ec481":
"0x2fc81e546084af17b8d99788f4d05254499de49fa2065d79950f19355e23c781",
"2394ce86c7d68050ce52797923860f6c1656a73fb11bd10dacb3f9c719acdd1d":
"0xc2d8c65d82ab5413d81ef44e28833be0dd286376ea47e02b26400a67f34c579e",
b82449fd728133488d2d41131cffe763f9c1693b73c544d9ef6aaa371060dd25:
"0x0624b35d4b654877cf5331f3865b28a8e872efbe40cd877a5470a1e4509107cc",
"59671f59d12dc81bae078754b7469c7434528a66d3fa91193cf204460c198f9b":
"0xc4209783660db421a861200b7164aacd682ca5bc2a53dcd40c9235b78245a0c0",
fa17ceaf30d19ba51112fdcc750cc83454776f47fb0112e4af07f15f4bb1ebc0:
"0xa8539d032e6aba8837568af71ddfe4494139ba37e2ccba5df3a6cb0b5d157c60",
"7507a4629ad0143550666bce2e7cae0b961a0f624f821feaab642fe1be632f5c":
"0xcd40ec7af217643b816992906439d9c638e4b97203bebc5a4ceb5eed92f5f82f",
fee33f2a978bf32dd6b662b65ba8083c6773b494f8401194ec1870c640860245:
"0x8c1fd6c6d4e328f4ac2d47d67bde6223d9ba3b1ab9d2d2d819462bb8a39d9079",
"20d096e088a9b85f8cf09278965b77aeb05c00769e2ddeda5ea2d07ea554b283":
"0x16f6f47720607a364c0df4718d78810d5ed8ec5ecac4c18380d6acef614a08e9",
};
const price_feed_id_url = "https://xc-mainnet.pyth.network/api/price_feed_ids"; // <= NOTE: Update this when changing network
async function main() {
// get keys from map (price feed ids)
// console.log("price ids published len: ", Object.keys(price_ids_to_price_objects).length)
// let all_keys = Object.keys(price_ids_to_price_objects).map(x=>x.toUpperCase())
// console.log("all keys: ", all_keys)
// let { data } = await axios.get(price_feed_id_url);
// console.log("data len: ", data.length)
// let not_published = []
// for (let item of data){
// //console.log("item: ", item)
// if (!(all_keys.indexOf(item.toUpperCase())>-1)){
// console.log("not found in keys")
// not_published = not_published.concat(item)
// }
// }
// console.log("not published: ", not_published)
// console.log("not_published length: ", not_published.length)
let buf = Buffer.from([
139, 98, 134, 111, 205, 58, 37, 255, 145, 24, 80, 100, 68, 233, 254, 81,
113, 230, 124, 97, 160, 73, 244, 180, 253, 172, 219, 195, 26, 232, 98, 187,
]).toString("hex");
console.log("buf is: ", buf);
}
main();

View File

@ -0,0 +1,178 @@
/// Build a programmable txn for updating multiple price feeds.
import dotenv from "dotenv";
import { PriceServiceConnection } from "@pythnetwork/price-service-client";
import fs from "fs";
import {
RawSigner,
SUI_CLOCK_OBJECT_ID,
TransactionBlock,
JsonRpcProvider,
Ed25519Keypair,
Connection,
} from "@optke3/sui.js";
dotenv.config({ path: "~/.env" });
import { REGISTRY, NETWORK } from "../registry";
// ================== Network dependent settings ==================
let network = NETWORK.MAINNET;
const walletPrivateKey = process.env.SUI_MAINNET;
const price_connection_url = "https://xc-mainnet.pyth.network";
const PATH_TO_PRICE_ID_TO_OBJECT_MAP =
"./generated/price_id_to_object_id.mainnet.json";
// ================================================================
const registry = REGISTRY[network];
const provider = new JsonRpcProvider(
new Connection({ fullnode: registry["RPC_URL"] })
);
const connection = new PriceServiceConnection(price_connection_url, {
priceFeedRequestConfig: {
binary: true,
},
});
async function main() {
if (walletPrivateKey === undefined) {
throw new Error("Wallet key unset in environment");
}
const wallet = new RawSigner(
Ed25519Keypair.fromSecretKey(Buffer.from(walletPrivateKey, "hex")),
provider
);
console.log(wallet.getAddress());
// Price feeds IDs of feeds we are interested in updating.
// For a full list of testnet price feed ids, see:
// https://pyth.network/developers/price-feed-ids#pyth-evm-testnet
const price_feed_ids = [
"0x63f341689d98a12ef60a5cff1d7f85c70a9e17bf1575f0e7c0b2512d48b1c8b3",
// INSERT YOUR PRICE FEED ID HERE!
];
// Batch attestation VAA for price feed IDs above.
const vaas = await connection.getLatestVaas(price_feed_ids);
const price_feed_id_to_price_info_map = JSON.parse(
fs.readFileSync(PATH_TO_PRICE_ID_TO_OBJECT_MAP, "utf8")
);
// Price info objects corresponding to the price feeds we want to update.
let price_info_object_ids = [];
for (let id of price_feed_ids) {
let sliced_id = id.slice(2); // removed 0x prefix
price_info_object_ids = price_info_object_ids.concat(
price_feed_id_to_price_info_map[sliced_id]
);
}
console.log("price info objects to be updated: ", price_info_object_ids);
update_price_feeds(wallet, registry, vaas, price_info_object_ids);
}
main();
// Example on updating a price feed and then getting
// the updated price.
async function update_price_feeds(
signer: RawSigner,
registry: any,
vaas: Array<string>,
price_info_object_ids: Array<string>
) {
const tx = new TransactionBlock();
let PYTH_PACKAGE = registry["PYTH_PACKAGE_ID"];
let PYTH_STATE = registry["PYTH_STATE_ID"];
let WORM_PACKAGE = registry["WORMHOLE_PACKAGE_ID"];
let WORM_STATE = registry["WORMHOLE_STATE_ID"];
console.log("PYTH_PACKAGE: ", PYTH_PACKAGE);
console.log("PYTH_STATE: ", PYTH_STATE);
console.log("WORM_PACKAGE: ", WORM_PACKAGE);
console.log("WORM_STATE: ", WORM_STATE);
// Parse our batch price attestation VAA bytes using Wormhole.
// Check out the Wormhole cross-chain bridge and generic messaging protocol here:
// https://github.com/wormhole-foundation/wormhole
let verified_vaas = [];
for (let vaa of vaas) {
let [verified_vaa] = tx.moveCall({
target: `${WORM_PACKAGE}::vaa::parse_and_verify`,
arguments: [
tx.object(WORM_STATE),
tx.pure([...Buffer.from(vaa, "base64")]),
tx.object(SUI_CLOCK_OBJECT_ID),
],
});
verified_vaas = verified_vaas.concat(verified_vaa);
}
// Create a hot potato vector of price feed updates that will
// be used to update price feeds.
let [price_updates_hot_potato] = tx.moveCall({
target: `${PYTH_PACKAGE}::pyth::create_price_infos_hot_potato`,
arguments: [
tx.object(PYTH_STATE),
tx.makeMoveVec({
type: `${WORM_PACKAGE}::vaa::VAA`,
objects: verified_vaas,
}),
tx.object(SUI_CLOCK_OBJECT_ID),
],
});
// Update each price info object (containing our price feeds of interest)
// using the hot potato vector.
for (let price_info_object of price_info_object_ids) {
let coin = tx.splitCoins(tx.gas, [tx.pure(1)]);
[price_updates_hot_potato] = tx.moveCall({
target: `${PYTH_PACKAGE}::pyth::update_single_price_feed`,
arguments: [
tx.object(PYTH_STATE),
price_updates_hot_potato,
tx.object(price_info_object),
coin,
tx.object(SUI_CLOCK_OBJECT_ID),
],
});
}
// Explicitly destroy the hot potato vector, since it can't be dropped
// automatically.
tx.moveCall({
target: `${PYTH_PACKAGE}::hot_potato_vector::destroy`,
arguments: [price_updates_hot_potato],
typeArguments: [`${PYTH_PACKAGE}::price_info::PriceInfo`],
});
// Get newly updated prices.
for (let price_info_object of price_info_object_ids) {
// The returned price is dropped in this example, but can be consumed by
// another downstream smart contract.
let [price] = tx.moveCall({
target: `${PYTH_PACKAGE}::pyth::get_price`,
arguments: [
tx.object(PYTH_STATE),
tx.object(price_info_object),
tx.object(SUI_CLOCK_OBJECT_ID),
],
});
}
tx.setGasBudget(2000000000);
let result = await signer.signAndExecuteTransactionBlock({
transactionBlock: tx,
options: {
showInput: true,
showEffects: true,
showEvents: true,
showObjectChanges: true,
showBalanceChanges: true,
},
});
console.log(result);
return result;
}

View File

@ -18,20 +18,20 @@ export const REGISTRY = {
},
TESTNET: {
PYTH_PACKAGE_ID:
"0xc9e69550ad36bd5e8ce39329ef05ad65c27a5820bd089f8588ae1d85ac991ed6",
"0x975e063f398f720af4f33ec06a927f14ea76ca24f7f8dd544aa62ab9d5d15f44",
PYTH_STATE_ID:
"0xb94f56f6439a723d25e37b6030a5c7da153ef2c786058b7dd0249de657933f64",
"0xd8afde3a48b4ff7212bd6829a150f43f59043221200d63504d981f62bff2e27a",
WORMHOLE_PACKAGE_ID:
"0x80c60bff35fe5026e319cf3d66ae671f2b4e12923c92c45df75eaf4de79e3ce7",
"0xcc029e2810f17f9f43f52262f40026a71fbdca40ed3803ad2884994361910b7e",
WORMHOLE_STATE_ID:
"0x79ab4d569f7eb1efdcc1f25b532f8593cda84776206772e33b490694cb8fc07a",
"0xebba4cc4d614f7a7cdbe883acc76d1cc767922bc96778e7b68be0d15fce27c02",
RPC_URL: "https://fullnode.testnet.sui.io:443",
},
MAINNET: {
PYTH_PACKAGE_ID:
"0xa446c4a37c0bb69d03357c1a52d60da0b434048226d5f3feffdb693586bea861",
"0x00b53b0f4174108627fbee72e2498b58d6a2714cded53fac537034c220d26302",
PYTH_STATE_ID:
"0x428b5795904d5256d1eea5991df672934315fb8dcf8f6111134c1a52afd005ca",
"0xf9ff3ef935ef6cdfb659a203bf2754cebeb63346e29114a535ea6f41315e5a3f",
WORMHOLE_PACKAGE_ID:
"0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",
WORMHOLE_STATE_ID:

View File

@ -0,0 +1,58 @@
let initial_guardians = [
"D2CC37A4dc036a8D232b48f62cDD4731412f4890",
"54Ce5B4D348fb74B958e8966e2ec3dBd4958a7cd",
"107A0086b32d7A0977926A205131d8731D39cbEB",
"8192b6E7387CCd768277c17DAb1b7a5027c0b3Cf",
"71AA1BE1D36CaFE3867910F99C09e347899C19C3",
"114De8460193bdf3A2fCf81f86a09765F4762fD1",
"74a3bf913953D695260D88BC1aA25A4eeE363ef0",
"11b39756C042441BE6D8650b69b54EbE715E2343",
"8C82B2fd82FaeD2711d59AF0F2499D16e726f6b2",
"58CC3AE5C097b213cE3c81979e1B9f9570746AA5",
"DA798F6896A3331F64b48c12D1D57Fd9cbe70811",
"AF45Ced136b9D9e24903464AE889F5C8a723FC14",
"f93124b7c738843CBB89E864c862c38cddCccF95",
"fF6CB952589BDE862c25Ef4392132fb9D4A42157",
"6FbEBc898F403E4773E95feB15E80C9A99c8348d",
"000aC0076727b35FBea2dAc28fEE5cCB0fEA768e",
"178e21ad2E77AE06711549CFBB1f9c7a9d8096e8",
"5E1487F35515d02A92753504a8D75471b9f49EdB",
"15e7cAF07C4e3DC8e7C469f92C8Cd88FB8005a20",
];
let ordered_guardians = [
// 5 is missing
"58CC3AE5C097b213cE3c81979e1B9f9570746AA5",
"fF6CB952589BDE862c25Ef4392132fb9D4A42157",
"114De8460193bdf3A2fCf81f86a09765F4762fD1",
"107A0086b32d7A0977926A205131d8731D39cbEB",
"8C82B2fd82FaeD2711d59AF0F2499D16e726f6b2",
"11b39756c042441be6d8650b69b54ebe715e2343",
"54Ce5B4D348fb74B958e8966e2ec3dBd4958a7cd",
"15e7cAF07C4e3DC8e7C469f92C8Cd88FB8005a20",
"74a3bf913953D695260D88BC1aA25A4eeE363ef0",
"000aC0076727b35FBea2dAc28fEE5cCB0fEA768e",
"AF45Ced136b9D9e24903464AE889F5C8a723FC14",
"f93124b7c738843CBB89E864c862c38cddCccF95",
"D2CC37A4dc036a8D232b48f62cDD4731412f4890",
"DA798F6896A3331F64b48c12D1D57Fd9cbe70811",
"71AA1BE1D36CaFE3867910F99C09e347899C19C3",
"8192b6E7387CCd768277c17DAb1b7a5027c0b3Cf",
"178e21ad2E77AE06711549CFBB1f9c7a9d8096e8",
"5E1487F35515d02A92753504a8D75471b9f49EdB",
"6FbEBc898F403E4773E95feB15E80C9A99c8348d",
];
function main() {
initial_guardians = initial_guardians.map((x) => x.toLowerCase());
ordered_guardians = ordered_guardians.map((x) => x.toLowerCase());
for (let g of initial_guardians) {
console.log("ordered_guardians.indexOf(g): ", ordered_guardians.indexOf(g));
if (ordered_guardians.indexOf(g) < 0) {
console.log("guardian is not in ordered_guardians: ", g);
}
}
}
main();

View File

@ -0,0 +1,63 @@
/// We build a programmable txn to create a price feed.
import dotenv from "dotenv";
import {
RawSigner,
SUI_CLOCK_OBJECT_ID,
TransactionBlock,
JsonRpcProvider,
Ed25519Keypair,
Connection,
} from "@optke3/sui.js";
dotenv.config({ path: "~/.env" });
import { REGISTRY, NETWORK } from "../registry";
// Network dependent settings.
let network = NETWORK.TESTNET; // <= NOTE: Update this when changing network
const walletPrivateKey = process.env.SUI_TESTNET; // <= NOTE: Update this when changing network
const registry = REGISTRY[network];
const provider = new JsonRpcProvider(
new Connection({ fullnode: registry["RPC_URL"] })
);
async function main() {
if (walletPrivateKey === undefined) {
throw new Error("SUI_TESTNET unset in environment");
}
const wallet = new RawSigner(
Ed25519Keypair.fromSecretKey(Buffer.from(walletPrivateKey, "hex")),
provider
);
let sender = await wallet.getAddress();
let recipient =
"0x4ed01b6abcc271a5c7a1e05ee9344d6eb72d0c1f2483a1c600b46d73a22ba764";
console.log("Sender: ", sender);
transfer_tokens(wallet, recipient);
}
main();
async function transfer_tokens(signer: RawSigner, recipient: string) {
const tx = new TransactionBlock();
let coin = tx.splitCoins(tx.gas, [tx.pure(100000000000)]);
tx.transferObjects([coin], tx.pure(recipient));
tx.setGasBudget(1000000000);
let result = await signer.signAndExecuteTransactionBlock({
transactionBlock: tx,
options: {
showInput: true,
showEffects: true,
showEvents: true,
showObjectChanges: true,
showBalanceChanges: true,
},
});
console.log(result);
return result;
}

View File

@ -0,0 +1,111 @@
/// Deploy Pyth to Sui testnet (devnet deploy can be done via CLI)
import {
fromB64,
getPublishedObjectChanges,
normalizeSuiObjectId,
RawSigner,
TransactionBlock,
SUI_CLOCK_OBJECT_ID,
JsonRpcProvider,
Ed25519Keypair,
testnetConnection,
Connection,
} from "@mysten/sui.js";
import { execSync } from "child_process";
import fs from "fs";
import { resolve } from "path";
import dotenv from "dotenv";
import { REGISTRY, NETWORK } from "../registry";
dotenv.config({ path: "~/.env" });
// Network dependent settings.
let network = NETWORK.TESTNET; // <= NOTE: Update this when changing network
const walletPrivateKey = process.env.SUI_TESTNET; // <= NOTE: Update this when changing network
// Load registry and provider.
const registry = REGISTRY[network];
const provider = new JsonRpcProvider(
new Connection({ fullnode: registry["RPC_URL"] })
);
async function main() {
if (walletPrivateKey === undefined) {
throw new Error("SUI_TESTNET unset in environment");
}
const wallet = new RawSigner(
Ed25519Keypair.fromSecretKey(Buffer.from(walletPrivateKey, "hex")),
provider
);
await publishPackage(wallet, "~/developer/wormhole/sui/wormhole");
}
main();
async function publishPackage(
signer: RawSigner,
//network: Network,
packagePath: string
) {
try {
// Build contracts
const buildOutput: {
modules: string[];
dependencies: string[];
} = JSON.parse(
execSync(
`sui move build --dump-bytecode-as-base64 --path ${packagePath} 2> /dev/null`,
{
encoding: "utf-8",
}
)
);
console.log("buildOutput: ", buildOutput);
// Publish contracts
const transactionBlock = new TransactionBlock();
// important
transactionBlock.setGasBudget(5000000000);
const [upgradeCap] = transactionBlock.publish({
modules: buildOutput.modules.map((m: string) => Array.from(fromB64(m))),
dependencies: buildOutput.dependencies.map((d: string) =>
normalizeSuiObjectId(d)
),
});
// Transfer upgrade capability to deployer
transactionBlock.transferObjects(
[upgradeCap],
transactionBlock.pure(await signer.getAddress())
);
// Execute transactions
const res = await signer.signAndExecuteTransactionBlock({
transactionBlock,
options: {
showInput: true,
showObjectChanges: true,
},
});
// Update network-specific Move.toml with package ID
const publishEvents = getPublishedObjectChanges(res);
if (publishEvents.length !== 1) {
throw new Error(
"No publish event found in transaction:" +
JSON.stringify(res.objectChanges, null, 2)
);
}
// Return publish transaction info
return res;
} catch (e) {
throw e;
} finally {
}
}

View File

@ -0,0 +1,120 @@
/// Initialize Wormhole on Sui testnet
import {
fromB64,
getPublishedObjectChanges,
normalizeSuiObjectId,
RawSigner,
TransactionBlock,
SUI_CLOCK_OBJECT_ID,
JsonRpcProvider,
Ed25519Keypair,
testnetConnection,
Connection,
} from "@mysten/sui.js";
import { execSync } from "child_process";
import fs from "fs";
import { resolve } from "path";
import dotenv from "dotenv";
import { REGISTRY, NETWORK } from "../registry";
dotenv.config({ path: "~/.env" });
// Network dependent settings
let network = NETWORK.TESTNET; // <= NOTE: Update this when changing network
const walletPrivateKey = process.env.SUI_TESTNET; // <= NOTE: Update this when changing network
// Load registry and provider.
const registry = REGISTRY[network];
const provider = new JsonRpcProvider(
new Connection({ fullnode: registry["RPC_URL"] })
);
async function main() {
if (walletPrivateKey === undefined) {
throw new Error("SUI_TESTNET unset in environment");
}
const wallet = new RawSigner(
Ed25519Keypair.fromSecretKey(Buffer.from(walletPrivateKey, "hex")),
provider
);
await init_wormhole(wallet, registry["WORMHOLE_PACKAGE_ID"]);
}
main();
async function init_wormhole(signer: RawSigner, WORMHOLE_PACKAGE_ID: string) {
try {
const tx = new TransactionBlock();
tx.setGasBudget(2500000000);
let DEPLOYER_CAP =
"0x922ff3519eb0e71afaa7c6a7a8a1d074a2269d8ace73e8147bee286dd2d122a1";
let UPGRADE_CAP =
"0x21a346dae01e5f57829f8a2a0bf744b6be4e6d1131faf218b82f0f96708be99f";
let GOVERNANCE_CHAIN = 1;
let GOVERNANCE_CONTRACT = "04";
let GUARDIAN_SET_INDEX = 0; // this should be 3 or higher for mainnet (can check by parsing VAA)
let INITIAL_GUARDIANS = ["13947bd48b18e53fdaeee77f3473391ac727c638"]; // testnet guardian
// Ordered mainnet guardians
// let INITIAL_MAINNET_GUARDIANS =
// [
// "58CC3AE5C097b213cE3c81979e1B9f9570746AA5",
// "fF6CB952589BDE862c25Ef4392132fb9D4A42157",
// "114De8460193bdf3A2fCf81f86a09765F4762fD1",
// "107A0086b32d7A0977926A205131d8731D39cbEB",
// "8C82B2fd82FaeD2711d59AF0F2499D16e726f6b2",
// "11b39756c042441be6d8650b69b54ebe715e2343",
// "54Ce5B4D348fb74B958e8966e2ec3dBd4958a7cd",
// "15e7cAF07C4e3DC8e7C469f92C8Cd88FB8005a20",
// "74a3bf913953D695260D88BC1aA25A4eeE363ef0",
// "000aC0076727b35FBea2dAc28fEE5cCB0fEA768e",
// "AF45Ced136b9D9e24903464AE889F5C8a723FC14",
// "f93124b7c738843CBB89E864c862c38cddCccF95",
// "D2CC37A4dc036a8D232b48f62cDD4731412f4890",
// "DA798F6896A3331F64b48c12D1D57Fd9cbe70811",
// "71AA1BE1D36CaFE3867910F99C09e347899C19C3",
// "8192b6E7387CCd768277c17DAb1b7a5027c0b3Cf",
// "178e21ad2E77AE06711549CFBB1f9c7a9d8096e8",
// "5E1487F35515d02A92753504a8D75471b9f49EdB",
// "6FbEBc898F403E4773E95feB15E80C9A99c8348d"
// ]
let GUARDIAN_SECONDS_TO_LIVE = "1000000000";
let MESSAGE_FEE = 0;
tx.moveCall({
target: `${WORMHOLE_PACKAGE_ID}::setup::complete`,
arguments: [
tx.object(DEPLOYER_CAP),
tx.object(UPGRADE_CAP),
tx.pure(GOVERNANCE_CHAIN),
tx.pure(GOVERNANCE_CONTRACT),
tx.pure(GUARDIAN_SET_INDEX),
tx.pure(INITIAL_GUARDIANS.map((x) => [...Buffer.from(x, "hex")])),
tx.pure(GUARDIAN_SECONDS_TO_LIVE),
tx.pure(MESSAGE_FEE),
],
});
let res = await signer.signAndExecuteTransactionBlock({
transactionBlock: tx,
options: {
showInput: true,
showEffects: true,
showEvents: true,
showObjectChanges: true,
showBalanceChanges: true,
},
});
console.log(res);
// Return publish transaction info
return res;
} catch (e) {
throw e;
} finally {
}
}