From 6118f4abbbf0b58e9d43038e980e742c8095557c Mon Sep 17 00:00:00 2001 From: David Date: Thu, 27 Apr 2023 22:49:18 +0800 Subject: [PATCH] feat(consensus): update taiko consensus engine (#56) * feat(consensus): update taiko consensus engine * tmp * feat: update consensus * chore: update genesis --- consensus/taiko/consensus.go | 6 +++++- core/taiko_genesis/internal-1.json | 20 ++++++++++---------- core/taiko_genesis/internal-2.json | 20 ++++++++++---------- miner/taiko_payload_building.go | 3 ++- 4 files changed, 27 insertions(+), 22 deletions(-) diff --git a/consensus/taiko/consensus.go b/consensus/taiko/consensus.go index a5d0a6121050..2bdfa9bb74a4 100644 --- a/consensus/taiko/consensus.go +++ b/consensus/taiko/consensus.go @@ -20,6 +20,7 @@ import ( var ( ErrOlderBlockTime = errors.New("timestamp older than parent") ErrUnclesNotEmpty = errors.New("uncles not empty") + ErrEmptyBasefee = errors.New("empty base fee") ) // Taiko is a consensus engine used by L2 rollup. @@ -155,7 +156,10 @@ func (t *Taiko) verifyHeader(chain consensus.ChainHeaderReader, header, parent * return ErrUnclesNotEmpty } - // TODO: check baseFee when EIP-1559 is enabled. + // BaseFee should not be empty + if header.BaseFee == nil { + return ErrEmptyBasefee + } return nil } diff --git a/core/taiko_genesis/internal-1.json b/core/taiko_genesis/internal-1.json index d2617424095c..5706067a5429 100644 --- a/core/taiko_genesis/internal-1.json +++ b/core/taiko_genesis/internal-1.json @@ -38,13 +38,13 @@ "0x4e97243Ed38B3EBFeA36670f04c196F7440C4ECe": { "contractName": "LibBridgeRetry", "storage": {}, - "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069419df9245fb6ca20d92ee0e322d900251700898f9101cf36169607312e6e7664736f6c63430008120033", + "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c46aacad46edebd67106698b9482fe9fb9d1617e2cade6a234d97c5abdf6744264736f6c63430008120033", "balance": "0x0" }, - "0xE9A693c0C629aadE006d43539Fe191aA4224aaa5": { + "0x90c2E32411dC59fA94bc8F8f8fb112805B8Fd225": { "contractName": "LibBridgeProcess", "storage": {}, - "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201268158bbdfa4a70a31d83556ffc699a3225da29130101499b7b391ac21342c764736f6c63430008120033", + "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ee8615b59c9616bb0b578b94e8961f4a03e2ff9e6db0c7629a80681202b15b5664736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000006": { @@ -58,7 +58,7 @@ "0xb89e0d65684560eb877371fa3bbdc47dfc9efc7e113ec86ce9ae0fa1c43b85b9": "0x0000000000000000000000000000777700000000000000000000000000000003", "0x37ecd6787fe0bc6398f481a64352c06039ac5637068ea40e2973573d1042f212": "0x0000000000000000000000000000777700000000000000000000000000000007" }, - "code": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063715018a614610067578063841ab898146100715780638da5cb5b146100a0578063abca4796146100b1578063e1c7392a146100c4578063f2fde38b146100cc575b600080fd5b61006f6100df565b005b61008461007f366004610568565b6100f3565b6040516001600160a01b03909116815260200160405180910390f35b6033546001600160a01b0316610084565b61006f6100bf3660046105cb565b61012c565b61006f610218565b61006f6100da366004610622565b61032e565b6100e76103a4565b6100f160006103fe565b565b60008281526065602052604081208161010b84610450565b81526020810191909152604001600020546001600160a01b03169392505050565b6101346103a4565b60008381526065602052604081208161014c85610450565b8152602080820192909252604090810160009081205487825260659093529081206001600160a01b03909216925083919061018686610450565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826040516101c69190610644565b604080519182900382206001600160a01b038086168452841660208401529186917f19186eb1128fb2344dea8bbcb8a434a43635fbf3100723b2b4c5b319b1504a40910160405180910390a350505050565b600054610100900460ff16158080156102385750600054600160ff909116105b806102525750303b158015610252575060005460ff166001145b6102ba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156102dd576000805461ff0019166101001790555b6102e561046b565b801561032b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6103366103a4565b6001600160a01b03811661039b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b1565b61032b816103fe565b6033546001600160a01b031633146100f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102b1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000815160000361046357506000919050565b506020015190565b600054610100900460ff166104925760405162461bcd60e51b81526004016102b190610673565b6100f1600054610100900460ff166104bc5760405162461bcd60e51b81526004016102b190610673565b6100f1336103fe565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126104ec57600080fd5b813567ffffffffffffffff80821115610507576105076104c5565b604051601f8301601f19908116603f0116810190828211818310171561052f5761052f6104c5565b8160405283815286602085880101111561054857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561057b57600080fd5b82359150602083013567ffffffffffffffff81111561059957600080fd5b6105a5858286016104db565b9150509250929050565b80356001600160a01b03811681146105c657600080fd5b919050565b6000806000606084860312156105e057600080fd5b83359250602084013567ffffffffffffffff8111156105fe57600080fd5b61060a868287016104db565b925050610619604085016105af565b90509250925092565b60006020828403121561063457600080fd5b61063d826105af565b9392505050565b6000825160005b81811015610665576020818601810151858301520161064b565b506000920191825250919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220f7e130dd49c044ff652a9e231961ace2bb3114a1c520cd4fd5887ac5fd3d620764736f6c63430008120033", + "code": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063656b06a414610067578063715018a6146100b75780638da5cb5b146100c1578063decd8e39146100d2578063e1c7392a146100e5578063f2fde38b146100ed575b600080fd5b61009b610075366004610428565b60009182526065602090815260408084209284529190529020546001600160a01b031690565b6040516001600160a01b03909116815260200160405180910390f35b6100bf610100565b005b6033546001600160a01b031661009b565b6100bf6100e0366004610466565b610114565b6100bf610196565b6100bf6100fb36600461049b565b6102ac565b610108610322565b610112600061037c565b565b61011c610322565b600083815260656020908152604080832085845282529182902080546001600160a01b038581166001600160a01b0319831681179093558451928352169181018290529091849186917fe41a6e8584d6e19a0dfc5f9331be4ebe61b5f025d45da164c9ca6ee9b837cea9910160405180910390a350505050565b600054610100900460ff16158080156101b65750600054600160ff909116105b806101d05750303b1580156101d0575060005460ff166001145b6102385760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561025b576000805461ff0019166101001790555b6102636103ce565b80156102a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6102b4610322565b6001600160a01b0381166103195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161022f565b6102a98161037c565b6033546001600160a01b031633146101125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166103f55760405162461bcd60e51b815260040161022f906104bd565b610112600054610100900460ff1661041f5760405162461bcd60e51b815260040161022f906104bd565b6101123361037c565b6000806040838503121561043b57600080fd5b50508035926020909101359150565b80356001600160a01b038116811461046157600080fd5b919050565b60008060006060848603121561047b57600080fd5b83359250602084013591506104926040850161044a565b90509250925092565b6000602082840312156104ad57600080fd5b6104b68261044a565b9392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea26469706673582212202fe16b5d2756e265a45a405cb052a890cfb8ac0adbc8c77b5f4afac59c3ec3b764736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000001": { @@ -66,9 +66,9 @@ "storage": { "0x00000000000000000000000000000000000000000000000000000000000000cb": "0xf167b245aa70c0a5e2f44cd65a94f2b1c5c9e8c8ab059940e4bf1c47d7a39557", "0x00000000000000000000000000000000000000000000000000000000000000cc": "0x0000000000bebc200000000058b8ef1c0000000485b9d2e799564d28c46075dd", - "0x00000000000000000000000000000000000000000000000000000000000000cd": "0x00000000000000000000000a9507f6800000000000000000000000006447f567" + "0x00000000000000000000000000000000000000000000000000000000000000cd": "0x00000000000000000000000a9507f680000000000000000000000000644a8b1b" }, - "code": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063e1848cb01161007c578063e1848cb014610320578063ee82ac5e14610333578063f2fde38b14610346578063f535bd5614610359578063f5c9774014610373578063f5d11edc1461038d57600080fd5b80638da5cb5b146102ad5780638f3ca30d146102be5780639ee512f2146102d1578063a4e6775f146102ea578063c7b96908146102fd578063dac5df781461031757600080fd5b80633d384a4b116101155780633d384a4b1461020d5780633fa8535014610222578063539b8ade1461024d578063591aad8a14610260578063609bbd0614610292578063715018a6146102a557600080fd5b80630ca4dffd1461015257806310da3738146101825780631be2bfa7146101b7578063210c9fe8146101ca5780633ab76e9f146101fc575b600080fd5b6101656101603660046116e7565b6103a7565b6040516001600160a01b0390911681526020015b60405180910390f35b6101a97f92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce3881565b604051908152602001610179565b6101656101c5366004611734565b6103bd565b60cc546101e490600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610179565b6097546001600160a01b0316610165565b61022061021b3660046117a1565b6103d4565b005b60cc54610235906001600160801b031681565b6040516001600160801b039091168152602001610179565b60cd546101e4906001600160401b031681565b61027361026e3660046117e7565b61063a565b6040805160ff9094168452602084019290925290820152606001610179565b6101a96102a036600461181d565b610875565b6102206108b1565b6065546001600160a01b0316610165565b6102206102cc36600461184b565b6108c5565b61016571777735367b36bc9b61c50022d9d0700db4ec81565b6101a96102f836600461181d565b610c92565b60cd546101e490600160401b90046001600160401b031681565b6101a960cb5481565b6101a961032e36600461188c565b610ccb565b6101a961034136600461181d565b610ce7565b6102206103543660046118d1565b610d34565b60cd546101e490600160801b90046001600160401b031681565b60cc546101e490600160801b90046001600160401b031681565b60cd546101e490600160c01b90046001600160401b031681565b60006103b4468484610dad565b90505b92915050565b60006103ca848484610dad565b90505b9392505050565b3371777735367b36bc9b61c50022d9d0700db4ec1461040657604051636494e9f760e01b815260040160405180910390fd5b6000610413600143611904565b9050804060008061042384610e7d565b915091508160cb541461045c5760cb54604051636340d9fb60e11b81526004810191909152602481018390526044015b60405180910390fd5b60cb819055600084815260c96020908152604080832086905560cd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c1690810291909117909155815180830183528c81528084018c815282865260ca8552948390209051815593516001949094019390935580518b81529182018a90527fc7edd3d480c294297f3924d0ffab64074e7fb22e004ea492d5dd691fa1fc99c0910160405180910390a260cc54600090600160c01b90046001600160401b0316156105705760cd546105429061053b906001600160401b031642611904565b4588610f10565b60cd80546001600160401b03909216600160801b0267ffffffffffffffff60801b1990921691909117905590505b8048146105a357604051634083acad60e01b81526001600160401b03808316600483015248166024820152604401610453565b60cd805467ffffffffffffffff1916426001600160401b03908116918217909255604080514384168152848416602082015245909316908301526060820152608081018590524460a08201524160c082015263ffffffff461660e08201527f4dcb01f99c4a2c27a16ab38d00ec92434f8231be81fa62e058f260d3c7156029906101000160405180910390a1505050505050505050565b60008060008360ff1660011415801561065757508360ff16600214155b156106755760405163bcd2d90d60e01b815260040160405180910390fd5b8360ff166001146106a6577fc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee56106c8565b7f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817985b915060008460ff166001146106fd577fad77eceea844778cb4376153fc8f06f12f1695df4585bf75bfb17ec19ce9081861071f565b7fb4a95509ce05fe8d45987859a067780d16a367c0e2cacf79cd301b93fb7179405b905060008560ff16600114610754577f71620584f61c57e688bbd3fd7a39a036e588d962c4c830f3dacbc15c917e02f2610776565b7f45b59254b0320fd853f3f38ac574999e91bd75fd5e6cab9c22c5e71fc6d276e45b82880192831001905060ff86166001036107b0576107a98282600170014551231950b75fc4402da1732fc9bebe19610fb0565b925061081f565b6107f87f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a16107f38484600170014551231950b75fc4402da1732fc9bebe19610fb0565b610fff565b909250905061081c8282600170014551231950b75fc4402da1732fc9bebe19610fb0565b92505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561086c576108638370014551231950b75fc4402da1732fc9bebe19611904565b92506001851894505b50509250925092565b60008082156108845782610898565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020600101549392505050565b6108b961101e565b6108c36000611078565b565b600054610100900460ff16158080156108e55750600054600160ff909116105b806108ff5750303b1580156108ff575060005460ff166001145b6109625760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610453565b6000805460ff191660011790558015610985576000805461ff0019166101001790555b600146111580610999575063ffffffff4610155b156109b7576040516306cffa2760e01b815260040160405180910390fd5b60014311156109d957604051635a0f9e4160e11b815260040160405180910390fd5b6109e96040830160208401611917565b6001600160401b031615610bee57610a046020830183611917565b6001600160401b03161580610a2f5750610a246060830160408401611917565b6001600160401b0316155b80610a505750610a456080830160608401611917565b6001600160401b0316155b80610a715750610a6660a0830160808401611917565b6001600160401b0316155b15610a8f57604051639cc448b560e01b815260040160405180910390fd5b6000610ad6610aa46060850160408601611917565b610ab16020860186611917565b610ac16080870160608801611917565b610ad160a0880160808901611917565b6110ca565b60cc80546fffffffffffffffffffffffffffffffff19166001600160801b0392831617905590915081161580610b1c57506001600160401b036001600160801b03821610155b80610b30575060cc546001600160801b0316155b15610b4e57604051639cc448b560e01b815260040160405180910390fd5b60cc805467ffffffffffffffff60801b1916600160801b6001600160401b03841602179055610b836040840160208501611917565b60cc80546001600160401b0392909216600160c01b026001600160c01b039092169190911790556002610bbc6060850160408601611917565b610bc69190611948565b60cd60106101000a8154816001600160401b0302191690836001600160401b03160217905550505b60cd805467ffffffffffffffff1916426001600160401b0316179055610c13836111c9565b610c1c43610e7d565b5060cb554315610c47576000610c33600143611904565b600081815260c96020526040902090409055505b8015610c8d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000808215610ca15782610cb5565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020549392505050565b6000610cde8463ffffffff168484610f10565b50949350505050565b6000438210610cf857506000919050565b4382108015610d125750610d0e61010043611904565b8210155b15610d1c57504090565b50600090815260c9602052604090205490565b919050565b610d3c61101e565b6001600160a01b038116610da15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610453565b610daa81611078565b50565b609754604051631083571360e31b81526000916001600160a01b03169063841ab89890610de090879087906004016119b4565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906119cd565b9050816103cd576040516001600160a01b038216151590610e4890869086906020016119ea565b60405160208183030381529060405290610e755760405162461bcd60e51b81526004016104539190611a48565b509392505050565b600080610e88611615565b60005b60ff81108015610e9e5750806001018510155b15610ed0576000198186030180408360ff83066101008110610ec257610ec2611a5b565b602002015250600101610e8b565b5046611fe082015261200081209250834081610eed60ff87611a71565b6101008110610efe57610efe611a5b565b60200201526120009020919391925050565b600080806202bf206001600160401b03851611610f2e576000610f35565b6202bf2084035b60cd5460cc54919250600160801b90046001600160401b039081168184160191600160c01b90048116880290610f779082610f7085826111e2565b03906111f8565b60cc54909450610fa693506001600160401b03600160801b82041692506001600160801b03169050838761120d565b9150935093915050565b600060405160408152602080820152602060408201528460608201528560808201528360a08201528260c082015260208160e08360056107d05a03fa610ff557600080fd5b5195945050505050565b6000806000198385098385029250828110838203039150509250929050565b6065546001600160a01b031633146108c35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610453565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080856001600160401b03166000036110e6576110e6611a85565b60006110f3600288611948565b90506111116001600160401b038816680755bf798b4a1bf1e4611a9b565b925061113061112b84886001600160401b0316848961120d565b6112cc565b915060006111408484848961120d565b9050600061115a8585856111558b6002611ab5565b61120d565b905060008261116b83612710611ae0565b6111759190611af7565b9050806001600160401b0316876001600160401b0316146111bc576040516331c2ec2360e21b81526001600160401b03808916600483015282166024820152604401610453565b5050505094509492505050565b6111d1611339565b6111d9611368565b610daa81611397565b60008183116111f157816103b4565b5090919050565b600081831161120757826103b4565b50919050565b60006001600160801b0385161580159061122f57506001600160801b03841615155b61123b5761123b611a85565b60006001600160401b038316156112525782611255565b60015b9050600061126c856001600160401b0316886113e0565b9050600061128c61127d8488611b0b565b6001600160401b0316896113e0565b90506001600160801b0387166001600160401b0384166112ac8484611904565b6112b69190611af7565b6112c09190611af7565b98975050505050505050565b60006001600160801b038211156113355760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610453565b5090565b600054610100900460ff166113605760405162461bcd60e51b815260040161045390611b32565b6108c3611432565b600054610100900460ff1661138f5760405162461bcd60e51b815260040161045390611b32565b6108c361145f565b6001600160a01b0381166113be57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806113f66001600160801b03841685611ae0565b9050680755bf798b4a1bf1e48110611421576040516372de381d60e01b815260040160405180910390fd5b61142a8161148f565b949350505050565b600054610100900460ff166114595760405162461bcd60e51b815260040161045390611b32565b60018055565b600054610100900460ff166114865760405162461bcd60e51b815260040161045390611b32565b6108c333611078565b6000680248ce36a70cb26b3e1982136114aa57506000919050565b680755bf798b4a1bf1e582126114d357604051631a93c68960e11b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b6d2c06887d92262d378b9593af35346c09791803c2923d5d9721c3da80929091056001605f1b0190921d6bb17217f7d1cf79abc9e3b39881029095039081018102606090811d6d019dd9374d4315c8464a395fc09881016c1bff318b126baa436ea9aeaffd19840102821d93840193016d29c9ad45cc0beb0a2ff097a7bab40192909202821d6dcf3c27b2e487711b467e90f19320016c22fcd1cffa6fa000f6e27eeca082018202831d6d022f98fbc368092c79210d196fa0018202831d6d13aaae3ba38de06adc25ebfacc0901820290921d6d624dcbeb5e25df590e409325888a01026d360d7aeea093263ec6495851bd9760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b604051806120000160405280610100906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261165c57600080fd5b81356001600160401b038082111561167657611676611635565b604051601f8301601f19908116603f0116810190828211818310171561169e5761169e611635565b816040528381528660208588010111156116b757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80358015158114610d2f57600080fd5b600080604083850312156116fa57600080fd5b82356001600160401b0381111561171057600080fd5b61171c8582860161164b565b92505061172b602084016116d7565b90509250929050565b60008060006060848603121561174957600080fd5b8335925060208401356001600160401b0381111561176657600080fd5b6117728682870161164b565b925050611781604085016116d7565b90509250925092565b80356001600160401b0381168114610d2f57600080fd5b600080600080608085870312156117b757600080fd5b84359350602085013592506117ce6040860161178a565b91506117dc6060860161178a565b905092959194509250565b600080604083850312156117fa57600080fd5b82359150602083013560ff8116811461181257600080fd5b809150509250929050565b60006020828403121561182f57600080fd5b5035919050565b6001600160a01b0381168114610daa57600080fd5b60008082840360c081121561185f57600080fd5b833561186a81611836565b925060a0601f198201121561187e57600080fd5b506020830190509250929050565b6000806000606084860312156118a157600080fd5b833563ffffffff811681146118b557600080fd5b92506118c36020850161178a565b91506117816040850161178a565b6000602082840312156118e357600080fd5b81356103cd81611836565b634e487b7160e01b600052601160045260246000fd5b818103818111156103b7576103b76118ee565b60006020828403121561192957600080fd5b6103b48261178a565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b038084168061196257611962611932565b92169190910492915050565b6000815180845260005b8181101561199457602081850181015186830182015201611978565b506000602082860101526020601f19601f83011685010191505092915050565b8281526040602082015260006103ca604083018461196e565b6000602082840312156119df57600080fd5b81516103cd81611836565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e08201526000610100806060840152611a3f8184018561196e565b95945050505050565b6020815260006103b4602083018461196e565b634e487b7160e01b600052603260045260246000fd5b600082611a8057611a80611932565b500690565b634e487b7160e01b600052600160045260246000fd5b60006001600160801b038084168061196257611962611932565b6001600160401b03818116838216028082169190828114611ad857611ad86118ee565b505092915050565b80820281158282048414176103b7576103b76118ee565b600082611b0657611b06611932565b500490565b6001600160401b03818116838216019080821115611b2b57611b2b6118ee565b5092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122042ebe6eea7309239f3880d39e251ac2465be367c776314009bd5a6d744b5f7f464736f6c63430008120033", + "code": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638f3ca30d116100c3578063e1848cb01161007c578063e1848cb01461031c578063ee82ac5e1461032f578063f2fde38b14610342578063f535bd5614610355578063f5c977401461036f578063f5d11edc1461038957600080fd5b80638f3ca30d146102a75780639ee512f2146102ba578063a4e6775f146102d3578063a86f9d9e146102e6578063c7b96908146102f9578063dac5df781461031357600080fd5b8063539b8ade11610115578063539b8ade14610223578063591aad8a14610236578063609bbd06146102685780636c6563f61461027b578063715018a61461028e5780638da5cb5b1461029657600080fd5b806310da373814610152578063210c9fe81461018c5780633ab76e9f146101be5780633d384a4b146101e35780633fa85350146101f8575b600080fd5b6101797f92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce3881565b6040519081526020015b60405180910390f35b60cc546101a690600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610183565b6097546001600160a01b03165b6040516001600160a01b039091168152602001610183565b6101f66101f1366004611691565b6103a3565b005b60cc5461020b906001600160801b031681565b6040516001600160801b039091168152602001610183565b60cd546101a6906001600160401b031681565b6102496102443660046116d7565b610609565b6040805160ff9094168452602084019290925290820152606001610183565b61017961027636600461170d565b610844565b6101cb610289366004611736565b610880565b6101f6610897565b6065546001600160a01b03166101cb565b6101f66102b5366004611780565b6108ab565b6101cb71777735367b36bc9b61c50022d9d0700db4ec81565b6101796102e136600461170d565b610c78565b6101cb6102f43660046117c1565b610cb1565b60cd546101a690600160401b90046001600160401b031681565b61017960cb5481565b61017961032a3660046117ed565b610cc7565b61017961033d36600461170d565b610ce3565b6101f6610350366004611832565b610d30565b60cd546101a690600160801b90046001600160401b031681565b60cc546101a690600160801b90046001600160401b031681565b60cd546101a690600160c01b90046001600160401b031681565b3371777735367b36bc9b61c50022d9d0700db4ec146103d557604051636494e9f760e01b815260040160405180910390fd5b60006103e2600143611865565b905080406000806103f284610da9565b915091508160cb541461042b5760cb54604051636340d9fb60e11b81526004810191909152602481018390526044015b60405180910390fd5b60cb819055600084815260c96020908152604080832086905560cd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c1690810291909117909155815180830183528c81528084018c815282865260ca8552948390209051815593516001949094019390935580518b81529182018a90527fc7edd3d480c294297f3924d0ffab64074e7fb22e004ea492d5dd691fa1fc99c0910160405180910390a260cc54600090600160c01b90046001600160401b03161561053f5760cd546105119061050a906001600160401b031642611865565b4588610e3c565b60cd80546001600160401b03909216600160801b0267ffffffffffffffff60801b1990921691909117905590505b80481461057257604051634083acad60e01b81526001600160401b03808316600483015248166024820152604401610422565b60cd805467ffffffffffffffff1916426001600160401b03908116918217909255604080514384168152848416602082015245909316908301526060820152608081018590524460a08201524160c082015263ffffffff461660e08201527f4dcb01f99c4a2c27a16ab38d00ec92434f8231be81fa62e058f260d3c7156029906101000160405180910390a1505050505050505050565b60008060008360ff1660011415801561062657508360ff16600214155b156106445760405163bcd2d90d60e01b815260040160405180910390fd5b8360ff16600114610675577fc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5610697565b7f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817985b915060008460ff166001146106cc577fad77eceea844778cb4376153fc8f06f12f1695df4585bf75bfb17ec19ce908186106ee565b7fb4a95509ce05fe8d45987859a067780d16a367c0e2cacf79cd301b93fb7179405b905060008560ff16600114610723577f71620584f61c57e688bbd3fd7a39a036e588d962c4c830f3dacbc15c917e02f2610745565b7f45b59254b0320fd853f3f38ac574999e91bd75fd5e6cab9c22c5e71fc6d276e45b82880192831001905060ff861660010361077f576107788282600170014551231950b75fc4402da1732fc9bebe19610edc565b92506107ee565b6107c77f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a16107c28484600170014551231950b75fc4402da1732fc9bebe19610edc565b610f2b565b90925090506107eb8282600170014551231950b75fc4402da1732fc9bebe19610edc565b92505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561083b576108328370014551231950b75fc4402da1732fc9bebe19611865565b92506001851894505b50509250925092565b60008082156108535782610867565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020600101549392505050565b600061088d848484610f4a565b90505b9392505050565b61089f611063565b6108a960006110bd565b565b600054610100900460ff16158080156108cb5750600054600160ff909116105b806108e55750303b1580156108e5575060005460ff166001145b6109485760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610422565b6000805460ff19166001179055801561096b576000805461ff0019166101001790555b60014611158061097f575063ffffffff4610155b1561099d576040516306cffa2760e01b815260040160405180910390fd5b60014311156109bf57604051635a0f9e4160e11b815260040160405180910390fd5b6109cf6040830160208401611878565b6001600160401b031615610bd4576109ea6020830183611878565b6001600160401b03161580610a155750610a0a6060830160408401611878565b6001600160401b0316155b80610a365750610a2b6080830160608401611878565b6001600160401b0316155b80610a575750610a4c60a0830160808401611878565b6001600160401b0316155b15610a7557604051639cc448b560e01b815260040160405180910390fd5b6000610abc610a8a6060850160408601611878565b610a976020860186611878565b610aa76080870160608801611878565b610ab760a0880160808901611878565b61110f565b60cc80546fffffffffffffffffffffffffffffffff19166001600160801b0392831617905590915081161580610b0257506001600160401b036001600160801b03821610155b80610b16575060cc546001600160801b0316155b15610b3457604051639cc448b560e01b815260040160405180910390fd5b60cc805467ffffffffffffffff60801b1916600160801b6001600160401b03841602179055610b696040840160208501611878565b60cc80546001600160401b0392909216600160c01b026001600160c01b039092169190911790556002610ba26060850160408601611878565b610bac91906118a9565b60cd60106101000a8154816001600160401b0302191690836001600160401b03160217905550505b60cd805467ffffffffffffffff1916426001600160401b0316179055610bf98361120e565b610c0243610da9565b5060cb554315610c2d576000610c19600143611865565b600081815260c96020526040902090409055505b8015610c73576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000808215610c875782610c9b565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020549392505050565b6000610cbe468484610f4a565b90505b92915050565b6000610cda8463ffffffff168484610e3c565b50949350505050565b6000438210610cf457506000919050565b4382108015610d0e5750610d0a61010043611865565b8210155b15610d1857504090565b50600090815260c9602052604090205490565b919050565b610d38611063565b6001600160a01b038116610d9d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610422565b610da6816110bd565b50565b600080610db461165a565b60005b60ff81108015610dca5750806001018510155b15610dfc576000198186030180408360ff83066101008110610dee57610dee6118cf565b602002015250600101610db7565b5046611fe082015261200081209250834081610e1960ff876118e5565b6101008110610e2a57610e2a6118cf565b60200201526120009020919391925050565b600080806202bf206001600160401b03851611610e5a576000610e61565b6202bf2084035b60cd5460cc54919250600160801b90046001600160401b039081168184160191600160c01b90048116880290610ea39082610e9c8582611227565b039061123d565b60cc54909450610ed293506001600160401b03600160801b82041692506001600160801b031690508387611252565b9150935093915050565b600060405160408152602080820152602060408201528460608201528560808201528360a08201528260c082015260208160e08360056107d05a03fa610f2157600080fd5b5195945050505050565b6000806000198385098385029250828110838203039150509250929050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610f9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbf91906118f9565b905081610890576040516001600160a01b03821615159061102e90869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b6040516020818303038152906040529061105b5760405162461bcd60e51b81526004016104229190611916565b509392505050565b6065546001600160a01b031633146108a95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610422565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080856001600160401b031660000361112b5761112b611964565b60006111386002886118a9565b90506111566001600160401b038816680755bf798b4a1bf1e461197a565b925061117561117084886001600160401b03168489611252565b611311565b9150600061118584848489611252565b9050600061119f85858561119a8b6002611994565b611252565b90506000826111b0836127106119bf565b6111ba91906119d6565b9050806001600160401b0316876001600160401b031614611201576040516331c2ec2360e21b81526001600160401b03808916600483015282166024820152604401610422565b5050505094509492505050565b61121661137e565b61121e6113ad565b610da6816113dc565b60008183116112365781610cbe565b5090919050565b600081831161124c5782610cbe565b50919050565b60006001600160801b0385161580159061127457506001600160801b03841615155b61128057611280611964565b60006001600160401b03831615611297578261129a565b60015b905060006112b1856001600160401b031688611425565b905060006112d16112c284886119ea565b6001600160401b031689611425565b90506001600160801b0387166001600160401b0384166112f18484611865565b6112fb91906119d6565b61130591906119d6565b98975050505050505050565b60006001600160801b0382111561137a5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610422565b5090565b600054610100900460ff166113a55760405162461bcd60e51b815260040161042290611a11565b6108a9611477565b600054610100900460ff166113d45760405162461bcd60e51b815260040161042290611a11565b6108a96114a4565b6001600160a01b03811661140357604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60008061143b6001600160801b038416856119bf565b9050680755bf798b4a1bf1e48110611466576040516372de381d60e01b815260040160405180910390fd5b61146f816114d4565b949350505050565b600054610100900460ff1661149e5760405162461bcd60e51b815260040161042290611a11565b60018055565b600054610100900460ff166114cb5760405162461bcd60e51b815260040161042290611a11565b6108a9336110bd565b6000680248ce36a70cb26b3e1982136114ef57506000919050565b680755bf798b4a1bf1e5821261151857604051631a93c68960e11b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b6d2c06887d92262d378b9593af35346c09791803c2923d5d9721c3da80929091056001605f1b0190921d6bb17217f7d1cf79abc9e3b39881029095039081018102606090811d6d019dd9374d4315c8464a395fc09881016c1bff318b126baa436ea9aeaffd19840102821d93840193016d29c9ad45cc0beb0a2ff097a7bab40192909202821d6dcf3c27b2e487711b467e90f19320016c22fcd1cffa6fa000f6e27eeca082018202831d6d022f98fbc368092c79210d196fa0018202831d6d13aaae3ba38de06adc25ebfacc0901820290921d6d624dcbeb5e25df590e409325888a01026d360d7aeea093263ec6495851bd9760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b0381168114610d2b57600080fd5b600080600080608085870312156116a757600080fd5b84359350602085013592506116be6040860161167a565b91506116cc6060860161167a565b905092959194509250565b600080604083850312156116ea57600080fd5b82359150602083013560ff8116811461170257600080fd5b809150509250929050565b60006020828403121561171f57600080fd5b5035919050565b80358015158114610d2b57600080fd5b60008060006060848603121561174b57600080fd5b833592506020840135915061176260408501611726565b90509250925092565b6001600160a01b0381168114610da657600080fd5b60008082840360c081121561179457600080fd5b833561179f8161176b565b925060a0601f19820112156117b357600080fd5b506020830190509250929050565b600080604083850312156117d457600080fd5b823591506117e460208401611726565b90509250929050565b60008060006060848603121561180257600080fd5b833563ffffffff8116811461181657600080fd5b92506118246020850161167a565b91506117626040850161167a565b60006020828403121561184457600080fd5b81356108908161176b565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cc157610cc161184f565b60006020828403121561188a57600080fd5b610cbe8261167a565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b03808416806118c3576118c3611893565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b6000826118f4576118f4611893565b500690565b60006020828403121561190b57600080fd5b81516108908161176b565b600060208083528351808285015260005b8181101561194357858101830151858201604001528201611927565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052600160045260246000fd5b60006001600160801b03808416806118c3576118c3611893565b6001600160401b038181168382160280821691908281146119b7576119b761184f565b505092915050565b8082028115828204841417610cc157610cc161184f565b6000826119e5576119e5611893565b500490565b6001600160401b03818116838216019080821115611a0a57611a0a61184f565b5092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220b970c8de8ef1e70b8513d86e8c7feb8e328bd8620f2c705cfd143a1c068a681a64736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000004": { @@ -79,7 +79,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" }, - "code": "0x6080604052600436106101235760003560e01c8063715018a6116100a0578063ce70f39b11610064578063ce70f39b1461040e578063d0496d6a1461042e578063f2fde38b1461049d578063f9803919146104bd578063fee99b22146104dd57600080fd5b8063715018a6146103885780638da5cb5b1461039d57806396e17852146103bb578063a4444efd146103ce578063bac443e2146103ee57600080fd5b80635075a9d4116100e75780635075a9d4146102cd578063540be6a3146102fa5780635817b0c31461031a5780635d0bd98614610348578063606b5b741461036857600080fd5b80630ca4dffd146101f257806319ab453c1461022f5780631be2bfa71461024f578063343b643c1461026f5780633ab76e9f146102af57600080fd5b366101ed576101566040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060016104fd565b6001600160a01b0316336001600160a01b0316141580156101b657506101a06040518060400160405280600b81526020016a195d1a195c97dd985d5b1d60aa1b81525060016104fd565b6001600160a01b0316336001600160a01b031614155b80156101cd57506065546001600160a01b03163314155b156101eb576040516345dd044560e11b815260040160405180910390fd5b005b600080fd5b3480156101fe57600080fd5b5061021261020d366004612bef565b6104fd565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023b57600080fd5b506101eb61024a366004612c60565b610513565b34801561025b57600080fd5b5061021261026a366004612c7d565b61062b565b34801561027b57600080fd5b5061029f61028a366004612cd7565b600090815260cd602052604090205460ff1690565b6040519015158152602001610226565b3480156102bb57600080fd5b506097546001600160a01b0316610212565b3480156102d957600080fd5b506102ed6102e8366004612cd7565b610642565b6040516102269190612d28565b34801561030657600080fd5b5061029f610315366004612cd7565b61064d565b34801561032657600080fd5b5061033a610335366004612d4f565b610659565b604051908152602001610226565b34801561035457600080fd5b5061029f610363366004612cd7565b61066c565b34801561037457600080fd5b5061033a610383366004612cd7565b61067f565b34801561039457600080fd5b506101eb61068a565b3480156103a957600080fd5b506065546001600160a01b0316610212565b61033a6103c9366004612d4f565b61069e565b3480156103da57600080fd5b5061029f6103e9366004612dcb565b6106cc565b3480156103fa57600080fd5b506101eb610409366004612e1d565b6106e4565b34801561041a57600080fd5b5061029f610429366004612dcb565b610708565b34801561043a57600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260ca5480825260cb546001600160a01b0390811683860190815260cc549387019384528651928352511693810193909352519282019290925201610226565b3480156104a957600080fd5b506101eb6104b8366004612c60565b610717565b3480156104c957600080fd5b506101eb6104d8366004612e85565b610790565b3480156104e957600080fd5b506101eb6104f8366004612e1d565b6107ae565b600061050a4684846107c4565b90505b92915050565b600054610100900460ff16158080156105335750600054600160ff909116105b8061054d5750303b15801561054d575060005460ff166001145b6105b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156105d8576000805461ff0019166101001790555b6105e182610894565b8015610627576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006106388484846107c4565b90505b9392505050565b600061050d826108ad565b600061050d30836108d8565b600061050d61066783612eba565b6109b9565b600061067830836109e9565b5092915050565b600061050d82610a72565b610692610aad565b61069c6000610b07565b565b60006106a8610b59565b6106bc60c9306106b785612eba565b610bb2565b90506106c760018055565b919050565b60006106db3086868686610e93565b95945050505050565b6106ec610b59565b6106fa60c930858585610ff6565b61070360018055565b505050565b60006106db30868686866112e7565b61071f610aad565b6001600160a01b0381166107845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b61078d81610b07565b50565b610798610b59565b6107a560c930848461157c565b61062760018055565b6107b6610b59565b6106fa60c9308585856117b4565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906107f7908790879060040161300b565b602060405180830381865afa158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190613024565b90508161063b576040516001600160a01b03821615159061085f9086908690602001613041565b6040516020818303038152906040529061088c5760405162461bcd60e51b81526004016105ac9190613096565b509392505050565b61089c611cb3565b6108a4611ce2565b61078d81611d11565b6000806108b983610a72565b80549091508060038111156108d0576108d0612cf0565b949350505050565b604051630ca4dffd60e01b81526000906001600160a01b03841690630ca4dffd906109079084906004016130a9565b602060405180830381865afa158015610924573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109489190613024565b604051631933b5e360e11b8152306004820152602481018490526001600160a01b0391909116906332676bc690604401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a91906130d9565b6000816040516020016109cc91906130f6565b604051602081830303815290604052805190602001209050919050565b600080836001600160a01b0316631be2bfa78460016040518363ffffffff1660e01b8152600401610a1b9291906131f0565b602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190613024565b6001600160a01b03811615159590945092505050565b60006040518060400160405280600e81526020016d4d4553534147455f53544154555360901b815250826040516020016109cc92919061321e565b6065546001600160a01b0316331461069c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ac565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260015403610bab5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105ac565b6002600155565b60808101516000906001600160a01b0316610be0576040516301b1868360e71b815260040160405180910390fd5b600080610bf18585606001516109e9565b91509150811580610c055750468460600151145b15610c235760405163e822b48d60e01b815260040160405180910390fd5b60a08401516001600160a01b03161580610c525750806001600160a01b03168460a001516001600160a01b0316145b15610c705760405163b9ad6a0f60e01b815260040160405180910390fd5b60008461012001518561010001518660e00151610c8d9190613256565b610c979190613256565b9050348114610cb957604051632609a19760e21b815260040160405180910390fd5b604051630ca4dffd60e01b81526000906001600160a01b03881690630ca4dffd90610ce990600190600401613269565b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a9190613024565b9050610d3f6001600160a01b03821683611d5a565b8754886000610d4d83613296565b909155508652336020870152466040870152610d68866109b9565b604051630ca4dffd60e01b81529095506001600160a01b03881690630ca4dffd90610d98906000906004016130a9565b602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190613024565b6001600160a01b03166366ca2bc0866040518263ffffffff1660e01b8152600401610e0691815260200190565b6020604051808303816000875af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4991906132af565b50847f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f387604051610e7a91906130f6565b60405180910390a2505050509392505050565b60018055565b600080866001600160a01b0316631be2bfa78660006040518363ffffffff1660e01b8152600401610ec59291906131f0565b602060405180830381865afa158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f069190613024565b604051630ca4dffd60e01b81529091506001600160a01b03881690630ca4dffd90610f36906000906004016130a9565b602060405180830381865afa158015610f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f779190613024565b6001600160a01b0316635221f61386838988886040518663ffffffff1660e01b8152600401610faa9594939291906132c8565b602060405180830381865afa158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb91906130d9565b979650505050505050565b600061100860a0850160808601612c60565b6001600160a01b03160361102f576040516301b1868360e71b815260040160405180910390fd5b468360400135146110535760405163e822b48d60e01b815260040160405180910390fd5b600061106161066785612eba565b600081815260048801602052604090205490915060ff16151560010361109a5760405163afde133560e01b815260040160405180910390fd5b6110ab8582866060013586866112e7565b6110c85760405163498b0b1d60e01b815260040160405180910390fd5b60008181526004870160205260408120805460ff191660011790556110f661010086013560e0870135613256565b9050801561128b57604051630ca4dffd60e01b81526000906001600160a01b03881690630ca4dffd9061112e90600190600401613269565b602060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f9190613024565b90506001600160a01b03811615611204576001600160a01b03811663ba0bbd9561119f60a0890160808a01612c60565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b1580156111e757600080fd5b505af11580156111fb573d6000803e3d6000fd5b50505050611289565b600061121660a0880160808901612c60565b6001600160a01b03168360405160006040518083038185875af1925050503d8060008114611260576040519150601f19603f3d011682016040523d82523d6000602084013e611265565b606091505b50509050806112875760405163f6664cf160e01b815260040160405180910390fd5b505b505b817fea00c741e39d1d9ab1c6703152d71f9da09a782ed4ae128414730dadbb9bd8476112bd60a0880160808901612c60565b604080516001600160a01b039092168252602082018590520160405180910390a250505050505050565b60004684036113095760405163e822b48d60e01b815260040160405180910390fd5b600085900361132b5760405163a6407c9360e01b815260040160405180910390fd5b6000611339838501856133b2565b60408051630ca4dffd60e01b8152600481019190915260056044820152647461696b6f60d81b60648201526000602482018190529192506001600160a01b03891690630ca4dffd90608401602060405180830381865afa1580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c59190613024565b8251610100015160405163a4e6775f60e01b81526001600160801b0390911660048201526001600160a01b03919091169063a4e6775f90602401602060405180830381865afa15801561141c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144091906132af565b90508015806114595750815161145590611e10565b8114155b15611469576000925050506106db565b815160600151604051631be2bfa760e01b815273489Fc09698479ac665A7c91502acDB69A047Fe1a9163a5427462916001600160a01b038c1690631be2bfa7906114ba908c906000906004016131f0565b602060405180830381865afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb9190613024565b6115048b610a72565b602087015160405160e086901b6001600160e01b031916815261152f94939291600391600401613556565b602060405180830381865af415801561154c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157091906130d9565b98975050505050505050565b610140820135158061158b5750805b156115d1576115a060a0830160808401612c60565b6001600160a01b0316336001600160a01b0316146115d15760405163d7f4fc9f60e01b815260040160405180910390fd5b60006115df61066784612eba565b905060016115ec826108ad565b60038111156115fd576115fd612cf0565b1461161b57604051631f6646b560e01b815260040160405180910390fd5b604051630ca4dffd60e01b81526000906001600160a01b03861690630ca4dffd9061164b90600190600401613269565b602060405180830381865afa158015611668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168c9190613024565b90506001600160a01b038116156116fc57604051630d73bb3d60e41b815261010085013560048201526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b1580156116e357600080fd5b505af11580156116f7573d6000803e3d6000fd5b505050505b6117088685845a611e35565b1561171d57611718826002611f8d565b6117ac565b82156117945761172e826003611f8d565b60008061174160e0870160c08801612c60565b6001600160a01b0316146117645761175f60e0860160c08701612c60565b611774565b61177460a0860160808701612c60565b905061178e6001600160a01b038216610100870135611d5a565b506117ac565b6117ac6001600160a01b038216610100860135611d5a565b505050505050565b6101408301351580156117e857506117d260a0840160808501612c60565b6001600160a01b0316336001600160a01b031614155b156118065760405163398b635960e21b815260040160405180910390fd5b4683606001351461182a5760405163e822b48d60e01b815260040160405180910390fd5b600061183861066785612eba565b90506000611845826108ad565b600381111561185657611856612cf0565b1461187457604051632c3b0c4b60e01b815260040160405180910390fd5b6000856001600160a01b0316631be2bfa7866040013560006040518363ffffffff1660e01b81526004016118a99291906131f0565b602060405180830381865afa1580156118c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ea9190613024565b604051630ca4dffd60e01b81529091506001600160a01b03871690630ca4dffd9061191a906000906004016130a9565b602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195b9190613024565b6001600160a01b0316635221f6138660400135838588886040518663ffffffff1660e01b81526004016119929594939291906132c8565b602060405180830381865afa1580156119af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d391906130d9565b6119f0576040516314504c7360e31b815260040160405180910390fd5b6000610120860135611a0b61010088013560e0890135613256565b611a159190613256565b90506000876001600160a01b0316630ca4dffd60016040518263ffffffff1660e01b8152600401611a469190613269565b602060405180830381865afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a879190613024565b90506001600160a01b03811615801590611aa15750600082115b15611b0157604051630d73bb3d60e41b8152600481018390526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050505b611b2860e0880135611b1960a08a0160808b01612c60565b6001600160a01b031690611d5a565b60008030611b3c60c08b0160a08c01612c60565b6001600160a01b03161480611b6957506000611b5e60c08b0160a08c01612c60565b6001600160a01b0316145b15611b7e575060029050610100880135611bf5565b6000611b9060a08b0160808c01612c60565b6001600160a01b0316336001600160a01b031614611bb357896101400135611bb5565b5a5b90506000611bc58d8c8a85611e35565b90508015611bd65760029350611bf2565b60019350611bf26001600160a01b0386166101008d0135611d5a565b50505b611bff8683611f8d565b600080611c1260e08c0160c08d01612c60565b6001600160a01b031614611c3557611c3060e08b0160c08c01612c60565b611c45565b611c4560a08b0160808c01612c60565b90506001600160a01b0381163303611c83576000611c68836101208d0135613256565b9050611c7d6001600160a01b03831682611d5a565b50611ca5565b611c92336101208c0135611d5a565b611ca56001600160a01b03821683611d5a565b505050505050505050505050565b600054610100900460ff16611cda5760405162461bcd60e51b81526004016105ac90613589565b61069c612006565b600054610100900460ff16611d095760405162461bcd60e51b81526004016105ac90613589565b61069c61202d565b6001600160a01b038116611d3857604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b801580611d6e57506001600160a01b038216155b15611d77575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b50509050806107035760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016105ac565b600080611e26611e2184600061205d565b61247e565b80516020909101209392505050565b600081600003611e5857604051637f0e960960e11b815260040160405180910390fd5b6040518060600160405280848152602001856020016020810190611e7c9190612c60565b6001600160a01b039081168252604087810135602093840152835160018a0155918301516002890180546001600160a01b0319169190921617905501516003860155611ece60c0850160a08601612c60565b6001600160a01b031682610100860135611eec6101608801886135d4565b604051611efa92919061361a565b600060405180830381858888f193505050503d8060008114611f38576040519150601f19603f3d011682016040523d82523d6000602084013e611f3d565b606091505b505060408051606081018252600180825260208201819052600019919092018190528782018290556002880180546001600160a01b03191690921790915560039096019590955550929392505050565b806003811115611f9f57611f9f612cf0565b611fa8836108ad565b6003811115611fb957611fb9612cf0565b1461062757611fc882826124c2565b817f0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c8233604051611ffa92919061362a565b60405180910390a25050565b600054610100900460ff16610e8d5760405162461bcd60e51b81526004016105ac90613589565b600054610100900460ff166120545760405162461bcd60e51b81526004016105ac90613589565b61069c33610b07565b610200820151606090156120c857612076826011613256565b6001600160401b0381111561208d5761208d612ad1565b6040519080825280602002602001820160405280156120c057816020015b60608152602001906001900390816120ab5790505b509050612137565b6101e0830151156120de57612076826010613256565b6120e982600f613256565b6001600160401b0381111561210057612100612ad1565b60405190808252806020026020018201604052801561213357816020015b606081526020019060019003908161211e5790505b5090505b8251612142906124eb565b8160008151811061215557612155613650565b602002602001018190525061216d83602001516124eb565b8160018151811061218057612180613650565b602002602001018190525061219883604001516124fe565b816002815181106121ab576121ab613650565b60200260200101819052506121c383606001516124eb565b816003815181106121d6576121d6613650565b60200260200101819052506121ee83608001516124eb565b8160048151811061220157612201613650565b60200260200101819052506122198360a001516124eb565b8160058151811061222c5761222c613650565b60200260200101819052506122638360c0015160405160200161224f9190613666565b604051602081830303815290604052612527565b8160068151811061227657612276613650565b602002602001018190525061228e8360e00151612596565b816007815181106122a1576122a1613650565b60200260200101819052506122c38361010001516001600160801b0316612596565b816008815181106122d6576122d6613650565b60200260200101819052506122ef8361012001516125a4565b8160098151811061230257612302613650565b602002602001018190525061231b8361014001516125a4565b81600a8151811061232e5761232e613650565b60200260200101819052506123478361016001516125a4565b81600b8151811061235a5761235a613650565b6020026020010181905250612373836101800151612527565b81600c8151811061238657612386613650565b602002602001018190525061239f836101a001516124eb565b81600d815181106123b2576123b2613650565b60200260200101819052506123e9836101c0015160405160200161224f919060c09190911b6001600160c01b031916815260080190565b81600e815181106123fc576123fc613650565b6020026020010181905250826101e0015160001461244157612422836101e00151612596565b81600f8151811061243557612435613650565b60200260200101819052505b6102008301511561050d5761245a8361020001516124eb565b8160108151811061246d5761246d613650565b602002602001018190525092915050565b6060600061248b836125bb565b9050612499815160c06126f0565b816040516020016124ab92919061369b565b604051602081830303815290604052915050919050565b60006124cd83610a72565b905060008260038111156124e3576124e3612cf0565b909155505050565b606061050d6124f983612898565b612527565b604051606082811b6bffffffffffffffffffffffff191660208301529061050d9060340161224f565b60608082516001148015612555575060808360008151811061254b5761254b613650565b016020015160f81c105b1561256157508161050d565b61256d835160806126f0565b8360405160200161257f92919061369b565b604051602081830303815290604052905092915050565b606061050d6124f98361294a565b606061050d6124f9836001600160401b031661294a565b606081516000036125dc576040805160008082526020820190925290610678565b6000805b8351811015612621578381815181106125fb576125fb613650565b6020026020010151518261260f9190613256565b915061261a81613296565b90506125e0565b6000826001600160401b0381111561263b5761263b612ad1565b6040519080825280601f01601f191660200182016040528015612665576020820181803683370190505b50600092509050602081015b85518310156126e757600086848151811061268e5761268e613650565b6020026020010151905060006020820190506126ac83828451612a74565b8785815181106126be576126be613650565b602002602001015151836126d29190613256565b92505050826126e090613296565b9250612671565b50949350505050565b6060806038841015612757576040805160018082528183019092529060208201818036833701905050905061272583856136ca565b60f81b8160008151811061273b5761273b613650565b60200101906001600160f81b031916908160001a90535061050a565b600060015b61276681876136f9565b156127895761277482613296565b91506127826101008261370d565b905061275c565b612794826001613256565b6001600160401b038111156127ab576127ab612ad1565b6040519080825280601f01601f1916602001820160405280156127d5576020820181803683370190505b5092506127e285836136ca565b6127ed9060376136ca565b60f81b8360008151811061280357612803613650565b60200101906001600160f81b031916908160001a905350600190505b81811161288f576101006128338284613724565b61283f9061010061381b565b61284990886136f9565b6128539190613827565b60f81b83828151811061286857612868613650565b60200101906001600160f81b031916908160001a90535061288881613296565b905061281f565b50509392505050565b60606000826040516020016128af91815260200190565b60408051808303601f1901815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156126e75783836128f481613296565b94508151811061290657612906613650565b602001015160f81c60f81b82828151811061292357612923613650565b60200101906001600160f81b031916908160001a90535061294381613296565b90506128e0565b606060008260405160200161296191815260200190565b604051602081830303815290604052905060005b60208110156129b65781818151811061299057612990613650565b01602001516001600160f81b0319166000036129b6576129af81613296565b9050612975565b60006129c3826020613724565b6001600160401b038111156129da576129da612ad1565b6040519080825280601f01601f191660200182016040528015612a04576020820181803683370190505b50905060005b81518110156126e7578383612a1e81613296565b945081518110612a3057612a30613650565b602001015160f81c60f81b828281518110612a4d57612a4d613650565b60200101906001600160f81b031916908160001a905350612a6d81613296565b9050612a0a565b8282825b60208110612ab05781518352612a8f602084613256565b9250612a9c602083613256565b9150612aa9602082613724565b9050612a78565b905182516020929092036101000a6000190180199091169116179052505050565b634e487b7160e01b600052604160045260246000fd5b6040516101a081016001600160401b0381118282101715612b0a57612b0a612ad1565b60405290565b604080519081016001600160401b0381118282101715612b0a57612b0a612ad1565b60405161022081016001600160401b0381118282101715612b0a57612b0a612ad1565b600082601f830112612b6657600080fd5b81356001600160401b0380821115612b8057612b80612ad1565b604051601f8301601f19908116603f01168101908282118183101715612ba857612ba8612ad1565b81604052838152866020858801011115612bc157600080fd5b836020870160208301376000602085830101528094505050505092915050565b801515811461078d57600080fd5b60008060408385031215612c0257600080fd5b82356001600160401b03811115612c1857600080fd5b612c2485828601612b55565b9250506020830135612c3581612be1565b809150509250929050565b6001600160a01b038116811461078d57600080fd5b80356106c781612c40565b600060208284031215612c7257600080fd5b813561050a81612c40565b600080600060608486031215612c9257600080fd5b8335925060208401356001600160401b03811115612caf57600080fd5b612cbb86828701612b55565b9250506040840135612ccc81612be1565b809150509250925092565b600060208284031215612ce957600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110612d2457634e487b7160e01b600052602160045260246000fd5b9052565b6020810161050d8284612d06565b60006101a08284031215612d4957600080fd5b50919050565b600060208284031215612d6157600080fd5b81356001600160401b03811115612d7757600080fd5b6108d084828501612d36565b60008083601f840112612d9557600080fd5b5081356001600160401b03811115612dac57600080fd5b602083019150836020828501011115612dc457600080fd5b9250929050565b60008060008060608587031215612de157600080fd5b843593506020850135925060408501356001600160401b03811115612e0557600080fd5b612e1187828801612d83565b95989497509550505050565b600080600060408486031215612e3257600080fd5b83356001600160401b0380821115612e4957600080fd5b612e5587838801612d36565b94506020860135915080821115612e6b57600080fd5b50612e7886828701612d83565b9497909650939450505050565b60008060408385031215612e9857600080fd5b82356001600160401b03811115612eae57600080fd5b612c2485828601612d36565b60006101a08236031215612ecd57600080fd5b612ed5612ae7565b82358152612ee560208401612c55565b60208201526040830135604082015260608301356060820152612f0a60808401612c55565b6080820152612f1b60a08401612c55565b60a0820152612f2c60c08401612c55565b60c082015260e08381013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401356001600160401b0380821115612f7857600080fd5b612f8436838801612b55565b83850152610180925082860135915080821115612fa057600080fd5b50612fad36828701612b55565b918301919091525092915050565b60005b83811015612fd6578181015183820152602001612fbe565b50506000910152565b60008151808452612ff7816020860160208601612fbb565b601f01601f19169290920160200192915050565b8281526040602082015260006106386040830184612fdf565b60006020828403121561303657600080fd5b815161050a81612c40565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e082015260006101008060608401526106db81840185612fdf565b60208152600061050a6020830184612fdf565b6040808252600e908201526d7369676e616c5f7365727669636560901b6060820152901515602082015260800190565b6000602082840312156130eb57600080fd5b815161050a81612be1565b60208152815160208201526000602083015161311d60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161314c60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526131ca6101c0860184612fdf565b90860151858203601f1901838701529092506131e68382612fdf565b9695505050505050565b9182526060602083018190526006908301526562726964676560d01b60808301521515604082015260a00190565b60008351613230818460208801612fbb565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561050d5761050d613240565b6040808252600b908201526a195d1a195c97dd985d5b1d60aa1b6060820152901515602082015260800190565b6000600182016132a8576132a8613240565b5060010190565b6000602082840312156132c157600080fd5b5051919050565b8581526001600160a01b0385166020820152604081018490526080606082018190528101829052818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600082601f83011261332857600080fd5b6040516101008082018281106001600160401b038211171561334c5761334c612ad1565b6040528301818582111561335f57600080fd5b845b82811015613379578035825260209182019101613361565b509195945050505050565b80356001600160801b03811681146106c757600080fd5b80356001600160401b03811681146106c757600080fd5b6000602082840312156133c457600080fd5b81356001600160401b03808211156133db57600080fd5b90830190604082860312156133ef57600080fd5b6133f7612b10565b82358281111561340657600080fd5b8301610300818803121561341957600080fd5b613421612b32565b813581526020820135602082015261343b60408301612c55565b6040820152606082013560608201526080820135608082015260a082013560a082015261346b8860c08401613317565b60c08201526101c08083013560e08301526101e061348a818501613384565b61010084015261020061349e81860161339b565b6101208501526134b1610220860161339b565b6101408501526134c4610240860161339b565b610160850152610260850135878111156134dd57600080fd5b6134e98c828801612b55565b610180860152506102808501356101a08501526135096102a0860161339b565b838501526102c0850135828501526102e085013581850152505050808352505060208301358281111561353b57600080fd5b61354787828601612b55565b60208301525095945050505050565b85815260018060a01b038516602082015283604082015282606082015260a060808201526000610feb60a0830184612fdf565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000808335601e198436030181126135eb57600080fd5b8301803591506001600160401b0382111561360557600080fd5b602001915036819003821315612dc457600080fd5b8183823760009101908152919050565b604081016136388285612d06565b6001600160a01b039290921660209190910152919050565b634e487b7160e01b600052603260045260246000fd5b60008183825b600881101561368b57815183526020928301929091019060010161366c565b5050506101008201905092915050565b600083516136ad818460208801612fbb565b8351908301906136c1818360208801612fbb565b01949350505050565b60ff818116838216019081111561050d5761050d613240565b634e487b7160e01b600052601260045260246000fd5b600082613708576137086136e3565b500490565b808202811582820484141761050d5761050d613240565b8181038181111561050d5761050d613240565b600181815b8085111561377257816000190482111561375857613758613240565b8085161561376557918102915b93841c939080029061373c565b509250929050565b6000826137895750600161050d565b816137965750600061050d565b81600181146137ac57600281146137b6576137d2565b600191505061050d565b60ff8411156137c7576137c7613240565b50506001821b61050d565b5060208310610133831016604e8410600b84101617156137f5575081810a61050d565b6137ff8383613737565b806000190482111561381357613813613240565b029392505050565b600061050a838361377a565b600082613836576138366136e3565b50069056fea264697066735822122070121f05246570406412e10c8eb43e53cc86def55bb41d395a1641cd8b70ae8d64736f6c63430008120033", + "code": "0x6080604052600436106101235760003560e01c80638da5cb5b116100a0578063ce70f39b11610064578063ce70f39b146103e0578063d0496d6a14610400578063f2fde38b1461046f578063f98039191461048f578063fee99b22146104af57600080fd5b80638da5cb5b1461034f57806396e178521461036d578063a4444efd14610380578063a86f9d9e146103a0578063bac443e2146103c057600080fd5b80635817b0c3116100e75780635817b0c3146102ac5780635d0bd986146102da578063606b5b74146102fa5780636c6563f61461031a578063715018a61461033a57600080fd5b806319ab453c146101c8578063343b643c146101e85780633ab76e9f1461022d5780635075a9d41461025f578063540be6a31461028c57600080fd5b366101c3576101416a1d1bdad95b97dd985d5b1d60aa1b60016104cf565b6001600160a01b0316336001600160a01b03161415801561018c57506101766a195d1a195c97dd985d5b1d60aa1b60016104cf565b6001600160a01b0316336001600160a01b031614155b80156101a357506065546001600160a01b03163314155b156101c1576040516345dd044560e11b815260040160405180910390fd5b005b600080fd5b3480156101d457600080fd5b506101c16101e3366004612afc565b6104e5565b3480156101f457600080fd5b50610218610203366004612b19565b600090815260cd602052604090205460ff1690565b60405190151581526020015b60405180910390f35b34801561023957600080fd5b506097546001600160a01b03165b6040516001600160a01b039091168152602001610224565b34801561026b57600080fd5b5061027f61027a366004612b19565b6105fd565b6040516102249190612b6a565b34801561029857600080fd5b506102186102a7366004612b19565b610608565b3480156102b857600080fd5b506102cc6102c7366004612b91565b610614565b604051908152602001610224565b3480156102e657600080fd5b506102186102f5366004612b19565b610627565b34801561030657600080fd5b506102cc610315366004612b19565b61063a565b34801561032657600080fd5b50610247610335366004612bd3565b610645565b34801561034657600080fd5b506101c161065c565b34801561035b57600080fd5b506065546001600160a01b0316610247565b6102cc61037b366004612b91565b610670565b34801561038c57600080fd5b5061021861039b366004612c54565b61069e565b3480156103ac57600080fd5b506102476103bb366004612ca6565b6104cf565b3480156103cc57600080fd5b506101c16103db366004612cd6565b6106b6565b3480156103ec57600080fd5b506102186103fb366004612c54565b6106da565b34801561040c57600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260ca5480825260cb546001600160a01b0390811683860190815260cc549387019384528651928352511693810193909352519282019290925201610224565b34801561047b57600080fd5b506101c161048a366004612afc565b6106e9565b34801561049b57600080fd5b506101c16104aa366004612d3e565b610762565b3480156104bb57600080fd5b506101c16104ca366004612cd6565b610780565b60006104dc468484610796565b90505b92915050565b600054610100900460ff16158080156105055750600054600160ff909116105b8061051f5750303b15801561051f575060005460ff166001145b6105875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156105aa576000805461ff0019166101001790555b6105b3826108af565b80156105f9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006104df826108c8565b60006104df30836108f3565b60006104df61062283612e94565b6109d4565b60006106333083610a04565b5092915050565b60006104df82610a8d565b6000610652848484610796565b90505b9392505050565b610664610ac8565b61066e6000610b22565b565b600061067a610b74565b61068e60c93061068985612e94565b610bcd565b905061069960018055565b919050565b60006106ad3086868686610eae565b95945050505050565b6106be610b74565b6106cc60c930858585611011565b6106d560018055565b505050565b60006106ad3086868686611302565b6106f1610ac8565b6001600160a01b0381166107565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057e565b61075f81610b22565b50565b61076a610b74565b61077760c9308484611587565b6105f960018055565b610788610b74565b6106cc60c9308585856117bf565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa1580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b9190612f95565b905081610655576040516001600160a01b03821615159061087a90869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906108a75760405162461bcd60e51b815260040161057e9190613002565b509392505050565b6108b7611cbe565b6108bf611ced565b61075f81611d1c565b6000806108d483610a8d565b80549091508060038111156108eb576108eb612b32565b949350505050565b604051635437cecf60e11b81526000906001600160a01b0384169063a86f9d9e90610922908490600401613015565b602060405180830381865afa15801561093f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109639190612f95565b604051631933b5e360e11b8152306004820152602481018490526001600160a01b0391909116906332676bc690604401602060405180830381865afa1580156109b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc9190613037565b6000816040516020016109e79190613054565b604051602081830303815290604052805190602001209050919050565b600080836001600160a01b0316636c6563f68460016040518363ffffffff1660e01b8152600401610a3692919061314e565b602060405180830381865afa158015610a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a779190612f95565b6001600160a01b03811615159590945092505050565b60006040518060400160405280600e81526020016d4d4553534147455f53544154555360901b815250826040516020016109e792919061316d565b6065546001600160a01b0316331461066e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161057e565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260015403610bc65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161057e565b6002600155565b60808101516000906001600160a01b0316610bfb576040516301b1868360e71b815260040160405180910390fd5b600080610c0c858560600151610a04565b91509150811580610c205750468460600151145b15610c3e5760405163e822b48d60e01b815260040160405180910390fd5b60a08401516001600160a01b03161580610c6d5750806001600160a01b03168460a001516001600160a01b0316145b15610c8b5760405163b9ad6a0f60e01b815260040160405180910390fd5b60008461012001518561010001518660e00151610ca891906131a5565b610cb291906131a5565b9050348114610cd457604051632609a19760e21b815260040160405180910390fd5b604051635437cecf60e11b81526000906001600160a01b0388169063a86f9d9e90610d04906001906004016131b8565b602060405180830381865afa158015610d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d459190612f95565b9050610d5a6001600160a01b03821683611d65565b8754886000610d68836131d7565b909155508652336020870152466040870152610d83866109d4565b604051635437cecf60e11b81529095506001600160a01b0388169063a86f9d9e90610db390600090600401613015565b602060405180830381865afa158015610dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df49190612f95565b6001600160a01b03166366ca2bc0866040518263ffffffff1660e01b8152600401610e2191815260200190565b6020604051808303816000875af1158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6491906131f0565b50847f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f387604051610e959190613054565b60405180910390a2505050509392505050565b60018055565b600080866001600160a01b0316636c6563f68660006040518363ffffffff1660e01b8152600401610ee092919061314e565b602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f219190612f95565b604051635437cecf60e11b81529091506001600160a01b0388169063a86f9d9e90610f5190600090600401613015565b602060405180830381865afa158015610f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f929190612f95565b6001600160a01b0316635221f61386838988886040518663ffffffff1660e01b8152600401610fc5959493929190613209565b602060405180830381865afa158015610fe2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110069190613037565b979650505050505050565b600061102360a0850160808601612afc565b6001600160a01b03160361104a576040516301b1868360e71b815260040160405180910390fd5b4683604001351461106e5760405163e822b48d60e01b815260040160405180910390fd5b600061107c61062285612e94565b600081815260048801602052604090205490915060ff1615156001036110b55760405163afde133560e01b815260040160405180910390fd5b6110c6858286606001358686611302565b6110e35760405163498b0b1d60e01b815260040160405180910390fd5b60008181526004870160205260408120805460ff1916600117905561111161010086013560e08701356131a5565b905080156112a657604051635437cecf60e11b81526000906001600160a01b0388169063a86f9d9e90611149906001906004016131b8565b602060405180830381865afa158015611166573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118a9190612f95565b90506001600160a01b0381161561121f576001600160a01b03811663ba0bbd956111ba60a0890160808a01612afc565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b15801561120257600080fd5b505af1158015611216573d6000803e3d6000fd5b505050506112a4565b600061123160a0880160808901612afc565b6001600160a01b03168360405160006040518083038185875af1925050503d806000811461127b576040519150601f19603f3d011682016040523d82523d6000602084013e611280565b606091505b50509050806112a25760405163f6664cf160e01b815260040160405180910390fd5b505b505b817fea00c741e39d1d9ab1c6703152d71f9da09a782ed4ae128414730dadbb9bd8476112d860a0880160808901612afc565b604080516001600160a01b039092168252602082018590520160405180910390a250505050505050565b60004684036113245760405163e822b48d60e01b815260040160405180910390fd5b60008590036113465760405163a6407c9360e01b815260040160405180910390fd5b6000611354838501856132f3565b604051635437cecf60e11b8152647461696b6f60d81b60048201526000602482018190529192506001600160a01b0389169063a86f9d9e90604401602060405180830381865afa1580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d09190612f95565b8251610100015160405163a4e6775f60e01b81526001600160801b0390911660048201526001600160a01b03919091169063a4e6775f90602401602060405180830381865afa158015611427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144b91906131f0565b90508015806114645750815161146090611e1b565b8114155b15611474576000925050506106ad565b815160600151604051633632b1fb60e11b815273489Fc09698479ac665A7c91502acDB69A047Fe1a9163a5427462916001600160a01b038c1690636c6563f6906114c5908c9060009060040161314e565b602060405180830381865afa1580156114e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115069190612f95565b61150f8b610a8d565b602087015160405160e086901b6001600160e01b031916815261153a94939291600391600401613497565b602060405180830381865af4158015611557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157b9190613037565b98975050505050505050565b61014082013515806115965750805b156115dc576115ab60a0830160808401612afc565b6001600160a01b0316336001600160a01b0316146115dc5760405163d7f4fc9f60e01b815260040160405180910390fd5b60006115ea61062284612e94565b905060016115f7826108c8565b600381111561160857611608612b32565b1461162657604051631f6646b560e01b815260040160405180910390fd5b604051635437cecf60e11b81526000906001600160a01b0386169063a86f9d9e90611656906001906004016131b8565b602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190612f95565b90506001600160a01b0381161561170757604051630d73bb3d60e41b815261010085013560048201526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b1580156116ee57600080fd5b505af1158015611702573d6000803e3d6000fd5b505050505b6117138685845a611e40565b1561172857611723826002611f98565b6117b7565b821561179f57611739826003611f98565b60008061174c60e0870160c08801612afc565b6001600160a01b03161461176f5761176a60e0860160c08701612afc565b61177f565b61177f60a0860160808701612afc565b90506117996001600160a01b038216610100870135611d65565b506117b7565b6117b76001600160a01b038216610100860135611d65565b505050505050565b6101408301351580156117f357506117dd60a0840160808501612afc565b6001600160a01b0316336001600160a01b031614155b156118115760405163398b635960e21b815260040160405180910390fd5b468360600135146118355760405163e822b48d60e01b815260040160405180910390fd5b600061184361062285612e94565b90506000611850826108c8565b600381111561186157611861612b32565b1461187f57604051632c3b0c4b60e01b815260040160405180910390fd5b6000856001600160a01b0316636c6563f6866040013560006040518363ffffffff1660e01b81526004016118b492919061314e565b602060405180830381865afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f59190612f95565b604051635437cecf60e11b81529091506001600160a01b0387169063a86f9d9e9061192590600090600401613015565b602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119669190612f95565b6001600160a01b0316635221f6138660400135838588886040518663ffffffff1660e01b815260040161199d959493929190613209565b602060405180830381865afa1580156119ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119de9190613037565b6119fb576040516314504c7360e31b815260040160405180910390fd5b6000610120860135611a1661010088013560e08901356131a5565b611a2091906131a5565b90506000876001600160a01b031663a86f9d9e60016040518263ffffffff1660e01b8152600401611a5191906131b8565b602060405180830381865afa158015611a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a929190612f95565b90506001600160a01b03811615801590611aac5750600082115b15611b0c57604051630d73bb3d60e41b8152600481018390526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b158015611af357600080fd5b505af1158015611b07573d6000803e3d6000fd5b505050505b611b3360e0880135611b2460a08a0160808b01612afc565b6001600160a01b031690611d65565b60008030611b4760c08b0160a08c01612afc565b6001600160a01b03161480611b7457506000611b6960c08b0160a08c01612afc565b6001600160a01b0316145b15611b89575060029050610100880135611c00565b6000611b9b60a08b0160808c01612afc565b6001600160a01b0316336001600160a01b031614611bbe57896101400135611bc0565b5a5b90506000611bd08d8c8a85611e40565b90508015611be15760029350611bfd565b60019350611bfd6001600160a01b0386166101008d0135611d65565b50505b611c0a8683611f98565b600080611c1d60e08c0160c08d01612afc565b6001600160a01b031614611c4057611c3b60e08b0160c08c01612afc565b611c50565b611c5060a08b0160808c01612afc565b90506001600160a01b0381163303611c8e576000611c73836101208d01356131a5565b9050611c886001600160a01b03831682611d65565b50611cb0565b611c9d336101208c0135611d65565b611cb06001600160a01b03821683611d65565b505050505050505050505050565b600054610100900460ff16611ce55760405162461bcd60e51b815260040161057e906134ca565b61066e612011565b600054610100900460ff16611d145760405162461bcd60e51b815260040161057e906134ca565b61066e612038565b6001600160a01b038116611d4357604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b801580611d7957506001600160a01b038216155b15611d82575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dcf576040519150601f19603f3d011682016040523d82523d6000602084013e611dd4565b606091505b50509050806106d55760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161057e565b600080611e31611e2c846000612068565b612489565b80516020909101209392505050565b600081600003611e6357604051637f0e960960e11b815260040160405180910390fd5b6040518060600160405280848152602001856020016020810190611e879190612afc565b6001600160a01b039081168252604087810135602093840152835160018a0155918301516002890180546001600160a01b0319169190921617905501516003860155611ed960c0850160a08601612afc565b6001600160a01b031682610100860135611ef7610160880188613515565b604051611f0592919061355b565b600060405180830381858888f193505050503d8060008114611f43576040519150601f19603f3d011682016040523d82523d6000602084013e611f48565b606091505b505060408051606081018252600180825260208201819052600019919092018190528782018290556002880180546001600160a01b03191690921790915560039096019590955550929392505050565b806003811115611faa57611faa612b32565b611fb3836108c8565b6003811115611fc457611fc4612b32565b146105f957611fd382826124cd565b817f0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c823360405161200592919061356b565b60405180910390a25050565b600054610100900460ff16610ea85760405162461bcd60e51b815260040161057e906134ca565b600054610100900460ff1661205f5760405162461bcd60e51b815260040161057e906134ca565b61066e33610b22565b610200820151606090156120d3576120818260116131a5565b6001600160401b0381111561209857612098612d84565b6040519080825280602002602001820160405280156120cb57816020015b60608152602001906001900390816120b65790505b509050612142565b6101e0830151156120e9576120818260106131a5565b6120f482600f6131a5565b6001600160401b0381111561210b5761210b612d84565b60405190808252806020026020018201604052801561213e57816020015b60608152602001906001900390816121295790505b5090505b825161214d906124f6565b8160008151811061216057612160613591565b602002602001018190525061217883602001516124f6565b8160018151811061218b5761218b613591565b60200260200101819052506121a38360400151612509565b816002815181106121b6576121b6613591565b60200260200101819052506121ce83606001516124f6565b816003815181106121e1576121e1613591565b60200260200101819052506121f983608001516124f6565b8160048151811061220c5761220c613591565b60200260200101819052506122248360a001516124f6565b8160058151811061223757612237613591565b602002602001018190525061226e8360c0015160405160200161225a91906135a7565b604051602081830303815290604052612532565b8160068151811061228157612281613591565b60200260200101819052506122998360e001516125a1565b816007815181106122ac576122ac613591565b60200260200101819052506122ce8361010001516001600160801b03166125a1565b816008815181106122e1576122e1613591565b60200260200101819052506122fa8361012001516125af565b8160098151811061230d5761230d613591565b60200260200101819052506123268361014001516125af565b81600a8151811061233957612339613591565b60200260200101819052506123528361016001516125af565b81600b8151811061236557612365613591565b602002602001018190525061237e836101800151612532565b81600c8151811061239157612391613591565b60200260200101819052506123aa836101a001516124f6565b81600d815181106123bd576123bd613591565b60200260200101819052506123f4836101c0015160405160200161225a919060c09190911b6001600160c01b031916815260080190565b81600e8151811061240757612407613591565b6020026020010181905250826101e0015160001461244c5761242d836101e001516125a1565b81600f8151811061244057612440613591565b60200260200101819052505b610200830151156104df576124658361020001516124f6565b8160108151811061247857612478613591565b602002602001018190525092915050565b60606000612496836125c6565b90506124a4815160c06126fb565b816040516020016124b69291906135dc565b604051602081830303815290604052915050919050565b60006124d883610a8d565b905060008260038111156124ee576124ee612b32565b909155505050565b60606104df612504836128a3565b612532565b604051606082811b6bffffffffffffffffffffffff19166020830152906104df9060340161225a565b60608082516001148015612560575060808360008151811061255657612556613591565b016020015160f81c105b1561256c5750816104df565b612578835160806126fb565b8360405160200161258a9291906135dc565b604051602081830303815290604052905092915050565b60606104df61250483612955565b60606104df612504836001600160401b0316612955565b606081516000036125e7576040805160008082526020820190925290610633565b6000805b835181101561262c5783818151811061260657612606613591565b6020026020010151518261261a91906131a5565b9150612625816131d7565b90506125eb565b6000826001600160401b0381111561264657612646612d84565b6040519080825280601f01601f191660200182016040528015612670576020820181803683370190505b50600092509050602081015b85518310156126f257600086848151811061269957612699613591565b6020026020010151905060006020820190506126b783828451612a7f565b8785815181106126c9576126c9613591565b602002602001015151836126dd91906131a5565b92505050826126eb906131d7565b925061267c565b50949350505050565b60608060388410156127625760408051600180825281830190925290602082018180368337019050509050612730838561360b565b60f81b8160008151811061274657612746613591565b60200101906001600160f81b031916908160001a9053506104dc565b600060015b612771818761363a565b156127945761277f826131d7565b915061278d6101008261364e565b9050612767565b61279f8260016131a5565b6001600160401b038111156127b6576127b6612d84565b6040519080825280601f01601f1916602001820160405280156127e0576020820181803683370190505b5092506127ed858361360b565b6127f890603761360b565b60f81b8360008151811061280e5761280e613591565b60200101906001600160f81b031916908160001a905350600190505b81811161289a5761010061283e8284613665565b61284a9061010061375c565b612854908861363a565b61285e9190613768565b60f81b83828151811061287357612873613591565b60200101906001600160f81b031916908160001a905350612893816131d7565b905061282a565b50509392505050565b60606000826040516020016128ba91815260200190565b60408051808303601f1901815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156126f25783836128ff816131d7565b94508151811061291157612911613591565b602001015160f81c60f81b82828151811061292e5761292e613591565b60200101906001600160f81b031916908160001a90535061294e816131d7565b90506128eb565b606060008260405160200161296c91815260200190565b604051602081830303815290604052905060005b60208110156129c15781818151811061299b5761299b613591565b01602001516001600160f81b0319166000036129c1576129ba816131d7565b9050612980565b60006129ce826020613665565b6001600160401b038111156129e5576129e5612d84565b6040519080825280601f01601f191660200182016040528015612a0f576020820181803683370190505b50905060005b81518110156126f2578383612a29816131d7565b945081518110612a3b57612a3b613591565b602001015160f81c60f81b828281518110612a5857612a58613591565b60200101906001600160f81b031916908160001a905350612a78816131d7565b9050612a15565b8282825b60208110612abb5781518352612a9a6020846131a5565b9250612aa76020836131a5565b9150612ab4602082613665565b9050612a83565b905182516020929092036101000a6000190180199091169116179052505050565b6001600160a01b038116811461075f57600080fd5b803561069981612adc565b600060208284031215612b0e57600080fd5b81356104dc81612adc565b600060208284031215612b2b57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110612b6657634e487b7160e01b600052602160045260246000fd5b9052565b602081016104df8284612b48565b60006101a08284031215612b8b57600080fd5b50919050565b600060208284031215612ba357600080fd5b81356001600160401b03811115612bb957600080fd5b6108eb84828501612b78565b801515811461075f57600080fd5b600080600060608486031215612be857600080fd5b83359250602084013591506040840135612c0181612bc5565b809150509250925092565b60008083601f840112612c1e57600080fd5b5081356001600160401b03811115612c3557600080fd5b602083019150836020828501011115612c4d57600080fd5b9250929050565b60008060008060608587031215612c6a57600080fd5b843593506020850135925060408501356001600160401b03811115612c8e57600080fd5b612c9a87828801612c0c565b95989497509550505050565b60008060408385031215612cb957600080fd5b823591506020830135612ccb81612bc5565b809150509250929050565b600080600060408486031215612ceb57600080fd5b83356001600160401b0380821115612d0257600080fd5b612d0e87838801612b78565b94506020860135915080821115612d2457600080fd5b50612d3186828701612c0c565b9497909650939450505050565b60008060408385031215612d5157600080fd5b82356001600160401b03811115612d6757600080fd5b612d7385828601612b78565b9250506020830135612ccb81612bc5565b634e487b7160e01b600052604160045260246000fd5b6040516101a081016001600160401b0381118282101715612dbd57612dbd612d84565b60405290565b604080519081016001600160401b0381118282101715612dbd57612dbd612d84565b60405161022081016001600160401b0381118282101715612dbd57612dbd612d84565b600082601f830112612e1957600080fd5b81356001600160401b0380821115612e3357612e33612d84565b604051601f8301601f19908116603f01168101908282118183101715612e5b57612e5b612d84565b81604052838152866020858801011115612e7457600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006101a08236031215612ea757600080fd5b612eaf612d9a565b82358152612ebf60208401612af1565b60208201526040830135604082015260608301356060820152612ee460808401612af1565b6080820152612ef560a08401612af1565b60a0820152612f0660c08401612af1565b60c082015260e08381013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401356001600160401b0380821115612f5257600080fd5b612f5e36838801612e08565b83850152610180925082860135915080821115612f7a57600080fd5b50612f8736828701612e08565b918301919091525092915050565b600060208284031215612fa757600080fd5b81516104dc81612adc565b60005b83811015612fcd578181015183820152602001612fb5565b50506000910152565b60008151808452612fee816020860160208601612fb2565b601f01601f19169290920160200192915050565b6020815260006104dc6020830184612fd6565b6d7369676e616c5f7365727669636560901b8152901515602082015260400190565b60006020828403121561304957600080fd5b81516104dc81612bc5565b60208152815160208201526000602083015161307b60408401826001600160a01b03169052565b50604083015160608301526060830151608083015260808301516130aa60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526131286101c0860184612fd6565b90860151858203601f1901838701529092506131448382612fd6565b9695505050505050565b9182526562726964676560d01b60208301521515604082015260600190565b6000835161317f818460208801612fb2565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104df576104df61318f565b6a195d1a195c97dd985d5b1d60aa1b8152901515602082015260400190565b6000600182016131e9576131e961318f565b5060010190565b60006020828403121561320257600080fd5b5051919050565b8581526001600160a01b0385166020820152604081018490526080606082018190528101829052818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600082601f83011261326957600080fd5b6040516101008082018281106001600160401b038211171561328d5761328d612d84565b604052830181858211156132a057600080fd5b845b828110156132ba5780358252602091820191016132a2565b509195945050505050565b80356001600160801b038116811461069957600080fd5b80356001600160401b038116811461069957600080fd5b60006020828403121561330557600080fd5b81356001600160401b038082111561331c57600080fd5b908301906040828603121561333057600080fd5b613338612dc3565b82358281111561334757600080fd5b8301610300818803121561335a57600080fd5b613362612de5565b813581526020820135602082015261337c60408301612af1565b6040820152606082013560608201526080820135608082015260a082013560a08201526133ac8860c08401613258565b60c08201526101c08083013560e08301526101e06133cb8185016132c5565b6101008401526102006133df8186016132dc565b6101208501526133f261022086016132dc565b61014085015261340561024086016132dc565b6101608501526102608501358781111561341e57600080fd5b61342a8c828801612e08565b610180860152506102808501356101a085015261344a6102a086016132dc565b838501526102c0850135828501526102e085013581850152505050808352505060208301358281111561347c57600080fd5b61348887828601612e08565b60208301525095945050505050565b85815260018060a01b038516602082015283604082015282606082015260a06080820152600061100660a0830184612fd6565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000808335601e1984360301811261352c57600080fd5b8301803591506001600160401b0382111561354657600080fd5b602001915036819003821315612c4d57600080fd5b8183823760009101908152919050565b604081016135798285612b48565b6001600160a01b039290921660209190910152919050565b634e487b7160e01b600052603260045260246000fd5b60008183825b60088110156135cc5781518352602092830192909101906001016135ad565b5050506101008201905092915050565b600083516135ee818460208801612fb2565b835190830190613602818360208801612fb2565b01949350505050565b60ff81811683821601908111156104df576104df61318f565b634e487b7160e01b600052601260045260246000fd5b60008261364957613649613624565b500490565b80820281158282048414176104df576104df61318f565b818103818111156104df576104df61318f565b600181815b808511156136b35781600019048211156136995761369961318f565b808516156136a657918102915b93841c939080029061367d565b509250929050565b6000826136ca575060016104df565b816136d7575060006104df565b81600181146136ed57600281146136f757613713565b60019150506104df565b60ff8411156137085761370861318f565b50506001821b6104df565b5060208310610133831016604e8410600b8410161715613736575081810a6104df565b6137408383613678565b80600019048211156137545761375461318f565b029392505050565b60006104dc83836136bb565b60008261377757613777613624565b50069056fea2646970667358221220a70ee933460e41a88f216dfd1674a60c80f927399609a17eb10609f3d1aa52da64736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000002": { @@ -90,7 +90,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" }, - "code": "0x6080604052600436106100dd5760003560e01c8063780b64f01161007f5780639aa8605c116100595780639aa8605c14610292578063c287e578146102c3578063ee1490b214610303578063f2fde38b1461031657600080fd5b8063780b64f0146101f55780638da5cb5b146102545780639754149b1461027257600080fd5b80631be2bfa7116100bb5780631be2bfa7146101615780633ab76e9f1461018157806367090ccf1461019f578063715018a6146101e057600080fd5b80630c6fab82146100e25780630ca4dffd1461010457806319ab453c14610141575b600080fd5b3480156100ee57600080fd5b506101026100fd366004611fd3565b610336565b005b34801561011057600080fd5b5061012461011f366004612112565b610577565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014d57600080fd5b5061010261015c366004612163565b61058d565b34801561016d57600080fd5b5061012461017c366004612180565b6106a5565b34801561018d57600080fd5b506097546001600160a01b0316610124565b3480156101ab57600080fd5b506101246101ba3660046121da565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b3480156101ec57600080fd5b506101026106bc565b34801561020157600080fd5b506102356102103660046121ff565b60cc60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610138565b34801561026057600080fd5b506065546001600160a01b0316610124565b34801561027e57600080fd5b5061010261028d366004612218565b6106d0565b34801561029e57600080fd5b506102b26102ad366004612163565b610a33565b604051610138959493929190612307565b3480156102cf57600080fd5b506102f36102de366004612163565b60c96020526000908152604090205460ff1681565b6040519015158152602001610138565b610102610311366004612358565b610b84565b34801561032257600080fd5b50610102610331366004612163565b6113f3565b61033e61146c565b6040518060400160405280600681526020016562726964676560d01b815250610368816000610577565b6001600160a01b0316336001600160a01b03161461039957604051630d85cccf60e11b815260040160405180910390fd5b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fd91906123f3565b905061043281604001516040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060006106a5565b6001600160a01b031681602001516001600160a01b031614610467576040516320258b8760e21b815260040160405180910390fd5b60004687350361049c576104816040880160208901612163565b90506104976001600160a01b03821686866114c5565b61050c565b6104a587611528565b6040516342e91bb360e01b81526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b1580156104f357600080fd5b505af1158015610507573d6000803e3d6000fd5b505050505b815160408084015181519081526001600160a01b0384811660208301529181018790528188169291891691907fe5da926519fc972010fe65b35c1e3339e6dc72b35ffaec203999c2a2a2593eac9060600160405180910390a450505061057160018055565b50505050565b6000610584468484611587565b90505b92915050565b600054610100900460ff16158080156105ad5750600054600160ff909116105b806105c75750303b1580156105c7575060005460ff166001145b61062f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610652576000805461ff0019166101001790555b61065b82611657565b80156106a1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006106b2848484611587565b90505b9392505050565b6106c4611670565b6106ce60006116ca565b565b6106d861146c565b60006106ea60a0850160808601612163565b6001600160a01b031603610711576040516372b41cdf60e01b815260040160405180910390fd5b46836040013514610735576040516348bc100560e01b815260040160405180910390fd5b60006107606040518060400160405280600681526020016562726964676560d01b8152506000610577565b90506000816001600160a01b0316635817b0c3866040518263ffffffff1660e01b815260040161079091906124c9565b602060405180830381865afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906125e7565b600081815260cc6020526040902080546001909101549192506001600160a01b0316908161081257604051637c6addb760e01b815260040160405180910390fd5b60405163ce70f39b60e01b81526001600160a01b0385169063ce70f39b9061084890869060608c0135908b908b90600401612600565b602060405180830381865afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610889919061262a565b6108a6576040516308ba49e560e31b815260040160405180910390fd5b6040805180820182526000808252602080830182815287835260cc909152929020905181546001600160a01b0319166001600160a01b03909116178155905160019091015580156109ba576001600160a01b038216600090815260c9602052604090205460ff1615610996576001600160a01b0382166342e91bb361093160a08a0160808b01612163565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b505050506109ba565b6109ba6109a960a0890160808a01612163565b6001600160a01b03841690836114c5565b6109ca60a0880160808901612163565b6001600160a01b0316837fc5d9f7cd7998e24ecf12ad69eca9339764e2cb13788d5d9616f502601b219af68484604051610a199291906001600160a01b03929092168252602082015260400190565b60405180910390a350505050610a2e60018055565b505050565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b03831693600160a01b90930460ff1692909190610a7390612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f90612647565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b505050505090806003018054610b0190612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90612647565b8015610b7a5780601f10610b4f57610100808354040283529160200191610b7a565b820191906000526020600020905b815481529060010190602001808311610b5d57829003601f168201915b5050505050905085565b610b8c61146c565b6001600160a01b0387161580610be15750610bcc886040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060006106a5565b6001600160a01b0316876001600160a01b0316145b15610bff57604051634694641b60e01b815260040160405180910390fd5b6001600160a01b038616610c2657604051637c6addb760e01b815260040160405180910390fd5b84600003610c465760405162af849960e11b815260040160405180910390fd5b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff1615610e9d57604051630ef7c31560e31b8152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b158015610cd957600080fd5b505af1158015610ced573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a08101845281548152600182015494851692810192909252600160a01b90930460ff1691810191909152600282018054919291606084019190610d5390612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7f90612647565b8015610dcc5780601f10610da157610100808354040283529160200191610dcc565b820191906000526020600020905b815481529060010190602001808311610daf57829003601f168201915b50505050508152602001600382018054610de590612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1190612647565b8015610e5e5780601f10610e3357610100808354040283529160200191610e5e565b820191906000526020600020905b815481529060010190602001808311610e4157829003601f168201915b5050509190925250505060208101519092506001600160a01b0316610e9657604051633e45a03560e21b815260040160405180910390fd5b50856110fd565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f249190612690565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f6a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9291908101906126ad565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ffd91908101906126ad565b90526040516370a0823160e01b81523060048201529093506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d91906125e7565b90506110846001600160a01b03831633308c61171c565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee91906125e7565b6110f89190612723565b925050505b61118c604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015260408051808201909152600b81526a1d1bdad95b97dd985d5b1d60aa1b60208201526111c8908c9060006106a5565b6001600160a01b031660a08201526080810151604051630637d5c160e11b916111fa918691908e908790602401612744565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526101608201526101408101879052610120810186905261124c8634612723565b60e08201526001600160a01b03851660c0820152610180810184905260408051808201909152600681526562726964676560d01b60208201526000906112929082610577565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b81526004016112be91906127dc565b60206040518083038185885af11580156112dc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061130191906125e7565b905060405180604001604052808b6001600160a01b031681526020018481525060cc600083815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101559050508a6001600160a01b031682608001516001600160a01b0316827f325cab7553038374e17f39bb45e2a2c90f66c6a52798cb5f95c20d94c11c95e28f8e886040516113d4939291909283526001600160a01b03919091166020830152604082015260600190565b60405180910390a4505050506113e960018055565b5050505050505050565b6113fb611670565b6001600160a01b0381166114605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610626565b611469816116ca565b50565b6002600154036114be5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610626565b6002600155565b6040516001600160a01b038316602482015260448101829052610a2e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611754565b8035600090815260cb6020908152604080832083929091839161154f918701908701612163565b6001600160a01b039081168252602082019290925260400160002054169050806105875761157c83611826565b6106b5565b60018055565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906115ba90879087906004016128cc565b602060405180830381865afa1580156115d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fb91906128e5565b9050816106b5576040516001600160a01b0382161515906116229086908690602001612902565b6040516020818303038152906040529061164f5760405162461bcd60e51b81526004016106269190612957565b509392505050565b61165f611aab565b611667611ada565b61146981611b09565b6065546001600160a01b031633146106ce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610626565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526105719085906323b872dd60e01b906084016114f1565b60006117a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b529092919063ffffffff16565b805190915015610a2e57808060200190518101906117c7919061262a565b610a2e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610626565b600061189f81833561183e6040860160208701612163565b60405161186192916001600160a01b031690602001918252602082015260400190565b604051602081830303815290604052805190602001206040518060200161188790611fa1565b601f1982820381018352601f90910116604052611b61565b6097549091506001600160a01b0380831691636c0db62b91166118c86040860160208701612163565b85356118da606088016040890161296a565b6118e76060890189612987565b6118f460808b018b612987565b6118fe8c35611c65565b604051602001611910939291906129cd565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016119419796959493929190612a16565b600060405180830381600087803b15801561195b57600080fd5b505af115801561196f573d6000803e3d6000fd5b5050506001600160a01b038216600090815260c960209081526040808320805460ff1916600117905560ca90915290208391506119ac8282612b81565b50508135600090815260cb602090815260408083208493909290916119d691908701908701612163565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316826020016020810190611a379190612163565b6001600160a01b031683357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc611a706060870187612987565b611a7d6080890189612987565b611a8d60608b0160408c0161296a565b604051611a9e959493929190612c08565b60405180910390a4919050565b600054610100900460ff16611ad25760405162461bcd60e51b815260040161062690612c45565b6106ce611cf7565b600054610100900460ff16611b015760405162461bcd60e51b815260040161062690612c45565b6106ce611d1e565b6001600160a01b038116611b3057604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60606106b28484600085611d4e565b600083471015611bb35760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610626565b8151600003611c045760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610626565b8282516020840186f590506001600160a01b0381166106b55760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610626565b60606000611c7283611e2b565b60010190506000816001600160401b03811115611c9157611c91612041565b6040519080825280601f01601f191660200182016040528015611cbb576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611cc557509392505050565b600054610100900460ff166115815760405162461bcd60e51b815260040161062690612c45565b600054610100900460ff16611d455760405162461bcd60e51b815260040161062690612c45565b6106ce336116ca565b606082471015611daf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610626565b600080866001600160a01b03168587604051611dcb9190612c90565b60006040518083038185875af1925050503d8060008114611e08576040519150601f19603f3d011682016040523d82523d6000602084013e611e0d565b606091505b5091509150611e1e87838387611f03565b925050505b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e6a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611e96576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611eb457662386f26fc10000830492506010015b6305f5e1008310611ecc576305f5e100830492506008015b6127108310611ee057612710830492506004015b60648310611ef2576064830492506002015b600a83106105875760010192915050565b60608315611f72578251600003611f6b576001600160a01b0385163b611f6b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610626565b5081611e23565b611e238383815115611f875781518083602001fd5b8060405162461bcd60e51b81526004016106269190612957565b61179b80612cad83390190565b6001600160a01b038116811461146957600080fd5b8035611fce81611fae565b919050565b60008060008060808587031215611fe957600080fd5b84356001600160401b03811115611fff57600080fd5b850160a0818803121561201157600080fd5b9350602085013561202181611fae565b9250604085013561203181611fae565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561207f5761207f612041565b604052919050565b60006001600160401b038211156120a0576120a0612041565b50601f01601f191660200190565b600082601f8301126120bf57600080fd5b81356120d26120cd82612087565b612057565b8181528460208386010111156120e757600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461146957600080fd5b6000806040838503121561212557600080fd5b82356001600160401b0381111561213b57600080fd5b612147858286016120ae565b925050602083013561215881612104565b809150509250929050565b60006020828403121561217557600080fd5b81356106b581611fae565b60008060006060848603121561219557600080fd5b8335925060208401356001600160401b038111156121b257600080fd5b6121be868287016120ae565b92505060408401356121cf81612104565b809150509250925092565b600080604083850312156121ed57600080fd5b82359150602083013561215881611fae565b60006020828403121561221157600080fd5b5035919050565b60008060006040848603121561222d57600080fd5b83356001600160401b038082111561224457600080fd5b908501906101a0828803121561225957600080fd5b9093506020850135908082111561226f57600080fd5b818601915086601f83011261228357600080fd5b81358181111561229257600080fd5b8760208285010111156122a457600080fd5b6020830194508093505050509250925092565b60005b838110156122d25781810151838201526020016122ba565b50506000910152565b600081518084526122f38160208601602086016122b7565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a06060820181905260009061233a908301856122db565b828103608084015261234c81856122db565b98975050505050505050565b600080600080600080600080610100898b03121561237557600080fd5b88359750602089013561238781611fae565b9650604089013561239781611fae565b9550606089013594506080890135935060a0890135925060c08901356123bc81611fae565b915060e08901356001600160401b038111156123d757600080fd5b6123e38b828c016120ae565b9150509295985092959890939650565b60006060828403121561240557600080fd5b604051606081018181106001600160401b038211171561242757612427612041565b60405282518152602083015161243c81611fae565b60208201526040928301519281019290925250919050565b6000808335601e1984360301811261246b57600080fd5b83016020810192503590506001600160401b0381111561248a57600080fd5b80360382131561249957600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081528135602082015260006124e260208401611fc3565b6001600160a01b038116604084015250604083013560608301526060830135608083015261251260808401611fc3565b6001600160a01b03811660a08401525061252e60a08401611fc3565b6001600160a01b03811660c08401525061254a60c08401611fc3565b6001600160a01b03811660e08401525061010060e08401358184015261012081850135818501526101409150808501358285015250610160818501358185015261259681860186612454565b925090506101a061018081818701526125b46101c0870185856124a0565b93506125c281880188612454565b878603601f190184890152935090506125dc8484836124a0565b979650505050505050565b6000602082840312156125f957600080fd5b5051919050565b8481528360208201526060604082015260006126206060830184866124a0565b9695505050505050565b60006020828403121561263c57600080fd5b81516106b581612104565b600181811c9082168061265b57607f821691505b60208210810361267b57634e487b7160e01b600052602260045260246000fd5b50919050565b60ff8116811461146957600080fd5b6000602082840312156126a257600080fd5b81516106b581612681565b6000602082840312156126bf57600080fd5b81516001600160401b038111156126d557600080fd5b8201601f810184136126e657600080fd5b80516126f46120cd82612087565b81815285602083850101111561270957600080fd5b61271a8260208301602086016122b7565b95945050505050565b8181038181111561058757634e487b7160e01b600052601160045260246000fd5b60808152845160808201526000602086015160018060a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e085015261278e6101208501836122db565b91506080880151607f19858403016101008601526127ac83826122db565b9188166020860152506001600160a01b038616604085015291506127cd9050565b82606083015295945050505050565b60208152815160208201526000602083015161280360408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161283260a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526128b06101c08601846122db565b90860151858203601f19018387015290925061262083826122db565b8281526040602082015260006106b260408301846122db565b6000602082840312156128f757600080fd5b81516106b581611fae565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e0820152600061010080606084015261271a818401856122db565b60208152600061058460208301846122db565b60006020828403121561297c57600080fd5b81356106b581612681565b6000808335601e1984360301811261299e57600080fd5b8301803591506001600160401b038211156129b857600080fd5b60200191503681900382131561249957600080fd5b8284823760008382016b050c4e4d2c8cecac9e13f19160a31b815283516129fb81600c8401602088016122b7565b602960f81b600c9290910191820152600d0195945050505050565b6001600160a01b038881168252871660208201526040810186905260ff8516606082015260c060808201819052600090612a5390830185876124a0565b82810360a0840152612a6581856122db565b9a9950505050505050505050565b601f821115610a2e57600081815260208120601f850160051c81016020861015612a9a5750805b601f850160051c820191505b81811015612ab957828155600101612aa6565b505050505050565b6001600160401b03831115612ad857612ad8612041565b612aec83612ae68354612647565b83612a73565b6000601f841160018114612b205760008515612b085750838201355b600019600387901b1c1916600186901b178355612b7a565b600083815260209020601f19861690835b82811015612b515786850135825560209485019460019092019101612b31565b5086821015612b6e5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135612b9781611fae565b81546040850135612ba781612681565b60ff60a01b60a09190911b166001600160a01b03929092166001600160a81b03199190911617179055612bdd6060830183612987565b612beb818360028601612ac1565b5050612bfa6080830183612987565b610571818360038601612ac1565b606081526000612c1c6060830187896124a0565b8281036020840152612c2f8186886124a0565b91505060ff831660408301529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251612ca28184602087016122b7565b919091019291505056fe608060405234801561001057600080fd5b5061177b806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806367e828bf116100c35780638da5cb5b1161007c5780638da5cb5b146102ed57806395d89b41146102fe578063a457c2d714610306578063a9059cbb14610319578063dd62ed3e1461032c578063f2fde38b1461036557600080fd5b806367e828bf1461024d5780636c0db62b1461028357806370a0823114610296578063715018a6146102bf57806377be18a8146102c75780637cf8ed0d146102da57600080fd5b806323b872dd1161011557806323b872dd146101e3578063313ce567146101f6578063395093511461020b5780633ab76e9f1461021e57806342e91bb31461022f57806349d126051461024457600080fd5b806306fdde0314610152578063095ea7b3146101705780630ca4dffd1461019357806318160ddd146101be5780631be2bfa7146101d0575b600080fd5b61015a610378565b60405161016791906111f0565b60405180910390f35b61018361017e366004611218565b61040a565b6040519015158152602001610167565b6101a66101a13660046112fc565b610424565b6040516001600160a01b039091168152602001610167565b60cb545b604051908152602001610167565b6101a66101de36600461134a565b610438565b6101836101f13660046113a1565b61044d565b60ce5460405160ff9091168152602001610167565b610183610219366004611218565b610483565b6097546001600160a01b03166101a6565b61024261023d366004611218565b6104c2565b005b6101c260fc5481565b61026460fb5460fc546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610167565b6102426102913660046113e2565b610574565b6101c26102a436600461148c565b6001600160a01b0316600090815260c9602052604090205490565b61024261070c565b6102426102d5366004611218565b610720565b60fb546101a6906001600160a01b031681565b6065546001600160a01b03166101a6565b61015a6107c5565b610183610314366004611218565b6107d4565b610183610327366004611218565b610871565b6101c261033a3660046114a9565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b61024261037336600461148c565b6108a6565b606060cc8054610387906114e2565b80601f01602080910402602001604051908101604052809291908181526020018280546103b3906114e2565b80156104005780601f106103d557610100808354040283529160200191610400565b820191906000526020600020905b8154815290600101906020018083116103e357829003601f168201915b5050505050905090565b60003361041881858561091f565b60019150505b92915050565b6000610431468484610a43565b9392505050565b6000610445848484610a43565b949350505050565b6000306001600160a01b03841603610478576040516319a6f37760e21b815260040160405180910390fd5b610445848484610b13565b33600081815260ca602090815260408083206001600160a01b038716845290915281205490919061041890829086906104bd908790611532565b61091f565b6040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b8152506104f1816000610424565b6001600160a01b0316336001600160a01b03161461052257604051630d85cccf60e11b815260040160405180910390fd5b61052c8383610b2c565b826001600160a01b03167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa68360405161056791815260200190565b60405180910390a2505050565b600054610100900460ff16158080156105945750600054600160ff909116105b806105ae5750303b1580156105ae575060005460ff166001145b6106165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610639576000805461ff0019166101001790555b6001600160a01b038616158061064d575084155b8061065757504685145b8061066157508251155b8061066b57508151155b15610689576040516301e25ab360e71b815260040160405180910390fd5b61069287610bd0565b61069d828486610be9565b60fb80546001600160a01b0319166001600160a01b03881617905560fc8590558015610703576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610714610c20565b61071e6000610c7a565b565b6040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525061074f816000610424565b6001600160a01b0316336001600160a01b03161461078057604051630d85cccf60e11b815260040160405180910390fd5b61078a8383610ccc565b826001600160a01b03167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d76545265538360405161056791815260200190565b606060cd8054610387906114e2565b33600081815260ca602090815260408083206001600160a01b0387168452909152812054909190838110156108595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161060d565b610866828686840361091f565b506001949350505050565b6000306001600160a01b0384160361089c576040516319a6f37760e21b815260040160405180910390fd5b6104318383610ddf565b6108ae610c20565b6001600160a01b0381166109135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b61091c81610c7a565b50565b6001600160a01b0383166109815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6001600160a01b0382166109e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060d565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b609754604051631083571360e31b81526000916001600160a01b03169063841ab89890610a769087908790600401611545565b602060405180830381865afa158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab7919061155e565b905081610431576040516001600160a01b038216151590610ade908690869060200161157b565b60405160208183030381529060405290610b0b5760405162461bcd60e51b815260040161060d91906111f0565b509392505050565b600033610b21858285610ded565b610866858585610e7f565b6001600160a01b038216610b825760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161060d565b8060cb6000828254610b949190611532565b90915550506001600160a01b038216600090815260c9602052604081208054839290610bc1908490611532565b90915550610bcc9050565b5050565b610bd861104d565b610be061107c565b61091c816110ab565b600054610100900460ff16610c105760405162461bcd60e51b815260040161060d906115d9565b610c1b8383836110f4565b505050565b6065546001600160a01b0316331461071e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610d2c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161060d565b6001600160a01b038216600090815260c9602052604090205481811015610da05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161060d565b6001600160a01b038316600090815260c960205260408120838303905560cb8054849290610dcf908490611624565b90915550610c1b90508360008483565b600033610418818585610e7f565b6001600160a01b03838116600090815260ca60209081526040808320938616835292905220546000198114610e795781811015610e6c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b610e79848484840361091f565b50505050565b6001600160a01b038316610ee35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060d565b6001600160a01b038216610f455760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060d565b6001600160a01b038316600090815260c9602052604090205481811015610fbd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060d565b6001600160a01b03808516600090815260c96020526040808220858503905591851681529081208054849290610ff4908490611532565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161104091815260200190565b60405180910390a3610e79565b600054610100900460ff166110745760405162461bcd60e51b815260040161060d906115d9565b61071e61114d565b600054610100900460ff166110a35760405162461bcd60e51b815260040161060d906115d9565b61071e61117a565b6001600160a01b0381166110d257604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661111b5760405162461bcd60e51b815260040161060d906115d9565b60cc6111278482611685565b5060cd6111348382611685565b5060ce805460ff191660ff929092169190911790555050565b600054610100900460ff166111745760405162461bcd60e51b815260040161060d906115d9565b60018055565b600054610100900460ff166111a15760405162461bcd60e51b815260040161060d906115d9565b61071e33610c7a565b6000815180845260005b818110156111d0576020818501810151868301820152016111b4565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061043160208301846111aa565b6001600160a01b038116811461091c57600080fd5b6000806040838503121561122b57600080fd5b823561123681611203565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261126b57600080fd5b813567ffffffffffffffff8082111561128657611286611244565b604051601f8301601f19908116603f011681019082821181831017156112ae576112ae611244565b816040528381528660208588010111156112c757600080fd5b836020870160208301376000602085830101528094505050505092915050565b803580151581146112f757600080fd5b919050565b6000806040838503121561130f57600080fd5b823567ffffffffffffffff81111561132657600080fd5b6113328582860161125a565b925050611341602084016112e7565b90509250929050565b60008060006060848603121561135f57600080fd5b83359250602084013567ffffffffffffffff81111561137d57600080fd5b6113898682870161125a565b925050611398604085016112e7565b90509250925092565b6000806000606084860312156113b657600080fd5b83356113c181611203565b925060208401356113d181611203565b929592945050506040919091013590565b60008060008060008060c087890312156113fb57600080fd5b863561140681611203565b9550602087013561141681611203565b945060408701359350606087013560ff8116811461143357600080fd5b9250608087013567ffffffffffffffff8082111561145057600080fd5b61145c8a838b0161125a565b935060a089013591508082111561147257600080fd5b5061147f89828a0161125a565b9150509295509295509295565b60006020828403121561149e57600080fd5b813561043181611203565b600080604083850312156114bc57600080fd5b82356114c781611203565b915060208301356114d781611203565b809150509250929050565b600181811c908216806114f657607f821691505b60208210810361151657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561041e5761041e61151c565b82815260406020820152600061044560408301846111aa565b60006020828403121561157057600080fd5b815161043181611203565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e082015260006101008060608401526115d0818401856111aa565b95945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8181038181111561041e5761041e61151c565b601f821115610c1b57600081815260208120601f850160051c8101602086101561165e5750805b601f850160051c820191505b8181101561167d5782815560010161166a565b505050505050565b815167ffffffffffffffff81111561169f5761169f611244565b6116b3816116ad84546114e2565b84611637565b602080601f8311600181146116e857600084156116d05750858301515b600019600386901b1c1916600185901b17855561167d565b600085815260208120601f198616915b82811015611717578886015182559484019460019091019084016116f8565b50858210156117355787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220ca76596b3503f05be2b029bd48d6388ebec4ff9261948cac40d64bcced6ea6ae64736f6c63430008120033a2646970667358221220fd0fe1c995d0ba66857bfae11cff691723308c222d75d146fb0695825748cae564736f6c63430008120033", + "code": "0x6080604052600436106100dd5760003560e01c80638da5cb5b1161007f578063a86f9d9e11610059578063a86f9d9e1461029f578063c287e578146102bf578063ee1490b2146102ff578063f2fde38b1461031257600080fd5b80638da5cb5b146102305780639754149b1461024e5780639aa8605c1461026e57600080fd5b806367090ccf116100bb57806367090ccf1461015b5780636c6563f61461019c578063715018a6146101bc578063780b64f0146101d157600080fd5b80630c6fab82146100e257806319ab453c146101045780633ab76e9f14610124575b600080fd5b3480156100ee57600080fd5b506101026100fd366004611f9b565b610332565b005b34801561011057600080fd5b5061010261011f36600461200a565b610549565b34801561013057600080fd5b506097546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016757600080fd5b5061013e610176366004612027565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b3480156101a857600080fd5b5061013e6101b7366004612065565b610661565b3480156101c857600080fd5b50610102610678565b3480156101dd57600080fd5b506102116101ec36600461209e565b60cc60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610152565b34801561023c57600080fd5b506065546001600160a01b031661013e565b34801561025a57600080fd5b506101026102693660046120b7565b61068c565b34801561027a57600080fd5b5061028e61028936600461200a565b6109da565b6040516101529594939291906121a7565b3480156102ab57600080fd5b5061013e6102ba3660046121f8565b610b2b565b3480156102cb57600080fd5b506102ef6102da36600461200a565b60c96020526000908152604090205460ff1681565b6040519015158152602001610152565b61010261030d36600461228c565b610b41565b34801561031e57600080fd5b5061010261032d36600461200a565b611371565b61033a6113ea565b6562726964676560d01b61034f816000610b2b565b6001600160a01b0316336001600160a01b03161461038057604051630d85cccf60e11b815260040160405180910390fd5b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e4919061236b565b905061040481604001516a1d1bdad95b97dd985d5b1d60aa1b6000610661565b6001600160a01b031681602001516001600160a01b031614610439576040516320258b8760e21b815260040160405180910390fd5b60004687350361046e57610453604088016020890161200a565b90506104696001600160a01b0382168686611443565b6104de565b610477876114a6565b6040516342e91bb360e01b81526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b1580156104c557600080fd5b505af11580156104d9573d6000803e3d6000fd5b505050505b815160408084015181519081526001600160a01b0384811660208301529181018790528188169291891691907fe5da926519fc972010fe65b35c1e3339e6dc72b35ffaec203999c2a2a2593eac9060600160405180910390a450505061054360018055565b50505050565b600054610100900460ff16158080156105695750600054600160ff909116105b806105835750303b158015610583575060005460ff166001145b6105eb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561060e576000805461ff0019166101001790555b61061782611505565b801561065d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600061066e84848461151e565b90505b9392505050565b610680611637565b61068a6000611691565b565b6106946113ea565b60006106a660a085016080860161200a565b6001600160a01b0316036106cd576040516372b41cdf60e01b815260040160405180910390fd5b468360400135146106f1576040516348bc100560e01b815260040160405180910390fd5b60006107076562726964676560d01b6000610b2b565b90506000816001600160a01b0316635817b0c3866040518263ffffffff1660e01b81526004016107379190612443565b602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107789190612561565b600081815260cc6020526040902080546001909101549192506001600160a01b031690816107b957604051637c6addb760e01b815260040160405180910390fd5b60405163ce70f39b60e01b81526001600160a01b0385169063ce70f39b906107ef90869060608c0135908b908b9060040161257a565b602060405180830381865afa15801561080c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083091906125a4565b61084d576040516308ba49e560e31b815260040160405180910390fd5b6040805180820182526000808252602080830182815287835260cc909152929020905181546001600160a01b0319166001600160a01b0390911617815590516001909101558015610961576001600160a01b038216600090815260c9602052604090205460ff161561093d576001600160a01b0382166342e91bb36108d860a08a0160808b0161200a565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b15801561092057600080fd5b505af1158015610934573d6000803e3d6000fd5b50505050610961565b61096161095060a0890160808a0161200a565b6001600160a01b0384169083611443565b61097160a088016080890161200a565b6001600160a01b0316837fc5d9f7cd7998e24ecf12ad69eca9339764e2cb13788d5d9616f502601b219af684846040516109c09291906001600160a01b03929092168252602082015260400190565b60405180910390a3505050506109d560018055565b505050565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b03831693600160a01b90930460ff1692909190610a1a906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a46906125c1565b8015610a935780601f10610a6857610100808354040283529160200191610a93565b820191906000526020600020905b815481529060010190602001808311610a7657829003601f168201915b505050505090806003018054610aa8906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad4906125c1565b8015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b5050505050905085565b6000610b3846848461151e565b90505b92915050565b610b496113ea565b6001600160a01b0387161580610b895750610b74886a1d1bdad95b97dd985d5b1d60aa1b6000610661565b6001600160a01b0316876001600160a01b0316145b15610ba757604051634694641b60e01b815260040160405180910390fd5b6001600160a01b038616610bce57604051637c6addb760e01b815260040160405180910390fd5b84600003610bee5760405162af849960e11b815260040160405180910390fd5b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff1615610e4557604051630ef7c31560e31b8152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a08101845281548152600182015494851692810192909252600160a01b90930460ff1691810191909152600282018054919291606084019190610cfb906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610d27906125c1565b8015610d745780601f10610d4957610100808354040283529160200191610d74565b820191906000526020600020905b815481529060010190602001808311610d5757829003601f168201915b50505050508152602001600382018054610d8d906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610db9906125c1565b8015610e065780601f10610ddb57610100808354040283529160200191610e06565b820191906000526020600020905b815481529060010190602001808311610de957829003601f168201915b5050509190925250505060208101519092506001600160a01b0316610e3e57604051633e45a03560e21b815260040160405180910390fd5b50856110a5565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc919061260a565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f3a9190810190612627565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fa59190810190612627565b90526040516370a0823160e01b81523060048201529093506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ff1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110159190612561565b905061102c6001600160a01b03831633308c6116e3565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110969190612561565b6110a0919061269e565b925050505b611134604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015261115b8b6a1d1bdad95b97dd985d5b1d60aa1b6000610661565b6001600160a01b031660a08201526080810151604051630637d5c160e11b9161118d918691908e9087906024016126bf565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610160820152610140810187905261012081018690526111df863461269e565b60e08201526001600160a01b03851660c0820152610180810184905260006112106562726964676560d01b82610b2b565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b815260040161123c9190612757565b60206040518083038185885af115801561125a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061127f9190612561565b905060405180604001604052808b6001600160a01b031681526020018481525060cc600083815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101559050508a6001600160a01b031682608001516001600160a01b0316827f325cab7553038374e17f39bb45e2a2c90f66c6a52798cb5f95c20d94c11c95e28f8e88604051611352939291909283526001600160a01b03919091166020830152604082015260600190565b60405180910390a45050505061136760018055565b5050505050505050565b611379611637565b6001600160a01b0381166113de5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e2565b6113e781611691565b50565b60026001540361143c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105e2565b6002600155565b6040516001600160a01b0383166024820152604481018290526109d590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261171b565b8035600090815260cb602090815260408083208392909183916114cd91870190870161200a565b6001600160a01b03908116825260208201929092526040016000205416905080610b3b576114fa836117ed565b610671565b60018055565b61150d611a72565b611515611aa1565b6113e781611ad0565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa15801561156f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115939190612847565b905081610671576040516001600160a01b03821615159061160290869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b6040516020818303038152906040529061162f5760405162461bcd60e51b81526004016105e29190612864565b509392505050565b6065546001600160a01b0316331461068a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e2565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526105439085906323b872dd60e01b9060840161146f565b6000611770826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b199092919063ffffffff16565b8051909150156109d5578080602001905181019061178e91906125a4565b6109d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105e2565b6000611866818335611805604086016020870161200a565b60405161182892916001600160a01b031690602001918252602082015260400190565b604051602081830303815290604052805190602001206040518060200161184e90611f69565b601f1982820381018352601f90910116604052611b28565b6097549091506001600160a01b0380831691636c0db62b911661188f604086016020870161200a565b85356118a16060880160408901612877565b6118ae6060890189612894565b6118bb60808b018b612894565b6118c58c35611c2c565b6040516020016118d7939291906128db565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016119089796959493929190612924565b600060405180830381600087803b15801561192257600080fd5b505af1158015611936573d6000803e3d6000fd5b5050506001600160a01b038216600090815260c960209081526040808320805460ff1916600117905560ca90915290208391506119738282612a90565b50508135600090815260cb6020908152604080832084939092909161199d9190870190870161200a565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b03168260200160208101906119fe919061200a565b6001600160a01b031683357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc611a376060870187612894565b611a446080890189612894565b611a5460608b0160408c01612877565b604051611a65959493929190612b17565b60405180910390a4919050565b600054610100900460ff16611a995760405162461bcd60e51b81526004016105e290612b54565b61068a611cbf565b600054610100900460ff16611ac85760405162461bcd60e51b81526004016105e290612b54565b61068a611ce6565b6001600160a01b038116611af757604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b606061066e8484600085611d16565b600083471015611b7a5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016105e2565b8151600003611bcb5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016105e2565b8282516020840186f590506001600160a01b0381166106715760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016105e2565b60606000611c3983611df3565b600101905060008167ffffffffffffffff811115611c5957611c5961221d565b6040519080825280601f01601f191660200182016040528015611c83576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611c8d57509392505050565b600054610100900460ff166114ff5760405162461bcd60e51b81526004016105e290612b54565b600054610100900460ff16611d0d5760405162461bcd60e51b81526004016105e290612b54565b61068a33611691565b606082471015611d775760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105e2565b600080866001600160a01b03168587604051611d939190612b9f565b60006040518083038185875af1925050503d8060008114611dd0576040519150601f19603f3d011682016040523d82523d6000602084013e611dd5565b606091505b5091509150611de687838387611ecb565b925050505b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e325772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611e5e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611e7c57662386f26fc10000830492506010015b6305f5e1008310611e94576305f5e100830492506008015b6127108310611ea857612710830492506004015b60648310611eba576064830492506002015b600a8310610b3b5760010192915050565b60608315611f3a578251600003611f33576001600160a01b0385163b611f335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105e2565b5081611deb565b611deb8383815115611f4f5781518083602001fd5b8060405162461bcd60e51b81526004016105e29190612864565b6116eb80612bbc83390190565b6001600160a01b03811681146113e757600080fd5b8035611f9681611f76565b919050565b60008060008060808587031215611fb157600080fd5b843567ffffffffffffffff811115611fc857600080fd5b850160a08188031215611fda57600080fd5b93506020850135611fea81611f76565b92506040850135611ffa81611f76565b9396929550929360600135925050565b60006020828403121561201c57600080fd5b813561067181611f76565b6000806040838503121561203a57600080fd5b82359150602083013561204c81611f76565b809150509250929050565b80151581146113e757600080fd5b60008060006060848603121561207a57600080fd5b8335925060208401359150604084013561209381612057565b809150509250925092565b6000602082840312156120b057600080fd5b5035919050565b6000806000604084860312156120cc57600080fd5b833567ffffffffffffffff808211156120e457600080fd5b908501906101a082880312156120f957600080fd5b9093506020850135908082111561210f57600080fd5b818601915086601f83011261212357600080fd5b81358181111561213257600080fd5b87602082850101111561214457600080fd5b6020830194508093505050509250925092565b60005b8381101561217257818101518382015260200161215a565b50506000910152565b60008151808452612193816020860160208601612157565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a0606082018190526000906121da9083018561217b565b82810360808401526121ec818561217b565b98975050505050505050565b6000806040838503121561220b57600080fd5b82359150602083013561204c81612057565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561225c5761225c61221d565b604052919050565b600067ffffffffffffffff82111561227e5761227e61221d565b50601f01601f191660200190565b600080600080600080600080610100898b0312156122a957600080fd5b8835975060208901356122bb81611f76565b965060408901356122cb81611f76565b9550606089013594506080890135935060a0890135925060c08901356122f081611f76565b915060e089013567ffffffffffffffff81111561230c57600080fd5b8901601f81018b1361231d57600080fd5b803561233061232b82612264565b612233565b8181528c602083850101111561234557600080fd5b816020840160208301376000602083830101528093505050509295985092959890939650565b60006060828403121561237d57600080fd5b6040516060810181811067ffffffffffffffff821117156123a0576123a061221d565b6040528251815260208301516123b581611f76565b60208201526040928301519281019290925250919050565b6000808335601e198436030181126123e457600080fd5b830160208101925035905067ffffffffffffffff81111561240457600080fd5b80360382131561241357600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815281356020820152600061245c60208401611f8b565b6001600160a01b038116604084015250604083013560608301526060830135608083015261248c60808401611f8b565b6001600160a01b03811660a0840152506124a860a08401611f8b565b6001600160a01b03811660c0840152506124c460c08401611f8b565b6001600160a01b03811660e08401525061010060e084013581840152610120818501358185015261014091508085013582850152506101608185013581850152612510818601866123cd565b925090506101a0610180818187015261252e6101c08701858561241a565b935061253c818801886123cd565b878603601f1901848901529350905061255684848361241a565b979650505050505050565b60006020828403121561257357600080fd5b5051919050565b84815283602082015260606040820152600061259a60608301848661241a565b9695505050505050565b6000602082840312156125b657600080fd5b815161067181612057565b600181811c908216806125d557607f821691505b6020821081036125f557634e487b7160e01b600052602260045260246000fd5b50919050565b60ff811681146113e757600080fd5b60006020828403121561261c57600080fd5b8151610671816125fb565b60006020828403121561263957600080fd5b815167ffffffffffffffff81111561265057600080fd5b8201601f8101841361266157600080fd5b805161266f61232b82612264565b81815285602083850101111561268457600080fd5b612695826020830160208601612157565b95945050505050565b81810381811115610b3b57634e487b7160e01b600052601160045260246000fd5b60808152845160808201526000602086015160018060a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e085015261270961012085018361217b565b91506080880151607f1985840301610100860152612727838261217b565b9188166020860152506001600160a01b038616604085015291506127489050565b82606083015295945050505050565b60208152815160208201526000602083015161277e60408401826001600160a01b03169052565b50604083015160608301526060830151608083015260808301516127ad60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a061018080850182905261282b6101c086018461217b565b90860151858203601f19018387015290925061259a838261217b565b60006020828403121561285957600080fd5b815161067181611f76565b602081526000610b38602083018461217b565b60006020828403121561288957600080fd5b8135610671816125fb565b6000808335601e198436030181126128ab57600080fd5b83018035915067ffffffffffffffff8211156128c657600080fd5b60200191503681900382131561241357600080fd5b8284823760008382016b050c4e4d2c8cecac9e13f19160a31b8152835161290981600c840160208801612157565b602960f81b600c9290910191820152600d0195945050505050565b6001600160a01b038881168252871660208201526040810186905260ff8516606082015260c060808201819052600090612961908301858761241a565b82810360a0840152612973818561217b565b9a9950505050505050505050565b601f8211156109d557600081815260208120601f850160051c810160208610156129a85750805b601f850160051c820191505b818110156129c7578281556001016129b4565b505050505050565b67ffffffffffffffff8311156129e7576129e761221d565b6129fb836129f583546125c1565b83612981565b6000601f841160018114612a2f5760008515612a175750838201355b600019600387901b1c1916600186901b178355612a89565b600083815260209020601f19861690835b82811015612a605786850135825560209485019460019092019101612a40565b5086821015612a7d5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135612aa681611f76565b81546040850135612ab6816125fb565b60ff60a01b60a09190911b166001600160a01b03929092166001600160a81b03199190911617179055612aec6060830183612894565b612afa8183600286016129cf565b5050612b096080830183612894565b6105438183600386016129cf565b606081526000612b2b60608301878961241a565b8281036020840152612b3e81868861241a565b91505060ff831660408301529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251612bb1818460208701612157565b919091019291505056fe608060405234801561001057600080fd5b506116cb806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80636c6563f6116100c357806395d89b411161007c57806395d89b41146102e7578063a457c2d7146102ef578063a86f9d9e14610302578063a9059cbb14610315578063dd62ed3e14610328578063f2fde38b1461036157600080fd5b80636c6563f61461026c57806370a082311461027f578063715018a6146102a857806377be18a8146102b05780637cf8ed0d146102c35780638da5cb5b146102d657600080fd5b8063395093511161011557806339509351146101cd5780633ab76e9f146101e057806342e91bb31461020557806349d126051461021a57806367e828bf146102235780636c0db62b1461025957600080fd5b806306fdde0314610152578063095ea7b31461017057806318160ddd1461019357806323b872dd146101a5578063313ce567146101b8575b600080fd5b61015a610374565b60405161016791906111c0565b60405180910390f35b61018361017e366004611223565b610406565b6040519015158152602001610167565b60cb545b604051908152602001610167565b6101836101b336600461124f565b610420565b60ce5460405160ff9091168152602001610167565b6101836101db366004611223565b610460565b6097546001600160a01b03165b6040516001600160a01b039091168152602001610167565b610218610213366004611223565b61049f565b005b61019760fc5481565b61023a60fb5460fc546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610167565b610218610267366004611333565b61053c565b6101ed61027a3660046113f2565b6106d4565b61019761028d366004611427565b6001600160a01b0316600090815260c9602052604090205490565b6102186106e1565b6102186102be366004611223565b6106f5565b60fb546101ed906001600160a01b031681565b6065546001600160a01b03166101ed565b61015a610785565b6101836102fd366004611223565b610794565b6101ed610310366004611444565b610831565b610183610323366004611223565b61083e565b610197610336366004611470565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b61021861036f366004611427565b610873565b606060cc8054610383906114a9565b80601f01602080910402602001604051908101604052809291908181526020018280546103af906114a9565b80156103fc5780601f106103d1576101008083540402835291602001916103fc565b820191906000526020600020905b8154815290600101906020018083116103df57829003601f168201915b5050505050905090565b6000336104148185856108ec565b60019150505b92915050565b6000306001600160a01b0384160361044b576040516319a6f37760e21b815260040160405180910390fd5b610456848484610a10565b90505b9392505050565b33600081815260ca602090815260408083206001600160a01b0387168452909152812054909190610414908290869061049a9087906114f9565b6108ec565b6a1d1bdad95b97dd985d5b1d60aa1b6104b9816000610831565b6001600160a01b0316336001600160a01b0316146104ea57604051630d85cccf60e11b815260040160405180910390fd5b6104f48383610a29565b826001600160a01b03167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa68360405161052f91815260200190565b60405180910390a2505050565b600054610100900460ff161580801561055c5750600054600160ff909116105b806105765750303b158015610576575060005460ff166001145b6105de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610601576000805461ff0019166101001790555b6001600160a01b0386161580610615575084155b8061061f57504685145b8061062957508251155b8061063357508151155b15610651576040516301e25ab360e71b815260040160405180910390fd5b61065a87610acd565b610665828486610ae6565b60fb80546001600160a01b0319166001600160a01b03881617905560fc85905580156106cb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6000610456848484610b1d565b6106e9610c36565b6106f36000610c90565b565b6a1d1bdad95b97dd985d5b1d60aa1b61070f816000610831565b6001600160a01b0316336001600160a01b03161461074057604051630d85cccf60e11b815260040160405180910390fd5b61074a8383610ce2565b826001600160a01b03167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d76545265538360405161052f91815260200190565b606060cd8054610383906114a9565b33600081815260ca602090815260408083206001600160a01b0387168452909152812054909190838110156108195760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105d5565b61082682868684036108ec565b506001949350505050565b6000610459468484610b1d565b6000306001600160a01b03841603610869576040516319a6f37760e21b815260040160405180910390fd5b6104598383610df5565b61087b610c36565b6001600160a01b0381166108e05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d5565b6108e981610c90565b50565b6001600160a01b03831661094e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d5565b6001600160a01b0382166109af5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d5565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600033610a1e858285610e03565b610826858585610e95565b6001600160a01b038216610a7f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105d5565b8060cb6000828254610a9191906114f9565b90915550506001600160a01b038216600090815260c9602052604081208054839290610abe9084906114f9565b90915550610ac99050565b5050565b610ad5611063565b610add611092565b6108e9816110c1565b600054610100900460ff16610b0d5760405162461bcd60e51b81526004016105d59061150c565b610b1883838361110a565b505050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b929190611557565b905081610459576040516001600160a01b038216151590610c0190869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b60405160208183030381529060405290610c2e5760405162461bcd60e51b81526004016105d591906111c0565b509392505050565b6065546001600160a01b031633146106f35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d5565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610d425760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105d5565b6001600160a01b038216600090815260c9602052604090205481811015610db65760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105d5565b6001600160a01b038316600090815260c960205260408120838303905560cb8054849290610de5908490611574565b90915550610b1890508360008483565b600033610414818585610e95565b6001600160a01b03838116600090815260ca60209081526040808320938616835292905220546000198114610e8f5781811015610e825760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105d5565b610e8f84848484036108ec565b50505050565b6001600160a01b038316610ef95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d5565b6001600160a01b038216610f5b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d5565b6001600160a01b038316600090815260c9602052604090205481811015610fd35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105d5565b6001600160a01b03808516600090815260c9602052604080822085850390559185168152908120805484929061100a9084906114f9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161105691815260200190565b60405180910390a3610e8f565b600054610100900460ff1661108a5760405162461bcd60e51b81526004016105d59061150c565b6106f3611163565b600054610100900460ff166110b95760405162461bcd60e51b81526004016105d59061150c565b6106f3611190565b6001600160a01b0381166110e857604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166111315760405162461bcd60e51b81526004016105d59061150c565b60cc61113d84826115d5565b5060cd61114a83826115d5565b5060ce805460ff191660ff929092169190911790555050565b600054610100900460ff1661118a5760405162461bcd60e51b81526004016105d59061150c565b60018055565b600054610100900460ff166111b75760405162461bcd60e51b81526004016105d59061150c565b6106f333610c90565b600060208083528351808285015260005b818110156111ed578581018301518582016040015282016111d1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146108e957600080fd5b6000806040838503121561123657600080fd5b82356112418161120e565b946020939093013593505050565b60008060006060848603121561126457600080fd5b833561126f8161120e565b9250602084013561127f8161120e565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126112b757600080fd5b813567ffffffffffffffff808211156112d2576112d2611290565b604051601f8301601f19908116603f011681019082821181831017156112fa576112fa611290565b8160405283815286602085880101111561131357600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060008060c0878903121561134c57600080fd5b86356113578161120e565b955060208701356113678161120e565b945060408701359350606087013560ff8116811461138457600080fd5b9250608087013567ffffffffffffffff808211156113a157600080fd5b6113ad8a838b016112a6565b935060a08901359150808211156113c357600080fd5b506113d089828a016112a6565b9150509295509295509295565b803580151581146113ed57600080fd5b919050565b60008060006060848603121561140757600080fd5b833592506020840135915061141e604085016113dd565b90509250925092565b60006020828403121561143957600080fd5b81356104598161120e565b6000806040838503121561145757600080fd5b82359150611467602084016113dd565b90509250929050565b6000806040838503121561148357600080fd5b823561148e8161120e565b9150602083013561149e8161120e565b809150509250929050565b600181811c908216806114bd57607f821691505b6020821081036114dd57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561041a5761041a6114e3565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561156957600080fd5b81516104598161120e565b8181038181111561041a5761041a6114e3565b601f821115610b1857600081815260208120601f850160051c810160208610156115ae5750805b601f850160051c820191505b818110156115cd578281556001016115ba565b505050505050565b815167ffffffffffffffff8111156115ef576115ef611290565b611603816115fd84546114a9565b84611587565b602080601f83116001811461163857600084156116205750858301515b600019600386901b1c1916600185901b1785556115cd565b600085815260208120601f198616915b8281101561166757888601518255948401946001909101908401611648565b50858210156116855787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212202503a82dc8fde94e7b48f136ffe73ef34e437fe55ff29b114b6033466e72073864736f6c63430008120033a264697066735822122024a0abd96bb3fe0369964a2b8174e09ad8789a1662fa25a790e750624eb214f564736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000003": { @@ -102,7 +102,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006", "0x029ae2e2f1d6964720a0fa7e6ffa902f995c156242f4f5a930aa9d9765d167d0": "0x0000000000000000000000000000000000000000000000000000000000000001" }, - "code": "0x6080604052600436106100a05760003560e01c8063715018a611610064578063715018a6146101a45780638da5cb5b146101b9578063ba0bbd95146101d7578063d73bb3d0146101f7578063f2fde38b14610217578063fe9fbb801461023757600080fd5b80630ca4dffd146100e957806319ab453c146101265780631be2bfa7146101465780632d1fb389146101665780633ab76e9f1461018657600080fd5b366100e45747158015906100c4575033600090815260c9602052604090205460ff16155b156100e257604051634fa3f24560e01b815260040160405180910390fd5b005b600080fd5b3480156100f557600080fd5b50610109610104366004610aaa565b610280565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561013257600080fd5b506100e2610141366004610b0d565b610294565b34801561015257600080fd5b50610109610161366004610b2a565b6103ac565b34801561017257600080fd5b506100e2610181366004610b81565b6103c1565b34801561019257600080fd5b506097546001600160a01b0316610109565b3480156101b057600080fd5b506100e261047a565b3480156101c557600080fd5b506065546001600160a01b0316610109565b3480156101e357600080fd5b506100e26101f2366004610bad565b61048e565b34801561020357600080fd5b506100e2610212366004610bd9565b61054c565b34801561022357600080fd5b506100e2610232366004610b0d565b6105cf565b34801561024357600080fd5b50610270610252366004610b0d565b6001600160a01b0316600090815260c9602052604090205460ff1690565b604051901515815260200161011d565b600061028d468484610645565b9392505050565b600054610100900460ff16158080156102b45750600054600160ff909116105b806102ce5750303b1580156102ce575060005460ff166001145b6103365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610359576000805461ff0019166101001790555b61036282610715565b80156103a8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006103b9848484610645565b949350505050565b6103c961072e565b6001600160a01b03821615806103fd57506001600160a01b038216600090815260c9602052604090205460ff161515811515145b1561041b57604051631bebdfa760e21b815260040160405180910390fd5b6001600160a01b038216600081815260c96020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b61048261072e565b61048c6000610788565b565b33600090815260c9602052604090205460ff166104be57604051634fa3f24560e01b815260040160405180910390fd5b6104c66107da565b6001600160a01b0382166104ed5760405163687563df60e01b815260040160405180910390fd5b6105006001600160a01b03831682610833565b816001600160a01b03167f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e8260405161053b91815260200190565b60405180910390a26103a860018055565b33600090815260c9602052604090205460ff1661057c57604051634fa3f24560e01b815260040160405180910390fd5b6105846107da565b61058e3382610833565b60405181815233907f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e9060200160405180910390a26105cc60018055565b50565b6105d761072e565b6001600160a01b03811661063c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161032d565b6105cc81610788565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906106789087908790600401610c38565b602060405180830381865afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b99190610c51565b90508161028d576040516001600160a01b0382161515906106e09086908690602001610c6e565b6040516020818303038152906040529061070d5760405162461bcd60e51b815260040161032d9190610ccc565b509392505050565b61071d6108f4565b610725610923565b6105cc81610952565b6065546001600160a01b0316331461048c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161032d565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60026001540361082c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161032d565b6002600155565b80158061084757506001600160a01b038216155b15610850575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461089d576040519150601f19603f3d011682016040523d82523d6000602084013e6108a2565b606091505b50509050806108e95760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161032d565b505050565b60018055565b600054610100900460ff1661091b5760405162461bcd60e51b815260040161032d90610cdf565b61048c61099b565b600054610100900460ff1661094a5760405162461bcd60e51b815260040161032d90610cdf565b61048c6109c2565b6001600160a01b03811661097957604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166108ee5760405162461bcd60e51b815260040161032d90610cdf565b600054610100900460ff166109e95760405162461bcd60e51b815260040161032d90610cdf565b61048c33610788565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a1957600080fd5b813567ffffffffffffffff80821115610a3457610a346109f2565b604051601f8301601f19908116603f01168101908282118183101715610a5c57610a5c6109f2565b81604052838152866020858801011115610a7557600080fd5b836020870160208301376000602085830101528094505050505092915050565b80358015158114610aa557600080fd5b919050565b60008060408385031215610abd57600080fd5b823567ffffffffffffffff811115610ad457600080fd5b610ae085828601610a08565b925050610aef60208401610a95565b90509250929050565b6001600160a01b03811681146105cc57600080fd5b600060208284031215610b1f57600080fd5b813561028d81610af8565b600080600060608486031215610b3f57600080fd5b83359250602084013567ffffffffffffffff811115610b5d57600080fd5b610b6986828701610a08565b925050610b7860408501610a95565b90509250925092565b60008060408385031215610b9457600080fd5b8235610b9f81610af8565b9150610aef60208401610a95565b60008060408385031215610bc057600080fd5b8235610bcb81610af8565b946020939093013593505050565b600060208284031215610beb57600080fd5b5035919050565b6000815180845260005b81811015610c1857602081850181015186830182015201610bfc565b506000602082860101526020601f19601f83011685010191505092915050565b8281526040602082015260006103b96040830184610bf2565b600060208284031215610c6357600080fd5b815161028d81610af8565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e08201526000610100806060840152610cc381840185610bf2565b95945050505050565b60208152600061028d6020830184610bf2565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea26469706673582212204a776efb851f548fbcf6634486a7bcf0686a495f73a72655eecc314297b1246c64736f6c63430008120033", + "code": "0x6080604052600436106100a05760003560e01c80638da5cb5b116100645780638da5cb5b14610195578063a86f9d9e146101b3578063ba0bbd95146101d3578063d73bb3d0146101f3578063f2fde38b14610213578063fe9fbb801461023357600080fd5b806319ab453c146100e95780632d1fb389146101095780633ab76e9f146101295780636c6563f614610160578063715018a61461018057600080fd5b366100e45747158015906100c4575033600090815260c9602052604090205460ff16155b156100e257604051634fa3f24560e01b815260040160405180910390fd5b005b600080fd5b3480156100f557600080fd5b506100e2610104366004610a47565b61027c565b34801561011557600080fd5b506100e2610124366004610a79565b610394565b34801561013557600080fd5b506097546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016c57600080fd5b5061014361017b366004610aae565b61044d565b34801561018c57600080fd5b506100e2610464565b3480156101a157600080fd5b506065546001600160a01b0316610143565b3480156101bf57600080fd5b506101436101ce366004610ae3565b610478565b3480156101df57600080fd5b506100e26101ee366004610b06565b610485565b3480156101ff57600080fd5b506100e261020e366004610b32565b610543565b34801561021f57600080fd5b506100e261022e366004610a47565b6105c6565b34801561023f57600080fd5b5061026c61024e366004610a47565b6001600160a01b0316600090815260c9602052604090205460ff1690565b6040519015158152602001610157565b600054610100900460ff161580801561029c5750600054600160ff909116105b806102b65750303b1580156102b6575060005460ff166001145b61031e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610341576000805461ff0019166101001790555b61034a8261063c565b8015610390576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b61039c610655565b6001600160a01b03821615806103d057506001600160a01b038216600090815260c9602052604090205460ff161515811515145b156103ee57604051631bebdfa760e21b815260040160405180910390fd5b6001600160a01b038216600081815260c96020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b600061045a8484846106af565b90505b9392505050565b61046c610655565b61047660006107c8565b565b600061045d4684846106af565b33600090815260c9602052604090205460ff166104b557604051634fa3f24560e01b815260040160405180910390fd5b6104bd61081a565b6001600160a01b0382166104e45760405163687563df60e01b815260040160405180910390fd5b6104f76001600160a01b03831682610873565b816001600160a01b03167f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e8260405161053291815260200190565b60405180910390a261039060018055565b33600090815260c9602052604090205460ff1661057357604051634fa3f24560e01b815260040160405180910390fd5b61057b61081a565b6105853382610873565b60405181815233907f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e9060200160405180910390a26105c360018055565b50565b6105ce610655565b6001600160a01b0381166106335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610315565b6105c3816107c8565b610644610934565b61064c610963565b6105c381610992565b6065546001600160a01b031633146104765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610315565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190610b4b565b90508161045d576040516001600160a01b03821615159061079390869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906107c05760405162461bcd60e51b81526004016103159190610b68565b509392505050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60026001540361086c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610315565b6002600155565b80158061088757506001600160a01b038216155b15610890575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146108dd576040519150601f19603f3d011682016040523d82523d6000602084013e6108e2565b606091505b50509050806109295760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610315565b505050565b60018055565b600054610100900460ff1661095b5760405162461bcd60e51b815260040161031590610bb6565b6104766109db565b600054610100900460ff1661098a5760405162461bcd60e51b815260040161031590610bb6565b610476610a02565b6001600160a01b0381166109b957604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661092e5760405162461bcd60e51b815260040161031590610bb6565b600054610100900460ff16610a295760405162461bcd60e51b815260040161031590610bb6565b610476336107c8565b6001600160a01b03811681146105c357600080fd5b600060208284031215610a5957600080fd5b813561045d81610a32565b80358015158114610a7457600080fd5b919050565b60008060408385031215610a8c57600080fd5b8235610a9781610a32565b9150610aa560208401610a64565b90509250929050565b600080600060608486031215610ac357600080fd5b8335925060208401359150610ada60408501610a64565b90509250925092565b60008060408385031215610af657600080fd5b82359150610aa560208401610a64565b60008060408385031215610b1957600080fd5b8235610b2481610a32565b946020939093013593505050565b600060208284031215610b4457600080fd5b5035919050565b600060208284031215610b5d57600080fd5b815161045d81610a32565b600060208083528351808285015260005b81811015610b9557858101830151858201604001528201610b79565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122014d60add99642ec64e1536a07c072ba06fb91d88e43820260491efc081e2567a64736f6c63430008120033", "balance": "0xfffffffffffffdd4e373edd85fffffff" }, "0x0000777700000000000000000000000000000007": { @@ -113,7 +113,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" }, - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80635221f613116100715780635221f6131461013a57806366ca2bc01461014d578063715018a61461016e5780638da5cb5b14610176578063f2fde38b14610187578063f8f3f8441461019a57600080fd5b80630ca4dffd146100ae57806319ab453c146100de5780631be2bfa7146100f357806332676bc6146101065780633ab76e9f14610129575b600080fd5b6100c16100bc366004611a55565b6101c6565b6040516001600160a01b0390911681526020015b60405180910390f35b6100f16100ec366004611ab8565b6101dc565b005b6100c1610101366004611ad5565b6102f4565b610119610114366004611b2c565b61030b565b60405190151581526020016100d5565b6097546001600160a01b03166100c1565b610119610148366004611b58565b610379565b61016061015b366004611bee565b6104fe565b6040519081526020016100d5565b6100f1610543565b6065546001600160a01b03166100c1565b6100f1610195366004611ab8565b610557565b6101606101a8366004611b2c565b6040805192835260208301919091526034600c830120918101905290565b60006101d34684846105d0565b90505b92915050565b600054610100900460ff16158080156101fc5750600054600160ff909116105b806102165750303b158015610216575060005460ff166001145b61027e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156102a1576000805461ff0019166101001790555b6102aa826106a0565b80156102f0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006103018484846105d0565b90505b9392505050565b60006001600160a01b038316610334576040516354cdfc8d60e11b815260040160405180910390fd5b60008290036103565760405163014f1da760e21b815260040160405180910390fd5b506040805192835260208301919091526034600c83012091810190525460011490565b600046860361039b5760405163e822b48d60e01b815260040160405180910390fd5b6001600160a01b0385166103c2576040516354cdfc8d60e11b815260040160405180910390fd5b60008490036103e45760405163014f1da760e21b815260040160405180910390fd5b60006103f283850185611c07565b9050600061041e604051806040016040528060058152602001647461696b6f60d81b81525060006101c6565b825160405163304dde8360e11b81526001600160a01b03929092169163609bbd06916104509160040190815260200190565b602060405180830381865afa15801561046d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104919190611cab565b60408051898152602081018990526034600c82012081830190925260608101919091529091506104f290608001604051602081830303815290604052604051806040016040528060018152602001600160f81b8152508460200151846106b9565b98975050505050505050565b60008181036105205760405163014f1da760e21b815260040160405180910390fd5b506040805133815260208101929092526034600c83012091810190526001815590565b61054b6106dd565b6105556000610737565b565b61055f6106dd565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610275565b6105cd81610737565b50565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906106039087908790600401611d0a565b602060405180830381865afa158015610620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106449190611d23565b905081610304576040516001600160a01b03821615159061066b9086908690602001611d40565b604051602081830303815290604052906106985760405162461bcd60e51b81526004016102759190611d95565b509392505050565b6106a8610789565b6106b06107b8565b6105cd816107e7565b6000806106c586610830565b90506106d381868686610862565b9695505050505050565b6065546001600160a01b031633146105555760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610275565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166107b05760405162461bcd60e51b815260040161027590611da8565b61055561089f565b600054610100900460ff166107df5760405162461bcd60e51b815260040161027590611da8565b6105556108cc565b6001600160a01b03811661080e57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6060818051906020012060405160200161084c91815260200190565b6040516020818303038152906040529050919050565b60008060006108728786866108fc565b9150915081801561089457508051602080830191909120875191880191909120145b979650505050505050565b600054610100900460ff166108c65760405162461bcd60e51b815260040161027590611da8565b60018055565b600054610100900460ff166108f35760405162461bcd60e51b815260040161027590611da8565b61055533610737565b60006060600061090b856109d7565b9050600080600061091d848a89610ac8565b815192955090935091501580806109315750815b61097d5760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610275565b60008161099957604051806020016040528060008152506109c5565b6109c5866109a8600188611e09565b815181106109b8576109b8611e1c565b6020026020010151610ee8565b919b919a509098505050505050505050565b606060006109e483610f0f565b90506000815167ffffffffffffffff811115610a0257610a02611994565b604051908082528060200260200182016040528015610a4757816020015b6040805180820190915260608082526020820152815260200190600190039081610a205790505b50905060005b8251811015610698576000610a7a848381518110610a6d57610a6d611e1c565b6020026020010151610f42565b90506040518060400160405280610a9083610f0f565b815260200182815250838381518110610aab57610aab611e1c565b60200260200101819052505080610ac190611e32565b9050610a4d565b600060606000806000610ada87610fd2565b90506000869050600080610b01604051806040016040528060608152602001606081525090565b60005b8c51811015610ec0578c8181518110610b1f57610b1f611e1c565b602002602001015191508284610b359190611e4b565b9350610b42600188611e4b565b965083600003610b9f578482602001518051906020012014610b9a5760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b6044820152606401610275565b610c61565b602082602001515110610c06578482602001518051906020012014610b9a5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610275565b84610c14836020015161110b565b14610c615760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610275565b610c6d60106001611e5e565b60ff1682600001515103610cdb5785518414610ec0576000868581518110610c9757610c97611e1c565b01602001518351805160f89290921c925060009183908110610cbb57610cbb611e1c565b60200260200101519050610cce81611133565b9650600194505050610eb0565b81515160011901610e68576000610cf183611169565b9050600081600081518110610d0857610d08611e1c565b016020015160f81c90506000610d1f600283611e77565b610d2a906002611ea7565b90506000610d3b848360ff1661118d565b90506000610d498b8a61118d565b90506000610d5783836111c3565b905060ff851660021480610d6e575060ff85166003145b15610da857808351148015610d835750808251145b15610d9557610d92818b611e4b565b99505b50600160ff1b9950610ec0945050505050565b60ff85161580610dbb575060ff85166001145b15610e115782518114610ddb5750600160ff1b9950610ec0945050505050565b610e028860000151600181518110610df557610df5611e1c565b6020026020010151611133565b9a509750610eb0945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b6064820152608401610275565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610275565b610eb981611e32565b9050610b04565b50600160ff1b841486610ed3878661118d565b909e909d50909b509950505050505050505050565b805180516060916101d691610eff90600190611e09565b81518110610a6d57610a6d611e1c565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906101d69061123d565b60606000806000610f5285611429565b919450925090506000816001811115610f6d57610f6d611ec0565b14610fba5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610275565b610fc985602001518484611773565b95945050505050565b6060600082516002610fe49190611ed6565b67ffffffffffffffff811115610ffc57610ffc611994565b6040519080825280601f01601f191660200182016040528015611026576020820181803683370190505b50905060005b835181101561110457600484828151811061104957611049611e1c565b01602001516001600160f81b031916901c82611066836002611ed6565b8151811061107657611076611e1c565b60200101906001600160f81b031916908160001a90535060108482815181106110a1576110a1611e1c565b01602001516110b3919060f81c611e77565b60f81b826110c2836002611ed6565b6110cd906001611e4b565b815181106110dd576110dd611e1c565b60200101906001600160f81b031916908160001a9053506110fd81611e32565b905061102c565b5092915050565b600060208251101561111f57506020015190565b818060200190518101906101d69190611cab565b600060606020836000015110156111545761114d8361181c565b9050611160565b61115d83610f42565b90505b6103048161110b565b60606101d66111888360000151600081518110610a6d57610a6d611e1c565b610fd2565b6060825182106111ac57506040805160208101909152600081526101d6565b6101d383838486516111be9190611e09565b611827565b6000805b8084511180156111d75750808351115b801561122857508281815181106111f0576111f0611e1c565b602001015160f81c60f81b6001600160f81b03191684828151811061121757611217611e1c565b01602001516001600160f81b031916145b156101d35761123681611e32565b90506111c7565b606060008061124b84611429565b9193509091506001905081600181111561126757611267611ec0565b146112b45760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610275565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816112cd5790505090506000835b865181101561141e57602082106113665760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b6064820152608401610275565b6000806113a36040518060400160405280858c600001516113879190611e09565b8152602001858c6020015161139c9190611e4b565b9052611429565b5091509150604051806040016040528083836113bf9190611e4b565b8152602001848b602001516113d49190611e4b565b8152508585815181106113e9576113e9611e1c565b60209081029190910101526113ff600185611e4b565b935061140b8183611e4b565b6114159084611e4b565b925050506112fa565b508152949350505050565b6000806000808460000151116114815760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610275565b6020840151805160001a607f81116114a657600060016000945094509450505061176c565b60b781116115225760006114bb608083611e09565b9050808760000151116115105760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610275565b6001955093506000925061176c915050565b60bf811161161157600061153760b783611e09565b90508087600001511161158c5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610275565b600183015160208290036101000a90046115a68183611e4b565b8851116115f55760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610275565b611600826001611e4b565b965094506000935061176c92505050565b60f7811161168c57600061162660c083611e09565b90508087600001511161167b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610275565b60019550935084925061176c915050565b600061169960f783611e09565b9050808760000151116116ee5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610275565b600183015160208290036101000a90046117088183611e4b565b8851116117505760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b6044820152606401610275565b61175b826001611e4b565b965094506001935061176c92505050565b9193909250565b606060008267ffffffffffffffff81111561179057611790611994565b6040519080825280601f01601f1916602001820160405280156117ba576020820181803683370190505b50905080516000036117cd579050610304565b8484016020820160005b858110156117ef5782810151828201526020016117d7565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60606101d68261197e565b60608161183581601f611e4b565b10156118745760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610275565b8261187f8382611e4b565b10156118be5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610275565b6118c88284611e4b565b8451101561190c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610275565b60608215801561192b5760405191506000825260208201604052611975565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561196457805183526020928301920161194c565b5050858452601f01601f1916604052505b50949350505050565b60606101d6826020015160008460000151611773565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156119c5576119c5611994565b604051601f8501601f19908116603f011681019082821181831017156119ed576119ed611994565b81604052809350858152868686011115611a0657600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112611a3157600080fd5b6101d3838335602085016119aa565b80358015158114611a5057600080fd5b919050565b60008060408385031215611a6857600080fd5b823567ffffffffffffffff811115611a7f57600080fd5b611a8b85828601611a20565b925050611a9a60208401611a40565b90509250929050565b6001600160a01b03811681146105cd57600080fd5b600060208284031215611aca57600080fd5b81356101d381611aa3565b600080600060608486031215611aea57600080fd5b83359250602084013567ffffffffffffffff811115611b0857600080fd5b611b1486828701611a20565b925050611b2360408501611a40565b90509250925092565b60008060408385031215611b3f57600080fd5b8235611b4a81611aa3565b946020939093013593505050565b600080600080600060808688031215611b7057600080fd5b853594506020860135611b8281611aa3565b935060408601359250606086013567ffffffffffffffff80821115611ba657600080fd5b818801915088601f830112611bba57600080fd5b813581811115611bc957600080fd5b896020828501011115611bdb57600080fd5b9699959850939650602001949392505050565b600060208284031215611c0057600080fd5b5035919050565b600060208284031215611c1957600080fd5b813567ffffffffffffffff80821115611c3157600080fd5b9083019060408286031215611c4557600080fd5b604051604081018181108382111715611c6057611c60611994565b60405282358152602083013582811115611c7957600080fd5b80840193505085601f840112611c8e57600080fd5b611c9d868435602086016119aa565b602082015295945050505050565b600060208284031215611cbd57600080fd5b5051919050565b6000815180845260005b81811015611cea57602081850181015186830182015201611cce565b506000602082860101526020601f19601f83011685010191505092915050565b8281526040602082015260006103016040830184611cc4565b600060208284031215611d3557600080fd5b81516101d381611aa3565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e08201526000610100806060840152610fc981840185611cc4565b6020815260006101d36020830184611cc4565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156101d6576101d6611df3565b634e487b7160e01b600052603260045260246000fd5b600060018201611e4457611e44611df3565b5060010190565b808201808211156101d6576101d6611df3565b60ff81811683821601908111156101d6576101d6611df3565b600060ff831680611e9857634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60ff82811682821603908111156101d6576101d6611df3565b634e487b7160e01b600052602160045260246000fd5b80820281158282048414176101d6576101d6611df356fea2646970667358221220256eb2a42eec1e251834e87f64fda2ab1049b5c182c595632f236f14213e273d64736f6c63430008120033", + "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80636c6563f6116100715780636c6563f614610144578063715018a6146101575780638da5cb5b1461015f578063a86f9d9e14610170578063f2fde38b14610183578063f8f3f8441461019657600080fd5b806319ab453c146100ae57806332676bc6146100c35780633ab76e9f146100eb5780635221f6131461011057806366ca2bc014610123575b600080fd5b6100c16100bc3660046119d4565b6101c2565b005b6100d66100d13660046119f1565b6102da565b60405190151581526020015b60405180910390f35b6097546001600160a01b03165b6040516001600160a01b0390911681526020016100e2565b6100d661011e366004611a1d565b61034c565b610136610131366004611ab3565b6104bc565b6040519081526020016100e2565b6100f8610152366004611ae1565b610501565b6100c1610518565b6065546001600160a01b03166100f8565b6100f861017e366004611b16565b61052c565b6100c16101913660046119d4565b610539565b6101366101a43660046119f1565b6040805192835260208301919091526034600c830120918101905290565b600054610100900460ff16158080156101e25750600054600160ff909116105b806101fc5750303b1580156101fc575060005460ff166001145b6102645760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610287576000805461ff0019166101001790555b610290826105b2565b80156102d6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006001600160a01b038316610303576040516354cdfc8d60e11b815260040160405180910390fd5b60008290036103255760405163014f1da760e21b815260040160405180910390fd5b5060408051838152602081018390526034600c820120908201909152546001145b92915050565b600046860361036e5760405163e822b48d60e01b815260040160405180910390fd5b6001600160a01b038516610395576040516354cdfc8d60e11b815260040160405180910390fd5b60008490036103b75760405163014f1da760e21b815260040160405180910390fd5b60006103c583850185611bb2565b905060006103dc647461696b6f60d81b600061052c565b825160405163304dde8360e11b81526001600160a01b03929092169163609bbd069161040e9160040190815260200190565b602060405180830381865afa15801561042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f9190611c79565b60408051898152602081018990526034600c82012081830190925260608101919091529091506104b090608001604051602081830303815290604052604051806040016040528060018152602001600160f81b8152508460200151846105cb565b98975050505050505050565b60008181036104de5760405163014f1da760e21b815260040160405180910390fd5b506040805133815260208101929092526034600c83012091810190526001815590565b600061050e8484846105ef565b90505b9392505050565b610520610708565b61052a6000610762565b565b60006105114684846105ef565b610541610708565b6001600160a01b0381166105a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161025b565b6105af81610762565b50565b6105ba6107b4565b6105c26107e3565b6105af81610812565b6000806105d78661085b565b90506105e58186868661088d565b9695505050505050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611c92565b905081610511576040516001600160a01b0382161515906106d390869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906107005760405162461bcd60e51b815260040161025b9190611caf565b509392505050565b6065546001600160a01b0316331461052a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161025b565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166107db5760405162461bcd60e51b815260040161025b90611cfd565b61052a6108ca565b600054610100900460ff1661080a5760405162461bcd60e51b815260040161025b90611cfd565b61052a6108f7565b6001600160a01b03811661083957604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6060818051906020012060405160200161087791815260200190565b6040516020818303038152906040529050919050565b600080600061089d878686610927565b915091508180156108bf57508051602080830191909120875191880191909120145b979650505050505050565b600054610100900460ff166108f15760405162461bcd60e51b815260040161025b90611cfd565b60018055565b600054610100900460ff1661091e5760405162461bcd60e51b815260040161025b90611cfd565b61052a33610762565b60006060600061093685610a02565b90506000806000610948848a89610af3565b8151929550909350915015808061095c5750815b6109a85760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e000000000000604482015260640161025b565b6000816109c457604051806020016040528060008152506109f0565b6109f0866109d3600188611d5e565b815181106109e3576109e3611d71565b6020026020010151610f13565b919b919a509098505050505050505050565b60606000610a0f83610f3a565b90506000815167ffffffffffffffff811115610a2d57610a2d611b42565b604051908082528060200260200182016040528015610a7257816020015b6040805180820190915260608082526020820152815260200190600190039081610a4b5790505b50905060005b8251811015610700576000610aa5848381518110610a9857610a98611d71565b6020026020010151610f6d565b90506040518060400160405280610abb83610f3a565b815260200182815250838381518110610ad657610ad6611d71565b60200260200101819052505080610aec90611d87565b9050610a78565b600060606000806000610b0587610ffd565b90506000869050600080610b2c604051806040016040528060608152602001606081525090565b60005b8c51811015610eeb578c8181518110610b4a57610b4a611d71565b602002602001015191508284610b609190611da0565b9350610b6d600188611da0565b965083600003610bca578482602001518051906020012014610bc55760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b604482015260640161025b565b610c8c565b602082602001515110610c31578482602001518051906020012014610bc55760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c20686173680000000000604482015260640161025b565b84610c3f8360200151611136565b14610c8c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f64652068617368000000000000604482015260640161025b565b610c9860106001611db3565b60ff1682600001515103610d065785518414610eeb576000868581518110610cc257610cc2611d71565b01602001518351805160f89290921c925060009183908110610ce657610ce6611d71565b60200260200101519050610cf98161115e565b9650600194505050610edb565b81515160011901610e93576000610d1c83611194565b9050600081600081518110610d3357610d33611d71565b016020015160f81c90506000610d4a600283611dcc565b610d55906002611dfc565b90506000610d66848360ff166111b8565b90506000610d748b8a6111b8565b90506000610d8283836111ee565b905060ff851660021480610d99575060ff85166003145b15610dd357808351148015610dae5750808251145b15610dc057610dbd818b611da0565b99505b50600160ff1b9950610eeb945050505050565b60ff85161580610de6575060ff85166001145b15610e3c5782518114610e065750600160ff1b9950610eeb945050505050565b610e2d8860000151600181518110610e2057610e20611d71565b602002602001015161115e565b9a509750610edb945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b606482015260840161025b565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e000000604482015260640161025b565b610ee481611d87565b9050610b2f565b50600160ff1b841486610efe87866111b8565b909e909d50909b509950505050505050505050565b8051805160609161034691610f2a90600190611d5e565b81518110610a9857610a98611d71565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061034690611268565b60606000806000610f7d85611454565b919450925090506000816001811115610f9857610f98611e15565b14610fe55760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e0000000000000000604482015260640161025b565b610ff48560200151848461179e565b95945050505050565b606060008251600261100f9190611e2b565b67ffffffffffffffff81111561102757611027611b42565b6040519080825280601f01601f191660200182016040528015611051576020820181803683370190505b50905060005b835181101561112f57600484828151811061107457611074611d71565b01602001516001600160f81b031916901c82611091836002611e2b565b815181106110a1576110a1611d71565b60200101906001600160f81b031916908160001a90535060108482815181106110cc576110cc611d71565b01602001516110de919060f81c611dcc565b60f81b826110ed836002611e2b565b6110f8906001611da0565b8151811061110857611108611d71565b60200101906001600160f81b031916908160001a90535061112881611d87565b9050611057565b5092915050565b600060208251101561114a57506020015190565b818060200190518101906103469190611c79565b6000606060208360000151101561117f5761117883611847565b905061118b565b61118883610f6d565b90505b61051181611136565b60606103466111b38360000151600081518110610a9857610a98611d71565b610ffd565b6060825182106111d75750604080516020810190915260008152610346565b61051183838486516111e99190611d5e565b611852565b6000805b8084511180156112025750808351115b8015611253575082818151811061121b5761121b611d71565b602001015160f81c60f81b6001600160f81b03191684828151811061124257611242611d71565b01602001516001600160f81b031916145b156105115761126181611d87565b90506111f2565b606060008061127684611454565b9193509091506001905081600181111561129257611292611e15565b146112df5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e000000000000000000604482015260640161025b565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816112f85790505090506000835b865181101561144957602082106113915760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b606482015260840161025b565b6000806113ce6040518060400160405280858c600001516113b29190611d5e565b8152602001858c602001516113c79190611da0565b9052611454565b5091509150604051806040016040528083836113ea9190611da0565b8152602001848b602001516113ff9190611da0565b81525085858151811061141457611414611d71565b602090810291909101015261142a600185611da0565b93506114368183611da0565b6114409084611da0565b92505050611325565b508152949350505050565b6000806000808460000151116114ac5760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e0000000000000000604482015260640161025b565b6020840151805160001a607f81116114d1576000600160009450945094505050611797565b60b7811161154d5760006114e6608083611d5e565b90508087600001511161153b5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e00000000000000604482015260640161025b565b60019550935060009250611797915050565b60bf811161163c57600061156260b783611d5e565b9050808760000151116115b75760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e00604482015260640161025b565b600183015160208290036101000a90046115d18183611da0565b8851116116205760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e0000000000000000604482015260640161025b565b61162b826001611da0565b965094506000935061179792505050565b60f781116116b757600061165160c083611d5e565b9050808760000151116116a65760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e000000000000000000604482015260640161025b565b600195509350849250611797915050565b60006116c460f783611d5e565b9050808760000151116117195760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e000000604482015260640161025b565b600183015160208290036101000a90046117338183611da0565b88511161177b5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b604482015260640161025b565b611786826001611da0565b965094506001935061179792505050565b9193909250565b606060008267ffffffffffffffff8111156117bb576117bb611b42565b6040519080825280601f01601f1916602001820160405280156117e5576020820181803683370190505b50905080516000036117f8579050610511565b8484016020820160005b8581101561181a578281015182820152602001611802565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b6060610346826119a9565b60608161186081601f611da0565b101561189f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161025b565b826118aa8382611da0565b10156118e95760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161025b565b6118f38284611da0565b845110156119375760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161025b565b60608215801561195657604051915060008252602082016040526119a0565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561198f578051835260209283019201611977565b5050858452601f01601f1916604052505b50949350505050565b606061034682602001516000846000015161179e565b6001600160a01b03811681146105af57600080fd5b6000602082840312156119e657600080fd5b8135610511816119bf565b60008060408385031215611a0457600080fd5b8235611a0f816119bf565b946020939093013593505050565b600080600080600060808688031215611a3557600080fd5b853594506020860135611a47816119bf565b935060408601359250606086013567ffffffffffffffff80821115611a6b57600080fd5b818801915088601f830112611a7f57600080fd5b813581811115611a8e57600080fd5b896020828501011115611aa057600080fd5b9699959850939650602001949392505050565b600060208284031215611ac557600080fd5b5035919050565b80358015158114611adc57600080fd5b919050565b600080600060608486031215611af657600080fd5b8335925060208401359150611b0d60408501611acc565b90509250925092565b60008060408385031215611b2957600080fd5b82359150611b3960208401611acc565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611b7b57611b7b611b42565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611baa57611baa611b42565b604052919050565b60006020808385031215611bc557600080fd5b823567ffffffffffffffff80821115611bdd57600080fd5b9084019060408287031215611bf157600080fd5b611bf9611b58565b823581528383013582811115611c0e57600080fd5b80840193505086601f840112611c2357600080fd5b823582811115611c3557611c35611b42565b611c47601f8201601f19168601611b81565b92508083528785828601011115611c5d57600080fd5b8085850186850137600090830185015292830152509392505050565b600060208284031215611c8b57600080fd5b5051919050565b600060208284031215611ca457600080fd5b8151610511816119bf565b600060208083528351808285015260005b81811015611cdc57858101830151858201604001528201611cc0565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561034657610346611d48565b634e487b7160e01b600052603260045260246000fd5b600060018201611d9957611d99611d48565b5060010190565b8082018082111561034657610346611d48565b60ff818116838216019081111561034657610346611d48565b600060ff831680611ded57634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60ff828116828216039081111561034657610346611d48565b634e487b7160e01b600052602160045260246000fd5b808202811582820484141761034657610346611d4856fea26469706673582212200987ec8aedaae5da1213cf54e9e7f8ffe00fdb8c058ba41cf36d2558132e736064736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000005": { diff --git a/core/taiko_genesis/internal-2.json b/core/taiko_genesis/internal-2.json index d170fc7f428c..baf11b75026f 100644 --- a/core/taiko_genesis/internal-2.json +++ b/core/taiko_genesis/internal-2.json @@ -38,13 +38,13 @@ "0x048f359A4E6BdfC19685C0a8c18B1B5218b51B75": { "contractName": "LibBridgeRetry", "storage": {}, - "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069419df9245fb6ca20d92ee0e322d900251700898f9101cf36169607312e6e7664736f6c63430008120033", + "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c46aacad46edebd67106698b9482fe9fb9d1617e2cade6a234d97c5abdf6744264736f6c63430008120033", "balance": "0x0" }, - "0x9c34882271EC325AdE1f1cb399781bAB22eAfFb3": { + "0xB8c6246938495FB484577dabBD75232822ac249E": { "contractName": "LibBridgeProcess", "storage": {}, - "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201268158bbdfa4a70a31d83556ffc699a3225da29130101499b7b391ac21342c764736f6c63430008120033", + "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ee8615b59c9616bb0b578b94e8961f4a03e2ff9e6db0c7629a80681202b15b5664736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000006": { @@ -58,7 +58,7 @@ "0x4e5812bcbdde873c5fe239352366ed228c76696457942c5015c492f11c9b7da2": "0x0000000000000000000000000000777700000000000000000000000000000003", "0x3735f25b8e8f7ccb1ab37444024f5f04c1a1168bf4782d75a02bf365a9bce56f": "0x0000000000000000000000000000777700000000000000000000000000000007" }, - "code": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063715018a614610067578063841ab898146100715780638da5cb5b146100a0578063abca4796146100b1578063e1c7392a146100c4578063f2fde38b146100cc575b600080fd5b61006f6100df565b005b61008461007f366004610568565b6100f3565b6040516001600160a01b03909116815260200160405180910390f35b6033546001600160a01b0316610084565b61006f6100bf3660046105cb565b61012c565b61006f610218565b61006f6100da366004610622565b61032e565b6100e76103a4565b6100f160006103fe565b565b60008281526065602052604081208161010b84610450565b81526020810191909152604001600020546001600160a01b03169392505050565b6101346103a4565b60008381526065602052604081208161014c85610450565b8152602080820192909252604090810160009081205487825260659093529081206001600160a01b03909216925083919061018686610450565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826040516101c69190610644565b604080519182900382206001600160a01b038086168452841660208401529186917f19186eb1128fb2344dea8bbcb8a434a43635fbf3100723b2b4c5b319b1504a40910160405180910390a350505050565b600054610100900460ff16158080156102385750600054600160ff909116105b806102525750303b158015610252575060005460ff166001145b6102ba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156102dd576000805461ff0019166101001790555b6102e561046b565b801561032b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6103366103a4565b6001600160a01b03811661039b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b1565b61032b816103fe565b6033546001600160a01b031633146100f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102b1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000815160000361046357506000919050565b506020015190565b600054610100900460ff166104925760405162461bcd60e51b81526004016102b190610673565b6100f1600054610100900460ff166104bc5760405162461bcd60e51b81526004016102b190610673565b6100f1336103fe565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126104ec57600080fd5b813567ffffffffffffffff80821115610507576105076104c5565b604051601f8301601f19908116603f0116810190828211818310171561052f5761052f6104c5565b8160405283815286602085880101111561054857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561057b57600080fd5b82359150602083013567ffffffffffffffff81111561059957600080fd5b6105a5858286016104db565b9150509250929050565b80356001600160a01b03811681146105c657600080fd5b919050565b6000806000606084860312156105e057600080fd5b83359250602084013567ffffffffffffffff8111156105fe57600080fd5b61060a868287016104db565b925050610619604085016105af565b90509250925092565b60006020828403121561063457600080fd5b61063d826105af565b9392505050565b6000825160005b81811015610665576020818601810151858301520161064b565b506000920191825250919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220f7e130dd49c044ff652a9e231961ace2bb3114a1c520cd4fd5887ac5fd3d620764736f6c63430008120033", + "code": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063656b06a414610067578063715018a6146100b75780638da5cb5b146100c1578063decd8e39146100d2578063e1c7392a146100e5578063f2fde38b146100ed575b600080fd5b61009b610075366004610428565b60009182526065602090815260408084209284529190529020546001600160a01b031690565b6040516001600160a01b03909116815260200160405180910390f35b6100bf610100565b005b6033546001600160a01b031661009b565b6100bf6100e0366004610466565b610114565b6100bf610196565b6100bf6100fb36600461049b565b6102ac565b610108610322565b610112600061037c565b565b61011c610322565b600083815260656020908152604080832085845282529182902080546001600160a01b038581166001600160a01b0319831681179093558451928352169181018290529091849186917fe41a6e8584d6e19a0dfc5f9331be4ebe61b5f025d45da164c9ca6ee9b837cea9910160405180910390a350505050565b600054610100900460ff16158080156101b65750600054600160ff909116105b806101d05750303b1580156101d0575060005460ff166001145b6102385760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561025b576000805461ff0019166101001790555b6102636103ce565b80156102a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6102b4610322565b6001600160a01b0381166103195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161022f565b6102a98161037c565b6033546001600160a01b031633146101125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166103f55760405162461bcd60e51b815260040161022f906104bd565b610112600054610100900460ff1661041f5760405162461bcd60e51b815260040161022f906104bd565b6101123361037c565b6000806040838503121561043b57600080fd5b50508035926020909101359150565b80356001600160a01b038116811461046157600080fd5b919050565b60008060006060848603121561047b57600080fd5b83359250602084013591506104926040850161044a565b90509250925092565b6000602082840312156104ad57600080fd5b6104b68261044a565b9392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea26469706673582212202fe16b5d2756e265a45a405cb052a890cfb8ac0adbc8c77b5f4afac59c3ec3b764736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000001": { @@ -66,9 +66,9 @@ "storage": { "0x00000000000000000000000000000000000000000000000000000000000000cb": "0xb1cdc1a3b51cd0ae1113eb88f95dfd26aab10c50b39e31811e63cffc250b0da2", "0x00000000000000000000000000000000000000000000000000000000000000cc": "0x0000000000bebc200000000058b8ef1c0000000485b9d2e799564d28c46075dd", - "0x00000000000000000000000000000000000000000000000000000000000000cd": "0x00000000000000000000000a9507f6800000000000000000000000006447f6e2" + "0x00000000000000000000000000000000000000000000000000000000000000cd": "0x00000000000000000000000a9507f680000000000000000000000000644a8ab7" }, - "code": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063e1848cb01161007c578063e1848cb014610320578063ee82ac5e14610333578063f2fde38b14610346578063f535bd5614610359578063f5c9774014610373578063f5d11edc1461038d57600080fd5b80638da5cb5b146102ad5780638f3ca30d146102be5780639ee512f2146102d1578063a4e6775f146102ea578063c7b96908146102fd578063dac5df781461031757600080fd5b80633d384a4b116101155780633d384a4b1461020d5780633fa8535014610222578063539b8ade1461024d578063591aad8a14610260578063609bbd0614610292578063715018a6146102a557600080fd5b80630ca4dffd1461015257806310da3738146101825780631be2bfa7146101b7578063210c9fe8146101ca5780633ab76e9f146101fc575b600080fd5b6101656101603660046116e7565b6103a7565b6040516001600160a01b0390911681526020015b60405180910390f35b6101a97f92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce3881565b604051908152602001610179565b6101656101c5366004611734565b6103bd565b60cc546101e490600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610179565b6097546001600160a01b0316610165565b61022061021b3660046117a1565b6103d4565b005b60cc54610235906001600160801b031681565b6040516001600160801b039091168152602001610179565b60cd546101e4906001600160401b031681565b61027361026e3660046117e7565b61063a565b6040805160ff9094168452602084019290925290820152606001610179565b6101a96102a036600461181d565b610875565b6102206108b1565b6065546001600160a01b0316610165565b6102206102cc36600461184b565b6108c5565b61016571777735367b36bc9b61c50022d9d0700db4ec81565b6101a96102f836600461181d565b610c92565b60cd546101e490600160401b90046001600160401b031681565b6101a960cb5481565b6101a961032e36600461188c565b610ccb565b6101a961034136600461181d565b610ce7565b6102206103543660046118d1565b610d34565b60cd546101e490600160801b90046001600160401b031681565b60cc546101e490600160801b90046001600160401b031681565b60cd546101e490600160c01b90046001600160401b031681565b60006103b4468484610dad565b90505b92915050565b60006103ca848484610dad565b90505b9392505050565b3371777735367b36bc9b61c50022d9d0700db4ec1461040657604051636494e9f760e01b815260040160405180910390fd5b6000610413600143611904565b9050804060008061042384610e7d565b915091508160cb541461045c5760cb54604051636340d9fb60e11b81526004810191909152602481018390526044015b60405180910390fd5b60cb819055600084815260c96020908152604080832086905560cd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c1690810291909117909155815180830183528c81528084018c815282865260ca8552948390209051815593516001949094019390935580518b81529182018a90527fc7edd3d480c294297f3924d0ffab64074e7fb22e004ea492d5dd691fa1fc99c0910160405180910390a260cc54600090600160c01b90046001600160401b0316156105705760cd546105429061053b906001600160401b031642611904565b4588610f10565b60cd80546001600160401b03909216600160801b0267ffffffffffffffff60801b1990921691909117905590505b8048146105a357604051634083acad60e01b81526001600160401b03808316600483015248166024820152604401610453565b60cd805467ffffffffffffffff1916426001600160401b03908116918217909255604080514384168152848416602082015245909316908301526060820152608081018590524460a08201524160c082015263ffffffff461660e08201527f4dcb01f99c4a2c27a16ab38d00ec92434f8231be81fa62e058f260d3c7156029906101000160405180910390a1505050505050505050565b60008060008360ff1660011415801561065757508360ff16600214155b156106755760405163bcd2d90d60e01b815260040160405180910390fd5b8360ff166001146106a6577fc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee56106c8565b7f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817985b915060008460ff166001146106fd577fad77eceea844778cb4376153fc8f06f12f1695df4585bf75bfb17ec19ce9081861071f565b7fb4a95509ce05fe8d45987859a067780d16a367c0e2cacf79cd301b93fb7179405b905060008560ff16600114610754577f71620584f61c57e688bbd3fd7a39a036e588d962c4c830f3dacbc15c917e02f2610776565b7f45b59254b0320fd853f3f38ac574999e91bd75fd5e6cab9c22c5e71fc6d276e45b82880192831001905060ff86166001036107b0576107a98282600170014551231950b75fc4402da1732fc9bebe19610fb0565b925061081f565b6107f87f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a16107f38484600170014551231950b75fc4402da1732fc9bebe19610fb0565b610fff565b909250905061081c8282600170014551231950b75fc4402da1732fc9bebe19610fb0565b92505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561086c576108638370014551231950b75fc4402da1732fc9bebe19611904565b92506001851894505b50509250925092565b60008082156108845782610898565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020600101549392505050565b6108b961101e565b6108c36000611078565b565b600054610100900460ff16158080156108e55750600054600160ff909116105b806108ff5750303b1580156108ff575060005460ff166001145b6109625760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610453565b6000805460ff191660011790558015610985576000805461ff0019166101001790555b600146111580610999575063ffffffff4610155b156109b7576040516306cffa2760e01b815260040160405180910390fd5b60014311156109d957604051635a0f9e4160e11b815260040160405180910390fd5b6109e96040830160208401611917565b6001600160401b031615610bee57610a046020830183611917565b6001600160401b03161580610a2f5750610a246060830160408401611917565b6001600160401b0316155b80610a505750610a456080830160608401611917565b6001600160401b0316155b80610a715750610a6660a0830160808401611917565b6001600160401b0316155b15610a8f57604051639cc448b560e01b815260040160405180910390fd5b6000610ad6610aa46060850160408601611917565b610ab16020860186611917565b610ac16080870160608801611917565b610ad160a0880160808901611917565b6110ca565b60cc80546fffffffffffffffffffffffffffffffff19166001600160801b0392831617905590915081161580610b1c57506001600160401b036001600160801b03821610155b80610b30575060cc546001600160801b0316155b15610b4e57604051639cc448b560e01b815260040160405180910390fd5b60cc805467ffffffffffffffff60801b1916600160801b6001600160401b03841602179055610b836040840160208501611917565b60cc80546001600160401b0392909216600160c01b026001600160c01b039092169190911790556002610bbc6060850160408601611917565b610bc69190611948565b60cd60106101000a8154816001600160401b0302191690836001600160401b03160217905550505b60cd805467ffffffffffffffff1916426001600160401b0316179055610c13836111c9565b610c1c43610e7d565b5060cb554315610c47576000610c33600143611904565b600081815260c96020526040902090409055505b8015610c8d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000808215610ca15782610cb5565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020549392505050565b6000610cde8463ffffffff168484610f10565b50949350505050565b6000438210610cf857506000919050565b4382108015610d125750610d0e61010043611904565b8210155b15610d1c57504090565b50600090815260c9602052604090205490565b919050565b610d3c61101e565b6001600160a01b038116610da15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610453565b610daa81611078565b50565b609754604051631083571360e31b81526000916001600160a01b03169063841ab89890610de090879087906004016119b4565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906119cd565b9050816103cd576040516001600160a01b038216151590610e4890869086906020016119ea565b60405160208183030381529060405290610e755760405162461bcd60e51b81526004016104539190611a48565b509392505050565b600080610e88611615565b60005b60ff81108015610e9e5750806001018510155b15610ed0576000198186030180408360ff83066101008110610ec257610ec2611a5b565b602002015250600101610e8b565b5046611fe082015261200081209250834081610eed60ff87611a71565b6101008110610efe57610efe611a5b565b60200201526120009020919391925050565b600080806202bf206001600160401b03851611610f2e576000610f35565b6202bf2084035b60cd5460cc54919250600160801b90046001600160401b039081168184160191600160c01b90048116880290610f779082610f7085826111e2565b03906111f8565b60cc54909450610fa693506001600160401b03600160801b82041692506001600160801b03169050838761120d565b9150935093915050565b600060405160408152602080820152602060408201528460608201528560808201528360a08201528260c082015260208160e08360056107d05a03fa610ff557600080fd5b5195945050505050565b6000806000198385098385029250828110838203039150509250929050565b6065546001600160a01b031633146108c35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610453565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080856001600160401b03166000036110e6576110e6611a85565b60006110f3600288611948565b90506111116001600160401b038816680755bf798b4a1bf1e4611a9b565b925061113061112b84886001600160401b0316848961120d565b6112cc565b915060006111408484848961120d565b9050600061115a8585856111558b6002611ab5565b61120d565b905060008261116b83612710611ae0565b6111759190611af7565b9050806001600160401b0316876001600160401b0316146111bc576040516331c2ec2360e21b81526001600160401b03808916600483015282166024820152604401610453565b5050505094509492505050565b6111d1611339565b6111d9611368565b610daa81611397565b60008183116111f157816103b4565b5090919050565b600081831161120757826103b4565b50919050565b60006001600160801b0385161580159061122f57506001600160801b03841615155b61123b5761123b611a85565b60006001600160401b038316156112525782611255565b60015b9050600061126c856001600160401b0316886113e0565b9050600061128c61127d8488611b0b565b6001600160401b0316896113e0565b90506001600160801b0387166001600160401b0384166112ac8484611904565b6112b69190611af7565b6112c09190611af7565b98975050505050505050565b60006001600160801b038211156113355760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610453565b5090565b600054610100900460ff166113605760405162461bcd60e51b815260040161045390611b32565b6108c3611432565b600054610100900460ff1661138f5760405162461bcd60e51b815260040161045390611b32565b6108c361145f565b6001600160a01b0381166113be57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806113f66001600160801b03841685611ae0565b9050680755bf798b4a1bf1e48110611421576040516372de381d60e01b815260040160405180910390fd5b61142a8161148f565b949350505050565b600054610100900460ff166114595760405162461bcd60e51b815260040161045390611b32565b60018055565b600054610100900460ff166114865760405162461bcd60e51b815260040161045390611b32565b6108c333611078565b6000680248ce36a70cb26b3e1982136114aa57506000919050565b680755bf798b4a1bf1e582126114d357604051631a93c68960e11b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b6d2c06887d92262d378b9593af35346c09791803c2923d5d9721c3da80929091056001605f1b0190921d6bb17217f7d1cf79abc9e3b39881029095039081018102606090811d6d019dd9374d4315c8464a395fc09881016c1bff318b126baa436ea9aeaffd19840102821d93840193016d29c9ad45cc0beb0a2ff097a7bab40192909202821d6dcf3c27b2e487711b467e90f19320016c22fcd1cffa6fa000f6e27eeca082018202831d6d022f98fbc368092c79210d196fa0018202831d6d13aaae3ba38de06adc25ebfacc0901820290921d6d624dcbeb5e25df590e409325888a01026d360d7aeea093263ec6495851bd9760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b604051806120000160405280610100906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261165c57600080fd5b81356001600160401b038082111561167657611676611635565b604051601f8301601f19908116603f0116810190828211818310171561169e5761169e611635565b816040528381528660208588010111156116b757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80358015158114610d2f57600080fd5b600080604083850312156116fa57600080fd5b82356001600160401b0381111561171057600080fd5b61171c8582860161164b565b92505061172b602084016116d7565b90509250929050565b60008060006060848603121561174957600080fd5b8335925060208401356001600160401b0381111561176657600080fd5b6117728682870161164b565b925050611781604085016116d7565b90509250925092565b80356001600160401b0381168114610d2f57600080fd5b600080600080608085870312156117b757600080fd5b84359350602085013592506117ce6040860161178a565b91506117dc6060860161178a565b905092959194509250565b600080604083850312156117fa57600080fd5b82359150602083013560ff8116811461181257600080fd5b809150509250929050565b60006020828403121561182f57600080fd5b5035919050565b6001600160a01b0381168114610daa57600080fd5b60008082840360c081121561185f57600080fd5b833561186a81611836565b925060a0601f198201121561187e57600080fd5b506020830190509250929050565b6000806000606084860312156118a157600080fd5b833563ffffffff811681146118b557600080fd5b92506118c36020850161178a565b91506117816040850161178a565b6000602082840312156118e357600080fd5b81356103cd81611836565b634e487b7160e01b600052601160045260246000fd5b818103818111156103b7576103b76118ee565b60006020828403121561192957600080fd5b6103b48261178a565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b038084168061196257611962611932565b92169190910492915050565b6000815180845260005b8181101561199457602081850181015186830182015201611978565b506000602082860101526020601f19601f83011685010191505092915050565b8281526040602082015260006103ca604083018461196e565b6000602082840312156119df57600080fd5b81516103cd81611836565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e08201526000610100806060840152611a3f8184018561196e565b95945050505050565b6020815260006103b4602083018461196e565b634e487b7160e01b600052603260045260246000fd5b600082611a8057611a80611932565b500690565b634e487b7160e01b600052600160045260246000fd5b60006001600160801b038084168061196257611962611932565b6001600160401b03818116838216028082169190828114611ad857611ad86118ee565b505092915050565b80820281158282048414176103b7576103b76118ee565b600082611b0657611b06611932565b500490565b6001600160401b03818116838216019080821115611b2b57611b2b6118ee565b5092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122042ebe6eea7309239f3880d39e251ac2465be367c776314009bd5a6d744b5f7f464736f6c63430008120033", + "code": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638f3ca30d116100c3578063e1848cb01161007c578063e1848cb01461031c578063ee82ac5e1461032f578063f2fde38b14610342578063f535bd5614610355578063f5c977401461036f578063f5d11edc1461038957600080fd5b80638f3ca30d146102a75780639ee512f2146102ba578063a4e6775f146102d3578063a86f9d9e146102e6578063c7b96908146102f9578063dac5df781461031357600080fd5b8063539b8ade11610115578063539b8ade14610223578063591aad8a14610236578063609bbd06146102685780636c6563f61461027b578063715018a61461028e5780638da5cb5b1461029657600080fd5b806310da373814610152578063210c9fe81461018c5780633ab76e9f146101be5780633d384a4b146101e35780633fa85350146101f8575b600080fd5b6101797f92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce3881565b6040519081526020015b60405180910390f35b60cc546101a690600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610183565b6097546001600160a01b03165b6040516001600160a01b039091168152602001610183565b6101f66101f1366004611691565b6103a3565b005b60cc5461020b906001600160801b031681565b6040516001600160801b039091168152602001610183565b60cd546101a6906001600160401b031681565b6102496102443660046116d7565b610609565b6040805160ff9094168452602084019290925290820152606001610183565b61017961027636600461170d565b610844565b6101cb610289366004611736565b610880565b6101f6610897565b6065546001600160a01b03166101cb565b6101f66102b5366004611780565b6108ab565b6101cb71777735367b36bc9b61c50022d9d0700db4ec81565b6101796102e136600461170d565b610c78565b6101cb6102f43660046117c1565b610cb1565b60cd546101a690600160401b90046001600160401b031681565b61017960cb5481565b61017961032a3660046117ed565b610cc7565b61017961033d36600461170d565b610ce3565b6101f6610350366004611832565b610d30565b60cd546101a690600160801b90046001600160401b031681565b60cc546101a690600160801b90046001600160401b031681565b60cd546101a690600160c01b90046001600160401b031681565b3371777735367b36bc9b61c50022d9d0700db4ec146103d557604051636494e9f760e01b815260040160405180910390fd5b60006103e2600143611865565b905080406000806103f284610da9565b915091508160cb541461042b5760cb54604051636340d9fb60e11b81526004810191909152602481018390526044015b60405180910390fd5b60cb819055600084815260c96020908152604080832086905560cd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c1690810291909117909155815180830183528c81528084018c815282865260ca8552948390209051815593516001949094019390935580518b81529182018a90527fc7edd3d480c294297f3924d0ffab64074e7fb22e004ea492d5dd691fa1fc99c0910160405180910390a260cc54600090600160c01b90046001600160401b03161561053f5760cd546105119061050a906001600160401b031642611865565b4588610e3c565b60cd80546001600160401b03909216600160801b0267ffffffffffffffff60801b1990921691909117905590505b80481461057257604051634083acad60e01b81526001600160401b03808316600483015248166024820152604401610422565b60cd805467ffffffffffffffff1916426001600160401b03908116918217909255604080514384168152848416602082015245909316908301526060820152608081018590524460a08201524160c082015263ffffffff461660e08201527f4dcb01f99c4a2c27a16ab38d00ec92434f8231be81fa62e058f260d3c7156029906101000160405180910390a1505050505050505050565b60008060008360ff1660011415801561062657508360ff16600214155b156106445760405163bcd2d90d60e01b815260040160405180910390fd5b8360ff16600114610675577fc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5610697565b7f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817985b915060008460ff166001146106cc577fad77eceea844778cb4376153fc8f06f12f1695df4585bf75bfb17ec19ce908186106ee565b7fb4a95509ce05fe8d45987859a067780d16a367c0e2cacf79cd301b93fb7179405b905060008560ff16600114610723577f71620584f61c57e688bbd3fd7a39a036e588d962c4c830f3dacbc15c917e02f2610745565b7f45b59254b0320fd853f3f38ac574999e91bd75fd5e6cab9c22c5e71fc6d276e45b82880192831001905060ff861660010361077f576107788282600170014551231950b75fc4402da1732fc9bebe19610edc565b92506107ee565b6107c77f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a16107c28484600170014551231950b75fc4402da1732fc9bebe19610edc565b610f2b565b90925090506107eb8282600170014551231950b75fc4402da1732fc9bebe19610edc565b92505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561083b576108328370014551231950b75fc4402da1732fc9bebe19611865565b92506001851894505b50509250925092565b60008082156108535782610867565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020600101549392505050565b600061088d848484610f4a565b90505b9392505050565b61089f611063565b6108a960006110bd565b565b600054610100900460ff16158080156108cb5750600054600160ff909116105b806108e55750303b1580156108e5575060005460ff166001145b6109485760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610422565b6000805460ff19166001179055801561096b576000805461ff0019166101001790555b60014611158061097f575063ffffffff4610155b1561099d576040516306cffa2760e01b815260040160405180910390fd5b60014311156109bf57604051635a0f9e4160e11b815260040160405180910390fd5b6109cf6040830160208401611878565b6001600160401b031615610bd4576109ea6020830183611878565b6001600160401b03161580610a155750610a0a6060830160408401611878565b6001600160401b0316155b80610a365750610a2b6080830160608401611878565b6001600160401b0316155b80610a575750610a4c60a0830160808401611878565b6001600160401b0316155b15610a7557604051639cc448b560e01b815260040160405180910390fd5b6000610abc610a8a6060850160408601611878565b610a976020860186611878565b610aa76080870160608801611878565b610ab760a0880160808901611878565b61110f565b60cc80546fffffffffffffffffffffffffffffffff19166001600160801b0392831617905590915081161580610b0257506001600160401b036001600160801b03821610155b80610b16575060cc546001600160801b0316155b15610b3457604051639cc448b560e01b815260040160405180910390fd5b60cc805467ffffffffffffffff60801b1916600160801b6001600160401b03841602179055610b696040840160208501611878565b60cc80546001600160401b0392909216600160c01b026001600160c01b039092169190911790556002610ba26060850160408601611878565b610bac91906118a9565b60cd60106101000a8154816001600160401b0302191690836001600160401b03160217905550505b60cd805467ffffffffffffffff1916426001600160401b0316179055610bf98361120e565b610c0243610da9565b5060cb554315610c2d576000610c19600143611865565b600081815260c96020526040902090409055505b8015610c73576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000808215610c875782610c9b565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020549392505050565b6000610cbe468484610f4a565b90505b92915050565b6000610cda8463ffffffff168484610e3c565b50949350505050565b6000438210610cf457506000919050565b4382108015610d0e5750610d0a61010043611865565b8210155b15610d1857504090565b50600090815260c9602052604090205490565b919050565b610d38611063565b6001600160a01b038116610d9d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610422565b610da6816110bd565b50565b600080610db461165a565b60005b60ff81108015610dca5750806001018510155b15610dfc576000198186030180408360ff83066101008110610dee57610dee6118cf565b602002015250600101610db7565b5046611fe082015261200081209250834081610e1960ff876118e5565b6101008110610e2a57610e2a6118cf565b60200201526120009020919391925050565b600080806202bf206001600160401b03851611610e5a576000610e61565b6202bf2084035b60cd5460cc54919250600160801b90046001600160401b039081168184160191600160c01b90048116880290610ea39082610e9c8582611227565b039061123d565b60cc54909450610ed293506001600160401b03600160801b82041692506001600160801b031690508387611252565b9150935093915050565b600060405160408152602080820152602060408201528460608201528560808201528360a08201528260c082015260208160e08360056107d05a03fa610f2157600080fd5b5195945050505050565b6000806000198385098385029250828110838203039150509250929050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610f9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbf91906118f9565b905081610890576040516001600160a01b03821615159061102e90869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b6040516020818303038152906040529061105b5760405162461bcd60e51b81526004016104229190611916565b509392505050565b6065546001600160a01b031633146108a95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610422565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080856001600160401b031660000361112b5761112b611964565b60006111386002886118a9565b90506111566001600160401b038816680755bf798b4a1bf1e461197a565b925061117561117084886001600160401b03168489611252565b611311565b9150600061118584848489611252565b9050600061119f85858561119a8b6002611994565b611252565b90506000826111b0836127106119bf565b6111ba91906119d6565b9050806001600160401b0316876001600160401b031614611201576040516331c2ec2360e21b81526001600160401b03808916600483015282166024820152604401610422565b5050505094509492505050565b61121661137e565b61121e6113ad565b610da6816113dc565b60008183116112365781610cbe565b5090919050565b600081831161124c5782610cbe565b50919050565b60006001600160801b0385161580159061127457506001600160801b03841615155b61128057611280611964565b60006001600160401b03831615611297578261129a565b60015b905060006112b1856001600160401b031688611425565b905060006112d16112c284886119ea565b6001600160401b031689611425565b90506001600160801b0387166001600160401b0384166112f18484611865565b6112fb91906119d6565b61130591906119d6565b98975050505050505050565b60006001600160801b0382111561137a5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610422565b5090565b600054610100900460ff166113a55760405162461bcd60e51b815260040161042290611a11565b6108a9611477565b600054610100900460ff166113d45760405162461bcd60e51b815260040161042290611a11565b6108a96114a4565b6001600160a01b03811661140357604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60008061143b6001600160801b038416856119bf565b9050680755bf798b4a1bf1e48110611466576040516372de381d60e01b815260040160405180910390fd5b61146f816114d4565b949350505050565b600054610100900460ff1661149e5760405162461bcd60e51b815260040161042290611a11565b60018055565b600054610100900460ff166114cb5760405162461bcd60e51b815260040161042290611a11565b6108a9336110bd565b6000680248ce36a70cb26b3e1982136114ef57506000919050565b680755bf798b4a1bf1e5821261151857604051631a93c68960e11b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b6d2c06887d92262d378b9593af35346c09791803c2923d5d9721c3da80929091056001605f1b0190921d6bb17217f7d1cf79abc9e3b39881029095039081018102606090811d6d019dd9374d4315c8464a395fc09881016c1bff318b126baa436ea9aeaffd19840102821d93840193016d29c9ad45cc0beb0a2ff097a7bab40192909202821d6dcf3c27b2e487711b467e90f19320016c22fcd1cffa6fa000f6e27eeca082018202831d6d022f98fbc368092c79210d196fa0018202831d6d13aaae3ba38de06adc25ebfacc0901820290921d6d624dcbeb5e25df590e409325888a01026d360d7aeea093263ec6495851bd9760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b0381168114610d2b57600080fd5b600080600080608085870312156116a757600080fd5b84359350602085013592506116be6040860161167a565b91506116cc6060860161167a565b905092959194509250565b600080604083850312156116ea57600080fd5b82359150602083013560ff8116811461170257600080fd5b809150509250929050565b60006020828403121561171f57600080fd5b5035919050565b80358015158114610d2b57600080fd5b60008060006060848603121561174b57600080fd5b833592506020840135915061176260408501611726565b90509250925092565b6001600160a01b0381168114610da657600080fd5b60008082840360c081121561179457600080fd5b833561179f8161176b565b925060a0601f19820112156117b357600080fd5b506020830190509250929050565b600080604083850312156117d457600080fd5b823591506117e460208401611726565b90509250929050565b60008060006060848603121561180257600080fd5b833563ffffffff8116811461181657600080fd5b92506118246020850161167a565b91506117626040850161167a565b60006020828403121561184457600080fd5b81356108908161176b565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cc157610cc161184f565b60006020828403121561188a57600080fd5b610cbe8261167a565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b03808416806118c3576118c3611893565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b6000826118f4576118f4611893565b500690565b60006020828403121561190b57600080fd5b81516108908161176b565b600060208083528351808285015260005b8181101561194357858101830151858201604001528201611927565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052600160045260246000fd5b60006001600160801b03808416806118c3576118c3611893565b6001600160401b038181168382160280821691908281146119b7576119b761184f565b505092915050565b8082028115828204841417610cc157610cc161184f565b6000826119e5576119e5611893565b500490565b6001600160401b03818116838216019080821115611a0a57611a0a61184f565b5092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220b970c8de8ef1e70b8513d86e8c7feb8e328bd8620f2c705cfd143a1c068a681a64736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000004": { @@ -79,7 +79,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" }, - "code": "0x6080604052600436106101235760003560e01c8063715018a6116100a0578063ce70f39b11610064578063ce70f39b1461040e578063d0496d6a1461042e578063f2fde38b1461049d578063f9803919146104bd578063fee99b22146104dd57600080fd5b8063715018a6146103885780638da5cb5b1461039d57806396e17852146103bb578063a4444efd146103ce578063bac443e2146103ee57600080fd5b80635075a9d4116100e75780635075a9d4146102cd578063540be6a3146102fa5780635817b0c31461031a5780635d0bd98614610348578063606b5b741461036857600080fd5b80630ca4dffd146101f257806319ab453c1461022f5780631be2bfa71461024f578063343b643c1461026f5780633ab76e9f146102af57600080fd5b366101ed576101566040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060016104fd565b6001600160a01b0316336001600160a01b0316141580156101b657506101a06040518060400160405280600b81526020016a195d1a195c97dd985d5b1d60aa1b81525060016104fd565b6001600160a01b0316336001600160a01b031614155b80156101cd57506065546001600160a01b03163314155b156101eb576040516345dd044560e11b815260040160405180910390fd5b005b600080fd5b3480156101fe57600080fd5b5061021261020d366004612bef565b6104fd565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023b57600080fd5b506101eb61024a366004612c60565b610513565b34801561025b57600080fd5b5061021261026a366004612c7d565b61062b565b34801561027b57600080fd5b5061029f61028a366004612cd7565b600090815260cd602052604090205460ff1690565b6040519015158152602001610226565b3480156102bb57600080fd5b506097546001600160a01b0316610212565b3480156102d957600080fd5b506102ed6102e8366004612cd7565b610642565b6040516102269190612d28565b34801561030657600080fd5b5061029f610315366004612cd7565b61064d565b34801561032657600080fd5b5061033a610335366004612d4f565b610659565b604051908152602001610226565b34801561035457600080fd5b5061029f610363366004612cd7565b61066c565b34801561037457600080fd5b5061033a610383366004612cd7565b61067f565b34801561039457600080fd5b506101eb61068a565b3480156103a957600080fd5b506065546001600160a01b0316610212565b61033a6103c9366004612d4f565b61069e565b3480156103da57600080fd5b5061029f6103e9366004612dcb565b6106cc565b3480156103fa57600080fd5b506101eb610409366004612e1d565b6106e4565b34801561041a57600080fd5b5061029f610429366004612dcb565b610708565b34801561043a57600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260ca5480825260cb546001600160a01b0390811683860190815260cc549387019384528651928352511693810193909352519282019290925201610226565b3480156104a957600080fd5b506101eb6104b8366004612c60565b610717565b3480156104c957600080fd5b506101eb6104d8366004612e85565b610790565b3480156104e957600080fd5b506101eb6104f8366004612e1d565b6107ae565b600061050a4684846107c4565b90505b92915050565b600054610100900460ff16158080156105335750600054600160ff909116105b8061054d5750303b15801561054d575060005460ff166001145b6105b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156105d8576000805461ff0019166101001790555b6105e182610894565b8015610627576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006106388484846107c4565b90505b9392505050565b600061050d826108ad565b600061050d30836108d8565b600061050d61066783612eba565b6109b9565b600061067830836109e9565b5092915050565b600061050d82610a72565b610692610aad565b61069c6000610b07565b565b60006106a8610b59565b6106bc60c9306106b785612eba565b610bb2565b90506106c760018055565b919050565b60006106db3086868686610e93565b95945050505050565b6106ec610b59565b6106fa60c930858585610ff6565b61070360018055565b505050565b60006106db30868686866112e7565b61071f610aad565b6001600160a01b0381166107845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b61078d81610b07565b50565b610798610b59565b6107a560c930848461157c565b61062760018055565b6107b6610b59565b6106fa60c9308585856117b4565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906107f7908790879060040161300b565b602060405180830381865afa158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190613024565b90508161063b576040516001600160a01b03821615159061085f9086908690602001613041565b6040516020818303038152906040529061088c5760405162461bcd60e51b81526004016105ac9190613096565b509392505050565b61089c611cb3565b6108a4611ce2565b61078d81611d11565b6000806108b983610a72565b80549091508060038111156108d0576108d0612cf0565b949350505050565b604051630ca4dffd60e01b81526000906001600160a01b03841690630ca4dffd906109079084906004016130a9565b602060405180830381865afa158015610924573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109489190613024565b604051631933b5e360e11b8152306004820152602481018490526001600160a01b0391909116906332676bc690604401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a91906130d9565b6000816040516020016109cc91906130f6565b604051602081830303815290604052805190602001209050919050565b600080836001600160a01b0316631be2bfa78460016040518363ffffffff1660e01b8152600401610a1b9291906131f0565b602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190613024565b6001600160a01b03811615159590945092505050565b60006040518060400160405280600e81526020016d4d4553534147455f53544154555360901b815250826040516020016109cc92919061321e565b6065546001600160a01b0316331461069c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ac565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260015403610bab5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105ac565b6002600155565b60808101516000906001600160a01b0316610be0576040516301b1868360e71b815260040160405180910390fd5b600080610bf18585606001516109e9565b91509150811580610c055750468460600151145b15610c235760405163e822b48d60e01b815260040160405180910390fd5b60a08401516001600160a01b03161580610c525750806001600160a01b03168460a001516001600160a01b0316145b15610c705760405163b9ad6a0f60e01b815260040160405180910390fd5b60008461012001518561010001518660e00151610c8d9190613256565b610c979190613256565b9050348114610cb957604051632609a19760e21b815260040160405180910390fd5b604051630ca4dffd60e01b81526000906001600160a01b03881690630ca4dffd90610ce990600190600401613269565b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a9190613024565b9050610d3f6001600160a01b03821683611d5a565b8754886000610d4d83613296565b909155508652336020870152466040870152610d68866109b9565b604051630ca4dffd60e01b81529095506001600160a01b03881690630ca4dffd90610d98906000906004016130a9565b602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190613024565b6001600160a01b03166366ca2bc0866040518263ffffffff1660e01b8152600401610e0691815260200190565b6020604051808303816000875af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4991906132af565b50847f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f387604051610e7a91906130f6565b60405180910390a2505050509392505050565b60018055565b600080866001600160a01b0316631be2bfa78660006040518363ffffffff1660e01b8152600401610ec59291906131f0565b602060405180830381865afa158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f069190613024565b604051630ca4dffd60e01b81529091506001600160a01b03881690630ca4dffd90610f36906000906004016130a9565b602060405180830381865afa158015610f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f779190613024565b6001600160a01b0316635221f61386838988886040518663ffffffff1660e01b8152600401610faa9594939291906132c8565b602060405180830381865afa158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb91906130d9565b979650505050505050565b600061100860a0850160808601612c60565b6001600160a01b03160361102f576040516301b1868360e71b815260040160405180910390fd5b468360400135146110535760405163e822b48d60e01b815260040160405180910390fd5b600061106161066785612eba565b600081815260048801602052604090205490915060ff16151560010361109a5760405163afde133560e01b815260040160405180910390fd5b6110ab8582866060013586866112e7565b6110c85760405163498b0b1d60e01b815260040160405180910390fd5b60008181526004870160205260408120805460ff191660011790556110f661010086013560e0870135613256565b9050801561128b57604051630ca4dffd60e01b81526000906001600160a01b03881690630ca4dffd9061112e90600190600401613269565b602060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f9190613024565b90506001600160a01b03811615611204576001600160a01b03811663ba0bbd9561119f60a0890160808a01612c60565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b1580156111e757600080fd5b505af11580156111fb573d6000803e3d6000fd5b50505050611289565b600061121660a0880160808901612c60565b6001600160a01b03168360405160006040518083038185875af1925050503d8060008114611260576040519150601f19603f3d011682016040523d82523d6000602084013e611265565b606091505b50509050806112875760405163f6664cf160e01b815260040160405180910390fd5b505b505b817fea00c741e39d1d9ab1c6703152d71f9da09a782ed4ae128414730dadbb9bd8476112bd60a0880160808901612c60565b604080516001600160a01b039092168252602082018590520160405180910390a250505050505050565b60004684036113095760405163e822b48d60e01b815260040160405180910390fd5b600085900361132b5760405163a6407c9360e01b815260040160405180910390fd5b6000611339838501856133b2565b60408051630ca4dffd60e01b8152600481019190915260056044820152647461696b6f60d81b60648201526000602482018190529192506001600160a01b03891690630ca4dffd90608401602060405180830381865afa1580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c59190613024565b8251610100015160405163a4e6775f60e01b81526001600160801b0390911660048201526001600160a01b03919091169063a4e6775f90602401602060405180830381865afa15801561141c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144091906132af565b90508015806114595750815161145590611e10565b8114155b15611469576000925050506106db565b815160600151604051631be2bfa760e01b8152734F6d0287F08bD8b05DB0272c493A2e9DA96753019163a5427462916001600160a01b038c1690631be2bfa7906114ba908c906000906004016131f0565b602060405180830381865afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb9190613024565b6115048b610a72565b602087015160405160e086901b6001600160e01b031916815261152f94939291600391600401613556565b602060405180830381865af415801561154c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157091906130d9565b98975050505050505050565b610140820135158061158b5750805b156115d1576115a060a0830160808401612c60565b6001600160a01b0316336001600160a01b0316146115d15760405163d7f4fc9f60e01b815260040160405180910390fd5b60006115df61066784612eba565b905060016115ec826108ad565b60038111156115fd576115fd612cf0565b1461161b57604051631f6646b560e01b815260040160405180910390fd5b604051630ca4dffd60e01b81526000906001600160a01b03861690630ca4dffd9061164b90600190600401613269565b602060405180830381865afa158015611668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168c9190613024565b90506001600160a01b038116156116fc57604051630d73bb3d60e41b815261010085013560048201526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b1580156116e357600080fd5b505af11580156116f7573d6000803e3d6000fd5b505050505b6117088685845a611e35565b1561171d57611718826002611f8d565b6117ac565b82156117945761172e826003611f8d565b60008061174160e0870160c08801612c60565b6001600160a01b0316146117645761175f60e0860160c08701612c60565b611774565b61177460a0860160808701612c60565b905061178e6001600160a01b038216610100870135611d5a565b506117ac565b6117ac6001600160a01b038216610100860135611d5a565b505050505050565b6101408301351580156117e857506117d260a0840160808501612c60565b6001600160a01b0316336001600160a01b031614155b156118065760405163398b635960e21b815260040160405180910390fd5b4683606001351461182a5760405163e822b48d60e01b815260040160405180910390fd5b600061183861066785612eba565b90506000611845826108ad565b600381111561185657611856612cf0565b1461187457604051632c3b0c4b60e01b815260040160405180910390fd5b6000856001600160a01b0316631be2bfa7866040013560006040518363ffffffff1660e01b81526004016118a99291906131f0565b602060405180830381865afa1580156118c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ea9190613024565b604051630ca4dffd60e01b81529091506001600160a01b03871690630ca4dffd9061191a906000906004016130a9565b602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195b9190613024565b6001600160a01b0316635221f6138660400135838588886040518663ffffffff1660e01b81526004016119929594939291906132c8565b602060405180830381865afa1580156119af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d391906130d9565b6119f0576040516314504c7360e31b815260040160405180910390fd5b6000610120860135611a0b61010088013560e0890135613256565b611a159190613256565b90506000876001600160a01b0316630ca4dffd60016040518263ffffffff1660e01b8152600401611a469190613269565b602060405180830381865afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a879190613024565b90506001600160a01b03811615801590611aa15750600082115b15611b0157604051630d73bb3d60e41b8152600481018390526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050505b611b2860e0880135611b1960a08a0160808b01612c60565b6001600160a01b031690611d5a565b60008030611b3c60c08b0160a08c01612c60565b6001600160a01b03161480611b6957506000611b5e60c08b0160a08c01612c60565b6001600160a01b0316145b15611b7e575060029050610100880135611bf5565b6000611b9060a08b0160808c01612c60565b6001600160a01b0316336001600160a01b031614611bb357896101400135611bb5565b5a5b90506000611bc58d8c8a85611e35565b90508015611bd65760029350611bf2565b60019350611bf26001600160a01b0386166101008d0135611d5a565b50505b611bff8683611f8d565b600080611c1260e08c0160c08d01612c60565b6001600160a01b031614611c3557611c3060e08b0160c08c01612c60565b611c45565b611c4560a08b0160808c01612c60565b90506001600160a01b0381163303611c83576000611c68836101208d0135613256565b9050611c7d6001600160a01b03831682611d5a565b50611ca5565b611c92336101208c0135611d5a565b611ca56001600160a01b03821683611d5a565b505050505050505050505050565b600054610100900460ff16611cda5760405162461bcd60e51b81526004016105ac90613589565b61069c612006565b600054610100900460ff16611d095760405162461bcd60e51b81526004016105ac90613589565b61069c61202d565b6001600160a01b038116611d3857604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b801580611d6e57506001600160a01b038216155b15611d77575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b50509050806107035760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016105ac565b600080611e26611e2184600061205d565b61247e565b80516020909101209392505050565b600081600003611e5857604051637f0e960960e11b815260040160405180910390fd5b6040518060600160405280848152602001856020016020810190611e7c9190612c60565b6001600160a01b039081168252604087810135602093840152835160018a0155918301516002890180546001600160a01b0319169190921617905501516003860155611ece60c0850160a08601612c60565b6001600160a01b031682610100860135611eec6101608801886135d4565b604051611efa92919061361a565b600060405180830381858888f193505050503d8060008114611f38576040519150601f19603f3d011682016040523d82523d6000602084013e611f3d565b606091505b505060408051606081018252600180825260208201819052600019919092018190528782018290556002880180546001600160a01b03191690921790915560039096019590955550929392505050565b806003811115611f9f57611f9f612cf0565b611fa8836108ad565b6003811115611fb957611fb9612cf0565b1461062757611fc882826124c2565b817f0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c8233604051611ffa92919061362a565b60405180910390a25050565b600054610100900460ff16610e8d5760405162461bcd60e51b81526004016105ac90613589565b600054610100900460ff166120545760405162461bcd60e51b81526004016105ac90613589565b61069c33610b07565b610200820151606090156120c857612076826011613256565b6001600160401b0381111561208d5761208d612ad1565b6040519080825280602002602001820160405280156120c057816020015b60608152602001906001900390816120ab5790505b509050612137565b6101e0830151156120de57612076826010613256565b6120e982600f613256565b6001600160401b0381111561210057612100612ad1565b60405190808252806020026020018201604052801561213357816020015b606081526020019060019003908161211e5790505b5090505b8251612142906124eb565b8160008151811061215557612155613650565b602002602001018190525061216d83602001516124eb565b8160018151811061218057612180613650565b602002602001018190525061219883604001516124fe565b816002815181106121ab576121ab613650565b60200260200101819052506121c383606001516124eb565b816003815181106121d6576121d6613650565b60200260200101819052506121ee83608001516124eb565b8160048151811061220157612201613650565b60200260200101819052506122198360a001516124eb565b8160058151811061222c5761222c613650565b60200260200101819052506122638360c0015160405160200161224f9190613666565b604051602081830303815290604052612527565b8160068151811061227657612276613650565b602002602001018190525061228e8360e00151612596565b816007815181106122a1576122a1613650565b60200260200101819052506122c38361010001516001600160801b0316612596565b816008815181106122d6576122d6613650565b60200260200101819052506122ef8361012001516125a4565b8160098151811061230257612302613650565b602002602001018190525061231b8361014001516125a4565b81600a8151811061232e5761232e613650565b60200260200101819052506123478361016001516125a4565b81600b8151811061235a5761235a613650565b6020026020010181905250612373836101800151612527565b81600c8151811061238657612386613650565b602002602001018190525061239f836101a001516124eb565b81600d815181106123b2576123b2613650565b60200260200101819052506123e9836101c0015160405160200161224f919060c09190911b6001600160c01b031916815260080190565b81600e815181106123fc576123fc613650565b6020026020010181905250826101e0015160001461244157612422836101e00151612596565b81600f8151811061243557612435613650565b60200260200101819052505b6102008301511561050d5761245a8361020001516124eb565b8160108151811061246d5761246d613650565b602002602001018190525092915050565b6060600061248b836125bb565b9050612499815160c06126f0565b816040516020016124ab92919061369b565b604051602081830303815290604052915050919050565b60006124cd83610a72565b905060008260038111156124e3576124e3612cf0565b909155505050565b606061050d6124f983612898565b612527565b604051606082811b6bffffffffffffffffffffffff191660208301529061050d9060340161224f565b60608082516001148015612555575060808360008151811061254b5761254b613650565b016020015160f81c105b1561256157508161050d565b61256d835160806126f0565b8360405160200161257f92919061369b565b604051602081830303815290604052905092915050565b606061050d6124f98361294a565b606061050d6124f9836001600160401b031661294a565b606081516000036125dc576040805160008082526020820190925290610678565b6000805b8351811015612621578381815181106125fb576125fb613650565b6020026020010151518261260f9190613256565b915061261a81613296565b90506125e0565b6000826001600160401b0381111561263b5761263b612ad1565b6040519080825280601f01601f191660200182016040528015612665576020820181803683370190505b50600092509050602081015b85518310156126e757600086848151811061268e5761268e613650565b6020026020010151905060006020820190506126ac83828451612a74565b8785815181106126be576126be613650565b602002602001015151836126d29190613256565b92505050826126e090613296565b9250612671565b50949350505050565b6060806038841015612757576040805160018082528183019092529060208201818036833701905050905061272583856136ca565b60f81b8160008151811061273b5761273b613650565b60200101906001600160f81b031916908160001a90535061050a565b600060015b61276681876136f9565b156127895761277482613296565b91506127826101008261370d565b905061275c565b612794826001613256565b6001600160401b038111156127ab576127ab612ad1565b6040519080825280601f01601f1916602001820160405280156127d5576020820181803683370190505b5092506127e285836136ca565b6127ed9060376136ca565b60f81b8360008151811061280357612803613650565b60200101906001600160f81b031916908160001a905350600190505b81811161288f576101006128338284613724565b61283f9061010061381b565b61284990886136f9565b6128539190613827565b60f81b83828151811061286857612868613650565b60200101906001600160f81b031916908160001a90535061288881613296565b905061281f565b50509392505050565b60606000826040516020016128af91815260200190565b60408051808303601f1901815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156126e75783836128f481613296565b94508151811061290657612906613650565b602001015160f81c60f81b82828151811061292357612923613650565b60200101906001600160f81b031916908160001a90535061294381613296565b90506128e0565b606060008260405160200161296191815260200190565b604051602081830303815290604052905060005b60208110156129b65781818151811061299057612990613650565b01602001516001600160f81b0319166000036129b6576129af81613296565b9050612975565b60006129c3826020613724565b6001600160401b038111156129da576129da612ad1565b6040519080825280601f01601f191660200182016040528015612a04576020820181803683370190505b50905060005b81518110156126e7578383612a1e81613296565b945081518110612a3057612a30613650565b602001015160f81c60f81b828281518110612a4d57612a4d613650565b60200101906001600160f81b031916908160001a905350612a6d81613296565b9050612a0a565b8282825b60208110612ab05781518352612a8f602084613256565b9250612a9c602083613256565b9150612aa9602082613724565b9050612a78565b905182516020929092036101000a6000190180199091169116179052505050565b634e487b7160e01b600052604160045260246000fd5b6040516101a081016001600160401b0381118282101715612b0a57612b0a612ad1565b60405290565b604080519081016001600160401b0381118282101715612b0a57612b0a612ad1565b60405161022081016001600160401b0381118282101715612b0a57612b0a612ad1565b600082601f830112612b6657600080fd5b81356001600160401b0380821115612b8057612b80612ad1565b604051601f8301601f19908116603f01168101908282118183101715612ba857612ba8612ad1565b81604052838152866020858801011115612bc157600080fd5b836020870160208301376000602085830101528094505050505092915050565b801515811461078d57600080fd5b60008060408385031215612c0257600080fd5b82356001600160401b03811115612c1857600080fd5b612c2485828601612b55565b9250506020830135612c3581612be1565b809150509250929050565b6001600160a01b038116811461078d57600080fd5b80356106c781612c40565b600060208284031215612c7257600080fd5b813561050a81612c40565b600080600060608486031215612c9257600080fd5b8335925060208401356001600160401b03811115612caf57600080fd5b612cbb86828701612b55565b9250506040840135612ccc81612be1565b809150509250925092565b600060208284031215612ce957600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110612d2457634e487b7160e01b600052602160045260246000fd5b9052565b6020810161050d8284612d06565b60006101a08284031215612d4957600080fd5b50919050565b600060208284031215612d6157600080fd5b81356001600160401b03811115612d7757600080fd5b6108d084828501612d36565b60008083601f840112612d9557600080fd5b5081356001600160401b03811115612dac57600080fd5b602083019150836020828501011115612dc457600080fd5b9250929050565b60008060008060608587031215612de157600080fd5b843593506020850135925060408501356001600160401b03811115612e0557600080fd5b612e1187828801612d83565b95989497509550505050565b600080600060408486031215612e3257600080fd5b83356001600160401b0380821115612e4957600080fd5b612e5587838801612d36565b94506020860135915080821115612e6b57600080fd5b50612e7886828701612d83565b9497909650939450505050565b60008060408385031215612e9857600080fd5b82356001600160401b03811115612eae57600080fd5b612c2485828601612d36565b60006101a08236031215612ecd57600080fd5b612ed5612ae7565b82358152612ee560208401612c55565b60208201526040830135604082015260608301356060820152612f0a60808401612c55565b6080820152612f1b60a08401612c55565b60a0820152612f2c60c08401612c55565b60c082015260e08381013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401356001600160401b0380821115612f7857600080fd5b612f8436838801612b55565b83850152610180925082860135915080821115612fa057600080fd5b50612fad36828701612b55565b918301919091525092915050565b60005b83811015612fd6578181015183820152602001612fbe565b50506000910152565b60008151808452612ff7816020860160208601612fbb565b601f01601f19169290920160200192915050565b8281526040602082015260006106386040830184612fdf565b60006020828403121561303657600080fd5b815161050a81612c40565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e082015260006101008060608401526106db81840185612fdf565b60208152600061050a6020830184612fdf565b6040808252600e908201526d7369676e616c5f7365727669636560901b6060820152901515602082015260800190565b6000602082840312156130eb57600080fd5b815161050a81612be1565b60208152815160208201526000602083015161311d60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161314c60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526131ca6101c0860184612fdf565b90860151858203601f1901838701529092506131e68382612fdf565b9695505050505050565b9182526060602083018190526006908301526562726964676560d01b60808301521515604082015260a00190565b60008351613230818460208801612fbb565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561050d5761050d613240565b6040808252600b908201526a195d1a195c97dd985d5b1d60aa1b6060820152901515602082015260800190565b6000600182016132a8576132a8613240565b5060010190565b6000602082840312156132c157600080fd5b5051919050565b8581526001600160a01b0385166020820152604081018490526080606082018190528101829052818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600082601f83011261332857600080fd5b6040516101008082018281106001600160401b038211171561334c5761334c612ad1565b6040528301818582111561335f57600080fd5b845b82811015613379578035825260209182019101613361565b509195945050505050565b80356001600160801b03811681146106c757600080fd5b80356001600160401b03811681146106c757600080fd5b6000602082840312156133c457600080fd5b81356001600160401b03808211156133db57600080fd5b90830190604082860312156133ef57600080fd5b6133f7612b10565b82358281111561340657600080fd5b8301610300818803121561341957600080fd5b613421612b32565b813581526020820135602082015261343b60408301612c55565b6040820152606082013560608201526080820135608082015260a082013560a082015261346b8860c08401613317565b60c08201526101c08083013560e08301526101e061348a818501613384565b61010084015261020061349e81860161339b565b6101208501526134b1610220860161339b565b6101408501526134c4610240860161339b565b610160850152610260850135878111156134dd57600080fd5b6134e98c828801612b55565b610180860152506102808501356101a08501526135096102a0860161339b565b838501526102c0850135828501526102e085013581850152505050808352505060208301358281111561353b57600080fd5b61354787828601612b55565b60208301525095945050505050565b85815260018060a01b038516602082015283604082015282606082015260a060808201526000610feb60a0830184612fdf565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000808335601e198436030181126135eb57600080fd5b8301803591506001600160401b0382111561360557600080fd5b602001915036819003821315612dc457600080fd5b8183823760009101908152919050565b604081016136388285612d06565b6001600160a01b039290921660209190910152919050565b634e487b7160e01b600052603260045260246000fd5b60008183825b600881101561368b57815183526020928301929091019060010161366c565b5050506101008201905092915050565b600083516136ad818460208801612fbb565b8351908301906136c1818360208801612fbb565b01949350505050565b60ff818116838216019081111561050d5761050d613240565b634e487b7160e01b600052601260045260246000fd5b600082613708576137086136e3565b500490565b808202811582820484141761050d5761050d613240565b8181038181111561050d5761050d613240565b600181815b8085111561377257816000190482111561375857613758613240565b8085161561376557918102915b93841c939080029061373c565b509250929050565b6000826137895750600161050d565b816137965750600061050d565b81600181146137ac57600281146137b6576137d2565b600191505061050d565b60ff8411156137c7576137c7613240565b50506001821b61050d565b5060208310610133831016604e8410600b84101617156137f5575081810a61050d565b6137ff8383613737565b806000190482111561381357613813613240565b029392505050565b600061050a838361377a565b600082613836576138366136e3565b50069056fea264697066735822122070121f05246570406412e10c8eb43e53cc86def55bb41d395a1641cd8b70ae8d64736f6c63430008120033", + "code": "0x6080604052600436106101235760003560e01c80638da5cb5b116100a0578063ce70f39b11610064578063ce70f39b146103e0578063d0496d6a14610400578063f2fde38b1461046f578063f98039191461048f578063fee99b22146104af57600080fd5b80638da5cb5b1461034f57806396e178521461036d578063a4444efd14610380578063a86f9d9e146103a0578063bac443e2146103c057600080fd5b80635817b0c3116100e75780635817b0c3146102ac5780635d0bd986146102da578063606b5b74146102fa5780636c6563f61461031a578063715018a61461033a57600080fd5b806319ab453c146101c8578063343b643c146101e85780633ab76e9f1461022d5780635075a9d41461025f578063540be6a31461028c57600080fd5b366101c3576101416a1d1bdad95b97dd985d5b1d60aa1b60016104cf565b6001600160a01b0316336001600160a01b03161415801561018c57506101766a195d1a195c97dd985d5b1d60aa1b60016104cf565b6001600160a01b0316336001600160a01b031614155b80156101a357506065546001600160a01b03163314155b156101c1576040516345dd044560e11b815260040160405180910390fd5b005b600080fd5b3480156101d457600080fd5b506101c16101e3366004612afc565b6104e5565b3480156101f457600080fd5b50610218610203366004612b19565b600090815260cd602052604090205460ff1690565b60405190151581526020015b60405180910390f35b34801561023957600080fd5b506097546001600160a01b03165b6040516001600160a01b039091168152602001610224565b34801561026b57600080fd5b5061027f61027a366004612b19565b6105fd565b6040516102249190612b6a565b34801561029857600080fd5b506102186102a7366004612b19565b610608565b3480156102b857600080fd5b506102cc6102c7366004612b91565b610614565b604051908152602001610224565b3480156102e657600080fd5b506102186102f5366004612b19565b610627565b34801561030657600080fd5b506102cc610315366004612b19565b61063a565b34801561032657600080fd5b50610247610335366004612bd3565b610645565b34801561034657600080fd5b506101c161065c565b34801561035b57600080fd5b506065546001600160a01b0316610247565b6102cc61037b366004612b91565b610670565b34801561038c57600080fd5b5061021861039b366004612c54565b61069e565b3480156103ac57600080fd5b506102476103bb366004612ca6565b6104cf565b3480156103cc57600080fd5b506101c16103db366004612cd6565b6106b6565b3480156103ec57600080fd5b506102186103fb366004612c54565b6106da565b34801561040c57600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260ca5480825260cb546001600160a01b0390811683860190815260cc549387019384528651928352511693810193909352519282019290925201610224565b34801561047b57600080fd5b506101c161048a366004612afc565b6106e9565b34801561049b57600080fd5b506101c16104aa366004612d3e565b610762565b3480156104bb57600080fd5b506101c16104ca366004612cd6565b610780565b60006104dc468484610796565b90505b92915050565b600054610100900460ff16158080156105055750600054600160ff909116105b8061051f5750303b15801561051f575060005460ff166001145b6105875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156105aa576000805461ff0019166101001790555b6105b3826108af565b80156105f9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006104df826108c8565b60006104df30836108f3565b60006104df61062283612e94565b6109d4565b60006106333083610a04565b5092915050565b60006104df82610a8d565b6000610652848484610796565b90505b9392505050565b610664610ac8565b61066e6000610b22565b565b600061067a610b74565b61068e60c93061068985612e94565b610bcd565b905061069960018055565b919050565b60006106ad3086868686610eae565b95945050505050565b6106be610b74565b6106cc60c930858585611011565b6106d560018055565b505050565b60006106ad3086868686611302565b6106f1610ac8565b6001600160a01b0381166107565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057e565b61075f81610b22565b50565b61076a610b74565b61077760c9308484611587565b6105f960018055565b610788610b74565b6106cc60c9308585856117bf565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa1580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b9190612f95565b905081610655576040516001600160a01b03821615159061087a90869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906108a75760405162461bcd60e51b815260040161057e9190613002565b509392505050565b6108b7611cbe565b6108bf611ced565b61075f81611d1c565b6000806108d483610a8d565b80549091508060038111156108eb576108eb612b32565b949350505050565b604051635437cecf60e11b81526000906001600160a01b0384169063a86f9d9e90610922908490600401613015565b602060405180830381865afa15801561093f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109639190612f95565b604051631933b5e360e11b8152306004820152602481018490526001600160a01b0391909116906332676bc690604401602060405180830381865afa1580156109b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc9190613037565b6000816040516020016109e79190613054565b604051602081830303815290604052805190602001209050919050565b600080836001600160a01b0316636c6563f68460016040518363ffffffff1660e01b8152600401610a3692919061314e565b602060405180830381865afa158015610a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a779190612f95565b6001600160a01b03811615159590945092505050565b60006040518060400160405280600e81526020016d4d4553534147455f53544154555360901b815250826040516020016109e792919061316d565b6065546001600160a01b0316331461066e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161057e565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260015403610bc65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161057e565b6002600155565b60808101516000906001600160a01b0316610bfb576040516301b1868360e71b815260040160405180910390fd5b600080610c0c858560600151610a04565b91509150811580610c205750468460600151145b15610c3e5760405163e822b48d60e01b815260040160405180910390fd5b60a08401516001600160a01b03161580610c6d5750806001600160a01b03168460a001516001600160a01b0316145b15610c8b5760405163b9ad6a0f60e01b815260040160405180910390fd5b60008461012001518561010001518660e00151610ca891906131a5565b610cb291906131a5565b9050348114610cd457604051632609a19760e21b815260040160405180910390fd5b604051635437cecf60e11b81526000906001600160a01b0388169063a86f9d9e90610d04906001906004016131b8565b602060405180830381865afa158015610d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d459190612f95565b9050610d5a6001600160a01b03821683611d65565b8754886000610d68836131d7565b909155508652336020870152466040870152610d83866109d4565b604051635437cecf60e11b81529095506001600160a01b0388169063a86f9d9e90610db390600090600401613015565b602060405180830381865afa158015610dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df49190612f95565b6001600160a01b03166366ca2bc0866040518263ffffffff1660e01b8152600401610e2191815260200190565b6020604051808303816000875af1158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6491906131f0565b50847f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f387604051610e959190613054565b60405180910390a2505050509392505050565b60018055565b600080866001600160a01b0316636c6563f68660006040518363ffffffff1660e01b8152600401610ee092919061314e565b602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f219190612f95565b604051635437cecf60e11b81529091506001600160a01b0388169063a86f9d9e90610f5190600090600401613015565b602060405180830381865afa158015610f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f929190612f95565b6001600160a01b0316635221f61386838988886040518663ffffffff1660e01b8152600401610fc5959493929190613209565b602060405180830381865afa158015610fe2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110069190613037565b979650505050505050565b600061102360a0850160808601612afc565b6001600160a01b03160361104a576040516301b1868360e71b815260040160405180910390fd5b4683604001351461106e5760405163e822b48d60e01b815260040160405180910390fd5b600061107c61062285612e94565b600081815260048801602052604090205490915060ff1615156001036110b55760405163afde133560e01b815260040160405180910390fd5b6110c6858286606001358686611302565b6110e35760405163498b0b1d60e01b815260040160405180910390fd5b60008181526004870160205260408120805460ff1916600117905561111161010086013560e08701356131a5565b905080156112a657604051635437cecf60e11b81526000906001600160a01b0388169063a86f9d9e90611149906001906004016131b8565b602060405180830381865afa158015611166573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118a9190612f95565b90506001600160a01b0381161561121f576001600160a01b03811663ba0bbd956111ba60a0890160808a01612afc565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b15801561120257600080fd5b505af1158015611216573d6000803e3d6000fd5b505050506112a4565b600061123160a0880160808901612afc565b6001600160a01b03168360405160006040518083038185875af1925050503d806000811461127b576040519150601f19603f3d011682016040523d82523d6000602084013e611280565b606091505b50509050806112a25760405163f6664cf160e01b815260040160405180910390fd5b505b505b817fea00c741e39d1d9ab1c6703152d71f9da09a782ed4ae128414730dadbb9bd8476112d860a0880160808901612afc565b604080516001600160a01b039092168252602082018590520160405180910390a250505050505050565b60004684036113245760405163e822b48d60e01b815260040160405180910390fd5b60008590036113465760405163a6407c9360e01b815260040160405180910390fd5b6000611354838501856132f3565b604051635437cecf60e11b8152647461696b6f60d81b60048201526000602482018190529192506001600160a01b0389169063a86f9d9e90604401602060405180830381865afa1580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d09190612f95565b8251610100015160405163a4e6775f60e01b81526001600160801b0390911660048201526001600160a01b03919091169063a4e6775f90602401602060405180830381865afa158015611427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144b91906131f0565b90508015806114645750815161146090611e1b565b8114155b15611474576000925050506106ad565b815160600151604051633632b1fb60e11b8152734F6d0287F08bD8b05DB0272c493A2e9DA96753019163a5427462916001600160a01b038c1690636c6563f6906114c5908c9060009060040161314e565b602060405180830381865afa1580156114e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115069190612f95565b61150f8b610a8d565b602087015160405160e086901b6001600160e01b031916815261153a94939291600391600401613497565b602060405180830381865af4158015611557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157b9190613037565b98975050505050505050565b61014082013515806115965750805b156115dc576115ab60a0830160808401612afc565b6001600160a01b0316336001600160a01b0316146115dc5760405163d7f4fc9f60e01b815260040160405180910390fd5b60006115ea61062284612e94565b905060016115f7826108c8565b600381111561160857611608612b32565b1461162657604051631f6646b560e01b815260040160405180910390fd5b604051635437cecf60e11b81526000906001600160a01b0386169063a86f9d9e90611656906001906004016131b8565b602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190612f95565b90506001600160a01b0381161561170757604051630d73bb3d60e41b815261010085013560048201526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b1580156116ee57600080fd5b505af1158015611702573d6000803e3d6000fd5b505050505b6117138685845a611e40565b1561172857611723826002611f98565b6117b7565b821561179f57611739826003611f98565b60008061174c60e0870160c08801612afc565b6001600160a01b03161461176f5761176a60e0860160c08701612afc565b61177f565b61177f60a0860160808701612afc565b90506117996001600160a01b038216610100870135611d65565b506117b7565b6117b76001600160a01b038216610100860135611d65565b505050505050565b6101408301351580156117f357506117dd60a0840160808501612afc565b6001600160a01b0316336001600160a01b031614155b156118115760405163398b635960e21b815260040160405180910390fd5b468360600135146118355760405163e822b48d60e01b815260040160405180910390fd5b600061184361062285612e94565b90506000611850826108c8565b600381111561186157611861612b32565b1461187f57604051632c3b0c4b60e01b815260040160405180910390fd5b6000856001600160a01b0316636c6563f6866040013560006040518363ffffffff1660e01b81526004016118b492919061314e565b602060405180830381865afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f59190612f95565b604051635437cecf60e11b81529091506001600160a01b0387169063a86f9d9e9061192590600090600401613015565b602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119669190612f95565b6001600160a01b0316635221f6138660400135838588886040518663ffffffff1660e01b815260040161199d959493929190613209565b602060405180830381865afa1580156119ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119de9190613037565b6119fb576040516314504c7360e31b815260040160405180910390fd5b6000610120860135611a1661010088013560e08901356131a5565b611a2091906131a5565b90506000876001600160a01b031663a86f9d9e60016040518263ffffffff1660e01b8152600401611a5191906131b8565b602060405180830381865afa158015611a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a929190612f95565b90506001600160a01b03811615801590611aac5750600082115b15611b0c57604051630d73bb3d60e41b8152600481018390526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b158015611af357600080fd5b505af1158015611b07573d6000803e3d6000fd5b505050505b611b3360e0880135611b2460a08a0160808b01612afc565b6001600160a01b031690611d65565b60008030611b4760c08b0160a08c01612afc565b6001600160a01b03161480611b7457506000611b6960c08b0160a08c01612afc565b6001600160a01b0316145b15611b89575060029050610100880135611c00565b6000611b9b60a08b0160808c01612afc565b6001600160a01b0316336001600160a01b031614611bbe57896101400135611bc0565b5a5b90506000611bd08d8c8a85611e40565b90508015611be15760029350611bfd565b60019350611bfd6001600160a01b0386166101008d0135611d65565b50505b611c0a8683611f98565b600080611c1d60e08c0160c08d01612afc565b6001600160a01b031614611c4057611c3b60e08b0160c08c01612afc565b611c50565b611c5060a08b0160808c01612afc565b90506001600160a01b0381163303611c8e576000611c73836101208d01356131a5565b9050611c886001600160a01b03831682611d65565b50611cb0565b611c9d336101208c0135611d65565b611cb06001600160a01b03821683611d65565b505050505050505050505050565b600054610100900460ff16611ce55760405162461bcd60e51b815260040161057e906134ca565b61066e612011565b600054610100900460ff16611d145760405162461bcd60e51b815260040161057e906134ca565b61066e612038565b6001600160a01b038116611d4357604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b801580611d7957506001600160a01b038216155b15611d82575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dcf576040519150601f19603f3d011682016040523d82523d6000602084013e611dd4565b606091505b50509050806106d55760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161057e565b600080611e31611e2c846000612068565b612489565b80516020909101209392505050565b600081600003611e6357604051637f0e960960e11b815260040160405180910390fd5b6040518060600160405280848152602001856020016020810190611e879190612afc565b6001600160a01b039081168252604087810135602093840152835160018a0155918301516002890180546001600160a01b0319169190921617905501516003860155611ed960c0850160a08601612afc565b6001600160a01b031682610100860135611ef7610160880188613515565b604051611f0592919061355b565b600060405180830381858888f193505050503d8060008114611f43576040519150601f19603f3d011682016040523d82523d6000602084013e611f48565b606091505b505060408051606081018252600180825260208201819052600019919092018190528782018290556002880180546001600160a01b03191690921790915560039096019590955550929392505050565b806003811115611faa57611faa612b32565b611fb3836108c8565b6003811115611fc457611fc4612b32565b146105f957611fd382826124cd565b817f0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c823360405161200592919061356b565b60405180910390a25050565b600054610100900460ff16610ea85760405162461bcd60e51b815260040161057e906134ca565b600054610100900460ff1661205f5760405162461bcd60e51b815260040161057e906134ca565b61066e33610b22565b610200820151606090156120d3576120818260116131a5565b6001600160401b0381111561209857612098612d84565b6040519080825280602002602001820160405280156120cb57816020015b60608152602001906001900390816120b65790505b509050612142565b6101e0830151156120e9576120818260106131a5565b6120f482600f6131a5565b6001600160401b0381111561210b5761210b612d84565b60405190808252806020026020018201604052801561213e57816020015b60608152602001906001900390816121295790505b5090505b825161214d906124f6565b8160008151811061216057612160613591565b602002602001018190525061217883602001516124f6565b8160018151811061218b5761218b613591565b60200260200101819052506121a38360400151612509565b816002815181106121b6576121b6613591565b60200260200101819052506121ce83606001516124f6565b816003815181106121e1576121e1613591565b60200260200101819052506121f983608001516124f6565b8160048151811061220c5761220c613591565b60200260200101819052506122248360a001516124f6565b8160058151811061223757612237613591565b602002602001018190525061226e8360c0015160405160200161225a91906135a7565b604051602081830303815290604052612532565b8160068151811061228157612281613591565b60200260200101819052506122998360e001516125a1565b816007815181106122ac576122ac613591565b60200260200101819052506122ce8361010001516001600160801b03166125a1565b816008815181106122e1576122e1613591565b60200260200101819052506122fa8361012001516125af565b8160098151811061230d5761230d613591565b60200260200101819052506123268361014001516125af565b81600a8151811061233957612339613591565b60200260200101819052506123528361016001516125af565b81600b8151811061236557612365613591565b602002602001018190525061237e836101800151612532565b81600c8151811061239157612391613591565b60200260200101819052506123aa836101a001516124f6565b81600d815181106123bd576123bd613591565b60200260200101819052506123f4836101c0015160405160200161225a919060c09190911b6001600160c01b031916815260080190565b81600e8151811061240757612407613591565b6020026020010181905250826101e0015160001461244c5761242d836101e001516125a1565b81600f8151811061244057612440613591565b60200260200101819052505b610200830151156104df576124658361020001516124f6565b8160108151811061247857612478613591565b602002602001018190525092915050565b60606000612496836125c6565b90506124a4815160c06126fb565b816040516020016124b69291906135dc565b604051602081830303815290604052915050919050565b60006124d883610a8d565b905060008260038111156124ee576124ee612b32565b909155505050565b60606104df612504836128a3565b612532565b604051606082811b6bffffffffffffffffffffffff19166020830152906104df9060340161225a565b60608082516001148015612560575060808360008151811061255657612556613591565b016020015160f81c105b1561256c5750816104df565b612578835160806126fb565b8360405160200161258a9291906135dc565b604051602081830303815290604052905092915050565b60606104df61250483612955565b60606104df612504836001600160401b0316612955565b606081516000036125e7576040805160008082526020820190925290610633565b6000805b835181101561262c5783818151811061260657612606613591565b6020026020010151518261261a91906131a5565b9150612625816131d7565b90506125eb565b6000826001600160401b0381111561264657612646612d84565b6040519080825280601f01601f191660200182016040528015612670576020820181803683370190505b50600092509050602081015b85518310156126f257600086848151811061269957612699613591565b6020026020010151905060006020820190506126b783828451612a7f565b8785815181106126c9576126c9613591565b602002602001015151836126dd91906131a5565b92505050826126eb906131d7565b925061267c565b50949350505050565b60608060388410156127625760408051600180825281830190925290602082018180368337019050509050612730838561360b565b60f81b8160008151811061274657612746613591565b60200101906001600160f81b031916908160001a9053506104dc565b600060015b612771818761363a565b156127945761277f826131d7565b915061278d6101008261364e565b9050612767565b61279f8260016131a5565b6001600160401b038111156127b6576127b6612d84565b6040519080825280601f01601f1916602001820160405280156127e0576020820181803683370190505b5092506127ed858361360b565b6127f890603761360b565b60f81b8360008151811061280e5761280e613591565b60200101906001600160f81b031916908160001a905350600190505b81811161289a5761010061283e8284613665565b61284a9061010061375c565b612854908861363a565b61285e9190613768565b60f81b83828151811061287357612873613591565b60200101906001600160f81b031916908160001a905350612893816131d7565b905061282a565b50509392505050565b60606000826040516020016128ba91815260200190565b60408051808303601f1901815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156126f25783836128ff816131d7565b94508151811061291157612911613591565b602001015160f81c60f81b82828151811061292e5761292e613591565b60200101906001600160f81b031916908160001a90535061294e816131d7565b90506128eb565b606060008260405160200161296c91815260200190565b604051602081830303815290604052905060005b60208110156129c15781818151811061299b5761299b613591565b01602001516001600160f81b0319166000036129c1576129ba816131d7565b9050612980565b60006129ce826020613665565b6001600160401b038111156129e5576129e5612d84565b6040519080825280601f01601f191660200182016040528015612a0f576020820181803683370190505b50905060005b81518110156126f2578383612a29816131d7565b945081518110612a3b57612a3b613591565b602001015160f81c60f81b828281518110612a5857612a58613591565b60200101906001600160f81b031916908160001a905350612a78816131d7565b9050612a15565b8282825b60208110612abb5781518352612a9a6020846131a5565b9250612aa76020836131a5565b9150612ab4602082613665565b9050612a83565b905182516020929092036101000a6000190180199091169116179052505050565b6001600160a01b038116811461075f57600080fd5b803561069981612adc565b600060208284031215612b0e57600080fd5b81356104dc81612adc565b600060208284031215612b2b57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110612b6657634e487b7160e01b600052602160045260246000fd5b9052565b602081016104df8284612b48565b60006101a08284031215612b8b57600080fd5b50919050565b600060208284031215612ba357600080fd5b81356001600160401b03811115612bb957600080fd5b6108eb84828501612b78565b801515811461075f57600080fd5b600080600060608486031215612be857600080fd5b83359250602084013591506040840135612c0181612bc5565b809150509250925092565b60008083601f840112612c1e57600080fd5b5081356001600160401b03811115612c3557600080fd5b602083019150836020828501011115612c4d57600080fd5b9250929050565b60008060008060608587031215612c6a57600080fd5b843593506020850135925060408501356001600160401b03811115612c8e57600080fd5b612c9a87828801612c0c565b95989497509550505050565b60008060408385031215612cb957600080fd5b823591506020830135612ccb81612bc5565b809150509250929050565b600080600060408486031215612ceb57600080fd5b83356001600160401b0380821115612d0257600080fd5b612d0e87838801612b78565b94506020860135915080821115612d2457600080fd5b50612d3186828701612c0c565b9497909650939450505050565b60008060408385031215612d5157600080fd5b82356001600160401b03811115612d6757600080fd5b612d7385828601612b78565b9250506020830135612ccb81612bc5565b634e487b7160e01b600052604160045260246000fd5b6040516101a081016001600160401b0381118282101715612dbd57612dbd612d84565b60405290565b604080519081016001600160401b0381118282101715612dbd57612dbd612d84565b60405161022081016001600160401b0381118282101715612dbd57612dbd612d84565b600082601f830112612e1957600080fd5b81356001600160401b0380821115612e3357612e33612d84565b604051601f8301601f19908116603f01168101908282118183101715612e5b57612e5b612d84565b81604052838152866020858801011115612e7457600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006101a08236031215612ea757600080fd5b612eaf612d9a565b82358152612ebf60208401612af1565b60208201526040830135604082015260608301356060820152612ee460808401612af1565b6080820152612ef560a08401612af1565b60a0820152612f0660c08401612af1565b60c082015260e08381013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401356001600160401b0380821115612f5257600080fd5b612f5e36838801612e08565b83850152610180925082860135915080821115612f7a57600080fd5b50612f8736828701612e08565b918301919091525092915050565b600060208284031215612fa757600080fd5b81516104dc81612adc565b60005b83811015612fcd578181015183820152602001612fb5565b50506000910152565b60008151808452612fee816020860160208601612fb2565b601f01601f19169290920160200192915050565b6020815260006104dc6020830184612fd6565b6d7369676e616c5f7365727669636560901b8152901515602082015260400190565b60006020828403121561304957600080fd5b81516104dc81612bc5565b60208152815160208201526000602083015161307b60408401826001600160a01b03169052565b50604083015160608301526060830151608083015260808301516130aa60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526131286101c0860184612fd6565b90860151858203601f1901838701529092506131448382612fd6565b9695505050505050565b9182526562726964676560d01b60208301521515604082015260600190565b6000835161317f818460208801612fb2565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104df576104df61318f565b6a195d1a195c97dd985d5b1d60aa1b8152901515602082015260400190565b6000600182016131e9576131e961318f565b5060010190565b60006020828403121561320257600080fd5b5051919050565b8581526001600160a01b0385166020820152604081018490526080606082018190528101829052818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600082601f83011261326957600080fd5b6040516101008082018281106001600160401b038211171561328d5761328d612d84565b604052830181858211156132a057600080fd5b845b828110156132ba5780358252602091820191016132a2565b509195945050505050565b80356001600160801b038116811461069957600080fd5b80356001600160401b038116811461069957600080fd5b60006020828403121561330557600080fd5b81356001600160401b038082111561331c57600080fd5b908301906040828603121561333057600080fd5b613338612dc3565b82358281111561334757600080fd5b8301610300818803121561335a57600080fd5b613362612de5565b813581526020820135602082015261337c60408301612af1565b6040820152606082013560608201526080820135608082015260a082013560a08201526133ac8860c08401613258565b60c08201526101c08083013560e08301526101e06133cb8185016132c5565b6101008401526102006133df8186016132dc565b6101208501526133f261022086016132dc565b61014085015261340561024086016132dc565b6101608501526102608501358781111561341e57600080fd5b61342a8c828801612e08565b610180860152506102808501356101a085015261344a6102a086016132dc565b838501526102c0850135828501526102e085013581850152505050808352505060208301358281111561347c57600080fd5b61348887828601612e08565b60208301525095945050505050565b85815260018060a01b038516602082015283604082015282606082015260a06080820152600061100660a0830184612fd6565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000808335601e1984360301811261352c57600080fd5b8301803591506001600160401b0382111561354657600080fd5b602001915036819003821315612c4d57600080fd5b8183823760009101908152919050565b604081016135798285612b48565b6001600160a01b039290921660209190910152919050565b634e487b7160e01b600052603260045260246000fd5b60008183825b60088110156135cc5781518352602092830192909101906001016135ad565b5050506101008201905092915050565b600083516135ee818460208801612fb2565b835190830190613602818360208801612fb2565b01949350505050565b60ff81811683821601908111156104df576104df61318f565b634e487b7160e01b600052601260045260246000fd5b60008261364957613649613624565b500490565b80820281158282048414176104df576104df61318f565b818103818111156104df576104df61318f565b600181815b808511156136b35781600019048211156136995761369961318f565b808516156136a657918102915b93841c939080029061367d565b509250929050565b6000826136ca575060016104df565b816136d7575060006104df565b81600181146136ed57600281146136f757613713565b60019150506104df565b60ff8411156137085761370861318f565b50506001821b6104df565b5060208310610133831016604e8410600b8410161715613736575081810a6104df565b6137408383613678565b80600019048211156137545761375461318f565b029392505050565b60006104dc83836136bb565b60008261377757613777613624565b50069056fea2646970667358221220a70ee933460e41a88f216dfd1674a60c80f927399609a17eb10609f3d1aa52da64736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000002": { @@ -90,7 +90,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" }, - "code": "0x6080604052600436106100dd5760003560e01c8063780b64f01161007f5780639aa8605c116100595780639aa8605c14610292578063c287e578146102c3578063ee1490b214610303578063f2fde38b1461031657600080fd5b8063780b64f0146101f55780638da5cb5b146102545780639754149b1461027257600080fd5b80631be2bfa7116100bb5780631be2bfa7146101615780633ab76e9f1461018157806367090ccf1461019f578063715018a6146101e057600080fd5b80630c6fab82146100e25780630ca4dffd1461010457806319ab453c14610141575b600080fd5b3480156100ee57600080fd5b506101026100fd366004611fd3565b610336565b005b34801561011057600080fd5b5061012461011f366004612112565b610577565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014d57600080fd5b5061010261015c366004612163565b61058d565b34801561016d57600080fd5b5061012461017c366004612180565b6106a5565b34801561018d57600080fd5b506097546001600160a01b0316610124565b3480156101ab57600080fd5b506101246101ba3660046121da565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b3480156101ec57600080fd5b506101026106bc565b34801561020157600080fd5b506102356102103660046121ff565b60cc60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610138565b34801561026057600080fd5b506065546001600160a01b0316610124565b34801561027e57600080fd5b5061010261028d366004612218565b6106d0565b34801561029e57600080fd5b506102b26102ad366004612163565b610a33565b604051610138959493929190612307565b3480156102cf57600080fd5b506102f36102de366004612163565b60c96020526000908152604090205460ff1681565b6040519015158152602001610138565b610102610311366004612358565b610b84565b34801561032257600080fd5b50610102610331366004612163565b6113f3565b61033e61146c565b6040518060400160405280600681526020016562726964676560d01b815250610368816000610577565b6001600160a01b0316336001600160a01b03161461039957604051630d85cccf60e11b815260040160405180910390fd5b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fd91906123f3565b905061043281604001516040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060006106a5565b6001600160a01b031681602001516001600160a01b031614610467576040516320258b8760e21b815260040160405180910390fd5b60004687350361049c576104816040880160208901612163565b90506104976001600160a01b03821686866114c5565b61050c565b6104a587611528565b6040516342e91bb360e01b81526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b1580156104f357600080fd5b505af1158015610507573d6000803e3d6000fd5b505050505b815160408084015181519081526001600160a01b0384811660208301529181018790528188169291891691907fe5da926519fc972010fe65b35c1e3339e6dc72b35ffaec203999c2a2a2593eac9060600160405180910390a450505061057160018055565b50505050565b6000610584468484611587565b90505b92915050565b600054610100900460ff16158080156105ad5750600054600160ff909116105b806105c75750303b1580156105c7575060005460ff166001145b61062f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610652576000805461ff0019166101001790555b61065b82611657565b80156106a1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006106b2848484611587565b90505b9392505050565b6106c4611670565b6106ce60006116ca565b565b6106d861146c565b60006106ea60a0850160808601612163565b6001600160a01b031603610711576040516372b41cdf60e01b815260040160405180910390fd5b46836040013514610735576040516348bc100560e01b815260040160405180910390fd5b60006107606040518060400160405280600681526020016562726964676560d01b8152506000610577565b90506000816001600160a01b0316635817b0c3866040518263ffffffff1660e01b815260040161079091906124c9565b602060405180830381865afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906125e7565b600081815260cc6020526040902080546001909101549192506001600160a01b0316908161081257604051637c6addb760e01b815260040160405180910390fd5b60405163ce70f39b60e01b81526001600160a01b0385169063ce70f39b9061084890869060608c0135908b908b90600401612600565b602060405180830381865afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610889919061262a565b6108a6576040516308ba49e560e31b815260040160405180910390fd5b6040805180820182526000808252602080830182815287835260cc909152929020905181546001600160a01b0319166001600160a01b03909116178155905160019091015580156109ba576001600160a01b038216600090815260c9602052604090205460ff1615610996576001600160a01b0382166342e91bb361093160a08a0160808b01612163565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b505050506109ba565b6109ba6109a960a0890160808a01612163565b6001600160a01b03841690836114c5565b6109ca60a0880160808901612163565b6001600160a01b0316837fc5d9f7cd7998e24ecf12ad69eca9339764e2cb13788d5d9616f502601b219af68484604051610a199291906001600160a01b03929092168252602082015260400190565b60405180910390a350505050610a2e60018055565b505050565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b03831693600160a01b90930460ff1692909190610a7390612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f90612647565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b505050505090806003018054610b0190612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90612647565b8015610b7a5780601f10610b4f57610100808354040283529160200191610b7a565b820191906000526020600020905b815481529060010190602001808311610b5d57829003601f168201915b5050505050905085565b610b8c61146c565b6001600160a01b0387161580610be15750610bcc886040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060006106a5565b6001600160a01b0316876001600160a01b0316145b15610bff57604051634694641b60e01b815260040160405180910390fd5b6001600160a01b038616610c2657604051637c6addb760e01b815260040160405180910390fd5b84600003610c465760405162af849960e11b815260040160405180910390fd5b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff1615610e9d57604051630ef7c31560e31b8152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b158015610cd957600080fd5b505af1158015610ced573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a08101845281548152600182015494851692810192909252600160a01b90930460ff1691810191909152600282018054919291606084019190610d5390612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7f90612647565b8015610dcc5780601f10610da157610100808354040283529160200191610dcc565b820191906000526020600020905b815481529060010190602001808311610daf57829003601f168201915b50505050508152602001600382018054610de590612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1190612647565b8015610e5e5780601f10610e3357610100808354040283529160200191610e5e565b820191906000526020600020905b815481529060010190602001808311610e4157829003601f168201915b5050509190925250505060208101519092506001600160a01b0316610e9657604051633e45a03560e21b815260040160405180910390fd5b50856110fd565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f249190612690565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f6a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9291908101906126ad565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ffd91908101906126ad565b90526040516370a0823160e01b81523060048201529093506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d91906125e7565b90506110846001600160a01b03831633308c61171c565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee91906125e7565b6110f89190612723565b925050505b61118c604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015260408051808201909152600b81526a1d1bdad95b97dd985d5b1d60aa1b60208201526111c8908c9060006106a5565b6001600160a01b031660a08201526080810151604051630637d5c160e11b916111fa918691908e908790602401612744565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526101608201526101408101879052610120810186905261124c8634612723565b60e08201526001600160a01b03851660c0820152610180810184905260408051808201909152600681526562726964676560d01b60208201526000906112929082610577565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b81526004016112be91906127dc565b60206040518083038185885af11580156112dc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061130191906125e7565b905060405180604001604052808b6001600160a01b031681526020018481525060cc600083815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101559050508a6001600160a01b031682608001516001600160a01b0316827f325cab7553038374e17f39bb45e2a2c90f66c6a52798cb5f95c20d94c11c95e28f8e886040516113d4939291909283526001600160a01b03919091166020830152604082015260600190565b60405180910390a4505050506113e960018055565b5050505050505050565b6113fb611670565b6001600160a01b0381166114605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610626565b611469816116ca565b50565b6002600154036114be5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610626565b6002600155565b6040516001600160a01b038316602482015260448101829052610a2e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611754565b8035600090815260cb6020908152604080832083929091839161154f918701908701612163565b6001600160a01b039081168252602082019290925260400160002054169050806105875761157c83611826565b6106b5565b60018055565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906115ba90879087906004016128cc565b602060405180830381865afa1580156115d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fb91906128e5565b9050816106b5576040516001600160a01b0382161515906116229086908690602001612902565b6040516020818303038152906040529061164f5760405162461bcd60e51b81526004016106269190612957565b509392505050565b61165f611aab565b611667611ada565b61146981611b09565b6065546001600160a01b031633146106ce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610626565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526105719085906323b872dd60e01b906084016114f1565b60006117a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b529092919063ffffffff16565b805190915015610a2e57808060200190518101906117c7919061262a565b610a2e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610626565b600061189f81833561183e6040860160208701612163565b60405161186192916001600160a01b031690602001918252602082015260400190565b604051602081830303815290604052805190602001206040518060200161188790611fa1565b601f1982820381018352601f90910116604052611b61565b6097549091506001600160a01b0380831691636c0db62b91166118c86040860160208701612163565b85356118da606088016040890161296a565b6118e76060890189612987565b6118f460808b018b612987565b6118fe8c35611c65565b604051602001611910939291906129cd565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016119419796959493929190612a16565b600060405180830381600087803b15801561195b57600080fd5b505af115801561196f573d6000803e3d6000fd5b5050506001600160a01b038216600090815260c960209081526040808320805460ff1916600117905560ca90915290208391506119ac8282612b81565b50508135600090815260cb602090815260408083208493909290916119d691908701908701612163565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316826020016020810190611a379190612163565b6001600160a01b031683357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc611a706060870187612987565b611a7d6080890189612987565b611a8d60608b0160408c0161296a565b604051611a9e959493929190612c08565b60405180910390a4919050565b600054610100900460ff16611ad25760405162461bcd60e51b815260040161062690612c45565b6106ce611cf7565b600054610100900460ff16611b015760405162461bcd60e51b815260040161062690612c45565b6106ce611d1e565b6001600160a01b038116611b3057604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60606106b28484600085611d4e565b600083471015611bb35760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610626565b8151600003611c045760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610626565b8282516020840186f590506001600160a01b0381166106b55760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610626565b60606000611c7283611e2b565b60010190506000816001600160401b03811115611c9157611c91612041565b6040519080825280601f01601f191660200182016040528015611cbb576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611cc557509392505050565b600054610100900460ff166115815760405162461bcd60e51b815260040161062690612c45565b600054610100900460ff16611d455760405162461bcd60e51b815260040161062690612c45565b6106ce336116ca565b606082471015611daf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610626565b600080866001600160a01b03168587604051611dcb9190612c90565b60006040518083038185875af1925050503d8060008114611e08576040519150601f19603f3d011682016040523d82523d6000602084013e611e0d565b606091505b5091509150611e1e87838387611f03565b925050505b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e6a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611e96576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611eb457662386f26fc10000830492506010015b6305f5e1008310611ecc576305f5e100830492506008015b6127108310611ee057612710830492506004015b60648310611ef2576064830492506002015b600a83106105875760010192915050565b60608315611f72578251600003611f6b576001600160a01b0385163b611f6b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610626565b5081611e23565b611e238383815115611f875781518083602001fd5b8060405162461bcd60e51b81526004016106269190612957565b61179b80612cad83390190565b6001600160a01b038116811461146957600080fd5b8035611fce81611fae565b919050565b60008060008060808587031215611fe957600080fd5b84356001600160401b03811115611fff57600080fd5b850160a0818803121561201157600080fd5b9350602085013561202181611fae565b9250604085013561203181611fae565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561207f5761207f612041565b604052919050565b60006001600160401b038211156120a0576120a0612041565b50601f01601f191660200190565b600082601f8301126120bf57600080fd5b81356120d26120cd82612087565b612057565b8181528460208386010111156120e757600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461146957600080fd5b6000806040838503121561212557600080fd5b82356001600160401b0381111561213b57600080fd5b612147858286016120ae565b925050602083013561215881612104565b809150509250929050565b60006020828403121561217557600080fd5b81356106b581611fae565b60008060006060848603121561219557600080fd5b8335925060208401356001600160401b038111156121b257600080fd5b6121be868287016120ae565b92505060408401356121cf81612104565b809150509250925092565b600080604083850312156121ed57600080fd5b82359150602083013561215881611fae565b60006020828403121561221157600080fd5b5035919050565b60008060006040848603121561222d57600080fd5b83356001600160401b038082111561224457600080fd5b908501906101a0828803121561225957600080fd5b9093506020850135908082111561226f57600080fd5b818601915086601f83011261228357600080fd5b81358181111561229257600080fd5b8760208285010111156122a457600080fd5b6020830194508093505050509250925092565b60005b838110156122d25781810151838201526020016122ba565b50506000910152565b600081518084526122f38160208601602086016122b7565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a06060820181905260009061233a908301856122db565b828103608084015261234c81856122db565b98975050505050505050565b600080600080600080600080610100898b03121561237557600080fd5b88359750602089013561238781611fae565b9650604089013561239781611fae565b9550606089013594506080890135935060a0890135925060c08901356123bc81611fae565b915060e08901356001600160401b038111156123d757600080fd5b6123e38b828c016120ae565b9150509295985092959890939650565b60006060828403121561240557600080fd5b604051606081018181106001600160401b038211171561242757612427612041565b60405282518152602083015161243c81611fae565b60208201526040928301519281019290925250919050565b6000808335601e1984360301811261246b57600080fd5b83016020810192503590506001600160401b0381111561248a57600080fd5b80360382131561249957600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081528135602082015260006124e260208401611fc3565b6001600160a01b038116604084015250604083013560608301526060830135608083015261251260808401611fc3565b6001600160a01b03811660a08401525061252e60a08401611fc3565b6001600160a01b03811660c08401525061254a60c08401611fc3565b6001600160a01b03811660e08401525061010060e08401358184015261012081850135818501526101409150808501358285015250610160818501358185015261259681860186612454565b925090506101a061018081818701526125b46101c0870185856124a0565b93506125c281880188612454565b878603601f190184890152935090506125dc8484836124a0565b979650505050505050565b6000602082840312156125f957600080fd5b5051919050565b8481528360208201526060604082015260006126206060830184866124a0565b9695505050505050565b60006020828403121561263c57600080fd5b81516106b581612104565b600181811c9082168061265b57607f821691505b60208210810361267b57634e487b7160e01b600052602260045260246000fd5b50919050565b60ff8116811461146957600080fd5b6000602082840312156126a257600080fd5b81516106b581612681565b6000602082840312156126bf57600080fd5b81516001600160401b038111156126d557600080fd5b8201601f810184136126e657600080fd5b80516126f46120cd82612087565b81815285602083850101111561270957600080fd5b61271a8260208301602086016122b7565b95945050505050565b8181038181111561058757634e487b7160e01b600052601160045260246000fd5b60808152845160808201526000602086015160018060a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e085015261278e6101208501836122db565b91506080880151607f19858403016101008601526127ac83826122db565b9188166020860152506001600160a01b038616604085015291506127cd9050565b82606083015295945050505050565b60208152815160208201526000602083015161280360408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161283260a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526128b06101c08601846122db565b90860151858203601f19018387015290925061262083826122db565b8281526040602082015260006106b260408301846122db565b6000602082840312156128f757600080fd5b81516106b581611fae565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e0820152600061010080606084015261271a818401856122db565b60208152600061058460208301846122db565b60006020828403121561297c57600080fd5b81356106b581612681565b6000808335601e1984360301811261299e57600080fd5b8301803591506001600160401b038211156129b857600080fd5b60200191503681900382131561249957600080fd5b8284823760008382016b050c4e4d2c8cecac9e13f19160a31b815283516129fb81600c8401602088016122b7565b602960f81b600c9290910191820152600d0195945050505050565b6001600160a01b038881168252871660208201526040810186905260ff8516606082015260c060808201819052600090612a5390830185876124a0565b82810360a0840152612a6581856122db565b9a9950505050505050505050565b601f821115610a2e57600081815260208120601f850160051c81016020861015612a9a5750805b601f850160051c820191505b81811015612ab957828155600101612aa6565b505050505050565b6001600160401b03831115612ad857612ad8612041565b612aec83612ae68354612647565b83612a73565b6000601f841160018114612b205760008515612b085750838201355b600019600387901b1c1916600186901b178355612b7a565b600083815260209020601f19861690835b82811015612b515786850135825560209485019460019092019101612b31565b5086821015612b6e5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135612b9781611fae565b81546040850135612ba781612681565b60ff60a01b60a09190911b166001600160a01b03929092166001600160a81b03199190911617179055612bdd6060830183612987565b612beb818360028601612ac1565b5050612bfa6080830183612987565b610571818360038601612ac1565b606081526000612c1c6060830187896124a0565b8281036020840152612c2f8186886124a0565b91505060ff831660408301529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251612ca28184602087016122b7565b919091019291505056fe608060405234801561001057600080fd5b5061177b806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806367e828bf116100c35780638da5cb5b1161007c5780638da5cb5b146102ed57806395d89b41146102fe578063a457c2d714610306578063a9059cbb14610319578063dd62ed3e1461032c578063f2fde38b1461036557600080fd5b806367e828bf1461024d5780636c0db62b1461028357806370a0823114610296578063715018a6146102bf57806377be18a8146102c75780637cf8ed0d146102da57600080fd5b806323b872dd1161011557806323b872dd146101e3578063313ce567146101f6578063395093511461020b5780633ab76e9f1461021e57806342e91bb31461022f57806349d126051461024457600080fd5b806306fdde0314610152578063095ea7b3146101705780630ca4dffd1461019357806318160ddd146101be5780631be2bfa7146101d0575b600080fd5b61015a610378565b60405161016791906111f0565b60405180910390f35b61018361017e366004611218565b61040a565b6040519015158152602001610167565b6101a66101a13660046112fc565b610424565b6040516001600160a01b039091168152602001610167565b60cb545b604051908152602001610167565b6101a66101de36600461134a565b610438565b6101836101f13660046113a1565b61044d565b60ce5460405160ff9091168152602001610167565b610183610219366004611218565b610483565b6097546001600160a01b03166101a6565b61024261023d366004611218565b6104c2565b005b6101c260fc5481565b61026460fb5460fc546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610167565b6102426102913660046113e2565b610574565b6101c26102a436600461148c565b6001600160a01b0316600090815260c9602052604090205490565b61024261070c565b6102426102d5366004611218565b610720565b60fb546101a6906001600160a01b031681565b6065546001600160a01b03166101a6565b61015a6107c5565b610183610314366004611218565b6107d4565b610183610327366004611218565b610871565b6101c261033a3660046114a9565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b61024261037336600461148c565b6108a6565b606060cc8054610387906114e2565b80601f01602080910402602001604051908101604052809291908181526020018280546103b3906114e2565b80156104005780601f106103d557610100808354040283529160200191610400565b820191906000526020600020905b8154815290600101906020018083116103e357829003601f168201915b5050505050905090565b60003361041881858561091f565b60019150505b92915050565b6000610431468484610a43565b9392505050565b6000610445848484610a43565b949350505050565b6000306001600160a01b03841603610478576040516319a6f37760e21b815260040160405180910390fd5b610445848484610b13565b33600081815260ca602090815260408083206001600160a01b038716845290915281205490919061041890829086906104bd908790611532565b61091f565b6040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b8152506104f1816000610424565b6001600160a01b0316336001600160a01b03161461052257604051630d85cccf60e11b815260040160405180910390fd5b61052c8383610b2c565b826001600160a01b03167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa68360405161056791815260200190565b60405180910390a2505050565b600054610100900460ff16158080156105945750600054600160ff909116105b806105ae5750303b1580156105ae575060005460ff166001145b6106165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610639576000805461ff0019166101001790555b6001600160a01b038616158061064d575084155b8061065757504685145b8061066157508251155b8061066b57508151155b15610689576040516301e25ab360e71b815260040160405180910390fd5b61069287610bd0565b61069d828486610be9565b60fb80546001600160a01b0319166001600160a01b03881617905560fc8590558015610703576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610714610c20565b61071e6000610c7a565b565b6040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525061074f816000610424565b6001600160a01b0316336001600160a01b03161461078057604051630d85cccf60e11b815260040160405180910390fd5b61078a8383610ccc565b826001600160a01b03167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d76545265538360405161056791815260200190565b606060cd8054610387906114e2565b33600081815260ca602090815260408083206001600160a01b0387168452909152812054909190838110156108595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161060d565b610866828686840361091f565b506001949350505050565b6000306001600160a01b0384160361089c576040516319a6f37760e21b815260040160405180910390fd5b6104318383610ddf565b6108ae610c20565b6001600160a01b0381166109135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b61091c81610c7a565b50565b6001600160a01b0383166109815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6001600160a01b0382166109e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060d565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b609754604051631083571360e31b81526000916001600160a01b03169063841ab89890610a769087908790600401611545565b602060405180830381865afa158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab7919061155e565b905081610431576040516001600160a01b038216151590610ade908690869060200161157b565b60405160208183030381529060405290610b0b5760405162461bcd60e51b815260040161060d91906111f0565b509392505050565b600033610b21858285610ded565b610866858585610e7f565b6001600160a01b038216610b825760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161060d565b8060cb6000828254610b949190611532565b90915550506001600160a01b038216600090815260c9602052604081208054839290610bc1908490611532565b90915550610bcc9050565b5050565b610bd861104d565b610be061107c565b61091c816110ab565b600054610100900460ff16610c105760405162461bcd60e51b815260040161060d906115d9565b610c1b8383836110f4565b505050565b6065546001600160a01b0316331461071e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610d2c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161060d565b6001600160a01b038216600090815260c9602052604090205481811015610da05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161060d565b6001600160a01b038316600090815260c960205260408120838303905560cb8054849290610dcf908490611624565b90915550610c1b90508360008483565b600033610418818585610e7f565b6001600160a01b03838116600090815260ca60209081526040808320938616835292905220546000198114610e795781811015610e6c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b610e79848484840361091f565b50505050565b6001600160a01b038316610ee35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060d565b6001600160a01b038216610f455760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060d565b6001600160a01b038316600090815260c9602052604090205481811015610fbd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060d565b6001600160a01b03808516600090815260c96020526040808220858503905591851681529081208054849290610ff4908490611532565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161104091815260200190565b60405180910390a3610e79565b600054610100900460ff166110745760405162461bcd60e51b815260040161060d906115d9565b61071e61114d565b600054610100900460ff166110a35760405162461bcd60e51b815260040161060d906115d9565b61071e61117a565b6001600160a01b0381166110d257604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661111b5760405162461bcd60e51b815260040161060d906115d9565b60cc6111278482611685565b5060cd6111348382611685565b5060ce805460ff191660ff929092169190911790555050565b600054610100900460ff166111745760405162461bcd60e51b815260040161060d906115d9565b60018055565b600054610100900460ff166111a15760405162461bcd60e51b815260040161060d906115d9565b61071e33610c7a565b6000815180845260005b818110156111d0576020818501810151868301820152016111b4565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061043160208301846111aa565b6001600160a01b038116811461091c57600080fd5b6000806040838503121561122b57600080fd5b823561123681611203565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261126b57600080fd5b813567ffffffffffffffff8082111561128657611286611244565b604051601f8301601f19908116603f011681019082821181831017156112ae576112ae611244565b816040528381528660208588010111156112c757600080fd5b836020870160208301376000602085830101528094505050505092915050565b803580151581146112f757600080fd5b919050565b6000806040838503121561130f57600080fd5b823567ffffffffffffffff81111561132657600080fd5b6113328582860161125a565b925050611341602084016112e7565b90509250929050565b60008060006060848603121561135f57600080fd5b83359250602084013567ffffffffffffffff81111561137d57600080fd5b6113898682870161125a565b925050611398604085016112e7565b90509250925092565b6000806000606084860312156113b657600080fd5b83356113c181611203565b925060208401356113d181611203565b929592945050506040919091013590565b60008060008060008060c087890312156113fb57600080fd5b863561140681611203565b9550602087013561141681611203565b945060408701359350606087013560ff8116811461143357600080fd5b9250608087013567ffffffffffffffff8082111561145057600080fd5b61145c8a838b0161125a565b935060a089013591508082111561147257600080fd5b5061147f89828a0161125a565b9150509295509295509295565b60006020828403121561149e57600080fd5b813561043181611203565b600080604083850312156114bc57600080fd5b82356114c781611203565b915060208301356114d781611203565b809150509250929050565b600181811c908216806114f657607f821691505b60208210810361151657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561041e5761041e61151c565b82815260406020820152600061044560408301846111aa565b60006020828403121561157057600080fd5b815161043181611203565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e082015260006101008060608401526115d0818401856111aa565b95945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8181038181111561041e5761041e61151c565b601f821115610c1b57600081815260208120601f850160051c8101602086101561165e5750805b601f850160051c820191505b8181101561167d5782815560010161166a565b505050505050565b815167ffffffffffffffff81111561169f5761169f611244565b6116b3816116ad84546114e2565b84611637565b602080601f8311600181146116e857600084156116d05750858301515b600019600386901b1c1916600185901b17855561167d565b600085815260208120601f198616915b82811015611717578886015182559484019460019091019084016116f8565b50858210156117355787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220ca76596b3503f05be2b029bd48d6388ebec4ff9261948cac40d64bcced6ea6ae64736f6c63430008120033a2646970667358221220fd0fe1c995d0ba66857bfae11cff691723308c222d75d146fb0695825748cae564736f6c63430008120033", + "code": "0x6080604052600436106100dd5760003560e01c80638da5cb5b1161007f578063a86f9d9e11610059578063a86f9d9e1461029f578063c287e578146102bf578063ee1490b2146102ff578063f2fde38b1461031257600080fd5b80638da5cb5b146102305780639754149b1461024e5780639aa8605c1461026e57600080fd5b806367090ccf116100bb57806367090ccf1461015b5780636c6563f61461019c578063715018a6146101bc578063780b64f0146101d157600080fd5b80630c6fab82146100e257806319ab453c146101045780633ab76e9f14610124575b600080fd5b3480156100ee57600080fd5b506101026100fd366004611f9b565b610332565b005b34801561011057600080fd5b5061010261011f36600461200a565b610549565b34801561013057600080fd5b506097546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016757600080fd5b5061013e610176366004612027565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b3480156101a857600080fd5b5061013e6101b7366004612065565b610661565b3480156101c857600080fd5b50610102610678565b3480156101dd57600080fd5b506102116101ec36600461209e565b60cc60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610152565b34801561023c57600080fd5b506065546001600160a01b031661013e565b34801561025a57600080fd5b506101026102693660046120b7565b61068c565b34801561027a57600080fd5b5061028e61028936600461200a565b6109da565b6040516101529594939291906121a7565b3480156102ab57600080fd5b5061013e6102ba3660046121f8565b610b2b565b3480156102cb57600080fd5b506102ef6102da36600461200a565b60c96020526000908152604090205460ff1681565b6040519015158152602001610152565b61010261030d36600461228c565b610b41565b34801561031e57600080fd5b5061010261032d36600461200a565b611371565b61033a6113ea565b6562726964676560d01b61034f816000610b2b565b6001600160a01b0316336001600160a01b03161461038057604051630d85cccf60e11b815260040160405180910390fd5b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e4919061236b565b905061040481604001516a1d1bdad95b97dd985d5b1d60aa1b6000610661565b6001600160a01b031681602001516001600160a01b031614610439576040516320258b8760e21b815260040160405180910390fd5b60004687350361046e57610453604088016020890161200a565b90506104696001600160a01b0382168686611443565b6104de565b610477876114a6565b6040516342e91bb360e01b81526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b1580156104c557600080fd5b505af11580156104d9573d6000803e3d6000fd5b505050505b815160408084015181519081526001600160a01b0384811660208301529181018790528188169291891691907fe5da926519fc972010fe65b35c1e3339e6dc72b35ffaec203999c2a2a2593eac9060600160405180910390a450505061054360018055565b50505050565b600054610100900460ff16158080156105695750600054600160ff909116105b806105835750303b158015610583575060005460ff166001145b6105eb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561060e576000805461ff0019166101001790555b61061782611505565b801561065d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600061066e84848461151e565b90505b9392505050565b610680611637565b61068a6000611691565b565b6106946113ea565b60006106a660a085016080860161200a565b6001600160a01b0316036106cd576040516372b41cdf60e01b815260040160405180910390fd5b468360400135146106f1576040516348bc100560e01b815260040160405180910390fd5b60006107076562726964676560d01b6000610b2b565b90506000816001600160a01b0316635817b0c3866040518263ffffffff1660e01b81526004016107379190612443565b602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107789190612561565b600081815260cc6020526040902080546001909101549192506001600160a01b031690816107b957604051637c6addb760e01b815260040160405180910390fd5b60405163ce70f39b60e01b81526001600160a01b0385169063ce70f39b906107ef90869060608c0135908b908b9060040161257a565b602060405180830381865afa15801561080c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083091906125a4565b61084d576040516308ba49e560e31b815260040160405180910390fd5b6040805180820182526000808252602080830182815287835260cc909152929020905181546001600160a01b0319166001600160a01b0390911617815590516001909101558015610961576001600160a01b038216600090815260c9602052604090205460ff161561093d576001600160a01b0382166342e91bb36108d860a08a0160808b0161200a565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b15801561092057600080fd5b505af1158015610934573d6000803e3d6000fd5b50505050610961565b61096161095060a0890160808a0161200a565b6001600160a01b0384169083611443565b61097160a088016080890161200a565b6001600160a01b0316837fc5d9f7cd7998e24ecf12ad69eca9339764e2cb13788d5d9616f502601b219af684846040516109c09291906001600160a01b03929092168252602082015260400190565b60405180910390a3505050506109d560018055565b505050565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b03831693600160a01b90930460ff1692909190610a1a906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a46906125c1565b8015610a935780601f10610a6857610100808354040283529160200191610a93565b820191906000526020600020905b815481529060010190602001808311610a7657829003601f168201915b505050505090806003018054610aa8906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad4906125c1565b8015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b5050505050905085565b6000610b3846848461151e565b90505b92915050565b610b496113ea565b6001600160a01b0387161580610b895750610b74886a1d1bdad95b97dd985d5b1d60aa1b6000610661565b6001600160a01b0316876001600160a01b0316145b15610ba757604051634694641b60e01b815260040160405180910390fd5b6001600160a01b038616610bce57604051637c6addb760e01b815260040160405180910390fd5b84600003610bee5760405162af849960e11b815260040160405180910390fd5b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff1615610e4557604051630ef7c31560e31b8152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a08101845281548152600182015494851692810192909252600160a01b90930460ff1691810191909152600282018054919291606084019190610cfb906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610d27906125c1565b8015610d745780601f10610d4957610100808354040283529160200191610d74565b820191906000526020600020905b815481529060010190602001808311610d5757829003601f168201915b50505050508152602001600382018054610d8d906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610db9906125c1565b8015610e065780601f10610ddb57610100808354040283529160200191610e06565b820191906000526020600020905b815481529060010190602001808311610de957829003601f168201915b5050509190925250505060208101519092506001600160a01b0316610e3e57604051633e45a03560e21b815260040160405180910390fd5b50856110a5565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc919061260a565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f3a9190810190612627565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fa59190810190612627565b90526040516370a0823160e01b81523060048201529093506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ff1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110159190612561565b905061102c6001600160a01b03831633308c6116e3565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110969190612561565b6110a0919061269e565b925050505b611134604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015261115b8b6a1d1bdad95b97dd985d5b1d60aa1b6000610661565b6001600160a01b031660a08201526080810151604051630637d5c160e11b9161118d918691908e9087906024016126bf565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610160820152610140810187905261012081018690526111df863461269e565b60e08201526001600160a01b03851660c0820152610180810184905260006112106562726964676560d01b82610b2b565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b815260040161123c9190612757565b60206040518083038185885af115801561125a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061127f9190612561565b905060405180604001604052808b6001600160a01b031681526020018481525060cc600083815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101559050508a6001600160a01b031682608001516001600160a01b0316827f325cab7553038374e17f39bb45e2a2c90f66c6a52798cb5f95c20d94c11c95e28f8e88604051611352939291909283526001600160a01b03919091166020830152604082015260600190565b60405180910390a45050505061136760018055565b5050505050505050565b611379611637565b6001600160a01b0381166113de5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e2565b6113e781611691565b50565b60026001540361143c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105e2565b6002600155565b6040516001600160a01b0383166024820152604481018290526109d590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261171b565b8035600090815260cb602090815260408083208392909183916114cd91870190870161200a565b6001600160a01b03908116825260208201929092526040016000205416905080610b3b576114fa836117ed565b610671565b60018055565b61150d611a72565b611515611aa1565b6113e781611ad0565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa15801561156f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115939190612847565b905081610671576040516001600160a01b03821615159061160290869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b6040516020818303038152906040529061162f5760405162461bcd60e51b81526004016105e29190612864565b509392505050565b6065546001600160a01b0316331461068a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e2565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526105439085906323b872dd60e01b9060840161146f565b6000611770826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b199092919063ffffffff16565b8051909150156109d5578080602001905181019061178e91906125a4565b6109d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105e2565b6000611866818335611805604086016020870161200a565b60405161182892916001600160a01b031690602001918252602082015260400190565b604051602081830303815290604052805190602001206040518060200161184e90611f69565b601f1982820381018352601f90910116604052611b28565b6097549091506001600160a01b0380831691636c0db62b911661188f604086016020870161200a565b85356118a16060880160408901612877565b6118ae6060890189612894565b6118bb60808b018b612894565b6118c58c35611c2c565b6040516020016118d7939291906128db565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016119089796959493929190612924565b600060405180830381600087803b15801561192257600080fd5b505af1158015611936573d6000803e3d6000fd5b5050506001600160a01b038216600090815260c960209081526040808320805460ff1916600117905560ca90915290208391506119738282612a90565b50508135600090815260cb6020908152604080832084939092909161199d9190870190870161200a565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b03168260200160208101906119fe919061200a565b6001600160a01b031683357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc611a376060870187612894565b611a446080890189612894565b611a5460608b0160408c01612877565b604051611a65959493929190612b17565b60405180910390a4919050565b600054610100900460ff16611a995760405162461bcd60e51b81526004016105e290612b54565b61068a611cbf565b600054610100900460ff16611ac85760405162461bcd60e51b81526004016105e290612b54565b61068a611ce6565b6001600160a01b038116611af757604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b606061066e8484600085611d16565b600083471015611b7a5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016105e2565b8151600003611bcb5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016105e2565b8282516020840186f590506001600160a01b0381166106715760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016105e2565b60606000611c3983611df3565b600101905060008167ffffffffffffffff811115611c5957611c5961221d565b6040519080825280601f01601f191660200182016040528015611c83576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611c8d57509392505050565b600054610100900460ff166114ff5760405162461bcd60e51b81526004016105e290612b54565b600054610100900460ff16611d0d5760405162461bcd60e51b81526004016105e290612b54565b61068a33611691565b606082471015611d775760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105e2565b600080866001600160a01b03168587604051611d939190612b9f565b60006040518083038185875af1925050503d8060008114611dd0576040519150601f19603f3d011682016040523d82523d6000602084013e611dd5565b606091505b5091509150611de687838387611ecb565b925050505b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e325772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611e5e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611e7c57662386f26fc10000830492506010015b6305f5e1008310611e94576305f5e100830492506008015b6127108310611ea857612710830492506004015b60648310611eba576064830492506002015b600a8310610b3b5760010192915050565b60608315611f3a578251600003611f33576001600160a01b0385163b611f335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105e2565b5081611deb565b611deb8383815115611f4f5781518083602001fd5b8060405162461bcd60e51b81526004016105e29190612864565b6116eb80612bbc83390190565b6001600160a01b03811681146113e757600080fd5b8035611f9681611f76565b919050565b60008060008060808587031215611fb157600080fd5b843567ffffffffffffffff811115611fc857600080fd5b850160a08188031215611fda57600080fd5b93506020850135611fea81611f76565b92506040850135611ffa81611f76565b9396929550929360600135925050565b60006020828403121561201c57600080fd5b813561067181611f76565b6000806040838503121561203a57600080fd5b82359150602083013561204c81611f76565b809150509250929050565b80151581146113e757600080fd5b60008060006060848603121561207a57600080fd5b8335925060208401359150604084013561209381612057565b809150509250925092565b6000602082840312156120b057600080fd5b5035919050565b6000806000604084860312156120cc57600080fd5b833567ffffffffffffffff808211156120e457600080fd5b908501906101a082880312156120f957600080fd5b9093506020850135908082111561210f57600080fd5b818601915086601f83011261212357600080fd5b81358181111561213257600080fd5b87602082850101111561214457600080fd5b6020830194508093505050509250925092565b60005b8381101561217257818101518382015260200161215a565b50506000910152565b60008151808452612193816020860160208601612157565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a0606082018190526000906121da9083018561217b565b82810360808401526121ec818561217b565b98975050505050505050565b6000806040838503121561220b57600080fd5b82359150602083013561204c81612057565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561225c5761225c61221d565b604052919050565b600067ffffffffffffffff82111561227e5761227e61221d565b50601f01601f191660200190565b600080600080600080600080610100898b0312156122a957600080fd5b8835975060208901356122bb81611f76565b965060408901356122cb81611f76565b9550606089013594506080890135935060a0890135925060c08901356122f081611f76565b915060e089013567ffffffffffffffff81111561230c57600080fd5b8901601f81018b1361231d57600080fd5b803561233061232b82612264565b612233565b8181528c602083850101111561234557600080fd5b816020840160208301376000602083830101528093505050509295985092959890939650565b60006060828403121561237d57600080fd5b6040516060810181811067ffffffffffffffff821117156123a0576123a061221d565b6040528251815260208301516123b581611f76565b60208201526040928301519281019290925250919050565b6000808335601e198436030181126123e457600080fd5b830160208101925035905067ffffffffffffffff81111561240457600080fd5b80360382131561241357600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815281356020820152600061245c60208401611f8b565b6001600160a01b038116604084015250604083013560608301526060830135608083015261248c60808401611f8b565b6001600160a01b03811660a0840152506124a860a08401611f8b565b6001600160a01b03811660c0840152506124c460c08401611f8b565b6001600160a01b03811660e08401525061010060e084013581840152610120818501358185015261014091508085013582850152506101608185013581850152612510818601866123cd565b925090506101a0610180818187015261252e6101c08701858561241a565b935061253c818801886123cd565b878603601f1901848901529350905061255684848361241a565b979650505050505050565b60006020828403121561257357600080fd5b5051919050565b84815283602082015260606040820152600061259a60608301848661241a565b9695505050505050565b6000602082840312156125b657600080fd5b815161067181612057565b600181811c908216806125d557607f821691505b6020821081036125f557634e487b7160e01b600052602260045260246000fd5b50919050565b60ff811681146113e757600080fd5b60006020828403121561261c57600080fd5b8151610671816125fb565b60006020828403121561263957600080fd5b815167ffffffffffffffff81111561265057600080fd5b8201601f8101841361266157600080fd5b805161266f61232b82612264565b81815285602083850101111561268457600080fd5b612695826020830160208601612157565b95945050505050565b81810381811115610b3b57634e487b7160e01b600052601160045260246000fd5b60808152845160808201526000602086015160018060a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e085015261270961012085018361217b565b91506080880151607f1985840301610100860152612727838261217b565b9188166020860152506001600160a01b038616604085015291506127489050565b82606083015295945050505050565b60208152815160208201526000602083015161277e60408401826001600160a01b03169052565b50604083015160608301526060830151608083015260808301516127ad60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a061018080850182905261282b6101c086018461217b565b90860151858203601f19018387015290925061259a838261217b565b60006020828403121561285957600080fd5b815161067181611f76565b602081526000610b38602083018461217b565b60006020828403121561288957600080fd5b8135610671816125fb565b6000808335601e198436030181126128ab57600080fd5b83018035915067ffffffffffffffff8211156128c657600080fd5b60200191503681900382131561241357600080fd5b8284823760008382016b050c4e4d2c8cecac9e13f19160a31b8152835161290981600c840160208801612157565b602960f81b600c9290910191820152600d0195945050505050565b6001600160a01b038881168252871660208201526040810186905260ff8516606082015260c060808201819052600090612961908301858761241a565b82810360a0840152612973818561217b565b9a9950505050505050505050565b601f8211156109d557600081815260208120601f850160051c810160208610156129a85750805b601f850160051c820191505b818110156129c7578281556001016129b4565b505050505050565b67ffffffffffffffff8311156129e7576129e761221d565b6129fb836129f583546125c1565b83612981565b6000601f841160018114612a2f5760008515612a175750838201355b600019600387901b1c1916600186901b178355612a89565b600083815260209020601f19861690835b82811015612a605786850135825560209485019460019092019101612a40565b5086821015612a7d5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135612aa681611f76565b81546040850135612ab6816125fb565b60ff60a01b60a09190911b166001600160a01b03929092166001600160a81b03199190911617179055612aec6060830183612894565b612afa8183600286016129cf565b5050612b096080830183612894565b6105438183600386016129cf565b606081526000612b2b60608301878961241a565b8281036020840152612b3e81868861241a565b91505060ff831660408301529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251612bb1818460208701612157565b919091019291505056fe608060405234801561001057600080fd5b506116cb806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80636c6563f6116100c357806395d89b411161007c57806395d89b41146102e7578063a457c2d7146102ef578063a86f9d9e14610302578063a9059cbb14610315578063dd62ed3e14610328578063f2fde38b1461036157600080fd5b80636c6563f61461026c57806370a082311461027f578063715018a6146102a857806377be18a8146102b05780637cf8ed0d146102c35780638da5cb5b146102d657600080fd5b8063395093511161011557806339509351146101cd5780633ab76e9f146101e057806342e91bb31461020557806349d126051461021a57806367e828bf146102235780636c0db62b1461025957600080fd5b806306fdde0314610152578063095ea7b31461017057806318160ddd1461019357806323b872dd146101a5578063313ce567146101b8575b600080fd5b61015a610374565b60405161016791906111c0565b60405180910390f35b61018361017e366004611223565b610406565b6040519015158152602001610167565b60cb545b604051908152602001610167565b6101836101b336600461124f565b610420565b60ce5460405160ff9091168152602001610167565b6101836101db366004611223565b610460565b6097546001600160a01b03165b6040516001600160a01b039091168152602001610167565b610218610213366004611223565b61049f565b005b61019760fc5481565b61023a60fb5460fc546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610167565b610218610267366004611333565b61053c565b6101ed61027a3660046113f2565b6106d4565b61019761028d366004611427565b6001600160a01b0316600090815260c9602052604090205490565b6102186106e1565b6102186102be366004611223565b6106f5565b60fb546101ed906001600160a01b031681565b6065546001600160a01b03166101ed565b61015a610785565b6101836102fd366004611223565b610794565b6101ed610310366004611444565b610831565b610183610323366004611223565b61083e565b610197610336366004611470565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b61021861036f366004611427565b610873565b606060cc8054610383906114a9565b80601f01602080910402602001604051908101604052809291908181526020018280546103af906114a9565b80156103fc5780601f106103d1576101008083540402835291602001916103fc565b820191906000526020600020905b8154815290600101906020018083116103df57829003601f168201915b5050505050905090565b6000336104148185856108ec565b60019150505b92915050565b6000306001600160a01b0384160361044b576040516319a6f37760e21b815260040160405180910390fd5b610456848484610a10565b90505b9392505050565b33600081815260ca602090815260408083206001600160a01b0387168452909152812054909190610414908290869061049a9087906114f9565b6108ec565b6a1d1bdad95b97dd985d5b1d60aa1b6104b9816000610831565b6001600160a01b0316336001600160a01b0316146104ea57604051630d85cccf60e11b815260040160405180910390fd5b6104f48383610a29565b826001600160a01b03167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa68360405161052f91815260200190565b60405180910390a2505050565b600054610100900460ff161580801561055c5750600054600160ff909116105b806105765750303b158015610576575060005460ff166001145b6105de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610601576000805461ff0019166101001790555b6001600160a01b0386161580610615575084155b8061061f57504685145b8061062957508251155b8061063357508151155b15610651576040516301e25ab360e71b815260040160405180910390fd5b61065a87610acd565b610665828486610ae6565b60fb80546001600160a01b0319166001600160a01b03881617905560fc85905580156106cb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6000610456848484610b1d565b6106e9610c36565b6106f36000610c90565b565b6a1d1bdad95b97dd985d5b1d60aa1b61070f816000610831565b6001600160a01b0316336001600160a01b03161461074057604051630d85cccf60e11b815260040160405180910390fd5b61074a8383610ce2565b826001600160a01b03167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d76545265538360405161052f91815260200190565b606060cd8054610383906114a9565b33600081815260ca602090815260408083206001600160a01b0387168452909152812054909190838110156108195760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105d5565b61082682868684036108ec565b506001949350505050565b6000610459468484610b1d565b6000306001600160a01b03841603610869576040516319a6f37760e21b815260040160405180910390fd5b6104598383610df5565b61087b610c36565b6001600160a01b0381166108e05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d5565b6108e981610c90565b50565b6001600160a01b03831661094e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d5565b6001600160a01b0382166109af5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d5565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600033610a1e858285610e03565b610826858585610e95565b6001600160a01b038216610a7f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105d5565b8060cb6000828254610a9191906114f9565b90915550506001600160a01b038216600090815260c9602052604081208054839290610abe9084906114f9565b90915550610ac99050565b5050565b610ad5611063565b610add611092565b6108e9816110c1565b600054610100900460ff16610b0d5760405162461bcd60e51b81526004016105d59061150c565b610b1883838361110a565b505050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b929190611557565b905081610459576040516001600160a01b038216151590610c0190869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b60405160208183030381529060405290610c2e5760405162461bcd60e51b81526004016105d591906111c0565b509392505050565b6065546001600160a01b031633146106f35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d5565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610d425760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105d5565b6001600160a01b038216600090815260c9602052604090205481811015610db65760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105d5565b6001600160a01b038316600090815260c960205260408120838303905560cb8054849290610de5908490611574565b90915550610b1890508360008483565b600033610414818585610e95565b6001600160a01b03838116600090815260ca60209081526040808320938616835292905220546000198114610e8f5781811015610e825760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105d5565b610e8f84848484036108ec565b50505050565b6001600160a01b038316610ef95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d5565b6001600160a01b038216610f5b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d5565b6001600160a01b038316600090815260c9602052604090205481811015610fd35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105d5565b6001600160a01b03808516600090815260c9602052604080822085850390559185168152908120805484929061100a9084906114f9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161105691815260200190565b60405180910390a3610e8f565b600054610100900460ff1661108a5760405162461bcd60e51b81526004016105d59061150c565b6106f3611163565b600054610100900460ff166110b95760405162461bcd60e51b81526004016105d59061150c565b6106f3611190565b6001600160a01b0381166110e857604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166111315760405162461bcd60e51b81526004016105d59061150c565b60cc61113d84826115d5565b5060cd61114a83826115d5565b5060ce805460ff191660ff929092169190911790555050565b600054610100900460ff1661118a5760405162461bcd60e51b81526004016105d59061150c565b60018055565b600054610100900460ff166111b75760405162461bcd60e51b81526004016105d59061150c565b6106f333610c90565b600060208083528351808285015260005b818110156111ed578581018301518582016040015282016111d1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146108e957600080fd5b6000806040838503121561123657600080fd5b82356112418161120e565b946020939093013593505050565b60008060006060848603121561126457600080fd5b833561126f8161120e565b9250602084013561127f8161120e565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126112b757600080fd5b813567ffffffffffffffff808211156112d2576112d2611290565b604051601f8301601f19908116603f011681019082821181831017156112fa576112fa611290565b8160405283815286602085880101111561131357600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060008060c0878903121561134c57600080fd5b86356113578161120e565b955060208701356113678161120e565b945060408701359350606087013560ff8116811461138457600080fd5b9250608087013567ffffffffffffffff808211156113a157600080fd5b6113ad8a838b016112a6565b935060a08901359150808211156113c357600080fd5b506113d089828a016112a6565b9150509295509295509295565b803580151581146113ed57600080fd5b919050565b60008060006060848603121561140757600080fd5b833592506020840135915061141e604085016113dd565b90509250925092565b60006020828403121561143957600080fd5b81356104598161120e565b6000806040838503121561145757600080fd5b82359150611467602084016113dd565b90509250929050565b6000806040838503121561148357600080fd5b823561148e8161120e565b9150602083013561149e8161120e565b809150509250929050565b600181811c908216806114bd57607f821691505b6020821081036114dd57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561041a5761041a6114e3565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561156957600080fd5b81516104598161120e565b8181038181111561041a5761041a6114e3565b601f821115610b1857600081815260208120601f850160051c810160208610156115ae5750805b601f850160051c820191505b818110156115cd578281556001016115ba565b505050505050565b815167ffffffffffffffff8111156115ef576115ef611290565b611603816115fd84546114a9565b84611587565b602080601f83116001811461163857600084156116205750858301515b600019600386901b1c1916600185901b1785556115cd565b600085815260208120601f198616915b8281101561166757888601518255948401946001909101908401611648565b50858210156116855787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212202503a82dc8fde94e7b48f136ffe73ef34e437fe55ff29b114b6033466e72073864736f6c63430008120033a264697066735822122024a0abd96bb3fe0369964a2b8174e09ad8789a1662fa25a790e750624eb214f564736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000003": { @@ -102,7 +102,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006", "0x029ae2e2f1d6964720a0fa7e6ffa902f995c156242f4f5a930aa9d9765d167d0": "0x0000000000000000000000000000000000000000000000000000000000000001" }, - "code": "0x6080604052600436106100a05760003560e01c8063715018a611610064578063715018a6146101a45780638da5cb5b146101b9578063ba0bbd95146101d7578063d73bb3d0146101f7578063f2fde38b14610217578063fe9fbb801461023757600080fd5b80630ca4dffd146100e957806319ab453c146101265780631be2bfa7146101465780632d1fb389146101665780633ab76e9f1461018657600080fd5b366100e45747158015906100c4575033600090815260c9602052604090205460ff16155b156100e257604051634fa3f24560e01b815260040160405180910390fd5b005b600080fd5b3480156100f557600080fd5b50610109610104366004610aaa565b610280565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561013257600080fd5b506100e2610141366004610b0d565b610294565b34801561015257600080fd5b50610109610161366004610b2a565b6103ac565b34801561017257600080fd5b506100e2610181366004610b81565b6103c1565b34801561019257600080fd5b506097546001600160a01b0316610109565b3480156101b057600080fd5b506100e261047a565b3480156101c557600080fd5b506065546001600160a01b0316610109565b3480156101e357600080fd5b506100e26101f2366004610bad565b61048e565b34801561020357600080fd5b506100e2610212366004610bd9565b61054c565b34801561022357600080fd5b506100e2610232366004610b0d565b6105cf565b34801561024357600080fd5b50610270610252366004610b0d565b6001600160a01b0316600090815260c9602052604090205460ff1690565b604051901515815260200161011d565b600061028d468484610645565b9392505050565b600054610100900460ff16158080156102b45750600054600160ff909116105b806102ce5750303b1580156102ce575060005460ff166001145b6103365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610359576000805461ff0019166101001790555b61036282610715565b80156103a8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006103b9848484610645565b949350505050565b6103c961072e565b6001600160a01b03821615806103fd57506001600160a01b038216600090815260c9602052604090205460ff161515811515145b1561041b57604051631bebdfa760e21b815260040160405180910390fd5b6001600160a01b038216600081815260c96020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b61048261072e565b61048c6000610788565b565b33600090815260c9602052604090205460ff166104be57604051634fa3f24560e01b815260040160405180910390fd5b6104c66107da565b6001600160a01b0382166104ed5760405163687563df60e01b815260040160405180910390fd5b6105006001600160a01b03831682610833565b816001600160a01b03167f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e8260405161053b91815260200190565b60405180910390a26103a860018055565b33600090815260c9602052604090205460ff1661057c57604051634fa3f24560e01b815260040160405180910390fd5b6105846107da565b61058e3382610833565b60405181815233907f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e9060200160405180910390a26105cc60018055565b50565b6105d761072e565b6001600160a01b03811661063c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161032d565b6105cc81610788565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906106789087908790600401610c38565b602060405180830381865afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b99190610c51565b90508161028d576040516001600160a01b0382161515906106e09086908690602001610c6e565b6040516020818303038152906040529061070d5760405162461bcd60e51b815260040161032d9190610ccc565b509392505050565b61071d6108f4565b610725610923565b6105cc81610952565b6065546001600160a01b0316331461048c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161032d565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60026001540361082c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161032d565b6002600155565b80158061084757506001600160a01b038216155b15610850575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461089d576040519150601f19603f3d011682016040523d82523d6000602084013e6108a2565b606091505b50509050806108e95760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161032d565b505050565b60018055565b600054610100900460ff1661091b5760405162461bcd60e51b815260040161032d90610cdf565b61048c61099b565b600054610100900460ff1661094a5760405162461bcd60e51b815260040161032d90610cdf565b61048c6109c2565b6001600160a01b03811661097957604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166108ee5760405162461bcd60e51b815260040161032d90610cdf565b600054610100900460ff166109e95760405162461bcd60e51b815260040161032d90610cdf565b61048c33610788565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a1957600080fd5b813567ffffffffffffffff80821115610a3457610a346109f2565b604051601f8301601f19908116603f01168101908282118183101715610a5c57610a5c6109f2565b81604052838152866020858801011115610a7557600080fd5b836020870160208301376000602085830101528094505050505092915050565b80358015158114610aa557600080fd5b919050565b60008060408385031215610abd57600080fd5b823567ffffffffffffffff811115610ad457600080fd5b610ae085828601610a08565b925050610aef60208401610a95565b90509250929050565b6001600160a01b03811681146105cc57600080fd5b600060208284031215610b1f57600080fd5b813561028d81610af8565b600080600060608486031215610b3f57600080fd5b83359250602084013567ffffffffffffffff811115610b5d57600080fd5b610b6986828701610a08565b925050610b7860408501610a95565b90509250925092565b60008060408385031215610b9457600080fd5b8235610b9f81610af8565b9150610aef60208401610a95565b60008060408385031215610bc057600080fd5b8235610bcb81610af8565b946020939093013593505050565b600060208284031215610beb57600080fd5b5035919050565b6000815180845260005b81811015610c1857602081850181015186830182015201610bfc565b506000602082860101526020601f19601f83011685010191505092915050565b8281526040602082015260006103b96040830184610bf2565b600060208284031215610c6357600080fd5b815161028d81610af8565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e08201526000610100806060840152610cc381840185610bf2565b95945050505050565b60208152600061028d6020830184610bf2565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea26469706673582212204a776efb851f548fbcf6634486a7bcf0686a495f73a72655eecc314297b1246c64736f6c63430008120033", + "code": "0x6080604052600436106100a05760003560e01c80638da5cb5b116100645780638da5cb5b14610195578063a86f9d9e146101b3578063ba0bbd95146101d3578063d73bb3d0146101f3578063f2fde38b14610213578063fe9fbb801461023357600080fd5b806319ab453c146100e95780632d1fb389146101095780633ab76e9f146101295780636c6563f614610160578063715018a61461018057600080fd5b366100e45747158015906100c4575033600090815260c9602052604090205460ff16155b156100e257604051634fa3f24560e01b815260040160405180910390fd5b005b600080fd5b3480156100f557600080fd5b506100e2610104366004610a47565b61027c565b34801561011557600080fd5b506100e2610124366004610a79565b610394565b34801561013557600080fd5b506097546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016c57600080fd5b5061014361017b366004610aae565b61044d565b34801561018c57600080fd5b506100e2610464565b3480156101a157600080fd5b506065546001600160a01b0316610143565b3480156101bf57600080fd5b506101436101ce366004610ae3565b610478565b3480156101df57600080fd5b506100e26101ee366004610b06565b610485565b3480156101ff57600080fd5b506100e261020e366004610b32565b610543565b34801561021f57600080fd5b506100e261022e366004610a47565b6105c6565b34801561023f57600080fd5b5061026c61024e366004610a47565b6001600160a01b0316600090815260c9602052604090205460ff1690565b6040519015158152602001610157565b600054610100900460ff161580801561029c5750600054600160ff909116105b806102b65750303b1580156102b6575060005460ff166001145b61031e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610341576000805461ff0019166101001790555b61034a8261063c565b8015610390576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b61039c610655565b6001600160a01b03821615806103d057506001600160a01b038216600090815260c9602052604090205460ff161515811515145b156103ee57604051631bebdfa760e21b815260040160405180910390fd5b6001600160a01b038216600081815260c96020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b600061045a8484846106af565b90505b9392505050565b61046c610655565b61047660006107c8565b565b600061045d4684846106af565b33600090815260c9602052604090205460ff166104b557604051634fa3f24560e01b815260040160405180910390fd5b6104bd61081a565b6001600160a01b0382166104e45760405163687563df60e01b815260040160405180910390fd5b6104f76001600160a01b03831682610873565b816001600160a01b03167f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e8260405161053291815260200190565b60405180910390a261039060018055565b33600090815260c9602052604090205460ff1661057357604051634fa3f24560e01b815260040160405180910390fd5b61057b61081a565b6105853382610873565b60405181815233907f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e9060200160405180910390a26105c360018055565b50565b6105ce610655565b6001600160a01b0381166106335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610315565b6105c3816107c8565b610644610934565b61064c610963565b6105c381610992565b6065546001600160a01b031633146104765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610315565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190610b4b565b90508161045d576040516001600160a01b03821615159061079390869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906107c05760405162461bcd60e51b81526004016103159190610b68565b509392505050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60026001540361086c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610315565b6002600155565b80158061088757506001600160a01b038216155b15610890575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146108dd576040519150601f19603f3d011682016040523d82523d6000602084013e6108e2565b606091505b50509050806109295760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610315565b505050565b60018055565b600054610100900460ff1661095b5760405162461bcd60e51b815260040161031590610bb6565b6104766109db565b600054610100900460ff1661098a5760405162461bcd60e51b815260040161031590610bb6565b610476610a02565b6001600160a01b0381166109b957604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661092e5760405162461bcd60e51b815260040161031590610bb6565b600054610100900460ff16610a295760405162461bcd60e51b815260040161031590610bb6565b610476336107c8565b6001600160a01b03811681146105c357600080fd5b600060208284031215610a5957600080fd5b813561045d81610a32565b80358015158114610a7457600080fd5b919050565b60008060408385031215610a8c57600080fd5b8235610a9781610a32565b9150610aa560208401610a64565b90509250929050565b600080600060608486031215610ac357600080fd5b8335925060208401359150610ada60408501610a64565b90509250925092565b60008060408385031215610af657600080fd5b82359150610aa560208401610a64565b60008060408385031215610b1957600080fd5b8235610b2481610a32565b946020939093013593505050565b600060208284031215610b4457600080fd5b5035919050565b600060208284031215610b5d57600080fd5b815161045d81610a32565b600060208083528351808285015260005b81811015610b9557858101830151858201604001528201610b79565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122014d60add99642ec64e1536a07c072ba06fb91d88e43820260491efc081e2567a64736f6c63430008120033", "balance": "0xfffffffffffffdd4e373edd85fffffff" }, "0x0000777700000000000000000000000000000007": { @@ -113,7 +113,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" }, - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80635221f613116100715780635221f6131461013a57806366ca2bc01461014d578063715018a61461016e5780638da5cb5b14610176578063f2fde38b14610187578063f8f3f8441461019a57600080fd5b80630ca4dffd146100ae57806319ab453c146100de5780631be2bfa7146100f357806332676bc6146101065780633ab76e9f14610129575b600080fd5b6100c16100bc366004611a55565b6101c6565b6040516001600160a01b0390911681526020015b60405180910390f35b6100f16100ec366004611ab8565b6101dc565b005b6100c1610101366004611ad5565b6102f4565b610119610114366004611b2c565b61030b565b60405190151581526020016100d5565b6097546001600160a01b03166100c1565b610119610148366004611b58565b610379565b61016061015b366004611bee565b6104fe565b6040519081526020016100d5565b6100f1610543565b6065546001600160a01b03166100c1565b6100f1610195366004611ab8565b610557565b6101606101a8366004611b2c565b6040805192835260208301919091526034600c830120918101905290565b60006101d34684846105d0565b90505b92915050565b600054610100900460ff16158080156101fc5750600054600160ff909116105b806102165750303b158015610216575060005460ff166001145b61027e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156102a1576000805461ff0019166101001790555b6102aa826106a0565b80156102f0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006103018484846105d0565b90505b9392505050565b60006001600160a01b038316610334576040516354cdfc8d60e11b815260040160405180910390fd5b60008290036103565760405163014f1da760e21b815260040160405180910390fd5b506040805192835260208301919091526034600c83012091810190525460011490565b600046860361039b5760405163e822b48d60e01b815260040160405180910390fd5b6001600160a01b0385166103c2576040516354cdfc8d60e11b815260040160405180910390fd5b60008490036103e45760405163014f1da760e21b815260040160405180910390fd5b60006103f283850185611c07565b9050600061041e604051806040016040528060058152602001647461696b6f60d81b81525060006101c6565b825160405163304dde8360e11b81526001600160a01b03929092169163609bbd06916104509160040190815260200190565b602060405180830381865afa15801561046d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104919190611cab565b60408051898152602081018990526034600c82012081830190925260608101919091529091506104f290608001604051602081830303815290604052604051806040016040528060018152602001600160f81b8152508460200151846106b9565b98975050505050505050565b60008181036105205760405163014f1da760e21b815260040160405180910390fd5b506040805133815260208101929092526034600c83012091810190526001815590565b61054b6106dd565b6105556000610737565b565b61055f6106dd565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610275565b6105cd81610737565b50565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906106039087908790600401611d0a565b602060405180830381865afa158015610620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106449190611d23565b905081610304576040516001600160a01b03821615159061066b9086908690602001611d40565b604051602081830303815290604052906106985760405162461bcd60e51b81526004016102759190611d95565b509392505050565b6106a8610789565b6106b06107b8565b6105cd816107e7565b6000806106c586610830565b90506106d381868686610862565b9695505050505050565b6065546001600160a01b031633146105555760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610275565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166107b05760405162461bcd60e51b815260040161027590611da8565b61055561089f565b600054610100900460ff166107df5760405162461bcd60e51b815260040161027590611da8565b6105556108cc565b6001600160a01b03811661080e57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6060818051906020012060405160200161084c91815260200190565b6040516020818303038152906040529050919050565b60008060006108728786866108fc565b9150915081801561089457508051602080830191909120875191880191909120145b979650505050505050565b600054610100900460ff166108c65760405162461bcd60e51b815260040161027590611da8565b60018055565b600054610100900460ff166108f35760405162461bcd60e51b815260040161027590611da8565b61055533610737565b60006060600061090b856109d7565b9050600080600061091d848a89610ac8565b815192955090935091501580806109315750815b61097d5760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610275565b60008161099957604051806020016040528060008152506109c5565b6109c5866109a8600188611e09565b815181106109b8576109b8611e1c565b6020026020010151610ee8565b919b919a509098505050505050505050565b606060006109e483610f0f565b90506000815167ffffffffffffffff811115610a0257610a02611994565b604051908082528060200260200182016040528015610a4757816020015b6040805180820190915260608082526020820152815260200190600190039081610a205790505b50905060005b8251811015610698576000610a7a848381518110610a6d57610a6d611e1c565b6020026020010151610f42565b90506040518060400160405280610a9083610f0f565b815260200182815250838381518110610aab57610aab611e1c565b60200260200101819052505080610ac190611e32565b9050610a4d565b600060606000806000610ada87610fd2565b90506000869050600080610b01604051806040016040528060608152602001606081525090565b60005b8c51811015610ec0578c8181518110610b1f57610b1f611e1c565b602002602001015191508284610b359190611e4b565b9350610b42600188611e4b565b965083600003610b9f578482602001518051906020012014610b9a5760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b6044820152606401610275565b610c61565b602082602001515110610c06578482602001518051906020012014610b9a5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610275565b84610c14836020015161110b565b14610c615760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610275565b610c6d60106001611e5e565b60ff1682600001515103610cdb5785518414610ec0576000868581518110610c9757610c97611e1c565b01602001518351805160f89290921c925060009183908110610cbb57610cbb611e1c565b60200260200101519050610cce81611133565b9650600194505050610eb0565b81515160011901610e68576000610cf183611169565b9050600081600081518110610d0857610d08611e1c565b016020015160f81c90506000610d1f600283611e77565b610d2a906002611ea7565b90506000610d3b848360ff1661118d565b90506000610d498b8a61118d565b90506000610d5783836111c3565b905060ff851660021480610d6e575060ff85166003145b15610da857808351148015610d835750808251145b15610d9557610d92818b611e4b565b99505b50600160ff1b9950610ec0945050505050565b60ff85161580610dbb575060ff85166001145b15610e115782518114610ddb5750600160ff1b9950610ec0945050505050565b610e028860000151600181518110610df557610df5611e1c565b6020026020010151611133565b9a509750610eb0945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b6064820152608401610275565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610275565b610eb981611e32565b9050610b04565b50600160ff1b841486610ed3878661118d565b909e909d50909b509950505050505050505050565b805180516060916101d691610eff90600190611e09565b81518110610a6d57610a6d611e1c565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906101d69061123d565b60606000806000610f5285611429565b919450925090506000816001811115610f6d57610f6d611ec0565b14610fba5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610275565b610fc985602001518484611773565b95945050505050565b6060600082516002610fe49190611ed6565b67ffffffffffffffff811115610ffc57610ffc611994565b6040519080825280601f01601f191660200182016040528015611026576020820181803683370190505b50905060005b835181101561110457600484828151811061104957611049611e1c565b01602001516001600160f81b031916901c82611066836002611ed6565b8151811061107657611076611e1c565b60200101906001600160f81b031916908160001a90535060108482815181106110a1576110a1611e1c565b01602001516110b3919060f81c611e77565b60f81b826110c2836002611ed6565b6110cd906001611e4b565b815181106110dd576110dd611e1c565b60200101906001600160f81b031916908160001a9053506110fd81611e32565b905061102c565b5092915050565b600060208251101561111f57506020015190565b818060200190518101906101d69190611cab565b600060606020836000015110156111545761114d8361181c565b9050611160565b61115d83610f42565b90505b6103048161110b565b60606101d66111888360000151600081518110610a6d57610a6d611e1c565b610fd2565b6060825182106111ac57506040805160208101909152600081526101d6565b6101d383838486516111be9190611e09565b611827565b6000805b8084511180156111d75750808351115b801561122857508281815181106111f0576111f0611e1c565b602001015160f81c60f81b6001600160f81b03191684828151811061121757611217611e1c565b01602001516001600160f81b031916145b156101d35761123681611e32565b90506111c7565b606060008061124b84611429565b9193509091506001905081600181111561126757611267611ec0565b146112b45760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610275565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816112cd5790505090506000835b865181101561141e57602082106113665760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b6064820152608401610275565b6000806113a36040518060400160405280858c600001516113879190611e09565b8152602001858c6020015161139c9190611e4b565b9052611429565b5091509150604051806040016040528083836113bf9190611e4b565b8152602001848b602001516113d49190611e4b565b8152508585815181106113e9576113e9611e1c565b60209081029190910101526113ff600185611e4b565b935061140b8183611e4b565b6114159084611e4b565b925050506112fa565b508152949350505050565b6000806000808460000151116114815760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610275565b6020840151805160001a607f81116114a657600060016000945094509450505061176c565b60b781116115225760006114bb608083611e09565b9050808760000151116115105760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610275565b6001955093506000925061176c915050565b60bf811161161157600061153760b783611e09565b90508087600001511161158c5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610275565b600183015160208290036101000a90046115a68183611e4b565b8851116115f55760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610275565b611600826001611e4b565b965094506000935061176c92505050565b60f7811161168c57600061162660c083611e09565b90508087600001511161167b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610275565b60019550935084925061176c915050565b600061169960f783611e09565b9050808760000151116116ee5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610275565b600183015160208290036101000a90046117088183611e4b565b8851116117505760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b6044820152606401610275565b61175b826001611e4b565b965094506001935061176c92505050565b9193909250565b606060008267ffffffffffffffff81111561179057611790611994565b6040519080825280601f01601f1916602001820160405280156117ba576020820181803683370190505b50905080516000036117cd579050610304565b8484016020820160005b858110156117ef5782810151828201526020016117d7565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60606101d68261197e565b60608161183581601f611e4b565b10156118745760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610275565b8261187f8382611e4b565b10156118be5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610275565b6118c88284611e4b565b8451101561190c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610275565b60608215801561192b5760405191506000825260208201604052611975565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561196457805183526020928301920161194c565b5050858452601f01601f1916604052505b50949350505050565b60606101d6826020015160008460000151611773565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156119c5576119c5611994565b604051601f8501601f19908116603f011681019082821181831017156119ed576119ed611994565b81604052809350858152868686011115611a0657600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112611a3157600080fd5b6101d3838335602085016119aa565b80358015158114611a5057600080fd5b919050565b60008060408385031215611a6857600080fd5b823567ffffffffffffffff811115611a7f57600080fd5b611a8b85828601611a20565b925050611a9a60208401611a40565b90509250929050565b6001600160a01b03811681146105cd57600080fd5b600060208284031215611aca57600080fd5b81356101d381611aa3565b600080600060608486031215611aea57600080fd5b83359250602084013567ffffffffffffffff811115611b0857600080fd5b611b1486828701611a20565b925050611b2360408501611a40565b90509250925092565b60008060408385031215611b3f57600080fd5b8235611b4a81611aa3565b946020939093013593505050565b600080600080600060808688031215611b7057600080fd5b853594506020860135611b8281611aa3565b935060408601359250606086013567ffffffffffffffff80821115611ba657600080fd5b818801915088601f830112611bba57600080fd5b813581811115611bc957600080fd5b896020828501011115611bdb57600080fd5b9699959850939650602001949392505050565b600060208284031215611c0057600080fd5b5035919050565b600060208284031215611c1957600080fd5b813567ffffffffffffffff80821115611c3157600080fd5b9083019060408286031215611c4557600080fd5b604051604081018181108382111715611c6057611c60611994565b60405282358152602083013582811115611c7957600080fd5b80840193505085601f840112611c8e57600080fd5b611c9d868435602086016119aa565b602082015295945050505050565b600060208284031215611cbd57600080fd5b5051919050565b6000815180845260005b81811015611cea57602081850181015186830182015201611cce565b506000602082860101526020601f19601f83011685010191505092915050565b8281526040602082015260006103016040830184611cc4565b600060208284031215611d3557600080fd5b81516101d381611aa3565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e08201526000610100806060840152610fc981840185611cc4565b6020815260006101d36020830184611cc4565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156101d6576101d6611df3565b634e487b7160e01b600052603260045260246000fd5b600060018201611e4457611e44611df3565b5060010190565b808201808211156101d6576101d6611df3565b60ff81811683821601908111156101d6576101d6611df3565b600060ff831680611e9857634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60ff82811682821603908111156101d6576101d6611df3565b634e487b7160e01b600052602160045260246000fd5b80820281158282048414176101d6576101d6611df356fea2646970667358221220256eb2a42eec1e251834e87f64fda2ab1049b5c182c595632f236f14213e273d64736f6c63430008120033", + "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80636c6563f6116100715780636c6563f614610144578063715018a6146101575780638da5cb5b1461015f578063a86f9d9e14610170578063f2fde38b14610183578063f8f3f8441461019657600080fd5b806319ab453c146100ae57806332676bc6146100c35780633ab76e9f146100eb5780635221f6131461011057806366ca2bc014610123575b600080fd5b6100c16100bc3660046119d4565b6101c2565b005b6100d66100d13660046119f1565b6102da565b60405190151581526020015b60405180910390f35b6097546001600160a01b03165b6040516001600160a01b0390911681526020016100e2565b6100d661011e366004611a1d565b61034c565b610136610131366004611ab3565b6104bc565b6040519081526020016100e2565b6100f8610152366004611ae1565b610501565b6100c1610518565b6065546001600160a01b03166100f8565b6100f861017e366004611b16565b61052c565b6100c16101913660046119d4565b610539565b6101366101a43660046119f1565b6040805192835260208301919091526034600c830120918101905290565b600054610100900460ff16158080156101e25750600054600160ff909116105b806101fc5750303b1580156101fc575060005460ff166001145b6102645760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610287576000805461ff0019166101001790555b610290826105b2565b80156102d6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006001600160a01b038316610303576040516354cdfc8d60e11b815260040160405180910390fd5b60008290036103255760405163014f1da760e21b815260040160405180910390fd5b5060408051838152602081018390526034600c820120908201909152546001145b92915050565b600046860361036e5760405163e822b48d60e01b815260040160405180910390fd5b6001600160a01b038516610395576040516354cdfc8d60e11b815260040160405180910390fd5b60008490036103b75760405163014f1da760e21b815260040160405180910390fd5b60006103c583850185611bb2565b905060006103dc647461696b6f60d81b600061052c565b825160405163304dde8360e11b81526001600160a01b03929092169163609bbd069161040e9160040190815260200190565b602060405180830381865afa15801561042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f9190611c79565b60408051898152602081018990526034600c82012081830190925260608101919091529091506104b090608001604051602081830303815290604052604051806040016040528060018152602001600160f81b8152508460200151846105cb565b98975050505050505050565b60008181036104de5760405163014f1da760e21b815260040160405180910390fd5b506040805133815260208101929092526034600c83012091810190526001815590565b600061050e8484846105ef565b90505b9392505050565b610520610708565b61052a6000610762565b565b60006105114684846105ef565b610541610708565b6001600160a01b0381166105a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161025b565b6105af81610762565b50565b6105ba6107b4565b6105c26107e3565b6105af81610812565b6000806105d78661085b565b90506105e58186868661088d565b9695505050505050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611c92565b905081610511576040516001600160a01b0382161515906106d390869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906107005760405162461bcd60e51b815260040161025b9190611caf565b509392505050565b6065546001600160a01b0316331461052a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161025b565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166107db5760405162461bcd60e51b815260040161025b90611cfd565b61052a6108ca565b600054610100900460ff1661080a5760405162461bcd60e51b815260040161025b90611cfd565b61052a6108f7565b6001600160a01b03811661083957604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6060818051906020012060405160200161087791815260200190565b6040516020818303038152906040529050919050565b600080600061089d878686610927565b915091508180156108bf57508051602080830191909120875191880191909120145b979650505050505050565b600054610100900460ff166108f15760405162461bcd60e51b815260040161025b90611cfd565b60018055565b600054610100900460ff1661091e5760405162461bcd60e51b815260040161025b90611cfd565b61052a33610762565b60006060600061093685610a02565b90506000806000610948848a89610af3565b8151929550909350915015808061095c5750815b6109a85760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e000000000000604482015260640161025b565b6000816109c457604051806020016040528060008152506109f0565b6109f0866109d3600188611d5e565b815181106109e3576109e3611d71565b6020026020010151610f13565b919b919a509098505050505050505050565b60606000610a0f83610f3a565b90506000815167ffffffffffffffff811115610a2d57610a2d611b42565b604051908082528060200260200182016040528015610a7257816020015b6040805180820190915260608082526020820152815260200190600190039081610a4b5790505b50905060005b8251811015610700576000610aa5848381518110610a9857610a98611d71565b6020026020010151610f6d565b90506040518060400160405280610abb83610f3a565b815260200182815250838381518110610ad657610ad6611d71565b60200260200101819052505080610aec90611d87565b9050610a78565b600060606000806000610b0587610ffd565b90506000869050600080610b2c604051806040016040528060608152602001606081525090565b60005b8c51811015610eeb578c8181518110610b4a57610b4a611d71565b602002602001015191508284610b609190611da0565b9350610b6d600188611da0565b965083600003610bca578482602001518051906020012014610bc55760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b604482015260640161025b565b610c8c565b602082602001515110610c31578482602001518051906020012014610bc55760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c20686173680000000000604482015260640161025b565b84610c3f8360200151611136565b14610c8c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f64652068617368000000000000604482015260640161025b565b610c9860106001611db3565b60ff1682600001515103610d065785518414610eeb576000868581518110610cc257610cc2611d71565b01602001518351805160f89290921c925060009183908110610ce657610ce6611d71565b60200260200101519050610cf98161115e565b9650600194505050610edb565b81515160011901610e93576000610d1c83611194565b9050600081600081518110610d3357610d33611d71565b016020015160f81c90506000610d4a600283611dcc565b610d55906002611dfc565b90506000610d66848360ff166111b8565b90506000610d748b8a6111b8565b90506000610d8283836111ee565b905060ff851660021480610d99575060ff85166003145b15610dd357808351148015610dae5750808251145b15610dc057610dbd818b611da0565b99505b50600160ff1b9950610eeb945050505050565b60ff85161580610de6575060ff85166001145b15610e3c5782518114610e065750600160ff1b9950610eeb945050505050565b610e2d8860000151600181518110610e2057610e20611d71565b602002602001015161115e565b9a509750610edb945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b606482015260840161025b565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e000000604482015260640161025b565b610ee481611d87565b9050610b2f565b50600160ff1b841486610efe87866111b8565b909e909d50909b509950505050505050505050565b8051805160609161034691610f2a90600190611d5e565b81518110610a9857610a98611d71565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061034690611268565b60606000806000610f7d85611454565b919450925090506000816001811115610f9857610f98611e15565b14610fe55760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e0000000000000000604482015260640161025b565b610ff48560200151848461179e565b95945050505050565b606060008251600261100f9190611e2b565b67ffffffffffffffff81111561102757611027611b42565b6040519080825280601f01601f191660200182016040528015611051576020820181803683370190505b50905060005b835181101561112f57600484828151811061107457611074611d71565b01602001516001600160f81b031916901c82611091836002611e2b565b815181106110a1576110a1611d71565b60200101906001600160f81b031916908160001a90535060108482815181106110cc576110cc611d71565b01602001516110de919060f81c611dcc565b60f81b826110ed836002611e2b565b6110f8906001611da0565b8151811061110857611108611d71565b60200101906001600160f81b031916908160001a90535061112881611d87565b9050611057565b5092915050565b600060208251101561114a57506020015190565b818060200190518101906103469190611c79565b6000606060208360000151101561117f5761117883611847565b905061118b565b61118883610f6d565b90505b61051181611136565b60606103466111b38360000151600081518110610a9857610a98611d71565b610ffd565b6060825182106111d75750604080516020810190915260008152610346565b61051183838486516111e99190611d5e565b611852565b6000805b8084511180156112025750808351115b8015611253575082818151811061121b5761121b611d71565b602001015160f81c60f81b6001600160f81b03191684828151811061124257611242611d71565b01602001516001600160f81b031916145b156105115761126181611d87565b90506111f2565b606060008061127684611454565b9193509091506001905081600181111561129257611292611e15565b146112df5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e000000000000000000604482015260640161025b565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816112f85790505090506000835b865181101561144957602082106113915760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b606482015260840161025b565b6000806113ce6040518060400160405280858c600001516113b29190611d5e565b8152602001858c602001516113c79190611da0565b9052611454565b5091509150604051806040016040528083836113ea9190611da0565b8152602001848b602001516113ff9190611da0565b81525085858151811061141457611414611d71565b602090810291909101015261142a600185611da0565b93506114368183611da0565b6114409084611da0565b92505050611325565b508152949350505050565b6000806000808460000151116114ac5760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e0000000000000000604482015260640161025b565b6020840151805160001a607f81116114d1576000600160009450945094505050611797565b60b7811161154d5760006114e6608083611d5e565b90508087600001511161153b5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e00000000000000604482015260640161025b565b60019550935060009250611797915050565b60bf811161163c57600061156260b783611d5e565b9050808760000151116115b75760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e00604482015260640161025b565b600183015160208290036101000a90046115d18183611da0565b8851116116205760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e0000000000000000604482015260640161025b565b61162b826001611da0565b965094506000935061179792505050565b60f781116116b757600061165160c083611d5e565b9050808760000151116116a65760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e000000000000000000604482015260640161025b565b600195509350849250611797915050565b60006116c460f783611d5e565b9050808760000151116117195760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e000000604482015260640161025b565b600183015160208290036101000a90046117338183611da0565b88511161177b5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b604482015260640161025b565b611786826001611da0565b965094506001935061179792505050565b9193909250565b606060008267ffffffffffffffff8111156117bb576117bb611b42565b6040519080825280601f01601f1916602001820160405280156117e5576020820181803683370190505b50905080516000036117f8579050610511565b8484016020820160005b8581101561181a578281015182820152602001611802565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b6060610346826119a9565b60608161186081601f611da0565b101561189f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161025b565b826118aa8382611da0565b10156118e95760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161025b565b6118f38284611da0565b845110156119375760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161025b565b60608215801561195657604051915060008252602082016040526119a0565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561198f578051835260209283019201611977565b5050858452601f01601f1916604052505b50949350505050565b606061034682602001516000846000015161179e565b6001600160a01b03811681146105af57600080fd5b6000602082840312156119e657600080fd5b8135610511816119bf565b60008060408385031215611a0457600080fd5b8235611a0f816119bf565b946020939093013593505050565b600080600080600060808688031215611a3557600080fd5b853594506020860135611a47816119bf565b935060408601359250606086013567ffffffffffffffff80821115611a6b57600080fd5b818801915088601f830112611a7f57600080fd5b813581811115611a8e57600080fd5b896020828501011115611aa057600080fd5b9699959850939650602001949392505050565b600060208284031215611ac557600080fd5b5035919050565b80358015158114611adc57600080fd5b919050565b600080600060608486031215611af657600080fd5b8335925060208401359150611b0d60408501611acc565b90509250925092565b60008060408385031215611b2957600080fd5b82359150611b3960208401611acc565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611b7b57611b7b611b42565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611baa57611baa611b42565b604052919050565b60006020808385031215611bc557600080fd5b823567ffffffffffffffff80821115611bdd57600080fd5b9084019060408287031215611bf157600080fd5b611bf9611b58565b823581528383013582811115611c0e57600080fd5b80840193505086601f840112611c2357600080fd5b823582811115611c3557611c35611b42565b611c47601f8201601f19168601611b81565b92508083528785828601011115611c5d57600080fd5b8085850186850137600090830185015292830152509392505050565b600060208284031215611c8b57600080fd5b5051919050565b600060208284031215611ca457600080fd5b8151610511816119bf565b600060208083528351808285015260005b81811015611cdc57858101830151858201604001528201611cc0565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561034657610346611d48565b634e487b7160e01b600052603260045260246000fd5b600060018201611d9957611d99611d48565b5060010190565b8082018082111561034657610346611d48565b60ff818116838216019081111561034657610346611d48565b600060ff831680611ded57634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60ff828116828216039081111561034657610346611d48565b634e487b7160e01b600052602160045260246000fd5b808202811582820484141761034657610346611d4856fea26469706673582212200987ec8aedaae5da1213cf54e9e7f8ffe00fdb8c058ba41cf36d2558132e736064736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000005": { diff --git a/miner/taiko_payload_building.go b/miner/taiko_payload_building.go index 82039edbbe26..33291a00e4fd 100644 --- a/miner/taiko_payload_building.go +++ b/miner/taiko_payload_building.go @@ -13,6 +13,8 @@ func (payload *Payload) SetFullBlock(block *types.Block, fees *big.Int) { payload.lock.Lock() defer payload.lock.Unlock() + payload.stop <- struct{}{} + payload.full = block payload.fullFees = fees @@ -21,6 +23,5 @@ func (payload *Payload) SetFullBlock(block *types.Block, fees *big.Int) { "txs", len(block.Transactions()), "gas", block.GasUsed(), "fees", feesInEther, "root", block.Root()) - go func() { payload.stop <- struct{}{} }() payload.cond.Broadcast() // fire signal for notifying full block }