More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 83 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Refill | 12500778 | 1414 days ago | IN | 0 ETH | 0.00719385 | ||||
Refill | 12500683 | 1414 days ago | IN | 0 ETH | 0.00520234 | ||||
Refill | 12499409 | 1415 days ago | IN | 0 ETH | 0.00778513 | ||||
Refill | 12499133 | 1415 days ago | IN | 0 ETH | 0.01005169 | ||||
Refill | 12497784 | 1415 days ago | IN | 0 ETH | 0.00783307 | ||||
Refill | 12497465 | 1415 days ago | IN | 0 ETH | 0.00876566 | ||||
Refill | 12497462 | 1415 days ago | IN | 0 ETH | 0.00867204 | ||||
Refill | 12497347 | 1415 days ago | IN | 0 ETH | 0.00921405 | ||||
Refill | 12497323 | 1415 days ago | IN | 0 ETH | 0.00827786 | ||||
Refill | 12495844 | 1415 days ago | IN | 0 ETH | 0.00852282 | ||||
Refill | 12494262 | 1415 days ago | IN | 0 ETH | 0.00522293 | ||||
Refill | 12493220 | 1416 days ago | IN | 0 ETH | 0.0082483 | ||||
Refill | 12492853 | 1416 days ago | IN | 0 ETH | 0.00837641 | ||||
Refill | 12492137 | 1416 days ago | IN | 0 ETH | 0.02483359 | ||||
Refill | 12492120 | 1416 days ago | IN | 0 ETH | 0.02423818 | ||||
Refill | 12492092 | 1416 days ago | IN | 0 ETH | 0.02197575 | ||||
Refill | 12491836 | 1416 days ago | IN | 0 ETH | 0.05597412 | ||||
Refill | 12491831 | 1416 days ago | IN | 0 ETH | 0.05666395 | ||||
Refill | 12491748 | 1416 days ago | IN | 0 ETH | 0.04774553 | ||||
Refill | 12491743 | 1416 days ago | IN | 0 ETH | 0.05015991 | ||||
Refill | 12491739 | 1416 days ago | IN | 0 ETH | 0.04779481 | ||||
Refill | 12491718 | 1416 days ago | IN | 0 ETH | 0.0368562 | ||||
Refill | 12491681 | 1416 days ago | IN | 0 ETH | 0.03981258 | ||||
Refill | 12491589 | 1416 days ago | IN | 0 ETH | 0.02710015 | ||||
Refill | 12491582 | 1416 days ago | IN | 0 ETH | 0.02483359 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
- | 12500778 | 1414 days ago | 4 ETH | ||||
- | 12500778 | 1414 days ago | 4 ETH | ||||
- | 12500683 | 1414 days ago | 4 ETH | ||||
- | 12500683 | 1414 days ago | 4 ETH | ||||
- | 12499409 | 1415 days ago | 4 ETH | ||||
- | 12499409 | 1415 days ago | 4 ETH | ||||
- | 12499133 | 1415 days ago | 4 ETH | ||||
- | 12499133 | 1415 days ago | 4 ETH | ||||
- | 12497784 | 1415 days ago | 4 ETH | ||||
- | 12497784 | 1415 days ago | 4 ETH | ||||
- | 12497465 | 1415 days ago | 4 ETH | ||||
- | 12497465 | 1415 days ago | 4 ETH | ||||
- | 12497462 | 1415 days ago | 4 ETH | ||||
- | 12497462 | 1415 days ago | 4 ETH | ||||
- | 12497347 | 1415 days ago | 4 ETH | ||||
- | 12497347 | 1415 days ago | 4 ETH | ||||
- | 12497323 | 1415 days ago | 4 ETH | ||||
- | 12497323 | 1415 days ago | 4 ETH | ||||
- | 12495844 | 1415 days ago | 4 ETH | ||||
- | 12495844 | 1415 days ago | 4 ETH | ||||
- | 12494262 | 1415 days ago | 4 ETH | ||||
- | 12494262 | 1415 days ago | 4 ETH | ||||
- | 12493220 | 1416 days ago | 4 ETH | ||||
- | 12493220 | 1416 days ago | 4 ETH | ||||
- | 12492853 | 1416 days ago | 4 ETH |
Loading...
Loading
Contract Name:
BotRefills
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-20 */ // SPDX-License-Identifier: MIT pragma solidity =0.7.6; abstract contract IDFSRegistry { function getAddr(bytes32 _id) public view virtual returns (address); function addNewContract( bytes32 _id, address _contractAddr, uint256 _waitPeriod ) public virtual; function startContractChange(bytes32 _id, address _newContractAddr) public virtual; function approveContractChange(bytes32 _id) public virtual; function cancelContractChange(bytes32 _id) public virtual; function changeWaitPeriod(bytes32 _id, uint256 _newWaitPeriod) public virtual; } interface IERC20 { function totalSupply() external view returns (uint256 supply); function balanceOf(address _owner) external view returns (uint256 balance); function transfer(address _to, uint256 _value) external returns (bool success); function transferFrom( address _from, address _to, uint256 _value ) external returns (bool success); function approve(address _spender, uint256 _value) external returns (bool success); function allowance(address _owner, address _spender) external view returns (uint256 remaining); function decimals() external view returns (uint256 digits); event Approval(address indexed _owner, address indexed _spender, uint256 _value); } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: weiValue}(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } /// @dev Edited so it always first approves 0 and then the value, because of non standard tokens function safeApprove( IERC20 token, address spender, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0)); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance) ); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).sub( value, "SafeERC20: decreased allowance below zero" ); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance) ); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall( data, "SafeERC20: low-level call failed" ); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } /// @title A stateful contract that holds and can change owner/admin contract AdminVault { address public owner; address public admin; constructor() { owner = msg.sender; admin = 0x25eFA336886C74eA8E282ac466BdCd0199f85BB9; } /// @notice Admin is able to change owner /// @param _owner Address of new owner function changeOwner(address _owner) public { require(admin == msg.sender, "msg.sender not admin"); owner = _owner; } /// @notice Admin is able to set new admin /// @param _admin Address of multisig that becomes new admin function changeAdmin(address _admin) public { require(admin == msg.sender, "msg.sender not admin"); admin = _admin; } } /// @title AdminAuth Handles owner/admin privileges over smart contracts contract AdminAuth { using SafeERC20 for IERC20; AdminVault public constant adminVault = AdminVault(0xCCf3d848e08b94478Ed8f46fFead3008faF581fD); modifier onlyOwner() { require(adminVault.owner() == msg.sender, "msg.sender not owner"); _; } modifier onlyAdmin() { require(adminVault.admin() == msg.sender, "msg.sender not admin"); _; } /// @notice withdraw stuck funds function withdrawStuckFunds(address _token, address _receiver, uint256 _amount) public onlyOwner { if (_token == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) { payable(_receiver).transfer(_amount); } else { IERC20(_token).safeTransfer(_receiver, _amount); } } /// @notice Destroy the contract function kill() public onlyAdmin { selfdestruct(payable(msg.sender)); } } abstract contract IUniswapRouter { function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external virtual returns (uint256[] memory amounts); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external virtual returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external virtual returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external virtual returns (uint256[] memory amounts); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external virtual returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable virtual returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external virtual returns (uint256 amountA, uint256 amountB); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) public pure virtual returns (uint256 amountB); function getAmountsOut(uint256 amountIn, address[] memory path) public view virtual returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] memory path) public view virtual returns (uint256[] memory amounts); } abstract contract IBotRegistry { function botList(address) public virtual view returns (bool); } abstract contract IWETH { function allowance(address, address) public virtual view returns (uint256); function balanceOf(address) public virtual view returns (uint256); function approve(address, uint256) public virtual; function transfer(address, uint256) public virtual returns (bool); function transferFrom( address, address, uint256 ) public virtual returns (bool); function deposit() public payable virtual; function withdraw(uint256) public virtual; } library TokenUtils { using SafeERC20 for IERC20; address public constant WETH_ADDR = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address public constant ETH_ADDR = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; function approveToken( address _tokenAddr, address _to, uint256 _amount ) internal { if (_tokenAddr == ETH_ADDR) return; if (IERC20(_tokenAddr).allowance(address(this), _to) < _amount) { IERC20(_tokenAddr).safeApprove(_to, _amount); } } function pullTokensIfNeeded( address _token, address _from, uint256 _amount ) internal returns (uint256) { // handle max uint amount if (_amount == type(uint256).max) { uint256 userAllowance = IERC20(_token).allowance(_from, address(this)); uint256 balance = getBalance(_token, _from); // pull max allowance amount if balance is bigger than allowance _amount = (balance > userAllowance) ? userAllowance : balance; } if (_from != address(0) && _from != address(this) && _token != ETH_ADDR && _amount != 0) { IERC20(_token).safeTransferFrom(_from, address(this), _amount); } return _amount; } function withdrawTokens( address _token, address _to, uint256 _amount ) internal returns (uint256) { if (_amount == type(uint256).max) { _amount = getBalance(_token, address(this)); } if (_to != address(0) && _to != address(this) && _amount != 0) { if (_token != ETH_ADDR) { IERC20(_token).safeTransfer(_to, _amount); } else { payable(_to).transfer(_amount); } } return _amount; } function depositWeth(uint256 _amount) internal { IWETH(WETH_ADDR).deposit{value: _amount}(); } function withdrawWeth(uint256 _amount) internal { IWETH(WETH_ADDR).withdraw(_amount); } function getBalance(address _tokenAddr, address _acc) internal view returns (uint256) { if (_tokenAddr == ETH_ADDR) { return _acc.balance; } else { return IERC20(_tokenAddr).balanceOf(_acc); } } function getTokenDecimals(address _token) internal view returns (uint256) { if (_token == ETH_ADDR) return 18; return IERC20(_token).decimals(); } } /// @title Contract used to refill tx sending bots when they are low on eth contract BotRefills is AdminAuth { using TokenUtils for address; address internal refillCaller = 0x33fDb79aFB4456B604f376A45A546e7ae700e880; address internal feeAddr = 0x76720aC2574631530eC8163e4085d6F98513fb27; address internal constant BOT_REGISTRY_ADDRESS = 0x637726f8b08a7ABE3aE3aCaB01A80E2d8ddeF77B; address internal constant DAI_ADDR = 0x6B175474E89094C44Da98b954EedeAC495271d0F; IUniswapRouter internal router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); function refill(uint _ethAmount, address _botAddress) public { require(msg.sender == refillCaller, "Wrong refill caller"); require(IBotRegistry(BOT_REGISTRY_ADDRESS).botList(_botAddress), "Not auth bot"); // check if we have enough weth to send uint wethBalance = IERC20(TokenUtils.WETH_ADDR).balanceOf(feeAddr); if (wethBalance >= _ethAmount) { IERC20(TokenUtils.WETH_ADDR).transferFrom(feeAddr, address(this), _ethAmount); TokenUtils.withdrawWeth(_ethAmount); payable(_botAddress).transfer(_ethAmount); } else { address[] memory path = new address[](2); path[0] = DAI_ADDR; path[1] = TokenUtils.WETH_ADDR; // get how much dai we need to convert uint daiAmount = getEth2Dai(_ethAmount); IERC20(DAI_ADDR).transferFrom(feeAddr, address(this), daiAmount); DAI_ADDR.approveToken(address(router), daiAmount); // swap and transfer directly to botAddress router.swapExactTokensForETH(daiAmount, 1, path, _botAddress, block.timestamp + 1); } } /// @dev Returns Dai amount, given eth amount based on uniV2 pool price function getEth2Dai(uint _ethAmount) internal view returns (uint daiAmount) { address[] memory path = new address[](2); path[0] = TokenUtils.WETH_ADDR; path[1] = DAI_ADDR; daiAmount = router.getAmountsOut(_ethAmount, path)[1]; } function setRefillCaller(address _newBot) public onlyOwner { refillCaller = _newBot; } function setFeeAddr(address _newFeeAddr) public onlyOwner { feeAddr = _newFeeAddr; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"name":"adminVault","outputs":[{"internalType":"contract AdminVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethAmount","type":"uint256"},{"internalType":"address","name":"_botAddress","type":"address"}],"name":"refill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newFeeAddr","type":"address"}],"name":"setFeeAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newBot","type":"address"}],"name":"setRefillCaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawStuckFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600080546001600160a01b03199081167333fdb79afb4456b604f376a45a546e7ae700e880179091556001805482167376720ac2574631530ec8163e4085d6f98513fb2717905560028054909116737a250d5630b4cf539739df2c5dacb4c659f2488d17905534801561007657600080fd5b50611285806100866000396000f3fe6080604052600436106100595760003560e01c806341c0e1b5146100655780638cedca711461007c578063b2855b4f146100ad578063c579d490146100e0578063f644aa8714610123578063fa35525b1461015657610060565b3661006057005b600080fd5b34801561007157600080fd5b5061007a61018f565b005b34801561008857600080fd5b50610091610267565b604080516001600160a01b039092168252519081900360200190f35b3480156100b957600080fd5b5061007a600480360360208110156100d057600080fd5b50356001600160a01b031661027f565b3480156100ec57600080fd5b5061007a6004803603606081101561010357600080fd5b506001600160a01b03813581169160208101359091169060400135610376565b34801561012f57600080fd5b5061007a6004803603602081101561014657600080fd5b50356001600160a01b03166104c5565b34801561016257600080fd5b5061007a6004803603604081101561017957600080fd5b50803590602001356001600160a01b03166105bc565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156101e657600080fd5b505afa1580156101fa573d6000803e3d6000fd5b505050506040513d602081101561021057600080fd5b50516001600160a01b031614610264576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1030b236b4b760611b604482015290519081900360640190fd5b33ff5b73ccf3d848e08b94478ed8f46ffead3008faf581fd81565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102d657600080fd5b505afa1580156102ea573d6000803e3d6000fd5b505050506040513d602081101561030057600080fd5b50516001600160a01b031614610354576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cd57600080fd5b505afa1580156103e1573d6000803e3d6000fd5b505050506040513d60208110156103f757600080fd5b50516001600160a01b03161461044b576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03841614156104ac576040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156104a6573d6000803e3d6000fd5b506104c0565b6104c06001600160a01b0384168383610b40565b505050565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561051c57600080fd5b505afa158015610530573d6000803e3d6000fd5b505050506040513d602081101561054657600080fd5b50516001600160a01b03161461059a576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610611576040805162461bcd60e51b81526020600482015260136024820152722bb937b733903932b334b6361031b0b63632b960691b604482015290519081900360640190fd5b604080516320eb73ed60e11b81526001600160a01b0383166004820152905173637726f8b08a7abe3ae3acab01a80e2d8ddef77b916341d6e7da916024808301926020929190829003018186803b15801561066b57600080fd5b505afa15801561067f573d6000803e3d6000fd5b505050506040513d602081101561069557600080fd5b50516106d7576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185d5d1a08189bdd60a21b604482015290519081900360640190fd5b600154604080516370a0823160e01b81526001600160a01b0390921660048301525160009173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2916370a0823191602480820192602092909190829003018186803b15801561073857600080fd5b505afa15801561074c573d6000803e3d6000fd5b505050506040513d602081101561076257600080fd5b5051905082811061084557600154604080516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482018590525173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2916323b872dd9160648083019260209291908290030181600087803b1580156107d957600080fd5b505af11580156107ed573d6000803e3d6000fd5b505050506040513d602081101561080357600080fd5b5061080f905083610b92565b6040516001600160a01b0383169084156108fc029085906000818181858888f193505050501580156104a6573d6000803e3d6000fd5b604080516002808252606082018352600092602083019080368337019050509050736b175474e89094c44da98b954eedeac495271d0f8160008151811061088857fe5b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106108ca57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006108f585610c07565b600154604080516323b872dd60e01b81526001600160a01b0390921660048301523060248301526044820183905251919250736b175474e89094c44da98b954eedeac495271d0f916323b872dd916064808201926020929091908290030181600087803b15801561096557600080fd5b505af1158015610979573d6000803e3d6000fd5b505050506040513d602081101561098f57600080fd5b50506002546109bd90736b175474e89094c44da98b954eedeac495271d0f906001600160a01b031683610e13565b6002546040516318cbafe560e01b8152600481018381526001602483018190526001600160a01b0388811660648501524282016084850181905260a060448601908152885160a4870152885192909616956318cbafe59588958a948d9493919260c401906020808801910280838360005b83811015610a46578181015183820152602001610a2e565b505050509050019650505050505050600060405180830381600087803b158015610a6f57600080fd5b505af1158015610a83573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610aac57600080fd5b8101908080516040519392919084640100000000821115610acc57600080fd5b908301906020820185811115610ae157600080fd5b8251866020820283011164010000000082111715610afe57600080fd5b82525081516020918201928201910280838360005b83811015610b2b578181015183820152602001610b13565b50505050905001604052505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526104c0908490610ed3565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bec57600080fd5b505af1158015610c00573d6000803e3d6000fd5b5050505050565b6040805160028082526060820183526000928392919060208301908036833701905050905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600081518110610c4e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050736b175474e89094c44da98b954eedeac495271d0f81600181518110610c9057fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b81526004810188815260248201928352865160448301528651939095169463d06ca61f9489948894929360640191858101910280838360005b83811015610d0a578181015183820152602001610cf2565b50505050905001935050505060006040518083038186803b158015610d2e57600080fd5b505afa158015610d42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d6b57600080fd5b8101908080516040519392919084640100000000821115610d8b57600080fd5b908301906020820185811115610da057600080fd5b8251866020820283011164010000000082111715610dbd57600080fd5b82525081516020918201928201910280838360005b83811015610dea578181015183820152602001610dd2565b50505050905001604052505050600181518110610e0357fe5b6020026020010151915050919050565b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610e3d576104c0565b60408051636eb1769f60e11b81523060048201526001600160a01b0384811660248301529151839286169163dd62ed3e916044808301926020929190829003018186803b158015610e8d57600080fd5b505afa158015610ea1573d6000803e3d6000fd5b505050506040513d6020811015610eb757600080fd5b505110156104c0576104c06001600160a01b0384168383610f84565b6000610f28826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661102b9092919063ffffffff16565b8051909150156104c057808060200190516020811015610f4757600080fd5b50516104c05760405162461bcd60e51b815260040180806020018281038252602a815260200180611226602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260006044808301919091528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610fd9908490610ed3565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526104c0908490610ed3565b606061103a8484600085611042565b949350505050565b606061104d856111ec565b61109e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106110dc5780518252601f1990920191602091820191016110bd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461113e576040519150601f19603f3d011682016040523d82523d6000602084013e611143565b606091505b5091509150811561115757915061103a9050565b8051156111675780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111b1578181015183820152602001611199565b50505050905090810190601f1680156111de5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061103a57505015159291505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220a1d47becd9cdd8b0a85609645bf9f7b3a89e91c9d62d022d3da21fd502b7a7f264736f6c63430007060033
Deployed Bytecode
0x6080604052600436106100595760003560e01c806341c0e1b5146100655780638cedca711461007c578063b2855b4f146100ad578063c579d490146100e0578063f644aa8714610123578063fa35525b1461015657610060565b3661006057005b600080fd5b34801561007157600080fd5b5061007a61018f565b005b34801561008857600080fd5b50610091610267565b604080516001600160a01b039092168252519081900360200190f35b3480156100b957600080fd5b5061007a600480360360208110156100d057600080fd5b50356001600160a01b031661027f565b3480156100ec57600080fd5b5061007a6004803603606081101561010357600080fd5b506001600160a01b03813581169160208101359091169060400135610376565b34801561012f57600080fd5b5061007a6004803603602081101561014657600080fd5b50356001600160a01b03166104c5565b34801561016257600080fd5b5061007a6004803603604081101561017957600080fd5b50803590602001356001600160a01b03166105bc565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156101e657600080fd5b505afa1580156101fa573d6000803e3d6000fd5b505050506040513d602081101561021057600080fd5b50516001600160a01b031614610264576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1030b236b4b760611b604482015290519081900360640190fd5b33ff5b73ccf3d848e08b94478ed8f46ffead3008faf581fd81565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102d657600080fd5b505afa1580156102ea573d6000803e3d6000fd5b505050506040513d602081101561030057600080fd5b50516001600160a01b031614610354576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cd57600080fd5b505afa1580156103e1573d6000803e3d6000fd5b505050506040513d60208110156103f757600080fd5b50516001600160a01b03161461044b576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03841614156104ac576040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156104a6573d6000803e3d6000fd5b506104c0565b6104c06001600160a01b0384168383610b40565b505050565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561051c57600080fd5b505afa158015610530573d6000803e3d6000fd5b505050506040513d602081101561054657600080fd5b50516001600160a01b03161461059a576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610611576040805162461bcd60e51b81526020600482015260136024820152722bb937b733903932b334b6361031b0b63632b960691b604482015290519081900360640190fd5b604080516320eb73ed60e11b81526001600160a01b0383166004820152905173637726f8b08a7abe3ae3acab01a80e2d8ddef77b916341d6e7da916024808301926020929190829003018186803b15801561066b57600080fd5b505afa15801561067f573d6000803e3d6000fd5b505050506040513d602081101561069557600080fd5b50516106d7576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185d5d1a08189bdd60a21b604482015290519081900360640190fd5b600154604080516370a0823160e01b81526001600160a01b0390921660048301525160009173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2916370a0823191602480820192602092909190829003018186803b15801561073857600080fd5b505afa15801561074c573d6000803e3d6000fd5b505050506040513d602081101561076257600080fd5b5051905082811061084557600154604080516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482018590525173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2916323b872dd9160648083019260209291908290030181600087803b1580156107d957600080fd5b505af11580156107ed573d6000803e3d6000fd5b505050506040513d602081101561080357600080fd5b5061080f905083610b92565b6040516001600160a01b0383169084156108fc029085906000818181858888f193505050501580156104a6573d6000803e3d6000fd5b604080516002808252606082018352600092602083019080368337019050509050736b175474e89094c44da98b954eedeac495271d0f8160008151811061088857fe5b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106108ca57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006108f585610c07565b600154604080516323b872dd60e01b81526001600160a01b0390921660048301523060248301526044820183905251919250736b175474e89094c44da98b954eedeac495271d0f916323b872dd916064808201926020929091908290030181600087803b15801561096557600080fd5b505af1158015610979573d6000803e3d6000fd5b505050506040513d602081101561098f57600080fd5b50506002546109bd90736b175474e89094c44da98b954eedeac495271d0f906001600160a01b031683610e13565b6002546040516318cbafe560e01b8152600481018381526001602483018190526001600160a01b0388811660648501524282016084850181905260a060448601908152885160a4870152885192909616956318cbafe59588958a948d9493919260c401906020808801910280838360005b83811015610a46578181015183820152602001610a2e565b505050509050019650505050505050600060405180830381600087803b158015610a6f57600080fd5b505af1158015610a83573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610aac57600080fd5b8101908080516040519392919084640100000000821115610acc57600080fd5b908301906020820185811115610ae157600080fd5b8251866020820283011164010000000082111715610afe57600080fd5b82525081516020918201928201910280838360005b83811015610b2b578181015183820152602001610b13565b50505050905001604052505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526104c0908490610ed3565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bec57600080fd5b505af1158015610c00573d6000803e3d6000fd5b5050505050565b6040805160028082526060820183526000928392919060208301908036833701905050905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600081518110610c4e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050736b175474e89094c44da98b954eedeac495271d0f81600181518110610c9057fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b81526004810188815260248201928352865160448301528651939095169463d06ca61f9489948894929360640191858101910280838360005b83811015610d0a578181015183820152602001610cf2565b50505050905001935050505060006040518083038186803b158015610d2e57600080fd5b505afa158015610d42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d6b57600080fd5b8101908080516040519392919084640100000000821115610d8b57600080fd5b908301906020820185811115610da057600080fd5b8251866020820283011164010000000082111715610dbd57600080fd5b82525081516020918201928201910280838360005b83811015610dea578181015183820152602001610dd2565b50505050905001604052505050600181518110610e0357fe5b6020026020010151915050919050565b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610e3d576104c0565b60408051636eb1769f60e11b81523060048201526001600160a01b0384811660248301529151839286169163dd62ed3e916044808301926020929190829003018186803b158015610e8d57600080fd5b505afa158015610ea1573d6000803e3d6000fd5b505050506040513d6020811015610eb757600080fd5b505110156104c0576104c06001600160a01b0384168383610f84565b6000610f28826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661102b9092919063ffffffff16565b8051909150156104c057808060200190516020811015610f4757600080fd5b50516104c05760405162461bcd60e51b815260040180806020018281038252602a815260200180611226602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260006044808301919091528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610fd9908490610ed3565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526104c0908490610ed3565b606061103a8484600085611042565b949350505050565b606061104d856111ec565b61109e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106110dc5780518252601f1990920191602091820191016110bd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461113e576040519150601f19603f3d011682016040523d82523d6000602084013e611143565b606091505b5091509150811561115757915061103a9050565b8051156111675780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111b1578181015183820152602001611199565b50505050905090810190601f1680156111de5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061103a57505015159291505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220a1d47becd9cdd8b0a85609645bf9f7b3a89e91c9d62d022d3da21fd502b7a7f264736f6c63430007060033
Deployed Bytecode Sourcemap
16438:2307:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10465:85;;;;;;;;;;;;;:::i;:::-;;9712:94;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;9712:94:0;;;;;;;;;;;;;;18607:98;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18607:98:0;-1:-1:-1;;;;;18607:98:0;;:::i;10103:316::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10103:316:0;;;;;;;;;;;;;;;;;:::i;18499:100::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18499:100:0;-1:-1:-1;;;;;18499:100:0;;:::i;16962:1173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16962:1173:0;;;;;;-1:-1:-1;;;;;16962:1173:0;;:::i;10465:85::-;10002:10;-1:-1:-1;;;;;9980:32:0;9763:42;-1:-1:-1;;;;;9980:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9980:18:0;-1:-1:-1;;;;;9980:32:0;;9972:65;;;;;-1:-1:-1;;;9972:65:0;;;;;;;;;;;;-1:-1:-1;;;9972:65:0;;;;;;;;;;;;;;;10530:10:::1;10509:33;9712:94:::0;9763:42;9712:94;:::o;18607:98::-;9877:10;-1:-1:-1;;;;;9855:32:0;9763:42;-1:-1:-1;;;;;9855:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9855:18:0;-1:-1:-1;;;;;9855:32:0;;9847:65;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;;;;18676:7:::1;:21:::0;;-1:-1:-1;;;;;;18676:21:0::1;-1:-1:-1::0;;;;;18676:21:0;;;::::1;::::0;;;::::1;::::0;;18607:98::o;10103:316::-;9877:10;-1:-1:-1;;;;;9855:32:0;9763:42;-1:-1:-1;;;;;9855:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9855:18:0;-1:-1:-1;;;;;9855:32:0;;9847:65;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;;;;10225:42:::1;-1:-1:-1::0;;;;;10215:52:0;::::1;;10211:201;;;10284:36;::::0;-1:-1:-1;;;;;10284:27:0;::::1;::::0;:36;::::1;;;::::0;10312:7;;10284:36:::1;::::0;;;10312:7;10284:27;:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10211:201;;;10353:47;-1:-1:-1::0;;;;;10353:27:0;::::1;10381:9:::0;10392:7;10353:27:::1;:47::i;:::-;10103:316:::0;;;:::o;18499:100::-;9877:10;-1:-1:-1;;;;;9855:32:0;9763:42;-1:-1:-1;;;;;9855:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9855:18:0;-1:-1:-1;;;;;9855:32:0;;9847:65;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;;;;18569:12:::1;:22:::0;;-1:-1:-1;;;;;;18569:22:0::1;-1:-1:-1::0;;;;;18569:22:0;;;::::1;::::0;;;::::1;::::0;;18499:100::o;16962:1173::-;17057:12;;-1:-1:-1;;;;;17057:12:0;17043:10;:26;17035:58;;;;;-1:-1:-1;;;17035:58:0;;;;;;;;;;;;-1:-1:-1;;;17035:58:0;;;;;;;;;;;;;;;17112:55;;;-1:-1:-1;;;17112:55:0;;-1:-1:-1;;;;;17112:55:0;;;;;;;;16725:42;;17112;;:55;;;;;;;;;;;;;;16725:42;17112:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17112:55:0;17104:80;;;;;-1:-1:-1;;;17104:80:0;;;;;;;;;;;;-1:-1:-1;;;17104:80:0;;;;;;;;;;;;;;;17304:7;;17265:47;;;-1:-1:-1;;;17265:47:0;;-1:-1:-1;;;;;17304:7:0;;;17265:47;;;;;-1:-1:-1;;13904:42:0;;17265:38;;:47;;;;;;;;;;;;;;;13904:42;17265:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17265:47:0;;-1:-1:-1;17329:25:0;;;17325:803;;17413:7;;17371:77;;;-1:-1:-1;;;17371:77:0;;-1:-1:-1;;;;;17413:7:0;;;17371:77;;;;17430:4;17371:77;;;;;;;;;;;13904:42;;17371:41;;:77;;;;;;;;;;;;;;-1:-1:-1;13904:42:0;17371:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17465:35:0;;-1:-1:-1;17489:10:0;17465:23;:35::i;:::-;17515:41;;-1:-1:-1;;;;;17515:29:0;;;:41;;;;;17545:10;;17515:41;;;;17545:10;17515:29;:41;;;;;;;;;;;;;;;;;;;17325:803;17613:16;;;17627:1;17613:16;;;;;;;;17589:21;;17613:16;;;;;;;;;;-1:-1:-1;17613:16:0;17589:40;;16811:42;17644:4;17649:1;17644:7;;;;;;;;;;;;;:18;-1:-1:-1;;;;;17644:18:0;;;-1:-1:-1;;;;;17644:18:0;;;;;13904:42;17677:4;17682:1;17677:7;;;;;;;;;;;;;:30;-1:-1:-1;;;;;17677:30:0;;;-1:-1:-1;;;;;17677:30:0;;;;;17776:14;17793:22;17804:10;17793;:22::i;:::-;17862:7;;17832:64;;;-1:-1:-1;;;17832:64:0;;-1:-1:-1;;;;;17862:7:0;;;17832:64;;;;17879:4;17832:64;;;;;;;;;;;;;-1:-1:-1;16811:42:0;;17832:29;;:64;;;;;;;;;;;;;;;-1:-1:-1;16811:42:0;17832:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17941:6:0;;17911:49;;16811:42;;-1:-1:-1;;;;;17941:6:0;17950:9;17911:21;:49::i;:::-;18034:6;;:82;;-1:-1:-1;;;18034:82:0;;;;;;;;:6;:82;;;;;;-1:-1:-1;;;;;18034:82:0;;;;;;;18096:15;:19;;18034:82;;;;;;;;;;;;;;;;;;;;;:6;;;;;:28;;18063:9;;18077:4;;18083:11;;18096:19;18034:82;;;;;;;;;;;;;;:6;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18034:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18034:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17325:803;;16962:1173;;;:::o;6555:211::-;6699:58;;;-1:-1:-1;;;;;6699:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6699:58:0;-1:-1:-1;;;6699:58:0;;;6672:86;;6692:5;;6672:19;:86::i;15798:101::-;13904:42;-1:-1:-1;;;;;15857:25:0;;15883:7;15857:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15798:101;:::o;18220:271::-;18331:16;;;18345:1;18331:16;;;;;;;;18280:14;;;;18331:16;18345:1;18331:16;;;;;;;;;;-1:-1:-1;18331:16:0;18307:40;;13904:42;18358:4;18363:1;18358:7;;;;;;;;;;;;;:30;-1:-1:-1;;;;;18358:30:0;;;-1:-1:-1;;;;;18358:30:0;;;;;16811:42;18399:4;18404:1;18399:7;;;;;;;;-1:-1:-1;;;;;18399:18:0;;;:7;;;;;;;;;;:18;;;;18442:6;;:38;;;-1:-1:-1;;;18442:38:0;;;;;;;;;;;;;;;;;;;;;;:6;;;;;:20;;18463:10;;18475:4;;18442:38;;;;;;;;;;;;;:6;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18442:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18442:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18481:1;18442:41;;;;;;;;;;;;;;18430:53;;18220:271;;;;:::o;14039:315::-;-1:-1:-1;;;;;14169:22:0;;13988:42;14169:22;14165:35;;;14193:7;;14165:35;14216:48;;;-1:-1:-1;;;14216:48:0;;14253:4;14216:48;;;;-1:-1:-1;;;;;14216:48:0;;;;;;;;;14267:7;;14216:28;;;;;:48;;;;;;;;;;;;;;:28;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14216:48:0;:58;14212:135;;;14291:44;-1:-1:-1;;;;;14291:30:0;;14322:3;14327:7;14291:30;:44::i;8305:468::-;8386:23;8412:106;8454:4;8412:106;;;;;;;;;;;;;;;;;8420:5;-1:-1:-1;;;;;8412:27:0;;;:106;;;;;:::i;:::-;8533:17;;8386:132;;-1:-1:-1;8533:21:0;8529:237;;8688:10;8677:30;;;;;;;;;;;;;;;-1:-1:-1;8677:30:0;8669:85;;;;-1:-1:-1;;;8669:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7169:316;7317:58;;;-1:-1:-1;;;;;7317:58:0;;;;;;7373:1;7317:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7317:58:0;-1:-1:-1;;;7317:58:0;;;7290:86;;7310:5;;7290:19;:86::i;:::-;7414:62;;;-1:-1:-1;;;;;7414:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7414:62:0;-1:-1:-1;;;7414:62:0;;;7387:90;;7407:5;;7387:19;:90::i;2655:230::-;2792:12;2824:53;2847:6;2855:4;2861:1;2864:12;2824:22;:53::i;:::-;2817:60;2655:230;-1:-1:-1;;;;2655:230:0:o;3541:1020::-;3714:12;3747:18;3758:6;3747:10;:18::i;:::-;3739:60;;;;;-1:-1:-1;;;3739:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3873:12;3887:23;3914:6;-1:-1:-1;;;;;3914:11:0;3933:8;3943:4;3914:34;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3914:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3872:76;;;;3963:7;3959:595;;;3994:10;-1:-1:-1;3987:17:0;;-1:-1:-1;3987:17:0;3959:595;4108:17;;:21;4104:439;;4371:10;4365:17;4432:15;4419:10;4415:2;4411:19;4404:44;4319:148;4514:12;4507:20;;-1:-1:-1;;;4507:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1420:641;1480:4;1961:20;;1791:66;2010:23;;;;;;:42;;-1:-1:-1;;2037:15:0;;;2002:51;-1:-1:-1;;1420:641:0:o
Swarm Source
ipfs://a1d47becd9cdd8b0a85609645bf9f7b3a89e91c9d62d022d3da21fd502b7a7f2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 33 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.