Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 611 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Init Vestings Ti... | 13771494 | 1124 days ago | IN | 0 ETH | 0.00290741 | ||||
Init Vestings Ti... | 13770771 | 1124 days ago | IN | 0 ETH | 0.00250292 | ||||
Init Vestings Ti... | 13765647 | 1125 days ago | IN | 0 ETH | 0.00207062 | ||||
Init Vestings Ti... | 13765619 | 1125 days ago | IN | 0 ETH | 0.00213879 | ||||
Emergency Withdr... | 13765374 | 1125 days ago | IN | 0 ETH | 0.00228976 | ||||
Claim | 13760416 | 1126 days ago | IN | 0 ETH | 0.00883493 | ||||
Claim | 13745562 | 1128 days ago | IN | 0 ETH | 0.01135262 | ||||
Claim | 13743892 | 1128 days ago | IN | 0 ETH | 0.0118663 | ||||
Init Vestings Ti... | 13741283 | 1129 days ago | IN | 0 ETH | 0.0062037 | ||||
Claim | 13728099 | 1131 days ago | IN | 0 ETH | 0.00552743 | ||||
Claim | 13727128 | 1131 days ago | IN | 0 ETH | 0.01181365 | ||||
Claim | 13726218 | 1131 days ago | IN | 0 ETH | 0.00452137 | ||||
Claim | 13722277 | 1132 days ago | IN | 0 ETH | 0.00964635 | ||||
Claim | 13715611 | 1133 days ago | IN | 0 ETH | 0.00661997 | ||||
Claim | 13714852 | 1133 days ago | IN | 0 ETH | 0.00668962 | ||||
Claim | 13714339 | 1133 days ago | IN | 0 ETH | 0.00677734 | ||||
Claim | 13713602 | 1133 days ago | IN | 0 ETH | 0.01402454 | ||||
Claim | 13704623 | 1134 days ago | IN | 0 ETH | 0.01584695 | ||||
Claim | 13703538 | 1135 days ago | IN | 0 ETH | 0.00791471 | ||||
Claim | 13701930 | 1135 days ago | IN | 0 ETH | 0.0071632 | ||||
Claim | 13697437 | 1136 days ago | IN | 0 ETH | 0.00587974 | ||||
Claim | 13697302 | 1136 days ago | IN | 0 ETH | 0.00598943 | ||||
Claim | 13689014 | 1137 days ago | IN | 0 ETH | 0.01891242 | ||||
Claim | 13677751 | 1139 days ago | IN | 0 ETH | 0.0076476 | ||||
Claim | 13675767 | 1139 days ago | IN | 0 ETH | 0.01347069 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
LaunchPadNakamotoPublic
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.7.6; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/math/SafeMath.sol"; contract LaunchPadNakamotoPublic is Ownable { using SafeMath for uint256; // 4 rounds : 0 = not open, 1 = guaranty round, 2 = First come first serve, 3 = sale finished //uint256 public roundNumber; uint256 public round1BeganAt; // must be init before deployment uint256 public claimUnlockedTimestamp; // init timestamp of claim begins function roundNumber() external view returns (uint256) { return _roundNumber(); } function _roundNumber() internal view returns (uint256) { uint256 _round; if (block.timestamp < round1BeganAt || round1BeganAt == 0) { _round = 0; } else if ( block.timestamp >= round1BeganAt && block.timestamp < round1BeganAt.add(round1Duration) ) { _round = 1; } else if ( block.timestamp >= round1BeganAt.add(round1Duration) && !endUnlocked ) { _round = 2; } else if (endUnlocked) { _round = 3; } return _round; } function setRound1Timestamp(uint256 _round1BeginAt) external onlyOwner { round1BeganAt = _round1BeginAt; } function setClaimableTimestamp(uint256 _claimUnlockedTimestamp) external onlyOwner { claimUnlockedTimestamp = _claimUnlockedTimestamp; } uint256 public round1Duration = 3600; // in secondes 3600 = 1h uint256 public initialClaimablePercentage = 50; // Add from LaunchPad initial contract uint256 public firstVestingUnlockTimestamp; // October 29, 4H UTC uint256 public secondVestingUnlockTimestamp; // November 29, 4H UTC // Add from LaunchPad initial contract mapping(address => bool) _initialClaimDone; mapping(address => uint256) _firstVestingAmount; mapping(address => uint256) _secondVestingAmount; IERC20 public immutable token; IERC20 public immutable stableCoin; constructor(IERC20 _token, IERC20 _stable) { token = _token; stableCoin = _stable; } mapping(address => uint256) public round1Allowance; mapping(address => uint256) _round2Allowance; mapping(address => bool) _hasParticipated; function isWhitelisted(address _address) public view returns (bool) { bool result; if (_hasParticipated[_address]) { result = true; } else if ( round1Allowance[_address] > 0 || _round2Allowance[_address] > 0 ) { result = true; } return result; } function round2Allowance(address _address) public view returns (uint256) { uint256 result; if (_hasParticipated[_address]) { result = _round2Allowance[msg.sender]; } else if (round1Allowance[_address] > 0) { result = round1Allowance[_address].mul(4); } return result; } uint256 public tokenTarget; uint256 public stableTarget; uint256 public multiplier; // div per 100 bool public endUnlocked; uint256 public totalOwed; mapping(address => uint256) public claimable; mapping(address => uint256) public claimed; uint256 public stableRaised; uint256 public participants; event StartSale(uint256 startTimestamp); event EndUnlockedEvent(uint256 endTimestamp); event ClaimUnlockedEvent(uint256 claimTimestamp); event RoundChange(uint256 roundNumber); function initSale(uint256 _tokenTarget, uint256 _stableTarget) external onlyOwner { require(_stableTarget > 0, "stable target can't be Zero"); require(_tokenTarget > 0, "token target can't be Zero"); tokenTarget = _tokenTarget; stableTarget = _stableTarget; multiplier = tokenTarget.mul(100).div(stableTarget); } // Add from LaunchPad initial contract // initiate vesting timestamp function initVestingsTimestamp(uint256 _first, uint256 _second) external onlyOwner { require( _second > _first && _first > block.timestamp, "No good timestamp" ); firstVestingUnlockTimestamp = _first; secondVestingUnlockTimestamp = _second; } function getRound1Duration() external view returns (uint256) { return round1Duration; } function claimUnlocked() external view returns (bool) { return _claimUnlocked(); } function _claimUnlocked() internal view returns (bool) { return (block.timestamp >= claimUnlockedTimestamp); } function setTokenTarget(uint256 _tokenTarget) external onlyOwner { require(_roundNumber() == 0, "Presale already started!"); tokenTarget = _tokenTarget; multiplier = tokenTarget.mul(100).div(stableTarget); } function setStableTarget(uint256 _stableTarget) external onlyOwner { require(_roundNumber() == 0, "Presale already started!"); stableTarget = _stableTarget; multiplier = tokenTarget.mul(100).div(stableTarget); } function startSale() external onlyOwner { require(_roundNumber() == 0, "Presale round isn't 0"); round1BeganAt = block.timestamp; emit StartSale(block.timestamp); } function finishSale() external onlyOwner { require(!endUnlocked, "Presale already ended!"); endUnlocked = true; emit EndUnlockedEvent(block.timestamp); } function addWhitelistedAddress(address _address, uint256 _allocation) external onlyOwner { round1Allowance[_address] = _allocation; } function addMultipleWhitelistedAddresses( address[] calldata _addresses, uint256[] calldata _allocations ) external onlyOwner { require( _addresses.length == _allocations.length, "Issue in _addresses and _allocations length" ); for (uint256 i = 0; i < _addresses.length; i++) { round1Allowance[_addresses[i]] = _allocations[i]; } } function removeWhitelistedAddress(address _address) external onlyOwner { round1Allowance[_address] = 0; } function withdrawStable() external onlyOwner returns (bool) { require(endUnlocked, "presale has not yet ended"); return stableCoin.transfer( msg.sender, stableCoin.balanceOf(address(this)) ); } //update from original contract function claimableAmount(address user) external view returns (uint256) { return _claimableAmount(user); } function _claimableAmount(address user) internal view returns (uint256) { uint256 amount; if (claimable[user] > 0) { uint256 _toClaim = claimable[user].mul(multiplier).div(100); amount = _toClaim.mul(initialClaimablePercentage).div(100); } if (block.timestamp > secondVestingUnlockTimestamp) { if (_secondVestingAmount[user] > 0) { amount = _secondVestingAmount[user].add( _firstVestingAmount[user] ); } else { amount = claimable[user].mul(multiplier).div(100); } } else if (block.timestamp > firstVestingUnlockTimestamp) { if (_firstVestingAmount[user] > 0) { amount = _firstVestingAmount[user]; } else { uint256 _toClaim = claimable[user].mul(multiplier).div(100); amount = _toClaim.mul(7500).div(10000); } } return amount; } // Add from LaunchPad initial contract function remainToClaim(address user) external view returns (uint256) { uint256 amount; if (claimable[user] > 0) { amount = claimable[user].mul(multiplier).div(100); } else { amount = _firstVestingAmount[user].add(_secondVestingAmount[user]); } return amount; } function withdrawToken() external onlyOwner returns (bool) { require(endUnlocked, "presale has not yet ended"); return token.transfer( msg.sender, token.balanceOf(address(this)).sub(totalOwed) ); } function emergencyWithdrawToken(address _token) external onlyOwner returns (bool) { return IERC20(_token).transfer( msg.sender, IERC20(_token).balanceOf(address(this)) ); } // function update from initial Smart contract // function claim() external returns (bool) { require(_claimUnlocked(), "claiming not allowed yet"); if (!_initialClaimDone[msg.sender]) { require(claimable[msg.sender] > 0, "nothing to claim"); } else { require( (_firstVestingAmount[msg.sender] > 0 && block.timestamp >= firstVestingUnlockTimestamp) || (_secondVestingAmount[msg.sender] > 0 && block.timestamp >= secondVestingUnlockTimestamp), "nothing to claim" ); } uint256 amount; if (!_initialClaimDone[msg.sender]) { _initialClaimDone[msg.sender] = true; uint256 _toClaim = claimable[msg.sender].mul(multiplier).div(100); claimable[msg.sender] = 0; amount = _toClaim.mul(initialClaimablePercentage).div(100); // 50% _toClaim = _toClaim.sub(amount); _firstVestingAmount[msg.sender] = _toClaim.div(2); // 25% at first vesting (1month later) _secondVestingAmount[msg.sender] = _toClaim.sub( _firstVestingAmount[msg.sender] ); } if ( _secondVestingAmount[msg.sender] > 0 && block.timestamp >= secondVestingUnlockTimestamp ) { amount = amount.add(_secondVestingAmount[msg.sender]).add( _firstVestingAmount[msg.sender] ); _firstVestingAmount[msg.sender] = 0; _secondVestingAmount[msg.sender] = 0; } if ( _firstVestingAmount[msg.sender] > 0 && block.timestamp >= firstVestingUnlockTimestamp ) { amount = amount.add(_firstVestingAmount[msg.sender]); _firstVestingAmount[msg.sender] = 0; } claimed[msg.sender] = claimed[msg.sender].add(amount); totalOwed = totalOwed.sub(amount); return token.transfer(msg.sender, amount); } function buyRound1Stable(uint256 _amount) external { require(_roundNumber() == 1, "presale isn't on good round"); require( stableRaised.add(_amount) <= stableTarget, "Target already hit" ); require( round1Allowance[msg.sender] >= _amount, "Amount too high or not white listed" ); if (!_hasParticipated[msg.sender]) { _hasParticipated[msg.sender] = true; _round2Allowance[msg.sender] = round1Allowance[msg.sender].mul(4); } require(stableCoin.transferFrom(msg.sender, address(this), _amount)); uint256 amount = _amount.mul(multiplier).div(100); require(totalOwed.add(amount) <= tokenTarget, "sold out"); round1Allowance[msg.sender] = round1Allowance[msg.sender].sub( _amount, "Maximum purchase cap hit" ); if (claimable[msg.sender] == 0) participants = participants.add(1); claimable[msg.sender] = claimable[msg.sender].add(_amount); totalOwed = totalOwed.add(amount); stableRaised = stableRaised.add(_amount); if (stableRaised == stableTarget) { emit RoundChange(3); endUnlocked = true; emit EndUnlockedEvent(block.timestamp); } } function buyRound2Stable(uint256 _amount) external { require(_roundNumber() == 2, "Not the good round"); require(round2Allowance(msg.sender) > 0, "you are not whitelisted"); require(_amount > 0, "amount too low"); require( stableRaised.add(_amount) <= stableTarget, "target already hit" ); if (!_hasParticipated[msg.sender]) { _hasParticipated[msg.sender] = true; _round2Allowance[msg.sender] = round1Allowance[msg.sender].mul(4); } _round2Allowance[msg.sender] = _round2Allowance[msg.sender].sub( _amount, "Maximum purchase cap hit" ); require(stableCoin.transferFrom(msg.sender, address(this), _amount)); uint256 amount = _amount.mul(multiplier).div(100); require(totalOwed.add(amount) <= tokenTarget, "sold out"); if (claimable[msg.sender] == 0) participants = participants.add(1); claimable[msg.sender] = claimable[msg.sender].add(_amount); totalOwed = totalOwed.add(amount); stableRaised = stableRaised.add(_amount); if (stableRaised == stableTarget) { emit RoundChange(3); endUnlocked = true; emit EndUnlockedEvent(block.timestamp); } } function buyRound1Native() public payable { revert(); } function buyRound2Native() public payable { revert(); } fallback() external payable { revert(); // if (_roundNumber() == 1) { // buyRound1(); // } else if (_roundNumber() == 2) { // buyRound2(); // } else { // revert(); // } } receive() external payable { revert(); // if (_roundNumber() == 1) { // buyRound1(); // } else if (_roundNumber() == 2) { // buyRound2(); // } else { // revert(); // } } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "../utils/Context.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. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * 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. */ abstract 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 { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the 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 virtual 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 virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.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, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @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) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @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) { 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, reverting 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) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * 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); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * 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); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.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); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /* * @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. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"contract IERC20","name":"_stable","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"claimTimestamp","type":"uint256"}],"name":"ClaimUnlockedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"endTimestamp","type":"uint256"}],"name":"EndUnlockedEvent","type":"event"},{"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":"roundNumber","type":"uint256"}],"name":"RoundChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"startTimestamp","type":"uint256"}],"name":"StartSale","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_allocations","type":"uint256[]"}],"name":"addMultipleWhitelistedAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_allocation","type":"uint256"}],"name":"addWhitelistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyRound1Native","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"buyRound1Stable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyRound2Native","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"buyRound2Stable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimUnlockedTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"emergencyWithdrawToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finishSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firstVestingUnlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRound1Duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenTarget","type":"uint256"},{"internalType":"uint256","name":"_stableTarget","type":"uint256"}],"name":"initSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_first","type":"uint256"},{"internalType":"uint256","name":"_second","type":"uint256"}],"name":"initVestingsTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialClaimablePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"participants","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"remainToClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeWhitelistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"round1Allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"round1BeganAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"round1Duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"round2Allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"roundNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"secondVestingUnlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_claimUnlockedTimestamp","type":"uint256"}],"name":"setClaimableTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_round1BeginAt","type":"uint256"}],"name":"setRound1Timestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stableTarget","type":"uint256"}],"name":"setStableTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenTarget","type":"uint256"}],"name":"setTokenTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stableCoin","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stableRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stableTarget","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenTarget","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalOwed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052610e10600355603260045534801561001b57600080fd5b5060405162002bfa38038062002bfa8339818101604052604081101561004057600080fd5b50805160209091015160006100536100bb565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606092831b8116608052911b1660a0526100bf565b3390565b60805160601c60a05160601c612aee6200010c600039806116f15280611ad35280611ca25280611cd2528061205e5250806110d5528061229552806122cb52806125aa5250612aee6000f3fe60806040526004361061028c5760003560e01c80637fd23cfa1161015a578063b66a0e5d116100c1578063f2fde38b1161007a578063f2fde38b146108a5578063f6072f68146108d8578063f6f5e89114610902578063f83c45fe14610917578063f8757ba31461092c578063fc0c546a1461094157610296565b8063b66a0e5d146107d6578063be9c0dab146107eb578063c884ef8314610815578063ca628c7814610848578063e7fa9f7d1461085d578063f1f6bf0f1461087257610296565b8063992642e511610113578063992642e5146107255780639dbc67c81461073a578063a76a4e1514610764578063abfea13d14610779578063afd6b6681461078e578063b479c521146107c157610296565b80637fd23cfa1461061f57806389885049146106495780638da5cb5b1461067c5780638db3b7d9146106ad5780638f86f5ea146106e6578063917e2f06146106fb57610296565b80634e2786fb116101fe5780636249a0f8116101b75780636249a0f81461058657806362c13ff31461059b5780636c4470fb146105cb578063715018a6146105e0578063782e1e6c146105f55780637843eb921461060a57610296565b80634e2786fb146104455780634e71d92d1461045a57806350e497641461046f578063530cd5ab14610484578063536baf0f146104b75780635afbec251461035157610296565b80633af32abf116102505780633af32abf1461035b5780633ba94b7a1461038e578063402914f5146103a35780634417d6a5146103d657806348368bca146103eb5780634d35cec81461041557610296565b80631af032031461029b5780631b3ed722146102e25780631d8e59d9146103095780631dfd8baf1461031e5780632ce6eef11461035157610296565b3661029657600080fd5b600080fd5b3480156102a757600080fd5b506102ce600480360360208110156102be57600080fd5b50356001600160a01b0316610956565b604080519115158252519081900360200190f35b3480156102ee57600080fd5b506102f7610ac4565b60408051918252519081900360200190f35b34801561031557600080fd5b506102ce610aca565b34801561032a57600080fd5b506102f76004803603602081101561034157600080fd5b50356001600160a01b0316610ad3565b610359610296565b005b34801561036757600080fd5b506102ce6004803603602081101561037e57600080fd5b50356001600160a01b0316610b57565b34801561039a57600080fd5b506102f7610bcd565b3480156103af57600080fd5b506102f7600480360360208110156103c657600080fd5b50356001600160a01b0316610bd3565b3480156103e257600080fd5b506102f7610be5565b3480156103f757600080fd5b506103596004803603602081101561040e57600080fd5b5035610beb565b34801561042157600080fd5b506103596004803603604081101561043857600080fd5b5080359060200135610cc7565b34801561045157600080fd5b506102f7610d87565b34801561046657600080fd5b506102ce610d96565b34801561047b57600080fd5b506102ce61114f565b34801561049057600080fd5b50610359600480360360208110156104a757600080fd5b50356001600160a01b0316611159565b3480156104c357600080fd5b50610359600480360360408110156104da57600080fd5b8101906020810181356401000000008111156104f557600080fd5b82018360208201111561050757600080fd5b8035906020019184602083028401116401000000008311171561052957600080fd5b91939092909160208101903564010000000081111561054757600080fd5b82018360208201111561055957600080fd5b8035906020019184602083028401116401000000008311171561057b57600080fd5b5090925090506111d5565b34801561059257600080fd5b506102f76112d5565b3480156105a757600080fd5b50610359600480360360408110156105be57600080fd5b50803590602001356112db565b3480156105d757600080fd5b506102f7611407565b3480156105ec57600080fd5b5061035961140d565b34801561060157600080fd5b506102f76114b9565b34801561061657600080fd5b506102f76114bf565b34801561062b57600080fd5b506103596004803603602081101561064257600080fd5b50356114c5565b34801561065557600080fd5b506102f76004803603602081101561066c57600080fd5b50356001600160a01b03166118dd565b34801561068857600080fd5b506106916118e8565b604080516001600160a01b039092168252519081900360200190f35b3480156106b957600080fd5b50610359600480360360408110156106d057600080fd5b506001600160a01b0381351690602001356118f7565b3480156106f257600080fd5b50610359611975565b34801561070757600080fd5b506103596004803603602081101561071e57600080fd5b5035611a6a565b34801561073157600080fd5b50610691611ad1565b34801561074657600080fd5b506103596004803603602081101561075d57600080fd5b5035611af5565b34801561077057600080fd5b506102f7611b5c565b34801561078557600080fd5b506102f7611b62565b34801561079a57600080fd5b506102f7600480360360208110156107b157600080fd5b50356001600160a01b0316611b68565b3480156107cd57600080fd5b506102ce611be9565b3480156107e257600080fd5b50610359611de9565b3480156107f757600080fd5b506103596004803603602081101561080e57600080fd5b5035611ed7565b34801561082157600080fd5b506102f76004803603602081101561083857600080fd5b50356001600160a01b03166121ca565b34801561085457600080fd5b506102ce6121dc565b34801561086957600080fd5b506102f76123ae565b34801561087e57600080fd5b506102f76004803603602081101561089557600080fd5b50356001600160a01b03166123b4565b3480156108b157600080fd5b50610359600480360360208110156108c857600080fd5b50356001600160a01b03166123c6565b3480156108e457600080fd5b50610359600480360360208110156108fb57600080fd5b50356124c8565b34801561090e57600080fd5b506102f7612596565b34801561092357600080fd5b506102f761259c565b34801561093857600080fd5b506102f76125a2565b34801561094d57600080fd5b506106916125a8565b60006109606125cc565b6001600160a01b03166109716118e8565b6001600160a01b0316146109ba576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b816001600160a01b031663a9059cbb33846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a1757600080fd5b505afa158015610a2b573d6000803e3d6000fd5b505050506040513d6020811015610a4157600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b505050506040513d6020811015610abc57600080fd5b505192915050565b600f5481565b60105460ff1681565b6001600160a01b0381166000908152600c6020526040812054819060ff1615610b0c5750336000908152600b6020526040902054610b51565b6001600160a01b0383166000908152600a602052604090205415610b51576001600160a01b0383166000908152600a6020526040902054610b4e9060046125d0565b90505b92915050565b6001600160a01b0381166000908152600c6020526040812054819060ff1615610b8257506001610b51565b6001600160a01b0383166000908152600a6020526040902054151580610bbf57506001600160a01b0383166000908152600b602052604090205415155b15610b515750600192915050565b600e5481565b60126020526000908152604090205481565b60015481565b610bf36125cc565b6001600160a01b0316610c046118e8565b6001600160a01b031614610c4d576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b610c55612629565b15610ca2576040805162461bcd60e51b815260206004820152601860248201527750726573616c6520616c726561647920737461727465642160401b604482015290519081900360640190fd5b600e819055600d54610cc1908290610cbb9060646125d0565b906126b6565b600f5550565b610ccf6125cc565b6001600160a01b0316610ce06118e8565b6001600160a01b031614610d29576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b8181118015610d3757504282115b610d7c576040805162461bcd60e51b815260206004820152601160248201527004e6f20676f6f642074696d657374616d7607c1b604482015290519081900360640190fd5b600591909155600655565b6000610d91612629565b905090565b6000610da061271d565b610df1576040805162461bcd60e51b815260206004820152601860248201527f636c61696d696e67206e6f7420616c6c6f776564207965740000000000000000604482015290519081900360640190fd5b3360009081526007602052604090205460ff16610e615733600090815260126020526040902054610e5c576040805162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b604482015290519081900360640190fd5b610eeb565b3360009081526008602052604090205415801590610e8157506005544210155b80610ea757503360009081526009602052604090205415801590610ea757506006544210155b610eeb576040805162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b604482015290519081900360640190fd5b3360009081526007602052604081205460ff16610faa57336000908152600760209081526040808320805460ff19166001179055600f546012909252822054610f3a91606491610cbb916125d0565b33600090815260126020526040812055600454909150610f6290606490610cbb9084906125d0565b9150610f6e8183612726565b9050610f7b8160026126b6565b336000908152600860205260409020819055610f98908290612726565b33600090815260096020526040902055505b3360009081526009602052604090205415801590610fca57506006544210155b1561102157336000908152600860209081526040808320546009909252909120546110019190610ffb908490612783565b90612783565b336000908152600860209081526040808320839055600990915281205590505b336000908152600860205260409020541580159061104157506005544210155b156110745733600090815260086020526040902054611061908290612783565b3360009081526008602052604081205590505b3360009081526013602052604090205461108e9082612783565b336000908152601360205260409020556011546110ab9082612726565b6011556040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163a9059cbb9160448083019260209291908290030181600087803b15801561111d57600080fd5b505af1158015611131573d6000803e3d6000fd5b505050506040513d602081101561114757600080fd5b505191505090565b6000610d9161271d565b6111616125cc565b6001600160a01b03166111726118e8565b6001600160a01b0316146111bb576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600a6020526040812055565b6111dd6125cc565b6001600160a01b03166111ee6118e8565b6001600160a01b031614611237576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b8281146112755760405162461bcd60e51b815260040180806020018281038252602b815260200180612a04602b913960400191505060405180910390fd5b60005b838110156112ce5782828281811061128c57fe5b90506020020135600a60008787858181106112a357fe5b602090810292909201356001600160a01b031683525081019190915260400160002055600101611278565b5050505050565b60045481565b6112e36125cc565b6001600160a01b03166112f46118e8565b6001600160a01b03161461133d576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b60008111611392576040805162461bcd60e51b815260206004820152601b60248201527f737461626c65207461726765742063616e2774206265205a65726f0000000000604482015290519081900360640190fd5b600082116113e7576040805162461bcd60e51b815260206004820152601a60248201527f746f6b656e207461726765742063616e2774206265205a65726f000000000000604482015290519081900360640190fd5b600d829055600e81905561140081610cbb8460646125d0565b600f555050565b60155481565b6114156125cc565b6001600160a01b03166114266118e8565b6001600160a01b03161461146f576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600d5481565b60065481565b6114cd612629565b600214611516576040805162461bcd60e51b8152602060048201526012602482015271139bdd081d1a194819dbdbd9081c9bdd5b9960721b604482015290519081900360640190fd5b600061152133610ad3565b11611573576040805162461bcd60e51b815260206004820152601760248201527f796f7520617265206e6f742077686974656c6973746564000000000000000000604482015290519081900360640190fd5b600081116115b9576040805162461bcd60e51b815260206004820152600e60248201526d616d6f756e7420746f6f206c6f7760901b604482015290519081900360640190fd5b600e546014546115c99083612783565b1115611611576040805162461bcd60e51b81526020600482015260126024820152711d185c99d95d08185b1c9958591e481a1a5d60721b604482015290519081900360640190fd5b336000908152600c602052604090205460ff1661166957336000908152600c60209081526040808320805460ff19166001179055600a9091529020546116589060046125d0565b336000908152600b60205260409020555b604080518082018252601881527713585e1a5b5d5b481c1d5c98da185cd94818d85c081a1a5d60421b602080830191909152336000908152600b90915291909120546116b69183906127dd565b336000818152600b602090815260408083209490945583516323b872dd60e01b815260048101939093523060248401526044830185905292517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316936323b872dd93606480820194929392918390030190829087803b15801561174057600080fd5b505af1158015611754573d6000803e3d6000fd5b505050506040513d602081101561176a57600080fd5b505161177557600080fd5b60006117916064610cbb600f54856125d090919063ffffffff16565b9050600d546117ab8260115461278390919063ffffffff16565b11156117e9576040805162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b604482015290519081900360640190fd5b3360009081526012602052604090205461180f5760155461180b906001612783565b6015555b336000908152601260205260409020546118299083612783565b336000908152601260205260409020556011546118469082612783565b6011556014546118569083612783565b6014819055600e5414156118d957604080516003815290517f8b760fcc1fba5875d2dee24210975dbc507d7fb390c5fc674a336a4230459b819181900360200190a16010805460ff191660011790556040805142815290517fdbb898b65754de938e81c6a509625c23cc027521dca30ed62fce6f2e8f838c7a9181900360200190a15b5050565b6000610b5182612874565b6000546001600160a01b031690565b6118ff6125cc565b6001600160a01b03166119106118e8565b6001600160a01b031614611959576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b6001600160a01b039091166000908152600a6020526040902055565b61197d6125cc565b6001600160a01b031661198e6118e8565b6001600160a01b0316146119d7576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b60105460ff1615611a28576040805162461bcd60e51b815260206004820152601660248201527550726573616c6520616c726561647920656e6465642160501b604482015290519081900360640190fd5b6010805460ff191660011790556040805142815290517fdbb898b65754de938e81c6a509625c23cc027521dca30ed62fce6f2e8f838c7a9181900360200190a1565b611a726125cc565b6001600160a01b0316611a836118e8565b6001600160a01b031614611acc576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b600255565b7f000000000000000000000000000000000000000000000000000000000000000081565b611afd6125cc565b6001600160a01b0316611b0e6118e8565b6001600160a01b031614611b57576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b600155565b60025481565b60035481565b6001600160a01b038116600090815260126020526040812054819015611bbb57600f546001600160a01b038416600090815260126020526040902054611bb491606491610cbb916125d0565b9050610b51565b6001600160a01b038316600090815260096020908152604080832054600890925290912054610b4e91612783565b6000611bf36125cc565b6001600160a01b0316611c046118e8565b6001600160a01b031614611c4d576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b60105460ff16611ca0576040805162461bcd60e51b81526020600482015260196024820152781c1c995cd85b19481a185cc81b9bdd081e595d08195b991959603a1b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611d3d57600080fd5b505afa158015611d51573d6000803e3d6000fd5b505050506040513d6020811015611d6757600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015611db857600080fd5b505af1158015611dcc573d6000803e3d6000fd5b505050506040513d6020811015611de257600080fd5b5051905090565b611df16125cc565b6001600160a01b0316611e026118e8565b6001600160a01b031614611e4b576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b611e53612629565b15611e9d576040805162461bcd60e51b8152602060048201526015602482015274050726573616c6520726f756e642069736e2774203605c1b604482015290519081900360640190fd5b42600181905560408051918252517f59ff1c5e8a691bbfdd4acd20ca4355bd3e0878914814bc6d035bd1584d34135d9181900360200190a1565b611edf612629565b600114611f33576040805162461bcd60e51b815260206004820152601b60248201527f70726573616c652069736e2774206f6e20676f6f6420726f756e640000000000604482015290519081900360640190fd5b600e54601454611f439083612783565b1115611f8b576040805162461bcd60e51b815260206004820152601260248201527115185c99d95d08185b1c9958591e481a1a5d60721b604482015290519081900360640190fd5b336000908152600a6020526040902054811115611fd95760405162461bcd60e51b8152600401808060200182810382526023815260200180612a966023913960400191505060405180910390fd5b336000908152600c602052604090205460ff1661203157336000908152600c60209081526040808320805460ff19166001179055600a9091529020546120209060046125d0565b336000908152600b60205260409020555b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd9160648083019260209291908290030181600087803b1580156120a657600080fd5b505af11580156120ba573d6000803e3d6000fd5b505050506040513d60208110156120d057600080fd5b50516120db57600080fd5b60006120f76064610cbb600f54856125d090919063ffffffff16565b9050600d546121118260115461278390919063ffffffff16565b111561214f576040805162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b604482015290519081900360640190fd5b604080518082018252601881527713585e1a5b5d5b481c1d5c98da185cd94818d85c081a1a5d60421b602080830191909152336000908152600a909152919091205461219c9184906127dd565b336000908152600a602090815260408083209390935560129052205461180f5760155461180b906001612783565b60136020526000908152604090205481565b60006121e66125cc565b6001600160a01b03166121f76118e8565b6001600160a01b031614612240576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b60105460ff16612293576040805162461bcd60e51b81526020600482015260196024820152781c1c995cd85b19481a185cc81b9bdd081e595d08195b991959603a1b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb336123686011547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561233657600080fd5b505afa15801561234a573d6000803e3d6000fd5b505050506040513d602081101561236057600080fd5b505190612726565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611db857600080fd5b60115481565b600a6020526000908152604090205481565b6123ce6125cc565b6001600160a01b03166123df6118e8565b6001600160a01b031614612428576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b6001600160a01b03811661246d5760405162461bcd60e51b8152600401808060200182810382526026815260200180612a2f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6124d06125cc565b6001600160a01b03166124e16118e8565b6001600160a01b03161461252a576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b612532612629565b1561257f576040805162461bcd60e51b815260206004820152601860248201527750726573616c6520616c726561647920737461727465642160401b604482015290519081900360640190fd5b600d819055600e54610cc190610cbb8360646125d0565b60055481565b60035490565b60145481565b7f000000000000000000000000000000000000000000000000000000000000000081565b3390565b6000826125df57506000610b51565b828202828482816125ec57fe5b0414610b4e5760405162461bcd60e51b8152600401808060200182810382526021815260200180612a556021913960400191505060405180910390fd5b60008060015442108061263c5750600154155b1561264957506000610d91565b6001544210158015612668575060035460015461266591612783565b42105b1561267557506001610d91565b60035460015461268491612783565b4210158015612696575060105460ff16155b156126a357506002610d91565b60105460ff1615610d9157506003905090565b600080821161270c576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161271557fe5b049392505050565b60025442101590565b60008282111561277d576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610b4e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818484111561286c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612831578181015183820152602001612819565b50505050905090810190601f16801561285e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0381166000908152601260205260408120548190156128e357600f546001600160a01b03841660009081526012602052604081205490916128c391606491610cbb91906125d0565b90506128df6064610cbb600454846125d090919063ffffffff16565b9150505b600654421115612971576001600160a01b03831660009081526009602052604090205415612940576001600160a01b03831660009081526008602090815260408083205460099092529091205461293991612783565b905061296c565b600f546001600160a01b038416600090815260126020526040902054611bb491606491610cbb916125d0565b610b51565b600554421115610b51576001600160a01b038316600090815260086020526040902054156129b857506001600160a01b038216600090815260086020526040902054610b51565b600f546001600160a01b03841660009081526012602052604081205490916129e791606491610cbb91906125d0565b90506129fb612710610cbb83611d4c6125d0565b94935050505056fe497373756520696e205f61646472657373657320616e64205f616c6c6f636174696f6e73206c656e6774684f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572416d6f756e7420746f6f2068696768206f72206e6f74207768697465206c6973746564a2646970667358221220f6979121534b0345d40e986df81258606a185bceead0ab8eaf7dc6addaa981cd64736f6c634300070600330000000000000000000000002e10348ee563dec5fe483de558d1946b7a3372c20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Deployed Bytecode
0x60806040526004361061028c5760003560e01c80637fd23cfa1161015a578063b66a0e5d116100c1578063f2fde38b1161007a578063f2fde38b146108a5578063f6072f68146108d8578063f6f5e89114610902578063f83c45fe14610917578063f8757ba31461092c578063fc0c546a1461094157610296565b8063b66a0e5d146107d6578063be9c0dab146107eb578063c884ef8314610815578063ca628c7814610848578063e7fa9f7d1461085d578063f1f6bf0f1461087257610296565b8063992642e511610113578063992642e5146107255780639dbc67c81461073a578063a76a4e1514610764578063abfea13d14610779578063afd6b6681461078e578063b479c521146107c157610296565b80637fd23cfa1461061f57806389885049146106495780638da5cb5b1461067c5780638db3b7d9146106ad5780638f86f5ea146106e6578063917e2f06146106fb57610296565b80634e2786fb116101fe5780636249a0f8116101b75780636249a0f81461058657806362c13ff31461059b5780636c4470fb146105cb578063715018a6146105e0578063782e1e6c146105f55780637843eb921461060a57610296565b80634e2786fb146104455780634e71d92d1461045a57806350e497641461046f578063530cd5ab14610484578063536baf0f146104b75780635afbec251461035157610296565b80633af32abf116102505780633af32abf1461035b5780633ba94b7a1461038e578063402914f5146103a35780634417d6a5146103d657806348368bca146103eb5780634d35cec81461041557610296565b80631af032031461029b5780631b3ed722146102e25780631d8e59d9146103095780631dfd8baf1461031e5780632ce6eef11461035157610296565b3661029657600080fd5b600080fd5b3480156102a757600080fd5b506102ce600480360360208110156102be57600080fd5b50356001600160a01b0316610956565b604080519115158252519081900360200190f35b3480156102ee57600080fd5b506102f7610ac4565b60408051918252519081900360200190f35b34801561031557600080fd5b506102ce610aca565b34801561032a57600080fd5b506102f76004803603602081101561034157600080fd5b50356001600160a01b0316610ad3565b610359610296565b005b34801561036757600080fd5b506102ce6004803603602081101561037e57600080fd5b50356001600160a01b0316610b57565b34801561039a57600080fd5b506102f7610bcd565b3480156103af57600080fd5b506102f7600480360360208110156103c657600080fd5b50356001600160a01b0316610bd3565b3480156103e257600080fd5b506102f7610be5565b3480156103f757600080fd5b506103596004803603602081101561040e57600080fd5b5035610beb565b34801561042157600080fd5b506103596004803603604081101561043857600080fd5b5080359060200135610cc7565b34801561045157600080fd5b506102f7610d87565b34801561046657600080fd5b506102ce610d96565b34801561047b57600080fd5b506102ce61114f565b34801561049057600080fd5b50610359600480360360208110156104a757600080fd5b50356001600160a01b0316611159565b3480156104c357600080fd5b50610359600480360360408110156104da57600080fd5b8101906020810181356401000000008111156104f557600080fd5b82018360208201111561050757600080fd5b8035906020019184602083028401116401000000008311171561052957600080fd5b91939092909160208101903564010000000081111561054757600080fd5b82018360208201111561055957600080fd5b8035906020019184602083028401116401000000008311171561057b57600080fd5b5090925090506111d5565b34801561059257600080fd5b506102f76112d5565b3480156105a757600080fd5b50610359600480360360408110156105be57600080fd5b50803590602001356112db565b3480156105d757600080fd5b506102f7611407565b3480156105ec57600080fd5b5061035961140d565b34801561060157600080fd5b506102f76114b9565b34801561061657600080fd5b506102f76114bf565b34801561062b57600080fd5b506103596004803603602081101561064257600080fd5b50356114c5565b34801561065557600080fd5b506102f76004803603602081101561066c57600080fd5b50356001600160a01b03166118dd565b34801561068857600080fd5b506106916118e8565b604080516001600160a01b039092168252519081900360200190f35b3480156106b957600080fd5b50610359600480360360408110156106d057600080fd5b506001600160a01b0381351690602001356118f7565b3480156106f257600080fd5b50610359611975565b34801561070757600080fd5b506103596004803603602081101561071e57600080fd5b5035611a6a565b34801561073157600080fd5b50610691611ad1565b34801561074657600080fd5b506103596004803603602081101561075d57600080fd5b5035611af5565b34801561077057600080fd5b506102f7611b5c565b34801561078557600080fd5b506102f7611b62565b34801561079a57600080fd5b506102f7600480360360208110156107b157600080fd5b50356001600160a01b0316611b68565b3480156107cd57600080fd5b506102ce611be9565b3480156107e257600080fd5b50610359611de9565b3480156107f757600080fd5b506103596004803603602081101561080e57600080fd5b5035611ed7565b34801561082157600080fd5b506102f76004803603602081101561083857600080fd5b50356001600160a01b03166121ca565b34801561085457600080fd5b506102ce6121dc565b34801561086957600080fd5b506102f76123ae565b34801561087e57600080fd5b506102f76004803603602081101561089557600080fd5b50356001600160a01b03166123b4565b3480156108b157600080fd5b50610359600480360360208110156108c857600080fd5b50356001600160a01b03166123c6565b3480156108e457600080fd5b50610359600480360360208110156108fb57600080fd5b50356124c8565b34801561090e57600080fd5b506102f7612596565b34801561092357600080fd5b506102f761259c565b34801561093857600080fd5b506102f76125a2565b34801561094d57600080fd5b506106916125a8565b60006109606125cc565b6001600160a01b03166109716118e8565b6001600160a01b0316146109ba576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b816001600160a01b031663a9059cbb33846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a1757600080fd5b505afa158015610a2b573d6000803e3d6000fd5b505050506040513d6020811015610a4157600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b505050506040513d6020811015610abc57600080fd5b505192915050565b600f5481565b60105460ff1681565b6001600160a01b0381166000908152600c6020526040812054819060ff1615610b0c5750336000908152600b6020526040902054610b51565b6001600160a01b0383166000908152600a602052604090205415610b51576001600160a01b0383166000908152600a6020526040902054610b4e9060046125d0565b90505b92915050565b6001600160a01b0381166000908152600c6020526040812054819060ff1615610b8257506001610b51565b6001600160a01b0383166000908152600a6020526040902054151580610bbf57506001600160a01b0383166000908152600b602052604090205415155b15610b515750600192915050565b600e5481565b60126020526000908152604090205481565b60015481565b610bf36125cc565b6001600160a01b0316610c046118e8565b6001600160a01b031614610c4d576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b610c55612629565b15610ca2576040805162461bcd60e51b815260206004820152601860248201527750726573616c6520616c726561647920737461727465642160401b604482015290519081900360640190fd5b600e819055600d54610cc1908290610cbb9060646125d0565b906126b6565b600f5550565b610ccf6125cc565b6001600160a01b0316610ce06118e8565b6001600160a01b031614610d29576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b8181118015610d3757504282115b610d7c576040805162461bcd60e51b815260206004820152601160248201527004e6f20676f6f642074696d657374616d7607c1b604482015290519081900360640190fd5b600591909155600655565b6000610d91612629565b905090565b6000610da061271d565b610df1576040805162461bcd60e51b815260206004820152601860248201527f636c61696d696e67206e6f7420616c6c6f776564207965740000000000000000604482015290519081900360640190fd5b3360009081526007602052604090205460ff16610e615733600090815260126020526040902054610e5c576040805162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b604482015290519081900360640190fd5b610eeb565b3360009081526008602052604090205415801590610e8157506005544210155b80610ea757503360009081526009602052604090205415801590610ea757506006544210155b610eeb576040805162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b604482015290519081900360640190fd5b3360009081526007602052604081205460ff16610faa57336000908152600760209081526040808320805460ff19166001179055600f546012909252822054610f3a91606491610cbb916125d0565b33600090815260126020526040812055600454909150610f6290606490610cbb9084906125d0565b9150610f6e8183612726565b9050610f7b8160026126b6565b336000908152600860205260409020819055610f98908290612726565b33600090815260096020526040902055505b3360009081526009602052604090205415801590610fca57506006544210155b1561102157336000908152600860209081526040808320546009909252909120546110019190610ffb908490612783565b90612783565b336000908152600860209081526040808320839055600990915281205590505b336000908152600860205260409020541580159061104157506005544210155b156110745733600090815260086020526040902054611061908290612783565b3360009081526008602052604081205590505b3360009081526013602052604090205461108e9082612783565b336000908152601360205260409020556011546110ab9082612726565b6011556040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b037f0000000000000000000000002e10348ee563dec5fe483de558d1946b7a3372c2169163a9059cbb9160448083019260209291908290030181600087803b15801561111d57600080fd5b505af1158015611131573d6000803e3d6000fd5b505050506040513d602081101561114757600080fd5b505191505090565b6000610d9161271d565b6111616125cc565b6001600160a01b03166111726118e8565b6001600160a01b0316146111bb576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600a6020526040812055565b6111dd6125cc565b6001600160a01b03166111ee6118e8565b6001600160a01b031614611237576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b8281146112755760405162461bcd60e51b815260040180806020018281038252602b815260200180612a04602b913960400191505060405180910390fd5b60005b838110156112ce5782828281811061128c57fe5b90506020020135600a60008787858181106112a357fe5b602090810292909201356001600160a01b031683525081019190915260400160002055600101611278565b5050505050565b60045481565b6112e36125cc565b6001600160a01b03166112f46118e8565b6001600160a01b03161461133d576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b60008111611392576040805162461bcd60e51b815260206004820152601b60248201527f737461626c65207461726765742063616e2774206265205a65726f0000000000604482015290519081900360640190fd5b600082116113e7576040805162461bcd60e51b815260206004820152601a60248201527f746f6b656e207461726765742063616e2774206265205a65726f000000000000604482015290519081900360640190fd5b600d829055600e81905561140081610cbb8460646125d0565b600f555050565b60155481565b6114156125cc565b6001600160a01b03166114266118e8565b6001600160a01b03161461146f576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600d5481565b60065481565b6114cd612629565b600214611516576040805162461bcd60e51b8152602060048201526012602482015271139bdd081d1a194819dbdbd9081c9bdd5b9960721b604482015290519081900360640190fd5b600061152133610ad3565b11611573576040805162461bcd60e51b815260206004820152601760248201527f796f7520617265206e6f742077686974656c6973746564000000000000000000604482015290519081900360640190fd5b600081116115b9576040805162461bcd60e51b815260206004820152600e60248201526d616d6f756e7420746f6f206c6f7760901b604482015290519081900360640190fd5b600e546014546115c99083612783565b1115611611576040805162461bcd60e51b81526020600482015260126024820152711d185c99d95d08185b1c9958591e481a1a5d60721b604482015290519081900360640190fd5b336000908152600c602052604090205460ff1661166957336000908152600c60209081526040808320805460ff19166001179055600a9091529020546116589060046125d0565b336000908152600b60205260409020555b604080518082018252601881527713585e1a5b5d5b481c1d5c98da185cd94818d85c081a1a5d60421b602080830191909152336000908152600b90915291909120546116b69183906127dd565b336000818152600b602090815260408083209490945583516323b872dd60e01b815260048101939093523060248401526044830185905292517f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f6001600160a01b0316936323b872dd93606480820194929392918390030190829087803b15801561174057600080fd5b505af1158015611754573d6000803e3d6000fd5b505050506040513d602081101561176a57600080fd5b505161177557600080fd5b60006117916064610cbb600f54856125d090919063ffffffff16565b9050600d546117ab8260115461278390919063ffffffff16565b11156117e9576040805162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b604482015290519081900360640190fd5b3360009081526012602052604090205461180f5760155461180b906001612783565b6015555b336000908152601260205260409020546118299083612783565b336000908152601260205260409020556011546118469082612783565b6011556014546118569083612783565b6014819055600e5414156118d957604080516003815290517f8b760fcc1fba5875d2dee24210975dbc507d7fb390c5fc674a336a4230459b819181900360200190a16010805460ff191660011790556040805142815290517fdbb898b65754de938e81c6a509625c23cc027521dca30ed62fce6f2e8f838c7a9181900360200190a15b5050565b6000610b5182612874565b6000546001600160a01b031690565b6118ff6125cc565b6001600160a01b03166119106118e8565b6001600160a01b031614611959576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b6001600160a01b039091166000908152600a6020526040902055565b61197d6125cc565b6001600160a01b031661198e6118e8565b6001600160a01b0316146119d7576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b60105460ff1615611a28576040805162461bcd60e51b815260206004820152601660248201527550726573616c6520616c726561647920656e6465642160501b604482015290519081900360640190fd5b6010805460ff191660011790556040805142815290517fdbb898b65754de938e81c6a509625c23cc027521dca30ed62fce6f2e8f838c7a9181900360200190a1565b611a726125cc565b6001600160a01b0316611a836118e8565b6001600160a01b031614611acc576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b600255565b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f81565b611afd6125cc565b6001600160a01b0316611b0e6118e8565b6001600160a01b031614611b57576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b600155565b60025481565b60035481565b6001600160a01b038116600090815260126020526040812054819015611bbb57600f546001600160a01b038416600090815260126020526040902054611bb491606491610cbb916125d0565b9050610b51565b6001600160a01b038316600090815260096020908152604080832054600890925290912054610b4e91612783565b6000611bf36125cc565b6001600160a01b0316611c046118e8565b6001600160a01b031614611c4d576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b60105460ff16611ca0576040805162461bcd60e51b81526020600482015260196024820152781c1c995cd85b19481a185cc81b9bdd081e595d08195b991959603a1b604482015290519081900360640190fd5b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f6001600160a01b031663a9059cbb337f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611d3d57600080fd5b505afa158015611d51573d6000803e3d6000fd5b505050506040513d6020811015611d6757600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015611db857600080fd5b505af1158015611dcc573d6000803e3d6000fd5b505050506040513d6020811015611de257600080fd5b5051905090565b611df16125cc565b6001600160a01b0316611e026118e8565b6001600160a01b031614611e4b576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b611e53612629565b15611e9d576040805162461bcd60e51b8152602060048201526015602482015274050726573616c6520726f756e642069736e2774203605c1b604482015290519081900360640190fd5b42600181905560408051918252517f59ff1c5e8a691bbfdd4acd20ca4355bd3e0878914814bc6d035bd1584d34135d9181900360200190a1565b611edf612629565b600114611f33576040805162461bcd60e51b815260206004820152601b60248201527f70726573616c652069736e2774206f6e20676f6f6420726f756e640000000000604482015290519081900360640190fd5b600e54601454611f439083612783565b1115611f8b576040805162461bcd60e51b815260206004820152601260248201527115185c99d95d08185b1c9958591e481a1a5d60721b604482015290519081900360640190fd5b336000908152600a6020526040902054811115611fd95760405162461bcd60e51b8152600401808060200182810382526023815260200180612a966023913960400191505060405180910390fd5b336000908152600c602052604090205460ff1661203157336000908152600c60209081526040808320805460ff19166001179055600a9091529020546120209060046125d0565b336000908152600b60205260409020555b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b037f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f16916323b872dd9160648083019260209291908290030181600087803b1580156120a657600080fd5b505af11580156120ba573d6000803e3d6000fd5b505050506040513d60208110156120d057600080fd5b50516120db57600080fd5b60006120f76064610cbb600f54856125d090919063ffffffff16565b9050600d546121118260115461278390919063ffffffff16565b111561214f576040805162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b604482015290519081900360640190fd5b604080518082018252601881527713585e1a5b5d5b481c1d5c98da185cd94818d85c081a1a5d60421b602080830191909152336000908152600a909152919091205461219c9184906127dd565b336000908152600a602090815260408083209390935560129052205461180f5760155461180b906001612783565b60136020526000908152604090205481565b60006121e66125cc565b6001600160a01b03166121f76118e8565b6001600160a01b031614612240576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b60105460ff16612293576040805162461bcd60e51b81526020600482015260196024820152781c1c995cd85b19481a185cc81b9bdd081e595d08195b991959603a1b604482015290519081900360640190fd5b7f0000000000000000000000002e10348ee563dec5fe483de558d1946b7a3372c26001600160a01b031663a9059cbb336123686011547f0000000000000000000000002e10348ee563dec5fe483de558d1946b7a3372c26001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561233657600080fd5b505afa15801561234a573d6000803e3d6000fd5b505050506040513d602081101561236057600080fd5b505190612726565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611db857600080fd5b60115481565b600a6020526000908152604090205481565b6123ce6125cc565b6001600160a01b03166123df6118e8565b6001600160a01b031614612428576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b6001600160a01b03811661246d5760405162461bcd60e51b8152600401808060200182810382526026815260200180612a2f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6124d06125cc565b6001600160a01b03166124e16118e8565b6001600160a01b03161461252a576040805162461bcd60e51b81526020600482018190526024820152600080516020612a76833981519152604482015290519081900360640190fd5b612532612629565b1561257f576040805162461bcd60e51b815260206004820152601860248201527750726573616c6520616c726561647920737461727465642160401b604482015290519081900360640190fd5b600d819055600e54610cc190610cbb8360646125d0565b60055481565b60035490565b60145481565b7f0000000000000000000000002e10348ee563dec5fe483de558d1946b7a3372c281565b3390565b6000826125df57506000610b51565b828202828482816125ec57fe5b0414610b4e5760405162461bcd60e51b8152600401808060200182810382526021815260200180612a556021913960400191505060405180910390fd5b60008060015442108061263c5750600154155b1561264957506000610d91565b6001544210158015612668575060035460015461266591612783565b42105b1561267557506001610d91565b60035460015461268491612783565b4210158015612696575060105460ff16155b156126a357506002610d91565b60105460ff1615610d9157506003905090565b600080821161270c576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161271557fe5b049392505050565b60025442101590565b60008282111561277d576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610b4e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818484111561286c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612831578181015183820152602001612819565b50505050905090810190601f16801561285e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0381166000908152601260205260408120548190156128e357600f546001600160a01b03841660009081526012602052604081205490916128c391606491610cbb91906125d0565b90506128df6064610cbb600454846125d090919063ffffffff16565b9150505b600654421115612971576001600160a01b03831660009081526009602052604090205415612940576001600160a01b03831660009081526008602090815260408083205460099092529091205461293991612783565b905061296c565b600f546001600160a01b038416600090815260126020526040902054611bb491606491610cbb916125d0565b610b51565b600554421115610b51576001600160a01b038316600090815260086020526040902054156129b857506001600160a01b038216600090815260086020526040902054610b51565b600f546001600160a01b03841660009081526012602052604081205490916129e791606491610cbb91906125d0565b90506129fb612710610cbb83611d4c6125d0565b94935050505056fe497373756520696e205f61646472657373657320616e64205f616c6c6f636174696f6e73206c656e6774684f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572416d6f756e7420746f6f2068696768206f72206e6f74207768697465206c6973746564a2646970667358221220f6979121534b0345d40e986df81258606a185bceead0ab8eaf7dc6addaa981cd64736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002e10348ee563dec5fe483de558d1946b7a3372c20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
-----Decoded View---------------
Arg [0] : _token (address): 0x2E10348eE563dEc5FE483DE558D1946b7A3372c2
Arg [1] : _stable (address): 0x6B175474E89094C44Da98b954EedeAC495271d0F
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000002e10348ee563dec5fe483de558d1946b7a3372c2
Arg [1] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
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.