ETH Price: $2,452.77 (+2.16%)

Contract

0xED045AbCD09Fa8223D06bca4B0ad562a1c467F10
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Vesting63131932018-09-11 17:18:162200 days ago1536686296IN
0xED045AbC...a1c467F10
0 ETH0.000619816
0x6080604060288462018-07-25 18:07:112248 days ago1532542031IN
 Create: IcoLib
0 ETH0.003629382

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
IcoLib

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-07-25
*/

pragma solidity 0.4.24;
contract Owned {
    /* Variables */
    address public owner = msg.sender;
    /* Constructor */
    constructor(address _owner) public {
        if ( _owner == 0x00 ) {
            _owner = msg.sender;
        }
        owner = _owner;
    }
    /* Externals */
    function replaceOwner(address _owner) external returns(bool) {
        require( isOwner() );
        owner = _owner;
        return true;
    }
    /* Internals */
    function isOwner() internal view returns(bool) {
        return owner == msg.sender;
    }
    /* Modifiers */
    modifier forOwner {
        require( isOwner() );
        _;
    }
}
library SafeMath {
    /* Internals */
    function add(uint256 a, uint256 b) internal pure returns(uint256 c) {
        c = a + b;
        assert( c >= a );
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns(uint256 c) {
        c = a - b;
        assert( c <= a );
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns(uint256 c) {
        c = a * b;
        assert( c == 0 || c / a == b );
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns(uint256) {
        return a / b;
    }
    function pow(uint256 a, uint256 b) internal pure returns(uint256 c) {
        c = a ** b;
        assert( c % a == 0 );
        return a ** b;
    }
}
contract TokenDB is Owned {
    /* Externals */
    function transfer(address _from, address _to, uint256 _amount) external returns(bool _success) {}
    function bulkTransfer(address _from, address[] _to, uint256[] _amount) external returns(bool _success) {}
    function setAllowance(address _owner, address _spender, uint256 _amount) external returns(bool _success) {}
    /* Constants */
    function getAllowance(address _owner, address _spender) public view returns(bool _success, uint256 _remaining) {}
    function balanceOf(address _owner) public view returns(bool _success, uint256 _balance) {}
}
contract Token is Owned {
    /* Declarations */
    using SafeMath for uint256;
    /* Variables */
    string  public name = "Inlock token";
    string  public symbol = "ILK";
    uint8   public decimals = 8;
    uint256 public totalSupply = 44e16;
    address public libAddress;
    TokenDB public db;
    Ico public ico;
    /* Fallback */
    function () public { revert(); }
    /* Externals */
    function changeLibAddress(address _libAddress) external forOwner {}
    function changeDBAddress(address _dbAddress) external forOwner {}
    function changeIcoAddress(address _icoAddress) external forOwner {}
    function approve(address _spender, uint256 _value) external returns (bool _success) {}
    function transfer(address _to, uint256 _amount) external returns (bool _success) {}
    function bulkTransfer(address[] _to, uint256[] _amount) external returns (bool _success) {}
    function transferFrom(address _from, address _to, uint256 _amount) external returns (bool _success) {}
    /* Constants */
    function allowance(address _owner, address _spender) public view returns (uint256 _remaining) {}
    function balanceOf(address _owner) public view returns (uint256 _balance) {}
    /* Events */
    event AllowanceUsed(address indexed _spender, address indexed _owner, uint256 indexed _value);
    event Mint(address indexed _addr, uint256 indexed _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
    event Transfer(address indexed _from, address indexed _to, uint _value);
}
contract Ico is Owned {
    /* Declarations */
    using SafeMath for uint256;
    /* Enumerations */
    enum phaseType {
        pause,
        privateSale1,
        privateSale2,
        sales1,
        sales2,
        sales3,
        sales4,
        preFinish,
        finish
    }
    struct vesting_s {
        uint256 amount;
        uint256 startBlock;
        uint256 endBlock;
        uint256 claimedAmount;
    }
    /* Variables */
    mapping(address => bool) public KYC;
    mapping(address => bool) public transferRight;
    mapping(address => vesting_s) public vesting;
    phaseType public currentPhase;
    uint256   public currentRate;
    uint256   public currentRateM = 1e3;
    uint256   public privateSale1Hardcap = 4e16;
    uint256   public privateSale2Hardcap = 64e15;
    uint256   public thisBalance = 44e16;
    address   public offchainUploaderAddress;
    address   public setKYCAddress;
    address   public setRateAddress;
    address   public libAddress;
    Token     public token;
    /* Constructor */
    constructor(address _owner, address _libAddress, address _tokenAddress, address _offchainUploaderAddress,
        address _setKYCAddress, address _setRateAddress) Owned(_owner) public {
        currentPhase = phaseType.pause;
        libAddress = _libAddress;
        token = Token(_tokenAddress);
        offchainUploaderAddress = _offchainUploaderAddress;
        setKYCAddress = _setKYCAddress;
        setRateAddress = _setRateAddress;
    }
    /* Fallback */
    function () public payable {
        buy();
    }
    /* Externals */
    function changeLibAddress(address _libAddress) external forOwner {
        libAddress = _libAddress;
    }
    function changeOffchainUploaderAddress(address _offchainUploaderAddress) external forOwner {
        offchainUploaderAddress = _offchainUploaderAddress;
    }
    function changeKYCAddress(address _setKYCAddress) external forOwner {
        setKYCAddress = _setKYCAddress;
    }
    function changeSetRateAddress(address _setRateAddress) external forOwner {
        setRateAddress = _setRateAddress;
    }
    function setVesting(address _beneficiary, uint256 _amount, uint256 _startBlock, uint256 _endBlock) external {
        address _trg = libAddress;
        assembly {
            let m := mload(0x40)
            calldatacopy(m, 0, calldatasize)
            let success := delegatecall(gas, _trg, m, calldatasize, m, 0)
            switch success case 0 {
                revert(0, 0)
            } default {
                return(m, 0)
            }
        }
    }
    function claimVesting() external {
        address _trg = libAddress;
        assembly {
            let m := mload(0x40)
            calldatacopy(m, 0, calldatasize)
            let success := delegatecall(gas, _trg, m, calldatasize, m, 0)
            switch success case 0 {
                revert(0, 0)
            } default {
                return(m, 0)
            }
        }
    }
    function setKYC(address[] _on, address[] _off) external {
        address _trg = libAddress;
        assembly {
            let m := mload(0x40)
            calldatacopy(m, 0, calldatasize)
            let success := delegatecall(gas, _trg, m, calldatasize, m, 0)
            switch success case 0 {
                revert(0, 0)
            } default {
                return(m, 0)
            }
        }
    }
    function setTransferRight(address[] _allow, address[] _disallow) external {
        address _trg = libAddress;
        assembly {
            let m := mload(0x40)
            calldatacopy(m, 0, calldatasize)
            let success := delegatecall(gas, _trg, m, calldatasize, m, 0)
            switch success case 0 {
                revert(0, 0)
            } default {
                return(m, 0)
            }
        }
    }
    function setCurrentRate(uint256 _currentRate) external {
        address _trg = libAddress;
        assembly {
            let m := mload(0x40)
            calldatacopy(m, 0, calldatasize)
            let success := delegatecall(gas, _trg, m, calldatasize, m, 0)
            switch success case 0 {
                revert(0, 0)
            } default {
                return(m, 0)
            }
        }
    }
    function setCurrentPhase(phaseType _phase) external {
        address _trg = libAddress;
        assembly {
            let m := mload(0x40)
            calldatacopy(m, 0, calldatasize)
            let success := delegatecall(gas, _trg, m, calldatasize, m, 0)
            switch success case 0 {
                revert(0, 0)
            } default {
                return(m, 0)
            }
        }
    }
    function offchainUpload(address[] _beneficiaries, uint256[] _rewards) external {
        address _trg = libAddress;
        assembly {
            let m := mload(0x40)
            calldatacopy(m, 0, calldatasize)
            let success := delegatecall(gas, _trg, m, calldatasize, m, 0)
            switch success case 0 {
                revert(0, 0)
            } default {
                return(m, 0)
            }
        }
    }
    function buy() public payable {
        address _trg = libAddress;
        assembly {
            let m := mload(0x40)
            calldatacopy(m, 0, calldatasize)
            let success := delegatecall(gas, _trg, m, calldatasize, m, 0)
            switch success case 0 {
                revert(0, 0)
            } default {
                return(m, 0)
            }
        }
    }
    /* Constants */
    function allowTransfer(address _owner) public view returns (bool _success, bool _allow) {
        address _trg = libAddress;
        assembly {
            let m := mload(0x40)
            calldatacopy(m, 0, calldatasize)
            let success := delegatecall(gas, _trg, m, calldatasize, m, 0x40)
            switch success case 0 {
                revert(0, 0)
            } default {
                return(m, 0x40)
            }
        }
    }
    function calculateReward(uint256 _input) public view returns (bool _success, uint256 _reward) {
        address _trg = libAddress;
        assembly {
            let m := mload(0x40)
            calldatacopy(m, 0, calldatasize)
            let success := delegatecall(gas, _trg, m, calldatasize, m, 0x40)
            switch success case 0 {
                revert(0, 0)
            } default {
                return(m, 0x40)
            }
        }
    }
    function calcVesting(address _owner) public view returns(bool _success, uint256 _reward) {
        address _trg = libAddress;
        assembly {
            let m := mload(0x40)
            calldatacopy(m, 0, calldatasize)
            let success := delegatecall(gas, _trg, m, calldatasize, m, 0x40)
            switch success case 0 {
                revert(0, 0)
            } default {
                return(m, 0x40)
            }
        }
    }
    /* Events */
    event Brought(address _owner, address _beneficiary, uint256 _input, uint256 _output);
    event VestingDefined(address _beneficiary, uint256 _amount, uint256 _startBlock, uint256 _endBlock);
    event VestingClaimed(address _beneficiary, uint256 _amount);
}
contract IcoLib is Ico {
    /* Constructor */
    constructor(address _owner, address _tokenAddress, address _offchainUploaderAddress, address _setKYCAddress, address _setRateAddress)
        Ico(_owner, 0x00, _tokenAddress, _offchainUploaderAddress, _setKYCAddress, _setRateAddress) public {}
    /* Externals */
    function setVesting(address _beneficiary, uint256 _amount, uint256 _startBlock, uint256 _endBlock) external forOwner {
        require( _beneficiary != 0x00 );
        thisBalance = thisBalance.add( vesting[_beneficiary].amount.sub(vesting[_beneficiary].claimedAmount) );
        if ( _amount == 0 ) {
            delete vesting[_beneficiary];
            emit VestingDefined(_beneficiary, 0, 0, 0);
        } else {
            require( _endBlock > _startBlock );
            vesting[_beneficiary] = vesting_s(
                _amount,
                _startBlock,
                _endBlock,
                0
            );
            thisBalance = thisBalance.sub( _amount );
            emit VestingDefined(_beneficiary, _amount, _startBlock, _endBlock);
        }
    }
    function claimVesting() external {
        uint256 _reward;
        bool    _subResult;
        ( _subResult, _reward ) = calcVesting(msg.sender);
        require( _subResult && _reward > 0 );
        vesting[msg.sender].claimedAmount = vesting[msg.sender].claimedAmount.add(_reward);
        require( token.transfer(msg.sender, _reward) );
    }
    function setKYC(address[] _on, address[] _off) external {
        uint256 i;
        require( msg.sender == setKYCAddress );
        for ( i=0 ; i<_on.length ; i++ ) {
            KYC[_on[i]] = true;
        }
        for ( i=0 ; i<_off.length ; i++ ) {
            delete KYC[_off[i]];
        }
    }
    function setTransferRight(address[] _allow, address[] _disallow) external forOwner {
        uint256 i;
        for ( i=0 ; i<_allow.length ; i++ ) {
            transferRight[_allow[i]] = true;
        }
        for ( i=0 ; i<_disallow.length ; i++ ) {
            delete transferRight[_disallow[i]];
        }
    }
    function setCurrentRate(uint256 _currentRate) external {
        require( msg.sender == setRateAddress );
        require( _currentRate >= currentRateM );
        currentRate = _currentRate;
    }
    function setCurrentPhase(phaseType _phase) external forOwner {
        currentPhase = _phase;
    }
    function offchainUpload(address[] _beneficiaries, uint256[] _rewards) external {
        uint256 i;
        uint256 _totalReward;
        require( msg.sender == offchainUploaderAddress );
        require( currentPhase != phaseType.pause && currentPhase != phaseType.finish );
        require( _beneficiaries.length ==  _rewards.length );
        for ( i=0 ; i<_rewards.length ; i++ ) {
            _totalReward = _totalReward.add(_rewards[i]);
            emit Brought(msg.sender, _beneficiaries[i], 0, _rewards[i]);
        }
        thisBalance = thisBalance.sub(_totalReward);
        if ( currentPhase == phaseType.privateSale1 ) {
            privateSale1Hardcap = privateSale1Hardcap.sub(_totalReward);
        } else if ( currentPhase == phaseType.privateSale2 ) {
            privateSale2Hardcap = privateSale2Hardcap.sub(_totalReward);
        }
        token.bulkTransfer(_beneficiaries, _rewards);
    }
    function buy() public payable {
        uint256 _reward;
        bool    _subResult;
        require( currentPhase == phaseType.privateSale2 || 
            currentPhase == phaseType.sales1 || 
            currentPhase == phaseType.sales2 || 
            currentPhase == phaseType.sales3 || 
            currentPhase == phaseType.sales4 || 
            currentPhase == phaseType.preFinish
        );
        require( KYC[msg.sender] );
        ( _subResult, _reward ) = calculateReward(msg.value);
        require( _reward > 0 && _subResult );
        thisBalance = thisBalance.sub(_reward);
        require( owner.send(msg.value) );
        if ( currentPhase == phaseType.privateSale1 ) {
            privateSale1Hardcap = privateSale1Hardcap.sub(_reward);
        } else if ( currentPhase == phaseType.privateSale2 ) {
            privateSale2Hardcap = privateSale2Hardcap.sub(_reward);
        }
        require( token.transfer(msg.sender, _reward) );
        emit Brought(msg.sender, msg.sender, msg.value, _reward);
    }
    /* Constants */
    function allowTransfer(address _owner) public view returns (bool _success, bool _allow) {
        return ( true, _owner == address(this) || transferRight[_owner] || currentPhase == phaseType.preFinish  || currentPhase == phaseType.finish );
    }
    function calculateReward(uint256 _input) public view returns (bool _success, uint256 _reward) {
        uint256 _amount;
        _success = true;
        if ( currentRate == 0 || _input == 0 ) {
            return;
        }
        _amount = _input.mul(1e8).mul(100).mul(currentRate).div(1e18).div(currentRateM); // 1 token eq 0.01 USD
        if ( _amount == 0 ) {
            return;
        }
        if ( currentPhase == phaseType.privateSale1 ) {
            if        ( _amount >=  25e13 ) {
                _reward = _amount.mul(142).div(100);
            } else if ( _amount >=  10e13 ) {
                _reward = _amount.mul(137).div(100);
            } else if ( _amount >=   2e13 ) {
                _reward = _amount.mul(133).div(100);
            }
            if ( _reward > 0 && privateSale1Hardcap < _reward ) {
                _reward = 0;
            }
        } else if ( currentPhase == phaseType.privateSale2 ) {
            if        ( _amount >= 125e13 ) {
                _reward = _amount.mul(129).div(100);
            } else if ( _amount >= 100e13 ) {
                _reward = _amount.mul(124).div(100);
            } else if ( _amount >=  10e13 ) {
                _reward = _amount.mul(121).div(100);
            }
            if ( _reward > 0 && privateSale2Hardcap < _reward ) {
                _reward = 0;
            }
        } else if ( currentPhase == phaseType.sales1 ) {
            if        ( _amount >=   1e12 ) {
                _reward = _amount.mul(117).div(100);
            }
        } else if ( currentPhase == phaseType.sales2 ) {
            if        ( _amount >=   1e12 ) {
                _reward = _amount.mul(112).div(100);
            }
        } else if ( currentPhase == phaseType.sales3 ) {
            if        ( _amount >=   1e12 ) {
                _reward = _amount.mul(109).div(100);
            }
        } else if ( currentPhase == phaseType.sales4 ) {
            if        ( _amount >=   1e12 ) {
                _reward = _amount.mul(102).div(100);
            }
        } else if ( currentPhase == phaseType.preFinish ) {
            _reward = _amount;
        }
        if ( thisBalance < _reward ) {
            _reward = 0;
        }
    }
    function calcVesting(address _owner) public view returns(bool _success, uint256 _reward) {
        vesting_s memory _vesting = vesting[_owner];
        if ( _vesting.amount == 0 || block.number < _vesting.startBlock ) {
            return ( true, 0 );
        }
        _reward = _vesting.amount.mul( block.number.sub(_vesting.startBlock) ).div( _vesting.endBlock.sub(_vesting.startBlock) );
        if ( _reward > _vesting.amount ) {
            _reward = _vesting.amount;
        }
        if ( _reward <= _vesting.claimedAmount ) {
            return ( true, 0 );
        }
        return ( true, _reward.sub(_vesting.claimedAmount) );
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"currentPhase","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_currentRate","type":"uint256"}],"name":"setCurrentRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_libAddress","type":"address"}],"name":"changeLibAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"thisBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"libAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_on","type":"address[]"},{"name":"_off","type":"address[]"}],"name":"setKYC","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_offchainUploaderAddress","type":"address"}],"name":"changeOffchainUploaderAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_allow","type":"address[]"},{"name":"_disallow","type":"address[]"}],"name":"setTransferRight","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"calcVesting","outputs":[{"name":"_success","type":"bool"},{"name":"_reward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"setKYCAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentRateM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_setRateAddress","type":"address"}],"name":"changeSetRateAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"replaceOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiaries","type":"address[]"},{"name":"_rewards","type":"uint256[]"}],"name":"offchainUpload","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_setKYCAddress","type":"address"}],"name":"changeKYCAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"allowTransfer","outputs":[{"name":"_success","type":"bool"},{"name":"_allow","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"setRateAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"offchainUploaderAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"KYC","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_startBlock","type":"uint256"},{"name":"_endBlock","type":"uint256"}],"name":"setVesting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_phase","type":"uint8"}],"name":"setCurrentPhase","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_input","type":"uint256"}],"name":"calculateReward","outputs":[{"name":"_success","type":"bool"},{"name":"_reward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"privateSale1Hardcap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"vesting","outputs":[{"name":"amount","type":"uint256"},{"name":"startBlock","type":"uint256"},{"name":"endBlock","type":"uint256"},{"name":"claimedAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"transferRight","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"privateSale2Hardcap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimVesting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owner","type":"address"},{"name":"_tokenAddress","type":"address"},{"name":"_offchainUploaderAddress","type":"address"},{"name":"_setKYCAddress","type":"address"},{"name":"_setRateAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_owner","type":"address"},{"indexed":false,"name":"_beneficiary","type":"address"},{"indexed":false,"name":"_input","type":"uint256"},{"indexed":false,"name":"_output","type":"uint256"}],"name":"Brought","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_beneficiary","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_startBlock","type":"uint256"},{"indexed":false,"name":"_endBlock","type":"uint256"}],"name":"VestingDefined","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_beneficiary","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"VestingClaimed","type":"event"}]

608060405260008054600160a060020a031916331790556103e8600655668e1bc9bf04000060075566e35fa931a0000060085567061b31ab352c000060095534801561004a57600080fd5b5060405160a0806117c383398101604090815281516020830151918301516060840151608090940151919390918460008585858585600160a060020a03811615156100925750335b60008054600160a060020a03928316600160a060020a03199182161782556004805460ff19169055600d8054821698841698909817909755600e8054881696831696909617909555600a8054871694821694909417909355600b8054861692841692909217909155600c80549094169116179091556116a5965086955061011e945092505050396000f30060806040526004361061018a5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663055ad42e81146101945780630b5f2efd146101cd5780631e1d696a146101e557806327f3a72a1461020657806329fd50eb1461022d57806338241c161461025e5780634774027c1461028a5780636b84dfcd146102ab5780637642dc0f146102d757806377b7469214610313578063798b18fd146103285780638da5cb5b1461033d5780639d3cc18714610352578063a39a45b714610373578063a6f2ae3a1461018a578063ad5c1687146103a8578063b19f30e2146103d4578063b3490bfc146103f5578063b4d1472814610431578063b8be73ed14610446578063bd3b10461461045b578063c0ab57041461047c578063cd3f2910146104a6578063d2d7231f146104c1578063e16ba8c6146104d9578063e388c423146104ee578063e696d30314610535578063f0cecafc14610556578063f9f8bdb71461056b578063fc0c546a14610580578063fedda89c14610595575b6101926105aa565b005b3480156101a057600080fd5b506101a9610830565b604051808260088111156101b957fe5b60ff16815260200191505060405180910390f35b3480156101d957600080fd5b50610192600435610839565b3480156101f157600080fd5b50610192600160a060020a0360043516610864565b34801561021257600080fd5b5061021b6108a6565b60408051918252519081900360200190f35b34801561023957600080fd5b506102426108ac565b60408051600160a060020a039092168252519081900360200190f35b34801561026a57600080fd5b5061019260246004803582810192908201359181359182019101356108bb565b34801561029657600080fd5b50610192600160a060020a0360043516610980565b3480156102b757600080fd5b5061019260246004803582810192908201359181359182019101356109c2565b3480156102e357600080fd5b506102f8600160a060020a0360043516610a7c565b60408051921515835260208301919091528051918290030190f35b34801561031f57600080fd5b50610242610b92565b34801561033457600080fd5b5061021b610ba1565b34801561034957600080fd5b50610242610ba7565b34801561035e57600080fd5b50610192600160a060020a0360043516610bb6565b34801561037f57600080fd5b50610394600160a060020a0360043516610bf8565b604080519115158252519081900360200190f35b3480156103b457600080fd5b506101926024600480358281019290820135918135918201910135610c3f565b3480156103e057600080fd5b50610192600160a060020a0360043516610ec2565b34801561040157600080fd5b50610416600160a060020a0360043516610f04565b60408051921515835290151560208301528051918290030190f35b34801561043d57600080fd5b50610242610f77565b34801561045257600080fd5b50610242610f86565b34801561046757600080fd5b50610394600160a060020a0360043516610f95565b34801561048857600080fd5b50610192600160a060020a0360043516602435604435606435610faa565b3480156104b257600080fd5b5061019260ff60043516611162565b3480156104cd57600080fd5b506102f8600435611196565b3480156104e557600080fd5b5061021b61147e565b3480156104fa57600080fd5b5061050f600160a060020a0360043516611484565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561054157600080fd5b50610394600160a060020a03600435166114ad565b34801561056257600080fd5b5061021b6114c2565b34801561057757600080fd5b5061021b6114c8565b34801561058c57600080fd5b506102426114ce565b3480156105a157600080fd5b506101926114dd565b600080600260045460ff1660088111156105c057fe5b14806105dc5750600360045460ff1660088111156105da57fe5b145b806105f657506004805460ff1660088111156105f457fe5b145b806106115750600560045460ff16600881111561060f57fe5b145b8061062c5750600660045460ff16600881111561062a57fe5b145b806106475750600760045460ff16600881111561064557fe5b145b151561065257600080fd5b3360009081526001602052604090205460ff16151561067057600080fd5b61067934611196565b9250905060008211801561068a5750805b151561069557600080fd5b6009546106a8908363ffffffff6115e816565b60095560008054604051600160a060020a03909116913480156108fc02929091818181858888f1935050505015156106df57600080fd5b600160045460ff1660088111156106f257fe5b14156107135760075461070b908363ffffffff6115e816565b600755610743565b600260045460ff16600881111561072657fe5b14156107435760085461073f908363ffffffff6115e816565b6008555b600e54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b505050506040513d60208110156107da57600080fd5b505115156107e757600080fd5b6040805133808252602082015234818301526060810184905290517f1c666f25da5e0f0004d29c8379bbc578b86f1c02a976db337e1abafb291e09db9181900360800190a15050565b60045460ff1681565b600c54600160a060020a0316331461085057600080fd5b60065481101561085f57600080fd5b600555565b61086c6115fb565b151561087757600080fd5b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60095481565b600d54600160a060020a031681565b600b54600090600160a060020a031633146108d557600080fd5b5060005b8381101561092b5760018060008787858181106108f257fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff19169115159190911790556001016108d9565b5060005b81811015610979576001600084848481811061094757fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff1916905560010161092f565b5050505050565b6109886115fb565b151561099357600080fd5b600a805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006109cc6115fb565b15156109d757600080fd5b5060005b83811015610a2e576001600260008787858181106109f557fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff19169115159190911790556001016109db565b5060005b818110156109795760026000848484818110610a4a57fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff19169055600101610a32565b600080610a87611650565b50600160a060020a038316600090815260036020818152604092839020835160808101855281548082526001830154938201939093526002820154948101949094529091015460608301521580610ae15750806020015143105b15610af3576001925060009150610b8c565b610b45610b11826020015183604001516115e890919063ffffffff16565b610b39610b2b8460200151436115e890919063ffffffff16565b84519063ffffffff61160c16565b9063ffffffff61162e16565b8151909250821115610b5657805191505b60608101518211610b6e576001925060009150610b8c565b6001610b878260600151846115e890919063ffffffff16565b925092505b50915091565b600b54600160a060020a031681565b60065481565b600054600160a060020a031681565b610bbe6115fb565b1515610bc957600080fd5b600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000610c026115fb565b1515610c0d57600080fd5b5060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600a546000908190600160a060020a03163314610c5b57600080fd5b600060045460ff166008811115610c6e57fe5b14158015610c8d5750600860045460ff166008811115610c8a57fe5b14155b1515610c9857600080fd5b848314610ca457600080fd5b600091505b82821015610d6d57610cd6848484818110610cc057fe5b905060200201358261164390919063ffffffff16565b90507f1c666f25da5e0f0004d29c8379bbc578b86f1c02a976db337e1abafb291e09db33878785818110610d0657fe5b90506020020135600160a060020a031660008787878181101515610d2657fe5b60408051600160a060020a039788168152959096166020868101919091528587019490945292909202013560608301525090519081900360800190a1600190910190610ca9565b600954610d80908263ffffffff6115e816565b600955600160045460ff166008811115610d9657fe5b1415610db757600754610daf908263ffffffff6115e816565b600755610de7565b600260045460ff166008811115610dca57fe5b1415610de757600854610de3908263ffffffff6115e816565b6008555b600e54604080517f153a1f3e0000000000000000000000000000000000000000000000000000000081526004810191825260448101889052600160a060020a039092169163153a1f3e9189918991899189919081906024810190606401876020880280828437909101848103835285815260209081019150869086028082843782019150509650505050505050602060405180830381600087803b158015610e8e57600080fd5b505af1158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b5050505050505050565b610eca6115fb565b1515610ed557600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000806001600160a060020a038416301480610f385750600160a060020a03841660009081526002602052604090205460ff165b80610f535750600760045460ff166008811115610f5157fe5b145b80610f6e5750600860045460ff166008811115610f6c57fe5b145b91509150915091565b600c54600160a060020a031681565b600a54600160a060020a031681565b60016020526000908152604090205460ff1681565b610fb26115fb565b1515610fbd57600080fd5b600160a060020a0384161515610fd257600080fd5b600160a060020a038416600090815260036020819052604090912090810154905461101691611007919063ffffffff6115e816565b6009549063ffffffff61164316565b60095582151561109a57600160a060020a03841660008181526003602081815260408084208481556001810185905560028101859055909201839055815193845283018290528281018290526060830191909152517f6996742dd29561761528aef6d23079a6f4b6d660c9e5d7ac0f44f915849dae3a9181900360800190a161115c565b8181116110a657600080fd5b604080516080810182528481526020808201858152828401858152600060608501818152600160a060020a038b16825260039485905295902093518455905160018401555160028301559151910155600954611108908463ffffffff6115e816565b60095560408051600160a060020a0386168152602081018590528082018490526060810183905290517f6996742dd29561761528aef6d23079a6f4b6d660c9e5d7ac0f44f915849dae3a9181900360800190a15b50505050565b61116a6115fb565b151561117557600080fd5b6004805482919060ff1916600183600881111561118e57fe5b021790555050565b600554600190600090819015806111ab575083155b156111b557610b8c565b6111f5600654610b39670de0b6b3a7640000610b396005546111e960646111e96305f5e1008d61160c90919063ffffffff16565b9063ffffffff61160c16565b905080151561120357610b8c565b600160045460ff16600881111561121657fe5b14156112af5765e35fa931a00081106112465761123f6064610b3983608e63ffffffff61160c16565b915061128f565b655af3107a400081106112695761123f6064610b3983608963ffffffff61160c16565b6512309ce54000811061128f5761128c6064610b3983608563ffffffff61160c16565b91505b6000821180156112a0575081600754105b156112aa57600091505b61146a565b600260045460ff1660088111156112c257fe5b141561135b57660470de4df8200081106112f3576112ec6064610b3983608163ffffffff61160c16565b915061133d565b66038d7ea4c680008110611317576112ec6064610b3983607c63ffffffff61160c16565b655af3107a4000811061133d5761133a6064610b3983607963ffffffff61160c16565b91505b6000821180156112a057508160085410156112aa576000915061146a565b600360045460ff16600881111561136e57fe5b141561139d5764e8d4a5100081106112aa576113966064610b3983607563ffffffff61160c16565b915061146a565b6004805460ff1660088111156113af57fe5b14156113d75764e8d4a5100081106112aa576113966064610b3983607063ffffffff61160c16565b600560045460ff1660088111156113ea57fe5b14156114125764e8d4a5100081106112aa576113966064610b3983606d63ffffffff61160c16565b600660045460ff16600881111561142557fe5b141561144d5764e8d4a5100081106112aa576113966064610b3983606663ffffffff61160c16565b600760045460ff16600881111561146057fe5b141561146a578091505b816009541015610b8c576000915050915091565b60075481565b600360208190526000918252604090912080546001820154600283015492909301549092919084565b60026020526000908152604090205460ff1681565b60085481565b60055481565b600e54600160a060020a031681565b6000806114e933610a7c565b925090508080156114fa5750600082115b151561150557600080fd5b3360009081526003602081905260409091200154611529908363ffffffff61164316565b33600081815260036020818152604080842090920194909455600e5481517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810194909452602484018790529051600160a060020a039091169363a9059cbb93604480820194929392918390030190829087803b1580156115ad57600080fd5b505af11580156115c1573d6000803e3d6000fd5b505050506040513d60208110156115d757600080fd5b505115156115e457600080fd5b5050565b808203828111156115f557fe5b92915050565b600054600160a060020a0316331490565b818102801580611626575081838281151561162357fe5b04145b15156115f557fe5b6000818381151561163b57fe5b049392505050565b818101828110156115f557fe5b6080604051908101604052806000815260200160008152602001600081526020016000815250905600a165627a7a723058204e112ffec09b28719e933dab6f88fe6e1f193d0fac863041c85d4a02aad96d1f0029000000000000000000000000da8c0c6311ab6e43aa1c14967ad7abc6035b9596000000000000000000000000f784682c82526e245f50975190ef0fff4e4fc0770000000000000000000000006466831dd7722481d4feaa099def914f91ae16630000000000000000000000000c7e5ad5b4831c9a9de0dc82a8b150119815d2c30000000000000000000000000519fbf2da33b163419b7b1ff8dd0a6e8027ba10

Deployed Bytecode

0x60806040526004361061018a5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663055ad42e81146101945780630b5f2efd146101cd5780631e1d696a146101e557806327f3a72a1461020657806329fd50eb1461022d57806338241c161461025e5780634774027c1461028a5780636b84dfcd146102ab5780637642dc0f146102d757806377b7469214610313578063798b18fd146103285780638da5cb5b1461033d5780639d3cc18714610352578063a39a45b714610373578063a6f2ae3a1461018a578063ad5c1687146103a8578063b19f30e2146103d4578063b3490bfc146103f5578063b4d1472814610431578063b8be73ed14610446578063bd3b10461461045b578063c0ab57041461047c578063cd3f2910146104a6578063d2d7231f146104c1578063e16ba8c6146104d9578063e388c423146104ee578063e696d30314610535578063f0cecafc14610556578063f9f8bdb71461056b578063fc0c546a14610580578063fedda89c14610595575b6101926105aa565b005b3480156101a057600080fd5b506101a9610830565b604051808260088111156101b957fe5b60ff16815260200191505060405180910390f35b3480156101d957600080fd5b50610192600435610839565b3480156101f157600080fd5b50610192600160a060020a0360043516610864565b34801561021257600080fd5b5061021b6108a6565b60408051918252519081900360200190f35b34801561023957600080fd5b506102426108ac565b60408051600160a060020a039092168252519081900360200190f35b34801561026a57600080fd5b5061019260246004803582810192908201359181359182019101356108bb565b34801561029657600080fd5b50610192600160a060020a0360043516610980565b3480156102b757600080fd5b5061019260246004803582810192908201359181359182019101356109c2565b3480156102e357600080fd5b506102f8600160a060020a0360043516610a7c565b60408051921515835260208301919091528051918290030190f35b34801561031f57600080fd5b50610242610b92565b34801561033457600080fd5b5061021b610ba1565b34801561034957600080fd5b50610242610ba7565b34801561035e57600080fd5b50610192600160a060020a0360043516610bb6565b34801561037f57600080fd5b50610394600160a060020a0360043516610bf8565b604080519115158252519081900360200190f35b3480156103b457600080fd5b506101926024600480358281019290820135918135918201910135610c3f565b3480156103e057600080fd5b50610192600160a060020a0360043516610ec2565b34801561040157600080fd5b50610416600160a060020a0360043516610f04565b60408051921515835290151560208301528051918290030190f35b34801561043d57600080fd5b50610242610f77565b34801561045257600080fd5b50610242610f86565b34801561046757600080fd5b50610394600160a060020a0360043516610f95565b34801561048857600080fd5b50610192600160a060020a0360043516602435604435606435610faa565b3480156104b257600080fd5b5061019260ff60043516611162565b3480156104cd57600080fd5b506102f8600435611196565b3480156104e557600080fd5b5061021b61147e565b3480156104fa57600080fd5b5061050f600160a060020a0360043516611484565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561054157600080fd5b50610394600160a060020a03600435166114ad565b34801561056257600080fd5b5061021b6114c2565b34801561057757600080fd5b5061021b6114c8565b34801561058c57600080fd5b506102426114ce565b3480156105a157600080fd5b506101926114dd565b600080600260045460ff1660088111156105c057fe5b14806105dc5750600360045460ff1660088111156105da57fe5b145b806105f657506004805460ff1660088111156105f457fe5b145b806106115750600560045460ff16600881111561060f57fe5b145b8061062c5750600660045460ff16600881111561062a57fe5b145b806106475750600760045460ff16600881111561064557fe5b145b151561065257600080fd5b3360009081526001602052604090205460ff16151561067057600080fd5b61067934611196565b9250905060008211801561068a5750805b151561069557600080fd5b6009546106a8908363ffffffff6115e816565b60095560008054604051600160a060020a03909116913480156108fc02929091818181858888f1935050505015156106df57600080fd5b600160045460ff1660088111156106f257fe5b14156107135760075461070b908363ffffffff6115e816565b600755610743565b600260045460ff16600881111561072657fe5b14156107435760085461073f908363ffffffff6115e816565b6008555b600e54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b505050506040513d60208110156107da57600080fd5b505115156107e757600080fd5b6040805133808252602082015234818301526060810184905290517f1c666f25da5e0f0004d29c8379bbc578b86f1c02a976db337e1abafb291e09db9181900360800190a15050565b60045460ff1681565b600c54600160a060020a0316331461085057600080fd5b60065481101561085f57600080fd5b600555565b61086c6115fb565b151561087757600080fd5b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60095481565b600d54600160a060020a031681565b600b54600090600160a060020a031633146108d557600080fd5b5060005b8381101561092b5760018060008787858181106108f257fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff19169115159190911790556001016108d9565b5060005b81811015610979576001600084848481811061094757fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff1916905560010161092f565b5050505050565b6109886115fb565b151561099357600080fd5b600a805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006109cc6115fb565b15156109d757600080fd5b5060005b83811015610a2e576001600260008787858181106109f557fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff19169115159190911790556001016109db565b5060005b818110156109795760026000848484818110610a4a57fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff19169055600101610a32565b600080610a87611650565b50600160a060020a038316600090815260036020818152604092839020835160808101855281548082526001830154938201939093526002820154948101949094529091015460608301521580610ae15750806020015143105b15610af3576001925060009150610b8c565b610b45610b11826020015183604001516115e890919063ffffffff16565b610b39610b2b8460200151436115e890919063ffffffff16565b84519063ffffffff61160c16565b9063ffffffff61162e16565b8151909250821115610b5657805191505b60608101518211610b6e576001925060009150610b8c565b6001610b878260600151846115e890919063ffffffff16565b925092505b50915091565b600b54600160a060020a031681565b60065481565b600054600160a060020a031681565b610bbe6115fb565b1515610bc957600080fd5b600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000610c026115fb565b1515610c0d57600080fd5b5060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600a546000908190600160a060020a03163314610c5b57600080fd5b600060045460ff166008811115610c6e57fe5b14158015610c8d5750600860045460ff166008811115610c8a57fe5b14155b1515610c9857600080fd5b848314610ca457600080fd5b600091505b82821015610d6d57610cd6848484818110610cc057fe5b905060200201358261164390919063ffffffff16565b90507f1c666f25da5e0f0004d29c8379bbc578b86f1c02a976db337e1abafb291e09db33878785818110610d0657fe5b90506020020135600160a060020a031660008787878181101515610d2657fe5b60408051600160a060020a039788168152959096166020868101919091528587019490945292909202013560608301525090519081900360800190a1600190910190610ca9565b600954610d80908263ffffffff6115e816565b600955600160045460ff166008811115610d9657fe5b1415610db757600754610daf908263ffffffff6115e816565b600755610de7565b600260045460ff166008811115610dca57fe5b1415610de757600854610de3908263ffffffff6115e816565b6008555b600e54604080517f153a1f3e0000000000000000000000000000000000000000000000000000000081526004810191825260448101889052600160a060020a039092169163153a1f3e9189918991899189919081906024810190606401876020880280828437909101848103835285815260209081019150869086028082843782019150509650505050505050602060405180830381600087803b158015610e8e57600080fd5b505af1158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b5050505050505050565b610eca6115fb565b1515610ed557600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000806001600160a060020a038416301480610f385750600160a060020a03841660009081526002602052604090205460ff165b80610f535750600760045460ff166008811115610f5157fe5b145b80610f6e5750600860045460ff166008811115610f6c57fe5b145b91509150915091565b600c54600160a060020a031681565b600a54600160a060020a031681565b60016020526000908152604090205460ff1681565b610fb26115fb565b1515610fbd57600080fd5b600160a060020a0384161515610fd257600080fd5b600160a060020a038416600090815260036020819052604090912090810154905461101691611007919063ffffffff6115e816565b6009549063ffffffff61164316565b60095582151561109a57600160a060020a03841660008181526003602081815260408084208481556001810185905560028101859055909201839055815193845283018290528281018290526060830191909152517f6996742dd29561761528aef6d23079a6f4b6d660c9e5d7ac0f44f915849dae3a9181900360800190a161115c565b8181116110a657600080fd5b604080516080810182528481526020808201858152828401858152600060608501818152600160a060020a038b16825260039485905295902093518455905160018401555160028301559151910155600954611108908463ffffffff6115e816565b60095560408051600160a060020a0386168152602081018590528082018490526060810183905290517f6996742dd29561761528aef6d23079a6f4b6d660c9e5d7ac0f44f915849dae3a9181900360800190a15b50505050565b61116a6115fb565b151561117557600080fd5b6004805482919060ff1916600183600881111561118e57fe5b021790555050565b600554600190600090819015806111ab575083155b156111b557610b8c565b6111f5600654610b39670de0b6b3a7640000610b396005546111e960646111e96305f5e1008d61160c90919063ffffffff16565b9063ffffffff61160c16565b905080151561120357610b8c565b600160045460ff16600881111561121657fe5b14156112af5765e35fa931a00081106112465761123f6064610b3983608e63ffffffff61160c16565b915061128f565b655af3107a400081106112695761123f6064610b3983608963ffffffff61160c16565b6512309ce54000811061128f5761128c6064610b3983608563ffffffff61160c16565b91505b6000821180156112a0575081600754105b156112aa57600091505b61146a565b600260045460ff1660088111156112c257fe5b141561135b57660470de4df8200081106112f3576112ec6064610b3983608163ffffffff61160c16565b915061133d565b66038d7ea4c680008110611317576112ec6064610b3983607c63ffffffff61160c16565b655af3107a4000811061133d5761133a6064610b3983607963ffffffff61160c16565b91505b6000821180156112a057508160085410156112aa576000915061146a565b600360045460ff16600881111561136e57fe5b141561139d5764e8d4a5100081106112aa576113966064610b3983607563ffffffff61160c16565b915061146a565b6004805460ff1660088111156113af57fe5b14156113d75764e8d4a5100081106112aa576113966064610b3983607063ffffffff61160c16565b600560045460ff1660088111156113ea57fe5b14156114125764e8d4a5100081106112aa576113966064610b3983606d63ffffffff61160c16565b600660045460ff16600881111561142557fe5b141561144d5764e8d4a5100081106112aa576113966064610b3983606663ffffffff61160c16565b600760045460ff16600881111561146057fe5b141561146a578091505b816009541015610b8c576000915050915091565b60075481565b600360208190526000918252604090912080546001820154600283015492909301549092919084565b60026020526000908152604090205460ff1681565b60085481565b60055481565b600e54600160a060020a031681565b6000806114e933610a7c565b925090508080156114fa5750600082115b151561150557600080fd5b3360009081526003602081905260409091200154611529908363ffffffff61164316565b33600081815260036020818152604080842090920194909455600e5481517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810194909452602484018790529051600160a060020a039091169363a9059cbb93604480820194929392918390030190829087803b1580156115ad57600080fd5b505af11580156115c1573d6000803e3d6000fd5b505050506040513d60208110156115d757600080fd5b505115156115e457600080fd5b5050565b808203828111156115f557fe5b92915050565b600054600160a060020a0316331490565b818102801580611626575081838281151561162357fe5b04145b15156115f557fe5b6000818381151561163b57fe5b049392505050565b818101828110156115f557fe5b6080604051908101604052806000815260200160008152602001600081526020016000815250905600a165627a7a723058204e112ffec09b28719e933dab6f88fe6e1f193d0fac863041c85d4a02aad96d1f0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000da8c0c6311ab6e43aa1c14967ad7abc6035b9596000000000000000000000000f784682c82526e245f50975190ef0fff4e4fc0770000000000000000000000006466831dd7722481d4feaa099def914f91ae16630000000000000000000000000c7e5ad5b4831c9a9de0dc82a8b150119815d2c30000000000000000000000000519fbf2da33b163419b7b1ff8dd0a6e8027ba10

-----Decoded View---------------
Arg [0] : _owner (address): 0xda8c0c6311ab6E43aa1C14967ad7aBc6035B9596
Arg [1] : _tokenAddress (address): 0xF784682C82526e245F50975190EF0fff4E4fC077
Arg [2] : _offchainUploaderAddress (address): 0x6466831dD7722481d4FeAA099dEF914f91Ae1663
Arg [3] : _setKYCAddress (address): 0x0C7E5aD5b4831C9a9de0DC82A8B150119815D2c3
Arg [4] : _setRateAddress (address): 0x0519fBf2DA33b163419b7B1fF8dd0A6e8027bA10

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000da8c0c6311ab6e43aa1c14967ad7abc6035b9596
Arg [1] : 000000000000000000000000f784682c82526e245f50975190ef0fff4e4fc077
Arg [2] : 0000000000000000000000006466831dd7722481d4feaa099def914f91ae1663
Arg [3] : 0000000000000000000000000c7e5ad5b4831c9a9de0dc82a8b150119815d2c3
Arg [4] : 0000000000000000000000000519fbf2da33b163419b7b1ff8dd0a6e8027ba10


Swarm Source

bzzr://4e112ffec09b28719e933dab6f88fe6e1f193d0fac863041c85d4a02aad96d1f

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.