0 txs
0 calls
constructor
constructor(address registry, address oracle, address aggregatorAccessController, address registryAccessController)
functions
AGG_ACCESS_CONTROLLER
viewfunction AGG_ACCESS_CONTROLLER() view returns (address)
ORACLE
viewfunction ORACLE() view returns (address)
owner
viewfunction owner() view returns (address)
REGISTRY_ACCESS_CONTROLLER
viewfunction REGISTRY_ACCESS_CONTROLLER() view returns (address)
REGISTRY
viewfunction REGISTRY() view returns (address)
acceptAllOwnerships
nonpayablefunction acceptAllOwnerships()
acceptOwnership
nonpayablefunction acceptOwnership()
addGlobalReadAccessToRegistry
nonpayablefunction addGlobalReadAccessToRegistry(address user)
addNewTradingPair
nonpayablefunction addNewTradingPair(string pair_, string baseAsString_, string quoteAsString_, address base_, address quote_, uint8 decimals_, string description_, bool storeHistoricalData_)
addPairOpenAccessToRegistry
nonpayablefunction addPairOpenAccessToRegistry(address base, address quote)
addPairReadAccessToRegistry
nonpayablefunction addPairReadAccessToRegistry(address user, address base, address quote)
giveSignatureAccessToOracle
nonpayablefunction giveSignatureAccessToOracle(address user)
giveWriteAccessToOracle
nonpayablefunction giveWriteAccessToOracle(address user)
removeGlobalReadAccessToRegistry
nonpayablefunction removeGlobalReadAccessToRegistry(address user)
removePairOpenAccessToRegistry
nonpayablefunction removePairOpenAccessToRegistry(address base, address quote)
removePairReadAccessToRegistry
nonpayablefunction removePairReadAccessToRegistry(address user, address base, address quote)
removeSignatureAccessToOracle
nonpayablefunction removeSignatureAccessToOracle(address user)
removeWriteAccessToOracle
nonpayablefunction removeWriteAccessToOracle(address user)
setUpBasicAccessControl
nonpayablefunction setUpBasicAccessControl()
transferOwnership
nonpayablefunction transferOwnership(address to)
transferOwnershipToNewOracleFactory
nonpayablefunction transferOwnershipToNewOracleFactory(address newOracleFactoryAddress)
events
OwnershipTransferred
event OwnershipTransferred(address indexed from, address indexed to)
OwnershipTransferRequested
event OwnershipTransferRequested(address indexed from, address indexed to)
errors
No errors.
creation bytecode
0x6101006040523480156200001257600080fd5b5060405162005f6d38038062005f6d83398101604081905262000035916200025d565b33806000816200008c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000bf57620000bf81620001b1565b5050506001600160a01b03841615801590620000e357506001600160a01b03831615155b8015620000f857506001600160a01b03821615155b80156200010d57506001600160a01b03811615155b620001815760405162461bcd60e51b815260206004820152603360248201527f4d7573742070726f766964652070726f70657220616464726573736573206f6660448201527f206465706c6f79656420636f6e74726163747300000000000000000000000000606482015260840162000083565b6001600160601b0319606094851b811660805292841b831660a05290831b821660c05290911b1660e052620002dd565b6001600160a01b0381163314156200020c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000083565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000806000806080858703121562000273578384fd5b84516200028081620002c4565b60208601519094506200029381620002c4565b6040860151909350620002a681620002c4565b6060860151909250620002b981620002c4565b939692955090935050565b6001600160a01b0381168114620002da57600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c615b326200043b600039600081816102a2015281816106960152818161097201528181610a2b01528181610a9801528181610c3a01528181610e540152818161100f0152818161126a015281816114a10152818161160a01528181611b7b0152611c0001526000818161034c015281816105e401528181610812015281816108c601528181610ec9015281816111b80152818161151e0152611afe01526000818161021e0152818161040901528181610481015281816107ea01528181610b1e01528181610ba401528181610ddf01528181610f79015281816110550152818161142401526116b80152600081816101a0015281816105320152818161089e01528181610d6a01528181611106015281816113a90152818161176b015281816118110152818161187501528181611915015281816119d80152611a760152615b326000f3fe60806040523480156200001157600080fd5b5060043610620001955760003560e01c80637000cd2111620000e9578063a5f809981162000097578063f2fde38b116200006e578063f2fde38b146200036e578063f49195861462000385578063f4c47eac146200039c57600080fd5b8063a5f809981462000318578063c0636915146200032f578063cbc60118146200034657600080fd5b8063882ff19411620000cc578063882ff19414620002e55780638da5cb5b14620002ef5780639a7bdfbd146200030157600080fd5b80637000cd2114620002c457806379ba509714620002db57600080fd5b806343a8ff6211620001475780636901e9ad116200012a5780636901e9ad146200026e5780636b92be6b14620002855780636d0fcd56146200029c57600080fd5b806343a8ff6214620002405780636220bdaf146200025757600080fd5b80631d1d1ffc116200017c5780631d1d1ffc14620001f757806325c11740146200020157806338013f02146200021857600080fd5b806306433b1b146200019a57806309a1f47914620001de575b600080fd5b620001c27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b620001f5620001ef36600462001e5f565b620003b3565b005b620001f56200046b565b620001f56200021236600462001ea4565b62000928565b620001c27f000000000000000000000000000000000000000000000000000000000000000081565b620001f56200025136600462001e5f565b620009d5565b620001f56200026836600462001e5f565b62000a5b565b620001f56200027f36600462001e5f565b62000ac8565b620001f56200029636600462001e5f565b62000b4e565b620001c27f000000000000000000000000000000000000000000000000000000000000000081565b620001f5620002d536600462001ee1565b62000bd4565b620001f562000c9e565b620001f562000d5e565b6000546001600160a01b0316620001c2565b620001f56200031236600462001e5f565b62000f23565b620001f56200032936600462001ee1565b62000fa9565b620001f56200034036600462001e5f565b6200103f565b620001c27f000000000000000000000000000000000000000000000000000000000000000081565b620001f56200037f36600462001e5f565b62001550565b620001f56200039636600462001ea4565b620015c0565b620001f5620003ad36600462001f51565b6200163a565b620003bd62001c6c565b6001600160a01b038116620003d157600080fd5b6040517f8823da6c0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638823da6c906024015b600060405180830381600087803b1580156200044f57600080fd5b505af115801562000464573d6000803e3d6000fd5b5050505050565b6200047562001c6c565b306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620004d957600080fd5b505afa158015620004ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000514919062001e85565b6001600160a01b0316148015620005d05750306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200058a57600080fd5b505afa1580156200059f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c5919062001e85565b6001600160a01b0316145b8015620006825750306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200063c57600080fd5b505afa15801562000651573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000677919062001e85565b6001600160a01b0316145b8015620007345750306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620006ee57600080fd5b505afa15801562000703573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000729919062001e85565b6001600160a01b0316145b620007ba5760405162461bcd60e51b815260206004820152604560248201527f4f7261636c6520666163746f7279206973206e6f74207468652063757272656e60448201527f74206f776e6572206f6620616c6c20746865206465706c6f79656420636f6e74606482015264726163747360d81b608482015260a4015b60405180910390fd5b6040517f3e29d22c0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633e29d22c90602401600060405180830381600087803b1580156200085757600080fd5b505af11580156200086c573d6000803e3d6000fd5b50506040517f79b44d780000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001692506379b44d789150602401600060405180830381600087803b1580156200090d57600080fd5b505af115801562000922573d6000803e3d6000fd5b50505050565b6200093262001c6c565b6040517fff5167150000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015282811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063ff516715906044015b600060405180830381600087803b158015620009b857600080fd5b505af1158015620009cd573d6000803e3d6000fd5b505050505050565b620009df62001c6c565b6001600160a01b038116620009f357600080fd5b6040517f87874e310000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f000000000000000000000000000000000000000000000000000000000000000016906387874e319060240162000434565b62000a6562001c6c565b6001600160a01b03811662000a7957600080fd5b6040516305ef99e960e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690630bdf33d29060240162000434565b62000ad262001c6c565b6001600160a01b03811662000ae657600080fd5b6040517f0e316ab70000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690630e316ab79060240162000434565b62000b5862001c6c565b6001600160a01b03811662000b6c57600080fd5b6040517feb12d61e0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063eb12d61e9060240162000434565b62000bde62001c6c565b6001600160a01b03831662000bf257600080fd5b6040517f43929dd50000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152838116602483015282811660448301527f000000000000000000000000000000000000000000000000000000000000000016906343929dd5906064015b600060405180830381600087803b15801562000c8057600080fd5b505af115801562000c95573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b0316331462000cfa5760405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401620007b1565b600080543373ffffffffffffffffffffffffffffffffffffffff19808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b62000d6862001c6c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000dc457600080fd5b505af115801562000dd9573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000e3957600080fd5b505af115801562000e4e573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000eae57600080fd5b505af115801562000ec3573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200090d57600080fd5b62000f2d62001c6c565b6001600160a01b03811662000f4157600080fd5b6040517fa118f2490000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a118f2499060240162000434565b62000fb362001c6c565b6001600160a01b03831662000fc757600080fd5b6040517f754e645b0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152838116602483015282811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063754e645b9060640162000c65565b6200104962001c6c565b306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620010ad57600080fd5b505afa158015620010c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010e8919062001e85565b6001600160a01b0316148015620011a45750306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200115e57600080fd5b505afa15801562001173573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001199919062001e85565b6001600160a01b0316145b8015620012565750306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200121057600080fd5b505afa15801562001225573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200124b919062001e85565b6001600160a01b0316145b8015620013085750306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620012c257600080fd5b505afa158015620012d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012fd919062001e85565b6001600160a01b0316145b6200138a5760405162461bcd60e51b815260206004820152604560248201527f4f7261636c6520666163746f7279206973206e6f74207468652063757272656e60448201527f74206f776e6572206f6620616c6c20746865206465706c6f79656420636f6e74606482015264726163747360d81b608482015260a401620007b1565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b90602401600060405180830381600087803b158015620013ee57600080fd5b505af115801562001403573d6000803e3d6000fd5b505060405163f2fde38b60e01b81526001600160a01b0384811660048301527f000000000000000000000000000000000000000000000000000000000000000016925063f2fde38b9150602401600060405180830381600087803b1580156200146b57600080fd5b505af115801562001480573d6000803e3d6000fd5b505060405163f2fde38b60e01b81526001600160a01b0384811660048301527f000000000000000000000000000000000000000000000000000000000000000016925063f2fde38b9150602401600060405180830381600087803b158015620014e857600080fd5b505af1158015620014fd573d6000803e3d6000fd5b505060405163f2fde38b60e01b81526001600160a01b0384811660048301527f000000000000000000000000000000000000000000000000000000000000000016925063f2fde38b915060240162000434565b6200155a62001c6c565b6001600160a01b038116620015b25760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f00000000000000006044820152606401620007b1565b620015bd8162001cca565b50565b620015ca62001c6c565b6040517f7655e1250000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015282811660248301527f00000000000000000000000000000000000000000000000000000000000000001690637655e125906044016200099d565b6200164462001c6c565b600088848484604051620016589062001d83565b62001667949392919062002152565b604051809103906000f08015801562001684573d6000803e3d6000fd5b506040517f7ff45e6f0000000000000000000000000000000000000000000000000000000081529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637ff45e6f90620016f1908c9085906004016200209f565b600060405180830381600087803b1580156200170c57600080fd5b505af115801562001721573d6000803e3d6000fd5b50506040517f9eed82b00000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015284811660448301527f0000000000000000000000000000000000000000000000000000000000000000169250639eed82b09150606401600060405180830381600087803b158015620017b257600080fd5b505af1158015620017c7573d6000803e3d6000fd5b50506040517f045abf4b0000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015284811660448301527f000000000000000000000000000000000000000000000000000000000000000016925063045abf4b9150606401600060405180830381600087803b1580156200185857600080fd5b505af11580156200186d573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000008787604051620018a49062001d91565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620018e1573d6000803e3d6000fd5b506040517f2656554c0000000000000000000000000000000000000000000000000000000081529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632656554c906200194e908c908c90600401620020cc565b60206040518083038186803b1580156200196757600080fd5b505afa1580156200197c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019a2919062001f32565b1562001a46576040517fff2ed6e00000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff2ed6e09062001a11908c908c90600401620020cc565b600060405180830381600087803b15801562001a2c57600080fd5b505af115801562001a41573d6000803e3d6000fd5b505050505b6040517f573a23af0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063573a23af9062001ab5908c908c908c908c908890600401620020fe565b600060405180830381600087803b15801562001ad057600080fd5b505af115801562001ae5573d6000803e3d6000fd5b5050604051631e10723b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301528516925063f08391d89150602401600060405180830381600087803b15801562001b4d57600080fd5b505af115801562001b62573d6000803e3d6000fd5b5050604051631e10723b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301528416925063f08391d89150602401600060405180830381600087803b15801562001bca57600080fd5b505af115801562001bdf573d6000803e3d6000fd5b50506040516305ef99e960e11b81526001600160a01b0384811660048301527f0000000000000000000000000000000000000000000000000000000000000000169250630bdf33d29150602401600060405180830381600087803b15801562001c4757600080fd5b505af115801562001c5c573d6000803e3d6000fd5b5050505050505050505050505050565b6000546001600160a01b0316331462001cc85760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401620007b1565b565b6001600160a01b03811633141562001d255760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401620007b1565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6119bd80620021ed83390190565b611f538062003baa83390190565b803562001dac81620021c7565b919050565b803562001dac81620021dd565b600082601f83011262001dcf578081fd5b813567ffffffffffffffff8082111562001ded5762001ded62002198565b604051601f8301601f19908116603f0116810190828211818310171562001e185762001e1862002198565b8160405283815286602085880101111562001e31578485fd5b8360208701602083013792830160200193909352509392505050565b803560ff8116811462001dac57600080fd5b60006020828403121562001e71578081fd5b813562001e7e81620021c7565b9392505050565b60006020828403121562001e97578081fd5b815162001e7e81620021c7565b6000806040838503121562001eb7578081fd5b823562001ec481620021c7565b9150602083013562001ed681620021c7565b809150509250929050565b60008060006060848603121562001ef6578081fd5b833562001f0381620021c7565b9250602084013562001f1581620021c7565b9150604084013562001f2781620021c7565b809150509250925092565b60006020828403121562001f44578081fd5b815162001e7e81620021dd565b600080600080600080600080610100898b03121562001f6e578384fd5b883567ffffffffffffffff8082111562001f86578586fd5b62001f948c838d0162001dbe565b995060208b013591508082111562001faa578586fd5b62001fb88c838d0162001dbe565b985060408b013591508082111562001fce578586fd5b62001fdc8c838d0162001dbe565b975062001fec60608c0162001d9f565b965062001ffc60808c0162001d9f565b95506200200c60a08c0162001e4d565b945060c08b013591508082111562002022578384fd5b50620020318b828c0162001dbe565b9250506200204260e08a0162001db1565b90509295985092959890939650565b60008151808452815b8181101562002078576020818501810151868301820152016200205a565b818111156200208a5782602083870101525b50601f01601f19169290920160200192915050565b604081526000620020b4604083018562002051565b90506001600160a01b03831660208301529392505050565b604081526000620020e1604083018562002051565b8281036020840152620020f5818562002051565b95945050505050565b60a0815260006200211360a083018862002051565b828103602084015262002127818862002051565b6001600160a01b03968716604085015294861660608401525050921660809092019190915292915050565b60808152600062002167608083018762002051565b60ff86166020840152828103604084015262002184818662002051565b915050821515606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b0381168114620015bd57600080fd5b8015158114620015bd57600080fdfe60c06040523480156200001157600080fd5b50604051620019bd380380620019bd83398101604081905262000034916200032e565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be8162000129565b50508451620000d691506003906020870190620001d5565b507fff0000000000000000000000000000000000000000000000000000000000000060f884901b16608052815162000116906004906020850190620001d5565b50151560f81b60a0525062000419915050565b6001600160a01b038116331415620001845760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b828054620001e390620003c6565b90600052602060002090601f01602090048101928262000207576000855562000252565b82601f106200022257805160ff191683800117855562000252565b8280016001018555821562000252579182015b828111156200025257825182559160200191906001019062000235565b506200026092915062000264565b5090565b5b8082111562000260576000815560010162000265565b600082601f8301126200028c578081fd5b81516001600160401b0380821115620002a957620002a962000403565b604051601f8301601f19908116603f01168101908282118183101715620002d457620002d462000403565b81604052838152602092508683858801011115620002f0578485fd5b8491505b83821015620003135785820183015181830184015290820190620002f4565b838211156200032457848385830101525b9695505050505050565b6000806000806080858703121562000344578384fd5b84516001600160401b03808211156200035b578586fd5b62000369888389016200027b565b95506020870151915060ff8216821462000381578485fd5b60408701519194508082111562000396578384fd5b50620003a5878288016200027b565b92505060608501518015158114620003bb578182fd5b939692955090935050565b600181811c90821680620003db57607f821691505b60208210811415620003fd57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160f81c60a05160f81c61155c620004616000396000818161014001528181610a0801528181610b3f01528181610d140152610e83015260006101a1015261155c6000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80638d1efdad116100b2578063b633620c11610081578063f08391d811610066578063f08391d8146102be578063f2fde38b146102d1578063feaf968c146102e457600080fd5b8063b633620c146102a3578063c1f1b1b5146102b657600080fd5b80638d1efdad146102225780638da5cb5b146102355780639a6fc8f514610246578063b5ab58dc1461029057600080fd5b806354fd4d50116101095780637284e416116100ee5780637284e416146101fb57806379ba5097146102105780638205bf6a1461021a57600080fd5b806354fd4d50146101eb578063668a0f02146101f357600080fd5b8063076bb94a1461013b57806316d6b5f614610177578063313ce5671461019c57806350d25bcd146101d5575b600080fd5b6101627f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020015b60405180910390f35b6002546001600160a01b03165b6040516001600160a01b03909116815260200161016e565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016e565b6101dd6102ec565b60405190815260200161016e565b6101dd600681565b6101dd6103ee565b6102036104cf565b60405161016e91906113f8565b610218610561565b005b6101dd61061f565b610218610230366004611384565b610722565b6000546001600160a01b0316610184565b6102596102543660046113ce565b610a67565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a00161016e565b6101dd61029e36600461136c565b610c44565b6101dd6102b136600461136c565b610db3565b610203610f28565b6102186102cc366004611329565b610f37565b6102186102df366004611329565b610ff7565b610259611061565b6002546000906001600160a01b0316158061037d5750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b15801561034557600080fd5b505afa158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037d919061134c565b6103bf5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064015b60405180910390fd5b600560006103cb6111e5565b63ffffffff168152602081019190915260400160002054601790810b900b905090565b6002546000906001600160a01b0316158061047f5750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b15801561044757600080fd5b505afa15801561045b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047f919061134c565b6104bc5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064016103b6565b6104c46111e5565b63ffffffff16905090565b6060600480546104de9061149c565b80601f016020809104026020016040519081016040528092919081815260200182805461050a9061149c565b80156105575780601f1061052c57610100808354040283529160200191610557565b820191906000526020600020905b81548152906001019060200180831161053a57829003601f168201915b5050505050905090565b6001546001600160a01b031633146105bb5760405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064016103b6565b600080543373ffffffffffffffffffffffffffffffffffffffff19808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6002546000906001600160a01b031615806106b05750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b15801561067857600080fd5b505afa15801561068c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b0919061134c565b6106ed5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064016103b6565b600560006106f96111e5565b63ffffffff16815260208101919091526040016000206001015467ffffffffffffffff16905090565b6002546001600160a01b031661077a5760405162461bcd60e51b815260206004820152601960248201527f41636365737320636f6e74726f6c6c6572206e6f74207365740000000000000060448201526064016103b6565b6002546040517ff7c1ec9f0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039091169063f7c1ec9f9060240160206040518083038186803b1580156107d657600080fd5b505afa1580156107ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080e919061134c565b61085a5760405162461bcd60e51b815260206004820152600f60248201527f4e6f20777269746520616363657373000000000000000000000000000000000060448201526064016103b6565b6000600560006108686111e5565b63ffffffff168152602080820192909252604090810160002081516060810183528154601781810b810b900b825267ffffffffffffffff600160c01b90910481169482018590526001909201548216928101929092529092508416116109105760405162461bcd60e51b815260206004820181905260248201527f41676772656761746f723a20556e65787065637465642074696d657374616d7060448201526064016103b6565b61091c83610e1061144b565b67ffffffffffffffff1642106109745760405162461bcd60e51b815260206004820152601a60248201527f41676772656761746f723a20557064617465206578706972656400000000000060448201526064016103b6565b60408051606081018252601784810b825267ffffffffffffffff808716602080850191825263ffffffff42811686880190815260065490911660009081526005909252959020935190518216600160c01b02920b77ffffffffffffffffffffffffffffffffffffffffffffffff16919091178255915160019190910180549190921667ffffffffffffffff199091161790557f000000000000000000000000000000000000000000000000000000000000000015610a62576006805463ffffffff16906000610a42836114d7565b91906101000a81548163ffffffff021916908363ffffffff160217905550505b505050565b60025460009081908190819081906001600160a01b03161580610b005750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b158015610ac857600080fd5b505afa158015610adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b00919061134c565b610b3d5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064016103b6565b7f0000000000000000000000000000000000000000000000000000000000000000610baa5760405162461bcd60e51b815260206004820152601a60248201527f486973746f726963616c2064617461206e6f742073746f72656400000000000060448201526064016103b6565b63ffffffff69ffffffffffffffffffff87161115610bd657506000935083925082915081905080610c3b565b50505063ffffffff831660009081526005602090815260409182902082516060810184528154601781810b810b810b80845267ffffffffffffffff600160c01b909304831695840186905260019094015490911691909401819052869550920b925090835b91939590929450565b6002546000906001600160a01b03161580610cd55750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b158015610c9d57600080fd5b505afa158015610cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd5919061134c565b610d125760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064016103b6565b7f0000000000000000000000000000000000000000000000000000000000000000610d7f5760405162461bcd60e51b815260206004820152601a60248201527f486973746f726963616c2064617461206e6f742073746f72656400000000000060448201526064016103b6565b63ffffffff821115610d9357506000919050565b5063ffffffff16600090815260056020526040902054601790810b900b90565b6002546000906001600160a01b03161580610e445750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b158015610e0c57600080fd5b505afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e44919061134c565b610e815760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064016103b6565b7f0000000000000000000000000000000000000000000000000000000000000000610eee5760405162461bcd60e51b815260206004820152601a60248201527f486973746f726963616c2064617461206e6f742073746f72656400000000000060448201526064016103b6565b63ffffffff821115610f0257506000919050565b5063ffffffff1660009081526005602052604090206001015467ffffffffffffffff1690565b6060600380546104de9061149c565b610f3f611216565b6002546001600160a01b0382811691161415610f9d5760405162461bcd60e51b815260206004820181905260248201527f41636365737320636f6e74726f6c6c657220697320616c72656164792073657460448201526064016103b6565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040513391907f953e92b1a6442e9c3242531154a3f6f6eb00b4e9c719ba8118fa6235e4ce89b690600090a350565b610fff611216565b6001600160a01b0381166110555760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064016103b6565b61105e81611272565b50565b60025460009081908190819081906001600160a01b031615806110fa5750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b1580156110c257600080fd5b505afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa919061134c565b6111375760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064016103b6565b6000600560006111456111e5565b63ffffffff168152602080820192909252604090810160002081516060810183528154601781810b810b900b825267ffffffffffffffff600160c01b9091048116948201949094526001909101549092169082015290506111a46111e5565b8151602083015160408401516111b86111e5565b63ffffffff9485169b60179490940b9a5067ffffffffffffffff9283169950911696509091169350915050565b60065460009063ffffffff16156112105760065461120b9060019063ffffffff16611477565b905090565b50600090565b6000546001600160a01b031633146112705760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016103b6565b565b6001600160a01b0381163314156112cb5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016103b6565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60006020828403121561133a578081fd5b813561134581611511565b9392505050565b60006020828403121561135d578081fd5b81518015158114611345578182fd5b60006020828403121561137d578081fd5b5035919050565b60008060408385031215611396578081fd5b823567ffffffffffffffff811681146113ad578182fd5b91506020830135601781900b81146113c3578182fd5b809150509250929050565b6000602082840312156113df578081fd5b813569ffffffffffffffffffff81168114611345578182fd5b6000602080835283518082850152825b8181101561142457858101830151858201604001528201611408565b818111156114355783604083870101525b50601f01601f1916929092016040019392505050565b600067ffffffffffffffff80831681851680830382111561146e5761146e6114fb565b01949350505050565b600063ffffffff83811690831681811015611494576114946114fb565b039392505050565b600181811c908216806114b057607f821691505b602082108114156114d157634e487b7160e01b600052602260045260246000fd5b50919050565b600063ffffffff808316818114156114f1576114f16114fb565b6001019392505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461105e57600080fdfea2646970667358221220059bca2299e7a46c983a707b0db25090e0fe3699e33f997e1612e4a4878c351164736f6c634300080400336101006040523480156200001257600080fd5b5060405162001f5338038062001f53833981016040819052620000359162000272565b33806000816200008c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000bf57620000bf81620001c6565b5050506001600160a01b03821615801590620000e357506001600160a01b03811615155b620000ed57600080fd5b6001600160601b0319606084811b821660c05283811b821660805282901b1660a052604051630b1c5a7560e31b81526001600160a01b03808416600483015280831660248301528416906358e2d3a89060440160206040518083038186803b1580156200015957600080fd5b505afa1580156200016e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001949190620002c5565b60f81b7fff000000000000000000000000000000000000000000000000000000000000001660e0525062000308915050565b6001600160a01b038116331415620002215760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000083565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008060006060848603121562000287578283fd5b83516200029481620002ef565b6020850151909350620002a781620002ef565b6040850151909250620002ba81620002ef565b809150509250925092565b600060208284031215620002d7578081fd5b815160ff81168114620002e8578182fd5b9392505050565b6001600160a01b03811681146200030557600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160f81c611b0262000451600039600061014f0152600081816104f1015281816107900152818161084201528181610b9f01528181610e07015281816110b90152818161136001526116e0015260008181610230015281816103ac015281816104c901528181610650015281816107680152818161081701528181610a5f01528181610b7701528181610cb501528181610dcd01528181610f720152818161108a0152818161121901528181611331015281816115a001526116b801526000818161027d01528181610384015281816104a10152818161062801528181610740015281816107ef01528181610a3701528181610b4f01528181610c8d01528181610da501528181610f4a01528181611062015281816111f1015281816113090152818161157801526116900152611b026000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638da5cb5b116100b2578063b633620c11610081578063f08391d811610066578063f08391d81461029f578063f2fde38b146102b2578063feaf968c146102c557600080fd5b8063b633620c14610265578063ec342ad01461027857600080fd5b80638da5cb5b146101d05780639a6fc8f5146101e15780639c5798391461022b578063b5ab58dc1461025257600080fd5b8063668a0f02116100ee578063668a0f02146101a15780637284e416146101a957806379ba5097146101be5780638205bf6a146101c857600080fd5b806316d6b5f614610120578063313ce5671461014a57806350d25bcd1461018357806354fd4d5014610199575b600080fd5b6002546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6101717f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610141565b61018b6102cd565b604051908152602001610141565b61018b600681565b61018b610571565b6101b16107bf565b6040516101419190611a0d565b6101c66108c2565b005b61018b610980565b6000546001600160a01b031661012d565b6101f46101ef36600461199a565b610bce565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610141565b61012d7f000000000000000000000000000000000000000000000000000000000000000081565b61018b610260366004611982565b610e93565b61018b610273366004611982565b61113a565b61012d7f000000000000000000000000000000000000000000000000000000000000000081565b6101c66102ad36600461187e565b61138f565b6101c66102c036600461187e565b61144f565b6101f46114b9565b6002546000906001600160a01b0316158061035e57506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b15801561032657600080fd5b505afa15801561033a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035e91906118a1565b8061042f5750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b1580156103f757600080fd5b505afa15801561040b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042f91906118a1565b6104715760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064015b60405180910390fd5b6040517fd4c282a30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d4c282a3906044015b60206040518083038186803b15801561053457600080fd5b505afa158015610548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056c91906118c1565b905090565b6002546000906001600160a01b0316158061060257506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b1580156105ca57600080fd5b505afa1580156105de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060291906118a1565b806106d35750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b15801561069b57600080fd5b505afa1580156106af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d391906118a1565b6107105760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b6044820152606401610468565b6040517fec62f44b0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063ec62f44b9060440161051c565b6040517ffa820de90000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526060917f00000000000000000000000000000000000000000000000000000000000000009091169063fa820de99060440160006040518083038186803b15801561088657600080fd5b505afa15801561089a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261056c91908101906118d9565b6001546001600160a01b0316331461091c5760405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610468565b600080543373ffffffffffffffffffffffffffffffffffffffff19808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6002546000906001600160a01b03161580610a1157506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b1580156109d957600080fd5b505afa1580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1191906118a1565b80610ae25750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b158015610aaa57600080fd5b505afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae291906118a1565b610b1f5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b6044820152606401610468565b6040517f672ff44f0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063672ff44f9060440161051c565b60025460009081908190819081906001600160a01b03161580610c6757506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b158015610c2f57600080fd5b505afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6791906118a1565b80610d385750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b158015610d0057600080fd5b505afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3891906118a1565b610d755760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b6044820152606401610468565b6040517ffc58749e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015269ffffffffffffffffffff881660448301527f0000000000000000000000000000000000000000000000000000000000000000169063fc58749e9060640160a06040518083038186803b158015610e4957600080fd5b505afa158015610e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8191906119b6565b939a9299509097509550909350915050565b6002546000906001600160a01b03161580610f2457506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906118a1565b80610ff55750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b158015610fbd57600080fd5b505afa158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff591906118a1565b6110325760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b6044820152606401610468565b6040517f15cd4ad20000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906315cd4ad2906064015b60206040518083038186803b1580156110fc57600080fd5b505afa158015611110573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113491906118c1565b92915050565b6002546000906001600160a01b031615806111cb57506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b15801561119357600080fd5b505afa1580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb91906118a1565b8061129c5750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b15801561126457600080fd5b505afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c91906118a1565b6112d95760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b6044820152606401610468565b6040517f91624c950000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906391624c95906064016110e4565b61139761176b565b6002546001600160a01b03828116911614156113f55760405162461bcd60e51b815260206004820181905260248201527f41636365737320636f6e74726f6c6c657220697320616c7265616479207365746044820152606401610468565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040513391907fcfa989179aa1c36c00d3edadf67bcb4f35d9516f4951d34f527ed93957adfbeb90600090a350565b61145761176b565b6001600160a01b0381166114ad5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f00000000000000006044820152606401610468565b6114b6816117c7565b50565b60025460009081908190819081906001600160a01b0316158061155257506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b15801561151a57600080fd5b505afa15801561152e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155291906118a1565b806116235750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b1580156115eb57600080fd5b505afa1580156115ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162391906118a1565b6116605760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b6044820152606401610468565b6040517fbcfd032d0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063bcfd032d9060440160a06040518083038186803b15801561172257600080fd5b505afa158015611736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175a91906119b6565b945094509450945094509091929394565b6000546001600160a01b031633146117c55760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610468565b565b6001600160a01b0381163314156118205760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610468565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60006020828403121561188f578081fd5b813561189a81611a9f565b9392505050565b6000602082840312156118b2578081fd5b8151801515811461189a578182fd5b6000602082840312156118d2578081fd5b5051919050565b6000602082840312156118ea578081fd5b815167ffffffffffffffff80821115611901578283fd5b818401915084601f830112611914578283fd5b81518181111561192657611926611a70565b604051601f8201601f19908116603f0116810190838211818310171561194e5761194e611a70565b81604052828152876020848701011115611966578586fd5b611977836020830160208801611a40565b979650505050505050565b600060208284031215611993578081fd5b5035919050565b6000602082840312156119ab578081fd5b813561189a81611ab4565b600080600080600060a086880312156119cd578081fd5b85516119d881611ab4565b8095505060208601519350604086015192506060860151915060808601516119ff81611ab4565b809150509295509295909350565b6020815260008251806020840152611a2c816040850160208701611a40565b601f01601f19169190910160400192915050565b60005b83811015611a5b578181015183820152602001611a43565b83811115611a6a576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b03811681146114b657600080fd5b69ffffffffffffffffffff811681146114b657600080fdfea2646970667358221220f4367a51f806e54fc35117e7125ea717a368a059461a7fe2dba3abefa28623ea64736f6c63430008040033a264697066735822122084f5fcf5668b8c9bce60ebed2fe096f0ad55b87facce8ae30cfc873045326ee564736f6c6343000804003300000000000000000000000033ba9b27af9ccb1d106c3428730655b3bd782896000000000000000000000000ba14552c833b34b68d2c382583da7153c9af40b3000000000000000000000000292e3c5903d73cdadea6c521bb2ceb50e0be57ef000000000000000000000000aa65d7e501357a0387e0cae41dd11a352b8a6756