0x60806040526005805460ff19169055600380546001600160a01b03191633179055610bfc8061002f6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a9059cbb11610071578063a9059cbb146102bb578063b414d4b6146102e7578063dd62ed3e1461030d578063e724529c1461033b578063f2fde38b1461036957610116565b806370a082311461024c5780638456cb59146102725780638da5cb5b1461027a578063a0712d681461029e57610116565b806327304dfd116100e957806327304dfd146101d35780633f4ba83a146101f957806342966c68146102015780635c975abb1461021e578063704802751461022657610116565b8063095ea7b31461011b5780631785f53c1461015b57806318160ddd1461018357806323b872dd1461019d575b600080fd5b6101476004803603604081101561013157600080fd5b506001600160a01b03813516906020013561038f565b604080519115158252519081900360200190f35b6101816004803603602081101561017157600080fd5b50356001600160a01b03166103b3565b005b61018b6103eb565b60408051918252519081900360200190f35b610147600480360360608110156101b357600080fd5b506001600160a01b038135811691602081013590911690604001356103f1565b610147600480360360208110156101e957600080fd5b50356001600160a01b0316610432565b610181610447565b6101816004803603602081101561021757600080fd5b50356104a2565b61014761057a565b6101816004803603602081101561023c57600080fd5b50356001600160a01b0316610583565b61018b6004803603602081101561026257600080fd5b50356001600160a01b03166105be565b6101816105d9565b610282610638565b604080516001600160a01b039092168252519081900360200190f35b610181600480360360208110156102b457600080fd5b5035610647565b610147600480360360408110156102d157600080fd5b506001600160a01b038135169060200135610703565b610147600480360360208110156102fd57600080fd5b50356001600160a01b0316610721565b61018b6004803603604081101561032357600080fd5b506001600160a01b0381358116916020013516610736565b6101816004803603604081101561035157600080fd5b506001600160a01b0381351690602001351515610761565b6101816004803603602081101561037f57600080fd5b50356001600160a01b03166107f7565b60055460009060ff16156103a257600080fd5b6103ac838361081a565b9392505050565b6003546001600160a01b031633146103ca57600080fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b60025490565b60055460009060ff161561040457600080fd5b61040d33610880565b61041684610880565b61041f83610880565b61042a8484846108a6565b949350505050565b60046020526000908152604090205460ff1681565b6003546001600160a01b0316331461045e57600080fd5b60055460ff1661046d57600080fd5b6005805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b6003546001600160a01b031633146104b957600080fd5b336000908152602081905260409020548111156104d557600080fd5b336000908152602081905260409020546104f5908263ffffffff6108c416565b33600090815260208190526040902055600254610518908263ffffffff6108c416565b6002556040805182815290516000913391600080516020610ba88339815191529181900360200190a360408051828152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250565b60055460ff1681565b6003546001600160a01b0316331461059a57600080fd5b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6001600160a01b031660009081526020819052604090205490565b6003546001600160a01b031633146105f057600080fd5b60055460ff161561060057600080fd5b6005805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6003546001600160a01b031681565b6003546001600160a01b0316331461065e57600080fd5b3360009081526020819052604090205461067e908263ffffffff6108d916565b336000908152602081905260409020556002546106a1908263ffffffff6108d916565b6002556040805182815290513391600091600080516020610ba88339815191529181900360200190a360408051828152905133917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250565b600061070e33610880565b61071783610880565b6103ac83836108eb565b60066020526000908152604090205460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3360009081526004602052604090205460ff1615156001148061078e57506003546001600160a01b031633145b61079757600080fd5b6001600160a01b038216600081815260066020908152604091829020805460ff1916851515908117909155825190815291517f67a17b8db8ff8fa7cff69c2328bf8a35f9be2c88abeea30be900fc28eece28ed9281900390910190a25050565b6003546001600160a01b0316331461080e57600080fd5b61081781610908565b50565b3360008181526001602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6001600160a01b03811660009081526006602052604090205460ff161561081757600080fd5b60055460009060ff16156108b957600080fd5b61042a848484610977565b6000828211156108d357600080fd5b50900390565b6000828201838110156103ac57600080fd5b60055460009060ff16156108fe57600080fd5b6103ac8383610ada565b6001600160a01b03811661091b57600080fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831661098c57600080fd5b6001600160a01b0384166000908152602081905260409020548211156109b157600080fd5b6001600160a01b03841660009081526001602090815260408083203384529091529020548211156109e157600080fd5b6001600160a01b038416600090815260208190526040902054610a0a908363ffffffff6108c416565b6001600160a01b038086166000908152602081905260408082209390935590851681522054610a3f908363ffffffff6108d916565b6001600160a01b03808516600090815260208181526040808320949094559187168152600182528281203382529091522054610a81908363ffffffff6108c416565b6001600160a01b0380861660008181526001602090815260408083203384528252918290209490945580518681529051928716939192600080516020610ba8833981519152929181900390910190a35060019392505050565b60006001600160a01b038316610aef57600080fd5b33600090815260208190526040902054821115610b0b57600080fd5b33600090815260208190526040902054610b2b908363ffffffff6108c416565b33600090815260208190526040808220929092556001600160a01b03851681522054610b5d908363ffffffff6108d916565b6001600160a01b03841660008181526020818152604091829020939093558051858152905191923392600080516020610ba88339815191529281900390910190a35060019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a7230582076e6df8167c940455dd748ef64dffd88f08c599b2bcc28c3d5b8e9af152b1d1f64736f6c63430005090032