0x608060405234801561001057600080fd5b506040516111ca3803806111ca83398101604081905261002f916100d8565b6100383361006c565b600180546001600160a01b039283166001600160a01b0319918216179091556002805493909216921691909117905561010b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146100d357600080fd5b919050565b600080604083850312156100eb57600080fd5b6100f4836100bc565b9150610102602084016100bc565b90509250929050565b6110b08061011a6000396000f3fe6080604052600436106100865760003560e01c80638da5cb5b116100595780638da5cb5b14610122578063a035b1fe14610140578063e5a6b10f14610170578063f2fde38b14610190578063f713a034146101b057600080fd5b806305fefda71461008b5780633b20d8cc146100ad57806355495e34146100ea578063715018a61461010d575b600080fd5b34801561009757600080fd5b506100ab6100a6366004610ad4565b6101c3565b005b3480156100b957600080fd5b506001546100cd906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100fd6100f8366004610dd0565b6101d6565b60405190151581526020016100e1565b34801561011957600080fd5b506100ab6102df565b34801561012e57600080fd5b506000546001600160a01b03166100cd565b34801561014c57600080fd5b5060035460045461015b919082565b604080519283526020830191909152016100e1565b34801561017c57600080fd5b506002546100cd906001600160a01b031681565b34801561019c57600080fd5b506100ab6101ab366004610ede565b6102f3565b6100ab6101be366004610f02565b61036c565b6101cb6106b7565b600391909155600455565b6002546000906001600160a01b0316331461022f5760405162461bcd60e51b815260206004820152601460248201527318dd5c9c995b98de481b9bdd08185b1b1bddd95960621b60448201526064015b60405180910390fd5b60001960ff8416016102d3576000826040015160008151811061025457610254610f8b565b602002602001015190506000836020015160008151811061027757610277610f8b565b602002602001015190506000846060015160008151811061029a5761029a610f8b565b602002602001015190506102c787828585600260009054906101000a90046001600160a01b03168d61036c565b600193505050506102d7565b5060005b949350505050565b6102e76106b7565b6102f16000610711565b565b6102fb6106b7565b6001600160a01b0381166103605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610226565b61036981610711565b50565b6002546001600160a01b038381169116148061038f57506001600160a01b038216155b6103d25760405162461bcd60e51b815260206004820152601460248201527318dd5c9c995b98de481b9bdd08185b1b1bddd95960621b6044820152606401610226565b6001600160a01b0382166105415780156104235760405162461bcd60e51b81526020600482015260126024820152710616d6f756e742068617320746f20626520360741b6044820152606401610226565b600354341461046a5760405162461bcd60e51b8152602060048201526013602482015272185b5bdd5b9d081a5cc81a5b98dbdc9c9958dd606a1b6044820152606401610226565b60015460405163022fb8ab60e31b81526001600160a01b039091169063117dc558906104a0908890819089908990600401610ff1565b6020604051808303816000875af11580156104bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e3919061102e565b6105215760405162461bcd60e51b815260206004820152600f60248201526e18d85b1b189858dac819985a5b1959608a1b6044820152606401610226565b61053c6105366000546001600160a01b031690565b34610761565b6106af565b34156105875760405162461bcd60e51b815260206004820152601560248201527406d73672e76616c75652068617320746f206265203605c1b6044820152606401610226565b60045481146105ce5760405162461bcd60e51b8152602060048201526013602482015272185b5bdd5b9d081a5cc81a5b98dbdc9c9958dd606a1b6044820152606401610226565b60015460405163022fb8ab60e31b81526001600160a01b039091169063117dc55890610604908890819089908990600401610ff1565b6020604051808303816000875af1158015610623573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610647919061102e565b6106855760405162461bcd60e51b815260206004820152600f60248201526e18d85b1b189858dac819985a5b1959608a1b6044820152606401610226565b6106af8661069b6000546001600160a01b031690565b6002546001600160a01b031691908461087f565b505050505050565b6000546001600160a01b031633146102f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610226565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b804710156107b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610226565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107fe576040519150601f19603f3d011682016040523d82523d6000602084013e610803565b606091505b505090508061087a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610226565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526108d99085906108df565b50505050565b6000610934826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166109b19092919063ffffffff16565b80519091501561087a5780806020019051810190610952919061102e565b61087a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610226565b60606102d7848460008585600080866001600160a01b031685876040516109d8919061104b565b60006040518083038185875af1925050503d8060008114610a15576040519150601f19603f3d011682016040523d82523d6000602084013e610a1a565b606091505b5091509150610a2b87838387610a36565b979650505050505050565b60608315610aa5578251600003610a9e576001600160a01b0385163b610a9e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610226565b50816102d7565b6102d78383815115610aba5781518083602001fd5b8060405162461bcd60e51b81526004016102269190611067565b60008060408385031215610ae757600080fd5b50508035926020909101359150565b6001600160a01b038116811461036957600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610b4457610b44610b0b565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610b7357610b73610b0b565b604052919050565b600067ffffffffffffffff821115610b9557610b95610b0b565b5060051b60200190565b801515811461036957600080fd5b600082601f830112610bbe57600080fd5b81356020610bd3610bce83610b7b565b610b4a565b82815260059290921b84018101918181019086841115610bf257600080fd5b8286015b84811015610c16578035610c0981610b9f565b8352918301918301610bf6565b509695505050505050565b600082601f830112610c3257600080fd5b81356020610c42610bce83610b7b565b82815260059290921b84018101918181019086841115610c6157600080fd5b8286015b84811015610c165780358352918301918301610c65565b600082601f830112610c8d57600080fd5b813567ffffffffffffffff811115610ca757610ca7610b0b565b610cba601f8201601f1916602001610b4a565b818152846020838601011115610ccf57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610cfd57600080fd5b81356020610d0d610bce83610b7b565b82815260059290921b84018101918181019086841115610d2c57600080fd5b8286015b84811015610c1657803567ffffffffffffffff811115610d505760008081fd5b610d5e8986838b0101610c7c565b845250918301918301610d30565b600082601f830112610d7d57600080fd5b81356020610d8d610bce83610b7b565b82815260059290921b84018101918181019086841115610dac57600080fd5b8286015b84811015610c16578035610dc381610af6565b8352918301918301610db0565b60008060008060808587031215610de657600080fd5b843593506020850135610df881610af6565b9250604085013560ff81168114610e0e57600080fd5b9150606085013567ffffffffffffffff80821115610e2b57600080fd5b9086019060808289031215610e3f57600080fd5b610e47610b21565b823582811115610e5657600080fd5b610e628a828601610bad565b825250602083013582811115610e7757600080fd5b610e838a828601610c21565b602083015250604083013582811115610e9b57600080fd5b610ea78a828601610cec565b604083015250606083013582811115610ebf57600080fd5b610ecb8a828601610d6c565b6060830152509598949750929550505050565b600060208284031215610ef057600080fd5b8135610efb81610af6565b9392505050565b60008060008060008060c08789031215610f1b57600080fd5b8635610f2681610af6565b95506020870135610f3681610af6565b9450604087013567ffffffffffffffff811115610f5257600080fd5b610f5e89828a01610c7c565b945050606087013592506080870135610f7681610af6565b8092505060a087013590509295509295509295565b634e487b7160e01b600052603260045260246000fd5b60005b83811015610fbc578181015183820152602001610fa4565b50506000910152565b60008151808452610fdd816020860160208601610fa1565b601f01601f19169290920160200192915050565b6001600160a01b0385811682528416602082015260806040820181905260009061101d90830185610fc5565b905082606083015295945050505050565b60006020828403121561104057600080fd5b8151610efb81610b9f565b6000825161105d818460208701610fa1565b9190910192915050565b602081526000610efb6020830184610fc556fea26469706673582212206664e21229a16073dd437812820dc98297e6dfe1424e4ae7caf9fe2d797aa02b64736f6c6343000812003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000006d8a31dd425130bbc1288f6c651dce9d409be17c