From 806117fbabe5125db57debad6200e6c3edb3f2b7 Mon Sep 17 00:00:00 2001 From: Philippe Schommers Date: Fri, 18 Nov 2022 12:54:18 +0100 Subject: [PATCH] feat: add chiado config (#6058) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hey guys, I'm trying to add the Chiado network ([Gnosis' testnet](https://docs.gnosischain.com/about/networks/chiado)) now that Gnosis can be synced fully with Erigon, so we can test it on the testnet as well. This is mostly inspired from https://github.com/ledgerwatch/erigon/commit/cd5ef32f379ff51043b7ce1b0c3c471e18b99459. Probably missing: - [ ] The right consensus config (currently only a copy of Gnosis) - [ ] Fixes to the chainspec? - [ ] Presumably something in `cl/clparams/config.go` Current state: ``` $ ./build/bin/erigon --chain=chiado --log.console.verbosity=debug WARN[11-16|11:52:28.188] no log dir set, console logging only WARN[11-16|11:52:28.193] no log dir set, console logging only INFO[11-16|11:52:28.193] Build info git_branch=feat/chiado git_tag=v2021.10.03-2291-g17fae73f8 git_commit=17fae73f8af5348ba7c04684f2a2978daf81b67e INFO[11-16|11:52:28.193] Starting Erigon on devnet=chiado INFO[11-16|11:52:28.194] Maximum peer count ETH=100 total=100 INFO[11-16|11:52:28.194] starting HTTP APIs APIs=eth,erigon,engine INFO[11-16|11:52:28.194] torrent verbosity level=WRN INFO[11-16|11:52:30.300] Set global gas cap cap=50000000 INFO[11-16|11:52:30.302] Opening Database label=chaindata path=/home/filoozom/.local/share/erigon/chiado/chaindata INFO[11-16|11:52:30.310] Initialised chain configuration config="{ChainID: 10200, Homestead: 0, DAO: , DAO Support: false, Tangerine Whistle: 0, Spurious Dragon: 0, Byzantium: 0, Constantinople: 0, Petersburg: 0, Istanbul: 0, Muir Glacier: , Berlin: 0, London: 0, Arrow Glacier: , Gray Glacier: , Terminal Total Difficulty: , Merge Netsplit: , Shanghai: , Cancun: , Engine: aura}" genesis=0xf463abeb7ee27fa62be3ac36a264e8174ee3458da451e6403df47618fd2cf415 WARN[11-16|11:52:30.311] Incorrect snapshot enablement got=true change_to=false INFO[11-16|11:52:30.311] Effective prune_flags= snapshot_flags= history.v3=false INFO[11-16|11:52:30.312] Initialising Ethereum protocol network=10200 INFO[11-16|11:52:30.329] Starting private RPC server on=127.0.0.1:9090 INFO[11-16|11:52:30.329] new subscription to logs established INFO[11-16|11:52:30.329] rpc filters: subscribing to Erigon events DBUG[11-16|11:52:30.330] Establishing event subscription channel with the RPC daemon ... INFO[11-16|11:52:30.330] New txs subscriber joined INFO[11-16|11:52:30.330] new subscription to newHeaders established INFO[11-16|11:52:30.330] Reading JWT secret path=/home/filoozom/.local/share/erigon/chiado/jwt.hex INFO[11-16|11:52:30.331] HTTP endpoint opened for Engine API url=localhost:8551 ws=true ws.compression=true INFO[11-16|11:52:30.332] HTTP endpoint opened url=localhost:8545 ws=false ws.compression=true grpc=false DBUG[11-16|11:52:30.336] Couldn't add port mapping proto=tcp extport=30304 intport=30304 interface="UPnP or NAT-PMP" err="no UPnP or NAT-PMP router discovered" DBUG[11-16|11:52:30.336] Couldn't add port mapping proto=udp extport=30304 intport=30304 interface="UPnP or NAT-PMP" err="no UPnP or NAT-PMP router discovered" DBUG[11-16|11:52:30.336] QuerySeeds read nodes from the node DB count=0 DBUG[11-16|11:52:30.341] [1/16 Snapshots] DONE in=134.7µs INFO[11-16|11:52:30.341] [txpool] Started INFO[11-16|11:52:30.341] [2/16 Headers] Waiting for headers... from=0 DBUG[11-16|11:52:30.341] [Downloader] Request skeleton anchors=0 top seen height=0 highestInDb=0 DBUG[11-16|11:52:30.343] Couldn't add port mapping proto=tcp extport=30303 intport=30303 interface="UPnP or NAT-PMP" err="no UPnP or NAT-PMP router discovered" DBUG[11-16|11:52:30.343] Couldn't add port mapping proto=udp extport=30303 intport=30303 interface="UPnP or NAT-PMP" err="no UPnP or NAT-PMP router discovered" DBUG[11-16|11:52:30.344] QuerySeeds read nodes from the node DB count=0 DBUG[11-16|11:52:30.346] QuerySeeds read nodes from the node DB count=0 INFO[11-16|11:52:30.347] Started P2P networking version=67 self=enode://47d2e31d90fe140bfd967f147c1d4e8a4834b4c6b895a4bb7082100be60aa5e9a73e98e996da9b0257f02f9ad39b683755abe6ca3e9aefe0170a478a8559dcfb@127.0.0.1:30304 name=erigon/v2.30.0-dev-17fae73f/linux-amd64/go1.18.1 DBUG[11-16|11:52:30.351] QuerySeeds read nodes from the node DB count=0 INFO[11-16|11:52:30.351] Started P2P networking version=66 self=enode://47d2e31d90fe140bfd967f147c1d4e8a4834b4c6b895a4bb7082100be60aa5e9a73e98e996da9b0257f02f9ad39b683755abe6ca3e9aefe0170a478a8559dcfb@127.0.0.1:30303 name=erigon/v2.30.0-dev-17fae73f/linux-amd64/go1.18.1 DBUG[11-16|11:52:31.342] [Downloader] Request skeleton anchors=0 top seen height=0 highestInDb=0 [...] DBUG[11-16|11:52:32.342] [Downloader] Request skeleton anchors=0 top seen height=0 highestInDb=0 INFO[11-16|11:37:00.062] [p2p] GoodPeers eth66=0 eth67=0 INFO[11-16|11:37:00.077] [txpool] stat block=0 pending=0 baseFee=0 queued=0 alloc=42.7MB sys=79.5MB INFO[11-16|11:37:00.089] [2/16 Headers] No block headers to write in this log period block number=0 INFO[11-16|11:37:00.089] Req/resp stats req=0 reqMin=0 reqMax=0 skel=0 skelMin=0 skelMax=0 resp=0 respMin=0 respMax=0 dups=0 DBUG[11-16|11:37:00.089] [Downloader] Queue sizes anchors=0 links=0 persisted=1 DBUG[11-16|11:37:00.089] [Downloader] Request skeleton anchors=0 top seen height=0 highestInDb=0 [...] DBUG[11-16|11:37:06.095] [Downloader] Request skeleton anchors=0 top seen height=0 highestInDb=0 ``` I guess it comes down to: ``` --- FAIL: TestDefaultBSCGenesisBlock (0.34s) genesis_test.go:27: Error Trace: /home/filoozom/projects/erigon/core/genesis_test.go:27 /home/filoozom/projects/erigon/core/genesis_test.go:30 Error: Not equal: expected: []byte{0xe8, 0x72, 0x46, 0x2c, 0x6b, 0xd5, 0xf4, 0x2, 0xec, 0x81, 0xde, 0x7c, 0x5b, 0xd2, 0x82, 0x3e, 0x13, 0x7c, 0x66, 0x6b, 0x78, 0xe8, 0x2b, 0x7e, 0xb0, 0xbe, 0x95, 0xaf, 0x5e, 0xce, 0xa1, 0x8d} actual : []byte{0xad, 0xa4, 0x4f, 0xd8, 0xd2, 0xec, 0xab, 0x8b, 0x8, 0xf2, 0x56, 0xaf, 0x7, 0xad, 0x3e, 0x77, 0x7f, 0x17, 0xfb, 0x43, 0x4f, 0x8f, 0x8e, 0x67, 0x8b, 0x31, 0x2f, 0x57, 0x62, 0x12, 0xba, 0x9a} Diff: --- Expected +++ Actual @@ -1,4 +1,4 @@ ([]uint8) (len=32) { - 00000000 e8 72 46 2c 6b d5 f4 02 ec 81 de 7c 5b d2 82 3e |.rF,k......|[..>| - 00000010 13 7c 66 6b 78 e8 2b 7e b0 be 95 af 5e ce a1 8d |.|fkx.+~....^...| + 00000000 ad a4 4f d8 d2 ec ab 8b 08 f2 56 af 07 ad 3e 77 |..O.......V...>w| + 00000010 7f 17 fb 43 4f 8f 8e 67 8b 31 2f 57 62 12 ba 9a |...CO..g.1/Wb...| } Test: TestDefaultBSCGenesisBlock Messages: chiado FAIL FAIL github.com/ledgerwatch/erigon/core 0.823s ``` ---------- Turns out that the `code` in Erigon's chainspec is not the same as `constructor` in Nethermind for example. Comparison for Sokol: - Erigon: https://github.com/ledgerwatch/erigon/blob/devel/core/allocs/sokol.json#L20-L34 - Nethermind: https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Chains/sokol.json#L248-L252 --- cmd/hack/hack.go | 2 + cmd/utils/flags.go | 2 + consensus/aura/consensusconfig/embed.go | 5 ++ consensus/aura/consensusconfig/poachiado.json | 34 +++++++ core/allocs/chiado.json | 88 +++++++++++++++++++ core/genesis.go | 13 +++ core/genesis_test.go | 4 + eth/ethconfig/config.go | 1 + params/bootnodes.go | 10 +++ params/chainspecs/chiado.json | 24 +++++ params/config.go | 9 ++ params/networkname/network_name.go | 2 + turbo/stages/genesis_test.go | 10 +++ 13 files changed, 204 insertions(+) create mode 100644 consensus/aura/consensusconfig/poachiado.json create mode 100644 core/allocs/chiado.json create mode 100644 params/chainspecs/chiado.json diff --git a/cmd/hack/hack.go b/cmd/hack/hack.go index ab12e07b9..83c2e9bc7 100644 --- a/cmd/hack/hack.go +++ b/cmd/hack/hack.go @@ -1098,6 +1098,8 @@ func chainConfig(name string) error { chainConfig = params.BorMainnetChainConfig case "gnosis": chainConfig = params.GnosisChainConfig + case "chiado": + chainConfig = params.ChiadoChainConfig default: return fmt.Errorf("unknown name: %s", name) } diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 6b645ec8e..e0e5f0ed3 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1090,6 +1090,8 @@ func DataDirForNetwork(datadir string, network string) string { return networkDataDirCheckingLegacy(datadir, "sepolia") case networkname.GnosisChainName: return networkDataDirCheckingLegacy(datadir, "gnosis") + case networkname.ChiadoChainName: + return networkDataDirCheckingLegacy(datadir, "chiado") default: return datadir diff --git a/consensus/aura/consensusconfig/embed.go b/consensus/aura/consensusconfig/embed.go index d26647b32..2e34dd727 100644 --- a/consensus/aura/consensusconfig/embed.go +++ b/consensus/aura/consensusconfig/embed.go @@ -12,12 +12,17 @@ var Sokol []byte //go:embed poagnosis.json var Gnosis []byte +//go:embed poachiado.json +var Chiado []byte + func GetConfigByChain(chainName string) []byte { switch chainName { case networkname.SokolChainName: return Sokol case networkname.GnosisChainName: return Gnosis + case networkname.ChiadoChainName: + return Chiado default: return Sokol } diff --git a/consensus/aura/consensusconfig/poachiado.json b/consensus/aura/consensusconfig/poachiado.json new file mode 100644 index 000000000..f64e714cb --- /dev/null +++ b/consensus/aura/consensusconfig/poachiado.json @@ -0,0 +1,34 @@ +{ + "stepDuration": 5, + "blockReward": "0x0", + "maximumUncleCountTransition": 0, + "maximumUncleCount": 0, + "validators": { + "multi": { + "0": { + "list": ["0x14747a698Ec1227e6753026C08B29b4d5D3bC484"] + }, + "67334": { + "list": [ + "0x14747a698Ec1227e6753026C08B29b4d5D3bC484", + "0x56D421c0AC39976E89fa400d34ca6579417B84cA", + "0x5CD99ac2F0F8C25a1e670F6BaB19D52Aad69D875", + "0x60F1CF46B42Df059b98Acf67C1dD7771b100e124", + "0x655e97bA0f63A56c2b56EB3e84f7bf42b20Bae14", + "0x755B6259938D140626301c0B6026c1C00C9eD5d9", + "0xa8010da9Cb0AC018C86A06301963853CC371a18c" + ] + } + } + }, + "blockRewardContractAddress": "0x2000000000000000000000000000000000000001", + "blockRewardContractTransition": 0, + "randomnessContractAddress": { + "0": "0x3000000000000000000000000000000000000001" + }, + "posdaoTransition": 0, + "blockGasLimitContractTransitions": { + "0": "0x4000000000000000000000000000000000000001" + }, + "registrar": "0x6000000000000000000000000000000000000000" +} diff --git a/core/allocs/chiado.json b/core/allocs/chiado.json new file mode 100644 index 000000000..0c4f33c90 --- /dev/null +++ b/core/allocs/chiado.json @@ -0,0 +1,88 @@ +{ + "0x0000000000000000000000000000000000000001": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000002": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000003": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000004": { + "balance": "0x1" + }, + "0xB03a86b3126157C039b55E21D378587CcFc04d45": { + "balance": "0xc9f2c9cd04674edea40000000" + }, + "0xcC4e00A72d871D6c328BcFE9025AD93d0a26dF51": { + "balance": "0xc9f2c9cd04674edea40000000" + }, + "0x1000000000000000000000000000000000000001": { + "balance": "0x0", + "code": "0x60806040526040516108053803806108058339818101604052604081101561002657600080fd5b50805160209182015160408051600081529384018082527f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000905251603c81850301902091929091839190600019016000805160206107aa8339815191521461008a57fe5b61009c826001600160e01b036101bd16565b805115610154576000826001600160a01b0316826040518082805190602001908083835b602083106100df5780518252601f1990920191602091820191016100c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461013f576040519150601f19603f3d011682016040523d82523d6000602084013e610144565b606091505b505090508061015257600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e000000000000000000000000008152905190819003601301902060008051602061078a833981519152600019909101146101a457fe5b6101b6816001600160e01b0361023716565b505061024f565b6101d08161024960201b6104801760201c565b610225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806107ca603b913960400191505060405180910390fd5b6000805160206107aa83398151915255565b60008051602061078a83398151915255565b3b151590565b61052c8061025e6000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101cb565b34801561011357600080fd5b5061011c61026f565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b031661027e565b34801561017757600080fd5b5061011c61033c565b610188610198565b610198610193610346565b61036b565b565b6101a261038f565b6001600160a01b0316336001600160a01b0316146101bf57600080fd5b6101c8816103b4565b50565b6101d361038f565b6001600160a01b0316336001600160a01b0316146101f057600080fd5b6101f9836103b4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610256576040519150601f19603f3d011682016040523d82523d6000602084013e61025b565b606091505b505090508061026957600080fd5b50505050565b6000610279610346565b905090565b61028661038f565b6001600160a01b0316336001600160a01b0316146102a357600080fd5b6001600160a01b0381166102e85760405162461bcd60e51b81526004018080602001828103825260368152602001806104876036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61031161038f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c8816103f4565b600061027961038f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561038a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6103bd81610418565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b61042181610480565b61045c5760405162461bcd60e51b815260040180806020018281038252603b8152602001806104bd603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a72305820a9aab4b95b654a79b32f5aa284796894f8329aaa083932695296085b196c27bd64736f6c634300050a0032b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000000000000000001000000000000000000000000000000000000000000000000000000000000000b03a86b3126157c039b55e21d378587ccfc04d45" + }, + "0x1000000000000000000000000000000000000000": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b506141f5806100206000396000f3fe608060405234801561001057600080fd5b50600436106103b85760003560e01c806383465b82116101f4578063b41832e41161011a578063cd24327e116100ad578063ee99205c1161007c578063ee99205c14610e29578063eebc7a3914610e31578063facd743b14610e39578063fe54477e14610e5f576103b8565b8063cd24327e14610d79578063d207778214610de7578063e284789514610def578063e717de3a14610e0c576103b8565b8063c9e9694d116100e9578063c9e9694d14610cf8578063cbd2d52814610d1e578063cccf3a0214610d54578063ccf69e9b14610d71576103b8565b8063b41832e414610c3f578063b7ab4db514610c65578063b927ef4314610c6d578063c476dd4014610c75576103b8565b8063a48b042a11610192578063a881c5fd11610161578063a881c5fd14610be3578063a92252ae14610c09578063b172b22214610c2f578063b2c65a1014610c37576103b8565b8063a48b042a14610b50578063a4e01eaa14610b6d578063a657e57914610b8a578063a670eb5614610b92576103b8565b806393b4e25e116101ce57806393b4e25e14610ae857806394f3a24114610af05780639b4a14bf14610b0d578063a26301f914610b2a576103b8565b806383465b8214610a6b5780639184d0ad14610a9157806392d276b414610abf576103b8565b8063392e53cd116102e45780636729c2dc11610277578063714897df11610246578063714897df14610a2d57806374bdb37214610a355780637528621114610a3d57806381db0a4914610a45576103b8565b80636729c2dc1461090f5780636b5ecfd3146109175780636e85d53d1461093d578063704189ca14610a25576103b8565b806356b54bae116102b357806356b54bae1461081b5780635836d08a14610823578063595bddf9146108495780635ccee1de14610907576103b8565b8063392e53cd146107c85780633d34d9ef146107d05780633d3b5458146107f65780634d04481e146107fe576103b8565b80631776dee31161035c5780632bbb7b721161032b5780632bbb7b721461061c5780632f248e3014610642578063374dc77d1461065f578063378bf28b14610736576103b8565b80631776dee31461057c5780631a7fa237146105985780631d0cd4c6146105d05780631ee4d0bc146105f6576103b8565b80630636bdac116103985780630636bdac1461049157806309bee538146104ff5780630bf480c01461055757806316cf66ab1461055f576103b8565b80624a8803146103bd5780625351751461042457806305461c8514610466575b600080fd5b6103c5610e67565b604051808060200183151515158152602001828103825284818151815260200191508051906020019060200280838360005b8381101561040f5781810151838201526020016103f7565b50505050905001935050505060405180910390f35b61044a6004803603602081101561043a57600080fd5b50356001600160a01b0316610f21565b604080516001600160a01b039092168252519081900360200190f35b61048f6004803603606081101561047c57600080fd5b5080359060208101359060400135610f3c565b005b61048f600480360360208110156104a757600080fd5b810190602081018135600160201b8111156104c157600080fd5b8201836020820111156104d357600080fd5b803590602001918460208302840111600160201b831117156104f457600080fd5b50909250905061100d565b610507611073565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561054357818101518382015260200161052b565b505050509050019250505060405180910390f35b6105076110cc565b61044a6004803603602081101561057557600080fd5b5035611125565b610584611140565b604080519115158252519081900360200190f35b6105be600480360360208110156105ae57600080fd5b50356001600160a01b0316611147565b60408051918252519081900360200190f35b6105be600480360360208110156105e657600080fd5b50356001600160a01b0316611173565b61044a6004803603602081101561060c57600080fd5b50356001600160a01b031661119b565b6105be6004803603602081101561063257600080fd5b50356001600160a01b03166111b6565b61048f6004803603602081101561065857600080fd5b50356111c8565b6105be6004803603608081101561067557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156106a857600080fd5b8201836020820111156106ba57600080fd5b803590602001918460018302840111600160201b831117156106db57600080fd5b919390929091602081019035600160201b8111156106f857600080fd5b82018360208201111561070a57600080fd5b803590602001918460018302840111600160201b8311171561072b57600080fd5b50909250905061134a565b6107536004803603602081101561074c57600080fd5b50356113f1565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561078d578181015183820152602001610775565b50505050905090810190601f1680156107ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61058461148c565b61048f600480360360208110156107e657600080fd5b50356001600160a01b031661149d565b61058461194d565b6105846004803603602081101561081457600080fd5b503561196a565b61044a61199a565b6105be6004803603602081101561083957600080fd5b50356001600160a01b03166119a9565b61048f6004803603604081101561085f57600080fd5b810190602081018135600160201b81111561087957600080fd5b82018360208201111561088b57600080fd5b803590602001918460018302840111600160201b831117156108ac57600080fd5b919390929091602081019035600160201b8111156108c957600080fd5b8201836020820111156108db57600080fd5b803590602001918460018302840111600160201b831117156108fc57600080fd5b5090925090506119d1565b61048f611a82565b610507611f99565b6105846004803603602081101561092d57600080fd5b50356001600160a01b0316611fef565b61048f600480360360e081101561095357600080fd5b6001600160a01b03823581169260208101358216926040820135831692606083013516919081019060a081016080820135600160201b81111561099557600080fd5b8201836020820111156109a757600080fd5b803590602001918460208302840111600160201b831117156109c857600080fd5b919390929091602081019035600160201b8111156109e557600080fd5b8201836020820111156109f757600080fd5b803590602001918460208302840111600160201b83111715610a1857600080fd5b9193509150351515612004565b6105be61224e565b6105be61227e565b6105be612283565b61048f612289565b61048f60048036036020811015610a5b57600080fd5b50356001600160a01b0316612382565b6105be60048036036020811015610a8157600080fd5b50356001600160a01b03166125a5565b61058460048036036040811015610aa757600080fd5b506001600160a01b03813516906020013515156125b7565b610ac761270a565b604080519283526001600160a01b0390911660208301528051918290030190f35b61048f61271c565b61048f60048036036020811015610b0657600080fd5b5035612805565b61058460048036036020811015610b2357600080fd5b5035612833565b6105be60048036036020811015610b4057600080fd5b50356001600160a01b0316612848565b61058460048036036020811015610b6657600080fd5b503561285a565b61058460048036036020811015610b8357600080fd5b503561290e565b6105be61292d565b610bc860048036036060811015610ba857600080fd5b506001600160a01b03813581169160208101359091169060400135612933565b60408051921515835290151560208301528051918290030190f35b61058460048036036020811015610bf957600080fd5b50356001600160a01b0316612b1f565b61058460048036036020811015610c1f57600080fd5b50356001600160a01b0316612b32565b61044a612b4f565b61048f612b5e565b6105be60048036036020811015610c5557600080fd5b50356001600160a01b0316612d39565b610507612d61565b6105be612e11565b61048f60048036036060811015610c8b57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610cba57600080fd5b820183602082011115610ccc57600080fd5b803590602001918460018302840111600160201b83111715610ced57600080fd5b509092509050612e17565b6105be60048036036020811015610d0e57600080fd5b50356001600160a01b0316613022565b61058460048036036060811015610d3457600080fd5b506001600160a01b0381358116916020810135909116906040013561304a565b61075360048036036020811015610d6a57600080fd5b5035613104565b61044a61316c565b61048f60048036036020811015610d8f57600080fd5b810190602081018135600160201b811115610da957600080fd5b820183602082011115610dbb57600080fd5b803590602001918460208302840111600160201b83111715610ddc57600080fd5b50909250905061317b565b6105be6131ce565b61044a60048036036020811015610e0557600080fd5b50356131d4565b61058460048036036020811015610e2257600080fd5b50356131ef565b61044a613204565b610507613213565b61058460048036036020811015610e4f57600080fd5b50356001600160a01b03166132be565b6105076132e9565b600454604080518281526020808402820101909152606091600091908015610e99578160200160208202803883390190505b50915060005b8251811015610f1557601e600060036001018381548110610ebc57fe5b9060005260206000200154815260200190815260200160002060009054906101000a90046001600160a01b0316838281518110610ef557fe5b6001600160a01b0390921660209283029190910190910152600101610e9f565b505060035460ff169091565b6010602052600090815260409020546001600160a01b031681565b6025546001600160a01b03163314610f5357600080fd5b60008381526027602052604090205460ff1615610f6f57611008565b6000838152601e60205260409020546001600160a01b0316610f9057600080fd5b81610f9a57600080fd5b600083815260096020526040902054821115610fc25760008381526009602052604090208290555b600083815260086020908152604080832080546001019055600b9091529020819055610fed8361333f565b15610ffc57610ffc600061343e565b61100461347a565b6019555b505050565b6011546001600160a01b0316331461102457600080fd5b61106f828280806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250691d5b9c995d99585b195960b21b925061347e915050565b5050565b606060268054806020026020016040519081016040528092919081815260200182805480156110c157602002820191906000526020600020905b8154815260200190600101908083116110ad575b505050505090505b90565b606060036001018054806020026020016040519081016040528092919081815260200182805480156110c157602002820191906000526020600020908154815260200190600101908083116110ad575050505050905090565b601f602052600090815260409020546001600160a01b031681565b6004541590565b6001600160a01b0381166000908152601c60209081526040808320548352600a9091529020545b919050565b6001600160a01b03166000908152601c60209081526040808320548352600890915290205490565b6014602052600090815260409020546001600160a01b031681565b601c6020526000908152604090205481565b6111d061148c565b6111d957600080fd5b60008181526027602052604090205460ff166111f457600080fd5b6000818152601f60205260409020546001600160a01b031633811480611232575061121d613486565b6001600160a01b0316336001600160a01b0316145b61123b57600080fd5b601554604080516302f248e360e41b81526004810185905290516001600160a01b0390921691632f248e309160248082019260009290919082900301818387803b15801561128857600080fd5b505af115801561129c573d6000803e3d6000fd5b506000925050505b6026548110156113245782602682815481106112bc57fe5b9060005260206000200154141561131c576026805460001981019081106112df57fe5b9060005260206000200154602682815481106112f757fe5b60009182526020909120015560268054906113169060001983016140a6565b50611324565b6001016112a4565b506000828152602760205260409020805460ff1916905561134361347a565b6019555050565b6015546000906001600160a01b0316331461136457600080fd5b600061137088886134ab565b90506113e68187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284376000920191909152506137de92505050565b979650505050505050565b60246020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156114845780601f1061145957610100808354040283529160200191611484565b820191906000526020600020905b81548152906001019060200180831161146757829003601f168201915b505050505081565b600c546001600160a01b0316151590565b6114a561148c565b6114ae57600080fd5b33600081815260106020908152604080832054601d909252909120546001600160a01b039182169184166114e157600080fd5b6001600160a01b0382166114f457600080fd5b836001600160a01b0316826001600160a01b0316141561151357600080fd5b8061151d57600080fd5b6021541561152a57600080fd5b601554604080516322e8c68760e21b81526001600160a01b03878116600483015291519190921691638ba31a1c916024808301926020929190829003018186803b15801561157757600080fd5b505afa15801561158b573d6000803e3d6000fd5b505050506040513d60208110156115a157600080fd5b5051156115ad57600080fd5b6001600160a01b0384166000908152601a6020526040902054156115d057600080fd5b6001600160a01b0384166000908152601b602052604090205460ff16156115f657600080fd5b6000818152600e602052604090205460ff16156118ee57611615611140565b61161e57600080fd5b60055460ff161561162e57600080fd5b6117426116bc6002601160009054906101000a90046001600160a01b03166001600160a01b0316631c77c58c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561168457600080fd5b505afa158015611698573d6000803e3d6000fd5b505050506040513d60208110156116ae57600080fd5b50519063ffffffff61394416565b601560009054906101000a90046001600160a01b03166001600160a01b0316638c2243ae6040518163ffffffff1660e01b815260040160206040518083038186803b15801561170a57600080fd5b505afa15801561171e573d6000803e3d6000fd5b505050506040513d602081101561173457600080fd5b50519063ffffffff61396b16565b61174a61347a565b1061175457600080fd5b606061175e613213565b905060005b81518110156117d357836001600160a01b031682828151811061178257fe5b60200260200101516001600160a01b031614156117cb57858282815181106117a657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506117d3565b600101611763565b50600180546117e4916004916140ca565b506021829055602280546001600160a01b0319166001600160a01b038781169190911790915560115460408051630b40282360e01b81526004810186905290519190921691630b40282391602480830192600092919082900301818387803b15801561184f57600080fd5b505af1158015611863573d6000803e3d6000fd5b50505050600161187161347a565b03407f55252fa6eee4741b4e24a74a70e9c11fd2c2281df8d6ea13126ff845f7825c89826040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156118d55781810151838201526020016118bd565b505050509050019250505060405180910390a250611906565b6118fa82858386613980565b61190261347a565b6019555b836001600160a01b0316826001600160a01b0316827fad4c947995a3daa512a7371d31325a21227249f8dc1c52c1a4c6fe8475a3ebb160405160405180910390a450505050565b6000611957611140565b8015611965575060055460ff165b905090565b6000818152600960205260408120548061198857600091505061116e565b8061199161347a565b11159392505050565b600c546001600160a01b031681565b6001600160a01b03166000908152601c60209081526040808320548352600990915290205490565b6119d961148c565b6119e257600080fd5b336000908152601d6020526040902054806119fc57600080fd5b611a708186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506137de92505050565b611a7861347a565b6019555050505050565b600c546001600160a01b03163314611a9957600080fd5b6015546040805163a5d54f6560e01b815290516060926001600160a01b03169163a5d54f65916004808301926000929190829003018186803b158015611ade57600080fd5b505afa158015611af2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611b1b57600080fd5b810190808051600160201b811115611b3257600080fd5b82016020810184811115611b4557600080fd5b81518560208202830111600160201b82111715611b6157600080fd5b505060265490945060009350601310159150611b809050576000611b87565b6026546013035b9050808251118015611b9857508015155b15611e345760115460408051634191031360e11b815290516000926001600160a01b0316916383220626916004808301926020929190829003018186803b158015611be257600080fd5b505afa158015611bf6573d6000803e3d6000fd5b505050506040513d6020811015611c0c57600080fd5b50516015546040805163957950a760e01b815290519293506060926000926001600160a01b03169163957950a79160048083019286929190829003018186803b158015611c5857600080fd5b505afa158015611c6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015611c9557600080fd5b810190808051600160201b811115611cac57600080fd5b82016020810184811115611cbf57600080fd5b81518560208202830111600160201b82111715611cdb57600080fd5b50506020909101518151919550935015801592509050611cfb5750600081115b15611e2c57606084604051908082528060200260200182016040528015611d2c578160200160208202803883390190505b50865190915060005b8251811015611e1f57604080516020808201989098528151808203890181529082019091528051960195909520946000611d70868689613a09565b9050888181518110611d7e57fe5b6020026020010151848381518110611d9257fe5b602002602001018181525050858181518110611daa57fe5b602002602001015185039450828060019003935050888381518110611dcb57fe5b6020026020010151898281518110611ddf57fe5b602002602001018181525050858381518110611df757fe5b6020026020010151868281518110611e0b57fe5b602090810291909101015250600101611d35565b50611e2982613a56565b50505b505050611e3d565b611e3d82613a56565b611e47600161343e565b815115611eb757601560009054906101000a90046001600160a01b03166001600160a01b0316631555371c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e9e57600080fd5b505af1158015611eb2573d6000803e3d6000fd5b505050505b601560009054906101000a90046001600160a01b03166001600160a01b031663ee435f556040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f0757600080fd5b505af1158015611f1b573d6000803e3d6000fd5b50506015546001600160a01b031691506320d96e469050611f3a61347a565b6001016040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611f7357600080fd5b505af1158015611f87573d6000803e3d6000fd5b5050600060185550611343905061347a565b606060018054806020026020016040519081016040528092919081815260200182805480156110c157602002820191906000526020600020908154815260200190600101908083116110ad575050505050905090565b601b6020526000908152604090205460ff1681565b61200c61347a565b1580612030575061201b613486565b6001600160a01b0316336001600160a01b0316145b61203957600080fd5b61204161148c565b1561204b57600080fd5b6001600160a01b03891661205e57600080fd5b6001600160a01b03871661207157600080fd5b6001600160a01b03861661208457600080fd5b8361208e57600080fd5b83821461209a57600080fd5b60138411156120a857600080fd5b600c80546001600160a01b03808c166001600160a01b031992831617909255602580548b8416908316179055601180548a841690831617905560158054928916929091169190911790556120fa61347a565b60195560005b8481101561224257600086868381811061211657fe5b905060200201356001600160a01b03169050600085858481811061213657fe5b905060200201356001600160a01b03169050600061215483836134ab565b60008054600181810183557f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563909101839055805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601839055828252600e60209081526040808420805460ff1916841790556017909152909120805490910190559050831580156121e75750845b15612237576026805460018181019092557f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3594018290556000828152602760205260409020805460ff191690911790555b505050600101612100565b50505050505050505050565b602654600090612260575060006110c9565b602660008154811061226e57fe5b9060005260206000200154905090565b601381565b60195481565b6002600160a01b03331461229c57600080fd5b60035460ff1615612331576122af613c82565b6122b96001613d3b565b600c60009054906101000a90046001600160a01b03166001600160a01b031663c5dd76286040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561230957600080fd5b505af115801561231d573d6000803e3d6000fd5b5050505061232961347a565b601855612354565b60045415612348576123436000613d3b565b612354565b61235061347a565b6018555b61235c613eaf565b6003805460ff19168155600061237360048261411a565b505061237d61347a565b601955565b61238a61148c565b61239357600080fd5b336000818152601d60205260409020546001600160a01b0383166123b657600080fd5b826001600160a01b0316826001600160a01b031614156123d557600080fd5b806123df57600080fd5b602154156123ec57600080fd5b601554604080516322e8c68760e21b81526001600160a01b03868116600483015291519190921691638ba31a1c916024808301926020929190829003018186803b15801561243957600080fd5b505afa15801561244d573d6000803e3d6000fd5b505050506040513d602081101561246357600080fd5b50511561246f57600080fd5b6001600160a01b0383166000908152601a60205260409020541561249257600080fd5b6001600160a01b0383166000908152601b602052604090205460ff16156124b857600080fd5b6000818152601e60209081526040808320546001600160a01b03868116808652601d85528386208690558882168087528487208890559086526010855283862080546001600160a01b03199081169091558187528487208054821693909416928317909355868652601f855283862080548416821790558186526014855283862080549093168117909255908452601b909252909120805460ff1916600117905561256161347a565b6019556040516001600160a01b03808616919085169084907f5c44164828293bba0353472e907f7ee26a8659f916e6311fe826a7c70510e35290600090a450505050565b601a6020526000908152604090205481565b60008082156125df57506001600160a01b0383166000908152601c60205260409020546125fa565b506001600160a01b0383166000908152601a60205260409020545b6000818152600e602052604081205460ff16801561261e575061261c8261196a565b155b9050601560009054906101000a90046001600160a01b03166001600160a01b031663794c0c686040518163ffffffff1660e01b815260040160206040518083038186803b15801561266e57600080fd5b505afa158015612682573d6000803e3d6000fd5b505050506040513d602081101561269857600080fd5b505115806126a65750601854155b156126b45791506127049050565b60136018546126c161347a565b0311612700576000828152600f602052604081205460ff1680156126eb57506126e98361196a565b155b905081806126f65750805b9350505050612704565b9150505b92915050565b6021546022546001600160a01b031682565b61272461148c565b61272d57600080fd5b61273561194d565b61273e57600080fd5b6000612748613f0e565b6001549091501561280257600161275d61347a565b03407f55252fa6eee4741b4e24a74a70e9c11fd2c2281df8d6ea13126ff845f7825c89612788613213565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156127c45781810151838201526020016127ac565b505050509050019250505060405180910390a2600180546127e7916004916140ca565b506003805460ff19168215151790556127fe61347a565b6019555b50565b61280d613486565b6001600160a01b0316336001600160a01b03161461282a57600080fd5b61280281613f26565b600e6020526000908152604090205460ff1681565b601d6020526000908152604090205481565b6000818152600e602052604081205460ff16156128795750600161116e565b6004546000905b808210156128be57600480548390811061289657fe5b90600052602060002001548414156128b35760019250505061116e565b600190910190612880565b50506001546000905b8082101561290457600182815481106128dc57fe5b90600052602060002001548414156128f95760019250505061116e565b6001909101906128c7565b5060009392505050565b6000818152600a602052604081205461292561347a565b111592915050565b60205481565b6000806129418560016125b7565b61295057506000905080612b17565b61295b8460006125b7565b61296a57506000905080612b17565b6001600160a01b038086166000908152601c60209081526040808320549388168352601a90915281205490546001811115612a825760155460408051630f29818d60e31b815290516000926001600160a01b03169163794c0c68916004808301926020929190829003018186803b1580156129e457600080fd5b505afa1580156129f8573d6000803e3d6000fd5b505050506040513d6020811015612a0e57600080fd5b5051600085815260126020908152604080832084845282528083205460139092528220549293509190828210612a535760018503838303600a0281612a4f57fe5b0490505b8460320283118015612a6457508083115b15612a7d57600060019850985050505050505050612b17565b505050505b6000612a8c61347a565b905080871115612aa6576000809550955050505050612b17565b60648082118015612ab8575080820388105b15612ace57600080965096505050505050612b17565b60008481526007602090815260408083208b8452825280832088845290915290205460ff1615612b0957600080965096505050505050612b17565b600160009650965050505050505b935093915050565b6000612b2a82611147565b61292561347a565b600080612b3e836119a9565b90508061198857600091505061116e565b6025546001600160a01b031681565b612b66613486565b6001600160a01b0316336001600160a01b031614612b8357600080fd5b60265415612b9057600080fd5b601654736a3154a1f55a8faf96dfde75d25eff0c06eb678414612bb257600080fd5b6016805460268054600181810183557f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a35949182019390935581548084019092557359be7069745a9820a75aa66357a50a5d7f66ced591018190558254600090815260276020526040808220805460ff1990811686179091559282527f4bf96c2adb0c7a309689f5f3e58c1a880f1b61efb59c1459be862d2666e5acdb8054909316909317909155601554925482516394f3a24160e01b8152600481019190915291516001600160a01b03909316926394f3a24192602480820193929182900301818387803b158015612ca257600080fd5b505af1158015612cb6573d6000803e3d6000fd5b5050601554604080516394f3a24160e01b81527359be7069745a9820a75aa66357a50a5d7f66ced5600482015290516001600160a01b0390921693506394f3a241925060248082019260009290919082900301818387803b158015612d1a57600080fd5b505af1158015612d2e573d6000803e3d6000fd5b505060006016555050565b6001600160a01b03166000908152601c60209081526040808320548352601790915290205490565b606080600080549050604051908082528060200260200182016040528015612d93578160200160208202803883390190505b50905060005b8151811015612e0b57601e6000808381548110612db257fe5b9060005260206000200154815260200190815260200160002060009054906101000a90046001600160a01b0316828281518110612deb57fe5b6001600160a01b0390921660209283029190910190910152600101612d99565b50905090565b60185481565b612e1f61148c565b612e2857600080fd5b336000818152601c60209081526040808320546001600160a01b0389168452601a90925290912054612e5b8360016125b7565b15612e6957612e6982613fff565b600080612e77858a8a612933565b9150915081612ef3578015612ee957604080516001808252818301909252606091602080830190803883390190505090508581600081518110612eb657fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612ee781637370616d60e01b61347e565b505b505050505061301c565b60008381526006602090815260408083208b84528252808320805460018181018355828652848620909101899055878552600784528285208d86528452828520898652845293829020805460ff191690941790935580516001600160a01b03808a1682528d16928101929092528051869288928d927fc98c577e9aca0ce08e747dd843b95214821e69106d6916218997e8a8f357f3189281900390910190a46000548154612fa890600263ffffffff61394416565b111561224257604080516001808252818301909252606091602080830190803883390190505090508a81600081518110612fde57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061301481686d616c6963696f757360b81b61347e565b505050505050505b50505050565b6001600160a01b03166000908152601c60209081526040808320548352600b90915290205490565b60008061305561347a565b90508060010183111561306c5760009150506130fd565b60648111801561307e57508260648203115b1561308d5760009150506130fd565b6001600160a01b0384166000908152601a60205260409020546130af8161196a565b156130bf576000925050506130fd565b6001600160a01b0386166000908152601c6020908152604080832054938352600782528083208784528252808320938352929052205460ff16159150505b9392505050565b60236020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156114845780601f1061145957610100808354040283529160200191611484565b6011546001600160a01b031681565b613183613486565b6001600160a01b0316336001600160a01b0316146131a057600080fd5b60005b81811015611008576131c68383838181106131ba57fe5b90506020020135613f26565b6001016131a3565b600d5481565b601e602052600090815260409020546001600160a01b031681565b60276020526000908152604090205460ff1681565b6015546001600160a01b031681565b606080600180549050604051908082528060200260200182016040528015613245578160200160208202803883390190505b50905060005b8151811015612e0b57601e60006001838154811061326557fe5b9060005260206000200154815260200190815260200160002060009054906101000a90046001600160a01b031682828151811061329e57fe5b6001600160a01b039092166020928302919091019091015260010161324b565b6001600160a01b03166000908152601c60209081526040808320548352600e90915290205460ff1690565b606060008054806020026020016040519081016040528092919081815260200182805480156110c157602002820191906000526020600020908154815260200190600101908083116110ad575050505050905090565b60155460408051630a38dcbd60e41b81526004810184905290516000926001600160a01b03169163a38dcbd0916024808301928692919082900301818387803b15801561338b57600080fd5b505af115801561339f573d6000803e3d6000fd5b505060018054925082141590506133ba57600091505061116e565b60005b818110156129045783600182815481106133d357fe5b90600052602060002001541415613436576001808303815481106133f357fe5b90600052602060002001546001828154811061340b57fe5b600091825260209091200155600180549061342a9060001983016140a6565b5060019250505061116e565b6001016133bd565b6005805460ff19166001179055808015613459575060015415155b1561346e576005805461ff0019166101001790555b50600d80546001019055565b4390565b61134361347a565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b602154600090156134bb57600080fd5b6001600160a01b0383166134ce57600080fd5b6001600160a01b0382166134e157600080fd5b816001600160a01b0316836001600160a01b0316141561350057600080fd5b6001600160a01b03828116600090815260106020526040902054161561352557600080fd5b6001600160a01b03838116600090815260106020526040902054161561354a57600080fd5b6001600160a01b03828116600090815260146020526040902054161561356f57600080fd5b6001600160a01b03838116600090815260146020526040902054161561359457600080fd5b601554604080516322e8c68760e21b81526001600160a01b03868116600483015291519190921691638ba31a1c916024808301926020929190829003018186803b1580156135e157600080fd5b505afa1580156135f5573d6000803e3d6000fd5b505050506040513d602081101561360b57600080fd5b50511561361757600080fd5b601554604080516322e8c68760e21b81526001600160a01b03858116600483015291519190921691638ba31a1c916024808301926020929190829003018186803b15801561366457600080fd5b505afa158015613678573d6000803e3d6000fd5b505050506040513d602081101561368e57600080fd5b50511561369a57600080fd5b6001600160a01b0383166000908152601a6020526040902054156136bd57600080fd5b6001600160a01b0382166000908152601a6020526040902054156136e057600080fd5b6001600160a01b0383166000908152601b602052604090205460ff161561370657600080fd5b6001600160a01b0382166000908152601b602052604090205460ff161561372c57600080fd5b506020805460019081018083556001600160a01b039485166000818152601c8552604080822084905595909616808752601d8552858720839055828752601e855285872080546001600160a01b03199081168417909155818852601086528688208054821684179055838852601f865286882080548216831790559187526014855285872080549092168117909155601a84528486208290558552601b90925291909220805460ff1916909117905590565b610100825111156137ee57600080fd5b610400815111156137fe57600080fd5b6000838152602360209081526040909120835161381d92850190614138565b506000838152602460209081526040909120825161383d92840190614138565b50827f79a6be597f1291d06b4ccea662f373201edec72cbcc5df2ccfcd74ce9ff4b2e98383604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156138a357818101518382015260200161388b565b50505050905090810190601f1680156138d05780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156139035781810151838201526020016138eb565b50505050905090810190601f1680156139305780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2505050565b60008261395357506000612704565b8282028284828161396057fe5b04146130fd57600080fd5b60008282111561397a57600080fd5b50900390565b6001600160a01b039384166000818152601c60209081526040808320839055958716808352868320869055858352601e825286832080546001600160a01b0319908116831790915594909716808352601082528683208054861689179055928252601481528582208054851690559581528481208054909316909117909155601a909352912055565b600080838381613a1557fe5b0690506000805b828211613a4857868181518110613a2f57fe5b6020026020010151820191508080600101915050613a1c565b600019019695505050505050565b8051613c1e5760005b600154811015613c1857600060018281548110613a7857fe5b6000918252602080832090910154808352602790915260409091205490915060ff1615613aa55750613c10565b601554604080516317775f1960e31b81526004810184905290516001600160a01b039092169163bbbaf8c891602480820192602092909190829003018186803b158015613af157600080fd5b505afa158015613b05573d6000803e3d6000fd5b505050506040513d6020811015613b1b57600080fd5b50518015613ba55750601554604080516371f87fb360e11b8152600481018490526000602482015290516001600160a01b039092169163e3f0ff6691604480820192602092909190829003018186803b158015613b7757600080fd5b505afa158015613b8b573d6000803e3d6000fd5b505050506040513d6020811015613ba157600080fd5b5051155b15613bb05750613c10565b600180541415613bc05750613c18565b600180546000198101908110613bd257fe5b906000526020600020015460018381548110613bea57fe5b6000918252602090912001556001805490613c099060001983016140a6565b5050600019015b600101613a5f565b50612802565b60268054613c2e916001916140ca565b5060005b815181108015613c4457506001546013115b1561106f576001828281518110613c5757fe5b6020908102919091018101518254600181810185556000948552929093209092019190915501613c32565b60025460005b81811015613cd6576000600f600060028481548110613ca357fe5b60009182526020808320919091015483528201929092526040019020805460ff1916911515919091179055600101613c88565b505060008054905b81811015613d2b576001600f6000808481548110613cf857fe5b60009182526020808320919091015483528201929092526040019020805460ff1916911515919091179055600101613cde565b60008054611008916002916140ca565b6060600080805480602002602001604051908101604052809291908181526020018280548015613d8a57602002820191906000526020600020905b815481526020019060010190808311613d76575b50505050509150600090505b8151811015613de2576000600e6000848481518110613db157fe5b6020908102919091018101518252810191909152604001600020805460ff1916911515919091179055600101613d96565b60048054613df2916000916140ca565b506000805480602002602001604051908101604052809291908181526020018280548015613e3f57602002820191906000526020600020905b815481526020019060010190808311613e2b575b50505050509150600090505b8151811015611008576000828281518110613e6257fe5b6020908102919091018101516000818152600e9092526040909120805460ff1916600117905590508315613ea6576000818152601760205260409020805460010190555b50600101613e4b565b6021548015613ef6576000818152601e6020908152604080832054602254601f9093529220546001600160a01b03928316929182169116613ef283838684613980565b5050505b506000602155602280546001600160a01b0319169055565b6005805461ffff198116909155610100900460ff1690565b60008181526027602052604090205460ff1615613f4257600080fd5b602654601311613f5157600080fd5b6026805460018181019092557f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a359401829055600082815260276020526040808220805460ff191690931790925560155482516394f3a24160e01b81526004810185905292516001600160a01b03909116926394f3a24192602480830193919282900301818387803b158015613fe457600080fd5b505af1158015613ff8573d6000803e3d6000fd5b5050505050565b60155460408051630f29818d60e31b815290516000926001600160a01b03169163794c0c68916004808301926020929190829003018186803b15801561404457600080fd5b505afa158015614058573d6000803e3d6000fd5b505050506040513d602081101561406e57600080fd5b505160009283526012602090815260408085209285529181528184208054600190810190915560139091529220805490920190915550565b815481835581811115611008576000838152602090206110089181019083016141a6565b82805482825590600052602060002090810192821561410a5760005260206000209182015b8281111561410a5782548255916001019190600101906140ef565b506141169291506141a6565b5090565b508054600082559060005260206000209081019061280291906141a6565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061417957805160ff191683800117855561410a565b8280016001018555821561410a579182015b8281111561410a57825182559160200191906001019061418b565b6110c991905b8082111561411657600081556001016141ac56fea265627a7a7230582055f1a6432160796b00712c102535aff37d15150aeb81412e0c35d8522cd3bc3164736f6c634300050a0032" + }, + "0x1100000000000000000000000000000000000001": { + "balance": "0x0", + "code": "0x60806040526040516108053803806108058339818101604052604081101561002657600080fd5b50805160209182015160408051600081529384018082527f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000905251603c81850301902091929091839190600019016000805160206107aa8339815191521461008a57fe5b61009c826001600160e01b036101bd16565b805115610154576000826001600160a01b0316826040518082805190602001908083835b602083106100df5780518252601f1990920191602091820191016100c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461013f576040519150601f19603f3d011682016040523d82523d6000602084013e610144565b606091505b505090508061015257600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e000000000000000000000000008152905190819003601301902060008051602061078a833981519152600019909101146101a457fe5b6101b6816001600160e01b0361023716565b505061024f565b6101d08161024960201b6104801760201c565b610225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806107ca603b913960400191505060405180910390fd5b6000805160206107aa83398151915255565b60008051602061078a83398151915255565b3b151590565b61052c8061025e6000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101cb565b34801561011357600080fd5b5061011c61026f565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b031661027e565b34801561017757600080fd5b5061011c61033c565b610188610198565b610198610193610346565b61036b565b565b6101a261038f565b6001600160a01b0316336001600160a01b0316146101bf57600080fd5b6101c8816103b4565b50565b6101d361038f565b6001600160a01b0316336001600160a01b0316146101f057600080fd5b6101f9836103b4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610256576040519150601f19603f3d011682016040523d82523d6000602084013e61025b565b606091505b505090508061026957600080fd5b50505050565b6000610279610346565b905090565b61028661038f565b6001600160a01b0316336001600160a01b0316146102a357600080fd5b6001600160a01b0381166102e85760405162461bcd60e51b81526004018080602001828103825260368152602001806104876036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61031161038f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c8816103f4565b600061027961038f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561038a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6103bd81610418565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b61042181610480565b61045c5760405162461bcd60e51b815260040180806020018281038252603b8152602001806104bd603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a72305820a9aab4b95b654a79b32f5aa284796894f8329aaa083932695296085b196c27bd64736f6c634300050a0032b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000000000000000001100000000000000000000000000000000000000000000000000000000000000b03a86b3126157c039b55e21d378587ccfc04d45" + }, + "0x1100000000000000000000000000000000000000": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b5061579480620000216000396000f3fe6080604052600436106103c35760003560e01c80638c2243ae116101f2578063cd22c7521161010d578063e3f0ff66116100a0578063f07860961161006f578063f078609614611033578063f3fef3a314611048578063f494250114611081578063fb367a9b14611096576103c3565b8063e3f0ff6614610efd578063e4a9e42e14610f36578063edd7db7514611009578063ee435f551461101e576103c3565b8063d609ea93116100dc578063d609ea9314610ea9578063da7a9b6a14610ebe578063df6f55f514610ed3578063dfc8bf4e14610ee8576103c3565b8063cd22c75214610dfe578063cfef144114610e28578063d290c21d14610e5b578063d2f2a13614610e70576103c3565b8063a4c0ed3611610185578063b61ed63a11610154578063b61ed63a14610cc4578063bbbaf8c814610cfd578063bcdb0d3814610d27578063cc4a666714610d51576103c3565b8063a4c0ed3614610bde578063a5d54f6514610c6e578063adc9772e14610c83578063b172b22214610caf576103c3565b806397997ebb116101c157806397997ebb14610b4b5780639fb0e72e14610b60578063a1fc275314610b8a578063a38dcbd014610bb4576103c3565b80638c2243ae14610a6157806394f3a24114610a76578063950a651314610aa0578063957950a714610adb576103c3565b80633ea15d62116102e2578063673a2a1f116102755780637069e746116102445780637069e746146109ef57806374bdb37214610a04578063794c0c6814610a195780638ba31a1c14610a2e576103c3565b8063673a2a1f146109365780636bda15771461094b5780636d01b4fe146109865780636e69cd8b146109c5576103c3565b80635292fccf116102b15780635292fccf14610891578063561c4c81146108c4578063570941d2146108ee5780635fef764314610921576103c3565b80633ea15d621461074b5780633fb1a1e4146108045780634070a2d01461083d57806348aaa4a214610867576103c3565b806327d89b3a1161035a5780632ebfaf4e116103295780632ebfaf4e146106445780632f248e30146106d3578063381883b0146106fd578063392e53cd14610736576103c3565b806327d89b3a146105865780632a8f6ecd146105bf5780632bafde8d146105e95780632d21d21714610613576103c3565b80631555371c116103965780631555371c146104b1578063186dc46f146104c657806320d96e4614610519578063251441a914610543576103c3565b806302a53ba1146103c85780630555c5e214610413578063073b62fe1461043f578063093411da14610478575b600080fd5b3480156103d457600080fd5b50610401600480360360408110156103eb57600080fd5b50803590602001356001600160a01b0316611173565b60408051918252519081900360200190f35b34801561041f57600080fd5b5061043d6004803603602081101561043657600080fd5b5035611190565b005b34801561044b57600080fd5b506104016004803603604081101561046257600080fd5b50803590602001356001600160a01b0316611325565b34801561048457600080fd5b506104016004803603604081101561049b57600080fd5b50803590602001356001600160a01b0316611359565b3480156104bd57600080fd5b5061043d611376565b3480156104d257600080fd5b50610505600480360360608110156104e957600080fd5b508035906001600160a01b036020820135169060400135611418565b604080519115158252519081900360200190f35b34801561052557600080fd5b5061043d6004803603602081101561053c57600080fd5b503561143e565b34801561054f57600080fd5b5061043d6004803603606081101561056657600080fd5b506001600160a01b0381358116916020810135909116906040013561145a565b34801561059257600080fd5b50610401600480360360408110156105a957600080fd5b50803590602001356001600160a01b03166115f2565b3480156105cb57600080fd5b50610401600480360360208110156105e257600080fd5b503561160f565b3480156105f557600080fd5b5061043d6004803603602081101561060c57600080fd5b5035611621565b34801561061f57600080fd5b5061062861165c565b604080516001600160a01b039092168252519081900360200190f35b34801561065057600080fd5b506106836004803603606081101561066757600080fd5b506001600160a01b03813516906020810135906040013561166b565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156106bf5781810151838201526020016106a7565b505050509050019250505060405180910390f35b3480156106df57600080fd5b5061043d600480360360208110156106f657600080fd5b5035611780565b34801561070957600080fd5b506104016004803603604081101561072057600080fd5b50803590602001356001600160a01b03166117e3565b34801561074257600080fd5b50610505611800565b34801561075757600080fd5b5061043d6004803603604081101561076e57600080fd5b810190602081018135600160201b81111561078857600080fd5b82018360208201111561079a57600080fd5b803590602001918460208302840111600160201b831117156107bb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505090356001600160a01b031691506118129050565b34801561081057600080fd5b506104016004803603604081101561082757600080fd5b50803590602001356001600160a01b0316611e87565b34801561084957600080fd5b506104016004803603602081101561086057600080fd5b5035611ea4565b34801561087357600080fd5b5061043d6004803603602081101561088a57600080fd5b5035611eb6565b34801561089d57600080fd5b5061043d600480360360208110156108b457600080fd5b50356001600160a01b0316611ef1565b3480156108d057600080fd5b50610683600480360360208110156108e757600080fd5b5035612045565b3480156108fa57600080fd5b5061043d6004803603602081101561091157600080fd5b50356001600160a01b03166120b1565b34801561092d57600080fd5b5061040161213d565b34801561094257600080fd5b50610683612143565b34801561095757600080fd5b506104016004803603604081101561096e57600080fd5b506001600160a01b038135811691602001351661219b565b34801561099257600080fd5b50610401600480360360608110156109a957600080fd5b508035906001600160a01b03602082013516906040013561235a565b3480156109d157600080fd5b50610401600480360360208110156109e857600080fd5b503561237d565b3480156109fb57600080fd5b5061040161238f565b348015610a1057600080fd5b50610401612395565b348015610a2557600080fd5b5061040161239b565b348015610a3a57600080fd5b5061040160048036036020811015610a5157600080fd5b50356001600160a01b03166123a1565b348015610a6d57600080fd5b506104016123bc565b348015610a8257600080fd5b5061043d60048036036020811015610a9957600080fd5b50356123e1565b348015610aac57600080fd5b5061040160048036036040811015610ac357600080fd5b506001600160a01b0381358116916020013516612420565b348015610ae757600080fd5b50610af06125d1565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015610b36578181015183820152602001610b1e565b50505050905001935050505060405180910390f35b348015610b5757600080fd5b50610401612634565b348015610b6c57600080fd5b5061040160048036036020811015610b8357600080fd5b503561263a565b348015610b9657600080fd5b5061068360048036036020811015610bad57600080fd5b503561264c565b348015610bc057600080fd5b5061043d60048036036020811015610bd757600080fd5b50356126b6565b348015610bea57600080fd5b5061050560048036036060811015610c0157600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610c3057600080fd5b820183602082011115610c4257600080fd5b803590602001918460018302840111600160201b83111715610c6357600080fd5b5090925090506126d6565b348015610c7a57600080fd5b5061068361283c565b61043d60048036036040811015610c9957600080fd5b506001600160a01b038135169060200135612892565b348015610cbb57600080fd5b5061062861289c565b348015610cd057600080fd5b5061043d60048036036040811015610ce757600080fd5b506001600160a01b0381351690602001356128ab565b348015610d0957600080fd5b5061050560048036036020811015610d2057600080fd5b5035612cd7565b348015610d3357600080fd5b5061040160048036036020811015610d4a57600080fd5b5035612d12565b348015610d5d57600080fd5b5061043d6004803603610100811015610d7557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b811115610da857600080fd5b820183602082011115610dba57600080fd5b803590602001918460208302840111600160201b83111715610ddb57600080fd5b919350915080359060208101359060408101359060608101359060800135612d24565b348015610e0a57600080fd5b5061040160048036036020811015610e2157600080fd5b5035612f0f565b348015610e3457600080fd5b5061043d60048036036020811015610e4b57600080fd5b50356001600160a01b0316612f21565b348015610e6757600080fd5b50610683613128565b348015610e7c57600080fd5b5061040160048036036040811015610e9357600080fd5b50803590602001356001600160a01b031661317e565b348015610eb557600080fd5b5061040161319b565b348015610eca57600080fd5b506104016131a1565b348015610edf57600080fd5b506106836131a7565b348015610ef457600080fd5b506106286131fd565b348015610f0957600080fd5b5061040160048036036040811015610f2057600080fd5b50803590602001356001600160a01b031661320c565b61040160048036036080811015610f4c57600080fd5b8135916001600160a01b0360208201351691810190606081016040820135600160201b811115610f7b57600080fd5b820183602082011115610f8d57600080fd5b803590602001918460018302840111600160201b83111715610fae57600080fd5b919390929091602081019035600160201b811115610fcb57600080fd5b820183602082011115610fdd57600080fd5b803590602001918460018302840111600160201b83111715610ffe57600080fd5b509092509050613229565b34801561101557600080fd5b5061043d6132a3565b34801561102a57600080fd5b5061043d613452565b34801561103f57600080fd5b50610401613474565b34801561105457600080fd5b5061043d6004803603604081101561106b57600080fd5b506001600160a01b03813516906020013561347a565b34801561108d57600080fd5b50610505613568565b3480156110a257600080fd5b5061115a600480360360608110156110b957600080fd5b810190602081018135600160201b8111156110d357600080fd5b8201836020820111156110e557600080fd5b803590602001918460208302840111600160201b8311171561110657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550506001600160a01b0383358116945060209093013590921691506135aa9050565b6040805192835260208301919091528051918290030190f35b602a60209081526000928352604080842090915290825290205481565b611198613c33565b6001600160a01b0316336001600160a01b0316146111b557600080fd5b60006111bf613c58565b90506035546000146111d057600080fd5b6037548110806111e05750603754155b6111e957600080fd5b816111f2613c5c565b146111fc57600080fd5b600054828161120757fe5b061561121257600080fd5b6000805461122790849063ffffffff613cd816565b603780549084905590915060005b60005481101561131c57600080828154811061124d57fe5b6000918252602080832090910154603954604080516316cf66ab60e01b81526004810184905290519295506001600160a01b03909116926316cf66ab92602480840193829003018186803b1580156112a457600080fd5b505afa1580156112b8573d6000803e3d6000fd5b505050506040513d60208110156112ce57600080fd5b50516000838152603160209081526040808320838052909152902054909150156112f757600080fd5b611302818287613cfa565b506000908152600b60205260409020839055600101611235565b50603755505050565b6000828152600a602090815260408083206001600160a01b0385168452825280832060355484529091529020545b92915050565b602b60209081526000928352604080842090915290825290205481565b6039546001600160a01b0316331461138d57600080fd5b606060038054806020026020016040519081016040528092919081815260200182805480156113db57602002820191906000526020600020905b8154815260200190600101908083116113c7575b50939450600093505050505b81518110156114145761140c8282815181106113ff57fe5b60200260200101516141dc565b6001016113e7565b5050565b603060209081526000938452604080852082529284528284209052825290205460ff1681565b6039546001600160a01b0316331461145557600080fd5b603755565b816001600160a01b0316836001600160a01b0316141561147957600080fd5b6039546040805163a26301f960e01b81526001600160a01b0386811660048301529151600093929092169163a26301f991602480820192602092909190829003018186803b1580156114ca57600080fd5b505afa1580156114de573d6000803e3d6000fd5b505050506040513d60208110156114f457600080fd5b50516039546040805163a26301f960e01b81526001600160a01b0387811660048301529151939450600093919092169163a26301f9916024808301926020929190829003018186803b15801561154957600080fd5b505afa15801561155d573d6000803e3d6000fd5b505050506040513d602081101561157357600080fd5b50519050336115838682866142c8565b61158e858286613cfa565b603554604080516001600160a01b03898116825260208201889052818301879052606082018690529151828516928916917f982f87186288986ca297b6c86b6d4547934327c6e005ce210da6b0cdc06a370d919081900360800190a4505050505050565b603260209081526000928352604080842090915290825290205481565b60386020526000908152604090205481565b611629613c33565b6001600160a01b0316336001600160a01b03161461164657600080fd5b61164e611800565b61165757600080fd5b602555565b6053546001600160a01b031681565b6001600160a01b0383166000908152600860205260409020606090826116df578054604080516020808402820181019092528281529183918301828280156116d257602002820191906000526020600020905b8154815260200190600101908083116116be575b5050505050915050611779565b80546000906116f4908663ffffffff61453a16565b90508084116117035783611705565b805b60405190808252806020026020018201604052801561172e578160200160208202803883390190505b50925060005b835181101561177557828187018154811061174b57fe5b906000526020600020015484828151811061176257fe5b6020908102919091010152600101611734565b5050505b9392505050565b6039546001600160a01b0316331461179757600080fd5b806117a157600080fd5b6000818152603160209081526040808320838052909152902054156117d7576117c98161454f565b6117d28161460b565b6117e0565b6117e0816146c4565b50565b603360209081526000928352604080842090915290825290205481565b6039546001600160a01b031615155b90565b3a61181c57600080fd5b611824611800565b61182d57600080fd5b6039546040805163a26301f960e01b81526001600160a01b03848116600483015291513393600093169163a26301f9916024808301926020929190829003018186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d60208110156118a657600080fd5b505190506001600160a01b0383166118bd57600080fd5b6001600160a01b0382166118d057600080fd5b806118da57600080fd5b6000836001600160a01b0316836001600160a01b031614156118fd5760006118ff565b825b9050600080846001600160a01b0316866001600160a01b0316146119715760008481526032602090815260408083206001600160a01b038916845290915290205491508161194c57600080fd5b5060008381526033602090815260408083206001600160a01b03881684529091529020545b60395460408051632b5aa5d760e11b815290516000926001600160a01b0316916356b54bae916004808301926020929190829003018186803b1580156119b657600080fd5b505afa1580156119ca573d6000803e3d6000fd5b505050506040513d60208110156119e057600080fd5b505190506119ec615708565b50604080518082019091526000808252602082018190528951611ad957826001600160a01b031663e7f6cfe2886040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611a4d57600080fd5b505afa158015611a61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611a8a57600080fd5b810190808051600160201b811115611aa157600080fd5b82016020810184811115611ab457600080fd5b81518560208202830111600160201b82111715611ad057600080fd5b50909d50505050505b60005b8a51811015611df25760008b8281518110611af357fe5b602002602001015190508160001480611b2157508b6001830381518110611b1657fe5b602002602001015181115b611b2a57600080fd5b6035548110611b3857600080fd5b60008981526030602090815260408083206001600160a01b038c168452825280832084845290915290205460ff1615611b715750611dea565b611b79615708565b8a6001600160a01b03168c6001600160a01b031614611c655787821015611ba1575050611dea565b818711158015611bb057508615155b15611bbc575050611df2565b611bc98289868d8f61474d565b9350816001019750856001600160a01b031663877ffdea85848d6040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050604080518083038186803b158015611c2457600080fd5b505afa158015611c38573d6000803e3d6000fd5b505050506040513d6040811015611c4e57600080fd5b508051602091820151918301919091528152611cec565b60408051631289b17960e01b815260048101849052602481018c905281516001600160a01b03891692631289b1799260448082019391829003018186803b158015611caf57600080fd5b505afa158015611cc3573d6000803e3d6000fd5b505050506040513d6040811015611cd957600080fd5b5080516020918201519183019190915281525b80518551611cff9163ffffffff6147bf16565b855260208082015190860151611d1a9163ffffffff6147bf16565b8560200181815250506001603060008c815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020600084815260200190815260200160002060006101000a81548160ff021916908315150217905550818b6001600160a01b03168d6001600160a01b03167f6d8e1b032c4629c85b1e460dedd0e2d7c5eb72880982d3e495f0f892b7f64406846000015185602001518f60405180848152602001838152602001828152602001935050505060405180910390a450505b600101611adc565b50826001600160a01b03166370cafd65836000015184602001518b6040518463ffffffff1660e01b815260040180848152602001838152602001826001600160a01b03166001600160a01b031681526020019350505050600060405180830381600087803b158015611e6357600080fd5b505af1158015611e77573d6000803e3d6000fd5b5050505050505050505050505050565b603160209081526000928352604080842090915290825290205481565b60286020526000908152604090205481565b611ebe613c33565b6001600160a01b0316336001600160a01b031614611edb57600080fd5b611ee3611800565b611eec57600080fd5b602455565b611ef9613c33565b6001600160a01b0316336001600160a01b031614611f1657600080fd5b6001600160a01b038116611f2957600080fd5b6039546040805163a26301f960e01b815273eb43574e8f4fddf11fbaf65a8632ca92262a1266600482018190529151919269043c33c193756480000092849283926001600160a01b03169163a26301f991602480820192602092909190829003018186803b158015611f9a57600080fd5b505afa158015611fae573d6000803e3d6000fd5b505050506040513d6020811015611fc457600080fd5b505114611fd057600080fd5b6000838152600b6020526040812055611fea8180846142c8565b611ff484836147d1565b603554604080518481526020810186905281516001600160a01b0385169283927f5c5eecdba4673a19126d31c4ea006153eec8120d460905a4643cacd174da8722929081900390910190a450505050565b6000818152600660209081526040918290208054835181840281018401909452808452606093928301828280156120a557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612087575b50505050509050919050565b6120b9613c33565b6001600160a01b0316336001600160a01b0316146120d657600080fd5b6120de611800565b6120e757600080fd5b6001600160a01b0381166120fa57600080fd5b6053546001600160a01b03161561211057600080fd5b605380546001600160a01b0319166001600160a01b038316179055612133613c5c565b156117e057600080fd5b60245481565b6060600080548060200260200160405190810160405280929190818152602001828054801561219157602002820191906000526020600020905b81548152602001906001019080831161217d575b5050505050905090565b6039546040805163a26301f960e01b81526001600160a01b03858116600483015291516000938493169163a26301f9916024808301926020929190829003018186803b1580156121ea57600080fd5b505afa1580156121fe573d6000803e3d6000fd5b505050506040513d602081101561221457600080fd5b5051905060006001600160a01b038481169086161415612235576000612237565b835b90506001600160a01b038581169085161415612253838261488c565b6122635760009350505050611353565b60008381526031602090815260408083206001600160a01b0386168452909152902054816122ae576000848152600b60205260409020546122ab90829063ffffffff61453a16565b90505b60395460408051635245821560e11b81526004810187905290516001600160a01b039092169163a48b042a91602480820192602092909190829003018186803b1580156122fa57600080fd5b505afa15801561230e573d6000803e3d6000fd5b505050506040513d602081101561232457600080fd5b505161233557935061135392505050565b60006123418585611325565b90508082111561234f578091505b509695505050505050565b602660209081526000938452604080852082529284528284209052825290205481565b602c6020526000908152604090205481565b60375481565b603a5481565b60355481565b6001600160a01b031660009081526008602052604090205490565b60375460009080156123cf5760016123d2565b60005b60ff1660365482010391505090565b6039546001600160a01b031633146123f857600080fd5b6004546002541461240857600080fd5b6000818152600b60205260408120556117e0816148c2565b6039546040805163a26301f960e01b81526001600160a01b03858116600483015291516000938493169163a26301f9916024808301926020929190829003018186803b15801561246f57600080fd5b505afa158015612483573d6000803e3d6000fd5b505050506040513d602081101561249957600080fd5b505190506001600160a01b0384811690841614156000816124bb5760006124bd565b845b90506124c9838361488c565b6124d95760009350505050611353565b60395460408051635245821560e11b81526004810186905290516001600160a01b039092169163a48b042a91602480820192602092909190829003018186803b15801561252557600080fd5b505afa158015612539573d6000803e3d6000fd5b505050506040513d602081101561254f57600080fd5b50516125615760009350505050611353565b60008381526031602090815260408083206001600160a01b0385168452909152902054826125ac576000848152600b60205260409020546125a990829063ffffffff61453a16565b90505b6125c66125b98584611325565b829063ffffffff61453a16565b979650505050505050565b6060600060046005548180548060200260200160405190810160405280929190818152602001828054801561262557602002820191906000526020600020905b815481526020019060010190808311612611575b50505050509150915091509091565b60345481565b602e6020526000908152604090205481565b6000818152600760209081526040918290208054835181840281018401909452808452606093928301828280156120a5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116120875750505050509050919050565b6039546001600160a01b031633146126cd57600080fd5b6117e0816141dc565b60006126e0611800565b6126e957600080fd5b6053546001600160a01b0316331461270057600080fd5b601482101561270e57600080fd5b600080606085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050506020820151606081901c955060581c60ff1615801594509192506128239050576000806060602084015160ff8160501c16935050826040519080825280601f01601f1916602001820160405280156127a7576020820181803883390190505b50905082609a60208301378351609a84013560f01c92508190838501601801146127d057600080fd5b826040519080825280601f01601f1916602001820160405280156127fb576020820181803883390190505b5091508284609c016020840137816128188c8e8a60018686614a0e565b50505050505061282e565b61282e838989613cfa565b506001979650505050505050565b60606002805480602002602001604051908101604052809291908181526020018280548015612191576020028201919060005260206000209081548152602001906001019080831161217d575050505050905090565b6114148282614be1565b603b546001600160a01b031681565b3a6128b557600080fd5b6128bd611800565b6128c657600080fd5b6039546040805163a26301f960e01b81526001600160a01b0385811660048301529151600093929092169163a26301f991602480820192602092909190829003018186803b15801561291757600080fd5b505afa15801561292b573d6000803e3d6000fd5b505050506040513d602081101561294157600080fd5b505190506001600160a01b03831661295857600080fd5b8161296257600080fd5b8061296c57600080fd5b3360006001600160a01b038516821415612987576000612989565b815b90506129a0836001600160a01b038316151561488c565b6129a957600080fd5b60008381526027602090815260408083206001600160a01b0385168085529083528184205487855260288452828520546031855283862092865291845282852054888652603890945291842054919390929190881315612a8f5787612a0e8a88612420565b811115612a1a57600080fd5b612a2a858263ffffffff6147bf16565b9450612a3c848263ffffffff6147bf16565b9350612a4e838263ffffffff61453a16565b9250612a60828263ffffffff61453a16565b60355460008a81526029602090815260408083206001600160a01b038c1684529091529020559150612ade9050565b6000889003612aa4858263ffffffff61453a16565b9450612ab6848263ffffffff61453a16565b9350612ac8838263ffffffff6147bf16565b9250612ada828263ffffffff6147bf16565b9150505b60008781526027602090815260408083206001600160a01b03808a168086529184528285208990558b855260288452828520889055603184528285209185529083528184208690558a84526038909252909120829055868116908a161415612c24576000878152600b6020526040902054821015612b5b57600080fd5b811580612b6a57506024548210155b612b7357600080fd5b6039546040805163738bef1d60e11b8152600481018a905290516000926001600160a01b03169163e717de3a916024808301926020929190829003018186803b158015612bbf57600080fd5b505afa158015612bd3573d6000803e3d6000fd5b505050506040513d6020811015612be957600080fd5b50511590506000891315612c145782612c0f5780612c0657600080fd5b612c0f886146c4565b612c1e565b612c1e8882614c7f565b50612c6d565b811580612c3357506025548210155b612c3c57600080fd5b6000881315612c595781612c5457612c548787614cfb565b612c63565b612c638787614e4a565b612c6d8787614f07565b612c768761460b565b603554866001600160a01b03168a6001600160a01b03167f89b66c7c015442886e0ce3c9c8137443ebbe1b1766f6b3a942dde6c3bb82517d8b8b604051808381526020018281526020019250505060405180910390a4505050505050505050565b6000818152602d602052604081205481548110801561177957508260008281548110612cff57fe5b9060005260206000200154149392505050565b602f6020526000908152604090205481565b6001600160a01b038916612d3757600080fd5b85612d4157600080fd5b84612d4b57600080fd5b83612d5557600080fd5b82612d5f57600080fd5b808311612d6b57600080fd5b80612d7557600080fd5b612d7d613c58565b1580612da15750612d8c613c33565b6001600160a01b0316336001600160a01b0316145b612daa57600080fd5b612db2611800565b15612dbc57600080fd5b603980546001600160a01b03808c166001600160a01b031992831617909255603b8054928b169290911691909117905560005b86811015612edf57878782818110612e0357fe5b9050602002013560001415612e1757600080fd5b612e34888883818110612e2657fe5b905060200201356000614c7f565b6039546001600160a01b031663e717de3a898984818110612e5157fe5b905060200201356040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612e8c57600080fd5b505afa158015612ea0573d6000803e3d6000fd5b505050506040513d6020811015612eb657600080fd5b5051612ed757612ed7888883818110612ecb57fe5b905060200201356146c4565b600101612def565b5060258590556024849055603683905560378290556034819055612f01613c58565b603a55505050505050505050565b602d6020526000908152604090205481565b6039546040805163a26301f960e01b81526001600160a01b0384811660048301529151600093929092169163a26301f991602480820192602092909190829003018186803b158015612f7257600080fd5b505afa158015612f86573d6000803e3d6000fd5b505050506040513d6020811015612f9c57600080fd5b5051905080612faa57600080fd5b3360006001600160a01b038416821415612fc5576000612fc7565b815b60008481526029602090815260408083206001600160a01b038516845290915290205460355491925010612ffa57600080fd5b61300f836001600160a01b0383161515614fea565b1561301957600080fd5b60008381526027602090815260408083206001600160a01b03851684529091529020548061304657600080fd5b60008481526027602090815260408083206001600160a01b038616845282528083208390558683526028909152902054613086908263ffffffff61453a16565b600085815260286020908152604080832093909355603181528282206001600160a01b0386168352905220546130c1576130c18486856151a5565b6130cb83826147d1565b603554836001600160a01b0316866001600160a01b03167f3b1f0416a322c81d02b7eb108c29b8c9cf15503da84e83c389c529625b10389e8488604051808381526020018281526020019250505060405180910390a45050505050565b60606003805480602002602001604051908101604052809291908181526020018280548015612191576020028201919060005260206000209081548152602001906001019080831161217d575050505050905090565b602960209081526000928352604080842090915290825290205481565b60365481565b60255481565b60606001805480602002602001604051908101604052809291908181526020018280548015612191576020028201919060005260206000209081548152602001906001019080831161217d575050505050905090565b6039546001600160a01b031681565b602760209081526000928352604080842090915290825290205481565b60006125c6873388600089898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600092019190915250614a0e92505050565b3a6132ad57600080fd5b6132b5611800565b6132be57600080fd5b6039546040805163a26301f960e01b815233600482015290516000926001600160a01b03169163a26301f9916024808301926020929190829003018186803b15801561330957600080fd5b505afa15801561331d573d6000803e3d6000fd5b505050506040513d602081101561333357600080fd5b505190508061334157600080fd5b600060355411806133c7575060395460408051639b4a14bf60e01b81526004810184905290516001600160a01b0390921691639b4a14bf91602480820192602092909190829003018186803b15801561339957600080fd5b505afa1580156133ad573d6000803e3d6000fd5b505050506040513d60208110156133c357600080fd5b5051155b6133d057600080fd5b6039546040805163738bef1d60e11b81526004810184905290516001600160a01b039092169163e717de3a91602480820192602092909190829003018186803b15801561341c57600080fd5b505afa158015613430573d6000803e3d6000fd5b505050506040513d602081101561344657600080fd5b5051156126cd57600080fd5b6039546001600160a01b0316331461346957600080fd5b603580546001019055565b610bb881565b6039546040805163a26301f960e01b81526001600160a01b03858116600483015291513393600093169163a26301f9916024808301926020929190829003018186803b1580156134c957600080fd5b505afa1580156134dd573d6000803e3d6000fd5b505050506040513d60208110156134f357600080fd5b505190506135028483856142c8565b61350c82846147d1565b603554826001600160a01b0316856001600160a01b03167f5c5eecdba4673a19126d31c4ea006153eec8120d460905a4643cacd174da87228685604051808381526020018281526020019250505060405180910390a450505050565b600080613573613c58565b905060375481101561358957600091505061180f565b6034546036546037549190039061359e576001015b60375490910310905090565b6039546040805163a26301f960e01b81526001600160a01b03858116600483015291516000938493849391169163a26301f991602480820192602092909190829003018186803b1580156135fd57600080fd5b505afa158015613611573d6000803e3d6000fd5b505050506040513d602081101561362757600080fd5b505190506001600160a01b03851661363e57600080fd5b6001600160a01b03841661365157600080fd5b8061365b57600080fd5b6000856001600160a01b0316856001600160a01b0316141561367e576000613680565b845b604080516002808252606080830184529394509091602083019080388339019050509050856001600160a01b0316876001600160a01b0316146137595760008381526032602090815260408083206001600160a01b038a1684529091528120548251909183916136ec57fe5b6020026020010181815250508060008151811061370557fe5b60200260200101516000141561371a57600080fd5b60008381526033602090815260408083206001600160a01b038a16845290915290205481518290600190811061374c57fe5b6020026020010181815250505b60395460408051632b5aa5d760e11b815290516000926001600160a01b0316916356b54bae916004808301926020929190829003018186803b15801561379e57600080fd5b505afa1580156137b2573d6000803e3d6000fd5b505050506040513d60208110156137c857600080fd5b505190506137d4615708565b50604080518082019091526000808252602082018190528a516138c157826001600160a01b031663e7f6cfe2876040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561383557600080fd5b505afa158015613849573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561387257600080fd5b810190808051600160201b81111561388957600080fd5b8201602081018481111561389c57600080fd5b81518560208202830111600160201b821117156138b857600080fd5b50909e50505050505b60005b8b51811015613c195780158061390257508b60018203815181106138e457fe5b60200260200101518c82815181106138f857fe5b6020026020010151115b61390b57600080fd5b6035548c828151811061391a57fe5b60200260200101511061392c57600080fd5b60008781526030602090815260408083206001600160a01b038a16845290915281208d519091908e908490811061395f57fe5b60209081029190910181015182528101919091526040016000205460ff161561398757613c11565b61398f615708565b8a6001600160a01b03168c6001600160a01b031614613b4157856000815181106139b557fe5b60200260200101518d83815181106139c957fe5b602002602001015110156139dd5750613c11565b8c82815181106139e957fe5b6020026020010151866001815181106139fe57fe5b602002602001015111158015613a29575085600181518110613a1c57fe5b6020026020010151600014155b15613a345750613c19565b613a688d8381518110613a4357fe5b602002602001015187600081518110613a5857fe5b6020026020010151858b8f61474d565b92508c8281518110613a7657fe5b602002602001015160010186600081518110613a8e57fe5b602002602001018181525050846001600160a01b031663877ffdea848f8581518110613ab657fe5b60200260200101518b6040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050604080518083038186803b158015613b0057600080fd5b505afa158015613b14573d6000803e3d6000fd5b505050506040513d6040811015613b2a57600080fd5b508051602091820151918301919091528152613bdc565b846001600160a01b0316631289b1798e8481518110613b5c57fe5b60200260200101518a6040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015613b9f57600080fd5b505afa158015613bb3573d6000803e3d6000fd5b505050506040513d6040811015613bc957600080fd5b5080516020918201519183019190915281525b80518451613bef9163ffffffff6147bf16565b845260208082015190850151613c0a9163ffffffff6147bf16565b6020850152505b6001016138c4565b50508051602090910151909a909950975050505050505050565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b4390565b605354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015613ca757600080fd5b505afa158015613cbb573d6000803e3d6000fd5b505050506040513d6020811015613cd157600080fd5b5051905090565b6000808211613ce657600080fd5b6000828481613cf157fe5b04949350505050565b3a613d0457600080fd5b613d0c611800565b613d1557600080fd5b6039546040805163a26301f960e01b81526001600160a01b0386811660048301529151600093929092169163a26301f991602480820192602092909190829003018186803b158015613d6657600080fd5b505afa158015613d7a573d6000803e3d6000fd5b505050506040513d6020811015613d9057600080fd5b505190506001600160a01b038416613da757600080fd5b80613db157600080fd5b81613dbb57600080fd5b60395460408051632682240f60e11b81526004810184905290516001600160a01b0390921691634d04481e91602480820192602092909190829003018186803b158015613e0757600080fd5b505afa158015613e1b573d6000803e3d6000fd5b505050506040513d6020811015613e3157600080fd5b505115613e3d57600080fd5b613e45613568565b613e4e57600080fd5b6000846001600160a01b0316846001600160a01b03161415613e71576000613e73565b835b60008381526031602090815260408083206001600160a01b038516845290915281205491925090613eaa908563ffffffff6147bf16565b9050856001600160a01b0316856001600160a01b03161415613eda57602454811015613ed557600080fd5b613f0c565b602554811015613ee957600080fd5b6000838152603160209081526040808320838052909152902054613f0c57600080fd5b60008381526031602090815260408083206001600160a01b03861684529091529020819055613f4b84613f3f8585611325565b9063ffffffff6147bf16565b6000848152600a602090815260408083206001600160a01b038716845282528083206035548452825280832093909355858252603890522054613f94908563ffffffff6147bf16565b6000848152603860205260409020556001600160a01b038581169087161415614040576039546040805163738bef1d60e11b815260048101869052905161403b9286926001600160a01b039091169163e717de3a91602480820192602092909190829003018186803b15801561400957600080fd5b505afa15801561401d573d6000803e3d6000fd5b505050506040513d602081101561403357600080fd5b505115614c7f565b614175565b61404a8386614e4a565b6140548386614f07565b6001600160a01b038516600090815260086020908152604080832080546009845282852088865290935290832054909282821015806140a957508684838154811061409b57fe5b906000526020600020015414155b905080156140e8576001600160a01b03891660009081526009602090815260408083208a84528252822085905585546001810187558683529120018790555b8261417057603954604080516341a32dc160e11b81526001600160a01b038c81166004830152915191909216916383465b82916024808301926020929190829003018186803b15801561413a57600080fd5b505afa15801561414e573d6000803e3d6000fd5b505050506040513d602081101561416457600080fd5b50511561417057600080fd5b505050505b61417e8361460b565b603554856001600160a01b0316876001600160a01b03167f1111552b4d689ce73a2a7356e066e28215e6d61a2294e89ac9e02a933ebb0d508787604051808381526020018281526020019250505060405180910390a4505050505050565b6000818152602d60205260408120549054811080156142115750816000828154811061420457fe5b9060005260206000200154145b1561428257600080548190600019810190811061422a57fe5b90600052602060002001549050806000838154811061424557fe5b6000918252602080832090910192909255828152602d9091526040808220849055848252812081905580549061427f906000198301615722565b50505b61428b826152f5565b1561429e5761429982615320565b6142a7565b6142a7826153c6565b6142b0826148c2565b6142b982615449565b6142c1613c58565b603a555050565b3a6142d257600080fd5b6142da611800565b6142e357600080fd5b6039546040805163a26301f960e01b81526001600160a01b0386811660048301529151600093929092169163a26301f991602480820192602092909190829003018186803b15801561433457600080fd5b505afa158015614348573d6000803e3d6000fd5b505050506040513d602081101561435e57600080fd5b505190506001600160a01b03841661437557600080fd5b8161437f57600080fd5b8061438957600080fd5b614393848461219b565b82111561439f57600080fd5b6000846001600160a01b0316846001600160a01b031614156143c25760006143c4565b835b60008381526031602090815260408083206001600160a01b0385168452909152812054919250906143fb908563ffffffff61453a16565b90506000856001600160a01b0316876001600160a01b0316141561443d576000848152600b602052604090205482101561443457600080fd5b50602454614442565b506025545b81158061444f5750808210155b61445857600080fd5b60008481526031602090815260408083206001600160a01b038716845290915281208390556144878585611325565b90508581101561449857600061449c565b8581035b6000868152600a602090815260408083206001600160a01b0389168452825280832060355484528252808320939093558782526038905220546144e5908763ffffffff61453a16565b60008681526038602052604090205582614504576145048589896151a5565b876001600160a01b0316876001600160a01b031614614527576145278588614f07565b6145308561460b565b5050505050505050565b60008282111561454957600080fd5b50900390565b6000818152602e602052604090205460025480821015806145875750826002838154811061457957fe5b906000526020600020015414155b156145fd576000838152602e602052604081208290556002805460018181019092557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0185905560048054918201815582527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01555b61460683615449565b505050565b614613613c58565b603a55600080614622836154ef565b91509150816146325750506117e0565b60006004828154811061464157fe5b90600052602060002001549050600060386000868152602001908152602001600020549050806004848154811061467457fe5b6000918252602090912001558181106146a45760055461469c9083830363ffffffff6147bf16565b6005556146bd565b6005546146b99082840363ffffffff61453a16565b6005555b5050505050565b6000818152602f602052604090205460035480821015806146fc575082600383815481106146ee57fe5b906000526020600020015414155b15614744576000838152602f602052604081208290556003805460018101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018390555b614606836148c2565b60005b5060008281526026602090815260408083206001600160a01b03851684528252808320888452909152902054801561479b5760001981146147915780614794565b60005b90506147b6565b848614156147aa5750826147b6565b60001990950194614750565b95945050505050565b60008282018381101561177957600080fd5b3a6147db57600080fd5b6147e3611800565b6147ec57600080fd5b6053546001600160a01b031661480157600080fd5b6053546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561485757600080fd5b505af115801561486b573d6000803e3d6000fd5b505050506040513d602081101561488157600080fd5b50516142b957600080fd5b60006148988383614fea565b156148a557506000611353565b6148ad613568565b6148b957506000611353565b50600192915050565b600454600254146148d2576117e0565b6000818152602e602052604090205460025481108015614908575081600282815481106148fb57fe5b9060005260206000200154145b15611414576004818154811061491a57fe5b906000526020600020015460055410614955576004818154811061493a57fe5b6000918252602090912001546005805491909103905561495b565b60006005555b600280546000198101916000918390811061497257fe5b90600052602060002001549050806002848154811061498d57fe5b9060005260206000200181905550600482815481106149a857fe5b9060005260206000200154600484815481106149c057fe5b6000918252602080832090910192909255828152602e909152604080822085905585825281205560028054906149fa906000198301615722565b5060048054906146bd906000198301615722565b60395460405163374dc77d60e01b81526001600160a01b03868116600483019081528882166024840152608060448401908152865160848501528651600095869594169363374dc77d938b938d938b938b939291606482019160a4019060208701908083838f5b83811015614a8d578181015183820152602001614a75565b50505050905090810190601f168015614aba5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015614aed578181015183820152602001614ad5565b50505050905090810190601f168015614b1a5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015614b3d57600080fd5b505af1158015614b51573d6000803e3d6000fd5b505050506040513d6020811015614b6757600080fd5b505190508415614b8157614b7c87888a613cfa565b614b8b565b614b8b8789614be1565b856001600160a01b0316876001600160a01b03167f7342ad45e4a4592daa7f7e40b50c1c2ce42aa21da0242065e849a8509de7ba7e836040518082815260200191505060405180910390a3979650505050505050565b33614bed838284613cfa565b3415614bf857600080fd5b6053546001600160a01b0316614c0d57600080fd5b605354604080516356e4bb9760e11b81526001600160a01b038481166004830152602482018690529151919092169163adc9772e91604480830192600092919082900301818387803b158015614c6257600080fd5b505af1158015614c76573d6000803e3d6000fd5b50505050505050565b614c8882612cd7565b614ce35760008054838252602d602052604082208190556001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301829055614cd561553f565b6000541115614ce357600080fd5b614cec82615320565b8015611414576114148261454f565b6000828152600660209081526040808320602a83528184206001600160a01b038616855290925290912054815481108015614d5e5750826001600160a01b0316828281548110614d4757fe5b6000918252602090912001546001600160a01b0316145b15614e0357815460009083906000198101908110614d7857fe5b9060005260206000200160009054906101000a90046001600160a01b0316905080838381548110614da557fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055878252602a8152604080832085851684529091528082208590559186168152908120558254614e00846000198301615722565b50505b60008481526027602090815260408083206001600160a01b038716845290915290205415614e3a57614e358484615545565b614e44565b614e4484846155fb565b50505050565b6000828152600660209081526040808320602a83528184206001600160a01b03861685529092529091205481548082101580614eaf5750836001600160a01b0316838381548110614e9757fe5b6000918252602090912001546001600160a01b031614155b15614efd576000858152602a602090815260408083206001600160a01b0388168085529083529083208490558554600181018755868452919092200180546001600160a01b03191690911790555b6146bd85856155fb565b60355460008381526031602090815260408083206001600160a01b038616845290915290205460019091019080614f4057600019614f42565b805b60008581526026602090815260408083206001600160a01b038816808552908352818420878552835281842094909455878352603282528083209383529290522054614fae5760008481526032602090815260408083206001600160a01b038716845290915290208290555b8015614fbb576000614fbd565b815b60009485526033602090815260408087206001600160a01b03909616875294905292909320919091555050565b6000811561507c57603954604080516352700f5560e11b81526004810186905290516001600160a01b039092169163a4e01eaa91602480820192602092909190829003018186803b15801561503e57600080fd5b505afa158015615052573d6000803e3d6000fd5b505050506040513d602081101561506857600080fd5b50511561507757506001611353565b61519c565b60395460408051632682240f60e11b81526004810186905290516001600160a01b0390921691634d04481e91602480820192602092909190829003018186803b1580156150c857600080fd5b505afa1580156150dc573d6000803e3d6000fd5b505050506040513d60208110156150f257600080fd5b50511561510157506001611353565b603b546001600160a01b03161580159061518f5750603b546040805163cd2ecdf360e01b81526004810186905290516001600160a01b039092169163cd2ecdf391602480820192602092909190829003018186803b15801561516257600080fd5b505afa158015615176573d6000803e3d6000fd5b505050506040513d602081101561518c57600080fd5b50515b1561519c57506001611353565b50600092915050565b816001600160a01b0316816001600160a01b031614156152d4576039546040805163738bef1d60e11b81526004810186905290516001600160a01b039092169163e717de3a91602480820192602092909190829003018186803b15801561520b57600080fd5b505afa15801561521f573d6000803e3d6000fd5b505050506040513d602081101561523557600080fd5b50516152cf5760395460408051639b4a14bf60e01b81526004810186905290516001600160a01b0390921691639b4a14bf91602480820192602092909190829003018186803b15801561528757600080fd5b505afa15801561529b573d6000803e3d6000fd5b505050506040513d60208110156152b157600080fd5b5051156152c6576152c1836146c4565b6152cf565b6152cf836141dc565b614606565b6152de8382614cfb565b6152e7836152f5565b156146065761460683615320565b6000818152603860205260408120541580156113535750506000908152602860205260409020541590565b6000818152602c6020526040902054600154811080156153565750816001828154811061534957fe5b9060005260206000200154145b15611414576001805460009190600019810190811061537157fe5b90600052602060002001549050806001838154811061538c57fe5b6000918252602080832090910192909255828152602c90915260408082208490558482528120556001805490614e44906000198301615722565b6000818152602c602052604090205460015480821015806153fe575082600183815481106153f057fe5b906000526020600020015414155b15614606576000838152602c6020526040812082905560018054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601839055505050565b6000818152602f60205260409020546003548110801561547f5750816003828154811061547257fe5b9060005260206000200154145b15611414576003805460009190600019810190811061549a57fe5b9060005260206000200154905080600383815481106154b557fe5b6000918252602080832090910192909255828152602f90915260408082208490558482528120556003805490614e44906000198301615722565b6000818152602e6020526040812054600254811080156155255750826002828154811061551857fe5b9060005260206000200154145b15615533576001915061553a565b5060009050805b915091565b610bb890565b6000828152600760209081526040808320602b83528184206001600160a01b038616855290925290912054815480821015806155aa5750836001600160a01b031683838154811061559257fe5b6000918252602090912001546001600160a01b031614155b156146bd576000948552602b602090815260408087206001600160a01b039690961680885295825286209190915582546001810184559285529093200180546001600160a01b031916909117905550565b6000828152600760209081526040808320602b83528184206001600160a01b03861685529092529091205481548110801561565e5750826001600160a01b031682828154811061564757fe5b6000918252602090912001546001600160a01b0316145b15614e445781546000908390600019810190811061567857fe5b9060005260206000200160009054906101000a90046001600160a01b03169050808383815481106156a557fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055878252602b8152604080832085851684529091528082208590559186168152908120558254615700846000198301615722565b505050505050565b604051806040016040528060008152602001600081525090565b8154818355818111156146065760008381526020902061460691810190830161180f91905b8082111561575b5760008155600101615747565b509056fea265627a7a72305820996d14df4eb718bdfaf51d30633ce9f875a01d08087e1f0c649175bcda695ad364736f6c634300050a0032" + }, + "0x2000000000000000000000000000000000000001": { + "balance": "0x0", + "code": "0x60806040526040516108053803806108058339818101604052604081101561002657600080fd5b50805160209182015160408051600081529384018082527f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000905251603c81850301902091929091839190600019016000805160206107aa8339815191521461008a57fe5b61009c826001600160e01b036101bd16565b805115610154576000826001600160a01b0316826040518082805190602001908083835b602083106100df5780518252601f1990920191602091820191016100c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461013f576040519150601f19603f3d011682016040523d82523d6000602084013e610144565b606091505b505090508061015257600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e000000000000000000000000008152905190819003601301902060008051602061078a833981519152600019909101146101a457fe5b6101b6816001600160e01b0361023716565b505061024f565b6101d08161024960201b6104801760201c565b610225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806107ca603b913960400191505060405180910390fd5b6000805160206107aa83398151915255565b60008051602061078a83398151915255565b3b151590565b61052c8061025e6000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101cb565b34801561011357600080fd5b5061011c61026f565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b031661027e565b34801561017757600080fd5b5061011c61033c565b610188610198565b610198610193610346565b61036b565b565b6101a261038f565b6001600160a01b0316336001600160a01b0316146101bf57600080fd5b6101c8816103b4565b50565b6101d361038f565b6001600160a01b0316336001600160a01b0316146101f057600080fd5b6101f9836103b4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610256576040519150601f19603f3d011682016040523d82523d6000602084013e61025b565b606091505b505090508061026957600080fd5b50505050565b6000610279610346565b905090565b61028661038f565b6001600160a01b0316336001600160a01b0316146102a357600080fd5b6001600160a01b0381166102e85760405162461bcd60e51b81526004018080602001828103825260368152602001806104876036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61031161038f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c8816103f4565b600061027961038f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561038a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6103bd81610418565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b61042181610480565b61045c5760405162461bcd60e51b815260040180806020018281038252603b8152602001806104bd603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a72305820a9aab4b95b654a79b32f5aa284796894f8329aaa083932695296085b196c27bd64736f6c634300050a0032b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000000000000000002000000000000000000000000000000000000000000000000000000000000000b03a86b3126157c039b55e21d378587ccfc04d45" + }, + "0x2000000000000000000000000000000000000000": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b50614620806100206000396000f3fe6080604052600436106102935760003560e01c80636834fc901161015a578063adc481a7116100c1578063dfc8bf4e1161007a578063dfc8bf4e14610d5c578063e706ba2714610d71578063e7f6cfe214610da1578063f8fdc6b914610dcb578063f91c289814610dfb578063faaf3aff14610f5f57610293565b8063adc481a714610c8f578063b25a00fd14610ca4578063b4a523e814610cb9578063c5dd762814610cec578063cc7cab9514610d01578063cdf7a09014610d3257610293565b80638c439867116101135780638c43986714610ad65780639a0a9fdc14610b51578063a4c0ed3614610b66578063a9add57d14610c2c578063aa9fa27414610c41578063ac8a094214610c7a57610293565b80636834fc901461096557806368c49f3d146109e057806370cafd65146109f5578063727b071d14610a345780638737929a14610a64578063877ffdea14610aa057610293565b80633bf47e96116101fe5780634b6368cf116101b75780634b6368cf1461086a5780634de6c0361461087f57806353251389146108ba578063553a5c85146108e45780635fba554e146108f9578063621784781461093b57610293565b80633bf47e96146106c45780633d84b8c1146106ee578063419ce2641461072157806343544960146107365780634476d66a14610805578063485cc9551461082f57610293565b8063212329f311610250578063212329f31461042d578063222fafb2146105375780632ee57f8d14610561578063307bff261461059357806330f6eb1614610662578063392e53cd1461069b57610293565b80630ac2daa014610298578063118d2191146102da5780631289b1791461030f578063128b265f14610358578063171d54dd146103825780631f1a01b7146103fd575b600080fd5b3480156102a457600080fd5b506102c8600480360360408110156102bb57600080fd5b5080359060200135610f74565b60408051918252519081900360200190f35b3480156102e657600080fd5b5061030d600480360360208110156102fd57600080fd5b50356001600160a01b0316610f91565b005b34801561031b57600080fd5b5061033f6004803603604081101561033257600080fd5b5080359060200135610fe9565b6040805192835260208301919091528051918290030190f35b34801561036457600080fd5b5061030d6004803603602081101561037b57600080fd5b5035611073565b34801561038e57600080fd5b5061030d600480360360208110156103a557600080fd5b810190602081018135600160201b8111156103bf57600080fd5b8201836020820111156103d157600080fd5b803590602001918460208302840111600160201b831117156103f257600080fd5b50909250905061107f565b34801561040957600080fd5b506102c86004803603604081101561042057600080fd5b508035906020013561117a565b34801561043957600080fd5b506104e76004803603608081101561045057600080fd5b81359190810190604081016020820135600160201b81111561047157600080fd5b82018360208201111561048357600080fd5b803590602001918460208302840111600160201b831117156104a457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505082359350505060200135611197565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561052357818101518382015260200161050b565b505050509050019250505060405180910390f35b34801561054357600080fd5b5061030d6004803603602081101561055a57600080fd5b5035611269565b34801561056d57600080fd5b506105766112e6565b604080516001600160e01b03199092168252519081900360200190f35b34801561059f57600080fd5b5061033f600480360360a08110156105b657600080fd5b6001600160a01b038235169160208101359160408201359160608101359181019060a081016080820135600160201b8111156105f157600080fd5b82018360208201111561060357600080fd5b803590602001918460208302840111600160201b8311171561062457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506112f2945050505050565b34801561066e57600080fd5b506102c86004803603604081101561068557600080fd5b506001600160a01b038135169060200135611318565b3480156106a757600080fd5b506106b0611335565b604080519115158252519081900360200190f35b3480156106d057600080fd5b506102c8600480360360208110156106e757600080fd5b5035611346565b3480156106fa57600080fd5b506102c86004803603602081101561071157600080fd5b50356001600160a01b031661192e565b34801561072d57600080fd5b506104e7611940565b34801561074257600080fd5b5061033f600480360360a081101561075957600080fd5b6001600160a01b038235169160208101359160408201359160608101359181019060a081016080820135600160201b81111561079457600080fd5b8201836020820111156107a657600080fd5b803590602001918460208302840111600160201b831117156107c757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506119a2945050505050565b34801561081157600080fd5b506102c86004803603602081101561082857600080fd5b50356119b2565b34801561083b57600080fd5b5061030d6004803603604081101561085257600080fd5b506001600160a01b03813581169160200135166119c4565b34801561087657600080fd5b506102c8611a78565b34801561088b57600080fd5b506104e7600480360360408110156108a257600080fd5b506001600160a01b0381358116916020013516611a83565b3480156108c657600080fd5b5061030d600480360360208110156108dd57600080fd5b5035611ee1565b3480156108f057600080fd5b506102c8611eea565b34801561090557600080fd5b506102c8600480360360a081101561091c57600080fd5b5080359060208101359060408101359060608101359060800135611ef0565b34801561094757600080fd5b5061030d6004803603602081101561095e57600080fd5b5035611f93565b34801561097157600080fd5b5061030d6004803603602081101561098857600080fd5b810190602081018135600160201b8111156109a257600080fd5b8201836020820111156109b457600080fd5b803590602001918460208302840111600160201b831117156109d557600080fd5b50909250905061202a565b3480156109ec57600080fd5b506102c8612121565b348015610a0157600080fd5b5061030d60048036036060811015610a1857600080fd5b50803590602081013590604001356001600160a01b0316612127565b348015610a4057600080fd5b506102c860048036036040811015610a5757600080fd5b50803590602001356122bf565b348015610a7057600080fd5b506102c860048036036080811015610a8757600080fd5b50803590602081013590604081013590606001356122dc565b348015610aac57600080fd5b5061033f60048036036060811015610ac357600080fd5b5080359060208101359060400135612356565b348015610ae257600080fd5b5061030d60048036036020811015610af957600080fd5b810190602081018135600160201b811115610b1357600080fd5b820183602082011115610b2557600080fd5b803590602001918460208302840111600160201b83111715610b4657600080fd5b5090925090506123ea565b348015610b5d57600080fd5b506104e76124e1565b348015610b7257600080fd5b506106b060048036036060811015610b8957600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610bb857600080fd5b820183602082011115610bca57600080fd5b803590602001918460018302840111600160201b83111715610beb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612541945050505050565b348015610c3857600080fd5b506102c8612548565b348015610c4d57600080fd5b5061030d60048036036040811015610c6457600080fd5b50803590602001356001600160a01b0316612555565b348015610c8657600080fd5b506102c86125e0565b348015610c9b57600080fd5b506102c86125e6565b348015610cb057600080fd5b506104e76125ec565b348015610cc557600080fd5b506102c860048036036020811015610cdc57600080fd5b50356001600160a01b031661264c565b348015610cf857600080fd5b5061030d61265e565b348015610d0d57600080fd5b50610d16612881565b604080516001600160a01b039092168252519081900360200190f35b348015610d3e57600080fd5b506102c860048036036020811015610d5557600080fd5b5035612890565b348015610d6857600080fd5b50610d166128a2565b348015610d7d57600080fd5b506102c860048036036040811015610d9457600080fd5b50803590602001356128b1565b348015610dad57600080fd5b506104e760048036036020811015610dc457600080fd5b50356128ce565b348015610dd757600080fd5b506102c860048036036040811015610dee57600080fd5b508035906020013561292e565b348015610e0757600080fd5b50610ec660048036036040811015610e1e57600080fd5b810190602081018135600160201b811115610e3857600080fd5b820183602082011115610e4a57600080fd5b803590602001918460208302840111600160201b83111715610e6b57600080fd5b919390929091602081019035600160201b811115610e8857600080fd5b820183602082011115610e9a57600080fd5b803590602001918460208302840111600160201b83111715610ebb57600080fd5b509092509050612949565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610f0a578181015183820152602001610ef2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610f49578181015183820152602001610f31565b5050505090500194505050505060405180910390f35b348015610f6b57600080fd5b506102c8613211565b602960209081526000928352604080842090915290825290205481565b610f99613217565b6001600160a01b0316336001600160a01b031614610fb657600080fd5b610fbe611335565b610fc757600080fd5b604d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152602a6020908152604080832084845282528083205485845260298352818420858552835281842054868552604b84528285208686529093529083205483929061103c908790849084906122dc565b6000878152602260209081526040808320898452909152902054909450611068908790849084906122dc565b925050509250929050565b61107c81611f93565b50565b611087613217565b6001600160a01b0316336001600160a01b0316146110a457600080fd5b6110ac611335565b6110b557600080fd5b60005b60025481101561111157600060016000600284815481106110d557fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556001016110b8565b61111d60028484614526565b50600090505b8181101561117557600180600085858581811061113c57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611123565b505050565b602260209081526000928352604080842090915290825290205481565b606080836111bf576040805160008152602081019091526111b990849061323c565b90955093505b8515806111ca575083155b156111e4575060408051600081526020810190915261125e565b845160405190808252806020026020018201604052801561120f578160200160208202803883390190505b50905060005b855181101561125c578486828151811061122b57fe5b602002602001015188028161123c57fe5b0482828151811061124957fe5b6020908102919091010152600101611215565b505b90505b949350505050565b3360009081526001602052604090205460ff1661128557600080fd5b8061128f57600080fd5b6021546112a2908263ffffffff6134a316565b6021819055604080518381526020810192909252805133927f619cc90cbd264bea3dfc113e68fd307789a937a8c10ef4b0110607ac7490367392908290030190a250565b63069ad3e560e11b5b90565b60008061130a61130287856134bc565b8887876134d7565b915091509550959350505050565b602460209081526000928352604080842090915290825290205481565b602c546001600160a01b0316151590565b600080602c60009054906101000a90046001600160a01b03166001600160a01b031663ee99205c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561139757600080fd5b505afa1580156113ab573d6000803e3d6000fd5b505050506040513d60208110156113c157600080fd5b505160408051630f29818d60e31b815290519192506000916001600160a01b0384169163794c0c68916004808301926020929190829003018186803b15801561140957600080fd5b505afa15801561141d573d6000803e3d6000fd5b505050506040513d602081101561143357600080fd5b505190508061144757600092505050611929565b602c5460408051639b4a14bf60e01b81526004810187905290516001600160a01b0390921691639b4a14bf91602480820192602092909190829003018186803b15801561149357600080fd5b505afa1580156114a7573d6000803e3d6000fd5b505050506040513d60208110156114bd57600080fd5b50511561150a576000818152602a602090815260408083208784528252808320548484526029835281842088855290925290912054611501918391620f42406122dc565b92505050611929565b602c60009054906101000a90046001600160a01b03166001600160a01b031663b927ef436040518163ffffffff1660e01b815260040160206040518083038186803b15801561155857600080fd5b505afa15801561156c573d6000803e3d6000fd5b505050506040513d602081101561158257600080fd5b50516118285760606000602c60009054906101000a90046001600160a01b03166001600160a01b0316636729c2dc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156115da57600080fd5b505afa1580156115ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561161757600080fd5b810190808051600160201b81111561162e57600080fd5b8201602081018481111561164157600080fd5b81518560208202830111600160201b8211171561165d57600080fd5b5090955060009450505050505b81518110156116de5781818151811061167f57fe5b60200260200101518614156116d6576000838152602a60209081526040808320898452825280832054868452602983528184208a8552909252909120546116cb918591620f42406122dc565b945050505050611929565b60010161166a565b602c60009054906101000a90046001600160a01b03166001600160a01b0316630bf480c06040518163ffffffff1660e01b815260040160006040518083038186803b15801561172c57600080fd5b505afa158015611740573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561176957600080fd5b810190808051600160201b81111561178057600080fd5b8201602081018481111561179357600080fd5b81518560208202830111600160201b821117156117af57600080fd5b5090955060009450505050505b8151811015611825578181815181106117d157fe5b602002602001015186141561181d576000838152602a60209081526040808320898452825280832054868452602983528184208a8552909252909120546116cb918591620f42406122dc565b6001016117bc565b50505b60408051630fec687960e21b8152600481018690526000602482015290516119249183916001600160a01b03861691633fb1a1e4916044808301926020929190829003018186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d60208110156118a657600080fd5b505160408051632a8f6ecd60e01b81526004810189905290516001600160a01b03871691632a8f6ecd916024808301926020929190829003018186803b1580156118ef57600080fd5b505afa158015611903573d6000803e3d6000fd5b505050506040513d602081101561191957600080fd5b5051620f42406122dc565b925050505b919050565b60236020526000908152604090205481565b6060600280548060200260200160405190810160405280929190818152602001828054801561199857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161197a575b5050505050905090565b60008061130a6113028785613578565b60256020526000908152604090205481565b6119cc61359b565b15806119f057506119db613217565b6001600160a01b0316336001600160a01b0316145b6119f957600080fd5b611a01611335565b15611a0b57600080fd5b6001600160a01b038216611a1e57600080fd5b602c80546001600160a01b039384166001600160a01b0319918216179091556000808052602b6020527fe18c65fb8491ea105d3652ed62258476aaccd771ae89682addbba12f33acc62a5560038054929093169116179055565b660b1a2bc2ec500081565b602c546040805163a26301f960e01b81526001600160a01b0385811660048301529151606093600093169163a26301f9916024808301926020929190829003018186803b158015611ad357600080fd5b505afa158015611ae7573d6000803e3d6000fd5b505050506040513d6020811015611afd57600080fd5b505190506001600160a01b038416611b1457600080fd5b6001600160a01b038316611b2757600080fd5b80611b3157600080fd5b602c5460408051633ba6481760e21b815290516000926001600160a01b03169163ee99205c916004808301926020929190829003018186803b158015611b7657600080fd5b505afa158015611b8a573d6000803e3d6000fd5b505050506040513d6020811015611ba057600080fd5b5051905060006001600160a01b038581169087161415611bc1576000611bc3565b845b90506000806001600160a01b03831615611d1157836001600160a01b03166327d89b3a86856040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b158015611c3557600080fd5b505afa158015611c49573d6000803e3d6000fd5b505050506040513d6020811015611c5f57600080fd5b5051915081611c845750506040805160008152602081019091529350611edb92505050565b836001600160a01b031663381883b086856040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b158015611ce257600080fd5b505afa158015611cf6573d6000803e3d6000fd5b505050506040513d6020811015611d0c57600080fd5b505190505b600085815260208181526040918290208054835181815281840281019093019093529190606090828015611d4f578160200160208202803883390190505b5090506000805b83811015611e63576000858281548110611d6c57fe5b60009182526020909120015490506001600160a01b03891615611db15787811015611d975750611e5b565b808711158015611da657508615155b15611db15750611e63565b6040805163186dc46f60e01b8152600481018d90526001600160a01b038b81166024830152604482018490529151918c169163186dc46f91606480820192602092909190829003018186803b158015611e0957600080fd5b505afa158015611e1d573d6000803e3d6000fd5b505050506040513d6020811015611e3357600080fd5b5051611e595780848480600101955081518110611e4c57fe5b6020026020010181815250505b505b600101611d56565b81604051908082528060200260200182016040528015611e8d578160200160208202803883390190505b509a50600090505b81811015611ed057828181518110611ea957fe5b60200260200101518b8281518110611ebd57fe5b6020908102919091010152600101611e95565b505050505050505050505b92915050565b61107c81611269565b60265481565b6000841580611efd575083155b80611f06575082155b15611f1357506000611f8a565b60008085851015611f25576000611f29565b8585035b905080611f3b57600092505050611f8a565b6000888152602b6020526040902054818102606482900388021115611f6d578588860281611f6557fe5b049250611f84565b81606402816064038987020281611f8057fe5b0492505b50909150505b95945050505050565b3360009081526046602052604090205460ff1680611fc057503360009081526047602052604090205460ff165b611fc957600080fd5b80611fd357600080fd5b604a54611fe6908263ffffffff6134a316565b604a819055604080518381526020810192909252805133927f412edf02d82089ccd9d6158ca78bb761a19c8f63a840cff791e4ad472bcaa0ac92908290030190a250565b612032613217565b6001600160a01b0316336001600160a01b03161461204f57600080fd5b612057611335565b61206057600080fd5b60005b6049548110156120bc576000604760006049848154811061208057fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101612063565b6120c860498484614526565b50600090505b81811015611175576001604760008585858181106120e857fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016120ce565b604c5481565b602c60009054906101000a90046001600160a01b03166001600160a01b031663ee99205c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561217557600080fd5b505afa158015612189573d6000803e3d6000fd5b505050506040513d602081101561219f57600080fd5b50516001600160a01b031633146121b557600080fd5b82156122b55760003390506000816001600160a01b0316632d21d2176040518163ffffffff1660e01b815260040160206040518083038186803b1580156121fb57600080fd5b505afa15801561220f573d6000803e3d6000fd5b505050506040513d602081101561222557600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0386811660048301526024820189905291519293509083169163a9059cbb916044808201926020929091908290030181600087803b15801561227d57600080fd5b505af1158015612291573d6000803e3d6000fd5b505050506040513d60208110156122a757600080fd5b50516122b257600080fd5b50505b611175828261359f565b602a60209081526000928352604080842090915290825290205481565b60008315806122e9575082155b156122f657506000611261565b6000808585101561230857600061230c565b8585035b6000888152602b602052604090205490915080820260648290038802111561234157858786028161233957fe5b04925061234a565b60648582020492505b50909695505050505050565b6000828152602a6020908152604080832084845282528083205485845260298352818420858552835281842054868552604b8452828520868652909352908320548392906123ab908790899085908590611ef0565b93506123de86888484602260008c815260200190815260200160002060008b815260200190815260200160002054611ef0565b92505050935093915050565b6123f2613217565b6001600160a01b0316336001600160a01b03161461240f57600080fd5b612417611335565b61242057600080fd5b60005b60485481101561247c576000604660006048848154811061244057fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101612423565b61248860488484614526565b50600090505b81811015611175576001604660008585858181106124a857fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff191691151591909117905560010161248e565b60606048805480602002602001604051908101604052809291908181526020018280548015611998576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161197a575050505050905090565b6000806000fd5b6004546005540360010190565b3360009081526001602052604090205460ff1661257157600080fd5b8161257b57600080fd5b600354600160a01b900460ff1661259157600080fd5b61259c828233613617565b60408051838152905133916001600160a01b038416917f3c798bbcf33115b42c728b8504cff11dd58736e9fa789f1cda2738db7d696b2a9181900360200190a35050565b60215481565b60285481565b60606049805480602002602001604051908101604052809291908181526020018280548015611998576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161197a575050505050905090565b60276020526000908152604090205481565b602c546001600160a01b0316331461267557600080fd5b602c5460408051633ba6481760e21b815290516000926001600160a01b03169163ee99205c916004808301926020929190829003018186803b1580156126ba57600080fd5b505afa1580156126ce573d6000803e3d6000fd5b505050506040513d60208110156126e457600080fd5b505160408051630f29818d60e31b815290519192506000916001600160a01b0384169163794c0c68916004808301926020929190829003018186803b15801561272c57600080fd5b505afa158015612740573d6000803e3d6000fd5b505050506040513d602081101561275657600080fd5b5051602c5460408051637f2a23bf60e11b815290519293506060926001600160a01b039092169163fe54477e91600480820192600092909190829003018186803b1580156127a357600080fd5b505afa1580156127b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156127e057600080fd5b810190808051600160201b8111156127f757600080fd5b8201602081018481111561280a57600080fd5b81518560208202830111600160201b8211171561282657600080fd5b50909450600093505050505b815181101561287b57600083815260208052604081208351829085908590811061285857fe5b602090810291909101810151825281019190915260400160002055600101612832565b50505050565b604d546001600160a01b031681565b602b6020526000908152604090205481565b602c546001600160a01b031681565b604b60209081526000928352604080842090915290825290205481565b6000818152602081815260409182902080548351818402810184019094528084526060939283018282801561292257602002820191906000526020600020905b81548152602001906001019080831161290e575b50505050509050919050565b60208080526000928352604080842090915290825290205481565b6060806002600160a01b03331461295f57600080fd5b848314158061296f575060018514155b8061299657508383600081811061298257fe5b9050602002013561ffff1661ffff16600014155b156129c75760408051600080825260208201909252905b506040805160008152602081019091529092509050613208565b602c546001600160a01b03166129ed5760408051600080825260208201909252906129ad565b602c60009054906101000a90046001600160a01b03166001600160a01b031663ccf69e9b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3b57600080fd5b505afa158015612a4f573d6000803e3d6000fd5b505050506040513d6020811015612a6557600080fd5b50516040805163109c110760e01b815290516001600160a01b039092169163109c11079160048082019260009290919082900301818387803b158015612aaa57600080fd5b505af1158015612abe573d6000803e3d6000fd5b5050600354600160a01b900460ff169150612afa905057600160045560006005556003805460ff60a01b1916600160a01b179055612afa61368c565b602c5460408051633ba6481760e21b815290516064926000926001600160a01b039091169163ee99205c91600480820192602092909190829003018186803b158015612b4557600080fd5b505afa158015612b59573d6000803e3d6000fd5b505050506040513d6020811015612b6f57600080fd5b505160408051630f29818d60e31b815290519192506000916001600160a01b0384169163794c0c68916004808301926020929190829003018186803b158015612bb757600080fd5b505afa158015612bcb573d6000803e3d6000fd5b505050506040513d6020811015612be157600080fd5b50516040805163461121d760e11b815290519192506000916001600160a01b03851691638c2243ae916004808301926020929190829003018186803b158015612c2957600080fd5b505afa158015612c3d573d6000803e3d6000fd5b505050506040513d6020811015612c5357600080fd5b5051602c546040805163b927ef4360e01b815290519293506000926001600160a01b039092169163b927ef4391600480820192602092909190829003018186803b158015612ca057600080fd5b505afa158015612cb4573d6000803e3d6000fd5b505050506040513d6020811015612cca57600080fd5b505115612e3f578215801590612d7b5750602c546001600160a01b031663a92252ae8c8c600081612cf757fe5b905060200201356001600160a01b03166040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612d4d57600080fd5b505afa158015612d61573d6000803e3d6000fd5b505050506040513d6020811015612d7757600080fd5b5051155b15612e3f57602c546000906001600160a01b0316632bbb7b728d8d8481612d9e57fe5b905060200201356001600160a01b03166040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612df457600080fd5b505afa158015612e08573d6000803e3d6000fd5b505050506040513d6020811015612e1e57600080fd5b50516000858152602080805260408083209383529290522080546001019055505b81612e4861359b565b14156131f4578215612e6257612e5f8484846137ee565b90505b602c60009054906101000a90046001600160a01b03166001600160a01b0316635ccee1de6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612eb257600080fd5b505af1158015612ec6573d6000803e3d6000fd5b5050602c54604080516319ca70b760e21b81529051600094506001880193506060926001600160a01b031691636729c2dc9160048083019288929190829003018186803b158015612f1657600080fd5b505afa158015612f2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612f5357600080fd5b810190808051600160201b811115612f6a57600080fd5b82016020810184811115612f7d57600080fd5b81518560208202830111600160201b82111715612f9957600080fd5b5060009750909450505050505b8051831015612fd857612fcd8783838681518110612fc057fe5b602002602001015161391c565b600190920191612fa6565b602c60009054906101000a90046001600160a01b03166001600160a01b031663fe54477e6040518163ffffffff1660e01b815260040160006040518083038186803b15801561302657600080fd5b505afa15801561303a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561306357600080fd5b810190808051600160201b81111561307a57600080fd5b8201602081018481111561308d57600080fd5b81518560208202830111600160201b821117156130a957600080fd5b5060009750909450505050505b80518310156130db576130d08783838681518110612fc057fe5b6001909201916130b6565b602c60009054906101000a90046001600160a01b03166001600160a01b0316630bf480c06040518163ffffffff1660e01b815260040160006040518083038186803b15801561312957600080fd5b505afa15801561313d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561316657600080fd5b810190808051600160201b81111561317d57600080fd5b8201602081018481111561319057600080fd5b81518560208202830111600160201b821117156131ac57600080fd5b5060009750909450505050505b80518310156131de576131d38783838681518110612fc057fe5b6001909201916131b9565b506000908152602b602052604081208190559550505b6131fe8186613a70565b9650965050505050505b94509492505050565b604a5481565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6060600082516000141561332457602c60009054906101000a90046001600160a01b03166001600160a01b031663fe54477e6040518163ffffffff1660e01b815260040160006040518083038186803b15801561329857600080fd5b505afa1580156132ac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156132d557600080fd5b810190808051600160201b8111156132ec57600080fd5b820160208101848111156132ff57600080fd5b81518560208202830111600160201b8211171561331b57600080fd5b50909650505050505b60608351604051908082528060200260200182016040528015613351578160200160208202803883390190505b5090506000805b855181101561349757600086828151811061336f57fe5b60209081029190910181015160008a8152602a8352604080822083835290935291909120549091501580159061341a5750602c5460408051632682240f60e11b81526004810184905290516001600160a01b0390921691634d04481e91602480820192602092909190829003018186803b1580156133ec57600080fd5b505afa158015613400573d6000803e3d6000fd5b505050506040513d602081101561341657600080fd5b5051155b1561345657600088815260208080526040808320848452909152902054845185908490811061344557fe5b602002602001018181525050613471565b600084838151811061346457fe5b6020026020010181815250505b83828151811061347d57fe5b602002602001015183019250508080600101915050613358565b50909590945092505050565b6000828201838110156134b557600080fd5b9392505050565b60006134c88383613c87565b60285460215401019392505050565b600080826135535761354d85866001600160a01b0316638c2243ae6040518163ffffffff1660e01b815260040160206040518083038186803b15801561351c57600080fd5b505afa158015613530573d6000803e3d6000fd5b505050506040513d602081101561354657600080fd5b5051613c8f565b90945092505b60008361356157600061356e565b838588028161356c57fe5b045b9795505050505050565b600061358c8383660b1a2bc2ec5000613e27565b604c54604a5401019392505050565b4390565b81158015906135d057506040516001600160a01b0382169083156108fc029084906000818181858888f19350505050155b156136135781816040516135e390614589565b6001600160a01b039091168152604051908190036020019082f08015801561360f573d6000803e3d6000fd5b5050505b5050565b60058054604080516060810182529586526001600160a01b03938416602080880191825295851687830190815260019384016000818152600690985292909620965187555191860180549285166001600160a01b03199384161790559351600290950180549590931694169390931790559055565b6003546001600160a01b03166136a1576137ec565b60005b600254811015613765576000600282815481106136bd57fe5b6000918252602091829020015460035460408051631694a47d60e31b81526001600160a01b03938416600482018190529151919550919092169263b4a523e892602480840193829003018186803b15801561371757600080fd5b505afa15801561372b573d6000803e3d6000fd5b505050506040513d602081101561374157600080fd5b50516001600160a01b039091166000908152602760205260409020556001016136a4565b50600254156137ec57600360009054906101000a90046001600160a01b03166001600160a01b031663553a5c856040518163ffffffff1660e01b815260040160206040518083038186803b1580156137bc57600080fd5b505afa1580156137d0573d6000803e3d6000fd5b505050506040513d60208110156137e657600080fd5b50516026555b565b60006060602c60009054906101000a90046001600160a01b03166001600160a01b031663fe54477e6040518163ffffffff1660e01b815260040160006040518083038186803b15801561384057600080fd5b505afa158015613854573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561387d57600080fd5b810190808051600160201b81111561389457600080fd5b820160208101848111156138a757600080fd5b81518560208202830111600160201b821117156138c357600080fd5b505092919050505090506000806138da8786613c8f565b91509150606060006138ec888661323c565b915091506138ff89898686898787613f83565b95506139108989868689878761409a565b50505050509392505050565b60008281526029602090815260408083208484529091529020541561394057611175565b6000836001600160a01b0316632a8f6ecd836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561398657600080fd5b505afa15801561399a573d6000803e3d6000fd5b505050506040513d60208110156139b057600080fd5b50519050806139bf5750611175565b600083815260296020908152604080832085845282528083208490558051630fec687960e21b8152600481018690526024810193909352516001600160a01b03871692633fb1a1e4926044808301939192829003018186803b158015613a2457600080fd5b505afa158015613a38573d6000803e3d6000fd5b505050506040513d6020811015613a4e57600080fd5b50516000848152602a6020908152604080832086845290915290205550505050565b6060806000613a7d612548565b905083811115613a8a5750825b84151580613a99576000613a9c565b60015b60ff168201604051908082528060200260200182016040528015613aca578160200160208202803883390190505b5093508351604051908082528060200260200182016040528015613af8578160200160208202803883390190505b50925060005b82811015613b75576000806000613b13614437565b92509250925081888581518110613b2657fe5b60200260200101906001600160a01b031690816001600160a01b03168152505082878581518110613b5357fe5b602002602001018181525050613b6a8383836144b8565b505050600101613afe565b508015613bc35730848381518110613b8957fe5b60200260200101906001600160a01b031690816001600160a01b03168152505085838381518110613bb657fe5b6020026020010181815250505b7f2834f3daea15e82b5f27095c4b6d08cd437f303149009a0a3304be801d2dd7ce8484604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015613c2a578181015183820152602001613c12565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015613c69578181015183820152602001613c51565b5050505090500194505050505060405180910390a150509250929050565b600092915050565b602c546040805163b927ef4360e01b815290516000928392839260019284926001600160a01b039091169163b927ef4391600480820192602092909190829003018186803b158015613ce057600080fd5b505afa158015613cf4573d6000803e3d6000fd5b505050506040513d6020811015613d0a57600080fd5b5051905080156134975760006003602c60009054906101000a90046001600160a01b03166001600160a01b031663714897df6040518163ffffffff1660e01b815260040160206040518083038186803b158015613d6657600080fd5b505afa158015613d7a573d6000803e3d6000fd5b505050506040513d6020811015613d9057600080fd5b505160020281613d9c57fe5b04886001600160a01b0316637069e7466040518163ffffffff1660e01b815260040160206040518083038186803b158015613dd657600080fd5b505afa158015613dea573d6000803e3d6000fd5b505050506040513d6020811015613e0057600080fd5b505101600101905080821015613e14578091505b6001918703820198960301955050505050565b600081613e36575060006134b5565b8251613f1657602c60009054906101000a90046001600160a01b03166001600160a01b031663fe54477e6040518163ffffffff1660e01b815260040160006040518083038186803b158015613e8a57600080fd5b505afa158015613e9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613ec757600080fd5b810190808051600160201b811115613ede57600080fd5b82016020810184811115613ef157600080fd5b81518560208202830111600160201b82111715613f0d57600080fd5b50909650505050505b6000805b8451811015613f6c57602960008781526020019081526020016000206000868381518110613f4457fe5b6020026020010151815260200190815260200160002054820191508080600101915050613f1a565b50670de0b6b3a76400009083020490509392505050565b6000806000613f958a8a8a8a8a6112f2565b915091508060001415613fad5760009250505061408f565b600060218190556060613fc28488888e611197565b90508751815114156140835760005b8851811015614081576000898281518110613fe857fe5b60200260200101519050828281518110613ffe57fe5b60209081029190910181015160008f81526022835260408082208583529093529190912055825183908390811061403157fe5b60200260200101518401935082828151811061404957fe5b602002602001015160001461407857600081815260208181526040822080546001810182559083529120018d90555b50600101613fd1565b505b50908190036028559150505b979650505050505050565b6000806140aa89898989896119a2565b9150915080600014156140be57505061442e565b6000604a819055506000896001600160a01b0316632d21d2176040518163ffffffff1660e01b815260040160206040518083038186803b15801561410157600080fd5b505afa158015614115573d6000803e3d6000fd5b505050506040513d602081101561412b57600080fd5b5051604d549091506000906001600160a01b03161580159061415557506001600160a01b03821615155b156141f757604d5460408051638da5cb5b60e01b815290516001600160a01b0392831692851691638da5cb5b916004808301926020929190829003018186803b1580156141a157600080fd5b505afa1580156141b5573d6000803e3d6000fd5b505050506040513d60208110156141cb57600080fd5b50516001600160a01b031614156141ee5750604d546001600160a01b03166141f2565b5060005b6141fa565b50805b60006001600160a01b038216158015906142895750306001600160a01b0316826001600160a01b03166356b54bae6040518163ffffffff1660e01b815260040160206040518083038186803b15801561425257600080fd5b505afa158015614266573d6000803e3d6000fd5b505050506040513d602081101561427c57600080fd5b50516001600160a01b0316145b1561442457606061429c8689898f611197565b90508851815114156144225760005b89518110156143c2578181815181106142c057fe5b6020026020010151604b60008f815260200190815260200160002060008c84815181106142e957fe5b602002602001015181526020019081526020016000208190555081818151811061430f57fe5b60200260200101518301925081818151811061432757fe5b60200260200101516000141580156143765750602260008e815260200190815260200160002060008b838151811061435b57fe5b60200260200101518152602001908152602001600020546000145b156143ba576000808b838151811061438a57fe5b60209081029190910181015182528181019290925260400160009081208054600181018255908252919020018d90555b6001016142ab565b50826001600160a01b03166391c0aabf836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561440957600080fd5b505af115801561441d573d6000803e3d6000fd5b505050505b505b909203604c555050505b50505050505050565b60045460055460009182918291908181101561445e576000945060009350600092506144b1565b6000828152600660205260408120805460028201805460018085018054969095556001600160a01b03198087169095559381169091556004805490930190925596506001600160a01b0390811695501692505b5050909192565b60006144c261359b565b6001600160a01b03938416600081815260246020908152604080832085845282528083208990559282526023815282822080548901905592815260258352818120805488019055939094168352602790525020805482019055602680549091019055565b828054828255906000526020600020908101928215614579579160200282015b828111156145795781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190614546565b50614585929150614595565b5090565b6032806145ba83390190565b6112ef91905b808211156145855780546001600160a01b031916815560010161459b56fe60806040526040516032380380603283398181016040526020811015602357600080fd5b50516001600160a01b038116fffea265627a7a7230582062631356e570e39d323d66f88466882635eb13d9b0b483126bb5ca9245d1dedf64736f6c634300050a0032" + }, + "0x3000000000000000000000000000000000000001": { + "balance": "0x0", + "code": "0x60806040526040516108053803806108058339818101604052604081101561002657600080fd5b50805160209182015160408051600081529384018082527f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000905251603c81850301902091929091839190600019016000805160206107aa8339815191521461008a57fe5b61009c826001600160e01b036101bd16565b805115610154576000826001600160a01b0316826040518082805190602001908083835b602083106100df5780518252601f1990920191602091820191016100c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461013f576040519150601f19603f3d011682016040523d82523d6000602084013e610144565b606091505b505090508061015257600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e000000000000000000000000008152905190819003601301902060008051602061078a833981519152600019909101146101a457fe5b6101b6816001600160e01b0361023716565b505061024f565b6101d08161024960201b6104801760201c565b610225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806107ca603b913960400191505060405180910390fd5b6000805160206107aa83398151915255565b60008051602061078a83398151915255565b3b151590565b61052c8061025e6000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101cb565b34801561011357600080fd5b5061011c61026f565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b031661027e565b34801561017757600080fd5b5061011c61033c565b610188610198565b610198610193610346565b61036b565b565b6101a261038f565b6001600160a01b0316336001600160a01b0316146101bf57600080fd5b6101c8816103b4565b50565b6101d361038f565b6001600160a01b0316336001600160a01b0316146101f057600080fd5b6101f9836103b4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610256576040519150601f19603f3d011682016040523d82523d6000602084013e61025b565b606091505b505090508061026957600080fd5b50505050565b6000610279610346565b905090565b61028661038f565b6001600160a01b0316336001600160a01b0316146102a357600080fd5b6001600160a01b0381166102e85760405162461bcd60e51b81526004018080602001828103825260368152602001806104876036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61031161038f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c8816103f4565b600061027961038f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561038a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6103bd81610418565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b61042181610480565b61045c5760405162461bcd60e51b815260040180806020018281038252603b8152602001806104bd603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a72305820a9aab4b95b654a79b32f5aa284796894f8329aaa083932695296085b196c27bd64736f6c634300050a0032b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000000000000000003000000000000000000000000000000000000000000000000000000000000000b03a86b3126157c039b55e21d378587ccfc04d45" + }, + "0x3000000000000000000000000000000000000000": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b50611f2a806100206000396000f3fe6080604052600436106101c25760003560e01c80637a3e286b116100f7578063c64c206411610095578063f2f56ffe11610064578063f2f56ffe146106df578063f58ccc6a14610718578063fd6c1d15146105ad578063fe7d567d14610583576101c2565b8063c64c206414610634578063cc93dab414610649578063de109e2014610675578063dfc8bf4e146106ae576101c2565b806398df67c6116100d157806398df67c614610583578063b6b295ae146105ad578063baf11cab146105e6578063c358ced01461061f576101c2565b80637a3e286b1461054457806383209c3f14610559578063832206261461056e576101c2565b80633afa443c1161016457806363f160e61161013e57806363f160e614610429578063695e89f61461046257806374ce90671461051a57806378ab865d1461052f576101c2565b80633afa443c146103c657806343e7aa1d146103db5780635aca47f6146103f0576101c2565b8063109c1107116101a0578063109c1107146103205780631c77c58c1461033557806328804dbd1461035c578063392e53cd1461039d576101c2565b8063096a113d146101c45780630b402823146102725780630b61ba851461029c575b005b3480156101d057600080fd5b506101fd600480360360408110156101e757600080fd5b50803590602001356001600160a01b031661072d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023757818101518382015260200161021f565b50505050905090810190601f1680156102645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027e57600080fd5b506101c26004803603602081101561029557600080fd5b5035610853565b3480156102a857600080fd5b506101c2600480360360408110156102bf57600080fd5b813591908101906040810160208201356401000000008111156102e157600080fd5b8201836020820111156102f357600080fd5b8035906020019184600183028401116401000000008311171561031557600080fd5b5090925090506108d2565b34801561032c57600080fd5b506101c2610a08565b34801561034157600080fd5b5061034a6111f7565b60408051918252519081900360200190f35b34801561036857600080fd5b506101c26004803603606081101561037f57600080fd5b508035906001600160a01b03602082013516906040013515156111fd565b3480156103a957600080fd5b506103b2611418565b604080519115158252519081900360200190f35b3480156103d257600080fd5b506103b261142a565b3480156103e757600080fd5b5061034a611433565b3480156103fc57600080fd5b5061034a6004803603604081101561041357600080fd5b50803590602001356001600160a01b0316611447565b34801561043557600080fd5b506103b26004803603604081101561044c57600080fd5b50803590602001356001600160a01b03166114e4565b34801561046e57600080fd5b5061049b6004803603604081101561048557600080fd5b50803590602001356001600160a01b0316611584565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156104de5781810151838201526020016104c6565b50505050905090810190601f16801561050b5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561052657600080fd5b506103b26116c8565b34801561053b57600080fd5b5061034a6116ee565b34801561055057600080fd5b5061034a6116fd565b34801561056557600080fd5b5061034a611714565b34801561057a57600080fd5b5061034a611742565b34801561058f57600080fd5b506101c2600480360360208110156105a657600080fd5b5035611748565b3480156105b957600080fd5b506103b2600480360360408110156105d057600080fd5b506001600160a01b038135169060200135611765565b3480156105f257600080fd5b506103b26004803603604081101561060957600080fd5b50803590602001356001600160a01b0316611778565b34801561062b57600080fd5b506103b26118d8565b34801561064057600080fd5b5061034a6118e8565b34801561065557600080fd5b506101c26004803603602081101561066c57600080fd5b5035151561191f565b34801561068157600080fd5b506103b26004803603604081101561069857600080fd5b506001600160a01b038135169060200135611957565b3480156106ba57600080fd5b506106c3611a26565b604080516001600160a01b039092168252519081900360200190f35b3480156106eb57600080fd5b5061034a6004803603604081101561070257600080fd5b50803590602001356001600160a01b0316611a35565b34801561072457600080fd5b5061034a611ad2565b600854604080516315ddbdb960e11b81526001600160a01b03848116600483015291516060936000931691632bbb7b72916024808301926020929190829003018186803b15801561077d57600080fd5b505afa158015610791573d6000803e3d6000fd5b505050506040513d60208110156107a757600080fd5b50516000858152602081815260408083208484528252918290208054835160026001831615610100026000190190921691909104601f810184900484028201840190945283815293945091908301828280156108445780601f1061081957610100808354040283529160200191610844565b820191906000526020600020905b81548152906001019060200180831161082757829003601f168201915b50505050509150505b92915050565b6008546001600160a01b0316331461086a57600080fd5b60006108746116fd565b600081815260076020908152604080832086845290915290205490915060ff166108ce576000818152600160209081526040808320858452825280832083905583835282825280832085845290915281206108ce91611df0565b5050565b6108da611418565b6108e357600080fd5b336108ee8185611957565b6108f757600080fd5b806001600160a01b0316610909611ae8565b6001600160a01b03161461091c57600080fd5b60006109266116fd565b600854604080516315ddbdb960e11b81526001600160a01b03868116600483015291519394506000939190921691632bbb7b72916024808301926020929190829003018186803b15801561097957600080fd5b505afa15801561098d573d6000803e3d6000fd5b505050506040513d60208110156109a357600080fd5b5051600083815260016020908152604080832084845282528083208a905585835282825280832084845290915290209091506109e0908686611e34565b5060009182526002602090815260408320805460018101825590845292209091015550505050565b600860009054906101000a90046001600160a01b03166001600160a01b03166356b54bae6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a5657600080fd5b505afa158015610a6a573d6000803e3d6000fd5b505050506040513d6020811015610a8057600080fd5b50516001600160a01b03163314610a9657600080fd5b600354610aa1611aec565b81610aa857fe5b0615610ab3576111f5565b60606000806000600860009054906101000a90046001600160a01b03166001600160a01b031663ee99205c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0857600080fd5b505afa158015610b1c573d6000803e3d6000fd5b505050506040513d6020811015610b3257600080fd5b505160408051630f29818d60e31b815290519192506000916001600160a01b0384169163794c0c68916004808301926020929190829003018186803b158015610b7a57600080fd5b505afa158015610b8e573d6000803e3d6000fd5b505050506040513d6020811015610ba457600080fd5b505160408051633834f3a360e11b815290519192506000916001600160a01b03851691637069e746916004808301926020929190829003018186803b158015610bec57600080fd5b505afa158015610c00573d6000803e3d6000fd5b505050506040513d6020811015610c1657600080fd5b50516040805163461121d760e11b815290519192506000916001600160a01b03861691638c2243ae916004808301926020929190829003018186803b158015610c5e57600080fd5b505afa158015610c72573d6000803e3d6000fd5b505050506040513d6020811015610c8857600080fd5b505190506000610c966116fd565b90506003546003028301610ca8611aec565b1115610e6457600860009054906101000a90046001600160a01b03166001600160a01b031663b7ab4db56040518163ffffffff1660e01b815260040160006040518083038186803b158015610cfc57600080fd5b505afa158015610d10573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d3957600080fd5b810190808051640100000000811115610d5157600080fd5b82016020810184811115610d6457600080fd5b8151856020820283011164010000000082111715610d8157600080fd5b50909b5060009950505050505b8751861015610e6457878681518110610da357fe5b60200260200101519650610db781886114e4565b610e5957600854604080516315ddbdb960e11b81526001600160a01b038a8116600483015291516000939290921691632bbb7b7291602480820192602092909190829003018186803b158015610e0c57600080fd5b505afa158015610e20573d6000803e3d6000fd5b505050506040513d6020811015610e3657600080fd5b505160008681526006602090815260408083209383529290522080546001019055505b600190950194610d8e565b60055460ff168015610e90575081610e7a611aec565b1480610e90575081600354610e8d611aec565b01115b156111e3576000600354866001600160a01b03166397997ebb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed357600080fd5b505afa158015610ee7573d6000803e3d6000fd5b505050506040513d6020811015610efd57600080fd5b505181610f0657fe5b0490506001811115610f1b5760011901610f26565b8015610f2657600019015b600860009054906101000a90046001600160a01b03166001600160a01b031663b7ab4db56040518163ffffffff1660e01b815260040160006040518083038186803b158015610f7457600080fd5b505afa158015610f88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610fb157600080fd5b810190808051640100000000811115610fc957600080fd5b82016020810184811115610fdc57600080fd5b8151856020820283011164010000000082111715610ff957600080fd5b5050929190505050985060608951604051908082528060200260200182016040528015611030578160200160208202803883390190505b50600098509050875b8a518910156110ba578a898151811061104e57fe5b60200260200101519950611062848b6114e4565b1580611076575082611074888c611447565b115b156110af578982828060010193508151811061108e57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b600190980197611039565b80156111df576060816040519080825280602002602001820160405280156110ec578160200160208202803883390190505b509050600099505b818a101561113f57828a8151811061110857fe5b6020026020010151818b8151811061111c57fe5b6001600160a01b03909216602092830291909101909101526001909901986110f4565b60085460405163018daf6b60e21b81526020600482018181528451602484015284516001600160a01b0390941693630636bdac9386938392604490920191818601910280838360005b838110156111a0578181015183820152602001611188565b5050505090500192505050600060405180830381600087803b1580156111c557600080fd5b505af11580156111d9573d6000803e3d6000fd5b50505050505b5050505b6111ec81611af0565b50505050505050505b565b60035481565b611205611aec565b15806112295750611214611ba7565b6001600160a01b0316336001600160a01b0316145b61123257600080fd5b61123a611418565b1561124457600080fd5b81600284061561125357600080fd5b806001600160a01b031663714897df6040518163ffffffff1660e01b815260040160206040518083038186803b15801561128c57600080fd5b505afa1580156112a0573d6000803e3d6000fd5b505050506040513d60208110156112b657600080fd5b505184816112c057fe5b06156112cb57600080fd5b83816001600160a01b031663ee99205c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561130557600080fd5b505afa158015611319573d6000803e3d6000fd5b505050506040513d602081101561132f57600080fd5b50516040805163d609ea9360e01b815290516001600160a01b039092169163d609ea9391600480820192602092909190829003018186803b15801561137357600080fd5b505afa158015611387573d6000803e3d6000fd5b505050506040513d602081101561139d57600080fd5b5051816113a657fe5b06156113b157600080fd5b600084116113be57600080fd5b600354156113cb57600080fd5b6001600160a01b0383166113de57600080fd5b50600392909255600880546001600160a01b0319166001600160a01b03929092169190911790556005805460ff1916911515919091179055565b6008546001600160a01b031615155b90565b60055460ff1681565b600060026003548161144157fe5b04905090565b600854604080516315ddbdb960e11b81526001600160a01b038481166004830152915160009384931691632bbb7b72916024808301926020929190829003018186803b15801561149657600080fd5b505afa1580156114aa573d6000803e3d6000fd5b505050506040513d60208110156114c057600080fd5b50516000858152600660209081526040808320938352929052205491505092915050565b600854604080516315ddbdb960e11b81526001600160a01b038481166004830152915160009384931691632bbb7b72916024808301926020929190829003018186803b15801561153357600080fd5b505afa158015611547573d6000803e3d6000fd5b505050506040513d602081101561155d57600080fd5b50516000858152600760209081526040808320938352929052205460ff1691505092915050565b600854604080516315ddbdb960e11b81526001600160a01b03848116600483015291516000936060938593911691632bbb7b7291602480820192602092909190829003018186803b1580156115d857600080fd5b505afa1580156115ec573d6000803e3d6000fd5b505050506040513d602081101561160257600080fd5b505160008681526001602081815260408084208585528252808420548a855284835281852086865283529381902080548251600295821615610100026000190190911694909404601f810184900484028501840190925281845294955092939283918301828280156116b55780601f1061168a576101008083540402835291602001916116b5565b820191906000526020600020905b81548152906001019060200180831161169857829003601f168201915b5050505050905092509250509250929050565b60006116d2611433565b60035460016116df611aec565b03816116e757fe5b0610905090565b60006116f8611714565b905090565b6000600354600161170c611aec565b038161144157fe5b60008061171f611aec565b90506000600354600183038161173157fe5b066003540390508082019250505090565b60045481565b611750611418565b61175957600080fd5b61176281611bcc565b50565b60006117718383611cd8565b9392505050565b600854604080516315ddbdb960e11b81526001600160a01b038481166004830152915160009384931691632bbb7b72916024808301926020929190829003018186803b1580156117c757600080fd5b505afa1580156117db573d6000803e3d6000fd5b505050506040513d60208110156117f157600080fd5b50519050801580159061180757506118076116c8565b1561189057600854604080516324b49dad60e21b815281516000936001600160a01b0316926392d276b49260048082019391829003018186803b15801561184d57600080fd5b505afa158015611861573d6000803e3d6000fd5b505050506040513d604081101561187757600080fd5b505190508181141561188e5760019250505061084d565b505b60008481526001602090815260408083208484529091529020541515806118d05750600084815260076020908152604080832084845290915290205460ff165b949350505050565b60006118e26116c8565b15905090565b60006118f26116c8565b1561190f576118ff611433565b611907611ad2565b019050611427565b611917611433565b611907611714565b611927611ba7565b6001600160a01b0316336001600160a01b03161461194457600080fd5b6005805460ff1916911515919091179055565b60006119616116c8565b61196d5750600061084d565b8161197a5750600061084d565b6008546040805163facd743b60e01b81526001600160a01b0386811660048301529151919092169163facd743b916024808301926020929190829003018186803b1580156119c757600080fd5b505afa1580156119db573d6000803e3d6000fd5b505050506040513d60208110156119f157600080fd5b50516119ff5750600061084d565b611a10611a0a6116fd565b84611778565b15611a1d5750600061084d565b50600192915050565b6008546001600160a01b031681565b600854604080516315ddbdb960e11b81526001600160a01b038481166004830152915160009384931691632bbb7b72916024808301926020929190829003018186803b158015611a8457600080fd5b505afa158015611a98573d6000803e3d6000fd5b505050506040513d6020811015611aae57600080fd5b50516000858152600160209081526040808320938352929052205491505092915050565b6000600354611adf6116fd565b02600101905090565b4190565b4390565b80611afa57611762565b60001981016000818152600260205260408120805490915b81811015611b93576000838281548110611b2857fe5b60009182526020808320909101548783528282526040808420828552909252908220909250611b5691611df0565b6000858152600160208181526040808420858552825280842084905588845260078252808420948452939052919020805460ff1916905501611b12565b506000611ba08382611eb2565b5050505050565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b33611bd78183611765565b611be057600080fd5b806001600160a01b0316611bf2611ae8565b6001600160a01b031614611c0557600080fd5b600854604080516315ddbdb960e11b81526001600160a01b03848116600483015291516000939290921691632bbb7b7291602480820192602092909190829003018186803b158015611c5657600080fd5b505afa158015611c6a573d6000803e3d6000fd5b505050506040513d6020811015611c8057600080fd5b5051600480548518905590506000611c966116fd565b60008181526007602090815260408083208684528252808320805460ff1916600190811790915593835292815282822094825293909352822091909155505050565b6000611ce26118d8565b611cee5750600061084d565b604080516020808201859052825180830382018152918301909252805191012080611d1d57600091505061084d565b6008546040805163facd743b60e01b81526001600160a01b0387811660048301529151919092169163facd743b916024808301926020929190829003018186803b158015611d6a57600080fd5b505afa158015611d7e573d6000803e3d6000fd5b505050506040513d6020811015611d9457600080fd5b5051611da457600091505061084d565b6000611dae6116fd565b9050611dba81866114e4565b15611dca5760009250505061084d565b611dd48186611a35565b8214611de55760009250505061084d565b506001949350505050565b50805460018160011615610100020316600290046000825580601f10611e165750611762565b601f0160209004906000526020600020908101906117629190611edb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e755782800160ff19823516178555611ea2565b82800160010185558215611ea2579182015b82811115611ea2578235825591602001919060010190611e87565b50611eae929150611edb565b5090565b815481835581811115611ed657600083815260209020611ed6918101908301611edb565b505050565b61142791905b80821115611eae5760008155600101611ee156fea265627a7a72305820fb070d0efcf95ea5a546d38c7d35a2cc3bb541e53f6853d2b155fd86d1bde23564736f6c634300050a0032" + }, + "0x4000000000000000000000000000000000000001": { + "balance": "0x0", + "code": "0x60806040526040516108053803806108058339818101604052604081101561002657600080fd5b50805160209182015160408051600081529384018082527f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000905251603c81850301902091929091839190600019016000805160206107aa8339815191521461008a57fe5b61009c826001600160e01b036101bd16565b805115610154576000826001600160a01b0316826040518082805190602001908083835b602083106100df5780518252601f1990920191602091820191016100c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461013f576040519150601f19603f3d011682016040523d82523d6000602084013e610144565b606091505b505090508061015257600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e000000000000000000000000008152905190819003601301902060008051602061078a833981519152600019909101146101a457fe5b6101b6816001600160e01b0361023716565b505061024f565b6101d08161024960201b6104801760201c565b610225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806107ca603b913960400191505060405180910390fd5b6000805160206107aa83398151915255565b60008051602061078a83398151915255565b3b151590565b61052c8061025e6000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101cb565b34801561011357600080fd5b5061011c61026f565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b031661027e565b34801561017757600080fd5b5061011c61033c565b610188610198565b610198610193610346565b61036b565b565b6101a261038f565b6001600160a01b0316336001600160a01b0316146101bf57600080fd5b6101c8816103b4565b50565b6101d361038f565b6001600160a01b0316336001600160a01b0316146101f057600080fd5b6101f9836103b4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610256576040519150601f19603f3d011682016040523d82523d6000602084013e61025b565b606091505b505090508061026957600080fd5b50505050565b6000610279610346565b905090565b61028661038f565b6001600160a01b0316336001600160a01b0316146102a357600080fd5b6001600160a01b0381166102e85760405162461bcd60e51b81526004018080602001828103825260368152602001806104876036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61031161038f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c8816103f4565b600061027961038f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561038a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6103bd81610418565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b61042181610480565b61045c5760405162461bcd60e51b815260040180806020018281038252603b8152602001806104bd603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a72305820a9aab4b95b654a79b32f5aa284796894f8329aaa083932695296085b196c27bd64736f6c634300050a0032b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000000000000000004000000000000000000000000000000000000000000000000000000000000000b03a86b3126157c039b55e21d378587ccfc04d45" + }, + "0x4000000000000000000000000000000000000000": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b5061139e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806390482d72116100ad578063baddbfa011610071578063baddbfa014610479578063c746c8f4146104a5578063d9eb2d5e146104cb578063dfc8bf4e146104d3578063efc78401146104db57610121565b806390482d72146102b957806394a1fd781461033a5780639d7912aa14610360578063a0a8e46014610386578063b9056afa1461038e57610121565b8063392e53cd116100f4578063392e53cd146101ea578063469ab1e314610206578063471eab5c1461020e57806375d0c0dc146102345780637877a797146102b157610121565b80630651cd86146101265780631a9ebeaa146101545780631b9f67a1146101785780633272b28c14610192575b600080fd5b6101526004803603604081101561013c57600080fd5b506001600160a01b038135169060200135610501565b005b61015c61058b565b604080516001600160a01b039092168252519081900360200190f35b61018061059a565b60408051918252519081900360200190f35b61019a6105a1565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101d65781810151838201526020016101be565b505050509050019250505060405180910390f35b6101f2610604565b604080519115158252519081900360200190f35b610180610615565b6101526004803603602081101561022457600080fd5b50356001600160a01b0316610691565b61023c6107c5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027657818101518382015260200161025e565b50505050905090810190601f1680156102a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101806107f5565b610152600480360360608110156102cf57600080fd5b8101906020810181356401000000008111156102ea57600080fd5b8201836020820111156102fc57600080fd5b8035906020019184602083028401116401000000008311171561031e57600080fd5b91935091506001600160a01b0381358116916020013516610914565b6101806004803603602081101561035057600080fd5b50356001600160a01b03166109e2565b6101806004803603602081101561037657600080fd5b50356001600160a01b03166109f4565b610180610a26565b610459600480360360a08110156103a457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156103e457600080fd5b8201836020820111156103f657600080fd5b8035906020019184600183028401116401000000008311171561041857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a2b945050505050565b6040805163ffffffff909316835290151560208301528051918290030190f35b6101526004803603604081101561048f57600080fd5b506001600160a01b038135169060200135610a4c565b610152600480360360208110156104bb57600080fd5b50356001600160a01b0316610ad6565b610180610b18565b61015c610b1f565b6101f2600480360360208110156104f157600080fd5b50356001600160a01b0316610b2e565b610509610b43565b6001600160a01b0316336001600160a01b03161461052657600080fd5b61052e610604565b61053757600080fd5b6001600160a01b038216600081815260056020908152604091829020849055815184815291517fc8eecc08ae9cffd51fce8871ab6f4c6c8c112f8753fad097a055d51433661a7d9281900390910190a25050565b6001546001600160a01b031681565b623d090081565b606060008054806020026020016040519081016040528092919081815260200182805480156105f957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105db575b505050505090505b90565b6003546001600160a01b0316151590565b600061061f6107c5565b6040516020018082805190602001908083835b602083106106515780518252601f199092019160209182019101610632565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120905090565b610699610b43565b6001600160a01b0316336001600160a01b0316146106b657600080fd5b6106be610604565b6106c757600080fd5b6001600160a01b03811660009081526002602052604090205460ff166106ec57600080fd5b60008054905b818110156107a2576000818154811061070757fe5b6000918252602090912001546001600160a01b038481169116141561079a576000600183038154811061073657fe5b600091825260208220015481546001600160a01b0390911691908390811061075a57fe5b6000918252602082200180546001600160a01b0319166001600160a01b039390931692909217909155805490610794906000198301611322565b506107a2565b6001016106f2565b50506001600160a01b03166000908152600260205260409020805460ff19169055565b604080518082019091526016815275151617d41154935254d4d253d397d0d3d395149050d560521b602082015290565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663ee99205c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561084657600080fd5b505afa15801561085a573d6000803e3d6000fd5b505050506040513d602081101561087057600080fd5b50516040805163461121d760e11b815290519192506000916001600160a01b03841691638c2243ae916004808301926020929190829003018186803b1580156108b857600080fd5b505afa1580156108cc573d6000803e3d6000fd5b505050506040513d60208110156108e257600080fd5b5051905043600019820114806108f757508043145b1561090957623d090092505050610601565b62bebc209250505090565b4315806109395750610924610b43565b6001600160a01b0316336001600160a01b0316145b61094257600080fd5b61094a610604565b1561095457600080fd5b6001600160a01b03821661096757600080fd5b6001600160a01b03811661097a57600080fd5b60005b838110156109b1576109a985858381811061099457fe5b905060200201356001600160a01b0316610b68565b60010161097d565b50600180546001600160a01b039384166001600160a01b031991821617909155600380549290931691161790555050565b60056020526000908152604090205481565b6001600160a01b0381166000908152600460205260408120548015610a1a579050610a21565b6178009150505b919050565b600390565b600080610a3e8787878788600089610c06565b915091509550959350505050565b610a54610b43565b6001600160a01b0316336001600160a01b031614610a7157600080fd5b610a79610604565b610a8257600080fd5b6001600160a01b038216600081815260046020908152604091829020849055815184815291517f89afe3f32b77b643649ede79272f126acd78aa80feeabe1b8c103d0b2f2848969281900390910190a25050565b610ade610b43565b6001600160a01b0316336001600160a01b031614610afb57600080fd5b610b03610604565b610b0c57600080fd5b610b1581610b68565b50565b62bebc2081565b6003546001600160a01b031681565b60026020526000908152604090205460ff1681565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6001600160a01b03811660009081526002602052604090205460ff1615610b8e57600080fd5b6001600160a01b038116610ba157600080fd5b60008054600181810183557f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390910180546001600160a01b039094166001600160a01b031990941684179055918152600260205260409020805460ff19169091179055565b6001600160a01b038716600090815260026020526040812054819060ff1615610c38575063ffffffff90506000611316565b6001600160a01b038816158015610c575750610c53896109f4565b8351115b15610c6757506000905080611316565b6004838101516003546040805163ccf69e9b60e01b8152905160e09390931b936001600160a01b039092169263ccf69e9b92828101926020929190829003018186803b158015610cb657600080fd5b505afa158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50516001600160a01b038a811691161415610e5e576001600160e01b03198116630b61ba8560e01b148015610d16575060248451115b15610db957602484810151604080516306f084f160e51b81526001600160a01b038e81166004830152938101839052905191928c169163de109e2091604480820192602092909190829003018186803b158015610d7257600080fd5b505afa158015610d86573d6000803e3d6000fd5b505050506040513d6020811015610d9c57600080fd5b5051610da9576000610dac565b60025b6000935093505050611316565b6001600160e01b0319811663fe7d567d60e01b1480610de857506001600160e01b03198116634c6fb3e360e11b145b8015610df5575083516024145b15610e51576024848101516040805163fd6c1d1560e01b81526001600160a01b038e81166004830152938101839052905191928c169163fd6c1d1591604480820192602092909190829003018186803b158015610d7257600080fd5b6000809250925050611316565b6003546001600160a01b038a8116911614156110bd576001600160e01b031981166349da712f60e11b1415610f2157600360009054906101000a90046001600160a01b03166001600160a01b0316633d3b54586040518163ffffffff1660e01b815260040160206040518083038186803b158015610edb57600080fd5b505afa158015610eef573d6000803e3d6000fd5b505050506040513d6020811015610f0557600080fd5b5051610f12576000610f15565b60025b60009250925050611316565b6001600160e01b03198116630311db7560e61b148015610f4357506044845110155b156110335760008060248601519150604486015190506000600360009054906101000a90046001600160a01b03166001600160a01b031663a670eb568e85856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050604080518083038186803b158015610fe757600080fd5b505afa158015610ffb573d6000803e3d6000fd5b505050506040513d604081101561101157600080fd5b5051905080611021576000611024565b60025b60009550955050505050611316565b86156110bd576003546040805163facd743b60e01b81526001600160a01b038d811660048301529151919092169163facd743b916024808301926020929190829003018186803b15801561108657600080fd5b505afa15801561109a573d6000803e3d6000fd5b505050506040513d60208110156110b057600080fd5b5051610e51576002610f15565b6003546040805163facd743b60e01b81526001600160a01b038d811660048301529151919092169163facd743b916024808301926020929190829003018186803b15801561110a57600080fd5b505afa15801561111e573d6000803e3d6000fd5b505050506040513d602081101561113457600080fd5b505180156111425750600087115b15611195576001600160e01b0319811663a9059cbb60e01b141561116e57600260009250925050611316565b60008a6001600160a01b03163111611187576000610f15565b600160009250925050611316565b6003546040805163facd743b60e01b81526001600160a01b038c811660048301529151919092169163facd743b916024808301926020929190829003018186803b1580156111e257600080fd5b505afa1580156111f6573d6000803e3d6000fd5b505050506040513d602081101561120c57600080fd5b505115611220576000809250925050611316565b866112ba57600154604080516303a388eb60e61b81526001600160a01b038d811660048301529151919092169163e8e23ac0916024808301926020929190829003018186803b15801561127257600080fd5b505afa158015611286573d6000803e3d6000fd5b505050506040513d602081101561129c57600080fd5b50516112a9576000610f15565b63ffffffff60009250925050611316565b6001600160a01b038a166000908152600560205260409020548710806112f757506001600160a01b038a1660009081526005602052604090205486105b15611309576000809250925050611316565b63ffffffff600092509250505b97509795505050505050565b8154818355818111156113465760008381526020902061134691810190830161134b565b505050565b61060191905b808211156113655760008155600101611351565b509056fea265627a7a72305820de9ee9915ae9231fc972bc7570c92a6e882aae006233dfefbea7769e5545011064736f6c634300050a0032" + }, + "0x4100000000000000000000000000000000000000": { + "balance": "0x0", + "code": "0x60806040523480156200001157600080fd5b506040516200232d3803806200232d8339810160408190526200003491620000bd565b6001600160a01b038116620000465750335b6001600160a01b0381166200005a57600080fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040516000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000112565b8051620000b781620000f8565b92915050565b600060208284031215620000d057600080fd5b6000620000de8484620000aa565b949350505050565b60006001600160a01b038216620000b7565b6200010381620000e6565b81146200010f57600080fd5b50565b61220b80620001226000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638da5cb5b1161008c578063a5b62cb311610066578063a5b62cb314610187578063d13a26531461019a578063f2fde38b146101bc578063f53c7e2f146101cf576100cf565b80638da5cb5b14610157578063a0daeed21461016c578063a2bf0af514610174576100cf565b80630af28392146100d4578063338cd6bd146100e9578063399b6f3e14610107578063662520bd1461011c5780637d616fd31461012f578063879cda7314610144575b600080fd5b6100e76100e2366004611ccd565b6101e2565b005b6100f1610465565b6040516100fe91906120a0565b60405180910390f35b61010f6104c7565b6040516100fe9190612140565b6100e761012a366004611c93565b6104cd565b610137610608565b6040516100fe91906120b1565b6100e7610152366004611c93565b610699565b61015f610915565b6040516100fe9190612058565b610137610924565b6100e7610182366004611d1a565b610a15565b6100e7610195366004611ccd565b610a89565b6101ad6101a8366004611d5c565b610c9c565b6040516100fe93929190612066565b6100e76101ca366004611c6d565b610ccb565b61010f6101dd366004611c93565b610d77565b6008546001600160a01b031633146102155760405162461bcd60e51b815260040161020c90612100565b60405180910390fd5b6001600160a01b03831661023b5760405162461bcd60e51b815260040161020c90612120565b806102585760405162461bcd60e51b815260040161020c90612130565b6001600160a01b03831660009081526004602090815260408083206001600160e01b031986168452909152902054600354811080156102c55750836001600160a01b0316600382815481106102a957fe5b60009182526020909120600290910201546001600160a01b0316145b801561030b5750826001600160e01b031916600382815481106102e457fe5b6000918252602090912060029091020154600160a01b900460e01b6001600160e01b031916145b1561033857816003828154811061031e57fe5b906000526020600020906002020160010181905550610413565b600380546001600160a01b0386811660008181526004602090815260408083206001600160e01b03198b16808552908352818420879055815160608101835294855291840191825283018881526001860187559590915290517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b6002909402938401805492516001600160a01b0319909316919093161763ffffffff60a01b1916600160a01b60e09290921c9190910217905590517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c909101555b826001600160e01b031916846001600160a01b03167f7c3ecffa528bfccc8dd5c2454093da1c08757c960b1e5425afb9cb3b18439028846040516104579190612140565b60405180910390a350505050565b606060028054806020026020016040519081016040528092919081815260200182805480156104bd57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161049f575b5050505050905090565b60055481565b6008546001600160a01b031633146104f75760405162461bcd60e51b815260040161020c90612100565b6001600160a01b03821660009081526007602090815260408083206001600160e01b031985168452909152902054806105425760405162461bcd60e51b815260040161020c906120d0565b61055360008263ffffffff610d9416565b6001600160a01b03831660009081526007602090815260408083206001600160e01b03198616845282528083208390558383526006909152812080546001600160c01b03191681556001908101919091556005546105b091610fc2565b6005556040516001600160e01b03198316906001600160a01b038516907f896fc6a8eb054c92d480f4d32ec773e5ebe77109ad3b179f3e97ac78cf3e7cb7906105fb906000906120c2565b60405180910390a3505050565b60606003805480602002602001604051908101604052809291908181526020016000905b82821015610690576000848152602090819020604080516060810182526002860290920180546001600160a01b0381168452600160a01b900460e01b6001600160e01b0319168385015260019081015491830191909152908352909201910161062c565b50505050905090565b6008546001600160a01b031633146106c35760405162461bcd60e51b815260040161020c90612100565b6001600160a01b03821660009081526004602090815260408083206001600160e01b031985168452909152902054600354811080156107305750826001600160a01b03166003828154811061071457fe5b60009182526020909120600290910201546001600160a01b0316145b80156107765750816001600160e01b0319166003828154811061074f57fe5b6000918252602090912060029091020154600160a01b900460e01b6001600160e01b031916145b156108f857610783611b02565b60038054600019810190811061079557fe5b600091825260209182902060408051606081018252600290930290910180546001600160a01b03811684526001600160e01b0319600160a01b90910460e01b169383019390935260019092015491810191909152600380549192508291849081106107fc57fe5b60009182526020808320845160029093020180548583015160e01c600160a01b0263ffffffff60a01b196001600160a01b039586166001600160a01b031990931692909217919091161781556040948501516001909101558451821683526004808252848420868301516001600160e01b03199081168652908352858520889055928916845281528383209187168352529081205560038054906108a4906000198301611b22565b50826001600160e01b031916846001600160a01b03167f7c3ecffa528bfccc8dd5c2454093da1c08757c960b1e5425afb9cb3b1843902860006040516108ea91906120c2565b60405180910390a350610910565b60405162461bcd60e51b815260040161020c90612110565b505050565b6008546001600160a01b031681565b606060055460405190808252806020026020018201604052801561096257816020015b61094f611b02565b8152602001906001900390816109475790505b50905060006109716000610fdc565b905060005b8115610a1057600554811061098a57600080fd5b600082815260066020908152604091829020825160608101845281546001600160a01b0381168252600160a01b900460e01b6001600160e01b0319169281019290925260019081015492820192909252845191830192909185919081106109ed57fe5b6020908102919091010152610a0960008363ffffffff61101c16565b9150610976565b505090565b6008546001600160a01b03163314610a3f5760405162461bcd60e51b815260040161020c90612100565b610a4b60028383611b4e565b507ff3a1b17f96de235ad0ae63327b65739025bc92dd4bc161c9d8b661cb449ec62d8282604051610a7d92919061208e565b60405180910390a15050565b6008546001600160a01b03163314610ab35760405162461bcd60e51b815260040161020c90612100565b6001600160a01b038316610ad95760405162461bcd60e51b815260040161020c90612120565b80610af65760405162461bcd60e51b815260040161020c906120e0565b6001600160a01b03831660009081526007602090815260408083206001600160e01b0319861684529091529020548015610bac5781811415610b7657826001600160e01b031916846001600160a01b03167f896fc6a8eb054c92d480f4d32ec773e5ebe77109ad3b179f3e97ac78cf3e7cb7846040516108ea9190612140565b610b8760008263ffffffff610d9416565b600081815260066020526040812080546001600160c01b031916815560010155610bc4565b600554610bc090600163ffffffff6110b916565b6005555b610bd560008363ffffffff6110d216565b604080516060810182526001600160a01b038087168083526001600160e01b03198716602080850182815285870189815260008a81526006845288812097518854935160e01c600160a01b0263ffffffff60a01b19919098166001600160a01b031990941693909317929092169590951786559351600190950194909455818352600784528483208184529093529083902085905591519091907f896fc6a8eb054c92d480f4d32ec773e5ebe77109ad3b179f3e97ac78cf3e7cb790610457908690612140565b600660205260009081526040902080546001909101546001600160a01b03821691600160a01b900460e01b9083565b6008546001600160a01b03163314610cf55760405162461bcd60e51b815260040161020c90612100565b6001600160a01b038116610d1b5760405162461bcd60e51b815260040161020c906120f0565b6008546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b600760209081526000928352604080842090915290825290205481565b80610d9e57600080fd5b610da882826111ec565b610db157600080fd5b6000818152600180840160205260408220015481901580610de357506000838152600185016020526040902060020154155b15610def575081610e37565b5060008281526001840160205260409020600201545b600081815260018086016020526040909120015415610e37576000908152600180850160205260409091200154610e05565b600081815260018086016020526040909120015415610e6b5760008181526001808601602052604090912001549150610e82565b600081815260018501602052604090206002015491505b60008181526001850160205260408082205484835291208190558015610ef4576000818152600180870160205260409091200154821415610ed85760008181526001808701602052604090912001839055610eef565b600081815260018601602052604090206002018390555b610ef8565b8285555b600082815260018601602052604090206003015460ff1615848314610f8257610f2286848761121b565b60008581526001878101602052604080832080830154878552828520938401819055845281842087905560028082015490840181905584529083208690556003908101549286905201805460ff191660ff90921615159190911790559193915b8015610f9257610f928685611292565b5050600090815260019384016020526040812081815593840181905560028401555050600301805460ff19169055565b600082821115610fd157600080fd5b508082035b92915050565b80548015611017575b600081815260018301602052604090206002015415611017576000908152600182016020526040902060020154610fe5565b919050565b60008161102857600080fd5b6000828152600180850160205260409091200154156110675760008281526001808501602052604090912001546110609084906116ad565b9050610fd6565b5060008181526001830160205260409020545b801580159061109b5750600081815260018085016020526040909120015482145b15610fd657600081815260018401602052604090205490915061107a565b6000828201838110156110cb57600080fd5b9392505050565b806110dc57600080fd5b6110e682826111ec565b156110f057600080fd5b81546000905b801561113a5780915080831015611120576000908152600180850160205260409091200154611135565b60009081526001840160205260409020600201545b6110f6565b60408051608081018252838152600060208083018281528385018381526001606086018181528a86528b82019094529590932093518455519383019390935551600282015590516003909101805460ff1916911515919091179055816111a2578284556111dc565b818310156111c557600082815260018086016020526040909120018390556111dc565b600082815260018501602052604090206002018390555b6111e684846116ea565b50505050565b600081158015906110cb575082548214806110cb57505060009081526001919091016020526040902054151590565b600081815260018401602052604080822054848352912081905580611242578284556111e6565b600081815260018086016020526040909120015482141561127857600081815260018086016020526040909120018390556111e6565b600090815260019390930160205250604090912060020155565b60005b825482148015906112ba5750600082815260018401602052604090206003015460ff16155b1561168e5760008281526001808501602052604080832054808452922001548314156114b75760008181526001850160205260408082206002015480835291206003015490925060ff161561135e576000828152600180860160205260408083206003908101805460ff199081169091558585529190932090920180549092161790556113478482611955565b600081815260018501602052604090206002015491505b60008281526001808601602052604080832090910154825290206003015460ff161580156113a95750600082815260018501602052604080822060020154825290206003015460ff16155b156113d657600082815260018581016020526040909120600301805460ff191690911790559150816114b2565b600082815260018501602052604080822060020154825290206003015460ff16611453576000828152600180860160205260408083208083015484529083206003908101805460ff199081169091559386905201805490921617905561143c8483611a2d565b600081815260018501602052604090206002015491505b600081815260018501602052604080822060039081018054868552838520808401805460ff909316151560ff1993841617905582548216909255600290910154845291909220909101805490911690556114ad8482611955565b835492505b611688565b6000818152600180860160205260408083209091015480835291206003015490925060ff1615611536576000828152600180860160205260408083206003908101805460ff1990811690915585855291909320909201805490921617905561151f8482611a2d565b600081815260018086016020526040909120015491505b600082815260018501602052604080822060020154825290206003015460ff16158015611581575060008281526001808601602052604080832090910154825290206003015460ff16155b156115ae57600082815260018581016020526040909120600301805460ff19169091179055915081611688565b60008281526001808601602052604080832090910154825290206003015460ff1661162d57600082815260018086016020526040808320600281015484529083206003908101805460ff19908116909155938690520180549092161790556116168483611955565b600081815260018086016020526040909120015491505b60008181526001808601602052604080832060039081018054878652838620808401805460ff909316151560ff199384161790558254821690925593015484529220909101805490911690556116838482611a2d565b835492505b50611295565b506000908152600190910160205260409020600301805460ff19169055565b60005b6000828152600184016020526040902060020154156116e457600091825260018301602052604090912060020154906116b0565b50919050565b60005b825482148015906117175750600082815260018401602052604080822054825290206003015460ff165b1561193357600082815260018085016020526040808320548084528184205484529220015481141561183a5760008181526001850160205260408082205482528082206002015480835291206003015490925060ff16156117c0576000818152600180860160205260408083206003808201805460ff19908116909155878652838620820180548216905582548652928520018054909216909217905590829052549250611835565b60008181526001850160205260409020600201548314156117e8578092506117e88484611955565b50600082815260018085016020526040808320548084528184206003808201805460ff19908116909155825487529386200180549093169093179091559182905254611835908590611a2d565b61192d565b6000818152600180860160205260408083205483528083209091015480835291206003015490925060ff16156118b8576000818152600180860160205260408083206003808201805460ff1990811690915587865283862082018054821690558254865292852001805490921690921790559082905254925061192d565b60008181526001808601602052604090912001548314156118e0578092506118e08484611a2d565b50600082815260018085016020526040808320548084528184206003808201805460ff1990811690915582548752938620018054909316909317909155918290525461192d908590611955565b506116ed565b505080546000908152600190910160205260409020600301805460ff19169055565b60008181526001808401602052604080832060028101805491548286529285209093015493859052918390559091801561199d57600081815260018601602052604090208490555b60008381526001860160205260409020829055816119bd57828555611a0a565b60008281526001808701602052604090912001548414156119f35760008281526001808701602052604090912001839055611a0a565b600082815260018601602052604090206002018390555b505060008181526001938401602052604080822090940183905591825291902055565b60008181526001808401602052604080832091820180549254838552918420600201549385905283905590918015611a7357600081815260018601602052604090208490555b6000838152600186016020526040902082905581611a9357828555611ae0565b6000828152600186016020526040902060020154841415611ac95760008281526001860160205260409020600201839055611ae0565b600082815260018087016020526040909120018390555b5050600081815260019093016020526040808420600201839055918352912055565b604080516060810182526000808252602082018190529181019190915290565b815481835581811115610910576002028160020283600052602060002091820191016109109190611bb1565b828054828255906000526020600020908101928215611ba1579160200282015b82811115611ba15781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190611b6e565b50611bad929150611bdf565b5090565b611bdc91905b80821115611bad5780546001600160c01b031916815560006001820155600201611bb7565b90565b611bdc91905b80821115611bad5780546001600160a01b0319168155600101611be5565b8035610fd68161219f565b60008083601f840112611c2057600080fd5b50813567ffffffffffffffff811115611c3857600080fd5b602083019150836020820283011115611c5057600080fd5b9250929050565b8035610fd6816121b6565b8035610fd6816121bf565b600060208284031215611c7f57600080fd5b6000611c8b8484611c03565b949350505050565b60008060408385031215611ca657600080fd5b6000611cb28585611c03565b9250506020611cc385828601611c57565b9150509250929050565b600080600060608486031215611ce257600080fd5b6000611cee8686611c03565b9350506020611cff86828701611c57565b9250506040611d1086828701611c62565b9150509250925092565b60008060208385031215611d2d57600080fd5b823567ffffffffffffffff811115611d4457600080fd5b611d5085828601611c0e565b92509250509250929050565b600060208284031215611d6e57600080fd5b6000611c8b8484611c62565b6000611d868383611da2565b505060200190565b6000611d9a838361201c565b505060600190565b611dab81612170565b82525050565b6000611dbd8385612158565b9350611dc882611bdc565b8060005b85811015611dfe57611dde8284612161565b611de88882611d7a565b9750611df38361214e565b925050600101611dcc565b509495945050505050565b6000611e1482612154565b611e1e8185612158565b9350611e298361214e565b8060005b83811015611dfe578151611e418882611d7a565b9750611e4c8361214e565b925050600101611e2d565b6000611e6282612154565b611e6c8185612158565b9350611e778361214e565b8060005b83811015611dfe578151611e8f8882611d8e565b9750611e9a8361214e565b925050600101611e7b565b611dab8161217b565b611dab81612194565b6000611ec4601a83612158565b7f64657374696e6174696f6e20646f6573206e6f74206578697374000000000000815260200192915050565b6000611efd601283612158565b7107765696768742063616e6e6f7420626520360741b815260200192915050565b6000611f2b601d83612158565b7f6e6577206f776e657220697320746865207a65726f2061646472657373000000815260200192915050565b6000611f64601783612158565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000815260200192915050565b6000611f9d600983612158565b681b9bdd08199bdd5b9960ba1b815260200192915050565b6000611fc2601283612158565b7107461726765742063616e6e6f7420626520360741b815260200192915050565b6000611ff0601783612158565b7f6d696e47617350726963652063616e6e6f742062652030000000000000000000815260200192915050565b8051606083019061202d8482611da2565b5060208201516120406020850182611ea5565b5060408201516111e660408501825b611dab81611bdc565b60208101610fd68284611da2565b606081016120748286611da2565b6120816020830185611ea5565b611c8b604083018461204f565b60208082528101611c8b818486611db1565b602080825281016110cb8184611e09565b602080825281016110cb8184611e57565b60208101610fd68284611eae565b60208082528101610fd681611eb7565b60208082528101610fd681611ef0565b60208082528101610fd681611f1e565b60208082528101610fd681611f57565b60208082528101610fd681611f90565b60208082528101610fd681611fb5565b60208082528101610fd681611fe3565b60208101610fd6828461204f565b60200190565b5190565b90815260200190565b60006110cb6020840184611c03565b6000610fd682612188565b6001600160e01b03191690565b6001600160a01b031690565b6000610fd682611bdc565b6121a881612170565b81146121b357600080fd5b50565b6121a88161217b565b6121a881611bdc56fea365627a7a72305820f7014cfc58f43e5dc9f5a4bf6c6a6f5bce8883c71fa0b037ee28c5764fedabab6c6578706572696d656e74616cf564736f6c634300050a0040000000000000000000000000b03a86b3126157c039b55e21d378587ccfc04d45" + }, + "0x5000000000000000000000000000000000000001": { + "balance": "0x0", + "code": "0x60806040526040516108053803806108058339818101604052604081101561002657600080fd5b50805160209182015160408051600081529384018082527f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000905251603c81850301902091929091839190600019016000805160206107aa8339815191521461008a57fe5b61009c826001600160e01b036101bd16565b805115610154576000826001600160a01b0316826040518082805190602001908083835b602083106100df5780518252601f1990920191602091820191016100c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461013f576040519150601f19603f3d011682016040523d82523d6000602084013e610144565b606091505b505090508061015257600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e000000000000000000000000008152905190819003601301902060008051602061078a833981519152600019909101146101a457fe5b6101b6816001600160e01b0361023716565b505061024f565b6101d08161024960201b6104801760201c565b610225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806107ca603b913960400191505060405180910390fd5b6000805160206107aa83398151915255565b60008051602061078a83398151915255565b3b151590565b61052c8061025e6000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101cb565b34801561011357600080fd5b5061011c61026f565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b031661027e565b34801561017757600080fd5b5061011c61033c565b610188610198565b610198610193610346565b61036b565b565b6101a261038f565b6001600160a01b0316336001600160a01b0316146101bf57600080fd5b6101c8816103b4565b50565b6101d361038f565b6001600160a01b0316336001600160a01b0316146101f057600080fd5b6101f9836103b4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610256576040519150601f19603f3d011682016040523d82523d6000602084013e61025b565b606091505b505090508061026957600080fd5b50505050565b6000610279610346565b905090565b61028661038f565b6001600160a01b0316336001600160a01b0316146102a357600080fd5b6001600160a01b0381166102e85760405162461bcd60e51b81526004018080602001828103825260368152602001806104876036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61031161038f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c8816103f4565b600061027961038f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561038a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6103bd81610418565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b61042181610480565b61045c5760405162461bcd60e51b815260040180806020018281038252603b8152602001806104bd603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a72305820a9aab4b95b654a79b32f5aa284796894f8329aaa083932695296085b196c27bd64736f6c634300050a0032b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000000000000000005000000000000000000000000000000000000000000000000000000000000000b03a86b3126157c039b55e21d378587ccfc04d45" + }, + "0x5000000000000000000000000000000000000000": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b50610616806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635d6067d01161005b5780635d6067d014610189578063cc1d4c02146101f9578063dfc8bf4e1461021f578063e8e23ac0146102435761007d565b806305f203d914610082578063392e53cd146100f4578063462d0b2e14610110575b600080fd5b6100f26004803603602081101561009857600080fd5b8101906020810181356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460208302840111640100000000831117156100e757600080fd5b509092509050610269565b005b6100fc61033e565b604080519115158252519081900360200190f35b6100f26004803603604081101561012657600080fd5b81019060208101813564010000000081111561014157600080fd5b82018360208201111561015357600080fd5b8035906020019184602083028401116401000000008311171561017557600080fd5b9193509150356001600160a01b031661034f565b6100f26004803603602081101561019f57600080fd5b8101906020810181356401000000008111156101ba57600080fd5b8201836020820111156101cc57600080fd5b803590602001918460208302840111640100000000831117156101ee57600080fd5b5090925090506103fe565b6100fc6004803603602081101561020f57600080fd5b50356001600160a01b0316610456565b61022761050a565b604080516001600160a01b039092168252519081900360200190f35b6100fc6004803603602081101561025957600080fd5b50356001600160a01b0316610519565b610271610537565b6001600160a01b0316336001600160a01b03161461028e57600080fd5b61029661033e565b61029f57600080fd5b60005b818110156103395760008383838181106102b857fe5b602090810292909201356001600160a01b03166000818152928390526040909220549192505060ff166102ea57600080fd5b6001600160a01b038116600081815260208190526040808220805460ff19169055517fb6fa8b8bd5eab60f292eca876e3ef90722275b785309d84b1de113ce0b8c4e749190a2506001016102a2565b505050565b6001546001600160a01b0316151590565b431580610374575061035f610537565b6001600160a01b0316336001600160a01b0316145b61037d57600080fd5b61038561033e565b1561038f57600080fd5b6001600160a01b0381166103a257600080fd5b60005b828110156103d9576103d18484838181106103bc57fe5b905060200201356001600160a01b031661055c565b6001016103a5565b50600180546001600160a01b0319166001600160a01b03929092169190911790555050565b610406610537565b6001600160a01b0316336001600160a01b03161461042357600080fd5b61042b61033e565b61043457600080fd5b60005b818110156103395761044e8383838181106103bc57fe5b600101610437565b6001600160a01b03811660009081526020819052604081205460ff161561047f57506001610505565b6001805460408051639184d0ad60e01b81526001600160a01b038681166004830152602482019490945290519290911691639184d0ad91604480820192602092909190829003018186803b1580156104d657600080fd5b505afa1580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b505190505b919050565b6001546001600160a01b031681565b6001600160a01b031660009081526020819052604090205460ff1690565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6001600160a01b03811661056f57600080fd5b6001600160a01b03811660009081526020819052604090205460ff161561059557600080fd5b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517fd415b905d4dd806bfba99a7a0e6351bd0c9db3a9912add21c0e6bef4479f673f9190a25056fea265627a7a72305820f80f64fde129011b547316cf9ce9cd58a9917ae771746100649cc2e4b3ba4edf64736f6c634300050a0032" + }, + "0x6100000000000000000000000000000000000001": { + "balance": "0x0", + "code": "0x60806040526040516108053803806108058339818101604052604081101561002657600080fd5b50805160209182015160408051600081529384018082527f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000905251603c81850301902091929091839190600019016000805160206107aa8339815191521461008a57fe5b61009c826001600160e01b036101bd16565b805115610154576000826001600160a01b0316826040518082805190602001908083835b602083106100df5780518252601f1990920191602091820191016100c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461013f576040519150601f19603f3d011682016040523d82523d6000602084013e610144565b606091505b505090508061015257600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e000000000000000000000000008152905190819003601301902060008051602061078a833981519152600019909101146101a457fe5b6101b6816001600160e01b0361023716565b505061024f565b6101d08161024960201b6104801760201c565b610225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806107ca603b913960400191505060405180910390fd5b6000805160206107aa83398151915255565b60008051602061078a83398151915255565b3b151590565b61052c8061025e6000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101cb565b34801561011357600080fd5b5061011c61026f565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b031661027e565b34801561017757600080fd5b5061011c61033c565b610188610198565b610198610193610346565b61036b565b565b6101a261038f565b6001600160a01b0316336001600160a01b0316146101bf57600080fd5b6101c8816103b4565b50565b6101d361038f565b6001600160a01b0316336001600160a01b0316146101f057600080fd5b6101f9836103b4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610256576040519150601f19603f3d011682016040523d82523d6000602084013e61025b565b606091505b505090508061026957600080fd5b50505050565b6000610279610346565b905090565b61028661038f565b6001600160a01b0316336001600160a01b0316146102a357600080fd5b6001600160a01b0381166102e85760405162461bcd60e51b81526004018080602001828103825260368152602001806104876036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61031161038f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c8816103f4565b600061027961038f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561038a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6103bd81610418565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b61042181610480565b61045c5760405162461bcd60e51b815260040180806020018281038252603b8152602001806104bd603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a72305820a9aab4b95b654a79b32f5aa284796894f8329aaa083932695296085b196c27bd64736f6c634300050a0032b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000000000000000006100000000000000000000000000000000000000000000000000000000000000b03a86b3126157c039b55e21d378587ccfc04d45" + }, + "0x6100000000000000000000000000000000000000": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b50611976806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063b1724b46116100f9578063dfc8bf4e11610097578063f1854e1911610071578063f1854e1914610498578063f9d5ee75146104b5578063fc87bc9e14610531578063ff1ad2d91461054e576101c4565b8063dfc8bf4e1461044f578063e523d61c14610473578063e852faad14610490576101c4565b8063bf8b68da116100d3578063bf8b68da146103d2578063c342a7bf146103ef578063c4d66de81461040c578063cd2ecdf314610432576101c4565b8063b1724b461461039f578063b384abef146103a7578063b6a6d177146103ca576101c4565b80633b79f1a511610166578063518d9fca11610140578063518d9fca1461031757806382c4c9631461033457806388cb91b614610365578063a7debe9d14610382576101c4565b80633b79f1a5146102c057806340e58ee5146102dd5780634e7b4366146102fa576101c4565b8063260f08ad116101a2578063260f08ad1461024c578063280ad39a1461026957806332eac267146102865780633381afbd146102a3576101c4565b806305261aea146101c95780630d13a1c1146101e85780630f045f691461021d575b600080fd5b6101e6600480360360208110156101df57600080fd5b503561056b565b005b61020b600480360360408110156101fe57600080fd5b5080359060200135610589565b60408051918252519081900360200190f35b6101e66004803603608081101561023357600080fd5b50803590602081013590604081013590606001356105a6565b61020b6004803603602081101561026257600080fd5b5035610c1f565b61020b6004803603602081101561027f57600080fd5b5035610c31565b61020b6004803603602081101561029c57600080fd5b5035610c43565b61020b600480360360208110156102b957600080fd5b5035610c55565b61020b600480360360208110156102d657600080fd5b5035610c67565b6101e6600480360360208110156102f357600080fd5b5035610c79565b61020b6004803603602081101561031057600080fd5b5035610e61565b61020b6004803603602081101561032d57600080fd5b5035610e73565b6103516004803603602081101561034a57600080fd5b5035610e85565b604080519115158252519081900360200190f35b61020b6004803603602081101561037b57600080fd5b50356110e8565b61020b6004803603602081101561039857600080fd5b50356110fa565b61020b61110c565b6101e6600480360360408110156103bd57600080fd5b5080359060200135611113565b61020b611375565b61020b600480360360208110156103e857600080fd5b503561137b565b61020b6004803603602081101561040557600080fd5b503561138d565b6101e66004803603602081101561042257600080fd5b50356001600160a01b031661139f565b6103516004803603602081101561044857600080fd5b503561141f565b6104576114e2565b604080516001600160a01b039092168252519081900360200190f35b61020b6004803603602081101561048957600080fd5b50356114f1565b61020b611503565b61020b600480360360208110156104ae57600080fd5b5035611509565b6104d2600480360360208110156104cb57600080fd5b503561151b565b604080519c8d5260208d019b909b528b8b019990995260608b019790975260808a019590955260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b61020b6004803603602081101561054757600080fd5b5035611607565b61020b6004803603602081101561056457600080fd5b5035611619565b61057481610e85565b61057d57600080fd5b6105868161162b565b50565b600f60209081526000928352604080842090915290825290205481565b6011546040805163a26301f960e01b815233600482015290516000926001600160a01b03169163a26301f9916024808301926020929190829003018186803b1580156105f157600080fd5b505afa158015610605573d6000803e3d6000fd5b505050506040513d602081101561061b57600080fd5b505160115460408051639b4a14bf60e01b81526004810189905290519293506001600160a01b0390911691639b4a14bf91602480820192602092909190829003018186803b15801561066c57600080fd5b505afa158015610680573d6000803e3d6000fd5b505050506040513d602081101561069657600080fd5b50516106a157600080fd5b60115460408051639b4a14bf60e01b81526004810184905290516001600160a01b0390921691639b4a14bf91602480820192602092909190829003018186803b1580156106ed57600080fd5b505afa158015610701573d6000803e3d6000fd5b505050506040513d602081101561071757600080fd5b505161072257600080fd5b8085141561072f57600080fd5b6000858152602081905260409020541561074857600080fd5b60115460408051637f2a23bf60e11b815290516000926001600160a01b03169163fe54477e9160048083019286929190829003018186803b15801561078c57600080fd5b505afa1580156107a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156107c957600080fd5b8101908080516401000000008111156107e157600080fd5b820160208101848111156107f457600080fd5b815185602082028301116401000000008211171561081157600080fd5b50505160008681526001602081905260409091208054918201905590945060038504935083119150610844905057600080fd5b61438086101561085357600080fd5b6201518086111561086357600080fd5b716f6674656e20626c6f636b2064656c61797360701b8514806108995750706f6674656e20626c6f636b20736b69707360781b85145b806108b85750716f6674656e2072657665616c20736b69707360701b85145b806108cf5750691d5b9c995d99585b195960b21b85145b6108d857600080fd5b601080546001019081905560006108fd886108f1611810565b9063ffffffff61181416565b60008381526002602090815260408083208d90556003825280832089905560048083528184208590556011548251633ba6481760e21b81529251959650600c956001600160a01b039091169363ee99205c938084019391929190829003018186803b15801561096b57600080fd5b505afa15801561097f573d6000803e3d6000fd5b505050506040513d602081101561099557600080fd5b50516040805163d609ea9360e01b815290519192506000916001600160a01b0384169163d609ea93916004808301926020929190829003018186803b1580156109dd57600080fd5b505afa1580156109f1573d6000803e3d6000fd5b505050506040513d6020811015610a0757600080fd5b50516040805163461121d760e11b815290519192506000916001600160a01b03851691638c2243ae916004808301926020929190829003018186803b158015610a4f57600080fd5b505afa158015610a63573d6000803e3d6000fd5b505050506040513d6020811015610a7957600080fd5b5051905080851115610aaf57610aac60016108f1868186610aa08b8863ffffffff61182f16565b9063ffffffff61184416565b93505b610ac3816108f1868563ffffffff61186616565b600087815260056020526040902055610af7816108f184610aeb88600c63ffffffff61182f16565b9063ffffffff61186616565b6006600088815260200190815260200160002081905550826001600160a01b031663794c0c686040518163ffffffff1660e01b815260040160206040518083038186803b158015610b4757600080fd5b505afa158015610b5b573d6000803e3d6000fd5b505050506040513d6020811015610b7157600080fd5b50516000878152600a6020908152604080832093909355600781528282208e90556009905220600190555060029250869150610baa9050565b6000848152600b60209081526040808320949093046001019093558b81529182905290208290558515610be157610be18287611113565b6040805183815290517f06acbfb32bcf8383f3b0a768b70ac9ec234ea0f2d3b9c77fa6a2de69b919aad19181900360200190a1505050505050505050565b60006020819052908152604090205481565b60036020526000908152604090205481565b600e6020526000908152604090205481565b60076020526000908152604090205481565b60026020526000908152604090205481565b6011546040805163a26301f960e01b815233600482015290516000926001600160a01b03169163a26301f9916024808301926020929190829003018186803b158015610cc457600080fd5b505afa158015610cd8573d6000803e3d6000fd5b505050506040513d6020811015610cee57600080fd5b50516000838152600360205260409020549091508114610d0d57600080fd5b600082815260096020526040902054600114610d2857600080fd5b600082815260046020526040902054610d3f611810565b10610d4957600080fd5b60115460408051639b4a14bf60e01b81526004810184905290516001600160a01b0390921691639b4a14bf91602480820192602092909190829003018186803b158015610d9557600080fd5b505afa158015610da9573d6000803e3d6000fd5b505050506040513d6020811015610dbf57600080fd5b5051610dca57600080fd5b60008281526009602090815260408083206003905583835260019182905290912054610dfb9163ffffffff61182f16565b6000828152600160209081526040808320939093558482526002815282822054808352828252838320929092558251858152925191927f829a8683c544ad289ce92d3ce06e9ebad69b18a6916e60ec766c2c217461d8e9929081900390910190a1505050565b600d6020526000908152604090205481565b60086020526000908152604090205481565b600081815260096020526040812054600114610ea3575060006110e3565b600082815260046020526040902054610eba611810565b10610ec7575060016110e3565b6000828152600a6020908152604091829020546011548351633ba6481760e21b8152935191936001600160a01b039091169263ee99205c92600480840193829003018186803b158015610f1957600080fd5b505afa158015610f2d573d6000803e3d6000fd5b505050506040513d6020811015610f4357600080fd5b505160408051630f29818d60e31b815290516001600160a01b039092169163794c0c6891600480820192602092909190829003018186803b158015610f8757600080fd5b505afa158015610f9b573d6000803e3d6000fd5b505050506040513d6020811015610fb157600080fd5b505114156110df576000828152600c6020908152604080832054600d835281842054600e909352818420546011548351637f2a23bf60e11b815293519295919391926001600160a01b039091169163fe54477e9160048083019286929190829003018186803b15801561102357600080fd5b505afa158015611037573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561106057600080fd5b81019080805164010000000081111561107857600080fd5b8201602081018481111561108b57600080fd5b81518560208202830111640100000000821117156110a857600080fd5b50505193508392506110c891508490506108f1878763ffffffff61181416565b106110da5760019450505050506110e3565b505050505b5060005b919050565b60016020526000908152604090205481565b60066020526000908152604090205481565b6201518081565b60008281526003602052604090205461112b57600080fd5b6011546040805163a26301f960e01b815233600482015290516000926001600160a01b03169163a26301f9916024808301926020929190829003018186803b15801561117657600080fd5b505afa15801561118a573d6000803e3d6000fd5b505050506040513d60208110156111a057600080fd5b505160115460408051639b4a14bf60e01b81526004810184905290519293506001600160a01b0390911691639b4a14bf91602480820192602092909190829003018186803b1580156111f157600080fd5b505afa158015611205573d6000803e3d6000fd5b505050506040513d602081101561121b57600080fd5b505161122657600080fd5b60008381526002602052604090205481141561124157600080fd5b60008381526009602052604090205460011461125c57600080fd5b600083815260046020526040902054611273611810565b1061127d57600080fd5b6000838152600f60209081526040808320848452909152902054156112a157600080fd5b6000838152600f60209081526040808320848452909152902082905560018214156112e0576000838152600c6020526040902080546001019055611322565b6002821415611303576000838152600d6020526040902080546001019055611322565b60038214156101c4576000838152600e60205260409020805460010190555b604080518381529051829185917f5fe8f1cc066896edbe87bedf2e870c54f6311a7d6668c860949e2e1224a0955e9181900360200190a361136283610e85565b15611370576113708361162b565b505050565b61438081565b600a6020526000908152604090205481565b60046020526000908152604090205481565b6113a7611810565b15806113cb57506113b661188d565b6001600160a01b0316336001600160a01b0316145b6113d457600080fd5b6011546001600160a01b0316156113ea57600080fd5b6001600160a01b0381166113fd57600080fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60008181526020819052604081205480158061144a5750600081815260096020526040902054600114155b156114595760009150506110e3565b600081815260046020526040902054611470611810565b10156114805760019150506110e3565b600061148b826118b2565b905060028114156114b8576000828152600660205260409020546114ad611810565b1115925050506110e3565b60038114156114d8576000828152600560205260409020546114ad611810565b5060009392505050565b6011546001600160a01b031681565b60056020526000908152604090205481565b60105481565b600c6020526000908152604090205481565b60008181526002602090815260408083205460038352818420546004845282852054600585528386205460068652848720546007875285882054600988528689205460089098529588205494979396929591949093919291908190819081908190156115955760008d81526008602052604090205461159e565b61159e8d6118b2565b9450600b60008e8152602001908152602001600020549350600c60008e8152602001908152602001600020549250600d60008e8152602001908152602001600020549150600e60008e815260200190815260200160002054905091939597999b5091939597999b565b600b6020526000908152604090205481565b60096020526000908152604090205481565b6011546001600160a01b031661164057600080fd5b600061164b826118b2565b600083815260036020908152604080832054600283528184205460088452828520869055818552600193849052919093205493945091926116919163ffffffff61182f16565b60008381526001602052604090205560028314156117355760115460008581526006602090815260408083205460079092528083205481516305461c8560e01b81526004810187905260248101939093526044830152516001600160a01b03909316926305461c859260648084019391929182900301818387803b15801561171857600080fd5b505af115801561172c573d6000803e3d6000fd5b505050506117c6565b60038314156117c65760115460008581526005602090815260408083205460079092528083205481516305461c8560e01b81526004810187905260248101939093526044830152516001600160a01b03909316926305461c859260648084019391929182900301818387803b1580156117ad57600080fd5b505af11580156117c1573d6000803e3d6000fd5b505050505b60008181526020818152604080832092909255815186815291517f839cf22e1ba87ce2f5b9bbf46cf0175a09eed52febdfaac8852478e68203c7639281900390910190a150505050565b4390565b60008282018381101561182657600080fd5b90505b92915050565b60008282111561183e57600080fd5b50900390565b600080821161185257600080fd5b600082848161185d57fe5b04949350505050565b60008261187557506000611829565b8282028284828161188257fe5b041461182657600080fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6000818152600c6020908152604080832054600d835281842054600e845282852054600b909452918420549092906118f4826108f1868663ffffffff61181416565b101561190657600193505050506110e3565b600181831115611921578383111561191c575060025b611938565b828211801561192f57508382115b15611938575060035b9594505050505056fea265627a7a723058200623ccf119f7da78633edc0832418c3a32f1244627f261a1dc1d135e3ceccba164736f6c634300050a0032" + }, + "0x6000000000000000000000000000000000000000": { + "balance": "0x0", + "code": "0x6080604052600080546001600160a01b03191633179055670de0b6b3a764000060035534801561002e57600080fd5b506040516120943803806120948339818101604052604081101561005157600080fd5b5080516020909101516001600160a01b03821661006d57600080fd5b604080517f736572766963655f7472616e73616374696f6e5f636865636b657200000000008152905190819003601b019020336001600160a01b038316156100cd5750600080546001600160a01b0319166001600160a01b038416179055815b600082815260016020819052604080832080546001600160a01b0386166001600160a01b03199091168117825582517f4100000000000000000000000000000000000000000000000000000000000000815260029092019382019390935290519081900360210181206001600160601b0319606089901b169055909184917f4963513eca575aba66fdcd25f267aae85958fe6fb97e75fa25d783f1a091a2219190a36040805181815260018183018190527f41000000000000000000000000000000000000000000000000000000000000006060830181905260806020840181905283019190915260a0820152905183917fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea919081900360c00190a250505050611e98806101fc6000396000f3fe60806040526004361061014b5760003560e01c80639890220b116100b6578063df57b7421161006f578063df57b742146105e6578063e30bd74014610610578063eadf9760146106b8578063ef5454d61461073a578063f25eb5c1146107be578063f6d339e4146107d35761014b565b80639890220b146104e4578063ac4e73f9146104f9578063ac72c1201461057d578063c3a3582514610426578063ddca3f43146105a7578063deb931a2146105bc5761014b565b80636795dbcd116101085780636795dbcd1461031057806369fe0e2d146103ae57806379ce9fac146103d85780638da5cb5b1461041157806390b97fc11461042657806392698814146104ba5761014b565b806306b2ff471461015057806313af40351461019757806319362a28146101cc5780633f3935d11461024e578063432ced04146102c95780634f39ca59146102e6575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b031661085e565b604080519115158252519081900360200190f35b3480156101a357600080fd5b506101ca600480360360208110156101ba57600080fd5b50356001600160a01b031661088d565b005b3480156101d857600080fd5b50610183600480360360608110156101ef57600080fd5b81359190810190604081016020820135600160201b81111561021057600080fd5b82018360208201111561022257600080fd5b803590602001918460018302840111600160201b8311171561024357600080fd5b919350915035610912565b34801561025a57600080fd5b506101836004803603602081101561027157600080fd5b810190602081018135600160201b81111561028b57600080fd5b82018360208201111561029d57600080fd5b803590602001918460018302840111600160201b831117156102be57600080fd5b509092509050610a5b565b610183600480360360208110156102df57600080fd5b5035610be4565b3480156102f257600080fd5b506101836004803603602081101561030957600080fd5b5035610c91565b34801561031c57600080fd5b506103926004803603604081101561033357600080fd5b81359190810190604081016020820135600160201b81111561035457600080fd5b82018360208201111561036657600080fd5b803590602001918460018302840111600160201b8311171561038757600080fd5b509092509050610efa565b604080516001600160a01b039092168252519081900360200190f35b3480156103ba57600080fd5b50610183600480360360208110156103d157600080fd5b5035610f8c565b3480156103e457600080fd5b50610183600480360360408110156103fb57600080fd5b50803590602001356001600160a01b0316610fe4565b34801561041d57600080fd5b506103926110b4565b34801561043257600080fd5b506104a86004803603604081101561044957600080fd5b81359190810190604081016020820135600160201b81111561046a57600080fd5b82018360208201111561047c57600080fd5b803590602001918460018302840111600160201b8311171561049d57600080fd5b5090925090506110c3565b60408051918252519081900360200190f35b3480156104c657600080fd5b50610183600480360360208110156104dd57600080fd5b5035611152565b3480156104f057600080fd5b506101836111bb565b34801561050557600080fd5b506101836004803603604081101561051c57600080fd5b810190602081018135600160201b81111561053657600080fd5b82018360208201111561054857600080fd5b803590602001918460018302840111600160201b8311171561056957600080fd5b9193509150356001600160a01b031661123d565b34801561058957600080fd5b50610183600480360360208110156105a057600080fd5b5035611546565b3480156105b357600080fd5b506104a86115b3565b3480156105c857600080fd5b50610392600480360360208110156105df57600080fd5b50356115b9565b3480156105f257600080fd5b506103926004803603602081101561060957600080fd5b5035611620565b34801561061c57600080fd5b506106436004803603602081101561063357600080fd5b50356001600160a01b031661168b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561067d578181015183820152602001610665565b50505050905090810190601f1680156106aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106c457600080fd5b50610183600480360360608110156106db57600080fd5b81359190810190604081016020820135600160201b8111156106fc57600080fd5b82018360208201111561070e57600080fd5b803590602001918460018302840111600160201b8311171561072f57600080fd5b919350915035611734565b34801561074657600080fd5b506101836004803603604081101561075d57600080fd5b810190602081018135600160201b81111561077757600080fd5b82018360208201111561078957600080fd5b803590602001918460018302840111600160201b831117156107aa57600080fd5b9193509150356001600160a01b0316611880565b3480156107ca57600080fd5b506101ca6119c4565b3480156107df57600080fd5b50610183600480360360608110156107f657600080fd5b81359190810190604081016020820135600160201b81111561081757600080fd5b82018360208201111561082957600080fd5b803590602001918460018302840111600160201b8311171561084a57600080fd5b9193509150356001600160a01b0316611c30565b6001600160a01b0316600090815260026020819052604090912054600181161561010002600019011604151590565b6000546001600160a01b031633146108a457600080fd5b6001600160a01b0381166108b757600080fd5b600080546040516001600160a01b03808516939216917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b236491a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000848152600160208190526040822001548590600160a01b900460ff1615801561095357506000818152600160205260409020546001600160a01b031615155b61095c57600080fd5b60008681526001602052604090205486906001600160a01b0316331461098157600080fd5b83600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a25060019695505050505050565b600082828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870191909120825260019081905260409091200154600160a01b900460ff161592505081159050610ae6575080516020808301919091206000908152600190915260409020546001600160a01b031615155b610aef57600080fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084516020808701919091208252600190819052604090912001546001600160a01b031633149250610b5491505057600080fd5b336000908152600260205260409020610b6e908686611d8b565b50336001600160a01b03167f098ae8581bb8bd9af1beaf7f2e9f51f31a8e5a8bfada4e303a645d71d9c91920868660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2506001949350505050565b6000818152600160208190526040822001548290600160a01b900460ff16158015610c2457506000818152600160205260409020546001600160a01b0316155b610c2d57600080fd5b600354341015610c3c57600080fd5b60008381526001602052604080822080546001600160a01b031916339081179091559051909185917f4963513eca575aba66fdcd25f267aae85958fe6fb97e75fa25d783f1a091a2219190a350600192915050565b6000818152600160208190526040822001548290600160a01b900460ff16158015610cd257506000818152600160205260409020546001600160a01b031615155b610cdb57600080fd5b60008381526001602052604090205483906001600160a01b03163314610d0057600080fd5b60008481526001602081815260408084208301546001600160a01b03168452600291829052928390209251835488949391928392859260001991811615610100029190910116048015610d8a5780601f10610d68576101008083540402835291820191610d8a565b820191906000526020600020905b815481529060010190602001808311610d76575b505091505060405180910390201415610ea25760008481526001602081815260408084208301546001600160a01b03168085526002808452948290208251848152815460001996811615610100029690960190951695909504928401839052937f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd939092909182919082019084908015610e655780601f10610e3a57610100808354040283529160200191610e65565b820191906000526020600020905b815481529060010190602001808311610e4857829003601f168201915b50509250505060405180910390a26000848152600160208181526040808420909201546001600160a01b03168352600290528120610ea291611e09565b6000848152600160208190526040808320909101805460ff60a01b1916600160a01b17905551339186917fef1961b4d2909dc23643b309bfe5c3e5646842d98c3a58517037ef3871185af39190a35060019392505050565b6000838152600160208190526040822001548490600160a01b900460ff16158015610f3b57506000818152600160205260409020546001600160a01b031615155b610f4457600080fd5b60016000868152602001908152602001600020600201848460405180838380828437919091019485525050604051928390036020019092205460601c93505050509392505050565b600080546001600160a01b03163314610fa457600080fd5b60038290556040805183815290517f6bbc57480a46553fa4d156ce702beef5f3ad66303b0ed1a5d4cb44966c6584c39181900360200190a1506001919050565b6000828152600160208190526040822001548390600160a01b900460ff1615801561102557506000818152600160205260409020546001600160a01b031615155b61102e57600080fd5b60008481526001602052604090205484906001600160a01b0316331461105357600080fd5b60008581526001602052604080822080546001600160a01b0319166001600160a01b03881690811790915590519091339188917f7b97c62130aa09acbbcbf7482630e756592496f1759eaf702f469cf64dfb779491a4506001949350505050565b6000546001600160a01b031681565b6000838152600160208190526040822001548490600160a01b900460ff1615801561110457506000818152600160205260409020546001600160a01b031615155b61110d57600080fd5b60016000868152602001908152602001600020600201848460405180838380828437919091019485525050604051928390036020019092205493505050509392505050565b6000818152600160208190526040822001548290600160a01b900460ff1615801561119357506000818152600160205260409020546001600160a01b031615155b61119c57600080fd5b50506000908152600160205260409020546001600160a01b0316151590565b600080546001600160a01b031633146111d357600080fd5b604080513031815290517fdef931299fe61d176f949118058530c1f3f539dcb6950b4e372c9b835c33ca079181900360200190a16040513390303180156108fc02916000818181858888f19350505050158015611234573d6000803e3d6000fd5b50600190505b90565b600083838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870191909120825260019081905260409091200154600160a01b900460ff1615925050811590506112c8575080516020808301919091206000908152600190915260409020546001600160a01b031615155b6112d157600080fd5b8484604051808383808284376040805193909101839003909220600081815260016020529290922054919450506001600160a01b031633149150611316905057600080fd5b60008686604051808383808284376040805191909301819003902060008181526001602081905293902090920154919550506001600160a01b0316158015935091506113f89050575060008181526001602081815260408084208301546001600160a01b031684526002918290529283902092518354859493919283928592600019918116156101000291909101160480156113e95780601f106113c75761010080835404028352918201916113e9565b820191906000526020600020905b8154815290600101906020018083116113d5575b50509150506040518091039020145b156114aa576000818152600160208181526040808420909201546001600160a01b0316835260029052812061142c91611e09565b6000818152600160208181526040928390209091015482518281529182018990526001600160a01b0316917f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd918a918a919081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a25b60008181526001602081815260409283902090910180546001600160a01b0319166001600160a01b0389169081179091558251828152918201899052917f728435a0031f6a04538fcdd24922a7e06bc7bc945db03e83d22122d1bc5f28df918a918a919081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a25060019695505050505050565b6000818152600160208190526040822001548290600160a01b900460ff1615801561158757506000818152600160205260409020546001600160a01b031615155b61159057600080fd5b5050600090815260016020819052604090912001546001600160a01b0316151590565b60035481565b6000818152600160208190526040822001548290600160a01b900460ff161580156115fa57506000818152600160205260409020546001600160a01b031615155b61160357600080fd5b50506000908152600160205260409020546001600160a01b031690565b6000818152600160208190526040822001548290600160a01b900460ff1615801561166157506000818152600160205260409020546001600160a01b031615155b61166a57600080fd5b5050600090815260016020819052604090912001546001600160a01b031690565b6001600160a01b038116600090815260026020818152604092839020805484516001821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156117285780601f106116fd57610100808354040283529160200191611728565b820191906000526020600020905b81548152906001019060200180831161170b57829003601f168201915b50505050509050919050565b6000848152600160208190526040822001548590600160a01b900460ff1615801561177557506000818152600160205260409020546001600160a01b031615155b61177e57600080fd5b60008681526001602052604090205486906001600160a01b031633146117a357600080fd5b8360001b600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a25060019695505050505050565b600083838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870191909120825260019081905260409091200154600160a01b900460ff16159250508115905061190b575080516020808301919091206000908152600190915260409020546001600160a01b031615155b61191457600080fd5b6000546001600160a01b0316331461192b57600080fd5b6001600160a01b038316600090815260026020526040902061194e908686611d8b565b50826001600160a01b03167f098ae8581bb8bd9af1beaf7f2e9f51f31a8e5a8bfada4e303a645d71d9c91920868660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2506001949350505050565b33600090815260026020818152604092839020805484516001821615610100026000190190911693909304601f8101839004830284018301909452838352919290830182828015611a565780601f10611a2b57610100808354040283529160200191611a56565b820191906000526020600020905b815481529060010190602001808311611a3957829003601f168201915b5050505050600160008280519060200120815260200190815260200160002060010160149054906101000a900460ff16158015611ab4575080516020808301919091206000908152600190915260409020546001600160a01b031615155b611abd57600080fd5b33600081815260026020818152604092839020835182815281546000196101006001831615020116939093049183018290527f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd93909291829182019084908015611b685780601f10611b3d57610100808354040283529160200191611b68565b820191906000526020600020905b815481529060010190602001808311611b4b57829003601f168201915b50509250505060405180910390a2336000908152600260208190526040808320905181546001949382918491600019610100838a16150201909116048015611be75780601f10611bc5576101008083540402835291820191611be7565b820191906000526020600020905b815481529060010190602001808311611bd3575b505060408051918290039091208452602080850195909552928301600090812060010180546001600160a01b0319169055338152600290945250508120611c2d91611e09565b50565b6000848152600160208190526040822001548590600160a01b900460ff16158015611c7157506000818152600160205260409020546001600160a01b031615155b611c7a57600080fd5b60008681526001602052604090205486906001600160a01b03163314611c9f57600080fd5b8360601b6bffffffffffffffffffffffff1916600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a25060019695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dcc5782800160ff19823516178555611df9565b82800160010185558215611df9579182015b82811115611df9578235825591602001919060010190611dde565b50611e05929150611e49565b5090565b50805460018160011615610100020316600290046000825580601f10611e2f5750611c2d565b601f016020900490600052602060002090810190611c2d91905b61123a91905b80821115611e055760008155600101611e4f56fea265627a7a723058206a686f5fa03e765c624a73295db57b5403554102e83af1f6c94d41e196e3939564736f6c634300050a00320000000000000000000000005000000000000000000000000000000000000001000000000000000000000000b03a86b3126157c039b55e21d378587ccfc04d45" + }, + "0x7000000000000000000000000000000000000000": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b506040516109dd3803806109dd833981810160405261016081101561003457600080fd5b81019080805164010000000081111561004c57600080fd5b8201602081018481111561005f57600080fd5b815185602082028301116401000000008211171561007c57600080fd5b505060208201516040909201805191949293916401000000008111156100a157600080fd5b820160208101848111156100b457600080fd5b81518560208202830111640100000000821117156100d157600080fd5b505092919060200180516401000000008111156100ed57600080fd5b8201602081018481111561010057600080fd5b815185602082028301116401000000008211171561011d57600080fd5b5050602082015160408301516060840151608085015160a086015160c087015160e0909701518c51969950949750929591949093908b9060009061015d57fe5b60200260200101516001600160a01b0316636e85d53d8c60018151811061018057fe5b60200260200101518d60068151811061019557fe5b60200260200101518e6002815181106101aa57fe5b60200260200101518f6003815181106101bf57fe5b60200260200101518e8e8e6040518863ffffffff1660e01b815260040180886001600160a01b03166001600160a01b03168152602001876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001806020018060200184151515158152602001838103835286818151815260200191508051906020019060200280838360005b8381101561028757818101518382015260200161026f565b50505050905001838103825285818151815260200191508051906020019060200280838360005b838110156102c65781810151838201526020016102ae565b505050509050019950505050505050505050600060405180830381600087803b1580156102f257600080fd5b505af1158015610306573d6000803e3d6000fd5b5050505060608851604051908082528060200260200182016040528015610337578160200160208202803883390190505b50905060005b8151811015610410578c60008151811061035357fe5b60200260200101516001600160a01b031663a26301f98b838151811061037557fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156103c357600080fd5b505afa1580156103d7573d6000803e3d6000fd5b505050506040513d60208110156103ed57600080fd5b505182518390839081106103fd57fe5b602090810291909101015260010161033d565b508b60038151811061041e57fe5b60200260200101516001600160a01b031663cc4a66678d60008151811061044157fe5b60200260200101518e60068151811061045657fe5b6020026020010151848b8b8b8b8b6040518963ffffffff1660e01b815260040180896001600160a01b03166001600160a01b03168152602001886001600160a01b03166001600160a01b0316815260200180602001878152602001868152602001858152602001848152602001838152602001828103825288818151815260200191508051906020019060200280838360005b838110156105015781810151838201526020016104e9565b505050509050019950505050505050505050600060405180830381600087803b15801561052d57600080fd5b505af1158015610541573d6000803e3d6000fd5b50505050508a60018151811061055357fe5b60200260200101516001600160a01b031663485cc9558c60008151811061057657fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b1580156105e157600080fd5b505af11580156105f5573d6000803e3d6000fd5b505050508a60028151811061060657fe5b60200260200101516001600160a01b03166328804dbd828d60008151811061062a57fe5b602002602001015160016040518463ffffffff1660e01b815260040180848152602001836001600160a01b03166001600160a01b03168152602001821515151581526020019350505050600060405180830381600087803b15801561068e57600080fd5b505af11580156106a2573d6000803e3d6000fd5b5050604080516001808252818301909252606093509150602080830190803883390190505090508a816000815181106106d757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508b60048151811061070457fe5b60200260200101516001600160a01b03166390482d72828e60058151811061072857fe5b60200260200101518f60008151811061073d57fe5b60200260200101516040518463ffffffff1660e01b81526004018080602001846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828103825285818151815260200191508051906020019060200280838360005b838110156107c45781810151838201526020016107ac565b50505050905001945050505050600060405180830381600087803b1580156107eb57600080fd5b505af11580156107ff573d6000803e3d6000fd5b505050508b60058151811061081057fe5b60200260200101516001600160a01b031663462d0b2e828e60008151811061083457fe5b60200260200101516040518363ffffffff1660e01b81526004018080602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019060200280838360005b838110156108a357818101518382015260200161088b565b505050509050019350505050600060405180830381600087803b1580156108c957600080fd5b505af11580156108dd573d6000803e3d6000fd5b505050508b6006815181106108ee57fe5b60200260200101516001600160a01b031663c4d66de88d60008151811061091157fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561096157600080fd5b505af1158015610975573d6000803e3d6000fd5b5050505060004311156109855733ff5b505050505050505050505050603e8061099f6000396000f3fe6080604052600080fdfea265627a7a72305820a55f32c63be7e06dfeb1da79cfe2235ed39ef2873ad64c118154d8cdff8e697e64736f6c634300050a00320000000000000000000000000000000000000000000000000000000000000160000000000000000000000000b03a86b3126157c039b55e21d378587ccfc04d45000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000000000000000000004c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000070000000000000000000000001000000000000000000000000000000000000001000000000000000000000000200000000000000000000000000000000000000100000000000000000000000030000000000000000000000000000000000000010000000000000000000000001100000000000000000000000000000000000001000000000000000000000000400000000000000000000000000000000000000100000000000000000000000050000000000000000000000000000000000000010000000000000000000000006100000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000014747a698ec1227e6753026c08b29b4d5d3bc48400000000000000000000000056d421c0ac39976e89fa400d34ca6579417b84ca0000000000000000000000005cd99ac2f0f8c25a1e670f6bab19d52aad69d87500000000000000000000000060f1cf46b42df059b98acf67c1dd7771b100e124000000000000000000000000655e97ba0f63a56c2b56eb3e84f7bf42b20bae14000000000000000000000000755b6259938d140626301c0b6026c1c00c9ed5d9000000000000000000000000a8010da9cb0ac018c86a06301963853cc371a18c000000000000000000000000e11c7ffea05634889f39a1d997772b73adfd685b000000000000000000000000e621f323f5cb0ca55a041aeea0f025ce338b8aee000000000000000000000000f85bb4a67db28522644cbe63595d1665b64090ef000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000047200b51fcbf7177c24c1a484c960be8bf9abf00000000000000000000000001753f99abe0433fc81e396bc1bdabec6b0f1d49d0000000000000000000000001fd4b06403e95eb0114cb3e8f6b71f7a0cc58d7300000000000000000000000041bec4dcb8dd230cb4e077c5fda61d37798b06d90000000000000000000000004b56e96ad92b4d81f533c5716988f9f3665125d20000000000000000000000005d46a20c7e9bd3556e36d39ea1a931f9fe994519000000000000000000000000cc80dff6b6386b56213a9f2701a67ebeca0bbea8000000000000000000000000dc8a45c55f83ac461bc49662324d2ad2ea811e84000000000000000000000000dd3cd543a443bd405bfbea1165753794906bd994000000000000000000000000fdd90b7d2b52a6232675f54bb2f03a5dfb2e832a" + } +} diff --git a/core/genesis.go b/core/genesis.go index 2b2ff314c..43390e3d8 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -720,6 +720,17 @@ func DefaultGnosisGenesisBlock() *Genesis { } } +func DefaultChiadoGenesisBlock() *Genesis { + return &Genesis{ + Config: params.ChiadoChainConfig, + Timestamp: 0, + AuRaSeal: common.FromHex("0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + GasLimit: 0x989680, + Difficulty: big.NewInt(0x20000), + Alloc: readPrealloc("allocs/chiado.json"), + } +} + // Pre-calculated version of: // // DevnetSignPrivateKey = crypto.HexToECDSA(sha256.Sum256([]byte("erigon devnet key"))) @@ -788,6 +799,8 @@ func DefaultGenesisBlockByChainName(chain string) *Genesis { return DefaultBorDevnetGenesisBlock() case networkname.GnosisChainName: return DefaultGnosisGenesisBlock() + case networkname.ChiadoChainName: + return DefaultChiadoGenesisBlock() default: return nil } diff --git a/core/genesis_test.go b/core/genesis_test.go index d4f89f83f..fa9026758 100644 --- a/core/genesis_test.go +++ b/core/genesis_test.go @@ -27,6 +27,10 @@ func TestDefaultBSCGenesisBlock(t *testing.T) { require.Equal(t, block.Hash().Bytes(), expect.Bytes(), network) } for _, network := range networkname.All { + if network == networkname.ChiadoChainName { + continue + } + check(network) } } diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index 1e3baf072..4fedba6d3 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -269,6 +269,7 @@ var ChainsWithSnapshots = map[string]struct{}{ networkname.MumbaiChainName: {}, networkname.BorMainnetChainName: {}, networkname.GnosisChainName: {}, + networkname.ChiadoChainName: {}, } func UseSnapshotsByChainName(chain string) bool { diff --git a/params/bootnodes.go b/params/bootnodes.go index 382360325..26a3802c1 100644 --- a/params/bootnodes.go +++ b/params/bootnodes.go @@ -213,6 +213,14 @@ var GnosisBootnodes = []string{ "enode://22e442bf7b7fa9bb5960344ef5aa907b920a931bce83e14620b0378318b7eb73753f7245f0a8252590a71ad9568bcfbb9e5f03bd88ab3feb9c1096227bb8704a@168.119.136.44:30303", } +var ChiadoBootnodes = []string{ + "enode://7dd44af6138120f328bb031eb56e00985c149319d4f1e33275b30be7fddadd8ccd9f7b9c3b35a16136a61e85b2b2d1de073f30ec1d0ddf576a33be8ff48d88d0@139.144.26.89:30303", + "enode://317b9cee65ccf1d747b00e604242bfa3ae367beee8f149e28c5b2b88820f855ea7b5a75eb5327cfc3d8ca97adbf71538468290a46592ed7009f3fb394ec752f1@139.144.26.115:30303", + "enode://b77ae97906155ebbb83fd32c87ab0aa57372a24abbd8aa4bae679f048b726de4a195709f613be4981e44b24640bc89e4824427d94e9a37afc148da8250c8ab2d@139.144.26.101:30303", + "enode://69f8abfa3b0221161f8c19014b90857a18742554af27af73fd779c486728750a0ff11b873975f104fc5276a3a7c3b5b68cb3c26c815e9f78462901895d652124@139.144.26.85:30303", + "enode://ac7fc76f9b2ab343fb2d091365a7f46d17018e525cbedfbf24b247c76657e934ef4df61cc2f6dad6bfcf722425e03e1a8a6e4e4b52743acc2319cb8ebf27d742@170.187.154.239:30303", +} + const dnsPrefix = "enrtree://AKA3AM6LPBYEUDMVNU3BSVQJ5AD45Y7YPOHJLEF6W26QOE4VTUDPE@" // KnownDNSNetwork returns the address of a public DNS-based node list for the given @@ -263,6 +271,8 @@ func BootnodeURLsOfChain(chain string) []string { return BorMainnetBootnodes case networkname.GnosisChainName: return GnosisBootnodes + case networkname.ChiadoChainName: + return ChiadoBootnodes default: return []string{} } diff --git a/params/chainspecs/chiado.json b/params/chainspecs/chiado.json new file mode 100644 index 000000000..760fda274 --- /dev/null +++ b/params/chainspecs/chiado.json @@ -0,0 +1,24 @@ +{ + "ChainName": "chiado", + "chainId": 10200, + "consensus": "aura", + "homesteadBlock": 0, + "eip150Block": 0, + "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "eip155Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "posdaoBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "eip1559FeeCollectorTransition": 0, + "eip1559FeeCollector": "0x1559000000000000000000000000000000000000", + "terminalTotalDifficulty": 231707791542740786049188744689299064356246512, + "aura": { + "DBPath": "", + "InMemory": false, + "Etherbase": "0x0000000000000000000000000000000000000000" + } +} diff --git a/params/config.go b/params/config.go index c71d5fd77..2a5ce47c5 100644 --- a/params/config.go +++ b/params/config.go @@ -74,6 +74,7 @@ var ( BorMainnetGenesisHash = common.HexToHash("0xa9c28ce2141b56c474f1dc504bee9b01eb1bd7d1a507580d5519d4437a97de1b") BorDevnetGenesisHash = common.HexToHash("0x5a06b25b0c6530708ea0b98a3409290e39dce6be7f558493aeb6e4b99a172a87") GnosisGenesisHash = common.HexToHash("0x4f1dd23188aab3a76b463e4af801b52b1248ef073c648cbdc4c9333d3da79756") + ChiadoGenesisHash = common.HexToHash("0xada44fd8d2ecab8b08f256af07ad3e777f17fb434f8f8e678b312f576212ba9a") ) var ( @@ -160,6 +161,8 @@ var ( GnosisChainConfig = readChainSpec("chainspecs/gnosis.json") + ChiadoChainConfig = readChainSpec("chainspecs/chiado.json") + CliqueSnapshot = NewSnapshotConfig(10, 1024, 16384, true, "") TestChainConfig = &ChainConfig{ @@ -880,6 +883,8 @@ func ChainConfigByChainName(chain string) *ChainConfig { return BorDevnetChainConfig case networkname.GnosisChainName: return GnosisChainConfig + case networkname.ChiadoChainName: + return ChiadoChainConfig default: return nil } @@ -915,6 +920,8 @@ func GenesisHashByChainName(chain string) *common.Hash { return &BorDevnetGenesisHash case networkname.GnosisChainName: return &GnosisGenesisHash + case networkname.ChiadoChainName: + return &ChiadoGenesisHash default: return nil } @@ -948,6 +955,8 @@ func ChainConfigByGenesisHash(genesisHash common.Hash) *ChainConfig { return BorMainnetChainConfig case genesisHash == GnosisGenesisHash: return GnosisChainConfig + case genesisHash == ChiadoGenesisHash: + return ChiadoChainConfig default: return nil } diff --git a/params/networkname/network_name.go b/params/networkname/network_name.go index 82c483276..8e2e82c49 100644 --- a/params/networkname/network_name.go +++ b/params/networkname/network_name.go @@ -16,6 +16,7 @@ const ( BorMainnetChainName = "bor-mainnet" BorDevnetChainName = "bor-devnet" GnosisChainName = "gnosis" + ChiadoChainName = "chiado" ) var All = []string{ @@ -34,4 +35,5 @@ var All = []string{ BorMainnetChainName, BorDevnetChainName, GnosisChainName, + ChiadoChainName, } diff --git a/turbo/stages/genesis_test.go b/turbo/stages/genesis_test.go index a05618660..5652153b5 100644 --- a/turbo/stages/genesis_test.go +++ b/turbo/stages/genesis_test.go @@ -82,6 +82,16 @@ func TestDefaultGenesisBlock(t *testing.T) { if block.Hash() != params.GnosisGenesisHash { t.Errorf("wrong Gnosis Chain genesis hash, got %v, want %v", block.Hash(), params.GnosisGenesisHash) } + + /* + block, _, err = core.DefaultChiadoGenesisBlock().ToBlock() + if err != nil { + t.Errorf("error: %v", err) + } + if block.Hash() != params.ChiadoGenesisHash { + t.Errorf("wrong Chiado genesis hash, got %v, want %v", block.Hash(), params.ChiadoGenesisHash) + } + */ } func TestSokolHeaderRLP(t *testing.T) {