60806040526009805461ffff191660011790553480156200001f57600080fd5b50604080518082018252600a8082526947656e746c654d75736b60b01b6020808401829052845180860190955291845290830152600080546001600160a01b031916331790559062000078620000723390565b62000185565b600562000086838262000373565b50600662000095828262000373565b505050600160076000620000ae620001d760201b60201c565b6001600160a01b031681526020808201929092526040016000908120805493151560ff1994851617905561dead9052600790527fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d805490911660011790556b033b2e3c9fd0803ce8000000600a8190556064906200012e90600462000455565b6200013a919062000475565b600b55600a546064906200015090600462000455565b6200015c919062000475565b600c556200017f620001766001546001600160a01b031690565b600a54620001e6565b620004ae565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001546001600160a01b031690565b6001600160a01b038216620002415760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806004600082825462000255919062000498565b90915550506001600160a01b038216600090815260026020526040812080548392906200028490849062000498565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002f957607f821691505b6020821081036200031a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200036e57600081815260208120601f850160051c81016020861015620003495750805b601f850160051c820191505b818110156200036a5782815560010162000355565b5050505b505050565b81516001600160401b038111156200038f576200038f620002ce565b620003a781620003a08454620002e4565b8462000320565b602080601f831160018114620003df5760008415620003c65750858301515b600019600386901b1c1916600185901b1785556200036a565b600085815260208120601f198616915b828110156200041057888601518255948401946001909101908401620003ef565b50858210156200042f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200046f576200046f6200043f565b92915050565b6000826200049357634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200046f576200046f6200043f565b6117dd80620004be6000396000f3fe6080604052600436106101c65760003560e01c80638aee8127116100f7578063ad01971611610095578063e4cbe58911610064578063e4cbe5891461051c578063f2fde38b1461053c578063f7c618c11461055c578063ffb54a991461057c57600080fd5b8063ad0197161461048b578063c9567bf9146104b8578063cf46f24c146104c0578063dd62ed3e146104d657600080fd5b8063a457c2d7116100d1578063a457c2d714610405578063a63d5e3314610425578063a9059cbb1461043b578063ab4226681461045b57600080fd5b80638aee8127146103b25780638da5cb5b146103d257806395d89b41146103f057600080fd5b806342966c681161016457806370a082311161013e57806370a0823114610338578063715018a61461036e578063751039fc14610383578063860a32ec1461039857600080fd5b806342966c68146102be57806349bd5a5e146102e05780634f97b70d1461031857600080fd5b806323b872dd116101a057806323b872dd1461024c5780632ddbd13a1461026c578063313ce56714610282578063395093511461029e57600080fd5b806306fdde03146101d2578063095ea7b3146101fd57806318160ddd1461022d57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e761059b565b6040516101f491906114f0565b60405180910390f35b34801561020957600080fd5b5061021d610218366004611553565b61062d565b60405190151581526020016101f4565b34801561023957600080fd5b506004545b6040519081526020016101f4565b34801561025857600080fd5b5061021d61026736600461157f565b610644565b34801561027857600080fd5b5061023e600a5481565b34801561028e57600080fd5b50604051601281526020016101f4565b3480156102aa57600080fd5b5061021d6102b9366004611553565b6106f3565b3480156102ca57600080fd5b506102de6102d93660046115c0565b61072f565b005b3480156102ec57600080fd5b50600e54610300906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b34801561032457600080fd5b506102de6103333660046115d9565b610766565b34801561034457600080fd5b5061023e6103533660046115fb565b6001600160a01b031660009081526002602052604090205490565b34801561037a57600080fd5b506102de61079b565b34801561038f57600080fd5b506102de6107d1565b3480156103a457600080fd5b5060095461021d9060ff1681565b3480156103be57600080fd5b506102de6103cd3660046115fb565b610807565b3480156103de57600080fd5b506001546001600160a01b0316610300565b3480156103fc57600080fd5b506101e7610853565b34801561041157600080fd5b5061021d610420366004611553565b610862565b34801561043157600080fd5b5061023e600b5481565b34801561044757600080fd5b5061021d610456366004611553565b6108fb565b34801561046757600080fd5b5061021d6104763660046115fb565b60076020526000908152604090205460ff1681565b34801561049757600080fd5b5061023e6104a63660046115fb565b60086020526000908152604090205481565b6102de610908565b3480156104cc57600080fd5b5061023e600c5481565b3480156104e257600080fd5b5061023e6104f136600461161f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561052857600080fd5b506102de610537366004611666565b610ca8565b34801561054857600080fd5b506102de6105573660046115fb565b610cfd565b34801561056857600080fd5b50600d54610300906001600160a01b031681565b34801561058857600080fd5b5060095461021d90610100900460ff1681565b6060600580546105aa90611694565b80601f01602080910402602001604051908101604052809291908181526020018280546105d690611694565b80156106235780601f106105f857610100808354040283529160200191610623565b820191906000526020600020905b81548152906001019060200180831161060657829003601f168201915b5050505050905090565b600061063a338484610d95565b5060015b92915050565b6000610651848484610eb9565b6001600160a01b0384166000908152600360209081526040808320338452909152902054828110156106db5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6106e88533858403610d95565b506001949350505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161063a91859061072a9086906116e4565b610d95565b6000546001600160a01b031633146107595760405162461bcd60e51b81526004016106d2906116f7565b61076333826110ba565b50565b6000546001600160a01b031633146107905760405162461bcd60e51b81526004016106d2906116f7565b600b91909155600c55565b6000546001600160a01b031633146107c55760405162461bcd60e51b81526004016106d2906116f7565b6107cf600061119a565b565b6000546001600160a01b031633146107fb5760405162461bcd60e51b81526004016106d2906116f7565b6009805460ff19169055565b6000546001600160a01b031633146108315760405162461bcd60e51b81526004016106d2906116f7565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600680546105aa90611694565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156108e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106d2565b6108f13385858403610d95565b5060019392505050565b600061063a338484610eb9565b6000546001600160a01b031633146109325760405162461bcd60e51b81526004016106d2906116f7565b600954610100900460ff161561098a5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106d2565b600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600a546109c1913091610d95565b600f60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a38919061172c565b6001600160a01b031663c9c6539630600f60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abe919061172c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2f919061172c565b600e80546001600160a01b039283166001600160a01b0319909116179055600f541663f305d7193430610b77816001600160a01b031660009081526002602052604090205490565b600080610b8c6001546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610bf4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c199190611749565b5050600e54600f5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c969190611777565b506009805461ff001916610100179055565b6000546001600160a01b03163314610cd25760405162461bcd60e51b81526004016106d2906116f7565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d275760405162461bcd60e51b81526004016106d2906116f7565b6001600160a01b038116610d8c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d2565b6107638161119a565b6001600160a01b038316610df75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106d2565b6001600160a01b038216610e585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106d2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f1d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106d2565b6001600160a01b038216610f7f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106d2565b6000610f8c8484846111ec565b6001600160a01b038516600090815260026020526040902054909150828110156110075760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106d2565b6001600160a01b0380861660009081526002602052604080822086850390559186168152908120805484929061103e9084906116e4565b9091555061104e90508284611794565b6004600082825461105f9190611794565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516110ab91815260200190565b60405180910390a35050505050565b6001600160a01b03821661111a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016106d2565b6001600160a01b038216600090815260026020526040902080547f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc548382039092559061116783826116e4565b61dead60005260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5550505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600954600090610100900460ff1661127f576001600160a01b03841630148061122257506001546001600160a01b038581169116145b8061123a57506001546001600160a01b038481169116145b61127f5760405162461bcd60e51b81526020600482015260166024820152751d1c98591a5b99c81a5cc81b9bdd081cdd185c9d195960521b60448201526064016106d2565b60095460ff1680156112aa57506001600160a01b03831660009081526007602052604090205460ff16155b80156112c45750600e546001600160a01b03848116911614155b80156112de57506001546001600160a01b03848116911614155b80156112f857506001546001600160a01b03858116911614155b1561140b57600b5482611320856001600160a01b031660009081526002602052604090205490565b61132a91906116e4565b11156113935760405162461bcd60e51b815260206004820152603260248201527f457863656564732063757272656e74206d6178696d756d20616d6f756e7420616044820152711b1b1bddd959081a5b8818481dd85b1b195d60721b60648201526084016106d2565b600c5482111561140b5760405162461bcd60e51b815260206004820152603760248201527f457863656564732063757272656e74206d6178696d756d20616d6f756e74206160448201527f6c6c6f77656420696e2061207472616e73616374696f6e00000000000000000060648201526084016106d2565b6001600160a01b03841660009081526007602052604090205460ff1615801561144d57506001600160a01b03831660009081526007602052604090205460ff16155b80156114635750600d546001600160a01b031615155b156114e957600d546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201859052909116906323b872dd906064016020604051808303816000875af11580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190611777565b505b5092915050565b600060208083528351808285015260005b8181101561151d57858101830151858201604001528201611501565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461076357600080fd5b6000806040838503121561156657600080fd5b82356115718161153e565b946020939093013593505050565b60008060006060848603121561159457600080fd5b833561159f8161153e565b925060208401356115af8161153e565b929592945050506040919091013590565b6000602082840312156115d257600080fd5b5035919050565b600080604083850312156115ec57600080fd5b50508035926020909101359150565b60006020828403121561160d57600080fd5b81356116188161153e565b9392505050565b6000806040838503121561163257600080fd5b823561163d8161153e565b9150602083013561164d8161153e565b809150509250929050565b801515811461076357600080fd5b6000806040838503121561167957600080fd5b82356116848161153e565b9150602083013561164d81611658565b600181811c908216806116a857607f821691505b6020821081036116c857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561063e5761063e6116ce565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561173e57600080fd5b81516116188161153e565b60008060006060848603121561175e57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561178957600080fd5b815161161881611658565b8181038181111561063e5761063e6116ce56fea2646970667358221220d869529549a8050e786b5cfc4888770fbc583e0bcf704e6bcbd12169f0baeb5464736f6c63430008130033