Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 492 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 11606538 | 1401 days ago | IN | 0 ETH | 0.00647547 | ||||
Exit | 11314330 | 1446 days ago | IN | 0 ETH | 0.00747129 | ||||
Exit | 11266199 | 1453 days ago | IN | 0 ETH | 0.00186795 | ||||
Get Reward | 11247072 | 1456 days ago | IN | 0 ETH | 0.00071323 | ||||
Get Reward | 11247070 | 1456 days ago | IN | 0 ETH | 0.00353543 | ||||
Set Reward Distr... | 11242453 | 1457 days ago | IN | 0 ETH | 0.00069124 | ||||
Exit | 11223400 | 1460 days ago | IN | 0 ETH | 0.00545515 | ||||
Get Reward | 11222661 | 1460 days ago | IN | 0 ETH | 0.00386635 | ||||
Get Reward | 11207334 | 1462 days ago | IN | 0 ETH | 0.00556464 | ||||
Withdraw | 11207331 | 1462 days ago | IN | 0 ETH | 0.00772521 | ||||
Stake | 11202899 | 1463 days ago | IN | 0 ETH | 0.003228 | ||||
Get Reward | 11200573 | 1463 days ago | IN | 0 ETH | 0.00248944 | ||||
Withdraw | 11200570 | 1463 days ago | IN | 0 ETH | 0.00249156 | ||||
Exit | 11197449 | 1464 days ago | IN | 0 ETH | 0.00507456 | ||||
Exit | 11197435 | 1464 days ago | IN | 0 ETH | 0.00524256 | ||||
Get Reward | 11194909 | 1464 days ago | IN | 0 ETH | 0.00134619 | ||||
Get Reward | 11193304 | 1464 days ago | IN | 0 ETH | 0.00102671 | ||||
Stake | 11193235 | 1464 days ago | IN | 0 ETH | 0.00154974 | ||||
Stake | 11192220 | 1464 days ago | IN | 0 ETH | 0.00682413 | ||||
Notify Reward Am... | 11190622 | 1465 days ago | IN | 0 ETH | 0.00235228 | ||||
Stake | 11189481 | 1465 days ago | IN | 0 ETH | 0.00436097 | ||||
Stake | 11189476 | 1465 days ago | IN | 0 ETH | 0.00223742 | ||||
Get Reward | 11181395 | 1466 days ago | IN | 0 ETH | 0.00160701 | ||||
Withdraw | 11176720 | 1467 days ago | IN | 0 ETH | 0.00673275 | ||||
Get Reward | 11167717 | 1468 days ago | IN | 0 ETH | 0.00118633 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
HDTUSDTPool
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-22 */ // File: @openzeppelin/contracts/math/Math.sol pragma solidity 0.5.16; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } } // File: @openzeppelin/contracts/math/SafeMath.sol /** * @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. * * _Available since v2.4.0._ */ 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. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 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. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: @openzeppelin/contracts/GSN/Context.sol /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/ownership/Ownable.sol /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _owner; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ 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); function mint(address account, uint amount) external; /** * @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: @openzeppelin/contracts/utils/Address.sol /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * This test is non-exhaustive, and there may be false-negatives: during the * execution of a contract's constructor, its address will be reported as * not containing a contract. * * IMPORTANT: It is unsafe to assume that an address for which this * function returns false is an externally-owned account (EOA) and not a * contract. */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. // 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 != 0x0 && codehash != accountHash); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { 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)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); 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)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "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"); } } } /** * Reward Amount Interface */ contract IRewardDistributionRecipient is Ownable { address rewardDistribution; function notifyRewardAmount(uint256 reward) external; modifier onlyRewardDistribution() { require(_msgSender() == rewardDistribution, "Caller is not reward distribution"); _; } function setRewardDistribution(address _rewardDistribution) external onlyOwner { rewardDistribution = _rewardDistribution; } } /** * Staking Token Wrapper */ contract HDTTokenWrapper { using SafeMath for uint256; using SafeERC20 for IERC20; //USDT IERC20 public stakeToken = IERC20(0xdAC17F958D2ee523a2206206994597C13D831ec7); uint256 private _totalSupply; mapping(address => uint256) private _balances; function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function stake(uint256 amount) public { _totalSupply = _totalSupply.add(amount); _balances[msg.sender] = _balances[msg.sender].add(amount); stakeToken.safeTransferFrom(msg.sender, address(this), amount); } function withdraw(uint256 amount) public { _totalSupply = _totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); stakeToken.safeTransfer(msg.sender, amount); } } /** * HDT-USDT Pool */ contract HDTUSDTPool is HDTTokenWrapper, IRewardDistributionRecipient { IERC20 public hdt = IERC20(0x1cc945Be7d0D2C852d0096A8b5714b44eD21D5D3); uint256 public constant DURATION = 7 days; uint256 public constant startTime = 1600862400; //utc+8 2020-09-23 20:00:00 uint256 public periodFinish = 0; uint256 public rewardRate = 0; uint256 public lastUpdateTime; uint256 public rewardPerTokenStored; bool private open = true; mapping(address => uint256) public userRewardPerTokenPaid; mapping(address => uint256) public rewards; // Unclaimed rewards event RewardAdded(uint256 reward); event Staked(address indexed user, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event RewardPaid(address indexed user, uint256 reward); event SetOpen(bool _open); modifier updateReward(address account) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); userRewardPerTokenPaid[account] = rewardPerTokenStored; } _; } function lastTimeRewardApplicable() public view returns (uint256) { return Math.min(block.timestamp, periodFinish); } /** * Calculate the rewards for each token */ function rewardPerToken() public view returns (uint256) { if (totalSupply() == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( lastTimeRewardApplicable() .sub(lastUpdateTime) .mul(rewardRate) .mul(1e18) .div(totalSupply()) ); } function earned(address account) public view returns (uint256) { return balanceOf(account) .mul(rewardPerToken().sub(userRewardPerTokenPaid[account])) .div(1e18) .add(rewards[account]); } function stake(uint256 amount) public checkOpen checkStart updateReward(msg.sender){ require(amount > 0, "HDT-USDT-POOL: Cannot stake 0"); super.stake(amount); emit Staked(msg.sender, amount); } function withdraw(uint256 amount) public checkStart updateReward(msg.sender){ require(amount > 0, "HDT-USDT-POOL: Cannot withdraw 0"); super.withdraw(amount); emit Withdrawn(msg.sender, amount); } function exit() external { withdraw(balanceOf(msg.sender)); getReward(); } function getReward() public checkStart updateReward(msg.sender){ uint256 reward = earned(msg.sender); if (reward > 0) { rewards[msg.sender] = 0; hdt.safeTransfer(msg.sender, reward); emit RewardPaid(msg.sender, reward); } } modifier checkStart(){ require(block.timestamp > startTime,"HDT-USDT-POOL: Not start"); _; } modifier checkOpen() { require(open, "HDT-USDT-POOL: Pool is closed"); _; } function getPeriodFinish() public view returns (uint256) { return periodFinish; } function isOpen() public view returns (bool) { return open; } function setOpen(bool _open) external onlyOwner { open = _open; emit SetOpen(_open); } function notifyRewardAmount(uint256 reward) external onlyRewardDistribution checkOpen updateReward(address(0)){ if (block.timestamp > startTime){ if (block.timestamp >= periodFinish) { uint256 period = block.timestamp.sub(startTime).div(DURATION).add(1); periodFinish = startTime.add(period.mul(DURATION)); rewardRate = reward.div(periodFinish.sub(block.timestamp)); } else { uint256 remaining = periodFinish.sub(block.timestamp); uint256 leftover = remaining.mul(rewardRate); rewardRate = reward.add(leftover).div(remaining); } lastUpdateTime = block.timestamp; hdt.mint(address(this),reward); emit RewardAdded(reward); }else { rewardRate = reward.div(DURATION); periodFinish = startTime.add(DURATION); lastUpdateTime = startTime; hdt.mint(address(this),reward); emit RewardAdded(reward); } // avoid overflow to lock assets _checkRewardRate(); } function _checkRewardRate() internal view returns (uint256) { return DURATION.mul(rewardRate).mul(1e18); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_open","type":"bool"}],"name":"SetOpen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"constant":true,"inputs":[],"name":"DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getPeriodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hdt","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_open","type":"bool"}],"name":"setOpen","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_rewardDistribution","type":"address"}],"name":"setRewardDistribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakeToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405273dac17f958d2ee523a2206206994597c13d831ec76000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731cc945be7d0d2c852d0096a8b5714b44ed21d5d3600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060065560006007556001600a60006101000a81548160ff0219169083151502179055506100e06101a260201b60201c565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36101aa565b600033905090565b612627806101b96000396000f3fe608060405234801561001057600080fd5b50600436106101c35760003560e01c806378e97925116100f9578063c8f33c9111610097578063df136d6511610071578063df136d651461064c578063e9fad8ee1461066a578063ebe2b12b14610674578063f2fde38b14610692576101c3565b8063c8f33c91146105f2578063cb17d14f14610610578063cd3daf9d1461062e576101c3565b80638b876347116100d35780638b876347146105005780638da5cb5b146105585780638f32d59b146105a2578063a694fc3a146105c4576101c3565b806378e97925146104a65780637b0a47ee146104c457806380faa57d146104e2576101c3565b80633c6b16ab1161016657806351ed6a301161014057806351ed6a30146103ca5780636fdca5e01461041457806370a0823114610444578063715018a61461049c576101c3565b80633c6b16ab146103705780633d18b9121461039e57806347535d7b146103a8576101c3565b806318160ddd116101a257806318160ddd146102bc5780631be05289146102da578063219623c3146102f85780632e1a7d4d14610342576101c3565b80628cc262146101c85780630700037d146102205780630d68b76114610278575b600080fd5b61020a600480360360208110156101de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106d6565b6040518082815260200191505060405180910390f35b6102626004803603602081101561023657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107bd565b6040518082815260200191505060405180910390f35b6102ba6004803603602081101561028e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107d5565b005b6102c4610893565b6040518082815260200191505060405180910390f35b6102e261089d565b6040518082815260200191505060405180910390f35b6103006108a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61036e6004803603602081101561035857600080fd5b81019080803590602001909291905050506108ca565b005b61039c6004803603602081101561038657600080fd5b8101908080359060200190929190505050610af8565b005b6103a661107a565b005b6103b06112d2565b604051808215151515815260200191505060405180910390f35b6103d26112e9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104426004803603602081101561042a57600080fd5b8101908080351515906020019092919050505061130e565b005b6104866004803603602081101561045a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113e0565b6040518082815260200191505060405180910390f35b6104a4611429565b005b6104ae611564565b6040518082815260200191505060405180910390f35b6104cc61156c565b6040518082815260200191505060405180910390f35b6104ea611572565b6040518082815260200191505060405180910390f35b6105426004803603602081101561051657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611585565b6040518082815260200191505060405180910390f35b61056061159d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105aa6115c7565b604051808215151515815260200191505060405180910390f35b6105f0600480360360208110156105da57600080fd5b8101908080359060200190929190505050611626565b005b6105fa6118d6565b6040518082815260200191505060405180910390f35b6106186118dc565b6040518082815260200191505060405180910390f35b6106366118e6565b6040518082815260200191505060405180910390f35b61065461197e565b6040518082815260200191505060405180910390f35b610672611984565b005b61067c61199f565b6040518082815260200191505060405180910390f35b6106d4600480360360208110156106a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a5565b005b60006107b6600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107a8670de0b6b3a764000061079a610783600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107756118e6565b611a2b90919063ffffffff16565b61078c886113e0565b611a7590919063ffffffff16565b611afb90919063ffffffff16565b611b4590919063ffffffff16565b9050919050565b600c6020528060005260406000206000915090505481565b6107dd6115c7565b61084f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600154905090565b62093a8081565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b635f6b38c04211610943576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4844542d555344542d504f4f4c3a204e6f74207374617274000000000000000081525060200191505060405180910390fd5b3361094c6118e6565b60098190555061095a611572565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a275761099d816106d6565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008211610a9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4844542d555344542d504f4f4c3a2043616e6e6f74207769746864726177203081525060200191505060405180910390fd5b610aa682611bcd565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a25050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b39611ccc565b73ffffffffffffffffffffffffffffffffffffffff1614610ba5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125a86021913960400191505060405180910390fd5b600a60009054906101000a900460ff16610c27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4844542d555344542d504f4f4c3a20506f6f6c20697320636c6f73656400000081525060200191505060405180910390fd5b6000610c316118e6565b600981905550610c3f611572565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d0c57610c82816106d6565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b635f6b38c0421115610f2d576006544210610dc9576000610d626001610d5462093a80610d46635f6b38c042611a2b90919063ffffffff16565b611afb90919063ffffffff16565b611b4590919063ffffffff16565b9050610d90610d7d62093a8083611a7590919063ffffffff16565b635f6b38c0611b4590919063ffffffff16565b600681905550610dbd610dae42600654611a2b90919063ffffffff16565b84611afb90919063ffffffff16565b60078190555050610e29565b6000610de042600654611a2b90919063ffffffff16565b90506000610df960075483611a7590919063ffffffff16565b9050610e2082610e128387611b4590919063ffffffff16565b611afb90919063ffffffff16565b60078190555050505b42600881905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610ed957600080fd5b505af1158015610eed573d6000803e3d6000fd5b505050507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d826040518082815260200191505060405180910390a161106d565b610f4362093a8083611afb90919063ffffffff16565b600781905550610f6362093a80635f6b38c0611b4590919063ffffffff16565b600681905550635f6b38c0600881905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561101d57600080fd5b505af1158015611031573d6000803e3d6000fd5b505050507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d826040518082815260200191505060405180910390a15b611075611cd4565b505050565b635f6b38c042116110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4844542d555344542d504f4f4c3a204e6f74207374617274000000000000000081525060200191505060405180910390fd5b336110fc6118e6565b60098190555061110a611572565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111d75761114d816106d6565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006111e2336106d6565b905060008111156112ce576000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061127f3382600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d0d9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040518082815260200191505060405180910390a25b5050565b6000600a60009054906101000a900460ff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113166115c7565b611388576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a60006101000a81548160ff0219169083151502179055507f294847065aeb5e8e788661acfc7dbcb26c7f0454406268fce96109d7136928af81604051808215151515815260200191505060405180910390a150565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114316115c7565b6114a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b635f6b38c081565b60075481565b600061158042600654611dde565b905090565b600b6020528060005260406000206000915090505481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661160a611ccc565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600a60009054906101000a900460ff166116a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4844542d555344542d504f4f4c3a20506f6f6c20697320636c6f73656400000081525060200191505060405180910390fd5b635f6b38c04211611721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4844542d555344542d504f4f4c3a204e6f74207374617274000000000000000081525060200191505060405180910390fd5b3361172a6118e6565b600981905550611738611572565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118055761177b816106d6565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000821161187b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4844542d555344542d504f4f4c3a2043616e6e6f74207374616b65203000000081525060200191505060405180910390fd5b61188482611df7565b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a25050565b60085481565b6000600654905090565b6000806118f1610893565b141561190157600954905061197b565b61197861196761190f610893565b611959670de0b6b3a764000061194b60075461193d60085461192f611572565b611a2b90919063ffffffff16565b611a7590919063ffffffff16565b611a7590919063ffffffff16565b611afb90919063ffffffff16565b600954611b4590919063ffffffff16565b90505b90565b60095481565b611995611990336113e0565b6108ca565b61199d61107a565b565b60065481565b6119ad6115c7565b611a1f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611a2881611ef8565b50565b6000611a6d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061203e565b905092915050565b600080831415611a885760009050611af5565b6000828402905082848281611a9957fe5b0414611af0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125876021913960400191505060405180910390fd5b809150505b92915050565b6000611b3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120fe565b905092915050565b600080828401905083811015611bc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b611be281600154611a2b90919063ffffffff16565b600181905550611c3a81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2b90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cc933826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d0d9092919063ffffffff16565b50565b600033905090565b6000611d08670de0b6b3a7640000611cfa60075462093a80611a7590919063ffffffff16565b611a7590919063ffffffff16565b905090565b611dd9838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506121c4565b505050565b6000818310611ded5781611def565b825b905092915050565b611e0c81600154611b4590919063ffffffff16565b600181905550611e6481600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4590919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ef53330836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661240f909392919063ffffffff16565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806125616026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008383111582906120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120b0578082015181840152602081019050612095565b50505050905090810190601f1680156120dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561216f578082015181840152602081019050612154565b50505050905090810190601f16801561219c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816121b657fe5b049050809150509392505050565b6121e38273ffffffffffffffffffffffffffffffffffffffff16612515565b612255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106122a45780518252602082019150602081019050602083039250612281565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612306576040519150601f19603f3d011682016040523d82523d6000602084013e61230b565b606091505b509150915081612383576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115612409578080602001905160208110156123a257600080fd5b8101908080519060200190929190505050612408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806125c9602a913960400191505060405180910390fd5b5b50505050565b61250f848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506121c4565b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156125575750808214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743616c6c6572206973206e6f742072657761726420646973747269627574696f6e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820518322fd80724170c30b855735d3a06701bb03d8a6dae8eaee7873928688728964736f6c63430005100032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c35760003560e01c806378e97925116100f9578063c8f33c9111610097578063df136d6511610071578063df136d651461064c578063e9fad8ee1461066a578063ebe2b12b14610674578063f2fde38b14610692576101c3565b8063c8f33c91146105f2578063cb17d14f14610610578063cd3daf9d1461062e576101c3565b80638b876347116100d35780638b876347146105005780638da5cb5b146105585780638f32d59b146105a2578063a694fc3a146105c4576101c3565b806378e97925146104a65780637b0a47ee146104c457806380faa57d146104e2576101c3565b80633c6b16ab1161016657806351ed6a301161014057806351ed6a30146103ca5780636fdca5e01461041457806370a0823114610444578063715018a61461049c576101c3565b80633c6b16ab146103705780633d18b9121461039e57806347535d7b146103a8576101c3565b806318160ddd116101a257806318160ddd146102bc5780631be05289146102da578063219623c3146102f85780632e1a7d4d14610342576101c3565b80628cc262146101c85780630700037d146102205780630d68b76114610278575b600080fd5b61020a600480360360208110156101de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106d6565b6040518082815260200191505060405180910390f35b6102626004803603602081101561023657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107bd565b6040518082815260200191505060405180910390f35b6102ba6004803603602081101561028e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107d5565b005b6102c4610893565b6040518082815260200191505060405180910390f35b6102e261089d565b6040518082815260200191505060405180910390f35b6103006108a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61036e6004803603602081101561035857600080fd5b81019080803590602001909291905050506108ca565b005b61039c6004803603602081101561038657600080fd5b8101908080359060200190929190505050610af8565b005b6103a661107a565b005b6103b06112d2565b604051808215151515815260200191505060405180910390f35b6103d26112e9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104426004803603602081101561042a57600080fd5b8101908080351515906020019092919050505061130e565b005b6104866004803603602081101561045a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113e0565b6040518082815260200191505060405180910390f35b6104a4611429565b005b6104ae611564565b6040518082815260200191505060405180910390f35b6104cc61156c565b6040518082815260200191505060405180910390f35b6104ea611572565b6040518082815260200191505060405180910390f35b6105426004803603602081101561051657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611585565b6040518082815260200191505060405180910390f35b61056061159d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105aa6115c7565b604051808215151515815260200191505060405180910390f35b6105f0600480360360208110156105da57600080fd5b8101908080359060200190929190505050611626565b005b6105fa6118d6565b6040518082815260200191505060405180910390f35b6106186118dc565b6040518082815260200191505060405180910390f35b6106366118e6565b6040518082815260200191505060405180910390f35b61065461197e565b6040518082815260200191505060405180910390f35b610672611984565b005b61067c61199f565b6040518082815260200191505060405180910390f35b6106d4600480360360208110156106a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a5565b005b60006107b6600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107a8670de0b6b3a764000061079a610783600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107756118e6565b611a2b90919063ffffffff16565b61078c886113e0565b611a7590919063ffffffff16565b611afb90919063ffffffff16565b611b4590919063ffffffff16565b9050919050565b600c6020528060005260406000206000915090505481565b6107dd6115c7565b61084f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600154905090565b62093a8081565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b635f6b38c04211610943576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4844542d555344542d504f4f4c3a204e6f74207374617274000000000000000081525060200191505060405180910390fd5b3361094c6118e6565b60098190555061095a611572565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a275761099d816106d6565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008211610a9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4844542d555344542d504f4f4c3a2043616e6e6f74207769746864726177203081525060200191505060405180910390fd5b610aa682611bcd565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a25050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b39611ccc565b73ffffffffffffffffffffffffffffffffffffffff1614610ba5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125a86021913960400191505060405180910390fd5b600a60009054906101000a900460ff16610c27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4844542d555344542d504f4f4c3a20506f6f6c20697320636c6f73656400000081525060200191505060405180910390fd5b6000610c316118e6565b600981905550610c3f611572565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d0c57610c82816106d6565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b635f6b38c0421115610f2d576006544210610dc9576000610d626001610d5462093a80610d46635f6b38c042611a2b90919063ffffffff16565b611afb90919063ffffffff16565b611b4590919063ffffffff16565b9050610d90610d7d62093a8083611a7590919063ffffffff16565b635f6b38c0611b4590919063ffffffff16565b600681905550610dbd610dae42600654611a2b90919063ffffffff16565b84611afb90919063ffffffff16565b60078190555050610e29565b6000610de042600654611a2b90919063ffffffff16565b90506000610df960075483611a7590919063ffffffff16565b9050610e2082610e128387611b4590919063ffffffff16565b611afb90919063ffffffff16565b60078190555050505b42600881905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610ed957600080fd5b505af1158015610eed573d6000803e3d6000fd5b505050507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d826040518082815260200191505060405180910390a161106d565b610f4362093a8083611afb90919063ffffffff16565b600781905550610f6362093a80635f6b38c0611b4590919063ffffffff16565b600681905550635f6b38c0600881905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561101d57600080fd5b505af1158015611031573d6000803e3d6000fd5b505050507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d826040518082815260200191505060405180910390a15b611075611cd4565b505050565b635f6b38c042116110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4844542d555344542d504f4f4c3a204e6f74207374617274000000000000000081525060200191505060405180910390fd5b336110fc6118e6565b60098190555061110a611572565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111d75761114d816106d6565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006111e2336106d6565b905060008111156112ce576000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061127f3382600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d0d9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040518082815260200191505060405180910390a25b5050565b6000600a60009054906101000a900460ff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113166115c7565b611388576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a60006101000a81548160ff0219169083151502179055507f294847065aeb5e8e788661acfc7dbcb26c7f0454406268fce96109d7136928af81604051808215151515815260200191505060405180910390a150565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114316115c7565b6114a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b635f6b38c081565b60075481565b600061158042600654611dde565b905090565b600b6020528060005260406000206000915090505481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661160a611ccc565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600a60009054906101000a900460ff166116a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4844542d555344542d504f4f4c3a20506f6f6c20697320636c6f73656400000081525060200191505060405180910390fd5b635f6b38c04211611721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4844542d555344542d504f4f4c3a204e6f74207374617274000000000000000081525060200191505060405180910390fd5b3361172a6118e6565b600981905550611738611572565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118055761177b816106d6565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000821161187b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4844542d555344542d504f4f4c3a2043616e6e6f74207374616b65203000000081525060200191505060405180910390fd5b61188482611df7565b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a25050565b60085481565b6000600654905090565b6000806118f1610893565b141561190157600954905061197b565b61197861196761190f610893565b611959670de0b6b3a764000061194b60075461193d60085461192f611572565b611a2b90919063ffffffff16565b611a7590919063ffffffff16565b611a7590919063ffffffff16565b611afb90919063ffffffff16565b600954611b4590919063ffffffff16565b90505b90565b60095481565b611995611990336113e0565b6108ca565b61199d61107a565b565b60065481565b6119ad6115c7565b611a1f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611a2881611ef8565b50565b6000611a6d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061203e565b905092915050565b600080831415611a885760009050611af5565b6000828402905082848281611a9957fe5b0414611af0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125876021913960400191505060405180910390fd5b809150505b92915050565b6000611b3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120fe565b905092915050565b600080828401905083811015611bc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b611be281600154611a2b90919063ffffffff16565b600181905550611c3a81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2b90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cc933826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d0d9092919063ffffffff16565b50565b600033905090565b6000611d08670de0b6b3a7640000611cfa60075462093a80611a7590919063ffffffff16565b611a7590919063ffffffff16565b905090565b611dd9838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506121c4565b505050565b6000818310611ded5781611def565b825b905092915050565b611e0c81600154611b4590919063ffffffff16565b600181905550611e6481600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4590919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ef53330836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661240f909392919063ffffffff16565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806125616026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008383111582906120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120b0578082015181840152602081019050612095565b50505050905090810190601f1680156120dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561216f578082015181840152602081019050612154565b50505050905090810190601f16801561219c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816121b657fe5b049050809150509392505050565b6121e38273ffffffffffffffffffffffffffffffffffffffff16612515565b612255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106122a45780518252602082019150602081019050602083039250612281565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612306576040519150601f19603f3d011682016040523d82523d6000602084013e61230b565b606091505b509150915081612383576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115612409578080602001905160208110156123a257600080fd5b8101908080519060200190929190505050612408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806125c9602a913960400191505060405180910390fd5b5b50505050565b61250f848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506121c4565b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156125575750808214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743616c6c6572206973206e6f742072657761726420646973747269627574696f6e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820518322fd80724170c30b855735d3a06701bb03d8a6dae8eaee7873928688728964736f6c63430005100032
Deployed Bytecode Sourcemap
21287:4812:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21287:4812:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23112:265;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23112:265:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21820:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21820:42:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20077:161;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20077:161:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;20569:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21441:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21364:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23620:228;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23620:228:0;;;;;;;;;;;;;;;;;:::i;:::-;;24795:1169;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24795:1169:0;;;;;;;;;;;;;;;;;:::i;:::-;;23961:294;;;:::i;:::-;;24595:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20393:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;24678:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24678:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;20668:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20668:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9192:140;;;:::i;:::-;;21491:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21610:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22482:131;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21755:57;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21755:57:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8381:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8747:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23385:227;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23385:227:0;;;;;;;;;;;;;;;;;:::i;:::-;;21646:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24492:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22684:420;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21682:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23856:97;;;:::i;:::-;;21572:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9487:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9487:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;23112:265;23166:7;23206:163;23352:7;:16;23360:7;23352:16;;;;;;;;;;;;;;;;23206:123;23324:4;23206:95;23247:53;23268:22;:31;23291:7;23268:31;;;;;;;;;;;;;;;;23247:16;:14;:16::i;:::-;:20;;:53;;;;:::i;:::-;23206:18;23216:7;23206:9;:18::i;:::-;:40;;:95;;;;:::i;:::-;:117;;:123;;;;:::i;:::-;:145;;:163;;;;:::i;:::-;23186:183;;23112:265;;;:::o;21820:42::-;;;;;;;;;;;;;;;;;:::o;20077:161::-;8593:9;:7;:9::i;:::-;8585:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20211:19;20190:18;;:40;;;;;;;;;;;;;;;;;;20077:161;:::o;20569:91::-;20613:7;20640:12;;20633:19;;20569:91;:::o;21441:41::-;21476:6;21441:41;:::o;21364:70::-;;;;;;;;;;;;;:::o;23620:228::-;21527:10;24303:15;:27;24295:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23685:10;22217:16;:14;:16::i;:::-;22194:20;:39;;;;22261:26;:24;:26::i;:::-;22244:14;:43;;;;22321:1;22302:21;;:7;:21;;;22298:157;;22359:15;22366:7;22359:6;:15::i;:::-;22340:7;:16;22348:7;22340:16;;;;;;;;;;;;;;;:34;;;;22423:20;;22389:22;:31;22412:7;22389:31;;;;;;;;;;;;;;;:54;;;;22298:157;23724:1;23715:6;:10;23707:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23773:22;23788:6;23773:14;:22::i;:::-;23821:10;23811:29;;;23833:6;23811:29;;;;;;;;;;;;;;;;;;24369:1;23620:228;:::o;24795:1169::-;19993:18;;;;;;;;;;;19977:34;;:12;:10;:12::i;:::-;:34;;;19969:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24426:4;;;;;;;;;;;24418:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24938:1;22217:16;:14;:16::i;:::-;22194:20;:39;;;;22261:26;:24;:26::i;:::-;22244:14;:43;;;;22321:1;22302:21;;:7;:21;;;22298:157;;22359:15;22366:7;22359:6;:15::i;:::-;22340:7;:16;22348:7;22340:16;;;;;;;;;;;;;;;:34;;;;22423:20;;22389:22;:31;22412:7;22389:31;;;;;;;;;;;;;;;:54;;;;22298:157;21527:10;24956:15;:27;24952:932;;;25022:12;;25003:15;:31;24999:510;;25055:14;25072:51;25121:1;25072:44;21476:6;25072:30;21527:10;25072:15;:19;;:30;;;;:::i;:::-;:34;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;25055:68;;25157:35;25171:20;21476:6;25171;:10;;:20;;;;:::i;:::-;21527:10;25157:13;;:35;;;;:::i;:::-;25142:12;:50;;;;25224:45;25235:33;25252:15;25235:12;;:16;;:33;;;;:::i;:::-;25224:6;:10;;:45;;;;:::i;:::-;25211:10;:58;;;;24999:510;;;;25310:17;25330:33;25347:15;25330:12;;:16;;:33;;;;:::i;:::-;25310:53;;25382:16;25401:25;25415:10;;25401:9;:13;;:25;;;;:::i;:::-;25382:44;;25458:35;25483:9;25458:20;25469:8;25458:6;:10;;:20;;;;:::i;:::-;:24;;:35;;;;:::i;:::-;25445:10;:48;;;;24999:510;;;25540:15;25523:14;:32;;;;25570:3;;;;;;;;;;;:8;;;25587:4;25593:6;25570:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25570:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25570:30:0;;;;25620:19;25632:6;25620:19;;;;;;;;;;;;;;;;;;24952:932;;;25682:20;21476:6;25682;:10;;:20;;;;:::i;:::-;25669:10;:33;;;;25730:23;21476:6;21527:10;25730:13;;:23;;;;:::i;:::-;25715:12;:38;;;;21527:10;25766:14;:26;;;;25805:3;;;;;;;;;;;:8;;;25822:4;25828:6;25805:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25805:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25805:30:0;;;;25853:19;25865:6;25853:19;;;;;;;;;;;;;;;;;;24952:932;25938:18;:16;:18::i;:::-;;24475:1;24795:1169;:::o;23961:294::-;21527:10;24303:15;:27;24295:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24013:10;22217:16;:14;:16::i;:::-;22194:20;:39;;;;22261:26;:24;:26::i;:::-;22244:14;:43;;;;22321:1;22302:21;;:7;:21;;;22298:157;;22359:15;22366:7;22359:6;:15::i;:::-;22340:7;:16;22348:7;22340:16;;;;;;;;;;;;;;;:34;;;;22423:20;;22389:22;:31;22412:7;22389:31;;;;;;;;;;;;;;;:54;;;;22298:157;24035:14;24052:18;24059:10;24052:6;:18::i;:::-;24035:35;;24094:1;24085:6;:10;24081:167;;;24134:1;24112:7;:19;24120:10;24112:19;;;;;;;;;;;;;;;:23;;;;24150:36;24167:10;24179:6;24150:3;;;;;;;;;;;:16;;;;:36;;;;;:::i;:::-;24217:10;24206:30;;;24229:6;24206:30;;;;;;;;;;;;;;;;;;24081:167;22465:1;24369;23961:294::o;24595:75::-;24634:4;24658;;;;;;;;;;;24651:11;;24595:75;:::o;20393:77::-;;;;;;;;;;;;;:::o;24678:109::-;8593:9;:7;:9::i;:::-;8585:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24744:5;24737:4;;:12;;;;;;;;;;;;;;;;;;24765:14;24773:5;24765:14;;;;;;;;;;;;;;;;;;;;;;24678:109;:::o;20668:110::-;20725:7;20752:9;:18;20762:7;20752:18;;;;;;;;;;;;;;;;20745:25;;20668:110;;;:::o;9192:140::-;8593:9;:7;:9::i;:::-;8585:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9291:1;9254:40;;9275:6;;;;;;;;;;;9254:40;;;;;;;;;;;;9322:1;9305:6;;:19;;;;;;;;;;;;;;;;;;9192:140::o;21491:46::-;21527:10;21491:46;:::o;21610:29::-;;;;:::o;22482:131::-;22539:7;22566:39;22575:15;22592:12;;22566:8;:39::i;:::-;22559:46;;22482:131;:::o;21755:57::-;;;;;;;;;;;;;;;;;:::o;8381:79::-;8419:7;8446:6;;;;;;;;;;;8439:13;;8381:79;:::o;8747:94::-;8787:4;8827:6;;;;;;;;;;;8811:22;;:12;:10;:12::i;:::-;:22;;;8804:29;;8747:94;:::o;23385:227::-;24426:4;;;;;;;;;;;24418:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21527:10;24303:15;:27;24295:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23457:10;22217:16;:14;:16::i;:::-;22194:20;:39;;;;22261:26;:24;:26::i;:::-;22244:14;:43;;;;22321:1;22302:21;;:7;:21;;;22298:157;;22359:15;22366:7;22359:6;:15::i;:::-;22340:7;:16;22348:7;22340:16;;;;;;;;;;;;;;;:34;;;;22423:20;;22389:22;:31;22412:7;22389:31;;;;;;;;;;;;;;;:54;;;;22298:157;23497:1;23488:6;:10;23480:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23543:19;23555:6;23543:11;:19::i;:::-;23585:10;23578:26;;;23597:6;23578:26;;;;;;;;;;;;;;;;;;24369:1;23385:227;:::o;21646:29::-;;;;:::o;24492:95::-;24540:7;24567:12;;24560:19;;24492:95;:::o;22684:420::-;22731:7;22772:1;22755:13;:11;:13::i;:::-;:18;22751:78;;;22797:20;;22790:27;;;;22751:78;22859:237;22902:179;23067:13;:11;:13::i;:::-;22902:138;23035:4;22902:106;22997:10;;22902:68;22955:14;;22902:26;:24;:26::i;:::-;:52;;:68;;;;:::i;:::-;:94;;:106;;;;:::i;:::-;:132;;:138;;;;:::i;:::-;:164;;:179;;;;:::i;:::-;22859:20;;:24;;:237;;;;:::i;:::-;22839:257;;22684:420;;:::o;21682:35::-;;;;:::o;23856:97::-;23892:31;23901:21;23911:10;23901:9;:21::i;:::-;23892:8;:31::i;:::-;23934:11;:9;:11::i;:::-;23856:97::o;21572:31::-;;;;:::o;9487:109::-;8593:9;:7;:9::i;:::-;8585:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9560:28;9579:8;9560:18;:28::i;:::-;9487:109;:::o;2189:136::-;2247:7;2274:43;2278:1;2281;2274:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2267:50;;2189:136;;;;:::o;3105:471::-;3163:7;3413:1;3408;:6;3404:47;;;3438:1;3431:8;;;;3404:47;3463:9;3479:1;3475;:5;3463:17;;3508:1;3503;3499;:5;;;;;;:10;3491:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3567:1;3560:8;;;3105:471;;;;;:::o;4044:132::-;4102:7;4129:39;4133:1;4136;4129:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4122:46;;4044:132;;;;:::o;1733:181::-;1791:7;1811:9;1827:1;1823;:5;1811:17;;1852:1;1847;:6;;1839:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1905:1;1898:8;;;1733:181;;;;:::o;21031:221::-;21098:24;21115:6;21098:12;;:16;;:24;;;;:::i;:::-;21083:12;:39;;;;21157:33;21183:6;21157:9;:21;21167:10;21157:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;21133:9;:21;21143:10;21133:21;;;;;;;;;;;;;;;:57;;;;21201:43;21225:10;21237:6;21201:10;;;;;;;;;;;:23;;;;:43;;;;;:::i;:::-;21031:221;:::o;7159:98::-;7204:15;7239:10;7232:17;;7159:98;:::o;25976:120::-;26027:7;26054:34;26083:4;26054:24;26067:10;;21476:6;26054:12;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;26047:41;;25976:120;:::o;16574:176::-;16657:85;16676:5;16706;:14;;;:23;;;;16731:2;16735:5;16683:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16683:58:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;16683:58:0;16657:18;:85::i;:::-;16574:176;;;:::o;424:106::-;482:7;513:1;509;:5;:13;;521:1;509:13;;;517:1;509:13;502:20;;424:106;;;;:::o;20786:237::-;20850:24;20867:6;20850:12;;:16;;:24;;;;:::i;:::-;20835:12;:39;;;;20909:33;20935:6;20909:9;:21;20919:10;20909:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;20885:9;:21;20895:10;20885:21;;;;;;;;;;;;;;;:57;;;;20953:62;20981:10;21001:4;21008:6;20953:10;;;;;;;;;;;:27;;;;:62;;;;;;:::i;:::-;20786:237;:::o;9702:229::-;9796:1;9776:22;;:8;:22;;;;9768:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9886:8;9857:38;;9878:6;;;;;;;;;;;9857:38;;;;;;;;;;;;9915:8;9906:6;;:17;;;;;;;;;;;;;;;;;;9702:229;:::o;2662:192::-;2748:7;2781:1;2776;:6;;2784:12;2768:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2768:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2808:9;2824:1;2820;:5;2808:17;;2845:1;2838:8;;;2662:192;;;;;:::o;4706:345::-;4792:7;4891:1;4887;:5;4894:12;4879:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4879:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4918:9;4934:1;4930;:5;;;;;;4918:17;;5042:1;5035:8;;;4706:345;;;;;:::o;18613:1114::-;19217:27;19225:5;19217:25;;;:27::i;:::-;19209:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19354:12;19368:23;19403:5;19395:19;;19415:4;19395:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;19395:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;19353:67:0;;;;19439:7;19431:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19520:1;19500:10;:17;:21;19496:224;;;19642:10;19631:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19631:30:0;;;;;;;;;;;;;;;;19623:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19496:224;18613:1114;;;;:::o;16758:204::-;16859:95;16878:5;16908;:18;;;:27;;;;16937:4;16943:2;16947:5;16885:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16885:68:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;16885:68:0;16859:18;:95::i;:::-;16758:204;;;;:::o;13447:810::-;13507:4;13960:16;13987:19;14009:66;13987:88;;;;14178:7;14166:20;14154:32;;14218:3;14206:15;;:8;:15;;:42;;;;;14237:11;14225:8;:23;;14206:42;14198:51;;;;13447:810;;;:::o
Swarm Source
bzzr://518322fd80724170c30b855735d3a06701bb03d8a6dae8eaee78739286887289
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $1 | 975.0646 | $977.01 |
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.