Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 263 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Send Eth Proport... | 14422008 | 1053 days ago | IN | 0 ETH | 0.00081561 | ||||
Send Eth Proport... | 14422001 | 1053 days ago | IN | 0 ETH | 0.00079125 | ||||
Send Eth Proport... | 14421988 | 1053 days ago | IN | 0 ETH | 0.00088065 | ||||
Send Eth Proport... | 14421968 | 1053 days ago | IN | 0 ETH | 0.00093229 | ||||
Send Eth Proport... | 14421930 | 1053 days ago | IN | 0 ETH | 0.00082454 | ||||
Send Eth Proport... | 14421899 | 1053 days ago | IN | 0 ETH | 0.00078348 | ||||
Transfer Token A... | 9789451 | 1770 days ago | IN | 0 ETH | 0.00022342 | ||||
Transfer | 8340356 | 2003 days ago | IN | 0 ETH | 0.00015871 | ||||
Buy On Approve | 7113654 | 2205 days ago | IN | 0.3 ETH | 0.00389444 | ||||
Buy On Approve | 7112522 | 2205 days ago | IN | 0.029698 ETH | 0.00467157 | ||||
Buy On Approve | 7104794 | 2206 days ago | IN | 0.02 ETH | 0.0102974 | ||||
Buy On Approve | 7103805 | 2207 days ago | IN | 0.009 ETH | 0.00225937 | ||||
Buy On Approve | 7091797 | 2209 days ago | IN | 0.1 ETH | 0.00686442 | ||||
Buy On Approve | 7086370 | 2210 days ago | IN | 0.01 ETH | 0.01167039 | ||||
Buy On Approve | 7084975 | 2210 days ago | IN | 0.51 ETH | 0.00669716 | ||||
Buy On Approve | 7084877 | 2210 days ago | IN | 0.01 ETH | 0.00583519 | ||||
Buy On Approve | 7060009 | 2214 days ago | IN | 0.16374869 ETH | 0.00208384 | ||||
Buy On Approve | 7054611 | 2215 days ago | IN | 0.78686 ETH | 0.00480599 | ||||
Buy On Approve | 7049641 | 2216 days ago | IN | 0.0044 ETH | 0.00080579 | ||||
Buy On Approve | 7046482 | 2217 days ago | IN | 0.40059656 ETH | 0.0014661 | ||||
Buy On Approve | 7027583 | 2220 days ago | IN | 0.00064023 ETH | 0.00067856 | ||||
Buy On Approve | 7024790 | 2221 days ago | IN | 0.1 ETH | 0.00219839 | ||||
Buy On Approve | 7022925 | 2221 days ago | IN | 0.2 ETH | 0.00472701 | ||||
Buy On Approve | 7022911 | 2221 days ago | IN | 0.2 ETH | 0.00168742 | ||||
Buy On Approve | 7018754 | 2222 days ago | IN | 0.1 ETH | 0.00163976 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
7113654 | 2205 days ago | 2 wei | ||||
7113654 | 2205 days ago | 0.03070376 ETH | ||||
7113654 | 2205 days ago | 0.09243815 ETH | ||||
7113654 | 2205 days ago | 0.17685807 ETH | ||||
7112522 | 2205 days ago | 1 wei | ||||
7112522 | 2205 days ago | 0.01519104 ETH | ||||
7112522 | 2205 days ago | 0.01450695 ETH | ||||
7104794 | 2206 days ago | 7 wei | ||||
7104794 | 2206 days ago | 0.00058519 ETH | ||||
7104794 | 2206 days ago | 0.00057038 ETH | ||||
7104794 | 2206 days ago | 0.00072484 ETH | ||||
7104794 | 2206 days ago | 0.00158366 ETH | ||||
7104794 | 2206 days ago | 0.0017426 ETH | ||||
7104794 | 2206 days ago | 0.00154553 ETH | ||||
7104794 | 2206 days ago | 0.00511548 ETH | ||||
7104794 | 2206 days ago | 0.00160411 ETH | ||||
7104794 | 2206 days ago | 0.00254181 ETH | ||||
7104794 | 2206 days ago | 0.00398633 ETH | ||||
7103805 | 2207 days ago | 1 wei | ||||
7103805 | 2207 days ago | 0.00437786 ETH | ||||
7103805 | 2207 days ago | 0.00462213 ETH | ||||
7091797 | 2209 days ago | 6 wei | ||||
7091797 | 2209 days ago | 0.0029227 ETH | ||||
7091797 | 2209 days ago | 0.00294332 ETH | ||||
7091797 | 2209 days ago | 0.00369255 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MultiBuyer
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-09-25 */ pragma solidity ^0.4.24; // File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * See https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address _who) public view returns (uint256); function transfer(address _to, uint256 _value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address _owner, address _spender) public view returns (uint256); function transferFrom(address _from, address _to, uint256 _value) public returns (bool); function approve(address _spender, uint256 _value) public returns (bool); event Approval( address indexed owner, address indexed spender, uint256 value ); } // File: contracts/interface/IBasicMultiToken.sol contract IBasicMultiToken is ERC20 { event Bundle(address indexed who, address indexed beneficiary, uint256 value); event Unbundle(address indexed who, address indexed beneficiary, uint256 value); ERC20[] public tokens; function tokensCount() public view returns(uint256); function bundleFirstTokens(address _beneficiary, uint256 _amount, uint256[] _tokenAmounts) public; function bundle(address _beneficiary, uint256 _amount) public; function unbundle(address _beneficiary, uint256 _value) public; function unbundleSome(address _beneficiary, uint256 _value, ERC20[] _tokens) public; function disableBundling() public; function enableBundling() public; } // File: contracts/interface/IMultiToken.sol contract IMultiToken is IBasicMultiToken { event Update(); event Change(address indexed _fromToken, address indexed _toToken, address indexed _changer, uint256 _amount, uint256 _return); mapping(address => uint256) public weights; function getReturn(address _fromToken, address _toToken, uint256 _amount) public view returns (uint256 returnAmount); function change(address _fromToken, address _toToken, uint256 _amount, uint256 _minReturn) public returns (uint256 returnAmount); function disableChanges() public; } // File: openzeppelin-solidity/contracts/math/SafeMath.sol /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 _a, uint256 _b) internal pure returns (uint256 c) { // Gas optimization: this is cheaper than asserting 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (_a == 0) { return 0; } c = _a * _b; assert(c / _a == _b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 _a, uint256 _b) internal pure returns (uint256) { // assert(_b > 0); // Solidity automatically throws when dividing by 0 // uint256 c = _a / _b; // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold return _a / _b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 _a, uint256 _b) internal pure returns (uint256) { assert(_b <= _a); return _a - _b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 _a, uint256 _b) internal pure returns (uint256 c) { c = _a + _b; assert(c >= _a); return c; } } // File: contracts/ext/CheckedERC20.sol library CheckedERC20 { using SafeMath for uint; function isContract(address addr) internal view returns(bool result) { // solium-disable-next-line security/no-inline-assembly assembly { result := gt(extcodesize(addr), 0) } } function handleReturnBool() internal pure returns(bool result) { // solium-disable-next-line security/no-inline-assembly assembly { switch returndatasize() case 0 { // not a std erc20 result := 1 } case 32 { // std erc20 returndatacopy(0, 0, 32) result := mload(0) } default { // anything else, should revert for safety revert(0, 0) } } } function handleReturnBytes32() internal pure returns(bytes32 result) { // solium-disable-next-line security/no-inline-assembly assembly { if eq(returndatasize(), 32) { // not a std erc20 returndatacopy(0, 0, 32) result := mload(0) } if gt(returndatasize(), 32) { // std erc20 returndatacopy(0, 64, 32) result := mload(0) } if lt(returndatasize(), 32) { // anything else, should revert for safety revert(0, 0) } } } function asmTransfer(address _token, address _to, uint256 _value) internal returns(bool) { require(isContract(_token)); // solium-disable-next-line security/no-low-level-calls require(_token.call(bytes4(keccak256("transfer(address,uint256)")), _to, _value)); return handleReturnBool(); } function asmTransferFrom(address _token, address _from, address _to, uint256 _value) internal returns(bool) { require(isContract(_token)); // solium-disable-next-line security/no-low-level-calls require(_token.call(bytes4(keccak256("transferFrom(address,address,uint256)")), _from, _to, _value)); return handleReturnBool(); } function asmApprove(address _token, address _spender, uint256 _value) internal returns(bool) { require(isContract(_token)); // solium-disable-next-line security/no-low-level-calls require(_token.call(bytes4(keccak256("approve(address,uint256)")), _spender, _value)); return handleReturnBool(); } // function checkedTransfer(ERC20 _token, address _to, uint256 _value) internal { if (_value > 0) { uint256 balance = _token.balanceOf(this); asmTransfer(_token, _to, _value); require(_token.balanceOf(this) == balance.sub(_value), "checkedTransfer: Final balance didn't match"); } } function checkedTransferFrom(ERC20 _token, address _from, address _to, uint256 _value) internal { if (_value > 0) { uint256 toBalance = _token.balanceOf(_to); asmTransferFrom(_token, _from, _to, _value); require(_token.balanceOf(_to) == toBalance.add(_value), "checkedTransfer: Final balance didn't match"); } } // function asmName(address _token) internal view returns(bytes32) { require(isContract(_token)); // solium-disable-next-line security/no-low-level-calls require(_token.call(bytes4(keccak256("name()")))); return handleReturnBytes32(); } function asmSymbol(address _token) internal view returns(bytes32) { require(isContract(_token)); // solium-disable-next-line security/no-low-level-calls require(_token.call(bytes4(keccak256("symbol()")))); return handleReturnBytes32(); } } // File: openzeppelin-solidity/contracts/ownership/Ownable.sol /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership(address _newOwner) public onlyOwner { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } // File: openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { function safeTransfer( ERC20Basic _token, address _to, uint256 _value ) internal { require(_token.transfer(_to, _value)); } function safeTransferFrom( ERC20 _token, address _from, address _to, uint256 _value ) internal { require(_token.transferFrom(_from, _to, _value)); } function safeApprove( ERC20 _token, address _spender, uint256 _value ) internal { require(_token.approve(_spender, _value)); } } // File: openzeppelin-solidity/contracts/ownership/CanReclaimToken.sol /** * @title Contracts that should be able to recover tokens * @author SylTi * @dev This allow a contract to recover any ERC20 token received in a contract by transferring the balance to the contract owner. * This will prevent any accidental loss of tokens. */ contract CanReclaimToken is Ownable { using SafeERC20 for ERC20Basic; /** * @dev Reclaim all ERC20Basic compatible tokens * @param _token ERC20Basic The address of the token contract */ function reclaimToken(ERC20Basic _token) external onlyOwner { uint256 balance = _token.balanceOf(this); _token.safeTransfer(owner, balance); } } // File: contracts/registry/MultiChanger.sol contract IEtherToken is ERC20 { function deposit() public payable; function withdraw(uint256 _amount) public; } contract IBancorNetwork { function convert( address[] _path, uint256 _amount, uint256 _minReturn ) public payable returns(uint256); function claimAndConvert( address[] _path, uint256 _amount, uint256 _minReturn ) public payable returns(uint256); } contract IKyberNetworkProxy { function trade( address src, uint srcAmount, address dest, address destAddress, uint maxDestAmount, uint minConversionRate, address walletId ) public payable returns(uint); } contract MultiChanger is CanReclaimToken { using SafeMath for uint256; using CheckedERC20 for ERC20; // Source: https://github.com/gnosis/MultiSigWallet/blob/master/contracts/MultiSigWallet.sol // call has been separated into its own function in order to take advantage // of the Solidity's code generator to produce a loop that copies tx.data into memory. function externalCall(address destination, uint value, bytes data, uint dataOffset, uint dataLength) internal returns (bool result) { // solium-disable-next-line security/no-inline-assembly assembly { let x := mload(0x40) // "Allocate" memory for output (0x40 is where "free memory" pointer is stored by convention) let d := add(data, 32) // First 32 bytes are the padded length of data, so exclude that result := call( sub(gas, 34710), // 34710 is the value that solidity is currently emitting // It includes callGas (700) + callVeryLow (3, to pay for SUB) + callValueTransferGas (9000) + // callNewAccountGas (25000, in case the destination address does not exist and needs creating) destination, value, add(d, dataOffset), dataLength, // Size of the input (in bytes) - this is what fixes the padding problem x, 0 // Output is ignored, therefore the output size is zero ) } } function change( bytes _callDatas, uint[] _starts // including 0 and LENGTH values ) internal { for (uint i = 0; i < _starts.length - 1; i++) { require(externalCall(this, 0, _callDatas, _starts[i], _starts[i + 1] - _starts[i])); } } function sendEthValue(address _target, bytes _data, uint256 _value) external { // solium-disable-next-line security/no-call-value require(_target.call.value(_value)(_data)); } function sendEthProportion(address _target, bytes _data, uint256 _mul, uint256 _div) external { uint256 value = address(this).balance.mul(_mul).div(_div); // solium-disable-next-line security/no-call-value require(_target.call.value(value)(_data)); } function approveTokenAmount(address _target, bytes _data, ERC20 _fromToken, uint256 _amount) external { if (_fromToken.allowance(this, _target) != 0) { _fromToken.asmApprove(_target, 0); } _fromToken.asmApprove(_target, _amount); // solium-disable-next-line security/no-low-level-calls require(_target.call(_data)); } function approveTokenProportion(address _target, bytes _data, ERC20 _fromToken, uint256 _mul, uint256 _div) external { uint256 amount = _fromToken.balanceOf(this).mul(_mul).div(_div); if (_fromToken.allowance(this, _target) != 0) { _fromToken.asmApprove(_target, 0); } _fromToken.asmApprove(_target, amount); // solium-disable-next-line security/no-low-level-calls require(_target.call(_data)); } function transferTokenAmount(address _target, bytes _data, ERC20 _fromToken, uint256 _amount) external { _fromToken.asmTransfer(_target, _amount); // solium-disable-next-line security/no-low-level-calls require(_target.call(_data)); } function transferTokenProportion(address _target, bytes _data, ERC20 _fromToken, uint256 _mul, uint256 _div) external { uint256 amount = _fromToken.balanceOf(this).mul(_mul).div(_div); _fromToken.asmTransfer(_target, amount); // solium-disable-next-line security/no-low-level-calls require(_target.call(_data)); } // Ether token function withdrawEtherTokenAmount(IEtherToken _etherToken, uint256 _amount) external { _etherToken.withdraw(_amount); } function withdrawEtherTokenProportion(IEtherToken _etherToken, uint256 _mul, uint256 _div) external { uint256 amount = _etherToken.balanceOf(this).mul(_mul).div(_div); _etherToken.withdraw(amount); } // Bancor Network function bancorSendEthValue(IBancorNetwork _bancor, address[] _path, uint256 _value) external { _bancor.convert.value(_value)(_path, _value, 1); } function bancorSendEthProportion(IBancorNetwork _bancor, address[] _path, uint256 _mul, uint256 _div) external { uint256 value = address(this).balance.mul(_mul).div(_div); _bancor.convert.value(value)(_path, value, 1); } function bancorApproveTokenAmount(IBancorNetwork _bancor, address[] _path, uint256 _amount) external { if (ERC20(_path[0]).allowance(this, _bancor) == 0) { ERC20(_path[0]).asmApprove(_bancor, uint256(-1)); } _bancor.claimAndConvert(_path, _amount, 1); } function bancorApproveTokenProportion(IBancorNetwork _bancor, address[] _path, uint256 _mul, uint256 _div) external { uint256 amount = ERC20(_path[0]).balanceOf(this).mul(_mul).div(_div); if (ERC20(_path[0]).allowance(this, _bancor) == 0) { ERC20(_path[0]).asmApprove(_bancor, uint256(-1)); } _bancor.claimAndConvert(_path, amount, 1); } function bancorTransferTokenAmount(IBancorNetwork _bancor, address[] _path, uint256 _amount) external { ERC20(_path[0]).asmTransfer(_bancor, _amount); _bancor.convert(_path, _amount, 1); } function bancorTransferTokenProportion(IBancorNetwork _bancor, address[] _path, uint256 _mul, uint256 _div) external { uint256 amount = ERC20(_path[0]).balanceOf(this).mul(_mul).div(_div); ERC20(_path[0]).asmTransfer(_bancor, amount); _bancor.convert(_path, amount, 1); } function bancorAlreadyTransferedTokenAmount(IBancorNetwork _bancor, address[] _path, uint256 _amount) external { _bancor.convert(_path, _amount, 1); } function bancorAlreadyTransferedTokenProportion(IBancorNetwork _bancor, address[] _path, uint256 _mul, uint256 _div) external { uint256 amount = ERC20(_path[0]).balanceOf(_bancor).mul(_mul).div(_div); _bancor.convert(_path, amount, 1); } // Kyber Network function kyberSendEthProportion(IKyberNetworkProxy _kyber, ERC20 _fromToken, address _toToken, uint256 _mul, uint256 _div) external { uint256 value = address(this).balance.mul(_mul).div(_div); _kyber.trade.value(value)( _fromToken, value, _toToken, this, 1 << 255, 0, 0 ); } function kyberApproveTokenAmount(IKyberNetworkProxy _kyber, ERC20 _fromToken, address _toToken, uint256 _amount) external { if (_fromToken.allowance(this, _kyber) == 0) { _fromToken.asmApprove(_kyber, uint256(-1)); } _kyber.trade( _fromToken, _amount, _toToken, this, 1 << 255, 0, 0 ); } function kyberApproveTokenProportion(IKyberNetworkProxy _kyber, ERC20 _fromToken, address _toToken, uint256 _mul, uint256 _div) external { uint256 amount = _fromToken.balanceOf(this).mul(_mul).div(_div); this.kyberApproveTokenAmount(_kyber, _fromToken, _toToken, amount); } } // File: contracts/registry/MultiBuyer.sol contract MultiBuyer is MultiChanger { using CheckedERC20 for ERC20; function buy( IMultiToken _mtkn, uint256 _minimumReturn, bytes _callDatas, uint[] _starts // including 0 and LENGTH values ) public payable { change(_callDatas, _starts); uint mtknTotalSupply = _mtkn.totalSupply(); // optimization totalSupply uint256 bestAmount = uint256(-1); for (uint i = _mtkn.tokensCount(); i > 0; i--) { ERC20 token = _mtkn.tokens(i - 1); if (token.allowance(this, _mtkn) == 0) { token.asmApprove(_mtkn, uint256(-1)); } uint256 amount = mtknTotalSupply.mul(token.balanceOf(this)).div(token.balanceOf(_mtkn)); if (amount < bestAmount) { bestAmount = amount; } } require(bestAmount >= _minimumReturn, "buy: return value is too low"); _mtkn.bundle(msg.sender, bestAmount); if (address(this).balance > 0) { msg.sender.transfer(address(this).balance); } for (i = _mtkn.tokensCount(); i > 0; i--) { token = _mtkn.tokens(i - 1); if (token.balanceOf(this) > 0) { token.asmTransfer(msg.sender, token.balanceOf(this)); } } } function buyFirstTokens( IMultiToken _mtkn, bytes _callDatas, uint[] _starts // including 0 and LENGTH values ) public payable { change(_callDatas, _starts); uint tokensCount = _mtkn.tokensCount(); uint256[] memory amounts = new uint256[](tokensCount); for (uint i = 0; i < tokensCount; i++) { ERC20 token = _mtkn.tokens(i); amounts[i] = token.balanceOf(this); if (token.allowance(this, _mtkn) == 0) { token.asmApprove(_mtkn, uint256(-1)); } } _mtkn.bundleFirstTokens(msg.sender, msg.value.mul(1000), amounts); if (address(this).balance > 0) { msg.sender.transfer(address(this).balance); } for (i = _mtkn.tokensCount(); i > 0; i--) { token = _mtkn.tokens(i - 1); if (token.balanceOf(this) > 0) { token.asmTransfer(msg.sender, token.balanceOf(this)); } } } // DEPRECATED: function buyOnApprove( IMultiToken _mtkn, uint256 _minimumReturn, ERC20 _throughToken, address[] _exchanges, bytes _datas, uint[] _datasIndexes, // including 0 and LENGTH values uint256[] _values ) public payable { require(_datasIndexes.length == _exchanges.length + 1, "buy: _datasIndexes should start with 0 and end with LENGTH"); require(_values.length == _exchanges.length, "buy: _values should have the same length as _exchanges"); for (uint i = 0; i < _exchanges.length; i++) { bytes memory data = new bytes(_datasIndexes[i + 1] - _datasIndexes[i]); for (uint j = _datasIndexes[i]; j < _datasIndexes[i + 1]; j++) { data[j - _datasIndexes[i]] = _datas[j]; } if (_throughToken != address(0) && _values[i] == 0) { if (_throughToken.allowance(this, _exchanges[i]) == 0) { _throughToken.asmApprove(_exchanges[i], uint256(-1)); } require(_exchanges[i].call(data), "buy: exchange arbitrary call failed"); } else { require(_exchanges[i].call.value(_values[i])(data), "buy: exchange arbitrary call failed"); } } j = _mtkn.totalSupply(); // optimization totalSupply uint256 bestAmount = uint256(-1); for (i = _mtkn.tokensCount(); i > 0; i--) { ERC20 token = _mtkn.tokens(i - 1); if (token.allowance(this, _mtkn) == 0) { token.asmApprove(_mtkn, uint256(-1)); } uint256 amount = j.mul(token.balanceOf(this)).div(token.balanceOf(_mtkn)); if (amount < bestAmount) { bestAmount = amount; } } require(bestAmount >= _minimumReturn, "buy: return value is too low"); _mtkn.bundle(msg.sender, bestAmount); if (address(this).balance > 0) { msg.sender.transfer(address(this).balance); } if (_throughToken != address(0) && _throughToken.balanceOf(this) > 0) { _throughToken.asmTransfer(msg.sender, _throughToken.balanceOf(this)); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_bancor","type":"address"},{"name":"_path","type":"address[]"},{"name":"_amount","type":"uint256"}],"name":"bancorAlreadyTransferedTokenAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_bancor","type":"address"},{"name":"_path","type":"address[]"},{"name":"_mul","type":"uint256"},{"name":"_div","type":"uint256"}],"name":"bancorSendEthProportion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_data","type":"bytes"},{"name":"_fromToken","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approveTokenAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_bancor","type":"address"},{"name":"_path","type":"address[]"},{"name":"_mul","type":"uint256"},{"name":"_div","type":"uint256"}],"name":"bancorApproveTokenProportion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_bancor","type":"address"},{"name":"_path","type":"address[]"},{"name":"_amount","type":"uint256"}],"name":"bancorTransferTokenAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_etherToken","type":"address"},{"name":"_mul","type":"uint256"},{"name":"_div","type":"uint256"}],"name":"withdrawEtherTokenProportion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_bancor","type":"address"},{"name":"_path","type":"address[]"},{"name":"_mul","type":"uint256"},{"name":"_div","type":"uint256"}],"name":"bancorTransferTokenProportion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_mtkn","type":"address"},{"name":"_callDatas","type":"bytes"},{"name":"_starts","type":"uint256[]"}],"name":"buyFirstTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_data","type":"bytes"},{"name":"_mul","type":"uint256"},{"name":"_div","type":"uint256"}],"name":"sendEthProportion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_bancor","type":"address"},{"name":"_path","type":"address[]"},{"name":"_value","type":"uint256"}],"name":"bancorSendEthValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_kyber","type":"address"},{"name":"_fromToken","type":"address"},{"name":"_toToken","type":"address"},{"name":"_mul","type":"uint256"},{"name":"_div","type":"uint256"}],"name":"kyberSendEthProportion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_mtkn","type":"address"},{"name":"_minimumReturn","type":"uint256"},{"name":"_callDatas","type":"bytes"},{"name":"_starts","type":"uint256[]"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_data","type":"bytes"},{"name":"_fromToken","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferTokenAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_bancor","type":"address"},{"name":"_path","type":"address[]"},{"name":"_mul","type":"uint256"},{"name":"_div","type":"uint256"}],"name":"bancorAlreadyTransferedTokenProportion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_etherToken","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawEtherTokenAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_kyber","type":"address"},{"name":"_fromToken","type":"address"},{"name":"_toToken","type":"address"},{"name":"_mul","type":"uint256"},{"name":"_div","type":"uint256"}],"name":"kyberApproveTokenProportion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_data","type":"bytes"},{"name":"_fromToken","type":"address"},{"name":"_mul","type":"uint256"},{"name":"_div","type":"uint256"}],"name":"approveTokenProportion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_data","type":"bytes"},{"name":"_value","type":"uint256"}],"name":"sendEthValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_data","type":"bytes"},{"name":"_fromToken","type":"address"},{"name":"_mul","type":"uint256"},{"name":"_div","type":"uint256"}],"name":"transferTokenProportion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_kyber","type":"address"},{"name":"_fromToken","type":"address"},{"name":"_toToken","type":"address"},{"name":"_amount","type":"uint256"}],"name":"kyberApproveTokenAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_bancor","type":"address"},{"name":"_path","type":"address[]"},{"name":"_amount","type":"uint256"}],"name":"bancorApproveTokenAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_mtkn","type":"address"},{"name":"_minimumReturn","type":"uint256"},{"name":"_throughToken","type":"address"},{"name":"_exchanges","type":"address[]"},{"name":"_datas","type":"bytes"},{"name":"_datasIndexes","type":"uint256[]"},{"name":"_values","type":"uint256[]"}],"name":"buyOnApprove","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
608060405260008054600160a060020a03191633179055613407806100256000396000f30060806040526004361061013a5763ffffffff60e060020a60003504166317ffc320811461013f5780631f91695d146101625780632545f8eb146101925780633669f27b146101c557806338085649146101fb57806340f0b0f11461022e5780635499716a1461025e578063618e8ad3146102855780636babf513146102b8578063715018a61461034b578063846f11851461036057806386b0e00a146103935780638721fbe9146103c35780638da5cb5b146103f657806394480a69146104275780639a509aff146104bc5780639d99ce04146104f2578063bd3e904f14610525578063bed31bc714610549578063d04c6c181461057c578063d2e9236b146105b5578063d91bd1b0146105e5578063dc3193f91461061e578063f2fde38b1461064e578063f8b2cb071461066f578063fc6719151461069f575b600080fd5b34801561014b57600080fd5b50610160600160a060020a03600435166107b5565b005b34801561016e57600080fd5b5061016060048035600160a060020a0316906024803590810191013560443561086b565b34801561019e57600080fd5b5061016060048035600160a060020a03169060248035908101910135604435606435610914565b3480156101d157600080fd5b50610160600160a060020a03600480358216916024803590810192013590604435166064356109e5565b34801561020757600080fd5b5061016060048035600160a060020a03169060248035908101910135604435606435610ae5565b34801561023a57600080fd5b5061016060048035600160a060020a03169060248035908101910135604435610cff565b34801561026a57600080fd5b50610160600160a060020a0360043516602435604435610db1565b34801561029157600080fd5b5061016060048035600160a060020a03169060248035908101910135604435606435610e75565b60408051602060046024803582810135601f8101859004850286018501909652858552610160958335600160a060020a0316953695604494919390910191908190840183828082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610f179650505050505050565b34801561035757600080fd5b506101606114a1565b34801561036c57600080fd5b5061016060048035600160a060020a0316906024803590810191013560443560643561150d565b34801561039f57600080fd5b5061016060048035600160a060020a03169060248035908101910135604435611562565b3480156103cf57600080fd5b50610160600160a060020a0360043581169060243581169060443516606435608435611604565b34801561040257600080fd5b5061040b6116cc565b60408051600160a060020a039092168252519081900360200190f35b604080516020600460443581810135601f8101849004840285018401909552848452610160948235600160a060020a0316946024803595369594606494920191908190840183828082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506116db9650505050505050565b3480156104c857600080fd5b50610160600160a060020a0360048035821691602480359081019201359060443516606435611d6e565b3480156104fe57600080fd5b5061016060048035600160a060020a03169060248035908101910135604435606435611d88565b34801561053157600080fd5b50610160600160a060020a0360043516602435611e81565b34801561055557600080fd5b50610160600160a060020a0360043581169060243581169060443516606435608435611ede565b34801561058857600080fd5b50610160600160a060020a0360048035821691602480359081019201359060443516606435608435611fde565b3480156105c157600080fd5b5061016060048035600160a060020a0316906024803590810191013560443561213f565b3480156105f157600080fd5b50610160600160a060020a0360048035821691602480359081019201359060443516606435608435612181565b34801561062a57600080fd5b50610160600160a060020a0360043581169060243581169060443516606435612202565b34801561065a57600080fd5b50610160600160a060020a0360043516612358565b34801561067b57600080fd5b5061016060048035600160a060020a0316906024803590810191013560443561237b565b604080516064356004818101356020818102858101820190965281855261016095600160a060020a0384358116966024803597604435909316963696909560849593949092019290918291908501908490808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506124a29650505050505050565b60008054600160a060020a031633146107cd57600080fd5b6040805160e060020a6370a082310281523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561081857600080fd5b505af115801561082c573d6000803e3d6000fd5b505050506040513d602081101561084257600080fd5b505160005490915061086790600160a060020a0384811691168363ffffffff61302e16565b5050565b83600160a060020a031663f3898a9784848460016040518563ffffffff1660e060020a02815260040180806020018481526020018381526020018281038252868682818152602001925060200280828437820191505095505050505050602060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050506040513d602081101561090c57600080fd5b505050505050565b60006109378261092b30318663ffffffff6130cd16565b9063ffffffff6130fc16565b905085600160a060020a031663f3898a978287878560016040518663ffffffff1660e060020a028152600401808060200184815260200183815260200182810382528686828181526020019250602002808284378201915050955050505050506020604051808303818588803b1580156109b057600080fd5b505af11580156109c4573d6000803e3d6000fd5b50505050506040513d60208110156109db57600080fd5b5050505050505050565b6040805160e160020a636eb1769f028152306004820152600160a060020a03878116602483015291519184169163dd62ed3e916044808201926020929091908290030181600087803b158015610a3a57600080fd5b505af1158015610a4e573d6000803e3d6000fd5b505050506040513d6020811015610a6457600080fd5b505115610a8857610a86600160a060020a03831686600063ffffffff61311116565b505b610aa2600160a060020a038316868363ffffffff61311116565b5084600160a060020a03168484604051808383808284378201915050925050506000604051808303816000865af19150501515610ade57600080fd5b5050505050565b6000610b848261092b85888886818110610afb57fe5b6040805160e060020a6370a08231028152306004820152905160209283029490940135600160a060020a0316936370a082319350602480830193928290030181600087803b158015610b4c57600080fd5b505af1158015610b60573d6000803e3d6000fd5b505050506040513d6020811015610b7657600080fd5b50519063ffffffff6130cd16565b905084846000818110610b9357fe5b6040805160e160020a636eb1769f028152306004820152600160a060020a038b811660248301529151602093840295909501359091169363dd62ed3e9350604480830193928290030181600087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b505050506040513d6020811015610c1857600080fd5b50511515610c5e57610c5c8660001987876000818110610c3457fe5b90506020020135600160a060020a0316600160a060020a03166131119092919063ffffffff16565b505b85600160a060020a031663c7ba24bc86868460016040518563ffffffff1660e060020a02815260040180806020018481526020018381526020018281038252868682818152602001925060200280828437820191505095505050505050602060405180830381600087803b158015610cd557600080fd5b505af1158015610ce9573d6000803e3d6000fd5b505050506040513d60208110156109db57600080fd5b610d39848285856000818110610d1157fe5b90506020020135600160a060020a0316600160a060020a03166131d59092919063ffffffff16565b5083600160a060020a031663f3898a9784848460016040518563ffffffff1660e060020a02815260040180806020018481526020018381526020018281038252868682818152602001925060200280828437820191505095505050505050602060405180830381600087803b1580156108e257600080fd5b6000610e168261092b8587600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610b4c57600080fd5b905083600160a060020a0316632e1a7d4d826040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015610e6157600080fd5b505af11580156109db573d6000803e3d6000fd5b6000610e8b8261092b85888886818110610afb57fe5b9050610e9f868287876000818110610d1157fe5b5085600160a060020a031663f3898a9786868460016040518563ffffffff1660e060020a02815260040180806020018481526020018381526020018281038252868682818152602001925060200280828437820191505095505050505050602060405180830381600087803b158015610cd557600080fd5b60006060600080610f288686613289565b86600160a060020a031663a64ed8ba6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f6657600080fd5b505af1158015610f7a573d6000803e3d6000fd5b505050506040513d6020811015610f9057600080fd5b5051604080518281526020808402820101909152909450848015610fbe578160200160208202803883390190505b509250600091505b838210156111845786600160a060020a0316634f64b2be836040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b15801561101757600080fd5b505af115801561102b573d6000803e3d6000fd5b505050506040513d602081101561104157600080fd5b50516040805160e060020a6370a082310281523060048201529051919250600160a060020a038316916370a08231916024808201926020929091908290030181600087803b15801561109257600080fd5b505af11580156110a6573d6000803e3d6000fd5b505050506040513d60208110156110bc57600080fd5b505183518490849081106110cc57fe5b60209081029091018101919091526040805160e160020a636eb1769f028152306004820152600160a060020a038a8116602483015291519184169263dd62ed3e926044808401938290030181600087803b15801561112957600080fd5b505af115801561113d573d6000803e3d6000fd5b505050506040513d602081101561115357600080fd5b5051151561117957611177600160a060020a0382168860001963ffffffff61311116565b505b600190910190610fc6565b600160a060020a0387166322393ef4336111a6346103e863ffffffff6130cd16565b60405160e060020a63ffffffff8516028152600160a060020a03831660048201908152602482018390526060604483019081528951606484015289518a93608401906020808601910280838360005b8381101561120d5781810151838201526020016111f5565b50505050905001945050505050600060405180830381600087803b15801561123457600080fd5b505af1158015611248573d6000803e3d6000fd5b5050506000303111159050611286576040513390303180156108fc02916000818181858888f19350505050158015611284573d6000803e3d6000fd5b505b86600160a060020a031663a64ed8ba6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156112c457600080fd5b505af11580156112d8573d6000803e3d6000fd5b505050506040513d60208110156112ee57600080fd5b505191505b60008211156114985786600160a060020a0316634f64b2be600184036040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b15801561134857600080fd5b505af115801561135c573d6000803e3d6000fd5b505050506040513d602081101561137257600080fd5b50516040805160e060020a6370a082310281523060048201529051919250600091600160a060020a038416916370a0823191602480830192602092919082900301818787803b1580156113c457600080fd5b505af11580156113d8573d6000803e3d6000fd5b505050506040513d60208110156113ee57600080fd5b5051111561148c576040805160e060020a6370a08231028152306004820152905161148a913391600160a060020a038516916370a082319160248083019260209291908290030181600087803b15801561144757600080fd5b505af115801561145b573d6000803e3d6000fd5b505050506040513d602081101561147157600080fd5b5051600160a060020a038416919063ffffffff6131d516565b505b600019909101906112f3565b50505050505050565b600054600160a060020a031633146114b857600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60006115248261092b30318663ffffffff6130cd16565b905085600160a060020a03168186866040518083838082843782019150509250505060006040518083038185875af192505050151561090c57600080fd5b83600160a060020a031663f3898a978285858560016040518663ffffffff1660e060020a028152600401808060200184815260200183815260200182810382528686828181526020019250602002808284378201915050955050505050506020604051808303818588803b1580156115d957600080fd5b505af11580156115ed573d6000803e3d6000fd5b50505050506040513d602081101561090c57600080fd5b600061161b8261092b30318663ffffffff6130cd16565b604080517fcb3c28c7000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301526024820184905287811660448301523060648301527f80000000000000000000000000000000000000000000000000000000000000006084830152600060a4830181905260c483015291519293509088169163cb3c28c791849160e480830192602092919082900301818588803b1580156109b057600080fd5b600054600160a060020a031681565b60008060008060006116ed8787613289565b88600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561172b57600080fd5b505af115801561173f573d6000803e3d6000fd5b505050506040513d602081101561175557600080fd5b5051604080517fa64ed8ba00000000000000000000000000000000000000000000000000000000815290519196506000199550600160a060020a038b169163a64ed8ba916004808201926020929091908290030181600087803b1580156117bb57600080fd5b505af11580156117cf573d6000803e3d6000fd5b505050506040513d60208110156117e557600080fd5b505192505b6000831115611a405788600160a060020a0316634f64b2be600185036040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b15801561183f57600080fd5b505af1158015611853573d6000803e3d6000fd5b505050506040513d602081101561186957600080fd5b50516040805160e160020a636eb1769f028152306004820152600160a060020a038c8116602483015291519294509084169163dd62ed3e916044808201926020929091908290030181600087803b1580156118c357600080fd5b505af11580156118d7573d6000803e3d6000fd5b505050506040513d60208110156118ed57600080fd5b5051151561191357611911600160a060020a0383168a60001963ffffffff61311116565b505b611a2682600160a060020a03166370a082318b6040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b15801561197157600080fd5b505af1158015611985573d6000803e3d6000fd5b505050506040513d602081101561199b57600080fd5b50516040805160e060020a6370a08231028152306004820152905161092b91600160a060020a038716916370a08231916024808201926020929091908290030181600087803b1580156119ed57600080fd5b505af1158015611a01573d6000803e3d6000fd5b505050506040513d6020811015611a1757600080fd5b5051889063ffffffff6130cd16565b905083811015611a34578093505b600019909201916117ea565b87841015611a98576040805160e560020a62461bcd02815260206004820152601c60248201527f6275793a2072657475726e2076616c756520697320746f6f206c6f7700000000604482015290519081900360640190fd5b604080517feba3cdfe000000000000000000000000000000000000000000000000000000008152336004820152602481018690529051600160a060020a038b169163eba3cdfe91604480830192600092919082900301818387803b158015611aff57600080fd5b505af1158015611b13573d6000803e3d6000fd5b5050506000303111159050611b51576040513390303180156108fc02916000818181858888f19350505050158015611b4f573d6000803e3d6000fd5b505b88600160a060020a031663a64ed8ba6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611b8f57600080fd5b505af1158015611ba3573d6000803e3d6000fd5b505050506040513d6020811015611bb957600080fd5b505192505b6000831115611d635788600160a060020a0316634f64b2be600185036040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b158015611c1357600080fd5b505af1158015611c27573d6000803e3d6000fd5b505050506040513d6020811015611c3d57600080fd5b50516040805160e060020a6370a082310281523060048201529051919350600091600160a060020a038516916370a0823191602480830192602092919082900301818787803b158015611c8f57600080fd5b505af1158015611ca3573d6000803e3d6000fd5b505050506040513d6020811015611cb957600080fd5b50511115611d57576040805160e060020a6370a082310281523060048201529051611d55913391600160a060020a038616916370a082319160248083019260209291908290030181600087803b158015611d1257600080fd5b505af1158015611d26573d6000803e3d6000fd5b505050506040513d6020811015611d3c57600080fd5b5051600160a060020a038516919063ffffffff6131d516565b505b60001990920191611bbe565b505050505050505050565b610aa2600160a060020a038316868363ffffffff6131d516565b6000611e088261092b85888886818110611d9e57fe5b90506020020135600160a060020a0316600160a060020a03166370a082318b6040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610b4c57600080fd5b905085600160a060020a031663f3898a9786868460016040518563ffffffff1660e060020a02815260040180806020018481526020018381526020018281038252868682818152602001925060200280828437820191505095505050505050602060405180830381600087803b158015610cd557600080fd5b81600160a060020a0316632e1a7d4d826040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015611eca57600080fd5b505af115801561090c573d6000803e3d6000fd5b6000611f438261092b8588600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610b4c57600080fd5b604080517fdc3193f9000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152888116602483015287166044820152606481018390529051919250309163dc3193f99160848082019260009290919082900301818387803b158015611fbe57600080fd5b505af1158015611fd2573d6000803e3d6000fd5b50505050505050505050565b60006120438261092b8587600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610b4c57600080fd5b6040805160e160020a636eb1769f028152306004820152600160a060020a038a8116602483015291519293509086169163dd62ed3e916044808201926020929091908290030181600087803b15801561209b57600080fd5b505af11580156120af573d6000803e3d6000fd5b505050506040513d60208110156120c557600080fd5b5051156120e9576120e7600160a060020a03851688600063ffffffff61311116565b505b612103600160a060020a038516888363ffffffff61311116565b5086600160a060020a03168686604051808383808284378201915050925050506000604051808303816000865af1915050151561149857600080fd5b83600160a060020a03168184846040518083838082843782019150509250505060006040518083038185875af192505050151561217b57600080fd5b50505050565b60006121e68261092b8587600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610b4c57600080fd5b9050612103600160a060020a038516888363ffffffff6131d516565b6040805160e160020a636eb1769f028152306004820152600160a060020a03868116602483015291519185169163dd62ed3e916044808201926020929091908290030181600087803b15801561225757600080fd5b505af115801561226b573d6000803e3d6000fd5b505050506040513d602081101561228157600080fd5b505115156122a7576122a5600160a060020a0384168560001963ffffffff61311116565b505b604080517fcb3c28c7000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301526024820184905284811660448301523060648301527f80000000000000000000000000000000000000000000000000000000000000006084830152600060a4830181905260c4830181905292519087169263cb3c28c79260e480820193602093909283900390910190829087803b1580156108e257600080fd5b600054600160a060020a0316331461236f57600080fd5b61237881613303565b50565b8282600081811061238857fe5b6040805160e160020a636eb1769f028152306004820152600160a060020a0389811660248301529151602093840295909501359091169363dd62ed3e9350604480830193928290030181600087803b1580156123e357600080fd5b505af11580156123f7573d6000803e3d6000fd5b505050506040513d602081101561240d57600080fd5b5051151561242b576124298460001985856000818110610c3457fe5b505b83600160a060020a031663c7ba24bc84848460016040518563ffffffff1660e060020a02815260040180806020018481526020018381526020018281038252868682818152602001925060200280828437820191505095505050505050602060405180830381600087803b1580156108e257600080fd5b6000606060008060008089516001018851141515612530576040805160e560020a62461bcd02815260206004820152603a60248201527f6275793a205f6461746173496e64657865732073686f756c642073746172742060448201527f77697468203020616e6420656e642077697468204c454e475448000000000000606482015290519081900360840190fd5b89518751146125af576040805160e560020a62461bcd02815260206004820152603660248201527f6275793a205f76616c7565732073686f756c642068617665207468652073616d60448201527f65206c656e677468206173205f65786368616e67657300000000000000000000606482015290519081900360840190fd5b600095505b8951861015612a635787868151811015156125cb57fe5b9060200190602002015188876001018151811015156125e657fe5b90602001906020020151036040519080825280601f01601f19166020018201604052801561261e578160200160208202803883390190505b509450878681518110151561262f57fe5b9060200190602002015193505b878660010181518110151561264d57fe5b9060200190602002015184101561271957888481518110151561266c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028589888151811015156126c657fe5b9060200190602002015186038151811015156126de57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060019093019261263c565b600160a060020a038b16158015906127485750868681518110151561273a57fe5b906020019060200201516000145b15612936578a600160a060020a031663dd62ed3e308c8981518110151561276b57fe5b60209081029091018101516040805160e060020a63ffffffff8716028152600160a060020a039485166004820152939091166024840152516044808401938290030181600087803b1580156127bf57600080fd5b505af11580156127d3573d6000803e3d6000fd5b505050506040513d60208110156127e957600080fd5b50511515612827576128258a8781518110151561280257fe5b60209081029091010151600160a060020a038d169060001963ffffffff61311116565b505b898681518110151561283557fe5b90602001906020020151600160a060020a03168560405180828051906020019080838360005b8381101561287357818101518382015260200161285b565b50505050905090810190601f1680156128a05780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af19150501515612931576040805160e560020a62461bcd02815260206004820152602360248201527f6275793a2065786368616e6765206172626974726172792063616c6c2066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b612a58565b898681518110151561294457fe5b90602001906020020151600160a060020a0316878781518110151561296557fe5b906020019060200201518660405180828051906020019080838360005b8381101561299a578181015183820152602001612982565b50505050905090810190601f1680156129c75780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515612a58576040805160e560020a62461bcd02815260206004820152602360248201527f6275793a2065786368616e6765206172626974726172792063616c6c2066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6001909501946125b4565b8c600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015612aa157600080fd5b505af1158015612ab5573d6000803e3d6000fd5b505050506040513d6020811015612acb57600080fd5b5051604080517fa64ed8ba00000000000000000000000000000000000000000000000000000000815290519195506000199450600160a060020a038f169163a64ed8ba916004808201926020929091908290030181600087803b158015612b3157600080fd5b505af1158015612b45573d6000803e3d6000fd5b505050506040513d6020811015612b5b57600080fd5b505195505b6000861115612de4578c600160a060020a0316634f64b2be600188036040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b158015612bb557600080fd5b505af1158015612bc9573d6000803e3d6000fd5b505050506040513d6020811015612bdf57600080fd5b8101908080519060200190929190505050915081600160a060020a031663dd62ed3e308f6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182600160a060020a0316600160a060020a0316815260200192505050602060405180830381600087803b158015612c6757600080fd5b505af1158015612c7b573d6000803e3d6000fd5b505050506040513d6020811015612c9157600080fd5b50511515612cb757612cb5600160a060020a0383168e60001963ffffffff61311116565b505b612dca82600160a060020a03166370a082318f6040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015612d1557600080fd5b505af1158015612d29573d6000803e3d6000fd5b505050506040513d6020811015612d3f57600080fd5b50516040805160e060020a6370a08231028152306004820152905161092b91600160a060020a038716916370a08231916024808201926020929091908290030181600087803b158015612d9157600080fd5b505af1158015612da5573d6000803e3d6000fd5b505050506040513d6020811015612dbb57600080fd5b5051879063ffffffff6130cd16565b905082811015612dd8578092505b60001990950194612b60565b8b831015612e3c576040805160e560020a62461bcd02815260206004820152601c60248201527f6275793a2072657475726e2076616c756520697320746f6f206c6f7700000000604482015290519081900360640190fd5b604080517feba3cdfe000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a038f169163eba3cdfe91604480830192600092919082900301818387803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b5050506000303111159050612ef5576040513390303180156108fc02916000818181858888f19350505050158015612ef3573d6000803e3d6000fd5b505b600160a060020a038b1615801590612f8457506040805160e060020a6370a082310281523060048201529051600091600160a060020a038e16916370a082319160248082019260209290919082900301818787803b158015612f5657600080fd5b505af1158015612f6a573d6000803e3d6000fd5b505050506040513d6020811015612f8057600080fd5b5051115b1561301f576040805160e060020a6370a08231028152306004820152905161301d913391600160a060020a038f16916370a082319160248083019260209291908290030181600087803b158015612fda57600080fd5b505af1158015612fee573d6000803e3d6000fd5b505050506040513d602081101561300457600080fd5b5051600160a060020a038e16919063ffffffff6131d516565b505b50505050505050505050505050565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561309157600080fd5b505af11580156130a5573d6000803e3d6000fd5b505050506040513d60208110156130bb57600080fd5b505115156130c857600080fd5b505050565b60008215156130de575060006130f6565b508181028183828115156130ee57fe5b04146130f657fe5b92915050565b6000818381151561310957fe5b049392505050565b600061311c84613380565b151561312757600080fd5b83600160a060020a031660405180807f617070726f766528616464726573732c75696e743235362900000000000000008152506018019050604051809103902060e060020a900484846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a03168152602001828152602001925050506000604051808303816000875af19250505015156131c557600080fd5b6131cd613388565b949350505050565b60006131e084613380565b15156131eb57600080fd5b83600160a060020a031660405180807f7472616e7366657228616464726573732c75696e7432353629000000000000008152506019019050604051809103902060e060020a900484846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a03168152602001828152602001925050506000604051808303816000875af19250505015156131c557600080fd5b60005b60018251038110156130c8576132f03060008585858151811015156132ad57fe5b9060200190602002015186868151811015156132c557fe5b9060200190602002015187876001018151811015156132e057fe5b90602001906020020151036133b7565b15156132fb57600080fd5b60010161328c565b600160a060020a038116151561331857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b1190565b60003d801561339e57602081146133a757600080fd5b600191506133b3565b60206000803e60005191505b5090565b600060405160208501600082858784018a8c6187965a03f1989750505050505050505600a165627a7a72305820a52dda8776ba8c333f2029fd37701055c4e42440fd18427d0f848ce5343c52620029
Deployed Bytecode
0x60806040526004361061013a5763ffffffff60e060020a60003504166317ffc320811461013f5780631f91695d146101625780632545f8eb146101925780633669f27b146101c557806338085649146101fb57806340f0b0f11461022e5780635499716a1461025e578063618e8ad3146102855780636babf513146102b8578063715018a61461034b578063846f11851461036057806386b0e00a146103935780638721fbe9146103c35780638da5cb5b146103f657806394480a69146104275780639a509aff146104bc5780639d99ce04146104f2578063bd3e904f14610525578063bed31bc714610549578063d04c6c181461057c578063d2e9236b146105b5578063d91bd1b0146105e5578063dc3193f91461061e578063f2fde38b1461064e578063f8b2cb071461066f578063fc6719151461069f575b600080fd5b34801561014b57600080fd5b50610160600160a060020a03600435166107b5565b005b34801561016e57600080fd5b5061016060048035600160a060020a0316906024803590810191013560443561086b565b34801561019e57600080fd5b5061016060048035600160a060020a03169060248035908101910135604435606435610914565b3480156101d157600080fd5b50610160600160a060020a03600480358216916024803590810192013590604435166064356109e5565b34801561020757600080fd5b5061016060048035600160a060020a03169060248035908101910135604435606435610ae5565b34801561023a57600080fd5b5061016060048035600160a060020a03169060248035908101910135604435610cff565b34801561026a57600080fd5b50610160600160a060020a0360043516602435604435610db1565b34801561029157600080fd5b5061016060048035600160a060020a03169060248035908101910135604435606435610e75565b60408051602060046024803582810135601f8101859004850286018501909652858552610160958335600160a060020a0316953695604494919390910191908190840183828082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610f179650505050505050565b34801561035757600080fd5b506101606114a1565b34801561036c57600080fd5b5061016060048035600160a060020a0316906024803590810191013560443560643561150d565b34801561039f57600080fd5b5061016060048035600160a060020a03169060248035908101910135604435611562565b3480156103cf57600080fd5b50610160600160a060020a0360043581169060243581169060443516606435608435611604565b34801561040257600080fd5b5061040b6116cc565b60408051600160a060020a039092168252519081900360200190f35b604080516020600460443581810135601f8101849004840285018401909552848452610160948235600160a060020a0316946024803595369594606494920191908190840183828082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506116db9650505050505050565b3480156104c857600080fd5b50610160600160a060020a0360048035821691602480359081019201359060443516606435611d6e565b3480156104fe57600080fd5b5061016060048035600160a060020a03169060248035908101910135604435606435611d88565b34801561053157600080fd5b50610160600160a060020a0360043516602435611e81565b34801561055557600080fd5b50610160600160a060020a0360043581169060243581169060443516606435608435611ede565b34801561058857600080fd5b50610160600160a060020a0360048035821691602480359081019201359060443516606435608435611fde565b3480156105c157600080fd5b5061016060048035600160a060020a0316906024803590810191013560443561213f565b3480156105f157600080fd5b50610160600160a060020a0360048035821691602480359081019201359060443516606435608435612181565b34801561062a57600080fd5b50610160600160a060020a0360043581169060243581169060443516606435612202565b34801561065a57600080fd5b50610160600160a060020a0360043516612358565b34801561067b57600080fd5b5061016060048035600160a060020a0316906024803590810191013560443561237b565b604080516064356004818101356020818102858101820190965281855261016095600160a060020a0384358116966024803597604435909316963696909560849593949092019290918291908501908490808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506124a29650505050505050565b60008054600160a060020a031633146107cd57600080fd5b6040805160e060020a6370a082310281523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561081857600080fd5b505af115801561082c573d6000803e3d6000fd5b505050506040513d602081101561084257600080fd5b505160005490915061086790600160a060020a0384811691168363ffffffff61302e16565b5050565b83600160a060020a031663f3898a9784848460016040518563ffffffff1660e060020a02815260040180806020018481526020018381526020018281038252868682818152602001925060200280828437820191505095505050505050602060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050506040513d602081101561090c57600080fd5b505050505050565b60006109378261092b30318663ffffffff6130cd16565b9063ffffffff6130fc16565b905085600160a060020a031663f3898a978287878560016040518663ffffffff1660e060020a028152600401808060200184815260200183815260200182810382528686828181526020019250602002808284378201915050955050505050506020604051808303818588803b1580156109b057600080fd5b505af11580156109c4573d6000803e3d6000fd5b50505050506040513d60208110156109db57600080fd5b5050505050505050565b6040805160e160020a636eb1769f028152306004820152600160a060020a03878116602483015291519184169163dd62ed3e916044808201926020929091908290030181600087803b158015610a3a57600080fd5b505af1158015610a4e573d6000803e3d6000fd5b505050506040513d6020811015610a6457600080fd5b505115610a8857610a86600160a060020a03831686600063ffffffff61311116565b505b610aa2600160a060020a038316868363ffffffff61311116565b5084600160a060020a03168484604051808383808284378201915050925050506000604051808303816000865af19150501515610ade57600080fd5b5050505050565b6000610b848261092b85888886818110610afb57fe5b6040805160e060020a6370a08231028152306004820152905160209283029490940135600160a060020a0316936370a082319350602480830193928290030181600087803b158015610b4c57600080fd5b505af1158015610b60573d6000803e3d6000fd5b505050506040513d6020811015610b7657600080fd5b50519063ffffffff6130cd16565b905084846000818110610b9357fe5b6040805160e160020a636eb1769f028152306004820152600160a060020a038b811660248301529151602093840295909501359091169363dd62ed3e9350604480830193928290030181600087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b505050506040513d6020811015610c1857600080fd5b50511515610c5e57610c5c8660001987876000818110610c3457fe5b90506020020135600160a060020a0316600160a060020a03166131119092919063ffffffff16565b505b85600160a060020a031663c7ba24bc86868460016040518563ffffffff1660e060020a02815260040180806020018481526020018381526020018281038252868682818152602001925060200280828437820191505095505050505050602060405180830381600087803b158015610cd557600080fd5b505af1158015610ce9573d6000803e3d6000fd5b505050506040513d60208110156109db57600080fd5b610d39848285856000818110610d1157fe5b90506020020135600160a060020a0316600160a060020a03166131d59092919063ffffffff16565b5083600160a060020a031663f3898a9784848460016040518563ffffffff1660e060020a02815260040180806020018481526020018381526020018281038252868682818152602001925060200280828437820191505095505050505050602060405180830381600087803b1580156108e257600080fd5b6000610e168261092b8587600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610b4c57600080fd5b905083600160a060020a0316632e1a7d4d826040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015610e6157600080fd5b505af11580156109db573d6000803e3d6000fd5b6000610e8b8261092b85888886818110610afb57fe5b9050610e9f868287876000818110610d1157fe5b5085600160a060020a031663f3898a9786868460016040518563ffffffff1660e060020a02815260040180806020018481526020018381526020018281038252868682818152602001925060200280828437820191505095505050505050602060405180830381600087803b158015610cd557600080fd5b60006060600080610f288686613289565b86600160a060020a031663a64ed8ba6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f6657600080fd5b505af1158015610f7a573d6000803e3d6000fd5b505050506040513d6020811015610f9057600080fd5b5051604080518281526020808402820101909152909450848015610fbe578160200160208202803883390190505b509250600091505b838210156111845786600160a060020a0316634f64b2be836040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b15801561101757600080fd5b505af115801561102b573d6000803e3d6000fd5b505050506040513d602081101561104157600080fd5b50516040805160e060020a6370a082310281523060048201529051919250600160a060020a038316916370a08231916024808201926020929091908290030181600087803b15801561109257600080fd5b505af11580156110a6573d6000803e3d6000fd5b505050506040513d60208110156110bc57600080fd5b505183518490849081106110cc57fe5b60209081029091018101919091526040805160e160020a636eb1769f028152306004820152600160a060020a038a8116602483015291519184169263dd62ed3e926044808401938290030181600087803b15801561112957600080fd5b505af115801561113d573d6000803e3d6000fd5b505050506040513d602081101561115357600080fd5b5051151561117957611177600160a060020a0382168860001963ffffffff61311116565b505b600190910190610fc6565b600160a060020a0387166322393ef4336111a6346103e863ffffffff6130cd16565b60405160e060020a63ffffffff8516028152600160a060020a03831660048201908152602482018390526060604483019081528951606484015289518a93608401906020808601910280838360005b8381101561120d5781810151838201526020016111f5565b50505050905001945050505050600060405180830381600087803b15801561123457600080fd5b505af1158015611248573d6000803e3d6000fd5b5050506000303111159050611286576040513390303180156108fc02916000818181858888f19350505050158015611284573d6000803e3d6000fd5b505b86600160a060020a031663a64ed8ba6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156112c457600080fd5b505af11580156112d8573d6000803e3d6000fd5b505050506040513d60208110156112ee57600080fd5b505191505b60008211156114985786600160a060020a0316634f64b2be600184036040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b15801561134857600080fd5b505af115801561135c573d6000803e3d6000fd5b505050506040513d602081101561137257600080fd5b50516040805160e060020a6370a082310281523060048201529051919250600091600160a060020a038416916370a0823191602480830192602092919082900301818787803b1580156113c457600080fd5b505af11580156113d8573d6000803e3d6000fd5b505050506040513d60208110156113ee57600080fd5b5051111561148c576040805160e060020a6370a08231028152306004820152905161148a913391600160a060020a038516916370a082319160248083019260209291908290030181600087803b15801561144757600080fd5b505af115801561145b573d6000803e3d6000fd5b505050506040513d602081101561147157600080fd5b5051600160a060020a038416919063ffffffff6131d516565b505b600019909101906112f3565b50505050505050565b600054600160a060020a031633146114b857600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60006115248261092b30318663ffffffff6130cd16565b905085600160a060020a03168186866040518083838082843782019150509250505060006040518083038185875af192505050151561090c57600080fd5b83600160a060020a031663f3898a978285858560016040518663ffffffff1660e060020a028152600401808060200184815260200183815260200182810382528686828181526020019250602002808284378201915050955050505050506020604051808303818588803b1580156115d957600080fd5b505af11580156115ed573d6000803e3d6000fd5b50505050506040513d602081101561090c57600080fd5b600061161b8261092b30318663ffffffff6130cd16565b604080517fcb3c28c7000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301526024820184905287811660448301523060648301527f80000000000000000000000000000000000000000000000000000000000000006084830152600060a4830181905260c483015291519293509088169163cb3c28c791849160e480830192602092919082900301818588803b1580156109b057600080fd5b600054600160a060020a031681565b60008060008060006116ed8787613289565b88600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561172b57600080fd5b505af115801561173f573d6000803e3d6000fd5b505050506040513d602081101561175557600080fd5b5051604080517fa64ed8ba00000000000000000000000000000000000000000000000000000000815290519196506000199550600160a060020a038b169163a64ed8ba916004808201926020929091908290030181600087803b1580156117bb57600080fd5b505af11580156117cf573d6000803e3d6000fd5b505050506040513d60208110156117e557600080fd5b505192505b6000831115611a405788600160a060020a0316634f64b2be600185036040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b15801561183f57600080fd5b505af1158015611853573d6000803e3d6000fd5b505050506040513d602081101561186957600080fd5b50516040805160e160020a636eb1769f028152306004820152600160a060020a038c8116602483015291519294509084169163dd62ed3e916044808201926020929091908290030181600087803b1580156118c357600080fd5b505af11580156118d7573d6000803e3d6000fd5b505050506040513d60208110156118ed57600080fd5b5051151561191357611911600160a060020a0383168a60001963ffffffff61311116565b505b611a2682600160a060020a03166370a082318b6040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b15801561197157600080fd5b505af1158015611985573d6000803e3d6000fd5b505050506040513d602081101561199b57600080fd5b50516040805160e060020a6370a08231028152306004820152905161092b91600160a060020a038716916370a08231916024808201926020929091908290030181600087803b1580156119ed57600080fd5b505af1158015611a01573d6000803e3d6000fd5b505050506040513d6020811015611a1757600080fd5b5051889063ffffffff6130cd16565b905083811015611a34578093505b600019909201916117ea565b87841015611a98576040805160e560020a62461bcd02815260206004820152601c60248201527f6275793a2072657475726e2076616c756520697320746f6f206c6f7700000000604482015290519081900360640190fd5b604080517feba3cdfe000000000000000000000000000000000000000000000000000000008152336004820152602481018690529051600160a060020a038b169163eba3cdfe91604480830192600092919082900301818387803b158015611aff57600080fd5b505af1158015611b13573d6000803e3d6000fd5b5050506000303111159050611b51576040513390303180156108fc02916000818181858888f19350505050158015611b4f573d6000803e3d6000fd5b505b88600160a060020a031663a64ed8ba6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611b8f57600080fd5b505af1158015611ba3573d6000803e3d6000fd5b505050506040513d6020811015611bb957600080fd5b505192505b6000831115611d635788600160a060020a0316634f64b2be600185036040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b158015611c1357600080fd5b505af1158015611c27573d6000803e3d6000fd5b505050506040513d6020811015611c3d57600080fd5b50516040805160e060020a6370a082310281523060048201529051919350600091600160a060020a038516916370a0823191602480830192602092919082900301818787803b158015611c8f57600080fd5b505af1158015611ca3573d6000803e3d6000fd5b505050506040513d6020811015611cb957600080fd5b50511115611d57576040805160e060020a6370a082310281523060048201529051611d55913391600160a060020a038616916370a082319160248083019260209291908290030181600087803b158015611d1257600080fd5b505af1158015611d26573d6000803e3d6000fd5b505050506040513d6020811015611d3c57600080fd5b5051600160a060020a038516919063ffffffff6131d516565b505b60001990920191611bbe565b505050505050505050565b610aa2600160a060020a038316868363ffffffff6131d516565b6000611e088261092b85888886818110611d9e57fe5b90506020020135600160a060020a0316600160a060020a03166370a082318b6040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610b4c57600080fd5b905085600160a060020a031663f3898a9786868460016040518563ffffffff1660e060020a02815260040180806020018481526020018381526020018281038252868682818152602001925060200280828437820191505095505050505050602060405180830381600087803b158015610cd557600080fd5b81600160a060020a0316632e1a7d4d826040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015611eca57600080fd5b505af115801561090c573d6000803e3d6000fd5b6000611f438261092b8588600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610b4c57600080fd5b604080517fdc3193f9000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152888116602483015287166044820152606481018390529051919250309163dc3193f99160848082019260009290919082900301818387803b158015611fbe57600080fd5b505af1158015611fd2573d6000803e3d6000fd5b50505050505050505050565b60006120438261092b8587600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610b4c57600080fd5b6040805160e160020a636eb1769f028152306004820152600160a060020a038a8116602483015291519293509086169163dd62ed3e916044808201926020929091908290030181600087803b15801561209b57600080fd5b505af11580156120af573d6000803e3d6000fd5b505050506040513d60208110156120c557600080fd5b5051156120e9576120e7600160a060020a03851688600063ffffffff61311116565b505b612103600160a060020a038516888363ffffffff61311116565b5086600160a060020a03168686604051808383808284378201915050925050506000604051808303816000865af1915050151561149857600080fd5b83600160a060020a03168184846040518083838082843782019150509250505060006040518083038185875af192505050151561217b57600080fd5b50505050565b60006121e68261092b8587600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610b4c57600080fd5b9050612103600160a060020a038516888363ffffffff6131d516565b6040805160e160020a636eb1769f028152306004820152600160a060020a03868116602483015291519185169163dd62ed3e916044808201926020929091908290030181600087803b15801561225757600080fd5b505af115801561226b573d6000803e3d6000fd5b505050506040513d602081101561228157600080fd5b505115156122a7576122a5600160a060020a0384168560001963ffffffff61311116565b505b604080517fcb3c28c7000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301526024820184905284811660448301523060648301527f80000000000000000000000000000000000000000000000000000000000000006084830152600060a4830181905260c4830181905292519087169263cb3c28c79260e480820193602093909283900390910190829087803b1580156108e257600080fd5b600054600160a060020a0316331461236f57600080fd5b61237881613303565b50565b8282600081811061238857fe5b6040805160e160020a636eb1769f028152306004820152600160a060020a0389811660248301529151602093840295909501359091169363dd62ed3e9350604480830193928290030181600087803b1580156123e357600080fd5b505af11580156123f7573d6000803e3d6000fd5b505050506040513d602081101561240d57600080fd5b5051151561242b576124298460001985856000818110610c3457fe5b505b83600160a060020a031663c7ba24bc84848460016040518563ffffffff1660e060020a02815260040180806020018481526020018381526020018281038252868682818152602001925060200280828437820191505095505050505050602060405180830381600087803b1580156108e257600080fd5b6000606060008060008089516001018851141515612530576040805160e560020a62461bcd02815260206004820152603a60248201527f6275793a205f6461746173496e64657865732073686f756c642073746172742060448201527f77697468203020616e6420656e642077697468204c454e475448000000000000606482015290519081900360840190fd5b89518751146125af576040805160e560020a62461bcd02815260206004820152603660248201527f6275793a205f76616c7565732073686f756c642068617665207468652073616d60448201527f65206c656e677468206173205f65786368616e67657300000000000000000000606482015290519081900360840190fd5b600095505b8951861015612a635787868151811015156125cb57fe5b9060200190602002015188876001018151811015156125e657fe5b90602001906020020151036040519080825280601f01601f19166020018201604052801561261e578160200160208202803883390190505b509450878681518110151561262f57fe5b9060200190602002015193505b878660010181518110151561264d57fe5b9060200190602002015184101561271957888481518110151561266c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028589888151811015156126c657fe5b9060200190602002015186038151811015156126de57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060019093019261263c565b600160a060020a038b16158015906127485750868681518110151561273a57fe5b906020019060200201516000145b15612936578a600160a060020a031663dd62ed3e308c8981518110151561276b57fe5b60209081029091018101516040805160e060020a63ffffffff8716028152600160a060020a039485166004820152939091166024840152516044808401938290030181600087803b1580156127bf57600080fd5b505af11580156127d3573d6000803e3d6000fd5b505050506040513d60208110156127e957600080fd5b50511515612827576128258a8781518110151561280257fe5b60209081029091010151600160a060020a038d169060001963ffffffff61311116565b505b898681518110151561283557fe5b90602001906020020151600160a060020a03168560405180828051906020019080838360005b8381101561287357818101518382015260200161285b565b50505050905090810190601f1680156128a05780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af19150501515612931576040805160e560020a62461bcd02815260206004820152602360248201527f6275793a2065786368616e6765206172626974726172792063616c6c2066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b612a58565b898681518110151561294457fe5b90602001906020020151600160a060020a0316878781518110151561296557fe5b906020019060200201518660405180828051906020019080838360005b8381101561299a578181015183820152602001612982565b50505050905090810190601f1680156129c75780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515612a58576040805160e560020a62461bcd02815260206004820152602360248201527f6275793a2065786368616e6765206172626974726172792063616c6c2066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6001909501946125b4565b8c600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015612aa157600080fd5b505af1158015612ab5573d6000803e3d6000fd5b505050506040513d6020811015612acb57600080fd5b5051604080517fa64ed8ba00000000000000000000000000000000000000000000000000000000815290519195506000199450600160a060020a038f169163a64ed8ba916004808201926020929091908290030181600087803b158015612b3157600080fd5b505af1158015612b45573d6000803e3d6000fd5b505050506040513d6020811015612b5b57600080fd5b505195505b6000861115612de4578c600160a060020a0316634f64b2be600188036040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b158015612bb557600080fd5b505af1158015612bc9573d6000803e3d6000fd5b505050506040513d6020811015612bdf57600080fd5b8101908080519060200190929190505050915081600160a060020a031663dd62ed3e308f6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182600160a060020a0316600160a060020a0316815260200192505050602060405180830381600087803b158015612c6757600080fd5b505af1158015612c7b573d6000803e3d6000fd5b505050506040513d6020811015612c9157600080fd5b50511515612cb757612cb5600160a060020a0383168e60001963ffffffff61311116565b505b612dca82600160a060020a03166370a082318f6040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015612d1557600080fd5b505af1158015612d29573d6000803e3d6000fd5b505050506040513d6020811015612d3f57600080fd5b50516040805160e060020a6370a08231028152306004820152905161092b91600160a060020a038716916370a08231916024808201926020929091908290030181600087803b158015612d9157600080fd5b505af1158015612da5573d6000803e3d6000fd5b505050506040513d6020811015612dbb57600080fd5b5051879063ffffffff6130cd16565b905082811015612dd8578092505b60001990950194612b60565b8b831015612e3c576040805160e560020a62461bcd02815260206004820152601c60248201527f6275793a2072657475726e2076616c756520697320746f6f206c6f7700000000604482015290519081900360640190fd5b604080517feba3cdfe000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a038f169163eba3cdfe91604480830192600092919082900301818387803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b5050506000303111159050612ef5576040513390303180156108fc02916000818181858888f19350505050158015612ef3573d6000803e3d6000fd5b505b600160a060020a038b1615801590612f8457506040805160e060020a6370a082310281523060048201529051600091600160a060020a038e16916370a082319160248082019260209290919082900301818787803b158015612f5657600080fd5b505af1158015612f6a573d6000803e3d6000fd5b505050506040513d6020811015612f8057600080fd5b5051115b1561301f576040805160e060020a6370a08231028152306004820152905161301d913391600160a060020a038f16916370a082319160248083019260209291908290030181600087803b158015612fda57600080fd5b505af1158015612fee573d6000803e3d6000fd5b505050506040513d602081101561300457600080fd5b5051600160a060020a038e16919063ffffffff6131d516565b505b50505050505050505050505050565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561309157600080fd5b505af11580156130a5573d6000803e3d6000fd5b505050506040513d60208110156130bb57600080fd5b505115156130c857600080fd5b505050565b60008215156130de575060006130f6565b508181028183828115156130ee57fe5b04146130f657fe5b92915050565b6000818381151561310957fe5b049392505050565b600061311c84613380565b151561312757600080fd5b83600160a060020a031660405180807f617070726f766528616464726573732c75696e743235362900000000000000008152506018019050604051809103902060e060020a900484846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a03168152602001828152602001925050506000604051808303816000875af19250505015156131c557600080fd5b6131cd613388565b949350505050565b60006131e084613380565b15156131eb57600080fd5b83600160a060020a031660405180807f7472616e7366657228616464726573732c75696e7432353629000000000000008152506019019050604051809103902060e060020a900484846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a03168152602001828152602001925050506000604051808303816000875af19250505015156131c557600080fd5b60005b60018251038110156130c8576132f03060008585858151811015156132ad57fe5b9060200190602002015186868151811015156132c557fe5b9060200190602002015187876001018151811015156132e057fe5b90602001906020020151036133b7565b15156132fb57600080fd5b60010161328c565b600160a060020a038116151561331857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b1190565b60003d801561339e57602081146133a757600080fd5b600191506133b3565b60206000803e60005191505b5090565b600060405160208501600082858784018a8c6187965a03f1989750505050505050505600a165627a7a72305820a52dda8776ba8c333f2029fd37701055c4e42440fd18427d0f848ce5343c52620029
Swarm Source
bzzr://a52dda8776ba8c333f2029fd37701055c4e42440fd18427d0f848ce5343c5262
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.