Source Code
Latest 25 from a total of 548 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Claim | 15062456 | 1334 days ago | IN | 0 ETH | 0.00064118 | ||||
| Claim | 14545808 | 1419 days ago | IN | 0 ETH | 0.00249564 | ||||
| Claim | 14545804 | 1419 days ago | IN | 0 ETH | 0.00234122 | ||||
| Claim | 14429276 | 1437 days ago | IN | 0 ETH | 0.001464 | ||||
| Claim | 14429268 | 1437 days ago | IN | 0 ETH | 0.00120897 | ||||
| Claim | 14422075 | 1439 days ago | IN | 0 ETH | 0.00264864 | ||||
| Claim | 14390402 | 1443 days ago | IN | 0 ETH | 0.0011862 | ||||
| Claim | 14390398 | 1443 days ago | IN | 0 ETH | 0.00111905 | ||||
| Claim | 14370576 | 1447 days ago | IN | 0 ETH | 0.00081121 | ||||
| Claim | 14370566 | 1447 days ago | IN | 0 ETH | 0.00074726 | ||||
| Claim | 14370564 | 1447 days ago | IN | 0 ETH | 0.00170236 | ||||
| Claim | 14368593 | 1447 days ago | IN | 0 ETH | 0.00360673 | ||||
| Claim | 14333404 | 1452 days ago | IN | 0 ETH | 0.00149792 | ||||
| Claim | 14168544 | 1478 days ago | IN | 0 ETH | 0.00517191 | ||||
| Claim | 14114201 | 1486 days ago | IN | 0 ETH | 0.00625646 | ||||
| Claim | 13879600 | 1523 days ago | IN | 0 ETH | 0.00279505 | ||||
| Claim | 13879583 | 1523 days ago | IN | 0 ETH | 0.00269089 | ||||
| Claim | 13793172 | 1536 days ago | IN | 0 ETH | 0.00408262 | ||||
| Claim | 13793166 | 1536 days ago | IN | 0 ETH | 0.00429912 | ||||
| Claim | 13770495 | 1539 days ago | IN | 0 ETH | 0.00623372 | ||||
| Claim | 13738894 | 1544 days ago | IN | 0 ETH | 0.0107525 | ||||
| Claim | 13687429 | 1553 days ago | IN | 0 ETH | 0.0041328 | ||||
| Claim | 13673219 | 1555 days ago | IN | 0 ETH | 0.00659679 | ||||
| Claim | 13667963 | 1556 days ago | IN | 0 ETH | 0.00660756 | ||||
| Claim | 13645622 | 1559 days ago | IN | 0 ETH | 0.004879 |
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 12964871 | 1665 days ago | 18.49486244 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
LaunchPadBrightUnionEth
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 LaunchPadBrightUnionEth is Ownable {
using SafeMath for uint256;
// 4 rounds : 0 = not open, 1 = guaranty round, 2 = First come first serve, 3 = sale finished
uint256 public round1BeganAt;
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 constant round1Duration = 3600; // in secondes 3600 = 1h
// Add from LaunchPad initial contract
uint256 public firstVestingUnlockTimestamp;
uint256 public secondVestingUnlockTimestamp;
//uint256 public thirdVestingUnlockTimestamp;
// 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;
constructor(IERC20 _token) {
token = _token;
}
mapping(address => bool) public isWhitelisted; // used for front end when user have claim and used his allowances
mapping(address => uint256) public round1Allowance;
mapping(address => uint256) public round2Allowance;
uint256 public tokenTarget;
uint256 public weiTarget;
uint256 public multiplier;
bool public endUnlocked;
uint256 public totalOwed;
mapping(address => uint256) public claimable;
mapping(address => uint256) public claimed;
uint256 public weiRaised;
uint256 public participants;
event StartSale(uint256 startTimestamp);
event EndUnlockedEvent(uint256 endTimestamp);
event ClaimUnlockedEvent(uint256 claimTimestamp);
event RoundChange(uint256 roundNumber);
function initSale(uint256 _tokenTarget, uint256 _weiTarget)
external
onlyOwner
{
require(_weiTarget > 0, "wei target can't be Zero");
require(_tokenTarget > 0, "token target can't be Zero");
tokenTarget = _tokenTarget;
weiTarget = _weiTarget;
multiplier = tokenTarget.div(weiTarget);
}
// 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;
//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.div(weiTarget);
}
function setStableTarget(uint256 _weiTarget) external onlyOwner {
require(_roundNumber() == 0, "Presale already started!");
weiTarget = _weiTarget;
multiplier = tokenTarget.div(weiTarget);
}
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
{
isWhitelisted[_address] = true;
round1Allowance[_address] = _allocation;
round2Allowance[_address] = _allocation.mul(2);
}
function addMultipleWhitelistedAddressesMultiplier4(
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++) {
isWhitelisted[_addresses[i]] = true;
round1Allowance[_addresses[i]] = _allocations[i];
round2Allowance[_addresses[i]] = _allocations[i].mul(4); // here to param allowance to round 2
}
}
function addMultipleWhitelistedAddressesMultiplier1(
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++) {
isWhitelisted[_addresses[i]] = true;
round1Allowance[_addresses[i]] = _allocations[i];
round2Allowance[_addresses[i]] = _allocations[i]; // here to param allowance to round 2
}
}
// Add from LaunchPad initial contract
// add allocations for round 2
// This function can update an existing allocation
function addMultipleWhitelistedAddressesForRound2(
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++) {
if (!isWhitelisted[_addresses[i]]) {
isWhitelisted[_addresses[i]] = true;
}
if (round2Allowance[_addresses[i]] != _allocations[i]) {
round2Allowance[_addresses[i]] = _allocations[i];
}
}
}
function removeWhitelistedAddress(address _address) external onlyOwner {
isWhitelisted[_address] = false;
round1Allowance[_address] = 0;
round2Allowance[_address] = 0;
}
function withdrawWei(uint256 _amount) external onlyOwner {
require(endUnlocked, "presale has not yet ended");
(bool _sent, ) = msg.sender.call{value: _amount}("");
require(_sent, "Error in Transfer");
}
//update from original contract
function claimableAmount(address user) external view returns (uint256) {
uint256 amount;
if (!_claimUnlocked()) {
amount = 0;
} else if (claimable[msg.sender] > 0) {
uint256 _toClaim = claimable[user].mul(multiplier);
amount = _toClaim.mul(3000).div(10000);
} else if (
_firstVestingAmount[user] > 0 &&
block.timestamp >= firstVestingUnlockTimestamp
) {
amount = _firstVestingAmount[user];
} else if (
_secondVestingAmount[user] > 0 &&
block.timestamp >= secondVestingUnlockTimestamp
) {
amount = _secondVestingAmount[user];
}
// else if (
// _thirdVestingAmount[user] > 0 &&
// block.timestamp >= thirdVestingUnlockTimestamp
// ) {
// amount = _thirdVestingAmount[user];
// }
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);
} 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 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 for the moment"
);
}
uint256 amount;
if (!_initialClaimDone[msg.sender]) {
_initialClaimDone[msg.sender] = true;
uint256 _toClaim = claimable[msg.sender].mul(multiplier);
claimable[msg.sender] = 0;
amount = _toClaim.mul(3000).div(10000);
_toClaim = _toClaim.sub(amount);
_firstVestingAmount[msg.sender] = _toClaim.div(2);
_secondVestingAmount[msg.sender] = _toClaim.div(2);
//_thirdVestingAmount[msg.sender] = _toClaim.div(4);
} else if (
_firstVestingAmount[msg.sender] > 0 &&
block.timestamp >= firstVestingUnlockTimestamp
) {
amount = _firstVestingAmount[msg.sender];
_firstVestingAmount[msg.sender] = 0;
} else if (
_secondVestingAmount[msg.sender] > 0 &&
block.timestamp >= secondVestingUnlockTimestamp
) {
amount = _secondVestingAmount[msg.sender];
_secondVestingAmount[msg.sender] = 0;
}
// else if (
// _thirdVestingAmount[msg.sender] > 0 &&
// block.timestamp >= thirdVestingUnlockTimestamp
// ) {
// amount = _thirdVestingAmount[msg.sender];
// _thirdVestingAmount[msg.sender] = 0;
// }
claimed[msg.sender] = claimed[msg.sender].add(amount);
totalOwed = totalOwed.sub(amount);
return token.transfer(msg.sender, amount);
}
function buyRound1() public payable {
require(_roundNumber() == 1, "presale isn't on good round");
require(msg.value > 0, "amount too low");
require(weiRaised.add(msg.value) <= weiTarget, "Target already hit");
require(
round1Allowance[msg.sender] >= msg.value,
"Amount too high or not white listed"
);
uint256 amount = msg.value.mul(multiplier);
require(
totalOwed.add(amount) <= token.balanceOf(address(this)),
"sold out"
);
round1Allowance[msg.sender] = round1Allowance[msg.sender].sub(
msg.value,
"Maximum purchase cap hit"
);
if (claimable[msg.sender] == 0) participants = participants.add(1);
claimable[msg.sender] = claimable[msg.sender].add(msg.value);
totalOwed = totalOwed.add(amount);
weiRaised = weiRaised.add(msg.value);
}
function buyRound2() public payable {
require(_roundNumber() == 2, "Not the good round");
require(msg.value > 0, "amount too low");
require(
round2Allowance[msg.sender] > 0,
"you don't have round2 allowance"
);
require(weiRaised.add(msg.value) <= weiTarget, "target already hit");
round2Allowance[msg.sender] = round2Allowance[msg.sender].sub(
msg.value,
"Maximum purchase cap hit"
);
uint256 amount = msg.value.mul(multiplier);
require(
totalOwed.add(amount) <= token.balanceOf(address(this)),
"sold out"
);
if (claimable[msg.sender] == 0) participants = participants.add(1);
claimable[msg.sender] = claimable[msg.sender].add(msg.value);
totalOwed = totalOwed.add(amount);
weiRaised = weiRaised.add(msg.value);
}
fallback() external payable {
if (_roundNumber() == 1) {
buyRound1();
} else if (_roundNumber() == 2) {
buyRound2();
} else {
revert();
}
}
receive() external payable {
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
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20","name":"_token","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":"addMultipleWhitelistedAddressesForRound2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_allocations","type":"uint256[]"}],"name":"addMultipleWhitelistedAddressesMultiplier1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_allocations","type":"uint256[]"}],"name":"addMultipleWhitelistedAddressesMultiplier4","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":"buyRound1","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyRound2","outputs":[],"stateMutability":"payable","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":[],"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":"_weiTarget","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":[{"internalType":"address","name":"","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":[{"internalType":"address","name":"","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":"_weiTarget","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":"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":"weiRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weiTarget","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawWei","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040523480156200001157600080fd5b5060405162002c6838038062002c68833981810160405260208110156200003757600080fd5b5051600062000045620000a5565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060601b6001600160601b031916608052620000a9565b3390565b60805160601c612b88620000e060003980610c3a5280610faa5280611a99528061237552806123ab52806128605250612b886000f3fe60806040526004361061025e5760003560e01c80637843eb9211610144578063ca628c78116100b6578063f2fde38b1161007a578063f2fde38b14610998578063f4eb4632146109cb578063f6072f68146109e0578063f6f5e89114610a0a578063f83c45fe14610a1f578063fc0c546a14610a345761029f565b8063ca628c7814610868578063d06413151461087d578063d11486a114610885578063e7fa9f7d14610950578063f1f6bf0f146109655761029f565b8063917e2f0611610108578063917e2f06146107845780639dbc67c8146107ae578063a76a4e15146107d8578063afd6b668146107ed578063b66a0e5d14610820578063c884ef83146108355761029f565b80637843eb92146106bd57806389885049146106d25780638da5cb5b146107055780638db3b7d9146107365780638f86f5ea1461076f5761029f565b80634417d6a5116101dd57806350e49764116101a157806350e4976414610606578063530cd5ab1461061b57806362c13ff31461064e5780636c4470fb1461067e578063715018a614610693578063782e1e6c146106a85761029f565b80634417d6a51461056d57806348368bca146105825780634d35cec8146105ac5780634e2786fb146105dc5780634e71d92d146105f15761029f565b80631d8e59d9116102245780631d8e59d9146104965780631dfd8baf146104bf5780633af32abf146104f2578063402914f5146105255780634042b66f146105585761029f565b80622a741d146102a75780625dfa42146102af5780630d6f85631461037a5780630f728751146103a45780631b3ed7221461046f5761029f565b3661029f5761026b610a49565b600114156102805761027b610ad7565b61029d565b610288610a49565b600214156102985761027b610de8565b600080fd5b005b61026b610a49565b61029d610de8565b3480156102bb57600080fd5b5061029d600480360360408110156102d257600080fd5b810190602081018135600160201b8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460208302840111600160201b8311171561031f57600080fd5b919390929091602081019035600160201b81111561033c57600080fd5b82018360208201111561034e57600080fd5b803590602001918460208302840111600160201b8311171561036f57600080fd5b5090925090506110ae565b34801561038657600080fd5b5061029d6004803603602081101561039d57600080fd5b50356112ad565b3480156103b057600080fd5b5061029d600480360360408110156103c757600080fd5b810190602081018135600160201b8111156103e157600080fd5b8201836020820111156103f357600080fd5b803590602001918460208302840111600160201b8311171561041457600080fd5b919390929091602081019035600160201b81111561043157600080fd5b82018360208201111561044357600080fd5b803590602001918460208302840111600160201b8311171561046457600080fd5b5090925090506113f7565b34801561047b57600080fd5b506104846115b3565b60408051918252519081900360200190f35b3480156104a257600080fd5b506104ab6115b9565b604080519115158252519081900360200190f35b3480156104cb57600080fd5b50610484600480360360208110156104e257600080fd5b50356001600160a01b03166115c2565b3480156104fe57600080fd5b506104ab6004803603602081101561051557600080fd5b50356001600160a01b03166115d4565b34801561053157600080fd5b506104846004803603602081101561054857600080fd5b50356001600160a01b03166115e9565b34801561056457600080fd5b506104846115fb565b34801561057957600080fd5b50610484611601565b34801561058e57600080fd5b5061029d600480360360208110156105a557600080fd5b5035611607565b3480156105b857600080fd5b5061029d600480360360408110156105cf57600080fd5b50803590602001356116d6565b3480156105e857600080fd5b50610484611796565b3480156105fd57600080fd5b506104ab6117a0565b34801561061257600080fd5b506104ab611b13565b34801561062757600080fd5b5061029d6004803603602081101561063e57600080fd5b50356001600160a01b0316611b1d565b34801561065a57600080fd5b5061029d6004803603604081101561067157600080fd5b5080359060200135611bb5565b34801561068a57600080fd5b50610484611cdc565b34801561069f57600080fd5b5061029d611ce2565b3480156106b457600080fd5b50610484611d8e565b3480156106c957600080fd5b50610484611d94565b3480156106de57600080fd5b50610484600480360360208110156106f557600080fd5b50356001600160a01b0316611d9a565b34801561071157600080fd5b5061071a611ea6565b604080516001600160a01b039092168252519081900360200190f35b34801561074257600080fd5b5061029d6004803603604081101561075957600080fd5b506001600160a01b038135169060200135611eb5565b34801561077b57600080fd5b5061029d611f72565b34801561079057600080fd5b5061029d600480360360208110156107a757600080fd5b5035612067565b3480156107ba57600080fd5b5061029d600480360360208110156107d157600080fd5b50356120ce565b3480156107e457600080fd5b50610484612135565b3480156107f957600080fd5b506104846004803603602081101561081057600080fd5b50356001600160a01b031661213b565b34801561082c57600080fd5b5061029d6121bc565b34801561084157600080fd5b506104846004803603602081101561085857600080fd5b50356001600160a01b03166122aa565b34801561087457600080fd5b506104ab6122bc565b61029d610ad7565b34801561089157600080fd5b5061029d600480360360408110156108a857600080fd5b810190602081018135600160201b8111156108c257600080fd5b8201836020820111156108d457600080fd5b803590602001918460208302840111600160201b831117156108f557600080fd5b919390929091602081019035600160201b81111561091257600080fd5b82018360208201111561092457600080fd5b803590602001918460208302840111600160201b8311171561094557600080fd5b5090925090506124bf565b34801561095c57600080fd5b50610484612668565b34801561097157600080fd5b506104846004803603602081101561098857600080fd5b50356001600160a01b031661266e565b3480156109a457600080fd5b5061029d600480360360208110156109bb57600080fd5b50356001600160a01b0316612680565b3480156109d757600080fd5b50610484612782565b3480156109ec57600080fd5b5061029d60048036036020811015610a0357600080fd5b5035612788565b348015610a1657600080fd5b50610484612852565b348015610a2b57600080fd5b50610484612858565b348015610a4057600080fd5b5061071a61285e565b600080600154421080610a5c5750600154155b15610a6957506000610ad2565b6001544210158015610a885750600154610a8590610e10612882565b42105b15610a9557506001610ad2565b600154610aa490610e10612882565b4210158015610ab65750600e5460ff16155b15610ac357506002610ad2565b600e5460ff1615610ad2575060035b905090565b610adf610a49565b600114610b33576040805162461bcd60e51b815260206004820152601b60248201527f70726573616c652069736e2774206f6e20676f6f6420726f756e640000000000604482015290519081900360640190fd5b60003411610b79576040805162461bcd60e51b815260206004820152600e60248201526d616d6f756e7420746f6f206c6f7760901b604482015290519081900360640190fd5b600c54601254610b899034612882565b1115610bd1576040805162461bcd60e51b815260206004820152601260248201527115185c99d95d08185b1c9958591e481a1a5d60721b604482015290519081900360640190fd5b33600090815260096020526040902054341115610c1f5760405162461bcd60e51b8152600401808060200182810382526023815260200180612b306023913960400191505060405180910390fd5b6000610c36600d54346128dc90919063ffffffff16565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ca557600080fd5b505afa158015610cb9573d6000803e3d6000fd5b505050506040513d6020811015610ccf57600080fd5b5051600f54610cde9083612882565b1115610d1c576040805162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b604482015290519081900360640190fd5b604080518082018252601881527713585e1a5b5d5b481c1d5c98da185cd94818d85c081a1a5d60421b60208083019190915233600090815260099091529190912054610d69913490612935565b33600090815260096020908152604080832093909355601090522054610d9b57601354610d97906001612882565b6013555b33600090815260106020526040902054610db59034612882565b33600090815260106020526040902055600f54610dd29082612882565b600f55601254610de29034612882565b60125550565b610df0610a49565b600214610e39576040805162461bcd60e51b8152602060048201526012602482015271139bdd081d1a194819dbdbd9081c9bdd5b9960721b604482015290519081900360640190fd5b60003411610e7f576040805162461bcd60e51b815260206004820152600e60248201526d616d6f756e7420746f6f206c6f7760901b604482015290519081900360640190fd5b336000908152600a6020526040902054610ee0576040805162461bcd60e51b815260206004820152601f60248201527f796f7520646f6e2774206861766520726f756e643220616c6c6f77616e636500604482015290519081900360640190fd5b600c54601254610ef09034612882565b1115610f38576040805162461bcd60e51b81526020600482015260126024820152711d185c99d95d08185b1c9958591e481a1a5d60721b604482015290519081900360640190fd5b604080518082018252601881527713585e1a5b5d5b481c1d5c98da185cd94818d85c081a1a5d60421b602080830191909152336000908152600a9091529190912054610f85913490612935565b336000908152600a6020526040812091909155600d54610fa69034906128dc565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561101557600080fd5b505afa158015611029573d6000803e3d6000fd5b505050506040513d602081101561103f57600080fd5b5051600f5461104e9083612882565b111561108c576040805162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b604482015290519081900360640190fd5b33600090815260106020526040902054610d9b57601354610d97906001612882565b6110b66129cc565b6001600160a01b03166110c7611ea6565b6001600160a01b031614611110576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b82811461114e5760405162461bcd60e51b815260040180806020018281038252602b815260200180612a9e602b913960400191505060405180910390fd5b60005b838110156112a6576008600086868481811061116957fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff166111ed576001600860008787858181106111a557fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8282828181106111f957fe5b90506020020135600a600087878581811061121057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020541461129e5782828281811061125257fe5b90506020020135600a600087878581811061126957fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055505b600101611151565b5050505050565b6112b56129cc565b6001600160a01b03166112c6611ea6565b6001600160a01b03161461130f576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b600e5460ff16611362576040805162461bcd60e51b81526020600482015260196024820152781c1c995cd85b19481a185cc81b9bdd081e595d08195b991959603a1b604482015290519081900360640190fd5b604051600090339083908381818185875af1925050503d80600081146113a4576040519150601f19603f3d011682016040523d82523d6000602084013e6113a9565b606091505b50509050806113f3576040805162461bcd60e51b815260206004820152601160248201527022b93937b91034b7102a3930b739b332b960791b604482015290519081900360640190fd5b5050565b6113ff6129cc565b6001600160a01b0316611410611ea6565b6001600160a01b031614611459576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b8281146114975760405162461bcd60e51b815260040180806020018281038252602b815260200180612a9e602b913960400191505060405180910390fd5b60005b838110156112a6576001600860008787858181106114b457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555082828281811061150757fe5b905060200201356009600087878581811061151e57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002081905550611578600484848481811061156357fe5b905060200201356128dc90919063ffffffff16565b600a600087878581811061158857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205560010161149a565b600d5481565b600e5460ff1681565b600a6020526000908152604090205481565b60086020526000908152604090205460ff1681565b60106020526000908152604090205481565b60125481565b60015481565b61160f6129cc565b6001600160a01b0316611620611ea6565b6001600160a01b031614611669576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b611671610a49565b156116be576040805162461bcd60e51b815260206004820152601860248201527750726573616c6520616c726561647920737461727465642160401b604482015290519081900360640190fd5b600c819055600b546116d090826129d0565b600d5550565b6116de6129cc565b6001600160a01b03166116ef611ea6565b6001600160a01b031614611738576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b818111801561174657504282115b61178b576040805162461bcd60e51b815260206004820152601160248201527004e6f20676f6f642074696d657374616d7607c1b604482015290519081900360640190fd5b600391909155600455565b6000610ad2610a49565b60006117aa612a37565b6117fb576040805162461bcd60e51b815260206004820152601860248201527f636c61696d696e67206e6f7420616c6c6f776564207965740000000000000000604482015290519081900360640190fd5b3360009081526005602052604090205460ff1661186b5733600090815260106020526040902054611866576040805162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b604482015290519081900360640190fd5b611902565b336000908152600660205260409020541580159061188b57506003544210155b806118b1575033600090815260076020526040902054158015906118b157506004544210155b611902576040805162461bcd60e51b815260206004820152601f60248201527f6e6f7468696e6720746f20636c61696d20666f7220746865206d6f6d656e7400604482015290519081900360640190fd5b3360009081526005602052604081205460ff166119be57336000908152600560209081526040808320805460ff19166001179055600d54601090925282205461194a916128dc565b33600090815260106020526040812055905061197461271061196e83610bb86128dc565b906129d0565b91506119808183612a40565b905061198d8160026129d0565b336000908152600660205260409020556119a88160026129d0565b3360009081526007602052604090205550611a38565b33600090815260066020526040902054158015906119de57506003544210155b156119fd57503360009081526006602052604081208054919055611a38565b3360009081526007602052604090205415801590611a1d57506004544210155b15611a38575033600090815260076020526040812080549190555b33600090815260116020526040902054611a529082612882565b33600090815260116020526040902055600f54611a6f9082612a40565b600f556040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163a9059cbb9160448083019260209291908290030181600087803b158015611ae157600080fd5b505af1158015611af5573d6000803e3d6000fd5b505050506040513d6020811015611b0b57600080fd5b505191505090565b6000610ad2612a37565b611b256129cc565b6001600160a01b0316611b36611ea6565b6001600160a01b031614611b7f576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600860209081526040808320805460ff1916905560098252808320839055600a909152812055565b611bbd6129cc565b6001600160a01b0316611bce611ea6565b6001600160a01b031614611c17576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b60008111611c6c576040805162461bcd60e51b815260206004820152601860248201527f776569207461726765742063616e2774206265205a65726f0000000000000000604482015290519081900360640190fd5b60008211611cc1576040805162461bcd60e51b815260206004820152601a60248201527f746f6b656e207461726765742063616e2774206265205a65726f000000000000604482015290519081900360640190fd5b600b829055600c819055611cd582826129d0565b600d555050565b60135481565b611cea6129cc565b6001600160a01b0316611cfb611ea6565b6001600160a01b031614611d44576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600b5481565b60045481565b600080611da5612a37565b611db157506000611ea0565b3360009081526010602052604090205415611e0a57600d546001600160a01b0384166000908152601060205260408120549091611dee91906128dc565b9050611e0261271061196e83610bb86128dc565b915050611ea0565b6001600160a01b03831660009081526006602052604090205415801590611e3357506003544210155b15611e5757506001600160a01b038216600090815260066020526040902054611ea0565b6001600160a01b03831660009081526007602052604090205415801590611e8057506004544210155b15611ea057506001600160a01b0382166000908152600760205260409020545b92915050565b6000546001600160a01b031690565b611ebd6129cc565b6001600160a01b0316611ece611ea6565b6001600160a01b031614611f17576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320805460ff1916600117905560099091529020819055611f528160026128dc565b6001600160a01b039092166000908152600a602052604090209190915550565b611f7a6129cc565b6001600160a01b0316611f8b611ea6565b6001600160a01b031614611fd4576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b600e5460ff1615612025576040805162461bcd60e51b815260206004820152601660248201527550726573616c6520616c726561647920656e6465642160501b604482015290519081900360640190fd5b600e805460ff191660011790556040805142815290517fdbb898b65754de938e81c6a509625c23cc027521dca30ed62fce6f2e8f838c7a9181900360200190a1565b61206f6129cc565b6001600160a01b0316612080611ea6565b6001600160a01b0316146120c9576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b600255565b6120d66129cc565b6001600160a01b03166120e7611ea6565b6001600160a01b031614612130576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b600155565b60025481565b6001600160a01b03811660009081526010602052604081205481901561218757600d546001600160a01b038416600090815260106020526040902054612180916128dc565b9050611ea0565b6001600160a01b0383166000908152600760209081526040808320546006909252909120546121b591612882565b9392505050565b6121c46129cc565b6001600160a01b03166121d5611ea6565b6001600160a01b03161461221e576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b612226610a49565b15612270576040805162461bcd60e51b8152602060048201526015602482015274050726573616c6520726f756e642069736e2774203605c1b604482015290519081900360640190fd5b42600181905560408051918252517f59ff1c5e8a691bbfdd4acd20ca4355bd3e0878914814bc6d035bd1584d34135d9181900360200190a1565b60116020526000908152604090205481565b60006122c66129cc565b6001600160a01b03166122d7611ea6565b6001600160a01b031614612320576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b600e5460ff16612373576040805162461bcd60e51b81526020600482015260196024820152781c1c995cd85b19481a185cc81b9bdd081e595d08195b991959603a1b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb33612448600f547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561241657600080fd5b505afa15801561242a573d6000803e3d6000fd5b505050506040513d602081101561244057600080fd5b505190612a40565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561248e57600080fd5b505af11580156124a2573d6000803e3d6000fd5b505050506040513d60208110156124b857600080fd5b5051905090565b6124c76129cc565b6001600160a01b03166124d8611ea6565b6001600160a01b031614612521576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b82811461255f5760405162461bcd60e51b815260040180806020018281038252602b815260200180612a9e602b913960400191505060405180910390fd5b60005b838110156112a65760016008600087878581811061257c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508282828181106125cf57fe5b90506020020135600960008787858181106125e657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555082828281811061262657fe5b90506020020135600a600087878581811061263d57fe5b602090810292909201356001600160a01b031683525081019190915260400160002055600101612562565b600f5481565b60096020526000908152604090205481565b6126886129cc565b6001600160a01b0316612699611ea6565b6001600160a01b0316146126e2576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b6001600160a01b0381166127275760405162461bcd60e51b8152600401808060200182810382526026815260200180612ac96026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600c5481565b6127906129cc565b6001600160a01b03166127a1611ea6565b6001600160a01b0316146127ea576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b6127f2610a49565b1561283f576040805162461bcd60e51b815260206004820152601860248201527750726573616c6520616c726561647920737461727465642160401b604482015290519081900360640190fd5b600b819055600c546116d09082906129d0565b60035481565b610e1090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000828201838110156121b5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000826128eb57506000611ea0565b828202828482816128f857fe5b04146121b55760405162461bcd60e51b8152600401808060200182810382526021815260200180612aef6021913960400191505060405180910390fd5b600081848411156129c45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612989578181015183820152602001612971565b50505050905090810190601f1680156129b65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b3390565b6000808211612a26576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381612a2f57fe5b049392505050565b60025442101590565b600082821115612a97576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe497373756520696e205f61646472657373657320616e64205f616c6c6f636174696f6e73206c656e6774684f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572416d6f756e7420746f6f2068696768206f72206e6f74207768697465206c6973746564a264697066735822122085ea9d67d987ae9cbad33c5833c4e77df49e99b96201505f03d07365e5c6141664736f6c63430007060033000000000000000000000000beab712832112bd7664226db7cd025b153d3af55
Deployed Bytecode
0x60806040526004361061025e5760003560e01c80637843eb9211610144578063ca628c78116100b6578063f2fde38b1161007a578063f2fde38b14610998578063f4eb4632146109cb578063f6072f68146109e0578063f6f5e89114610a0a578063f83c45fe14610a1f578063fc0c546a14610a345761029f565b8063ca628c7814610868578063d06413151461087d578063d11486a114610885578063e7fa9f7d14610950578063f1f6bf0f146109655761029f565b8063917e2f0611610108578063917e2f06146107845780639dbc67c8146107ae578063a76a4e15146107d8578063afd6b668146107ed578063b66a0e5d14610820578063c884ef83146108355761029f565b80637843eb92146106bd57806389885049146106d25780638da5cb5b146107055780638db3b7d9146107365780638f86f5ea1461076f5761029f565b80634417d6a5116101dd57806350e49764116101a157806350e4976414610606578063530cd5ab1461061b57806362c13ff31461064e5780636c4470fb1461067e578063715018a614610693578063782e1e6c146106a85761029f565b80634417d6a51461056d57806348368bca146105825780634d35cec8146105ac5780634e2786fb146105dc5780634e71d92d146105f15761029f565b80631d8e59d9116102245780631d8e59d9146104965780631dfd8baf146104bf5780633af32abf146104f2578063402914f5146105255780634042b66f146105585761029f565b80622a741d146102a75780625dfa42146102af5780630d6f85631461037a5780630f728751146103a45780631b3ed7221461046f5761029f565b3661029f5761026b610a49565b600114156102805761027b610ad7565b61029d565b610288610a49565b600214156102985761027b610de8565b600080fd5b005b61026b610a49565b61029d610de8565b3480156102bb57600080fd5b5061029d600480360360408110156102d257600080fd5b810190602081018135600160201b8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460208302840111600160201b8311171561031f57600080fd5b919390929091602081019035600160201b81111561033c57600080fd5b82018360208201111561034e57600080fd5b803590602001918460208302840111600160201b8311171561036f57600080fd5b5090925090506110ae565b34801561038657600080fd5b5061029d6004803603602081101561039d57600080fd5b50356112ad565b3480156103b057600080fd5b5061029d600480360360408110156103c757600080fd5b810190602081018135600160201b8111156103e157600080fd5b8201836020820111156103f357600080fd5b803590602001918460208302840111600160201b8311171561041457600080fd5b919390929091602081019035600160201b81111561043157600080fd5b82018360208201111561044357600080fd5b803590602001918460208302840111600160201b8311171561046457600080fd5b5090925090506113f7565b34801561047b57600080fd5b506104846115b3565b60408051918252519081900360200190f35b3480156104a257600080fd5b506104ab6115b9565b604080519115158252519081900360200190f35b3480156104cb57600080fd5b50610484600480360360208110156104e257600080fd5b50356001600160a01b03166115c2565b3480156104fe57600080fd5b506104ab6004803603602081101561051557600080fd5b50356001600160a01b03166115d4565b34801561053157600080fd5b506104846004803603602081101561054857600080fd5b50356001600160a01b03166115e9565b34801561056457600080fd5b506104846115fb565b34801561057957600080fd5b50610484611601565b34801561058e57600080fd5b5061029d600480360360208110156105a557600080fd5b5035611607565b3480156105b857600080fd5b5061029d600480360360408110156105cf57600080fd5b50803590602001356116d6565b3480156105e857600080fd5b50610484611796565b3480156105fd57600080fd5b506104ab6117a0565b34801561061257600080fd5b506104ab611b13565b34801561062757600080fd5b5061029d6004803603602081101561063e57600080fd5b50356001600160a01b0316611b1d565b34801561065a57600080fd5b5061029d6004803603604081101561067157600080fd5b5080359060200135611bb5565b34801561068a57600080fd5b50610484611cdc565b34801561069f57600080fd5b5061029d611ce2565b3480156106b457600080fd5b50610484611d8e565b3480156106c957600080fd5b50610484611d94565b3480156106de57600080fd5b50610484600480360360208110156106f557600080fd5b50356001600160a01b0316611d9a565b34801561071157600080fd5b5061071a611ea6565b604080516001600160a01b039092168252519081900360200190f35b34801561074257600080fd5b5061029d6004803603604081101561075957600080fd5b506001600160a01b038135169060200135611eb5565b34801561077b57600080fd5b5061029d611f72565b34801561079057600080fd5b5061029d600480360360208110156107a757600080fd5b5035612067565b3480156107ba57600080fd5b5061029d600480360360208110156107d157600080fd5b50356120ce565b3480156107e457600080fd5b50610484612135565b3480156107f957600080fd5b506104846004803603602081101561081057600080fd5b50356001600160a01b031661213b565b34801561082c57600080fd5b5061029d6121bc565b34801561084157600080fd5b506104846004803603602081101561085857600080fd5b50356001600160a01b03166122aa565b34801561087457600080fd5b506104ab6122bc565b61029d610ad7565b34801561089157600080fd5b5061029d600480360360408110156108a857600080fd5b810190602081018135600160201b8111156108c257600080fd5b8201836020820111156108d457600080fd5b803590602001918460208302840111600160201b831117156108f557600080fd5b919390929091602081019035600160201b81111561091257600080fd5b82018360208201111561092457600080fd5b803590602001918460208302840111600160201b8311171561094557600080fd5b5090925090506124bf565b34801561095c57600080fd5b50610484612668565b34801561097157600080fd5b506104846004803603602081101561098857600080fd5b50356001600160a01b031661266e565b3480156109a457600080fd5b5061029d600480360360208110156109bb57600080fd5b50356001600160a01b0316612680565b3480156109d757600080fd5b50610484612782565b3480156109ec57600080fd5b5061029d60048036036020811015610a0357600080fd5b5035612788565b348015610a1657600080fd5b50610484612852565b348015610a2b57600080fd5b50610484612858565b348015610a4057600080fd5b5061071a61285e565b600080600154421080610a5c5750600154155b15610a6957506000610ad2565b6001544210158015610a885750600154610a8590610e10612882565b42105b15610a9557506001610ad2565b600154610aa490610e10612882565b4210158015610ab65750600e5460ff16155b15610ac357506002610ad2565b600e5460ff1615610ad2575060035b905090565b610adf610a49565b600114610b33576040805162461bcd60e51b815260206004820152601b60248201527f70726573616c652069736e2774206f6e20676f6f6420726f756e640000000000604482015290519081900360640190fd5b60003411610b79576040805162461bcd60e51b815260206004820152600e60248201526d616d6f756e7420746f6f206c6f7760901b604482015290519081900360640190fd5b600c54601254610b899034612882565b1115610bd1576040805162461bcd60e51b815260206004820152601260248201527115185c99d95d08185b1c9958591e481a1a5d60721b604482015290519081900360640190fd5b33600090815260096020526040902054341115610c1f5760405162461bcd60e51b8152600401808060200182810382526023815260200180612b306023913960400191505060405180910390fd5b6000610c36600d54346128dc90919063ffffffff16565b90507f000000000000000000000000beab712832112bd7664226db7cd025b153d3af556001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ca557600080fd5b505afa158015610cb9573d6000803e3d6000fd5b505050506040513d6020811015610ccf57600080fd5b5051600f54610cde9083612882565b1115610d1c576040805162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b604482015290519081900360640190fd5b604080518082018252601881527713585e1a5b5d5b481c1d5c98da185cd94818d85c081a1a5d60421b60208083019190915233600090815260099091529190912054610d69913490612935565b33600090815260096020908152604080832093909355601090522054610d9b57601354610d97906001612882565b6013555b33600090815260106020526040902054610db59034612882565b33600090815260106020526040902055600f54610dd29082612882565b600f55601254610de29034612882565b60125550565b610df0610a49565b600214610e39576040805162461bcd60e51b8152602060048201526012602482015271139bdd081d1a194819dbdbd9081c9bdd5b9960721b604482015290519081900360640190fd5b60003411610e7f576040805162461bcd60e51b815260206004820152600e60248201526d616d6f756e7420746f6f206c6f7760901b604482015290519081900360640190fd5b336000908152600a6020526040902054610ee0576040805162461bcd60e51b815260206004820152601f60248201527f796f7520646f6e2774206861766520726f756e643220616c6c6f77616e636500604482015290519081900360640190fd5b600c54601254610ef09034612882565b1115610f38576040805162461bcd60e51b81526020600482015260126024820152711d185c99d95d08185b1c9958591e481a1a5d60721b604482015290519081900360640190fd5b604080518082018252601881527713585e1a5b5d5b481c1d5c98da185cd94818d85c081a1a5d60421b602080830191909152336000908152600a9091529190912054610f85913490612935565b336000908152600a6020526040812091909155600d54610fa69034906128dc565b90507f000000000000000000000000beab712832112bd7664226db7cd025b153d3af556001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561101557600080fd5b505afa158015611029573d6000803e3d6000fd5b505050506040513d602081101561103f57600080fd5b5051600f5461104e9083612882565b111561108c576040805162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b604482015290519081900360640190fd5b33600090815260106020526040902054610d9b57601354610d97906001612882565b6110b66129cc565b6001600160a01b03166110c7611ea6565b6001600160a01b031614611110576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b82811461114e5760405162461bcd60e51b815260040180806020018281038252602b815260200180612a9e602b913960400191505060405180910390fd5b60005b838110156112a6576008600086868481811061116957fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff166111ed576001600860008787858181106111a557fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8282828181106111f957fe5b90506020020135600a600087878581811061121057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020541461129e5782828281811061125257fe5b90506020020135600a600087878581811061126957fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055505b600101611151565b5050505050565b6112b56129cc565b6001600160a01b03166112c6611ea6565b6001600160a01b03161461130f576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b600e5460ff16611362576040805162461bcd60e51b81526020600482015260196024820152781c1c995cd85b19481a185cc81b9bdd081e595d08195b991959603a1b604482015290519081900360640190fd5b604051600090339083908381818185875af1925050503d80600081146113a4576040519150601f19603f3d011682016040523d82523d6000602084013e6113a9565b606091505b50509050806113f3576040805162461bcd60e51b815260206004820152601160248201527022b93937b91034b7102a3930b739b332b960791b604482015290519081900360640190fd5b5050565b6113ff6129cc565b6001600160a01b0316611410611ea6565b6001600160a01b031614611459576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b8281146114975760405162461bcd60e51b815260040180806020018281038252602b815260200180612a9e602b913960400191505060405180910390fd5b60005b838110156112a6576001600860008787858181106114b457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555082828281811061150757fe5b905060200201356009600087878581811061151e57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002081905550611578600484848481811061156357fe5b905060200201356128dc90919063ffffffff16565b600a600087878581811061158857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205560010161149a565b600d5481565b600e5460ff1681565b600a6020526000908152604090205481565b60086020526000908152604090205460ff1681565b60106020526000908152604090205481565b60125481565b60015481565b61160f6129cc565b6001600160a01b0316611620611ea6565b6001600160a01b031614611669576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b611671610a49565b156116be576040805162461bcd60e51b815260206004820152601860248201527750726573616c6520616c726561647920737461727465642160401b604482015290519081900360640190fd5b600c819055600b546116d090826129d0565b600d5550565b6116de6129cc565b6001600160a01b03166116ef611ea6565b6001600160a01b031614611738576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b818111801561174657504282115b61178b576040805162461bcd60e51b815260206004820152601160248201527004e6f20676f6f642074696d657374616d7607c1b604482015290519081900360640190fd5b600391909155600455565b6000610ad2610a49565b60006117aa612a37565b6117fb576040805162461bcd60e51b815260206004820152601860248201527f636c61696d696e67206e6f7420616c6c6f776564207965740000000000000000604482015290519081900360640190fd5b3360009081526005602052604090205460ff1661186b5733600090815260106020526040902054611866576040805162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b604482015290519081900360640190fd5b611902565b336000908152600660205260409020541580159061188b57506003544210155b806118b1575033600090815260076020526040902054158015906118b157506004544210155b611902576040805162461bcd60e51b815260206004820152601f60248201527f6e6f7468696e6720746f20636c61696d20666f7220746865206d6f6d656e7400604482015290519081900360640190fd5b3360009081526005602052604081205460ff166119be57336000908152600560209081526040808320805460ff19166001179055600d54601090925282205461194a916128dc565b33600090815260106020526040812055905061197461271061196e83610bb86128dc565b906129d0565b91506119808183612a40565b905061198d8160026129d0565b336000908152600660205260409020556119a88160026129d0565b3360009081526007602052604090205550611a38565b33600090815260066020526040902054158015906119de57506003544210155b156119fd57503360009081526006602052604081208054919055611a38565b3360009081526007602052604090205415801590611a1d57506004544210155b15611a38575033600090815260076020526040812080549190555b33600090815260116020526040902054611a529082612882565b33600090815260116020526040902055600f54611a6f9082612a40565b600f556040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b037f000000000000000000000000beab712832112bd7664226db7cd025b153d3af55169163a9059cbb9160448083019260209291908290030181600087803b158015611ae157600080fd5b505af1158015611af5573d6000803e3d6000fd5b505050506040513d6020811015611b0b57600080fd5b505191505090565b6000610ad2612a37565b611b256129cc565b6001600160a01b0316611b36611ea6565b6001600160a01b031614611b7f576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600860209081526040808320805460ff1916905560098252808320839055600a909152812055565b611bbd6129cc565b6001600160a01b0316611bce611ea6565b6001600160a01b031614611c17576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b60008111611c6c576040805162461bcd60e51b815260206004820152601860248201527f776569207461726765742063616e2774206265205a65726f0000000000000000604482015290519081900360640190fd5b60008211611cc1576040805162461bcd60e51b815260206004820152601a60248201527f746f6b656e207461726765742063616e2774206265205a65726f000000000000604482015290519081900360640190fd5b600b829055600c819055611cd582826129d0565b600d555050565b60135481565b611cea6129cc565b6001600160a01b0316611cfb611ea6565b6001600160a01b031614611d44576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600b5481565b60045481565b600080611da5612a37565b611db157506000611ea0565b3360009081526010602052604090205415611e0a57600d546001600160a01b0384166000908152601060205260408120549091611dee91906128dc565b9050611e0261271061196e83610bb86128dc565b915050611ea0565b6001600160a01b03831660009081526006602052604090205415801590611e3357506003544210155b15611e5757506001600160a01b038216600090815260066020526040902054611ea0565b6001600160a01b03831660009081526007602052604090205415801590611e8057506004544210155b15611ea057506001600160a01b0382166000908152600760205260409020545b92915050565b6000546001600160a01b031690565b611ebd6129cc565b6001600160a01b0316611ece611ea6565b6001600160a01b031614611f17576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320805460ff1916600117905560099091529020819055611f528160026128dc565b6001600160a01b039092166000908152600a602052604090209190915550565b611f7a6129cc565b6001600160a01b0316611f8b611ea6565b6001600160a01b031614611fd4576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b600e5460ff1615612025576040805162461bcd60e51b815260206004820152601660248201527550726573616c6520616c726561647920656e6465642160501b604482015290519081900360640190fd5b600e805460ff191660011790556040805142815290517fdbb898b65754de938e81c6a509625c23cc027521dca30ed62fce6f2e8f838c7a9181900360200190a1565b61206f6129cc565b6001600160a01b0316612080611ea6565b6001600160a01b0316146120c9576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b600255565b6120d66129cc565b6001600160a01b03166120e7611ea6565b6001600160a01b031614612130576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b600155565b60025481565b6001600160a01b03811660009081526010602052604081205481901561218757600d546001600160a01b038416600090815260106020526040902054612180916128dc565b9050611ea0565b6001600160a01b0383166000908152600760209081526040808320546006909252909120546121b591612882565b9392505050565b6121c46129cc565b6001600160a01b03166121d5611ea6565b6001600160a01b03161461221e576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b612226610a49565b15612270576040805162461bcd60e51b8152602060048201526015602482015274050726573616c6520726f756e642069736e2774203605c1b604482015290519081900360640190fd5b42600181905560408051918252517f59ff1c5e8a691bbfdd4acd20ca4355bd3e0878914814bc6d035bd1584d34135d9181900360200190a1565b60116020526000908152604090205481565b60006122c66129cc565b6001600160a01b03166122d7611ea6565b6001600160a01b031614612320576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b600e5460ff16612373576040805162461bcd60e51b81526020600482015260196024820152781c1c995cd85b19481a185cc81b9bdd081e595d08195b991959603a1b604482015290519081900360640190fd5b7f000000000000000000000000beab712832112bd7664226db7cd025b153d3af556001600160a01b031663a9059cbb33612448600f547f000000000000000000000000beab712832112bd7664226db7cd025b153d3af556001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561241657600080fd5b505afa15801561242a573d6000803e3d6000fd5b505050506040513d602081101561244057600080fd5b505190612a40565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561248e57600080fd5b505af11580156124a2573d6000803e3d6000fd5b505050506040513d60208110156124b857600080fd5b5051905090565b6124c76129cc565b6001600160a01b03166124d8611ea6565b6001600160a01b031614612521576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b82811461255f5760405162461bcd60e51b815260040180806020018281038252602b815260200180612a9e602b913960400191505060405180910390fd5b60005b838110156112a65760016008600087878581811061257c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508282828181106125cf57fe5b90506020020135600960008787858181106125e657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555082828281811061262657fe5b90506020020135600a600087878581811061263d57fe5b602090810292909201356001600160a01b031683525081019190915260400160002055600101612562565b600f5481565b60096020526000908152604090205481565b6126886129cc565b6001600160a01b0316612699611ea6565b6001600160a01b0316146126e2576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b6001600160a01b0381166127275760405162461bcd60e51b8152600401808060200182810382526026815260200180612ac96026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600c5481565b6127906129cc565b6001600160a01b03166127a1611ea6565b6001600160a01b0316146127ea576040805162461bcd60e51b81526020600482018190526024820152600080516020612b10833981519152604482015290519081900360640190fd5b6127f2610a49565b1561283f576040805162461bcd60e51b815260206004820152601860248201527750726573616c6520616c726561647920737461727465642160401b604482015290519081900360640190fd5b600b819055600c546116d09082906129d0565b60035481565b610e1090565b7f000000000000000000000000beab712832112bd7664226db7cd025b153d3af5581565b6000828201838110156121b5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000826128eb57506000611ea0565b828202828482816128f857fe5b04146121b55760405162461bcd60e51b8152600401808060200182810382526021815260200180612aef6021913960400191505060405180910390fd5b600081848411156129c45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612989578181015183820152602001612971565b50505050905090810190601f1680156129b65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b3390565b6000808211612a26576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381612a2f57fe5b049392505050565b60025442101590565b600082821115612a97576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe497373756520696e205f61646472657373657320616e64205f616c6c6f636174696f6e73206c656e6774684f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572416d6f756e7420746f6f2068696768206f72206e6f74207768697465206c6973746564a264697066735822122085ea9d67d987ae9cbad33c5833c4e77df49e99b96201505f03d07365e5c6141664736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000beab712832112bd7664226db7cd025b153d3af55
-----Decoded View---------------
Arg [0] : _token (address): 0xBEaB712832112bd7664226db7CD025B153D3af55
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000beab712832112bd7664226db7cd025b153d3af55
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.