60806040526032620000146012600a62000254565b6200002590641029c123006200026b565b62000031919062000285565b6001556005805460ff60a01b191690553480156200004d575f80fd5b505f80546001600160a01b031916339081178255815260046020526040808220805460ff199081166001908117909255308452918320805483168217905561dead9092527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd80549091169091179055620000ca6012600a62000254565b620000db90641029c123006200026b565b335f81815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200011d6012600a62000254565b6200012e90641029c123006200026b565b60405190815260200160405180910390a3620002a5565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200019957815f19048211156200017d576200017d62000145565b808516156200018b57918102915b93841c93908002906200015e565b509250929050565b5f82620001b1575060016200024e565b81620001bf57505f6200024e565b8160018114620001d85760028114620001e35762000203565b60019150506200024e565b60ff841115620001f757620001f762000145565b50506001821b6200024e565b5060208310610133831016604e8410600b841016171562000228575081810a6200024e565b62000234838362000159565b805f19048211156200024a576200024a62000145565b0290505b92915050565b5f6200026460ff841683620001a1565b9392505050565b80820281158282048414176200024e576200024e62000145565b5f82620002a057634e487b7160e01b5f52601260045260245ffd5b500490565b610e5680620002b35f395ff3fe608060405260043610610138575f3560e01c8063715018a6116100b7578063893d20e81161007c578063dd62ed3e11610057578063dd62ed3e146103b6578063f4293890146103fa578063f8b45b051461040e575f80fd5b8063893d20e81461037b57806395d89b4114610143578063a9059cbb14610397575f80fd5b8063715018a6146102cf578063751039fc146102e357806382bf293c146102f757806383ae6fec14610316578063842708121461034d575f80fd5b80632b112e49116100fd5780632b112e491461021c5780632f54bf6e14610230578063313ce5671461025d578063495bb3ea1461028357806370a08231146102a4575f80fd5b806306fdde0314610143578063095ea7b31461018c57806311704f52146101bb57806318160ddd146101db57806323b872dd146101fd575f80fd5b3661013f57005b5f80fd5b34801561014e575f80fd5b5061017660405180604001604052806008815260200167504550455249554d60c01b81525081565b6040516101839190610b9a565b60405180910390f35b348015610197575f80fd5b506101ab6101a6366004610c00565b610423565b6040519015158152602001610183565b3480156101c6575f80fd5b506005546101ab90600160a01b900460ff1681565b3480156101e6575f80fd5b506101ef61048f565b604051908152602001610183565b348015610208575f80fd5b506101ab610217366004610c28565b6104ad565b348015610227575f80fd5b506101ef610570565b34801561023b575f80fd5b506101ab61024a366004610c61565b5f546001600160a01b0391821691161490565b348015610268575f80fd5b50610271601281565b60405160ff9091168152602001610183565b34801561028e575f80fd5b506102a261029d366004610c61565b6105f7565b005b3480156102af575f80fd5b506101ef6102be366004610c61565b60026020525f908152604090205481565b3480156102da575f80fd5b506102a26106db565b3480156102ee575f80fd5b506102a261073b565b348015610302575f80fd5b506102a2610311366004610c7a565b61079d565b348015610321575f80fd5b50600554610335906001600160a01b031681565b6040516001600160a01b039091168152602001610183565b348015610358575f80fd5b506101ab610367366004610c61565b60046020525f908152604090205460ff1681565b348015610386575f80fd5b505f546001600160a01b0316610335565b3480156103a2575f80fd5b506101ab6103b1366004610c00565b61086a565b3480156103c1575f80fd5b506101ef6103d0366004610c91565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610405575f80fd5b506102a261087d565b348015610419575f80fd5b506101ef60015481565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061047d9086815260200190565b60405180910390a35060015b92915050565b61049b6012600a610db6565b6104aa90641029c12300610dc4565b81565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f191461055d57604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b0387165f9081526003825283812033825290915291909120546105399184906108eb565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b610568848484610923565b949350505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc549091906105cf6012600a610db6565b6105de90641029c12300610dc4565b6105e89190610ddb565b6105f29190610ddb565b905090565b5f546001600160a01b0316331461063e5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064015b60405180910390fd5b600554600160a01b900460ff16156106a45760405162461bcd60e51b8152602060048201526024808201527f43616e74206368616e67652061667465722074726164696e6720686173206f70604482015263195b995960e21b6064820152608401610635565b600580546001600160a01b0390921674ffffffffffffffffffffffffffffffffffffffffff1990921691909117600160a01b179055565b5f546001600160a01b0316331461071d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610635565b5f805473ffffffffffffffffffffffffffffffffffffffff19169055565b5f546001600160a01b0316331461077d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610635565b6107896012600a610db6565b61079890641029c12300610dc4565b600155565b5f546001600160a01b031633146107df5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610635565b600260015410156108325760405162461bcd60e51b815260206004820152601c60248201527f43616e7420736574206d61782077616c6c65742062656c6f77203225000000006044820152606401610635565b6064816108416012600a610db6565b61085090641029c12300610dc4565b61085a9190610dc4565b6108649190610dee565b60015550565b5f610876338484610923565b9392505050565b5f546001600160a01b031633146108bf5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610635565b60405133904780156108fc02915f818181858888f193505050501580156108e8573d5f803e3d5ffd5b50565b5f818484111561090e5760405162461bcd60e51b81526004016106359190610b9a565b505f61091a8486610ddb565b95945050505050565b6001600160a01b0383165f9081526004602052604081205460ff1615801561096357506001600160a01b0383165f9081526004602052604090205460ff16155b801561097d57506005546001600160a01b03848116911614155b15610a4f576001546001600160a01b0384165f908152600260205260409020546109a8908490610e0d565b11156109f65760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610635565b600554600160a01b900460ff16610a4f5760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e207965740000000000000000000000006044820152606401610635565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0387165f90815260029091529190912054610aa99184906108eb565b6001600160a01b038086165f908152600260205260408082209390935590851681522054610ad79083610b3c565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b2a9086815260200190565b60405180910390a35060019392505050565b5f80610b488385610e0d565b9050838110156108765760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610635565b5f6020808352835180828501525f5b81811015610bc557858101830151858201604001528201610ba9565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610bfb575f80fd5b919050565b5f8060408385031215610c11575f80fd5b610c1a83610be5565b946020939093013593505050565b5f805f60608486031215610c3a575f80fd5b610c4384610be5565b9250610c5160208501610be5565b9150604084013590509250925092565b5f60208284031215610c71575f80fd5b61087682610be5565b5f60208284031215610c8a575f80fd5b5035919050565b5f8060408385031215610ca2575f80fd5b610cab83610be5565b9150610cb960208401610be5565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610d1057815f1904821115610cf657610cf6610cc2565b80851615610d0357918102915b93841c9390800290610cdb565b509250929050565b5f82610d2657506001610489565b81610d3257505f610489565b8160018114610d485760028114610d5257610d6e565b6001915050610489565b60ff841115610d6357610d63610cc2565b50506001821b610489565b5060208310610133831016604e8410600b8410161715610d91575081810a610489565b610d9b8383610cd6565b805f1904821115610dae57610dae610cc2565b029392505050565b5f61087660ff841683610d18565b808202811582820484141761048957610489610cc2565b8181038181111561048957610489610cc2565b5f82610e0857634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561048957610489610cc256fea2646970667358221220bcf762fc7fd1ab1483d1b60e331875d0397deb47b81a362a99a6b651b63fc38d64736f6c63430008150033