0x608060405234801561001057600080fd5b50611051806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ca5760003560e01c80638da5cb5b1161007c5780638da5cb5b1461014c5780639757b8aa1461015d5780639dd3981b1461017a578063c6788bdd1461018d578063e5a2a2a5146101ad578063f2fde38b146101c0578063fccd7f72146101d357600080fd5b80631b3ed722146100cf5780632ab4d113146100eb5780634c5911b6146101005780634e71d92d1461010957806351ed6a3014610111578063715018a6146101315780638be9a0f514610139575b600080fd5b6100d8606a5481565b6040519081526020015b60405180910390f35b6100fe6100f9366004610cb5565b6101e6565b005b6100d860695481565b6100fe61034b565b606654610124906001600160a01b031681565b6040516100e29190610e0f565b6100fe61062d565b6100fe610147366004610d10565b610641565b6033546001600160a01b0316610124565b60685461016a9060ff1681565b60405190151581526020016100e2565b6100fe610188366004610c74565b61074a565b6100d861019b366004610c74565b60676020526000908152604090205481565b606554610124906001600160a01b031681565b6100fe6101ce366004610c74565b6108f2565b6100d86101e1366004610c74565b61096b565b600054610100900460ff16158080156102065750600054600160ff909116105b806102205750303b158015610220575060005460ff166001145b6102885760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156102ab576000805461ff0019166101001790555b6102b3610986565b606580546001600160a01b038089166001600160a01b03199283161790925560668054928816929091169190911790556068805485151560ff199091161790556069839055606a8290558015610343576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60695442106103945760405162461bcd60e51b815260206004820152601560248201527418db185a5b481dda5b991bddc8195e1c1a595c9959605a1b604482015260640161027f565b600061039f3361096b565b116103e15760405162461bcd60e51b81526020600482015260126024820152716e6f20636c61696d20617661696c61626c6560701b604482015260640161027f565b6066546040516370a0823160e01b81526001600160a01b03909116906370a0823190610411903090600401610e0f565b60206040518083038186803b15801561042957600080fd5b505afa15801561043d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104619190610df6565b61046a3361096b565b106104a35760405162461bcd60e51b81526020600482015260096024820152681a5b9cdbdb1d995b9d60ba1b604482015260640161027f565b60006104ae3361096b565b3360009081526067602090815260408083208390556066546065548251636a5c1cc960e11b815292519596506001600160a01b039182169563a9059cbb95919092169363d4b83992936004808201949293918390030190829087803b15801561051657600080fd5b505af115801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e9190610c98565b836040518363ffffffff1660e01b815260040161056c929190610e23565b602060405180830381600087803b15801561058657600080fd5b505af115801561059a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105be9190610dd9565b6105da5760405162461bcd60e51b815260040161027f90610efe565b6105f133606a54836105ec9190610f7c565b6109b5565b7f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d43382604051610622929190610e23565b60405180910390a150565b610635610b26565b61063f6000610b80565b565b610649610b26565b80518251146106915760405162461bcd60e51b81526020600482015260146024820152730d8cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640161027f565b60005b825181101561070c578181815181106106af576106af610fcc565b6020026020010151606760008584815181106106cd576106cd610fcc565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550808061070490610f9b565b915050610694565b507fa08617f5cfa85175d723f45150e0538a8aa61de6f2f4b587d4cadcc2cf4fcfdb828260405161073e929190610e3c565b60405180910390a15050565b610752610b26565b426069541061079f5760405162461bcd60e51b815260206004820152601960248201527818db185a5b481dda5b991bddc81b9bdd08195e1c1a595c9959603a1b604482015260640161027f565b6066546040516370a0823160e01b81526000916001600160a01b0316906370a08231906107d0903090600401610e0f565b60206040518083038186803b1580156107e857600080fd5b505afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108209190610df6565b60665460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb906108539085908590600401610e23565b602060405180830381600087803b15801561086d57600080fd5b505af1158015610881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a59190610dd9565b6108c15760405162461bcd60e51b815260040161027f90610efe565b7f121b6716cc1d1d7dace589b029c97ea835a94590017f2c3bbd085a86dff2b112828260405161073e929190610e23565b6108fa610b26565b6001600160a01b03811661095f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161027f565b61096881610b80565b50565b6001600160a01b031660009081526067602052604090205490565b600054610100900460ff166109ad5760405162461bcd60e51b815260040161027f90610eb3565b61063f610bd2565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106109eb576109eb610fcc565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092526000918160200160208202803683370190505090508281600081518110610a3c57610a3c610fcc565b602090810291909101015260685460ff1615610abb57606554604051632c78fd0360e21b81526001600160a01b039091169063b1e3f40c90610a849085908590600401610e3c565b600060405180830381600087803b158015610a9e57600080fd5b505af1158015610ab2573d6000803e3d6000fd5b50505050610b20565b6065546040516322936c2360e11b81526001600160a01b0390911690634526d84690610aed9085908590600401610e3c565b600060405180830381600087803b158015610b0757600080fd5b505af1158015610b1b573d6000803e3d6000fd5b505050505b50505050565b6033546001600160a01b0316331461063f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161027f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610bf95760405162461bcd60e51b815260040161027f90610eb3565b61063f33610b80565b600082601f830112610c1357600080fd5b81356020610c28610c2383610f58565b610f27565b80838252828201915082860187848660051b8901011115610c4857600080fd5b60005b85811015610c6757813584529284019290840190600101610c4b565b5090979650505050505050565b600060208284031215610c8657600080fd5b8135610c9181610ff8565b9392505050565b600060208284031215610caa57600080fd5b8151610c9181610ff8565b600080600080600060a08688031215610ccd57600080fd5b8535610cd881610ff8565b94506020860135610ce881610ff8565b93506040860135610cf88161100d565b94979396509394606081013594506080013592915050565b60008060408385031215610d2357600080fd5b823567ffffffffffffffff80821115610d3b57600080fd5b818501915085601f830112610d4f57600080fd5b81356020610d5f610c2383610f58565b8083825282820191508286018a848660051b8901011115610d7f57600080fd5b600096505b84871015610dab578035610d9781610ff8565b835260019690960195918301918301610d84565b5096505086013592505080821115610dc257600080fd5b50610dcf85828601610c02565b9150509250929050565b600060208284031215610deb57600080fd5b8151610c918161100d565b600060208284031215610e0857600080fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b82811015610e7e5781516001600160a01b031684529284019290840190600101610e59565b5050508381038285015284518082528583019183019060005b81811015610c6757835183529284019291840191600101610e97565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6020808252600f908201526e1d1c985b9cd9995c8819985a5b1959608a1b604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f5057610f50610fe2565b604052919050565b600067ffffffffffffffff821115610f7257610f72610fe2565b5060051b60200190565b6000816000190483118215151615610f9657610f96610fb6565b500290565b6000600019821415610faf57610faf610fb6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461096857600080fd5b801515811461096857600080fdfea26469706673582212205dbe192c1fbb367e854c500300818b825f75912bf77afbf8e11a1fcdc1fd87e964736f6c63430008070033