Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Complete Authori... | 18017068 | 479 days ago | IN | 0 ETH | 0.00106015 | ||||
Activate Timeloc... | 11690893 | 1429 days ago | IN | 0 ETH | 0.00250583 | ||||
Transfer Ownersh... | 11463056 | 1464 days ago | IN | 0 ETH | 0.00142175 | ||||
Authorize | 11463055 | 1464 days ago | IN | 0 ETH | 0.00340885 | ||||
Set Allowance Ta... | 11463003 | 1464 days ago | IN | 0 ETH | 0.00159177 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Spender
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-18 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/math/SafeMath.sol pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ 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; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be 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; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.6.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: contracts/interface/IAllowanceTarget.sol pragma solidity ^0.6.0; interface IAllowanceTarget { function setSpenderWithTimelock(address _newSpender) external; function completeSetSpender() external; function executeCall(address payable _target, bytes calldata _callData) external returns (bytes memory resultData); function teardown() external; } // File: contracts/Spender.sol pragma solidity ^0.6.5; /** * @dev Spender contract */ contract Spender { using SafeMath for uint256; // Constants do not have storage slot. address private constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; address private constant ZERO_ADDRESS = address(0); uint256 constant private TIME_LOCK_DURATION = 1 days; // Below are the variables which consume storage slots. address public operator; address public allowanceTarget; mapping(address => bool) private authorized; mapping(address => bool) private tokenBlacklist; uint256 public numPendingAuthorized; mapping(uint256 => address) public pendingAuthorized; uint256 public timelockExpirationTime; uint256 public contractDeployedTime; bool public timelockActivated; /************************************************************ * Access control and ownership management * *************************************************************/ modifier onlyOperator() { require(operator == msg.sender, "Spender: not the operator"); _; } modifier onlyAuthorized() { require(authorized[msg.sender], "Spender: not authorized"); _; } function transferOwnership(address _newOperator) external onlyOperator { require(_newOperator != address(0), "Spender: operator can not be zero address"); operator = _newOperator; } /************************************************************ * Timelock management * *************************************************************/ /// @dev Everyone can activate timelock after the contract has been deployed for more than 1 day. function activateTimelock() external { bool canActivate = block.timestamp.sub(contractDeployedTime) > 1 days; require(canActivate && ! timelockActivated, "Spender: can not activate timelock yet or has been activated"); timelockActivated = true; } /************************************************************ * Constructor and init functions * *************************************************************/ constructor(address _operator) public { require(_operator != address(0), "Spender: _operator should not be 0"); // Set operator operator = _operator; timelockActivated = false; contractDeployedTime = block.timestamp; } function setAllowanceTarget(address _allowanceTarget) external onlyOperator { require(allowanceTarget == address(0), "Spender: can not reset allowance target"); // Set allowanceTarget allowanceTarget = _allowanceTarget; } /************************************************************ * AllowanceTarget interaction functions * *************************************************************/ function setNewSpender(address _newSpender) external onlyOperator { IAllowanceTarget(allowanceTarget).setSpenderWithTimelock(_newSpender); } function teardownAllowanceTarget() external onlyOperator { IAllowanceTarget(allowanceTarget).teardown(); } /************************************************************ * Whitelist and blacklist functions * *************************************************************/ function isBlacklisted(address _tokenAddr) external view returns (bool) { return tokenBlacklist[_tokenAddr]; } function blacklist(address[] calldata _tokenAddrs, bool[] calldata _isBlacklisted) external onlyOperator { require(_tokenAddrs.length == _isBlacklisted.length, "Spender: length mismatch"); for (uint256 i = 0; i < _tokenAddrs.length; i++) { tokenBlacklist[_tokenAddrs[i]] = _isBlacklisted[i]; } } function isAuthorized(address _caller) external view returns (bool) { return authorized[_caller]; } function authorize(address[] calldata _pendingAuthorized) external onlyOperator { require(_pendingAuthorized.length > 0, "Spender: authorize list is empty"); require(numPendingAuthorized == 0 && timelockExpirationTime == 0, "Spender: an authorize current in progress"); if (timelockActivated) { numPendingAuthorized = _pendingAuthorized.length; for (uint256 i = 0; i < _pendingAuthorized.length; i++) { require(_pendingAuthorized[i] != address(0), "Spender: can not authorize zero address"); pendingAuthorized[i] = _pendingAuthorized[i]; } timelockExpirationTime = now + TIME_LOCK_DURATION; } else { for (uint256 i = 0; i < _pendingAuthorized.length; i++) { require(_pendingAuthorized[i] != address(0), "Spender: can not authorize zero address"); authorized[_pendingAuthorized[i]] = true; } } } function completeAuthorize() external { require(timelockExpirationTime != 0, "Spender: no pending authorize"); require(now >= timelockExpirationTime, "Spender: time lock not expired yet"); for (uint256 i = 0; i < numPendingAuthorized; i++) { authorized[pendingAuthorized[i]] = true; delete pendingAuthorized[i]; } timelockExpirationTime = 0; numPendingAuthorized = 0; } function deauthorize(address[] calldata _deauthorized) external onlyOperator { for (uint256 i = 0; i < _deauthorized.length; i++) { authorized[_deauthorized[i]] = false; } } /************************************************************ * External functions * *************************************************************/ /// @dev Spend tokens on user's behalf. Only an authority can call this. /// @param _user The user to spend token from. /// @param _tokenAddr The address of the token. /// @param _amount Amount to spend. function spendFromUser(address _user, address _tokenAddr, uint256 _amount) external onlyAuthorized { require(! tokenBlacklist[_tokenAddr], "Spender: token is blacklisted"); if (_tokenAddr != ETH_ADDRESS && _tokenAddr != ZERO_ADDRESS) { uint256 balanceBefore = IERC20(_tokenAddr).balanceOf(msg.sender); (bool callSucceed, ) = address(allowanceTarget).call( abi.encodeWithSelector( IAllowanceTarget.executeCall.selector, _tokenAddr, abi.encodeWithSelector( IERC20.transferFrom.selector, _user, msg.sender, _amount ) ) ); require(callSucceed, "Spender: ERC20 transferFrom failed"); // Check balance uint256 balanceAfter = IERC20(_tokenAddr).balanceOf(msg.sender); require(balanceAfter.sub(balanceBefore) == _amount, "Spender: ERC20 transferFrom result mismatch"); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"activateTimelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allowanceTarget","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_pendingAuthorized","type":"address[]"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokenAddrs","type":"address[]"},{"internalType":"bool[]","name":"_isBlacklisted","type":"bool[]"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"completeAuthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractDeployedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_deauthorized","type":"address[]"}],"name":"deauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numPendingAuthorized","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pendingAuthorized","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_allowanceTarget","type":"address"}],"name":"setAllowanceTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newSpender","type":"address"}],"name":"setNewSpender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"spendFromUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"teardownAllowanceTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"timelockActivated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelockExpirationTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOperator","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516116573803806116578339818101604052602081101561003357600080fd5b50516001600160a01b03811661007a5760405162461bcd60e51b81526004018080602001828103825260228152602001806116356022913960400191505060405180910390fd5b600080546001600160a01b039092166001600160a01b03199092169190911790556008805460ff191690554260075561157d806100b86000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80637d131c2a116100cd578063e1727fc611610081578063f9c7a0d111610066578063f9c7a0d114610441578063fe575a8714610449578063fe9fbb801461046f57610151565b8063e1727fc614610413578063f2fde38b1461041b57610151565b80638a14c759116100b25780638a14c75914610323578063910cab1114610349578063afd381841461035157610151565b80637d131c2a1461028d57806384e45689146102b357610151565b8063570ca735116101245780636e3a1b16116101095780636e3a1b161461024f57806371f1531c14610269578063727c56c01461028557610151565b8063570ca7351461023f57806363a5d2981461024757610151565b80631f074f9b1461015657806323ce8e03146101605780632fcca3ac146101995780633474ad1a14610209575b600080fd5b61015e610495565b005b61017d6004803603602081101561017657600080fd5b503561055e565b604080516001600160a01b039092168252519081900360200190f35b61015e600480360360208110156101af57600080fd5b8101906020810181356401000000008111156101ca57600080fd5b8201836020820111156101dc57600080fd5b803590602001918460208302840111640100000000831117156101fe57600080fd5b509092509050610579565b61015e6004803603606081101561021f57600080fd5b506001600160a01b03813581169160208101359091169060400135610633565b61017d610ae1565b61015e610af0565b610257610b69565b60408051918252519081900360200190f35b610271610b6f565b604080519115158252519081900360200190f35b61015e610b78565b61015e600480360360208110156102a357600080fd5b50356001600160a01b0316610c82565b61015e600480360360208110156102c957600080fd5b8101906020810181356401000000008111156102e457600080fd5b8201836020820111156102f657600080fd5b8035906020019184602083028401116401000000008311171561031857600080fd5b509092509050610d63565b61015e6004803603602081101561033957600080fd5b50356001600160a01b0316611000565b61017d6110d6565b61015e6004803603604081101561036757600080fd5b81019060208101813564010000000081111561038257600080fd5b82018360208201111561039457600080fd5b803590602001918460208302840111640100000000831117156103b657600080fd5b9193909290916020810190356401000000008111156103d457600080fd5b8201836020820111156103e657600080fd5b8035906020019184602083028401116401000000008311171561040857600080fd5b5090925090506110e5565b610257611201565b61015e6004803603602081101561043157600080fd5b50356001600160a01b0316611207565b6102576112da565b6102716004803603602081101561045f57600080fd5b50356001600160a01b03166112e0565b6102716004803603602081101561048557600080fd5b50356001600160a01b03166112fe565b6000546001600160a01b031633146104f4576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663be6502e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561054457600080fd5b505af1158015610558573d6000803e3d6000fd5b50505050565b6005602052600090815260409020546001600160a01b031681565b6000546001600160a01b031633146105d8576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b60005b8181101561062e576000600260008585858181106105f557fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016105db565b505050565b3360009081526002602052604090205460ff16610697576040805162461bcd60e51b815260206004820152601760248201527f5370656e6465723a206e6f7420617574686f72697a6564000000000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526003602052604090205460ff1615610705576040805162461bcd60e51b815260206004820152601d60248201527f5370656e6465723a20746f6b656e20697320626c61636b6c6973746564000000604482015290519081900360640190fd5b6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480159061073a57506001600160a01b03821615155b1561062e576000826001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561078e57600080fd5b505afa1580156107a2573d6000803e3d6000fd5b505050506040513d60208110156107b857600080fd5b5051600154604080516001600160a01b038881166024808401919091523360448085019190915260648085018a9052855180860382018152608495860187526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815287518d8716958101958652938401978852815192840192909252805198995060009894909716967fbca8c7b500000000000000000000000000000000000000000000000000000000968c969195909390910191908083838c5b838110156108b0578181015183820152602001610898565b50505050905090810190601f1680156108dd5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009098169790971787525181519196909550859450925090508083835b6020831061096e5780518252601f19909201916020918201910161094f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146109d0576040519150601f19603f3d011682016040523d82523d6000602084013e6109d5565b606091505b5050905080610a155760405162461bcd60e51b81526004018080602001828103825260228152602001806115266022913960400191505060405180910390fd5b6000846001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a6457600080fd5b505afa158015610a78573d6000803e3d6000fd5b505050506040513d6020811015610a8e57600080fd5b5051905083610a9d828561131c565b14610ad95760405162461bcd60e51b815260040180806020018281038252602b8152602001806113fd602b913960400191505060405180910390fd5b505050505050565b6000546001600160a01b031681565b600062015180610b0b6007544261131c90919063ffffffff16565b119050808015610b1e575060085460ff16155b610b595760405162461bcd60e51b815260040180806020018281038252603c815260200180611478603c913960400191505060405180910390fd5b506008805460ff19166001179055565b60045481565b60085460ff1681565b600654610bcc576040805162461bcd60e51b815260206004820152601d60248201527f5370656e6465723a206e6f2070656e64696e6720617574686f72697a65000000604482015290519081900360640190fd5b600654421015610c0d5760405162461bcd60e51b81526004018080602001828103825260228152602001806114b46022913960400191505060405180910390fd5b60005b600454811015610c7557600081815260056020818152604080842080546001600160a01b0316855260028352908420805460ff1916600190811790915593859052919052805473ffffffffffffffffffffffffffffffffffffffff1916905501610c10565b5060006006819055600455565b6000546001600160a01b03163314610ce1576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b600154604080517f8c064e190000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015291519190921691638c064e1991602480830192600092919082900301818387803b158015610d4857600080fd5b505af1158015610d5c573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610dc2576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b80610e14576040805162461bcd60e51b815260206004820181905260248201527f5370656e6465723a20617574686f72697a65206c69737420697320656d707479604482015290519081900360640190fd5b600454158015610e245750600654155b610e5f5760405162461bcd60e51b81526004018080602001828103825260298152602001806114d66029913960400191505060405180910390fd5b60085460ff1615610f4257600481905560005b81811015610f33576000838383818110610e8857fe5b905060200201356001600160a01b03166001600160a01b03161415610ede5760405162461bcd60e51b81526004018080602001828103825260278152602001806114516027913960400191505060405180910390fd5b828282818110610eea57fe5b6000848152600560209081526040909120805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929093029490940135161790915550600101610e72565b50426201518001600655610ffc565b60005b8181101561062e576000838383818110610f5b57fe5b905060200201356001600160a01b03166001600160a01b03161415610fb15760405162461bcd60e51b81526004018080602001828103825260278152602001806114516027913960400191505060405180910390fd5b600160026000858585818110610fc357fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101610f45565b5050565b6000546001600160a01b0316331461105f576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b6001546001600160a01b0316156110a75760405162461bcd60e51b81526004018080602001828103825260278152602001806114ff6027913960400191505060405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b6000546001600160a01b03163314611144576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b828114611198576040805162461bcd60e51b815260206004820152601860248201527f5370656e6465723a206c656e677468206d69736d617463680000000000000000604482015290519081900360640190fd5b60005b83811015610d5c578282828181106111af57fe5b905060200201351515600360008787858181106111c857fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff191691151591909117905560010161119b565b60075481565b6000546001600160a01b03163314611266576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b6001600160a01b0381166112ab5760405162461bcd60e51b81526004018080602001828103825260298152602001806114286029913960400191505060405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60065481565b6001600160a01b031660009081526003602052604090205460ff1690565b6001600160a01b031660009081526002602052604090205460ff1690565b600061135e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611365565b9392505050565b600081848411156113f45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113b95781810151838201526020016113a1565b50505050905090810190601f1680156113e65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe5370656e6465723a204552433230207472616e7366657246726f6d20726573756c74206d69736d617463685370656e6465723a206f70657261746f722063616e206e6f74206265207a65726f20616464726573735370656e6465723a2063616e206e6f7420617574686f72697a65207a65726f20616464726573735370656e6465723a2063616e206e6f742061637469766174652074696d656c6f636b20796574206f7220686173206265656e206163746976617465645370656e6465723a2074696d65206c6f636b206e6f742065787069726564207965745370656e6465723a20616e20617574686f72697a652063757272656e7420696e2070726f67726573735370656e6465723a2063616e206e6f7420726573657420616c6c6f77616e6365207461726765745370656e6465723a204552433230207472616e7366657246726f6d206661696c6564a264697066735822122024bc4dd9a70149c3455e32b70c81dce6e13cfb6bd9be6bef634042a7deb2b78464736f6c634300060c00335370656e6465723a205f6f70657261746f722073686f756c64206e6f7420626520300000000000000000000000000112b7ced0de10a4a44831e978b810b35f82aaa2
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101515760003560e01c80637d131c2a116100cd578063e1727fc611610081578063f9c7a0d111610066578063f9c7a0d114610441578063fe575a8714610449578063fe9fbb801461046f57610151565b8063e1727fc614610413578063f2fde38b1461041b57610151565b80638a14c759116100b25780638a14c75914610323578063910cab1114610349578063afd381841461035157610151565b80637d131c2a1461028d57806384e45689146102b357610151565b8063570ca735116101245780636e3a1b16116101095780636e3a1b161461024f57806371f1531c14610269578063727c56c01461028557610151565b8063570ca7351461023f57806363a5d2981461024757610151565b80631f074f9b1461015657806323ce8e03146101605780632fcca3ac146101995780633474ad1a14610209575b600080fd5b61015e610495565b005b61017d6004803603602081101561017657600080fd5b503561055e565b604080516001600160a01b039092168252519081900360200190f35b61015e600480360360208110156101af57600080fd5b8101906020810181356401000000008111156101ca57600080fd5b8201836020820111156101dc57600080fd5b803590602001918460208302840111640100000000831117156101fe57600080fd5b509092509050610579565b61015e6004803603606081101561021f57600080fd5b506001600160a01b03813581169160208101359091169060400135610633565b61017d610ae1565b61015e610af0565b610257610b69565b60408051918252519081900360200190f35b610271610b6f565b604080519115158252519081900360200190f35b61015e610b78565b61015e600480360360208110156102a357600080fd5b50356001600160a01b0316610c82565b61015e600480360360208110156102c957600080fd5b8101906020810181356401000000008111156102e457600080fd5b8201836020820111156102f657600080fd5b8035906020019184602083028401116401000000008311171561031857600080fd5b509092509050610d63565b61015e6004803603602081101561033957600080fd5b50356001600160a01b0316611000565b61017d6110d6565b61015e6004803603604081101561036757600080fd5b81019060208101813564010000000081111561038257600080fd5b82018360208201111561039457600080fd5b803590602001918460208302840111640100000000831117156103b657600080fd5b9193909290916020810190356401000000008111156103d457600080fd5b8201836020820111156103e657600080fd5b8035906020019184602083028401116401000000008311171561040857600080fd5b5090925090506110e5565b610257611201565b61015e6004803603602081101561043157600080fd5b50356001600160a01b0316611207565b6102576112da565b6102716004803603602081101561045f57600080fd5b50356001600160a01b03166112e0565b6102716004803603602081101561048557600080fd5b50356001600160a01b03166112fe565b6000546001600160a01b031633146104f4576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663be6502e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561054457600080fd5b505af1158015610558573d6000803e3d6000fd5b50505050565b6005602052600090815260409020546001600160a01b031681565b6000546001600160a01b031633146105d8576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b60005b8181101561062e576000600260008585858181106105f557fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016105db565b505050565b3360009081526002602052604090205460ff16610697576040805162461bcd60e51b815260206004820152601760248201527f5370656e6465723a206e6f7420617574686f72697a6564000000000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526003602052604090205460ff1615610705576040805162461bcd60e51b815260206004820152601d60248201527f5370656e6465723a20746f6b656e20697320626c61636b6c6973746564000000604482015290519081900360640190fd5b6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480159061073a57506001600160a01b03821615155b1561062e576000826001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561078e57600080fd5b505afa1580156107a2573d6000803e3d6000fd5b505050506040513d60208110156107b857600080fd5b5051600154604080516001600160a01b038881166024808401919091523360448085019190915260648085018a9052855180860382018152608495860187526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815287518d8716958101958652938401978852815192840192909252805198995060009894909716967fbca8c7b500000000000000000000000000000000000000000000000000000000968c969195909390910191908083838c5b838110156108b0578181015183820152602001610898565b50505050905090810190601f1680156108dd5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009098169790971787525181519196909550859450925090508083835b6020831061096e5780518252601f19909201916020918201910161094f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146109d0576040519150601f19603f3d011682016040523d82523d6000602084013e6109d5565b606091505b5050905080610a155760405162461bcd60e51b81526004018080602001828103825260228152602001806115266022913960400191505060405180910390fd5b6000846001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a6457600080fd5b505afa158015610a78573d6000803e3d6000fd5b505050506040513d6020811015610a8e57600080fd5b5051905083610a9d828561131c565b14610ad95760405162461bcd60e51b815260040180806020018281038252602b8152602001806113fd602b913960400191505060405180910390fd5b505050505050565b6000546001600160a01b031681565b600062015180610b0b6007544261131c90919063ffffffff16565b119050808015610b1e575060085460ff16155b610b595760405162461bcd60e51b815260040180806020018281038252603c815260200180611478603c913960400191505060405180910390fd5b506008805460ff19166001179055565b60045481565b60085460ff1681565b600654610bcc576040805162461bcd60e51b815260206004820152601d60248201527f5370656e6465723a206e6f2070656e64696e6720617574686f72697a65000000604482015290519081900360640190fd5b600654421015610c0d5760405162461bcd60e51b81526004018080602001828103825260228152602001806114b46022913960400191505060405180910390fd5b60005b600454811015610c7557600081815260056020818152604080842080546001600160a01b0316855260028352908420805460ff1916600190811790915593859052919052805473ffffffffffffffffffffffffffffffffffffffff1916905501610c10565b5060006006819055600455565b6000546001600160a01b03163314610ce1576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b600154604080517f8c064e190000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015291519190921691638c064e1991602480830192600092919082900301818387803b158015610d4857600080fd5b505af1158015610d5c573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610dc2576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b80610e14576040805162461bcd60e51b815260206004820181905260248201527f5370656e6465723a20617574686f72697a65206c69737420697320656d707479604482015290519081900360640190fd5b600454158015610e245750600654155b610e5f5760405162461bcd60e51b81526004018080602001828103825260298152602001806114d66029913960400191505060405180910390fd5b60085460ff1615610f4257600481905560005b81811015610f33576000838383818110610e8857fe5b905060200201356001600160a01b03166001600160a01b03161415610ede5760405162461bcd60e51b81526004018080602001828103825260278152602001806114516027913960400191505060405180910390fd5b828282818110610eea57fe5b6000848152600560209081526040909120805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929093029490940135161790915550600101610e72565b50426201518001600655610ffc565b60005b8181101561062e576000838383818110610f5b57fe5b905060200201356001600160a01b03166001600160a01b03161415610fb15760405162461bcd60e51b81526004018080602001828103825260278152602001806114516027913960400191505060405180910390fd5b600160026000858585818110610fc357fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101610f45565b5050565b6000546001600160a01b0316331461105f576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b6001546001600160a01b0316156110a75760405162461bcd60e51b81526004018080602001828103825260278152602001806114ff6027913960400191505060405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b6000546001600160a01b03163314611144576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b828114611198576040805162461bcd60e51b815260206004820152601860248201527f5370656e6465723a206c656e677468206d69736d617463680000000000000000604482015290519081900360640190fd5b60005b83811015610d5c578282828181106111af57fe5b905060200201351515600360008787858181106111c857fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff191691151591909117905560010161119b565b60075481565b6000546001600160a01b03163314611266576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b6001600160a01b0381166112ab5760405162461bcd60e51b81526004018080602001828103825260298152602001806114286029913960400191505060405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60065481565b6001600160a01b031660009081526003602052604090205460ff1690565b6001600160a01b031660009081526002602052604090205460ff1690565b600061135e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611365565b9392505050565b600081848411156113f45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113b95781810151838201526020016113a1565b50505050905090810190601f1680156113e65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe5370656e6465723a204552433230207472616e7366657246726f6d20726573756c74206d69736d617463685370656e6465723a206f70657261746f722063616e206e6f74206265207a65726f20616464726573735370656e6465723a2063616e206e6f7420617574686f72697a65207a65726f20616464726573735370656e6465723a2063616e206e6f742061637469766174652074696d656c6f636b20796574206f7220686173206265656e206163746976617465645370656e6465723a2074696d65206c6f636b206e6f742065787069726564207965745370656e6465723a20616e20617574686f72697a652063757272656e7420696e2070726f67726573735370656e6465723a2063616e206e6f7420726573657420616c6c6f77616e6365207461726765745370656e6465723a204552433230207472616e7366657246726f6d206661696c6564a264697066735822122024bc4dd9a70149c3455e32b70c81dce6e13cfb6bd9be6bef634042a7deb2b78464736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000112b7ced0de10a4a44831e978b810b35f82aaa2
-----Decoded View---------------
Arg [0] : _operator (address): 0x0112b7ceD0DE10A4A44831E978b810B35f82aAA2
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000112b7ced0de10a4a44831e978b810b35f82aaa2
Deployed Bytecode Sourcemap
8706:7298:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11842:120;;;:::i;:::-;;9289:52;;;;;;;;;;;;;;;;-1:-1:-1;9289:52:0;;:::i;:::-;;;;-1:-1:-1;;;;;9289:52:0;;;;;;;;;;;;;;14245:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14245:209:0;;-1:-1:-1;14245:209:0;-1:-1:-1;14245:209:0;:::i;14890:1111::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14890:1111:0;;;;;;;;;;;;;;;;;:::i;9076:23::-;;;:::i;10443:278::-;;;:::i;9247:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;9434:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;13781:456;;;:::i;11680:154::-;;;;;;;;;;;;;;;;-1:-1:-1;11680:154:0;-1:-1:-1;;;;;11680:154:0;;:::i;12781:992::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12781:992:0;;-1:-1:-1;12781:992:0;-1:-1:-1;12781:992:0;:::i;11211:255::-;;;;;;;;;;;;;;;;-1:-1:-1;11211:255:0;-1:-1:-1;;;;;11211:255:0;;:::i;9106:30::-;;;:::i;12308:340::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12308:340:0;;-1:-1:-1;12308:340:0;-1:-1:-1;12308:340:0;:::i;9392:35::-;;;:::i;9924:204::-;;;;;;;;;;;;;;;;-1:-1:-1;9924:204:0;-1:-1:-1;;;;;9924:204:0;;:::i;9348:37::-;;;:::i;12176:124::-;;;;;;;;;;;;;;;;-1:-1:-1;12176:124:0;-1:-1:-1;;;;;12176:124:0;;:::i;12660:113::-;;;;;;;;;;;;;;;;-1:-1:-1;12660:113:0;-1:-1:-1;;;;;12660:113:0;;:::i;11842:120::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11927:15:::1;;;;;;;;;-1:-1:-1::0;;;;;11927:15:0::1;-1:-1:-1::0;;;;;11910:42:0::1;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11842:120::o:0;9289:52::-;;;;;;;;;;;;-1:-1:-1;;;;;9289:52:0;;:::o;14245:209::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14338:9:::1;14333:114;14353:24:::0;;::::1;14333:114;;;14430:5;14399:10;:28;14410:13;;14424:1;14410:16;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;14410:16:0::1;14399:28:::0;;-1:-1:-1;14399:28:0;::::1;::::0;;;;;;-1:-1:-1;14399:28:0;:36;;-1:-1:-1;;14399:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;14379:3:0::1;14333:114;;;;14245:209:::0;;:::o;14890:1111::-;9857:10;9846:22;;;;:10;:22;;;;;;;;9838:58;;;;;-1:-1:-1;;;9838:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15010:26:0;::::1;;::::0;;;:14:::1;:26;::::0;;;;;::::1;;15008:28;15000:70;;;::::0;;-1:-1:-1;;;15000:70:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;15087:25:0;::::1;8848:42;15087:25;::::0;::::1;::::0;:55:::1;;-1:-1:-1::0;;;;;;15116:26:0;::::1;::::0;::::1;15087:55;15083:911;;;15161:21;15192:10;-1:-1:-1::0;;;;;15185:28:0::1;;15214:10;15185:40;;;;;;;;;;;;;-1:-1:-1::0;;;;;15185:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15185:40:0;15271:15:::1;::::0;15449:203:::1;::::0;;-1:-1:-1;;;;;15449:203:0;;::::1;;::::0;;::::1;::::0;;;;15585:10:::1;15449:203:::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15185:40:::1;15449:203:::0;::::1;::::0;;::::1;;15498:28:::0;15449:203:::1;::::0;;15311:360;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;15185:40;;-1:-1:-1;15241:16:0::1;::::0;15271:15;;;::::1;::::0;15356:37;;15416:10;;15449:203;;15311:360;;;;;;15449:203;15311:360;;15449:203;15241:16;15311:360:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15311:360:0::1;::::0;;-1:-1:-1;;15311:360:0;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;15263:423;;;15311:360;;15263:423;;-1:-1:-1;15263:423:0;;-1:-1:-1;15311:360:0;-1:-1:-1;15263:423:0;-1:-1:-1;15263:423:0;;15311:360;15263:423:::1;;;;;;::::0;;;;-1:-1:-1;;15263:423:0;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15240:446;;;15709:11;15701:58;;;;-1:-1:-1::0;;;15701:58:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15804:20;15834:10;-1:-1:-1::0;;;;;15827:28:0::1;;15856:10;15827:40;;;;;;;;;;;;;-1:-1:-1::0;;;;;15827:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15827:40:0;;-1:-1:-1;15925:7:0;15890:31:::1;15827:40:::0;15907:13;15890:16:::1;:31::i;:::-;:42;15882:98;;;;-1:-1:-1::0;;;15882:98:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15083:911;;;14890:1111:::0;;;:::o;9076:23::-;;;-1:-1:-1;;;;;9076:23:0;;:::o;10443:278::-;10491:16;10554:6;10510:41;10530:20;;10510:15;:19;;:41;;;;:::i;:::-;:50;10491:69;;10579:11;:34;;;;-1:-1:-1;10596:17:0;;;;10594:19;10579:34;10571:107;;;;-1:-1:-1;;;10571:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10689:17:0;:24;;-1:-1:-1;;10689:24:0;10709:4;10689:24;;;10443:278::o;9247:35::-;;;;:::o;9434:29::-;;;;;;:::o;13781:456::-;13838:22;;13830:69;;;;;-1:-1:-1;;;13830:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13925:22;;13918:3;:29;;13910:76;;;;-1:-1:-1;;;13910:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14004:9;13999:159;14023:20;;14019:1;:24;13999:159;;;14065:32;14076:20;;;:17;:20;;;;;;;;;;-1:-1:-1;;;;;14076:20:0;14065:32;;:10;:32;;;;;:39;;-1:-1:-1;;14065:39:0;14100:4;14065:39;;;;;;14126:20;;;;;;;14119:27;;-1:-1:-1;;14119:27:0;;;14045:3;13999:159;;;-1:-1:-1;14193:1:0;14168:22;:26;;;14205:20;:24;13781:456::o;11680:154::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11774:15:::1;::::0;11757:69:::1;::::0;;;;;-1:-1:-1;;;;;11757:69:0;;::::1;;::::0;::::1;::::0;;;11774:15;;;::::1;::::0;11757:56:::1;::::0;:69;;;;;11774:15:::1;::::0;11757:69;;;;;;;11774:15;;11757:69;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11680:154:::0;:::o;12781:992::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12880:29;12872:74:::1;;;::::0;;-1:-1:-1;;;12872:74:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12965:20;::::0;:25;:56;::::1;;;-1:-1:-1::0;12994:22:0::1;::::0;:27;12965:56:::1;12957:110;;;;-1:-1:-1::0;;;12957:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13084:17;::::0;::::1;;13080:686;;;13118:20;:48:::0;;;13186:9:::1;13181:241;13201:29:::0;;::::1;13181:241;;;13297:1;13264:18:::0;;13283:1;13264:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;13264:21:0::1;-1:-1:-1::0;;;;;13264:35:0::1;;;13256:87;;;;-1:-1:-1::0;;;13256:87:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13385:18;;13404:1;13385:21;;;;;;;13362:20;::::0;;;:17:::1;13385:21;13362:20:::0;;;;;;;:44;;-1:-1:-1;;13362:44:0::1;-1:-1:-1::0;;;;;13385:21:0;;;::::1;::::0;;;::::1;;;13362:44;::::0;;;-1:-1:-1;13362:44:0;13232:3:::1;13181:241;;;-1:-1:-1::0;13461:3:0::1;9000:6;13461:24;13436:22;:49:::0;13080:686:::1;;;13523:9;13518:237;13538:29:::0;;::::1;13518:237;;;13634:1;13601:18:::0;;13620:1;13601:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;13601:21:0::1;-1:-1:-1::0;;;;;13601:35:0::1;;;13593:87;;;;-1:-1:-1::0;;;13593:87:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13735:4;13699:10;:33;13710:18;;13729:1;13710:21;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;13710:21:0::1;13699:33:::0;;-1:-1:-1;13699:33:0;::::1;::::0;;;;;;-1:-1:-1;13699:33:0;:40;;-1:-1:-1;;13699:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;13569:3:0::1;13518:237;;13080:686;12781:992:::0;;:::o;11211:255::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11306:15:::1;::::0;-1:-1:-1;;;;;11306:15:0::1;:29:::0;11298:81:::1;;;;-1:-1:-1::0;;;11298:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11424:15;:34:::0;;-1:-1:-1;;11424:34:0::1;-1:-1:-1::0;;;;;11424:34:0;;;::::1;::::0;;;::::1;::::0;;11211:255::o;9106:30::-;;;-1:-1:-1;;;;;9106:30:0;;:::o;12308:340::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12432:43;;::::1;12424:80;;;::::0;;-1:-1:-1;;;12424:80:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12520:9;12515:126;12535:22:::0;;::::1;12515:126;;;12612:14;;12627:1;12612:17;;;;;;;;;;;;;;;12579:14;:30;12594:11;;12606:1;12594:14;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;12594:14:0::1;12579:30:::0;;-1:-1:-1;12579:30:0;::::1;::::0;;;;;;-1:-1:-1;12579:30:0;:50;;-1:-1:-1;;12579:50:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;12559:3:0::1;12515:126;;9392:35:::0;;;;:::o;9924:204::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10014:26:0;::::1;10006:80;;;;-1:-1:-1::0;;;10006:80:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10097:8;:23:::0;;-1:-1:-1;;10097:23:0::1;-1:-1:-1::0;;;;;10097:23:0;;;::::1;::::0;;;::::1;::::0;;9924:204::o;9348:37::-;;;;:::o;12176:124::-;-1:-1:-1;;;;;12266:26:0;12242:4;12266:26;;;:14;:26;;;;;;;;;12176:124::o;12660:113::-;-1:-1:-1;;;;;12746:19:0;12722:4;12746:19;;;:10;:19;;;;;;;;;12660:113::o;1420:136::-;1478:7;1505:43;1509:1;1512;1505:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1498:50;1420:136;-1:-1:-1;;;1420:136:0:o;1859:192::-;1945:7;1981:12;1973:6;;;;1965:29;;;;-1:-1:-1;;;1965:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2017:5:0;;;1859:192::o
Swarm Source
ipfs://24bc4dd9a70149c3455e32b70c81dce6e13cfb6bd9be6bef634042a7deb2b784
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.