Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 180 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Claimable Ti... | 13772363 | 1138 days ago | IN | 0 ETH | 0.00237218 | ||||
Init Vestings Ti... | 13772359 | 1138 days ago | IN | 0 ETH | 0.00375356 | ||||
Init Vestings Ti... | 13765648 | 1140 days ago | IN | 0 ETH | 0.00248964 | ||||
Init Vestings Ti... | 13765641 | 1140 days ago | IN | 0 ETH | 0.00237092 | ||||
Init Vestings Ti... | 13765620 | 1140 days ago | IN | 0 ETH | 0.00257266 | ||||
Init Vestings Ti... | 13765607 | 1140 days ago | IN | 0 ETH | 0.00294682 | ||||
Set Claimable Ti... | 13765598 | 1140 days ago | IN | 0 ETH | 0.00237932 | ||||
Emergency Withdr... | 13765376 | 1140 days ago | IN | 0 ETH | 0.00203015 | ||||
Claim | 13763967 | 1140 days ago | IN | 0 ETH | 0.00221585 | ||||
Claim | 13763965 | 1140 days ago | IN | 0 ETH | 0.00975475 | ||||
Claim | 13752498 | 1142 days ago | IN | 0 ETH | 0.01095276 | ||||
Claim | 13745567 | 1143 days ago | IN | 0 ETH | 0.01289642 | ||||
Claim | 13744942 | 1143 days ago | IN | 0 ETH | 0.01222965 | ||||
Init Vestings Ti... | 13741283 | 1143 days ago | IN | 0 ETH | 0.00715677 | ||||
Claim | 13730189 | 1145 days ago | IN | 0 ETH | 0.01436616 | ||||
Claim | 13727126 | 1146 days ago | IN | 0 ETH | 0.01557612 | ||||
Claim | 13697448 | 1150 days ago | IN | 0 ETH | 0.01881569 | ||||
Claim | 13695712 | 1151 days ago | IN | 0 ETH | 0.01500541 | ||||
Claim | 13670524 | 1155 days ago | IN | 0 ETH | 0.0148219 | ||||
Claim | 13655672 | 1157 days ago | IN | 0 ETH | 0.01912412 | ||||
Claim | 13645594 | 1159 days ago | IN | 0 ETH | 0.01735591 | ||||
Claim | 13645376 | 1159 days ago | IN | 0 ETH | 0.01437086 | ||||
Claim | 13626404 | 1162 days ago | IN | 0 ETH | 0.01746976 | ||||
Claim | 13620752 | 1163 days ago | IN | 0 ETH | 0.0252756 | ||||
Emergency Withdr... | 13619923 | 1163 days ago | IN | 0 ETH | 0.00516246 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
LaunchPadNakamotoPrivate
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 LaunchPadNakamotoPrivate 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 = 10; // Add from LaunchPad initial contract uint256 public firstVestingUnlockTimestamp; // October 29, 4H UTC uint256 public secondVestingUnlockTimestamp; // November 29, 4H UTC uint256 public thirdVestingUnlockTimestamp; // December 29, 4h PM UTC // Add from LaunchPad initial contract mapping(address => bool) _initialClaimDone; mapping(address => uint256) _firstVestingAmount; mapping(address => uint256) _secondVestingAmount; mapping(address => uint256) _thirdVestingAmount; 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, uint256 _third ) external onlyOwner { require( _third > _second && _second > _first && _first > block.timestamp, "No good timestamp" ); firstVestingUnlockTimestamp = _first; secondVestingUnlockTimestamp = _second; thirdVestingUnlockTimestamp = _third; } 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 > thirdVestingUnlockTimestamp) { if (_thirdVestingAmount[user] > 0) { amount = _thirdVestingAmount[user] .add(_secondVestingAmount[user]) .add(_firstVestingAmount[user]); } else { amount = claimable[user].mul(multiplier).div(100); } } else if (block.timestamp > secondVestingUnlockTimestamp) { if (_secondVestingAmount[user] > 0) { amount = _secondVestingAmount[user].add( _firstVestingAmount[user] ); } else { uint256 _toClaim = claimable[user].mul(multiplier).div(100); amount = _toClaim.mul(7000).div(10000); } } else if (block.timestamp > firstVestingUnlockTimestamp) { if (_firstVestingAmount[user] > 0) { amount = _firstVestingAmount[user]; } else { uint256 _toClaim = claimable[user].mul(multiplier).div(100); amount = _toClaim.mul(4000).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]) .add(_thirdVestingAmount[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) || (_thirdVestingAmount[msg.sender] > 0 && block.timestamp >= thirdVestingUnlockTimestamp), "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); // 10% _toClaim = _toClaim.sub(amount); _firstVestingAmount[msg.sender] = _toClaim.div(3); // 30% at first vesting (1month later) _secondVestingAmount[msg.sender] = _toClaim.div(3); _thirdVestingAmount[msg.sender] = _toClaim .sub(_firstVestingAmount[msg.sender]) .sub(_secondVestingAmount[msg.sender]); } if ( _thirdVestingAmount[msg.sender] > 0 && block.timestamp >= thirdVestingUnlockTimestamp ) { amount = amount .add(_thirdVestingAmount[msg.sender]) .add(_secondVestingAmount[msg.sender]) .add(_firstVestingAmount[msg.sender]); _firstVestingAmount[msg.sender] = 0; _secondVestingAmount[msg.sender] = 0; _thirdVestingAmount[msg.sender] = 0; } 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"},{"internalType":"uint256","name":"_third","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":"thirdVestingUnlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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
60c0604052610e10600355600a6004553480156200001c57600080fd5b5060405162002dcf38038062002dcf833981810160405260408110156200004257600080fd5b508051602090910151600062000057620000c0565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606092831b8116608052911b1660a052620000c4565b3390565b60805160601c60a05160601c612cbe62000111600039806118005280611be25280611dc45280611df452806121805250806111e452806123b752806123ed52806126cc5250612cbe6000f3fe6080604052600436106102975760003560e01c8063898850491161015a578063b66a0e5d116100c1578063f2fde38b1161007a578063f2fde38b146108cb578063f6072f68146108fe578063f6f5e89114610928578063f83c45fe1461093d578063f8757ba314610952578063fc0c546a14610967576102a1565b8063b66a0e5d146107fc578063be9c0dab14610811578063c884ef831461083b578063ca628c781461086e578063e7fa9f7d14610883578063f1f6bf0f14610898576102a1565b80639dbc67c8116101135780639dbc67c81461074b578063a76a4e1514610775578063ab66179e1461078a578063abfea13d1461079f578063afd6b668146107b4578063b479c521146107e7576102a1565b8063898850491461065a5780638da5cb5b1461068d5780638db3b7d9146106be5780638f86f5ea146106f7578063917e2f061461070c578063992642e514610736576102a1565b80634e71d92d116101fe57806362c13ff3116101b757806362c13ff3146105ac5780636c4470fb146105dc578063715018a6146105f1578063782e1e6c146106065780637843eb921461061b5780637fd23cfa14610630576102a1565b80634e71d92d1461046b57806350e4976414610480578063530cd5ab14610495578063536baf0f146104c85780635afbec251461035c5780636249a0f814610597576102a1565b80633af32abf116102505780633af32abf1461039c5780633ba94b7a146103cf578063402914f5146103e45780634417d6a51461041757806348368bca1461042c5780634e2786fb14610456576102a1565b80631af03203146102a65780631b3ed722146102ed5780631d8e59d9146103145780631dfd8baf146103295780632ce6eef11461035c578063367a1d3914610366576102a1565b366102a157600080fd5b600080fd5b3480156102b257600080fd5b506102d9600480360360208110156102c957600080fd5b50356001600160a01b031661097c565b604080519115158252519081900360200190f35b3480156102f957600080fd5b50610302610aea565b60408051918252519081900360200190f35b34801561032057600080fd5b506102d9610af0565b34801561033557600080fd5b506103026004803603602081101561034c57600080fd5b50356001600160a01b0316610af9565b6103646102a1565b005b34801561037257600080fd5b506103646004803603606081101561038957600080fd5b5080359060208101359060400135610b7d565b3480156103a857600080fd5b506102d9600480360360208110156103bf57600080fd5b50356001600160a01b0316610c4b565b3480156103db57600080fd5b50610302610cc1565b3480156103f057600080fd5b506103026004803603602081101561040757600080fd5b50356001600160a01b0316610cc7565b34801561042357600080fd5b50610302610cd9565b34801561043857600080fd5b506103646004803603602081101561044f57600080fd5b5035610cdf565b34801561046257600080fd5b50610302610dbb565b34801561047757600080fd5b506102d9610dca565b34801561048c57600080fd5b506102d961125e565b3480156104a157600080fd5b50610364600480360360208110156104b857600080fd5b50356001600160a01b0316611268565b3480156104d457600080fd5b50610364600480360360408110156104eb57600080fd5b81019060208101813564010000000081111561050657600080fd5b82018360208201111561051857600080fd5b8035906020019184602083028401116401000000008311171561053a57600080fd5b91939092909160208101903564010000000081111561055857600080fd5b82018360208201111561056a57600080fd5b8035906020019184602083028401116401000000008311171561058c57600080fd5b5090925090506112e4565b3480156105a357600080fd5b506103026113e4565b3480156105b857600080fd5b50610364600480360360408110156105cf57600080fd5b50803590602001356113ea565b3480156105e857600080fd5b50610302611516565b3480156105fd57600080fd5b5061036461151c565b34801561061257600080fd5b506103026115c8565b34801561062757600080fd5b506103026115ce565b34801561063c57600080fd5b506103646004803603602081101561065357600080fd5b50356115d4565b34801561066657600080fd5b506103026004803603602081101561067d57600080fd5b50356001600160a01b03166119ec565b34801561069957600080fd5b506106a26119f7565b604080516001600160a01b039092168252519081900360200190f35b3480156106ca57600080fd5b50610364600480360360408110156106e157600080fd5b506001600160a01b038135169060200135611a06565b34801561070357600080fd5b50610364611a84565b34801561071857600080fd5b506103646004803603602081101561072f57600080fd5b5035611b79565b34801561074257600080fd5b506106a2611be0565b34801561075757600080fd5b506103646004803603602081101561076e57600080fd5b5035611c04565b34801561078157600080fd5b50610302611c6b565b34801561079657600080fd5b50610302611c71565b3480156107ab57600080fd5b50610302611c77565b3480156107c057600080fd5b50610302600480360360208110156107d757600080fd5b50356001600160a01b0316611c7d565b3480156107f357600080fd5b506102d9611d0b565b34801561080857600080fd5b50610364611f0b565b34801561081d57600080fd5b506103646004803603602081101561083457600080fd5b5035611ff9565b34801561084757600080fd5b506103026004803603602081101561085e57600080fd5b50356001600160a01b03166122ec565b34801561087a57600080fd5b506102d96122fe565b34801561088f57600080fd5b506103026124d0565b3480156108a457600080fd5b50610302600480360360208110156108bb57600080fd5b50356001600160a01b03166124d6565b3480156108d757600080fd5b50610364600480360360208110156108ee57600080fd5b50356001600160a01b03166124e8565b34801561090a57600080fd5b506103646004803603602081101561092157600080fd5b50356125ea565b34801561093457600080fd5b506103026126b8565b34801561094957600080fd5b506103026126be565b34801561095e57600080fd5b506103026126c4565b34801561097357600080fd5b506106a26126ca565b60006109866126ee565b6001600160a01b03166109976119f7565b6001600160a01b0316146109e0576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b816001600160a01b031663a9059cbb33846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a3d57600080fd5b505afa158015610a51573d6000803e3d6000fd5b505050506040513d6020811015610a6757600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015610ab857600080fd5b505af1158015610acc573d6000803e3d6000fd5b505050506040513d6020811015610ae257600080fd5b505192915050565b60115481565b60125460ff1681565b6001600160a01b0381166000908152600e6020526040812054819060ff1615610b325750336000908152600d6020526040902054610b77565b6001600160a01b0383166000908152600c602052604090205415610b77576001600160a01b0383166000908152600c6020526040902054610b749060046126f2565b90505b92915050565b610b856126ee565b6001600160a01b0316610b966119f7565b6001600160a01b031614610bdf576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b8181118015610bed57508282115b8015610bf857504283115b610c3d576040805162461bcd60e51b815260206004820152601160248201527004e6f20676f6f642074696d657374616d7607c1b604482015290519081900360640190fd5b600592909255600655600755565b6001600160a01b0381166000908152600e6020526040812054819060ff1615610c7657506001610b77565b6001600160a01b0383166000908152600c6020526040902054151580610cb357506001600160a01b0383166000908152600d602052604090205415155b15610b775750600192915050565b60105481565b60146020526000908152604090205481565b60015481565b610ce76126ee565b6001600160a01b0316610cf86119f7565b6001600160a01b031614610d41576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b610d4961274b565b15610d96576040805162461bcd60e51b815260206004820152601860248201527750726573616c6520616c726561647920737461727465642160401b604482015290519081900360640190fd5b6010819055600f54610db5908290610daf9060646126f2565b906127d8565b60115550565b6000610dc561274b565b905090565b6000610dd461283f565b610e25576040805162461bcd60e51b815260206004820152601860248201527f636c61696d696e67206e6f7420616c6c6f776564207965740000000000000000604482015290519081900360640190fd5b3360009081526008602052604090205460ff16610e955733600090815260146020526040902054610e90576040805162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b604482015290519081900360640190fd5b610f45565b3360009081526009602052604090205415801590610eb557506005544210155b80610edb5750336000908152600a602052604090205415801590610edb57506006544210155b80610f015750336000908152600b602052604090205415801590610f0157506007544210155b610f45576040805162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b604482015290519081900360640190fd5b3360009081526008602052604081205460ff1661103557336000908152600860209081526040808320805460ff191660011790556011546014909252822054610f9491606491610daf916126f2565b33600090815260146020526040812055600454909150610fbc90606490610daf9084906126f2565b9150610fc88183612848565b9050610fd58160036127d8565b33600090815260096020526040902055610ff08160036127d8565b336000908152600a602090815260408083208490556009909152902054611023919061101d908490612848565b90612848565b336000908152600b6020526040902055505b336000908152600b60205260409020541580159061105557506007544210155b156110bf5733600090815260096020908152604080832054600a835281842054600b909352922054611095929161108f91829086906128a5565b906128a5565b336000908152600960209081526040808320839055600a8252808320839055600b90915281205590505b336000908152600a6020526040902054158015906110df57506006544210155b156111305733600090815260096020908152604080832054600a90925290912054611110919061108f9084906128a5565b336000908152600960209081526040808320839055600a90915281205590505b336000908152600960205260409020541580159061115057506005544210155b1561118357336000908152600960205260409020546111709082906128a5565b3360009081526009602052604081205590505b3360009081526015602052604090205461119d90826128a5565b336000908152601560205260409020556013546111ba9082612848565b6013556040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163a9059cbb9160448083019260209291908290030181600087803b15801561122c57600080fd5b505af1158015611240573d6000803e3d6000fd5b505050506040513d602081101561125657600080fd5b505191505090565b6000610dc561283f565b6112706126ee565b6001600160a01b03166112816119f7565b6001600160a01b0316146112ca576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600c6020526040812055565b6112ec6126ee565b6001600160a01b03166112fd6119f7565b6001600160a01b031614611346576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b8281146113845760405162461bcd60e51b815260040180806020018281038252602b815260200180612bd4602b913960400191505060405180910390fd5b60005b838110156113dd5782828281811061139b57fe5b90506020020135600c60008787858181106113b257fe5b602090810292909201356001600160a01b031683525081019190915260400160002055600101611387565b5050505050565b60045481565b6113f26126ee565b6001600160a01b03166114036119f7565b6001600160a01b03161461144c576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b600081116114a1576040805162461bcd60e51b815260206004820152601b60248201527f737461626c65207461726765742063616e2774206265205a65726f0000000000604482015290519081900360640190fd5b600082116114f6576040805162461bcd60e51b815260206004820152601a60248201527f746f6b656e207461726765742063616e2774206265205a65726f000000000000604482015290519081900360640190fd5b600f829055601081905561150f81610daf8460646126f2565b6011555050565b60175481565b6115246126ee565b6001600160a01b03166115356119f7565b6001600160a01b03161461157e576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600f5481565b60065481565b6115dc61274b565b600214611625576040805162461bcd60e51b8152602060048201526012602482015271139bdd081d1a194819dbdbd9081c9bdd5b9960721b604482015290519081900360640190fd5b600061163033610af9565b11611682576040805162461bcd60e51b815260206004820152601760248201527f796f7520617265206e6f742077686974656c6973746564000000000000000000604482015290519081900360640190fd5b600081116116c8576040805162461bcd60e51b815260206004820152600e60248201526d616d6f756e7420746f6f206c6f7760901b604482015290519081900360640190fd5b6010546016546116d890836128a5565b1115611720576040805162461bcd60e51b81526020600482015260126024820152711d185c99d95d08185b1c9958591e481a1a5d60721b604482015290519081900360640190fd5b336000908152600e602052604090205460ff1661177857336000908152600e60209081526040808320805460ff19166001179055600c9091529020546117679060046126f2565b336000908152600d60205260409020555b604080518082018252601881527713585e1a5b5d5b481c1d5c98da185cd94818d85c081a1a5d60421b602080830191909152336000908152600d90915291909120546117c59183906128ff565b336000818152600d602090815260408083209490945583516323b872dd60e01b815260048101939093523060248401526044830185905292517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316936323b872dd93606480820194929392918390030190829087803b15801561184f57600080fd5b505af1158015611863573d6000803e3d6000fd5b505050506040513d602081101561187957600080fd5b505161188457600080fd5b60006118a06064610daf601154856126f290919063ffffffff16565b9050600f546118ba826013546128a590919063ffffffff16565b11156118f8576040805162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b604482015290519081900360640190fd5b3360009081526014602052604090205461191e5760175461191a9060016128a5565b6017555b3360009081526014602052604090205461193890836128a5565b3360009081526014602052604090205560135461195590826128a5565b60135560165461196590836128a5565b601681905560105414156119e857604080516003815290517f8b760fcc1fba5875d2dee24210975dbc507d7fb390c5fc674a336a4230459b819181900360200190a16012805460ff191660011790556040805142815290517fdbb898b65754de938e81c6a509625c23cc027521dca30ed62fce6f2e8f838c7a9181900360200190a15b5050565b6000610b7782612996565b6000546001600160a01b031690565b611a0e6126ee565b6001600160a01b0316611a1f6119f7565b6001600160a01b031614611a68576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b6001600160a01b039091166000908152600c6020526040902055565b611a8c6126ee565b6001600160a01b0316611a9d6119f7565b6001600160a01b031614611ae6576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b60125460ff1615611b37576040805162461bcd60e51b815260206004820152601660248201527550726573616c6520616c726561647920656e6465642160501b604482015290519081900360640190fd5b6012805460ff191660011790556040805142815290517fdbb898b65754de938e81c6a509625c23cc027521dca30ed62fce6f2e8f838c7a9181900360200190a1565b611b816126ee565b6001600160a01b0316611b926119f7565b6001600160a01b031614611bdb576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b600255565b7f000000000000000000000000000000000000000000000000000000000000000081565b611c0c6126ee565b6001600160a01b0316611c1d6119f7565b6001600160a01b031614611c66576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b600155565b60025481565b60075481565b60035481565b6001600160a01b038116600090815260146020526040812054819015611cd0576011546001600160a01b038416600090815260146020526040902054611cc991606491610daf916126f2565b9050610b77565b6001600160a01b0383166000908152600b6020908152604080832054600a8352818420546009909352922054610b74929161108f91906128a5565b6000611d156126ee565b6001600160a01b0316611d266119f7565b6001600160a01b031614611d6f576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b60125460ff16611dc2576040805162461bcd60e51b81526020600482015260196024820152781c1c995cd85b19481a185cc81b9bdd081e595d08195b991959603a1b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611e5f57600080fd5b505afa158015611e73573d6000803e3d6000fd5b505050506040513d6020811015611e8957600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b505050506040513d6020811015611f0457600080fd5b5051905090565b611f136126ee565b6001600160a01b0316611f246119f7565b6001600160a01b031614611f6d576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b611f7561274b565b15611fbf576040805162461bcd60e51b8152602060048201526015602482015274050726573616c6520726f756e642069736e2774203605c1b604482015290519081900360640190fd5b42600181905560408051918252517f59ff1c5e8a691bbfdd4acd20ca4355bd3e0878914814bc6d035bd1584d34135d9181900360200190a1565b61200161274b565b600114612055576040805162461bcd60e51b815260206004820152601b60248201527f70726573616c652069736e2774206f6e20676f6f6420726f756e640000000000604482015290519081900360640190fd5b60105460165461206590836128a5565b11156120ad576040805162461bcd60e51b815260206004820152601260248201527115185c99d95d08185b1c9958591e481a1a5d60721b604482015290519081900360640190fd5b336000908152600c60205260409020548111156120fb5760405162461bcd60e51b8152600401808060200182810382526023815260200180612c666023913960400191505060405180910390fd5b336000908152600e602052604090205460ff1661215357336000908152600e60209081526040808320805460ff19166001179055600c9091529020546121429060046126f2565b336000908152600d60205260409020555b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd9160648083019260209291908290030181600087803b1580156121c857600080fd5b505af11580156121dc573d6000803e3d6000fd5b505050506040513d60208110156121f257600080fd5b50516121fd57600080fd5b60006122196064610daf601154856126f290919063ffffffff16565b9050600f54612233826013546128a590919063ffffffff16565b1115612271576040805162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b604482015290519081900360640190fd5b604080518082018252601881527713585e1a5b5d5b481c1d5c98da185cd94818d85c081a1a5d60421b602080830191909152336000908152600c90915291909120546122be9184906128ff565b336000908152600c602090815260408083209390935560149052205461191e5760175461191a9060016128a5565b60156020526000908152604090205481565b60006123086126ee565b6001600160a01b03166123196119f7565b6001600160a01b031614612362576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b60125460ff166123b5576040805162461bcd60e51b81526020600482015260196024820152781c1c995cd85b19481a185cc81b9bdd081e595d08195b991959603a1b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb3361248a6013547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561245857600080fd5b505afa15801561246c573d6000803e3d6000fd5b505050506040513d602081101561248257600080fd5b505190612848565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611eda57600080fd5b60135481565b600c6020526000908152604090205481565b6124f06126ee565b6001600160a01b03166125016119f7565b6001600160a01b03161461254a576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b6001600160a01b03811661258f5760405162461bcd60e51b8152600401808060200182810382526026815260200180612bff6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6125f26126ee565b6001600160a01b03166126036119f7565b6001600160a01b03161461264c576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b61265461274b565b156126a1576040805162461bcd60e51b815260206004820152601860248201527750726573616c6520616c726561647920737461727465642160401b604482015290519081900360640190fd5b600f819055601054610db590610daf8360646126f2565b60055481565b60035490565b60165481565b7f000000000000000000000000000000000000000000000000000000000000000081565b3390565b60008261270157506000610b77565b8282028284828161270e57fe5b0414610b745760405162461bcd60e51b8152600401808060200182810382526021815260200180612c256021913960400191505060405180910390fd5b60008060015442108061275e5750600154155b1561276b57506000610dc5565b600154421015801561278a5750600354600154612787916128a5565b42105b1561279757506001610dc5565b6003546001546127a6916128a5565b42101580156127b8575060125460ff16155b156127c557506002610dc5565b60125460ff1615610dc557506003905090565b600080821161282e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161283757fe5b049392505050565b60025442101590565b60008282111561289f576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610b74576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818484111561298e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561295357818101518382015260200161293b565b50505050905090810190601f1680156129805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038116600090815260146020526040812054819015612a05576011546001600160a01b03841660009081526014602052604081205490916129e591606491610daf91906126f2565b9050612a016064610daf600454846126f290919063ffffffff16565b9150505b600754421115612aa0576001600160a01b0383166000908152600b602052604090205415612a6f576001600160a01b038316600090815260096020908152604080832054600a835281842054600b909352922054612a68929161108f91906128a5565b9050612a9b565b6011546001600160a01b038416600090815260146020526040902054611cc991606491610daf916126f2565b610b77565b600654421115612b41576001600160a01b0383166000908152600a602052604090205415612af6576001600160a01b038316600090815260096020908152604080832054600a90925290912054612a68916128a5565b6011546001600160a01b0384166000908152601460205260408120549091612b2591606491610daf91906126f2565b9050612b39612710610daf83611b586126f2565b915050610b77565b600554421115610b77576001600160a01b03831660009081526009602052604090205415612b8857506001600160a01b038216600090815260096020526040902054610b77565b6011546001600160a01b0384166000908152601460205260408120549091612bb791606491610daf91906126f2565b9050612bcb612710610daf83610fa06126f2565b94935050505056fe497373756520696e205f61646472657373657320616e64205f616c6c6f636174696f6e73206c656e6774684f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572416d6f756e7420746f6f2068696768206f72206e6f74207768697465206c6973746564a2646970667358221220c70a07fb7c967c07c72adf151736d66854640cf7b3d7686d80b1dddae0f68c9964736f6c634300070600330000000000000000000000002e10348ee563dec5fe483de558d1946b7a3372c20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Deployed Bytecode
0x6080604052600436106102975760003560e01c8063898850491161015a578063b66a0e5d116100c1578063f2fde38b1161007a578063f2fde38b146108cb578063f6072f68146108fe578063f6f5e89114610928578063f83c45fe1461093d578063f8757ba314610952578063fc0c546a14610967576102a1565b8063b66a0e5d146107fc578063be9c0dab14610811578063c884ef831461083b578063ca628c781461086e578063e7fa9f7d14610883578063f1f6bf0f14610898576102a1565b80639dbc67c8116101135780639dbc67c81461074b578063a76a4e1514610775578063ab66179e1461078a578063abfea13d1461079f578063afd6b668146107b4578063b479c521146107e7576102a1565b8063898850491461065a5780638da5cb5b1461068d5780638db3b7d9146106be5780638f86f5ea146106f7578063917e2f061461070c578063992642e514610736576102a1565b80634e71d92d116101fe57806362c13ff3116101b757806362c13ff3146105ac5780636c4470fb146105dc578063715018a6146105f1578063782e1e6c146106065780637843eb921461061b5780637fd23cfa14610630576102a1565b80634e71d92d1461046b57806350e4976414610480578063530cd5ab14610495578063536baf0f146104c85780635afbec251461035c5780636249a0f814610597576102a1565b80633af32abf116102505780633af32abf1461039c5780633ba94b7a146103cf578063402914f5146103e45780634417d6a51461041757806348368bca1461042c5780634e2786fb14610456576102a1565b80631af03203146102a65780631b3ed722146102ed5780631d8e59d9146103145780631dfd8baf146103295780632ce6eef11461035c578063367a1d3914610366576102a1565b366102a157600080fd5b600080fd5b3480156102b257600080fd5b506102d9600480360360208110156102c957600080fd5b50356001600160a01b031661097c565b604080519115158252519081900360200190f35b3480156102f957600080fd5b50610302610aea565b60408051918252519081900360200190f35b34801561032057600080fd5b506102d9610af0565b34801561033557600080fd5b506103026004803603602081101561034c57600080fd5b50356001600160a01b0316610af9565b6103646102a1565b005b34801561037257600080fd5b506103646004803603606081101561038957600080fd5b5080359060208101359060400135610b7d565b3480156103a857600080fd5b506102d9600480360360208110156103bf57600080fd5b50356001600160a01b0316610c4b565b3480156103db57600080fd5b50610302610cc1565b3480156103f057600080fd5b506103026004803603602081101561040757600080fd5b50356001600160a01b0316610cc7565b34801561042357600080fd5b50610302610cd9565b34801561043857600080fd5b506103646004803603602081101561044f57600080fd5b5035610cdf565b34801561046257600080fd5b50610302610dbb565b34801561047757600080fd5b506102d9610dca565b34801561048c57600080fd5b506102d961125e565b3480156104a157600080fd5b50610364600480360360208110156104b857600080fd5b50356001600160a01b0316611268565b3480156104d457600080fd5b50610364600480360360408110156104eb57600080fd5b81019060208101813564010000000081111561050657600080fd5b82018360208201111561051857600080fd5b8035906020019184602083028401116401000000008311171561053a57600080fd5b91939092909160208101903564010000000081111561055857600080fd5b82018360208201111561056a57600080fd5b8035906020019184602083028401116401000000008311171561058c57600080fd5b5090925090506112e4565b3480156105a357600080fd5b506103026113e4565b3480156105b857600080fd5b50610364600480360360408110156105cf57600080fd5b50803590602001356113ea565b3480156105e857600080fd5b50610302611516565b3480156105fd57600080fd5b5061036461151c565b34801561061257600080fd5b506103026115c8565b34801561062757600080fd5b506103026115ce565b34801561063c57600080fd5b506103646004803603602081101561065357600080fd5b50356115d4565b34801561066657600080fd5b506103026004803603602081101561067d57600080fd5b50356001600160a01b03166119ec565b34801561069957600080fd5b506106a26119f7565b604080516001600160a01b039092168252519081900360200190f35b3480156106ca57600080fd5b50610364600480360360408110156106e157600080fd5b506001600160a01b038135169060200135611a06565b34801561070357600080fd5b50610364611a84565b34801561071857600080fd5b506103646004803603602081101561072f57600080fd5b5035611b79565b34801561074257600080fd5b506106a2611be0565b34801561075757600080fd5b506103646004803603602081101561076e57600080fd5b5035611c04565b34801561078157600080fd5b50610302611c6b565b34801561079657600080fd5b50610302611c71565b3480156107ab57600080fd5b50610302611c77565b3480156107c057600080fd5b50610302600480360360208110156107d757600080fd5b50356001600160a01b0316611c7d565b3480156107f357600080fd5b506102d9611d0b565b34801561080857600080fd5b50610364611f0b565b34801561081d57600080fd5b506103646004803603602081101561083457600080fd5b5035611ff9565b34801561084757600080fd5b506103026004803603602081101561085e57600080fd5b50356001600160a01b03166122ec565b34801561087a57600080fd5b506102d96122fe565b34801561088f57600080fd5b506103026124d0565b3480156108a457600080fd5b50610302600480360360208110156108bb57600080fd5b50356001600160a01b03166124d6565b3480156108d757600080fd5b50610364600480360360208110156108ee57600080fd5b50356001600160a01b03166124e8565b34801561090a57600080fd5b506103646004803603602081101561092157600080fd5b50356125ea565b34801561093457600080fd5b506103026126b8565b34801561094957600080fd5b506103026126be565b34801561095e57600080fd5b506103026126c4565b34801561097357600080fd5b506106a26126ca565b60006109866126ee565b6001600160a01b03166109976119f7565b6001600160a01b0316146109e0576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b816001600160a01b031663a9059cbb33846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a3d57600080fd5b505afa158015610a51573d6000803e3d6000fd5b505050506040513d6020811015610a6757600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015610ab857600080fd5b505af1158015610acc573d6000803e3d6000fd5b505050506040513d6020811015610ae257600080fd5b505192915050565b60115481565b60125460ff1681565b6001600160a01b0381166000908152600e6020526040812054819060ff1615610b325750336000908152600d6020526040902054610b77565b6001600160a01b0383166000908152600c602052604090205415610b77576001600160a01b0383166000908152600c6020526040902054610b749060046126f2565b90505b92915050565b610b856126ee565b6001600160a01b0316610b966119f7565b6001600160a01b031614610bdf576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b8181118015610bed57508282115b8015610bf857504283115b610c3d576040805162461bcd60e51b815260206004820152601160248201527004e6f20676f6f642074696d657374616d7607c1b604482015290519081900360640190fd5b600592909255600655600755565b6001600160a01b0381166000908152600e6020526040812054819060ff1615610c7657506001610b77565b6001600160a01b0383166000908152600c6020526040902054151580610cb357506001600160a01b0383166000908152600d602052604090205415155b15610b775750600192915050565b60105481565b60146020526000908152604090205481565b60015481565b610ce76126ee565b6001600160a01b0316610cf86119f7565b6001600160a01b031614610d41576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b610d4961274b565b15610d96576040805162461bcd60e51b815260206004820152601860248201527750726573616c6520616c726561647920737461727465642160401b604482015290519081900360640190fd5b6010819055600f54610db5908290610daf9060646126f2565b906127d8565b60115550565b6000610dc561274b565b905090565b6000610dd461283f565b610e25576040805162461bcd60e51b815260206004820152601860248201527f636c61696d696e67206e6f7420616c6c6f776564207965740000000000000000604482015290519081900360640190fd5b3360009081526008602052604090205460ff16610e955733600090815260146020526040902054610e90576040805162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b604482015290519081900360640190fd5b610f45565b3360009081526009602052604090205415801590610eb557506005544210155b80610edb5750336000908152600a602052604090205415801590610edb57506006544210155b80610f015750336000908152600b602052604090205415801590610f0157506007544210155b610f45576040805162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b604482015290519081900360640190fd5b3360009081526008602052604081205460ff1661103557336000908152600860209081526040808320805460ff191660011790556011546014909252822054610f9491606491610daf916126f2565b33600090815260146020526040812055600454909150610fbc90606490610daf9084906126f2565b9150610fc88183612848565b9050610fd58160036127d8565b33600090815260096020526040902055610ff08160036127d8565b336000908152600a602090815260408083208490556009909152902054611023919061101d908490612848565b90612848565b336000908152600b6020526040902055505b336000908152600b60205260409020541580159061105557506007544210155b156110bf5733600090815260096020908152604080832054600a835281842054600b909352922054611095929161108f91829086906128a5565b906128a5565b336000908152600960209081526040808320839055600a8252808320839055600b90915281205590505b336000908152600a6020526040902054158015906110df57506006544210155b156111305733600090815260096020908152604080832054600a90925290912054611110919061108f9084906128a5565b336000908152600960209081526040808320839055600a90915281205590505b336000908152600960205260409020541580159061115057506005544210155b1561118357336000908152600960205260409020546111709082906128a5565b3360009081526009602052604081205590505b3360009081526015602052604090205461119d90826128a5565b336000908152601560205260409020556013546111ba9082612848565b6013556040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b037f0000000000000000000000002e10348ee563dec5fe483de558d1946b7a3372c2169163a9059cbb9160448083019260209291908290030181600087803b15801561122c57600080fd5b505af1158015611240573d6000803e3d6000fd5b505050506040513d602081101561125657600080fd5b505191505090565b6000610dc561283f565b6112706126ee565b6001600160a01b03166112816119f7565b6001600160a01b0316146112ca576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600c6020526040812055565b6112ec6126ee565b6001600160a01b03166112fd6119f7565b6001600160a01b031614611346576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b8281146113845760405162461bcd60e51b815260040180806020018281038252602b815260200180612bd4602b913960400191505060405180910390fd5b60005b838110156113dd5782828281811061139b57fe5b90506020020135600c60008787858181106113b257fe5b602090810292909201356001600160a01b031683525081019190915260400160002055600101611387565b5050505050565b60045481565b6113f26126ee565b6001600160a01b03166114036119f7565b6001600160a01b03161461144c576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b600081116114a1576040805162461bcd60e51b815260206004820152601b60248201527f737461626c65207461726765742063616e2774206265205a65726f0000000000604482015290519081900360640190fd5b600082116114f6576040805162461bcd60e51b815260206004820152601a60248201527f746f6b656e207461726765742063616e2774206265205a65726f000000000000604482015290519081900360640190fd5b600f829055601081905561150f81610daf8460646126f2565b6011555050565b60175481565b6115246126ee565b6001600160a01b03166115356119f7565b6001600160a01b03161461157e576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600f5481565b60065481565b6115dc61274b565b600214611625576040805162461bcd60e51b8152602060048201526012602482015271139bdd081d1a194819dbdbd9081c9bdd5b9960721b604482015290519081900360640190fd5b600061163033610af9565b11611682576040805162461bcd60e51b815260206004820152601760248201527f796f7520617265206e6f742077686974656c6973746564000000000000000000604482015290519081900360640190fd5b600081116116c8576040805162461bcd60e51b815260206004820152600e60248201526d616d6f756e7420746f6f206c6f7760901b604482015290519081900360640190fd5b6010546016546116d890836128a5565b1115611720576040805162461bcd60e51b81526020600482015260126024820152711d185c99d95d08185b1c9958591e481a1a5d60721b604482015290519081900360640190fd5b336000908152600e602052604090205460ff1661177857336000908152600e60209081526040808320805460ff19166001179055600c9091529020546117679060046126f2565b336000908152600d60205260409020555b604080518082018252601881527713585e1a5b5d5b481c1d5c98da185cd94818d85c081a1a5d60421b602080830191909152336000908152600d90915291909120546117c59183906128ff565b336000818152600d602090815260408083209490945583516323b872dd60e01b815260048101939093523060248401526044830185905292517f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f6001600160a01b0316936323b872dd93606480820194929392918390030190829087803b15801561184f57600080fd5b505af1158015611863573d6000803e3d6000fd5b505050506040513d602081101561187957600080fd5b505161188457600080fd5b60006118a06064610daf601154856126f290919063ffffffff16565b9050600f546118ba826013546128a590919063ffffffff16565b11156118f8576040805162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b604482015290519081900360640190fd5b3360009081526014602052604090205461191e5760175461191a9060016128a5565b6017555b3360009081526014602052604090205461193890836128a5565b3360009081526014602052604090205560135461195590826128a5565b60135560165461196590836128a5565b601681905560105414156119e857604080516003815290517f8b760fcc1fba5875d2dee24210975dbc507d7fb390c5fc674a336a4230459b819181900360200190a16012805460ff191660011790556040805142815290517fdbb898b65754de938e81c6a509625c23cc027521dca30ed62fce6f2e8f838c7a9181900360200190a15b5050565b6000610b7782612996565b6000546001600160a01b031690565b611a0e6126ee565b6001600160a01b0316611a1f6119f7565b6001600160a01b031614611a68576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b6001600160a01b039091166000908152600c6020526040902055565b611a8c6126ee565b6001600160a01b0316611a9d6119f7565b6001600160a01b031614611ae6576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b60125460ff1615611b37576040805162461bcd60e51b815260206004820152601660248201527550726573616c6520616c726561647920656e6465642160501b604482015290519081900360640190fd5b6012805460ff191660011790556040805142815290517fdbb898b65754de938e81c6a509625c23cc027521dca30ed62fce6f2e8f838c7a9181900360200190a1565b611b816126ee565b6001600160a01b0316611b926119f7565b6001600160a01b031614611bdb576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b600255565b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f81565b611c0c6126ee565b6001600160a01b0316611c1d6119f7565b6001600160a01b031614611c66576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b600155565b60025481565b60075481565b60035481565b6001600160a01b038116600090815260146020526040812054819015611cd0576011546001600160a01b038416600090815260146020526040902054611cc991606491610daf916126f2565b9050610b77565b6001600160a01b0383166000908152600b6020908152604080832054600a8352818420546009909352922054610b74929161108f91906128a5565b6000611d156126ee565b6001600160a01b0316611d266119f7565b6001600160a01b031614611d6f576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b60125460ff16611dc2576040805162461bcd60e51b81526020600482015260196024820152781c1c995cd85b19481a185cc81b9bdd081e595d08195b991959603a1b604482015290519081900360640190fd5b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f6001600160a01b031663a9059cbb337f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611e5f57600080fd5b505afa158015611e73573d6000803e3d6000fd5b505050506040513d6020811015611e8957600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b505050506040513d6020811015611f0457600080fd5b5051905090565b611f136126ee565b6001600160a01b0316611f246119f7565b6001600160a01b031614611f6d576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b611f7561274b565b15611fbf576040805162461bcd60e51b8152602060048201526015602482015274050726573616c6520726f756e642069736e2774203605c1b604482015290519081900360640190fd5b42600181905560408051918252517f59ff1c5e8a691bbfdd4acd20ca4355bd3e0878914814bc6d035bd1584d34135d9181900360200190a1565b61200161274b565b600114612055576040805162461bcd60e51b815260206004820152601b60248201527f70726573616c652069736e2774206f6e20676f6f6420726f756e640000000000604482015290519081900360640190fd5b60105460165461206590836128a5565b11156120ad576040805162461bcd60e51b815260206004820152601260248201527115185c99d95d08185b1c9958591e481a1a5d60721b604482015290519081900360640190fd5b336000908152600c60205260409020548111156120fb5760405162461bcd60e51b8152600401808060200182810382526023815260200180612c666023913960400191505060405180910390fd5b336000908152600e602052604090205460ff1661215357336000908152600e60209081526040808320805460ff19166001179055600c9091529020546121429060046126f2565b336000908152600d60205260409020555b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b037f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f16916323b872dd9160648083019260209291908290030181600087803b1580156121c857600080fd5b505af11580156121dc573d6000803e3d6000fd5b505050506040513d60208110156121f257600080fd5b50516121fd57600080fd5b60006122196064610daf601154856126f290919063ffffffff16565b9050600f54612233826013546128a590919063ffffffff16565b1115612271576040805162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b604482015290519081900360640190fd5b604080518082018252601881527713585e1a5b5d5b481c1d5c98da185cd94818d85c081a1a5d60421b602080830191909152336000908152600c90915291909120546122be9184906128ff565b336000908152600c602090815260408083209390935560149052205461191e5760175461191a9060016128a5565b60156020526000908152604090205481565b60006123086126ee565b6001600160a01b03166123196119f7565b6001600160a01b031614612362576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b60125460ff166123b5576040805162461bcd60e51b81526020600482015260196024820152781c1c995cd85b19481a185cc81b9bdd081e595d08195b991959603a1b604482015290519081900360640190fd5b7f0000000000000000000000002e10348ee563dec5fe483de558d1946b7a3372c26001600160a01b031663a9059cbb3361248a6013547f0000000000000000000000002e10348ee563dec5fe483de558d1946b7a3372c26001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561245857600080fd5b505afa15801561246c573d6000803e3d6000fd5b505050506040513d602081101561248257600080fd5b505190612848565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611eda57600080fd5b60135481565b600c6020526000908152604090205481565b6124f06126ee565b6001600160a01b03166125016119f7565b6001600160a01b03161461254a576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b6001600160a01b03811661258f5760405162461bcd60e51b8152600401808060200182810382526026815260200180612bff6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6125f26126ee565b6001600160a01b03166126036119f7565b6001600160a01b03161461264c576040805162461bcd60e51b81526020600482018190526024820152600080516020612c46833981519152604482015290519081900360640190fd5b61265461274b565b156126a1576040805162461bcd60e51b815260206004820152601860248201527750726573616c6520616c726561647920737461727465642160401b604482015290519081900360640190fd5b600f819055601054610db590610daf8360646126f2565b60055481565b60035490565b60165481565b7f0000000000000000000000002e10348ee563dec5fe483de558d1946b7a3372c281565b3390565b60008261270157506000610b77565b8282028284828161270e57fe5b0414610b745760405162461bcd60e51b8152600401808060200182810382526021815260200180612c256021913960400191505060405180910390fd5b60008060015442108061275e5750600154155b1561276b57506000610dc5565b600154421015801561278a5750600354600154612787916128a5565b42105b1561279757506001610dc5565b6003546001546127a6916128a5565b42101580156127b8575060125460ff16155b156127c557506002610dc5565b60125460ff1615610dc557506003905090565b600080821161282e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161283757fe5b049392505050565b60025442101590565b60008282111561289f576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610b74576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818484111561298e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561295357818101518382015260200161293b565b50505050905090810190601f1680156129805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038116600090815260146020526040812054819015612a05576011546001600160a01b03841660009081526014602052604081205490916129e591606491610daf91906126f2565b9050612a016064610daf600454846126f290919063ffffffff16565b9150505b600754421115612aa0576001600160a01b0383166000908152600b602052604090205415612a6f576001600160a01b038316600090815260096020908152604080832054600a835281842054600b909352922054612a68929161108f91906128a5565b9050612a9b565b6011546001600160a01b038416600090815260146020526040902054611cc991606491610daf916126f2565b610b77565b600654421115612b41576001600160a01b0383166000908152600a602052604090205415612af6576001600160a01b038316600090815260096020908152604080832054600a90925290912054612a68916128a5565b6011546001600160a01b0384166000908152601460205260408120549091612b2591606491610daf91906126f2565b9050612b39612710610daf83611b586126f2565b915050610b77565b600554421115610b77576001600160a01b03831660009081526009602052604090205415612b8857506001600160a01b038216600090815260096020526040902054610b77565b6011546001600160a01b0384166000908152601460205260408120549091612bb791606491610daf91906126f2565b9050612bcb612710610daf83610fa06126f2565b94935050505056fe497373756520696e205f61646472657373657320616e64205f616c6c6f636174696f6e73206c656e6774684f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572416d6f756e7420746f6f2068696768206f72206e6f74207768697465206c6973746564a2646970667358221220c70a07fb7c967c07c72adf151736d66854640cf7b3d7686d80b1dddae0f68c9964736f6c63430007060033
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.