Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 16 from a total of 16 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 13482635 | 1040 days ago | IN | 0.047619 ETH | 0.00675068 | ||||
Transfer | 13457063 | 1044 days ago | IN | 0.95238 ETH | 0.00698559 | ||||
Transfer | 13343398 | 1062 days ago | IN | 0.0190476 ETH | 0.00459703 | ||||
Transfer | 13306290 | 1068 days ago | IN | 0.0571428 ETH | 0.00537637 | ||||
Transfer | 13283491 | 1071 days ago | IN | 0.09750076 ETH | 0.0087899 | ||||
Transfer | 13274849 | 1073 days ago | IN | 0.0190476 ETH | 0.0038474 | ||||
Transfer | 13133641 | 1094 days ago | IN | 0.00380952 ETH | 0.00853814 | ||||
Transfer | 13120427 | 1096 days ago | IN | 0.001 ETH | 0.00459558 | ||||
Transfer | 13120399 | 1096 days ago | IN | 0.0004 ETH | 0.00414131 | ||||
Transfer | 13120377 | 1096 days ago | IN | 0.001 ETH | 0.001344 | ||||
Transfer | 13120371 | 1096 days ago | IN | 0.0003 ETH | 0.001008 | ||||
Transfer | 13120338 | 1096 days ago | IN | 0.0005 ETH | 0.00097151 | ||||
Transfer | 13114446 | 1097 days ago | IN | 0.05861 ETH | 0.00491391 | ||||
Transfer | 13109234 | 1098 days ago | IN | 0.043962 ETH | 0.02558071 | ||||
Init | 12627848 | 1173 days ago | IN | 0 ETH | 0.02464848 | ||||
0x60806040 | 12627836 | 1173 days ago | IN | 0 ETH | 0.01361713 |
Latest 8 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
13482635 | 1040 days ago | 0.047619 ETH | ||||
13457063 | 1044 days ago | 0.95238 ETH | ||||
13343398 | 1062 days ago | 0.0190476 ETH | ||||
13306290 | 1068 days ago | 0.0571428 ETH | ||||
13283491 | 1071 days ago | 0.09750076 ETH | ||||
13274849 | 1073 days ago | 0.0190476 ETH | ||||
13114446 | 1097 days ago | 0.05861 ETH | ||||
13109234 | 1098 days ago | 0.043962 ETH |
Loading...
Loading
Contract Name:
TemplateCrowdsale
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-14 */ /* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ pragma solidity ^0.4.23; /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval( address indexed owner, address indexed spender, uint256 value ); } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { // Gas optimization: this is cheaper than asserting 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 // uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return a / b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } } /** * @title Crowdsale * @dev Crowdsale is a base contract for managing a token crowdsale, * allowing investors to purchase tokens with ether. This contract implements * such functionality in its most fundamental form and can be extended to provide additional * functionality and/or custom behavior. * The external interface represents the basic interface for purchasing tokens, and conform * the base architecture for crowdsales. They are *not* intended to be modified / overriden. * The internal interface conforms the extensible and modifiable surface of crowdsales. Override * the methods to add functionality. Consider using 'super' where appropiate to concatenate * behavior. */ contract Crowdsale { using SafeMath for uint256; // The token being sold ERC20 public token; // Address where funds are collected address public wallet; // How many token units a buyer gets per wei. // The rate is the conversion between wei and the smallest and indivisible token unit. // So, if you are using a rate of 1 with a DetailedERC20 token with 3 decimals called TOK // 1 wei will give you 1 unit, or 0.001 TOK. uint256 public rate; // Amount of wei raised uint256 public weiRaised; /** * Event for token purchase logging * @param purchaser who paid for the tokens * @param beneficiary who got the tokens * @param value weis paid for purchase * @param amount amount of tokens purchased */ event TokenPurchase( address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount ); /** * @param _rate Number of token units a buyer gets per wei * @param _wallet Address where collected funds will be forwarded to * @param _token Address of the token being sold */ constructor(uint256 _rate, address _wallet, ERC20 _token) public { require(_rate > 0); require(_wallet != address(0)); require(_token != address(0)); rate = _rate; wallet = _wallet; token = _token; } // ----------------------------------------- // Crowdsale external interface // ----------------------------------------- /** * @dev fallback function ***DO NOT OVERRIDE*** */ function () external payable { buyTokens(msg.sender); } /** * @dev low level token purchase ***DO NOT OVERRIDE*** * @param _beneficiary Address performing the token purchase */ function buyTokens(address _beneficiary) public payable { uint256 weiAmount = msg.value; _preValidatePurchase(_beneficiary, weiAmount); // calculate token amount to be created uint256 tokens = _getTokenAmount(weiAmount); // update state weiRaised = weiRaised.add(weiAmount); _processPurchase(_beneficiary, tokens); emit TokenPurchase( msg.sender, _beneficiary, weiAmount, tokens ); _updatePurchasingState(_beneficiary, weiAmount); _forwardFunds(); _postValidatePurchase(_beneficiary, weiAmount); } // ----------------------------------------- // Internal interface (extensible) // ----------------------------------------- /** * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met. Use super to concatenate validations. * @param _beneficiary Address performing the token purchase * @param _weiAmount Value in wei involved in the purchase */ function _preValidatePurchase( address _beneficiary, uint256 _weiAmount ) internal { require(_beneficiary != address(0)); require(_weiAmount != 0); } /** * @dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid conditions are not met. * @param _beneficiary Address performing the token purchase * @param _weiAmount Value in wei involved in the purchase */ function _postValidatePurchase( address _beneficiary, uint256 _weiAmount ) internal { // optional override } /** * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends its tokens. * @param _beneficiary Address performing the token purchase * @param _tokenAmount Number of tokens to be emitted */ function _deliverTokens( address _beneficiary, uint256 _tokenAmount ) internal { token.transfer(_beneficiary, _tokenAmount); } /** * @dev Executed when a purchase has been validated and is ready to be executed. Not necessarily emits/sends tokens. * @param _beneficiary Address receiving the tokens * @param _tokenAmount Number of tokens to be purchased */ function _processPurchase( address _beneficiary, uint256 _tokenAmount ) internal { _deliverTokens(_beneficiary, _tokenAmount); } /** * @dev Override for extensions that require an internal state to check for validity (current user contributions, etc.) * @param _beneficiary Address receiving the tokens * @param _weiAmount Value in wei involved in the purchase */ function _updatePurchasingState( address _beneficiary, uint256 _weiAmount ) internal { // optional override } /** * @dev Override to extend the way in which ether is converted to tokens. * @param _weiAmount Value in wei to be converted into tokens * @return Number of tokens that can be purchased with the specified _weiAmount */ function _getTokenAmount(uint256 _weiAmount) internal view returns (uint256) { return _weiAmount.mul(rate); } /** * @dev Determines how ETH is stored/forwarded on purchases. */ function _forwardFunds() internal { wallet.transfer(msg.value); } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to relinquish control of the contract. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership(address _newOwner) public onlyOwner { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } /** * @title TimedCrowdsale * @dev Crowdsale accepting contributions only within a time frame. */ contract TimedCrowdsale is Crowdsale { using SafeMath for uint256; uint256 public openingTime; uint256 public closingTime; /** * @dev Reverts if not in crowdsale time range. */ modifier onlyWhileOpen { // solium-disable-next-line security/no-block-members require(block.timestamp >= openingTime && block.timestamp <= closingTime); _; } /** * @dev Constructor, takes crowdsale opening and closing times. * @param _openingTime Crowdsale opening time * @param _closingTime Crowdsale closing time */ constructor(uint256 _openingTime, uint256 _closingTime) public { // solium-disable-next-line security/no-block-members require(_openingTime >= block.timestamp); require(_closingTime >= _openingTime); openingTime = _openingTime; closingTime = _closingTime; } /** * @dev Checks whether the period in which the crowdsale is open has already elapsed. * @return Whether crowdsale period has elapsed */ function hasClosed() public view returns (bool) { // solium-disable-next-line security/no-block-members return block.timestamp > closingTime; } /** * @dev Extend parent behavior requiring to be within contributing period * @param _beneficiary Token purchaser * @param _weiAmount Amount of wei contributed */ function _preValidatePurchase( address _beneficiary, uint256 _weiAmount ) internal onlyWhileOpen { super._preValidatePurchase(_beneficiary, _weiAmount); } } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; uint256 totalSupply_; /** * @dev total number of tokens in existence */ function totalSupply() public view returns (uint256) { return totalSupply_; } /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * @dev https://github.com/ethereum/EIPs/issues/20 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom( address _from, address _to, uint256 _value ) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * 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 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance( address _owner, address _spender ) public view returns (uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval( address _spender, uint _addedValue ) public returns (bool) { allowed[msg.sender][_spender] = ( allowed[msg.sender][_spender].add(_addedValue)); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval( address _spender, uint _subtractedValue ) public returns (bool) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } /** * @title Mintable token * @dev Simple ERC20 Token example, with mintable token creation * @dev Issue: * https://github.com/OpenZeppelin/openzeppelin-solidity/issues/120 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol */ contract MintableToken is StandardToken, Ownable { event Mint(address indexed to, uint256 amount); event MintFinished(); bool public mintingFinished = false; modifier canMint() { require(!mintingFinished); _; } modifier hasMintPermission() { require(msg.sender == owner); _; } /** * @dev Function to mint tokens * @param _to The address that will receive the minted tokens. * @param _amount The amount of tokens to mint. * @return A boolean that indicates if the operation was successful. */ function mint( address _to, uint256 _amount ) hasMintPermission canMint public returns (bool) { totalSupply_ = totalSupply_.add(_amount); balances[_to] = balances[_to].add(_amount); emit Mint(_to, _amount); emit Transfer(address(0), _to, _amount); return true; } /** * @dev Function to stop minting new tokens. * @return True if the operation was successful. */ function finishMinting() onlyOwner canMint public returns (bool) { mintingFinished = true; emit MintFinished(); return true; } } contract FreezableToken is StandardToken { // freezing chains mapping (bytes32 => uint64) internal chains; // freezing amounts for each chain mapping (bytes32 => uint) internal freezings; // total freezing balance per address mapping (address => uint) internal freezingBalance; event Freezed(address indexed to, uint64 release, uint amount); event Released(address indexed owner, uint amount); /** * @dev Gets the balance of the specified address include freezing tokens. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256 balance) { return super.balanceOf(_owner) + freezingBalance[_owner]; } /** * @dev Gets the balance of the specified address without freezing tokens. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function actualBalanceOf(address _owner) public view returns (uint256 balance) { return super.balanceOf(_owner); } function freezingBalanceOf(address _owner) public view returns (uint256 balance) { return freezingBalance[_owner]; } /** * @dev gets freezing count * @param _addr Address of freeze tokens owner. */ function freezingCount(address _addr) public view returns (uint count) { uint64 release = chains[toKey(_addr, 0)]; while (release != 0) { count++; release = chains[toKey(_addr, release)]; } } /** * @dev gets freezing end date and freezing balance for the freezing portion specified by index. * @param _addr Address of freeze tokens owner. * @param _index Freezing portion index. It ordered by release date descending. */ function getFreezing(address _addr, uint _index) public view returns (uint64 _release, uint _balance) { for (uint i = 0; i < _index + 1; i++) { _release = chains[toKey(_addr, _release)]; if (_release == 0) { return; } } _balance = freezings[toKey(_addr, _release)]; } /** * @dev freeze your tokens to the specified address. * Be careful, gas usage is not deterministic, * and depends on how many freezes _to address already has. * @param _to Address to which token will be freeze. * @param _amount Amount of token to freeze. * @param _until Release date, must be in future. */ function freezeTo(address _to, uint _amount, uint64 _until) public { require(_to != address(0)); require(_amount <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_amount); bytes32 currentKey = toKey(_to, _until); freezings[currentKey] = freezings[currentKey].add(_amount); freezingBalance[_to] = freezingBalance[_to].add(_amount); freeze(_to, _until); emit Transfer(msg.sender, _to, _amount); emit Freezed(_to, _until, _amount); } /** * @dev release first available freezing tokens. */ function releaseOnce() public { bytes32 headKey = toKey(msg.sender, 0); uint64 head = chains[headKey]; require(head != 0); require(uint64(block.timestamp) > head); bytes32 currentKey = toKey(msg.sender, head); uint64 next = chains[currentKey]; uint amount = freezings[currentKey]; delete freezings[currentKey]; balances[msg.sender] = balances[msg.sender].add(amount); freezingBalance[msg.sender] = freezingBalance[msg.sender].sub(amount); if (next == 0) { delete chains[headKey]; } else { chains[headKey] = next; delete chains[currentKey]; } emit Released(msg.sender, amount); } /** * @dev release all available for release freezing tokens. Gas usage is not deterministic! * @return how many tokens was released */ function releaseAll() public returns (uint tokens) { uint release; uint balance; (release, balance) = getFreezing(msg.sender, 0); while (release != 0 && block.timestamp > release) { releaseOnce(); tokens += balance; (release, balance) = getFreezing(msg.sender, 0); } } function toKey(address _addr, uint _release) internal pure returns (bytes32 result) { // WISH masc to increase entropy result = 0x5749534800000000000000000000000000000000000000000000000000000000; assembly { result := or(result, mul(_addr, 0x10000000000000000)) result := or(result, and(_release, 0xffffffffffffffff)) } } function freeze(address _to, uint64 _until) internal { require(_until > block.timestamp); bytes32 key = toKey(_to, _until); bytes32 parentKey = toKey(_to, uint64(0)); uint64 next = chains[parentKey]; if (next == 0) { chains[parentKey] = _until; return; } bytes32 nextKey = toKey(_to, next); uint parent; while (next != 0 && _until > next) { parent = next; parentKey = nextKey; next = chains[nextKey]; nextKey = toKey(_to, next); } if (_until == next) { return; } if (next != 0) { chains[key] = next; } chains[parentKey] = _until; } } /** * @title Burnable Token * @dev Token that can be irreversibly burned (destroyed). */ contract BurnableToken is BasicToken { event Burn(address indexed burner, uint256 value); /** * @dev Burns a specific amount of tokens. * @param _value The amount of token to be burned. */ function burn(uint256 _value) public { _burn(msg.sender, _value); } function _burn(address _who, uint256 _value) internal { require(_value <= balances[_who]); // no need to require value <= totalSupply, since that would imply the // sender's balance is greater than the totalSupply, which *should* be an assertion failure balances[_who] = balances[_who].sub(_value); totalSupply_ = totalSupply_.sub(_value); emit Burn(_who, _value); emit Transfer(_who, address(0), _value); } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused public { paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; emit Unpause(); } } contract FreezableMintableToken is FreezableToken, MintableToken { /** * @dev Mint the specified amount of token to the specified address and freeze it until the specified date. * Be careful, gas usage is not deterministic, * and depends on how many freezes _to address already has. * @param _to Address to which token will be freeze. * @param _amount Amount of token to mint and freeze. * @param _until Release date, must be in future. * @return A boolean that indicates if the operation was successful. */ function mintAndFreeze(address _to, uint _amount, uint64 _until) public onlyOwner canMint returns (bool) { totalSupply_ = totalSupply_.add(_amount); bytes32 currentKey = toKey(_to, _until); freezings[currentKey] = freezings[currentKey].add(_amount); freezingBalance[_to] = freezingBalance[_to].add(_amount); freeze(_to, _until); emit Mint(_to, _amount); emit Freezed(_to, _until, _amount); emit Transfer(msg.sender, _to, _amount); return true; } } contract Consts { uint public constant TOKEN_DECIMALS = 18; uint8 public constant TOKEN_DECIMALS_UINT8 = 18; uint public constant TOKEN_DECIMAL_MULTIPLIER = 10 ** TOKEN_DECIMALS; string public constant TOKEN_NAME = "NEOX"; string public constant TOKEN_SYMBOL = "NEX"; bool public constant PAUSED = true; address public constant TARGET_USER = 0xff9E935091645A9d410171f346D44DBc0b04183c; uint public constant START_TIME = 1630080000; bool public constant CONTINUE_MINTING = false; } /** * @title FinalizableCrowdsale * @dev Extension of Crowdsale where an owner can do extra work * after finishing. */ contract FinalizableCrowdsale is TimedCrowdsale, Ownable { using SafeMath for uint256; bool public isFinalized = false; event Finalized(); /** * @dev Must be called after crowdsale ends, to do some extra finalization * work. Calls the contract's finalization function. */ function finalize() onlyOwner public { require(!isFinalized); require(hasClosed()); finalization(); emit Finalized(); isFinalized = true; } /** * @dev Can be overridden to add finalization logic. The overriding function * should call super.finalization() to ensure the chain of finalization is * executed entirely. */ function finalization() internal { } } /** * @title CappedCrowdsale * @dev Crowdsale with a limit for total contributions. */ contract CappedCrowdsale is Crowdsale { using SafeMath for uint256; uint256 public cap; /** * @dev Constructor, takes maximum amount of wei accepted in the crowdsale. * @param _cap Max amount of wei to be contributed */ constructor(uint256 _cap) public { require(_cap > 0); cap = _cap; } /** * @dev Checks whether the cap has been reached. * @return Whether the cap was reached */ function capReached() public view returns (bool) { return weiRaised >= cap; } /** * @dev Extend parent behavior requiring purchase to respect the funding cap. * @param _beneficiary Token purchaser * @param _weiAmount Amount of wei contributed */ function _preValidatePurchase( address _beneficiary, uint256 _weiAmount ) internal { super._preValidatePurchase(_beneficiary, _weiAmount); require(weiRaised.add(_weiAmount) <= cap); } } /** * @title MintedCrowdsale * @dev Extension of Crowdsale contract whose tokens are minted in each purchase. * Token ownership should be transferred to MintedCrowdsale for minting. */ contract MintedCrowdsale is Crowdsale { /** * @dev Overrides delivery by minting tokens upon purchase. * @param _beneficiary Token purchaser * @param _tokenAmount Number of tokens to be minted */ function _deliverTokens( address _beneficiary, uint256 _tokenAmount ) internal { require(MintableToken(token).mint(_beneficiary, _tokenAmount)); } } contract MainToken is Consts, FreezableMintableToken, BurnableToken, Pausable { function name() public pure returns (string _name) { return TOKEN_NAME; } function symbol() public pure returns (string _symbol) { return TOKEN_SYMBOL; } function decimals() public pure returns (uint8 _decimals) { return TOKEN_DECIMALS_UINT8; } function transferFrom(address _from, address _to, uint256 _value) public returns (bool _success) { require(!paused); return super.transferFrom(_from, _to, _value); } function transfer(address _to, uint256 _value) public returns (bool _success) { require(!paused); return super.transfer(_to, _value); } } contract MainCrowdsale is Consts, FinalizableCrowdsale, MintedCrowdsale, CappedCrowdsale { function hasStarted() public view returns (bool) { return now >= openingTime; } function startTime() public view returns (uint256) { return openingTime; } function endTime() public view returns (uint256) { return closingTime; } function hasClosed() public view returns (bool) { return super.hasClosed() || capReached(); } function hasEnded() public view returns (bool) { return hasClosed(); } function finalization() internal { super.finalization(); if (PAUSED) { MainToken(token).unpause(); } if (!CONTINUE_MINTING) { require(MintableToken(token).finishMinting()); } Ownable(token).transferOwnership(TARGET_USER); } /** * @dev Override to extend the way in which ether is converted to tokens. * @param _weiAmount Value in wei to be converted into tokens * @return Number of tokens that can be purchased with the specified _weiAmount */ function _getTokenAmount(uint256 _weiAmount) internal view returns (uint256) { return _weiAmount.mul(rate).div(1 ether); } } contract BonusableCrowdsale is Consts, Crowdsale { /** * @dev Override to extend the way in which ether is converted to tokens. * @param _weiAmount Value in wei to be converted into tokens * @return Number of tokens that can be purchased with the specified _weiAmount */ function _getTokenAmount(uint256 _weiAmount) internal view returns (uint256) { uint256 bonusRate = getBonusRate(_weiAmount); return _weiAmount.mul(bonusRate).div(1 ether); } function getBonusRate(uint256 _weiAmount) internal view returns (uint256) { uint256 bonusRate = rate; // apply bonus for time & weiRaised uint[4] memory weiRaisedStartsBounds = [uint(0),uint(0),uint(0),uint(0)]; uint[4] memory weiRaisedEndsBounds = [uint(20000000000000000000000),uint(20000000000000000000000),uint(20000000000000000000000),uint(20000000000000000000000)]; uint64[4] memory timeStartsBounds = [uint64(1630080000),uint64(1632758400),uint64(1635350400),uint64(1638032400)]; uint64[4] memory timeEndsBounds = [uint64(1632758400),uint64(1635350400),uint64(1638032400),uint64(1640624395)]; uint[4] memory weiRaisedAndTimeRates = [uint(300),uint(200),uint(150),uint(100)]; for (uint i = 0; i < 4; i++) { bool weiRaisedInBound = (weiRaisedStartsBounds[i] <= weiRaised) && (weiRaised < weiRaisedEndsBounds[i]); bool timeInBound = (timeStartsBounds[i] <= now) && (now < timeEndsBounds[i]); if (weiRaisedInBound && timeInBound) { bonusRate += bonusRate * weiRaisedAndTimeRates[i] / 1000; } } return bonusRate; } } contract TemplateCrowdsale is Consts, MainCrowdsale , BonusableCrowdsale { event Initialized(); event TimesChanged(uint startTime, uint endTime, uint oldStartTime, uint oldEndTime); bool public initialized = false; constructor(MintableToken _token) public Crowdsale(52500 * TOKEN_DECIMAL_MULTIPLIER, 0xB58d0638699ED0A47E3a11509ADA636FdE8574C6, _token) TimedCrowdsale(START_TIME > now ? START_TIME : now, 1640624400) CappedCrowdsale(20000000000000000000000) { } function init() public onlyOwner { require(!initialized); initialized = true; if (PAUSED) { MainToken(token).pause(); } address[3] memory addresses = [address(0x7e3b50c96ac97cb0f0dc8cdfd301a27c1336c750),address(0x6d0dd6e207918f2f9c6824fbb69ee4e3fa8e95d6),address(0x35ec9ddc9840ce900e01341bb5ba1437c85b1e4f)]; uint[3] memory amounts = [uint(150000000000000000000000000),uint(75000000000000000000000000),uint(225000000000000000000000000)]; uint64[3] memory freezes = [uint64(0),uint64(0),uint64(0)]; for (uint i = 0; i < addresses.length; i++) { if (freezes[i] == 0) { MainToken(token).mint(addresses[i], amounts[i]); } else { MainToken(token).mintAndFreeze(addresses[i], amounts[i], freezes[i]); } } transferOwnership(TARGET_USER); emit Initialized(); } function setEndTime(uint _endTime) public onlyOwner { // only if CS was not ended require(now < closingTime); // only if new end time in future require(now < _endTime); require(_endTime > openingTime); emit TimesChanged(openingTime, _endTime, openingTime, closingTime); closingTime = _endTime; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"CONTINUE_MINTING","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_NAME","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasStarted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"closingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"capReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_DECIMAL_MULTIPLIER","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_DECIMALS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TARGET_USER","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PAUSED","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_endTime","type":"uint256"}],"name":"setEndTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_DECIMALS_UINT8","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"START_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startTime","type":"uint256"},{"indexed":false,"name":"endTime","type":"uint256"},{"indexed":false,"name":"oldStartTime","type":"uint256"},{"indexed":false,"name":"oldEndTime","type":"uint256"}],"name":"TimesChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]
Contract Creation Code
60806040526006805460a060020a60ff02191690556008805460ff1916905534801561002a57600080fd5b506040516020806113ae833981016040525169043c33c1937564800000426361290c0011610058574261005e565b6361290c005b6361c9f110690b1e07dc231427d0000073b58d0638699ed0a47e3a11509ada636fde8574c685600160a060020a038116151561009957600080fd5b60029290925560018054600160a060020a03928316600160a060020a03199182161790915560008054929093169116179055428210156100d857600080fd5b818110156100e557600080fd5b60049190915560055560068054600160a060020a031916331790556000811161010d57600080fd5b6007555061128e806101206000396000f3006080604052600436106101705763ffffffff60e060020a6000350416623fd35a811461017b5780631515bc2b146101a4578063158ef93e146101b957806318821400146101ce5780632a905318146102585780632c4e722e1461026d5780633197cbb614610294578063355274ea146102a95780634042b66f146102be57806344691f7e146102d35780634b6753bc146102e85780634bb278f3146102fd5780634f93594514610312578063521eb2731461032757806356780085146103585780635b7f415c1461036d578063715018a614610382578063726a431a1461039757806378e97925146103ac5780638d4e4083146103c15780638da5cb5b146103d6578063a9aad58c146103eb578063b7a8807c14610400578063ccb98ffc14610415578063cf3b19671461042d578063ddaa26ad14610458578063e1c7392a1461046d578063ec8ac4d814610482578063ecb70fb714610496578063f2fde38b146104ab578063fc0c546a146104cc575b610179336104e1565b005b34801561018757600080fd5b50610190610583565b604080519115158252519081900360200190f35b3480156101b057600080fd5b50610190610588565b3480156101c557600080fd5b506101906105a5565b3480156101da57600080fd5b506101e36105ae565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561021d578181015183820152602001610205565b50505050905090810190601f16801561024a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026457600080fd5b506101e36105e5565b34801561027957600080fd5b5061028261061c565b60408051918252519081900360200190f35b3480156102a057600080fd5b50610282610622565b3480156102b557600080fd5b50610282610628565b3480156102ca57600080fd5b5061028261062e565b3480156102df57600080fd5b50610190610634565b3480156102f457600080fd5b5061028261063d565b34801561030957600080fd5b50610179610643565b34801561031e57600080fd5b506101906106fd565b34801561033357600080fd5b5061033c610708565b60408051600160a060020a039092168252519081900360200190f35b34801561036457600080fd5b50610282610717565b34801561037957600080fd5b50610282610723565b34801561038e57600080fd5b50610179610728565b3480156103a357600080fd5b5061033c610796565b3480156103b857600080fd5b506102826107ae565b3480156103cd57600080fd5b506101906107b4565b3480156103e257600080fd5b5061033c6107d5565b3480156103f757600080fd5b506101906107e4565b34801561040c57600080fd5b506102826107e9565b34801561042157600080fd5b506101796004356107ef565b34801561043957600080fd5b50610442610723565b6040805160ff9092168252519081900360200190f35b34801561046457600080fd5b50610282610881565b34801561047957600080fd5b50610179610889565b610179600160a060020a03600435166104e1565b3480156104a257600080fd5b50610190610c0c565b3480156104b757600080fd5b50610179600160a060020a0360043516610c16565b3480156104d857600080fd5b5061033c610c39565b3460006104ee8383610c48565b6104f782610c77565b60035490915061050d908363ffffffff610cb416565b60035561051a8382610cc7565b60408051838152602081018390528151600160a060020a0386169233927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18929081900390910190a361056c8383610c73565b610574610cd1565b61057e8383610c73565b505050565b600081565b6000610592610d0a565b806105a057506105a06106fd565b905090565b60085460ff1681565b60408051808201909152600481527f4e454f5800000000000000000000000000000000000000000000000000000000602082015281565b60408051808201909152600381527f4e45580000000000000000000000000000000000000000000000000000000000602082015281565b60025481565b60055490565b60075481565b60035481565b60045442101590565b60055481565b600654600160a060020a0316331461065a57600080fd5b60065474010000000000000000000000000000000000000000900460ff161561068257600080fd5b61068a610588565b151561069557600080fd5b61069d610d12565b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a16006805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600754600354101590565b600154600160a060020a031681565b670de0b6b3a764000081565b601281565b600654600160a060020a0316331461073f57600080fd5b600654604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26006805473ffffffffffffffffffffffffffffffffffffffff19169055565b73ff9e935091645a9d410171f346d44dbc0b04183c81565b60045490565b60065474010000000000000000000000000000000000000000900460ff1681565b600654600160a060020a031681565b600181565b60045481565b600654600160a060020a0316331461080657600080fd5b600554421061081457600080fd5b42811161082057600080fd5b600454811161082e57600080fd5b6004546005546040805183815260208101859052808201939093526060830191909152517ff6b7151023ee87a6a0cc1f6cea30e02351728911b7b848aa8abde4d1f09172b79181900360800190a1600555565b6361290c0081565b610891611224565b610899611224565b6108a1611224565b600654600090600160a060020a031633146108bb57600080fd5b60085460ff16156108cb57600080fd5b6008805460ff1916600117905560008054604080517f8456cb590000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921692638456cb599260048084019382900301818387803b15801561093257600080fd5b505af1158015610946573d6000803e3d6000fd5b5050505050506040805160608181018352737e3b50c96ac97cb0f0dc8cdfd301a27c1336c7508252736d0dd6e207918f2f9c6824fbb69ee4e3fa8e95d66020808401919091527335ec9ddc9840ce900e01341bb5ba1437c85b1e4f83850152835180830185526a7c13bc4b2c133c5600000081526a3e09de2596099e2b000000818301526aba1d9a70c21cda81000000818601528451928301855260008084529183018290529382018190529194509192505b6003811015610bc057818160038110610a0e57fe5b602002015167ffffffffffffffff161515610ada57600054600160a060020a03166340c10f19858360038110610a4057fe5b6020020151858460038110610a5157fe5b60200201516040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610aa857600080fd5b505af1158015610abc573d6000803e3d6000fd5b505050506040513d6020811015610ad257600080fd5b50610bb89050565b600054600160a060020a0316630bb2cd6b858360038110610af757fe5b6020020151858460038110610b0857fe5b6020020151858560038110610b1957fe5b60200201516040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018381526020018267ffffffffffffffff1667ffffffffffffffff1681526020019350505050602060405180830381600087803b158015610b8b57600080fd5b505af1158015610b9f573d6000803e3d6000fd5b505050506040513d6020811015610bb557600080fd5b50505b6001016109f9565b610bdd73ff9e935091645a9d410171f346d44dbc0b04183c610c16565b6040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c890600090a150505050565b60006105a0610588565b600654600160a060020a03163314610c2d57600080fd5b610c3681610ea3565b50565b600054600160a060020a031681565b610c528282610f21565b600754600354610c68908363ffffffff610cb416565b1115610c7357600080fd5b5050565b600080610c8383610f4a565b9050610cad670de0b6b3a7640000610ca1858463ffffffff61111a16565b9063ffffffff61114316565b9392505050565b81810182811015610cc157fe5b92915050565b610c738282611158565b600154604051600160a060020a03909116903480156108fc02916000818181858888f19350505050158015610c36573d6000803e3d6000fd5b600554421190565b610d1a611201565b60008054604080517f3f4ba83a0000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921692633f4ba83a9260048084019382900301818387803b158015610d7457600080fd5b505af1158015610d88573d6000803e3d6000fd5b505050506000809054906101000a9004600160a060020a0316600160a060020a0316637d64bcb46040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610dde57600080fd5b505af1158015610df2573d6000803e3d6000fd5b505050506040513d6020811015610e0857600080fd5b50511515610e1557600080fd5b60008054604080517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ff9e935091645a9d410171f346d44dbc0b04183c60048201529051600160a060020a039092169263f2fde38b9260248084019382900301818387803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050565b600160a060020a0381161515610eb857600080fd5b600654604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6004544210158015610f3557506005544211155b1515610f4057600080fd5b610c738282611203565b600080610f55611243565b610f5d611243565b610f65611243565b610f6d611243565b610f75611243565b505060025460408051608081810183526000808352602080840182905283850182905260608085018390528551808501875269043c33c193756480000080825281840181905281880181905281830152865180860188526361290c008152636151ea808185018190526361797780828a018190526361a264108386018190528a51808a018c5292835282870191909152818a01526361c9f10b818501528851968701895261012c875260c8948701949094526096978601979097526064918501919091529599509297509395509193509180805b600483101561110b5760035488846004811061106157fe5b602002015111158015611085575086836004811061107b57fe5b6020020151600354105b91504286846004811061109457fe5b602002015167ffffffffffffffff16111580156110ca57508483600481106110b857fe5b602002015167ffffffffffffffff1642105b90508180156110d65750805b15611100576103e88484600481106110ea57fe5b60200201518a028115156110fa57fe5b04890198505b600190920191611049565b50969998505050505050505050565b600082151561112b57506000610cc1565b5081810281838281151561113b57fe5b0414610cc157fe5b6000818381151561115057fe5b049392505050565b60008054604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015260248201869052915191909216926340c10f1992604480820193602093909283900390910190829087803b1580156111ca57600080fd5b505af11580156111de573d6000803e3d6000fd5b505050506040513d60208110156111f457600080fd5b50511515610c7357600080fd5b565b600160a060020a038216151561121857600080fd5b801515610c7357600080fd5b6060604051908101604052806003906020820280388339509192915050565b60806040519081016040528060049060208202803883395091929150505600a165627a7a723058209aae391b3848719598b9d8ed1a2a0fd17b2421a73c46d6b918d33fa067869cc00029000000000000000000000000b62ace6f1fda46ed2590de1ff64ae56089b5f020
Deployed Bytecode
0x6080604052600436106101705763ffffffff60e060020a6000350416623fd35a811461017b5780631515bc2b146101a4578063158ef93e146101b957806318821400146101ce5780632a905318146102585780632c4e722e1461026d5780633197cbb614610294578063355274ea146102a95780634042b66f146102be57806344691f7e146102d35780634b6753bc146102e85780634bb278f3146102fd5780634f93594514610312578063521eb2731461032757806356780085146103585780635b7f415c1461036d578063715018a614610382578063726a431a1461039757806378e97925146103ac5780638d4e4083146103c15780638da5cb5b146103d6578063a9aad58c146103eb578063b7a8807c14610400578063ccb98ffc14610415578063cf3b19671461042d578063ddaa26ad14610458578063e1c7392a1461046d578063ec8ac4d814610482578063ecb70fb714610496578063f2fde38b146104ab578063fc0c546a146104cc575b610179336104e1565b005b34801561018757600080fd5b50610190610583565b604080519115158252519081900360200190f35b3480156101b057600080fd5b50610190610588565b3480156101c557600080fd5b506101906105a5565b3480156101da57600080fd5b506101e36105ae565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561021d578181015183820152602001610205565b50505050905090810190601f16801561024a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026457600080fd5b506101e36105e5565b34801561027957600080fd5b5061028261061c565b60408051918252519081900360200190f35b3480156102a057600080fd5b50610282610622565b3480156102b557600080fd5b50610282610628565b3480156102ca57600080fd5b5061028261062e565b3480156102df57600080fd5b50610190610634565b3480156102f457600080fd5b5061028261063d565b34801561030957600080fd5b50610179610643565b34801561031e57600080fd5b506101906106fd565b34801561033357600080fd5b5061033c610708565b60408051600160a060020a039092168252519081900360200190f35b34801561036457600080fd5b50610282610717565b34801561037957600080fd5b50610282610723565b34801561038e57600080fd5b50610179610728565b3480156103a357600080fd5b5061033c610796565b3480156103b857600080fd5b506102826107ae565b3480156103cd57600080fd5b506101906107b4565b3480156103e257600080fd5b5061033c6107d5565b3480156103f757600080fd5b506101906107e4565b34801561040c57600080fd5b506102826107e9565b34801561042157600080fd5b506101796004356107ef565b34801561043957600080fd5b50610442610723565b6040805160ff9092168252519081900360200190f35b34801561046457600080fd5b50610282610881565b34801561047957600080fd5b50610179610889565b610179600160a060020a03600435166104e1565b3480156104a257600080fd5b50610190610c0c565b3480156104b757600080fd5b50610179600160a060020a0360043516610c16565b3480156104d857600080fd5b5061033c610c39565b3460006104ee8383610c48565b6104f782610c77565b60035490915061050d908363ffffffff610cb416565b60035561051a8382610cc7565b60408051838152602081018390528151600160a060020a0386169233927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18929081900390910190a361056c8383610c73565b610574610cd1565b61057e8383610c73565b505050565b600081565b6000610592610d0a565b806105a057506105a06106fd565b905090565b60085460ff1681565b60408051808201909152600481527f4e454f5800000000000000000000000000000000000000000000000000000000602082015281565b60408051808201909152600381527f4e45580000000000000000000000000000000000000000000000000000000000602082015281565b60025481565b60055490565b60075481565b60035481565b60045442101590565b60055481565b600654600160a060020a0316331461065a57600080fd5b60065474010000000000000000000000000000000000000000900460ff161561068257600080fd5b61068a610588565b151561069557600080fd5b61069d610d12565b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a16006805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600754600354101590565b600154600160a060020a031681565b670de0b6b3a764000081565b601281565b600654600160a060020a0316331461073f57600080fd5b600654604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26006805473ffffffffffffffffffffffffffffffffffffffff19169055565b73ff9e935091645a9d410171f346d44dbc0b04183c81565b60045490565b60065474010000000000000000000000000000000000000000900460ff1681565b600654600160a060020a031681565b600181565b60045481565b600654600160a060020a0316331461080657600080fd5b600554421061081457600080fd5b42811161082057600080fd5b600454811161082e57600080fd5b6004546005546040805183815260208101859052808201939093526060830191909152517ff6b7151023ee87a6a0cc1f6cea30e02351728911b7b848aa8abde4d1f09172b79181900360800190a1600555565b6361290c0081565b610891611224565b610899611224565b6108a1611224565b600654600090600160a060020a031633146108bb57600080fd5b60085460ff16156108cb57600080fd5b6008805460ff1916600117905560008054604080517f8456cb590000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921692638456cb599260048084019382900301818387803b15801561093257600080fd5b505af1158015610946573d6000803e3d6000fd5b5050505050506040805160608181018352737e3b50c96ac97cb0f0dc8cdfd301a27c1336c7508252736d0dd6e207918f2f9c6824fbb69ee4e3fa8e95d66020808401919091527335ec9ddc9840ce900e01341bb5ba1437c85b1e4f83850152835180830185526a7c13bc4b2c133c5600000081526a3e09de2596099e2b000000818301526aba1d9a70c21cda81000000818601528451928301855260008084529183018290529382018190529194509192505b6003811015610bc057818160038110610a0e57fe5b602002015167ffffffffffffffff161515610ada57600054600160a060020a03166340c10f19858360038110610a4057fe5b6020020151858460038110610a5157fe5b60200201516040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610aa857600080fd5b505af1158015610abc573d6000803e3d6000fd5b505050506040513d6020811015610ad257600080fd5b50610bb89050565b600054600160a060020a0316630bb2cd6b858360038110610af757fe5b6020020151858460038110610b0857fe5b6020020151858560038110610b1957fe5b60200201516040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018381526020018267ffffffffffffffff1667ffffffffffffffff1681526020019350505050602060405180830381600087803b158015610b8b57600080fd5b505af1158015610b9f573d6000803e3d6000fd5b505050506040513d6020811015610bb557600080fd5b50505b6001016109f9565b610bdd73ff9e935091645a9d410171f346d44dbc0b04183c610c16565b6040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c890600090a150505050565b60006105a0610588565b600654600160a060020a03163314610c2d57600080fd5b610c3681610ea3565b50565b600054600160a060020a031681565b610c528282610f21565b600754600354610c68908363ffffffff610cb416565b1115610c7357600080fd5b5050565b600080610c8383610f4a565b9050610cad670de0b6b3a7640000610ca1858463ffffffff61111a16565b9063ffffffff61114316565b9392505050565b81810182811015610cc157fe5b92915050565b610c738282611158565b600154604051600160a060020a03909116903480156108fc02916000818181858888f19350505050158015610c36573d6000803e3d6000fd5b600554421190565b610d1a611201565b60008054604080517f3f4ba83a0000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921692633f4ba83a9260048084019382900301818387803b158015610d7457600080fd5b505af1158015610d88573d6000803e3d6000fd5b505050506000809054906101000a9004600160a060020a0316600160a060020a0316637d64bcb46040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610dde57600080fd5b505af1158015610df2573d6000803e3d6000fd5b505050506040513d6020811015610e0857600080fd5b50511515610e1557600080fd5b60008054604080517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ff9e935091645a9d410171f346d44dbc0b04183c60048201529051600160a060020a039092169263f2fde38b9260248084019382900301818387803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050565b600160a060020a0381161515610eb857600080fd5b600654604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6004544210158015610f3557506005544211155b1515610f4057600080fd5b610c738282611203565b600080610f55611243565b610f5d611243565b610f65611243565b610f6d611243565b610f75611243565b505060025460408051608081810183526000808352602080840182905283850182905260608085018390528551808501875269043c33c193756480000080825281840181905281880181905281830152865180860188526361290c008152636151ea808185018190526361797780828a018190526361a264108386018190528a51808a018c5292835282870191909152818a01526361c9f10b818501528851968701895261012c875260c8948701949094526096978601979097526064918501919091529599509297509395509193509180805b600483101561110b5760035488846004811061106157fe5b602002015111158015611085575086836004811061107b57fe5b6020020151600354105b91504286846004811061109457fe5b602002015167ffffffffffffffff16111580156110ca57508483600481106110b857fe5b602002015167ffffffffffffffff1642105b90508180156110d65750805b15611100576103e88484600481106110ea57fe5b60200201518a028115156110fa57fe5b04890198505b600190920191611049565b50969998505050505050505050565b600082151561112b57506000610cc1565b5081810281838281151561113b57fe5b0414610cc157fe5b6000818381151561115057fe5b049392505050565b60008054604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015260248201869052915191909216926340c10f1992604480820193602093909283900390910190829087803b1580156111ca57600080fd5b505af11580156111de573d6000803e3d6000fd5b505050506040513d60208110156111f457600080fd5b50511515610c7357600080fd5b565b600160a060020a038216151561121857600080fd5b801515610c7357600080fd5b6060604051908101604052806003906020820280388339509192915050565b60806040519081016040528060049060208202803883395091929150505600a165627a7a723058209aae391b3848719598b9d8ed1a2a0fd17b2421a73c46d6b918d33fa067869cc00029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b62ace6f1fda46ed2590de1ff64ae56089b5f020
-----Decoded View---------------
Arg [0] : _token (address): 0xb62aCE6f1fdA46eD2590De1fF64ae56089B5f020
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b62ace6f1fda46ed2590de1ff64ae56089b5f020
Deployed Bytecode Sourcemap
34544:1971:0:-;;;;;;;;;-1:-1:-1;;;34544:1971:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5308:21;5318:10;5308:9;:21::i;:::-;34544:1971;28125:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28125:45:0;;;;;;;;;;;;;;;;;;;;;;31851:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31851:107:0;;;;34777:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34777:31:0;;;;27835:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27835:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27835:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27884:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27884:43:0;;;;4179:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4179:19:0;;;;;;;;;;;;;;;;;;;;31757:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31757:86:0;;;;29211:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29211:18:0;;;;4232:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4232:24:0;;;;31560:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31560:93:0;;;;10647:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10647:26:0;;;;28617:171;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28617:171:0;;;;29577:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29577:85:0;;;;3871:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3871:21:0;;;;;;;;-1:-1:-1;;;;;3871:21:0;;;;;;;;;;;;;;27758:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27758:68:0;;;;27657:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27657:40:0;;;;9724:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9724:114:0;;;;27975:80;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27975:80:0;;;;31661:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31661:88:0;;;;28407:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28407:31:0;;;;9106:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9106:20:0;;;;27934:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27934:34:0;;;;10616:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10616:26:0;;;;36119:363;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;36119:363:0;;;;;27704:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27704:47:0;;;;;;;;;;;;;;;;;;;;;;;28068:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28068:44:0;;;;35117:972;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35117:972:0;;;;5477:600;;-1:-1:-1;;;;;5477:600:0;;;;;31966:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31966:84:0;;;;10006:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10006:105:0;-1:-1:-1;;;;;10006:105:0;;;;;3806:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3806:18:0;;;;5477:600;5562:9;5542:17;5578:45;5599:12;5562:9;5578:20;:45::i;:::-;5694:26;5710:9;5694:15;:26::i;:::-;5762:9;;5677:43;;-1:-1:-1;5762:24:0;;5776:9;5762:24;:13;:24;:::i;:::-;5750:9;:36;5795:38;5812:12;5826:6;5795:16;:38::i;:::-;5845:93;;;;;;;;;;;;;;-1:-1:-1;;;;;5845:93:0;;;5867:10;;5845:93;;;;;;;;;;;5947:47;5970:12;5984:9;5947:22;:47::i;:::-;6003:15;:13;:15::i;:::-;6025:46;6047:12;6061:9;6025:21;:46::i;:::-;5477:600;;;:::o;28125:45::-;28165:5;28125:45;:::o;31851:107::-;31893:4;31917:17;:15;:17::i;:::-;:33;;;;31938:12;:10;:12::i;:::-;31910:40;;31851:107;:::o;34777:31::-;;;;;;:::o;27835:42::-;;;;;;;;;;;;;;;;;;;:::o;27884:43::-;;;;;;;;;;;;;;;;;;;:::o;4179:19::-;;;;:::o;31757:86::-;31824:11;;31757:86;:::o;29211:18::-;;;;:::o;4232:24::-;;;;:::o;31560:93::-;31634:11;;31627:3;:18;;31560:93;:::o;10647:26::-;;;;:::o;28617:171::-;9609:5;;-1:-1:-1;;;;;9609:5:0;9595:10;:19;9587:28;;;;;;28670:11;;;;;;;28669:12;28661:21;;;;;;28697:11;:9;:11::i;:::-;28689:20;;;;;;;;28718:14;:12;:14::i;:::-;28744:11;;;;;;;28764;:18;;-1:-1:-1;;28764:18:0;;;;;28617:171::o;29577:85::-;29653:3;;29640:9;;:16;;29577:85;:::o;3871:21::-;;;-1:-1:-1;;;;;3871:21:0;;:::o;27758:68::-;27806:20;27758:68;:::o;27657:40::-;27695:2;27657:40;:::o;9724:114::-;9609:5;;-1:-1:-1;;;;;9609:5:0;9595:10;:19;9587:28;;;;;;9801:5;;9782:25;;-1:-1:-1;;;;;9801:5:0;;;;9782:25;;9801:5;;9782:25;9814:5;:18;;-1:-1:-1;;9814:18:0;;;9724:114::o;27975:80::-;28013:42;27975:80;:::o;31661:88::-;31730:11;;31661:88;:::o;28407:31::-;;;;;;;;;:::o;9106:20::-;;;-1:-1:-1;;;;;9106:20:0;;:::o;27934:34::-;27964:4;27934:34;:::o;10616:26::-;;;;:::o;36119:363::-;9609:5;;-1:-1:-1;;;;;9609:5:0;9595:10;:19;9587:28;;;;;;36233:11;;36227:3;:17;36219:26;;;;;;36307:3;:14;-1:-1:-1;36299:23:0;;;;;;36352:11;;36341:22;;36333:31;;;;;;36393:11;;36429;;36380:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36452:11;:22;36119:363::o;28068:44::-;28102:10;28068:44;:::o;35117:972::-;35309:27;;:::i;:::-;35507:22;;:::i;:::-;35645:24;;:::i;:::-;9609:5;;35721:6;;-1:-1:-1;;;;;9609:5:0;9595:10;:19;9587:28;;;;;;35170:11;;;;35169:12;35161:21;;;;;;35193:11;:18;;-1:-1:-1;;35193:18:0;35207:4;35193:18;;;35261:5;;;35251:24;;;;;;;;-1:-1:-1;;;;;35261:5:0;;;;35251:22;;:24;;;;;;;;;;35261:5;;35251:24;;;5:2:-1;;;;30:1;27;20:12;5:2;35251:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35251:24:0;;;;-1:-1:-1;;35309:187:0;;;;;;;;;35348:42;35309:187;;35400:42;35309:187;;;;;;;;35452:42;35309:187;;;;35507:127;;;;;;;35538:27;35507:127;;35572:26;35507:127;;;;35605:27;35507:127;;;;35645:58;;;;;;;-1:-1:-1;35645:58:0;;;;;;;;;;;;;;;35309:187;;-1:-1:-1;35507:127:0;;-1:-1:-1;35716:282:0;35737:16;35733:1;:20;35716:282;;;35779:7;35787:1;35779:10;;;;;;;;;;;:15;;;35775:212;;;35825:5;;-1:-1:-1;;;;;35825:5:0;35815:21;35837:9;35847:1;35837:12;;;;;;;;;;;35851:7;35859:1;35851:10;;;;;;;;;;;35815:47;;;;;-1:-1:-1;;;35815:47:0;;;;;;;-1:-1:-1;;;;;35815:47:0;-1:-1:-1;;;;;35815:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35815:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35815:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35775:212:0;;-1:-1:-1;35775:212:0;;35913:5;;-1:-1:-1;;;;;35913:5:0;35903:30;35934:9;35944:1;35934:12;;;;;;;;;;;35948:7;35956:1;35948:10;;;;;;;;;;;35960:7;35968:1;35960:10;;;;;;;;;;;35903:68;;;;;-1:-1:-1;;;35903:68:0;;;;;;;-1:-1:-1;;;;;35903:68:0;-1:-1:-1;;;;;35903:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35903:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35903:68:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;35775:212:0;35755:3;;35716:282;;;36020:30;28013:42;36020:17;:30::i;:::-;36068:13;;;;;;;35117:972;;;;:::o;31966:84::-;32007:4;32031:11;:9;:11::i;10006:105::-;9609:5;;-1:-1:-1;;;;;9609:5:0;9595:10;:19;9587:28;;;;;;10076:29;10095:9;10076:18;:29::i;:::-;10006:105;:::o;3806:18::-;;;-1:-1:-1;;;;;3806:18:0;;:::o;29855:217::-;29966:52;29993:12;30007:10;29966:26;:52::i;:::-;30062:3;;30033:9;;:25;;30047:10;30033:25;:13;:25;:::i;:::-;:32;;30025:41;;;;;;29855:217;;:::o;33093:210::-;33170:7;33195:17;33215:24;33228:10;33215:12;:24::i;:::-;33195:44;-1:-1:-1;33257:38:0;33287:7;33257:25;:10;33195:44;33257:25;:14;:25;:::i;:::-;:29;:38;:29;:38;:::i;:::-;33250:45;33093:210;-1:-1:-1;;;33093:210:0:o;2878:127::-;2958:5;;;2977:6;;;;2970:14;;;;2878:127;;;;:::o;7796:157::-;7905:42;7920:12;7934;7905:14;:42::i;8805:73::-;8846:6;;:26;;-1:-1:-1;;;;;8846:6:0;;;;8862:9;8846:26;;;;;:6;:26;:6;:26;8862:9;8846:6;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;11553:156:0;11692:11;;11674:15;:29;11553:156;:::o;32058:314::-;32102:20;:18;:20::i;:::-;32172:5;;;32162:26;;;;;;;;-1:-1:-1;;;;;32172:5:0;;;;32162:24;;:26;;;;;;;;;;32172:5;;32162:26;;;5:2:-1;;;;30:1;27;20:12;5:2;32162:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32162:26:0;;;;32272:5;;;;;;;;;-1:-1:-1;;;;;32272:5:0;-1:-1:-1;;;;;32258:34:0;;:36;;;;;-1:-1:-1;;;32258:36:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32258:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32258:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32258:36:0;32250:45;;;;;;;;32327:5;;;32319:45;;;;;;28013:42;32319:45;;;;;;-1:-1:-1;;;;;32327:5:0;;;;32319:32;;:45;;;;;;;;;;32327:5;;32319:45;;;5:2:-1;;;;30:1;27;20:12;5:2;32319:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32319:45:0;;;;32058:314::o;10252:175::-;-1:-1:-1;;;;;10323:23:0;;;;10315:32;;;;;;10380:5;;10359:38;;-1:-1:-1;;;;;10359:38:0;;;;10380:5;;10359:38;;10380:5;;10359:38;10404:5;:17;;-1:-1:-1;;10404:17:0;-1:-1:-1;;;;;10404:17:0;;;;;;;;;;10252:175::o;11898:188::-;10861:11;;10842:15;:30;;:64;;;;;10895:11;;10876:15;:30;;10842:64;10834:73;;;;;;;;12028:52;12055:12;12069:10;12028:26;:52::i;33311:1218::-;33376:7;33396:17;33488:36;;:::i;:::-;33571:34;;:::i;:::-;33740:33;;:::i;:::-;33864:31;;:::i;:::-;33986:36;;:::i;:::-;-1:-1:-1;;33416:4:0;;33488:72;;;;;;;;;34084:6;33488:72;;;;;;;;;;;;;;;;;;;;;;;33571:158;;;;;;;33614:23;33571:158;;;;;;;;;;;;;;;;;;;33740:113;;;;;;;33784:10;33740:113;;33803:10;33740:113;;;;;;33822:10;33740:113;;;;;;33841:10;33740:113;;;;;;33864:111;;;;;;;;;;;;;;;;;;;;;33963:10;33864:111;;;;33986:80;;;;;;;34031:3;33986:80;;34041:3;33986:80;;;;;;;34051:3;33986:80;;;;;;;34061:3;33986:80;;;;;;;33416:4;;-1:-1:-1;33488:72:0;;-1:-1:-1;33571:158:0;;-1:-1:-1;33740:113:0;;-1:-1:-1;33864:111:0;34084:6;;34079:392;34100:1;34096;:5;34079:392;;;34176:9;;34148:21;34170:1;34148:24;;;;;;;;;;;:37;;34147:79;;;;-1:-1:-1;34203:19:0;34223:1;34203:22;;;;;;;;;;;34191:9;;:34;34147:79;34123:103;-1:-1:-1;34284:3:0;34261:16;34278:1;34261:19;;;;;;;;;;;:26;;;;34260:57;;;;-1:-1:-1;34299:14:0;34314:1;34299:17;;;;;;;;;;;34293:23;;:3;:23;34260:57;34241:76;;34336:16;:31;;;;;34356:11;34336:31;34332:128;;;34440:4;34413:21;34435:1;34413:24;;;;;;;;;;;34401:9;:36;:43;;;;;;;;34388:56;;;;34332:128;34103:3;;;;;34079:392;;;-1:-1:-1;34512:9:0;;33311:1218;-1:-1:-1;;;;;;;;;33311:1218:0:o;1833:384::-;1891:9;2121:6;;2117:37;;;-1:-1:-1;2145:1:0;2138:8;;2117:37;-1:-1:-1;2166:5:0;;;2170:1;2166;:5;2185;;;;;;;;:10;2178:18;;;2304:277;2362:7;2574:1;2570;:5;;;;;;;;;2304:277;-1:-1:-1;;;2304:277:0:o;30497:175::-;30626:5;;;30612:53;;;;;;-1:-1:-1;;;;;30612:53:0;;;;;;;;;;;;;;;30626:5;;;;;30612:25;;:53;;;;;;;;;;;;;;;;;;30626:5;30612:53;;;5:2:-1;;;;30:1;27;20:12;5:2;30612:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30612:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30612:53:0;30604:62;;;;;;;28991:39;:::o;6512:183::-;-1:-1:-1;;;;;6631:26:0;;;;6623:35;;;;;;6673:15;;;6665:24;;;;;34544:1971;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;34544:1971:0;;;-1:-1:-1;;34544:1971:0:o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;34544:1971:0;;;-1:-1:-1;;34544:1971:0:o
Swarm Source
bzzr://9aae391b3848719598b9d8ed1a2a0fd17b2421a73c46d6b918d33fa067869cc0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BSC | 100.00% | $2,526.89 | 0.004 | $10.11 |
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.